lspeasy / core/src / DocumentVersionTracker
Class: DocumentVersionTracker
Defined in: packages/core/src/utils/document.ts:43
Tracks monotonically increasing version numbers for open text documents.
Remarks
The LSP spec requires DidChangeTextDocumentParams.textDocument.version to increment with every change notification. Use DocumentVersionTracker to manage version numbers centrally rather than maintaining ad-hoc counters in each document model.
Use When
You are building an LSP client that sends textDocument/didChange notifications and need to track per-document version counters.
Never
NEVER send a textDocument/didChange with the same version number as a previous change for the same document. The server may reject the change as a no-op or apply it out of order, causing text state desync.
Example
import { DocumentVersionTracker, createIncrementalDidChangeParams } from '@lspeasy/core';
const tracker = new DocumentVersionTracker();
tracker.open('file:///src/main.ts');
const params = createIncrementalDidChangeParams(
'file:///src/main.ts',
[{ range: { start: { line: 0, character: 0 }, end: { line: 0, character: 5 } }, text: 'hello' }],
{ tracker }
);
await client.sendNotification('textDocument/didChange', params);Constructors
Constructor
new DocumentVersionTracker(): DocumentVersionTracker;Returns
DocumentVersionTracker
Methods
close()
close(uri): void;Defined in: packages/core/src/utils/document.ts:84
Stops tracking a document URI.
Parameters
| Parameter | Type | Description |
|---|---|---|
uri | string | The document URI to stop tracking. |
Returns
void
currentVersion()
currentVersion(uri): number | undefined;Defined in: packages/core/src/utils/document.ts:75
Returns the current tracked version, if any.
Parameters
| Parameter | Type | Description |
|---|---|---|
uri | string | The document URI to query. |
Returns
number | undefined
The current version number, or undefined if the document is not tracked.
nextVersion()
nextVersion(uri): number;Defined in: packages/core/src/utils/document.ts:62
Increments and returns the next document version.
Parameters
| Parameter | Type | Description |
|---|---|---|
uri | string | The document URI to increment. |
Returns
number
The incremented version number.
open()
open(uri, initialVersion?): void;Defined in: packages/core/src/utils/document.ts:52
Starts tracking a document URI with an optional initial version.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
uri | string | undefined | The document URI to start tracking. |
initialVersion | number | 0 | Starting version number (defaults to 0). |
Returns
void