@hydranium/data-server 1.0.0-next.187 → 1.0.0-next.189
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/data-server.d.ts +48 -50
- package/lib/data-server.d.ts.map +1 -1
- package/lib/data-server.js +97 -90
- package/lib/data-server.js.map +1 -1
- package/package.json +7 -7
- package/src/data-server.ts +122 -102
package/README.md
CHANGED
|
@@ -29,8 +29,8 @@ Installed by the server process that already composes
|
|
|
29
29
|
(`DataServerOptions.subscriptionPhase`, `DocumentState.Validated` by default),
|
|
30
30
|
`onDocumentSaved` on a separate channel, `onDocumentDirtyChanged` when a
|
|
31
31
|
subscribed document starts or stops differing from its file (every document
|
|
32
|
-
the head sends that it holds also carries its
|
|
33
|
-
`
|
|
32
|
+
the head sends that it holds also carries its `text` block: version, hash
|
|
33
|
+
and current `dirty`), `onDocumentDeleted` (a deleted document has no built
|
|
34
34
|
state to carry, and the build-phase path never runs for one),
|
|
35
35
|
`onDocumentsBuilt` once per build for the documents nobody watches — chiefly
|
|
36
36
|
those rebuilt as a cascade, which no filesystem watcher can see because their
|
package/lib/data-server.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { DisposableCollection, ReferenceSource, type CloseModelArgs, type HydraniumMessageData, type HydraniumResponseError, type Disposable, type ElementSource, type FindNextNameArgs, type LatencyCollector, type LatencyReport, type OpenModelArgs, type Project, type ReferenceCandidate, type ReferenceContext, type ReferenceRequest, type ReferenceTarget, type Tracer, type TransferDiagnostic, TransferDocument, type TransferElement } from '@hydranium/protocol';
|
|
9
|
+
import { DisposableCollection, ReferenceSource, type CloseModelArgs, type HydraniumMessageData, type HydraniumResponseError, type Disposable, type ElementSource, type FindNextNameArgs, type LatencyCollector, type LatencyReport, type OpenModelArgs, type Project, type ReferenceCandidate, type ReferenceContext, type ReferenceRequest, type ReferenceTarget, type ModelVersion, type TextState, type Tracer, type TransferDiagnostic, TransferDocument, type TransferElement } from '@hydranium/protocol';
|
|
10
10
|
import { type DataClientProtocol, type DataServerDiagnosticsProtocol, type DataServerProtocol, type DumpServerStateArgs, type StartProfilingArgs, type StopProfilingArgs, type WriteServerHeapSnapshotArgs, type CloseSessionArgs, type CreateModelDocumentArgs, type CreateSessionArgs, type GetModelDocumentArgs, type GetProjectForUriArgs, type TransferSaveDocumentArgs, type WatchModelDocumentArgs, type TransferUpdateDocumentArgs, type TransferUpdateDocumentsArgs } from '@hydranium/protocol/data';
|
|
11
11
|
/**
|
|
12
12
|
* Raised when a profiling command arrives with no capture running.
|
|
@@ -39,7 +39,7 @@ export declare const referenceSettleTimeoutError: (elapsedMs: number) => Respons
|
|
|
39
39
|
readonly elapsedMs: number;
|
|
40
40
|
}>;
|
|
41
41
|
import type { DataServerDiagnosticsProvider, DataServerProfileCapture } from './diagnostics-provider.js';
|
|
42
|
-
import type { ClientSession, ClientSessionWriteArgs, ClientTextDocumentChangeEvent, DocumentDirtyChangedEvent, HydraniumLanguageServices, LogNameOptions, AstDiagnostic, AstDocument, ModelService, ProjectChangeEvent, ServerSharedServices, SessionEndCause, TransferEncoder } from '@hydranium/core';
|
|
42
|
+
import type { ClientSession, ClientSessionWriteArgs, ClientTextDocumentChangeEvent, DocumentDirtyChangedEvent, HydraniumLanguageServices, LogNameOptions, AstDiagnostic, AstDocument, EncodedTransferDocument, ModelService, ProjectChangeEvent, ServerSharedServices, SessionEndCause, TransferEncoder } from '@hydranium/core';
|
|
43
43
|
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
44
44
|
import { type AstNode, DocumentState, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
45
45
|
import { type CancellationToken, type MessageConnection, ResponseError } from 'vscode-jsonrpc';
|
|
@@ -63,9 +63,9 @@ export interface ResumableSession {
|
|
|
63
63
|
* folded in on a cascade rebuild that leaves the document's own text
|
|
64
64
|
* untouched. Safe for any adopter whose AST extensions fold derived state
|
|
65
65
|
* into the transfer projection (the framework norm).
|
|
66
|
-
* - `'text-diagnostics'` — the cheaper
|
|
67
|
-
* opt-DOWN for adopters that fold no derived state and want to avoid
|
|
68
|
-
* transfer
|
|
66
|
+
* - `'text-diagnostics'` — the cheaper parsed-text + diagnostics hash. An
|
|
67
|
+
* opt-DOWN for adopters that fold no derived state and want to avoid
|
|
68
|
+
* stringifying the transfer root per phase event.
|
|
69
69
|
*/
|
|
70
70
|
export type FingerprintStrategy = 'transfer-document' | 'text-diagnostics';
|
|
71
71
|
/**
|
|
@@ -226,6 +226,13 @@ export interface DataServerUriWatchRecord {
|
|
|
226
226
|
readonly watchers: Set<string>;
|
|
227
227
|
/** Digest of the last emitted state, or of the state a first watch found; see {@link DataServer.dispatchPhaseEvent} for why it de-duplicates, {@link DataServer.computeDocumentFingerprint} for its inputs. */
|
|
228
228
|
fingerprint?: string;
|
|
229
|
+
/**
|
|
230
|
+
* The version {@link DataServerUriWatchRecord.fingerprint} was taken at; an
|
|
231
|
+
* event goes out when either moves. Not {@link DataServerUriWatchRecord.sentVersion}:
|
|
232
|
+
* a first watch sets this and sends nothing, so the next event at its
|
|
233
|
+
* version still carries the manager's attribution.
|
|
234
|
+
*/
|
|
235
|
+
fingerprintVersion?: ModelVersion;
|
|
229
236
|
/** Set by {@link DataServer.subscribeToTextDocumentCloses}; the next phase event broadcasts even without a watcher. */
|
|
230
237
|
revertPending?: boolean;
|
|
231
238
|
/**
|
|
@@ -260,6 +267,10 @@ export interface DataServerUriWatchRecord {
|
|
|
260
267
|
* adopters subclass ONLY when they need to decorate wire returns or
|
|
261
268
|
* notifications. The usual adoption path is DI rebinds alone.
|
|
262
269
|
*
|
|
270
|
+
* **`TTransfer` is not checked.** It declares the union of the transfer roots
|
|
271
|
+
* the workspace's languages produce. Which root a document has is known only
|
|
272
|
+
* at runtime, from its language, so a `TTransfer` missing a language compiles.
|
|
273
|
+
*
|
|
263
274
|
* Lifecycle: the constructor registers framework request handlers (plus
|
|
264
275
|
* any names supplied via {@link DataServerOptions.additionalMethods}) and
|
|
265
276
|
* builds the {@link DataClientProtocol} notification proxy on the same
|
|
@@ -385,12 +396,6 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
385
396
|
* fails, `rollback` undoes the open this call made before the failure is
|
|
386
397
|
* rethrown: the caller sees no open, so nothing on its side would ever close
|
|
387
398
|
* it.
|
|
388
|
-
*
|
|
389
|
-
* Versioned with the store's shared version rather than the snapshot's own:
|
|
390
|
-
* the built document's `textDocument.version` lags the store's whenever the
|
|
391
|
-
* store assigned the version, and the store's is what a write's `basedOn` is
|
|
392
|
-
* compared against, so reporting the snapshot's would make the caller's
|
|
393
|
-
* first based-on write conflict with itself.
|
|
394
399
|
*/
|
|
395
400
|
protected openedSnapshot(uri: string, rollback?: () => Promise<void>): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
396
401
|
closeModelDocument(args: CloseModelArgs): Promise<void>;
|
|
@@ -471,7 +476,7 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
471
476
|
*/
|
|
472
477
|
protected awaitReferencesLinked(source: ReferenceSource): Promise<void>;
|
|
473
478
|
findReferenceCandidates(ctx: ReferenceContext): Promise<ReferenceCandidate[]>;
|
|
474
|
-
resolveReference(ref: ReferenceRequest): Promise<ReferenceTarget<
|
|
479
|
+
resolveReference<TElement extends TransferElement = TransferElement>(ref: ReferenceRequest): Promise<ReferenceTarget<TElement> | undefined>;
|
|
475
480
|
findNextName(args: FindNextNameArgs): Promise<string>;
|
|
476
481
|
/**
|
|
477
482
|
* Resolve the per-language `references` services for a reference source.
|
|
@@ -559,32 +564,31 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
559
564
|
/**
|
|
560
565
|
* Build a {@link TransferDocument} envelope from the current document state,
|
|
561
566
|
* delegating root + diagnostic encoding to {@link encoder} (see
|
|
562
|
-
* `TransferEncoder.toTransferDocument` for the walk).
|
|
563
|
-
*
|
|
564
|
-
*
|
|
565
|
-
* `Record<string, TransferElement>` at the framework-default level, and an
|
|
566
|
-
* adopter supplying a typed-overlay encoder narrows the runtime shape to
|
|
567
|
-
* its wire types. The cast on the return is where that invariant — the
|
|
568
|
-
* adopter's `TTransfer` matches its encoder's overlay — is asserted, at a
|
|
569
|
-
* single boundary point rather than spread across the callers.
|
|
567
|
+
* `TransferEncoder.toTransferDocument` for the walk). `fingerprint` is the
|
|
568
|
+
* caller's {@link computeDocumentFingerprint} of that same state, which
|
|
569
|
+
* spares hashing it twice.
|
|
570
570
|
*/
|
|
571
|
-
protected envelope(uri: URI): TransferDocument<TTransfer, TDiagnostic>;
|
|
571
|
+
protected envelope(uri: URI, fingerprint?: string): TransferDocument<TTransfer, TDiagnostic>;
|
|
572
572
|
/**
|
|
573
|
-
* The transfer document a request answers with for `astDocument`,
|
|
574
|
-
*
|
|
575
|
-
*
|
|
576
|
-
*
|
|
573
|
+
* The transfer document a request answers with for `astDocument`, its model
|
|
574
|
+
* hashed and the text stamped on it by {@link withServerState}. Every
|
|
575
|
+
* document a request answers with goes through here, so none goes out
|
|
576
|
+
* without them.
|
|
577
577
|
*/
|
|
578
578
|
protected encodeDocument(astDocument: AstDocument<AstNode, AstDiagnostic>): TransferDocument<TTransfer, TDiagnostic>;
|
|
579
579
|
/**
|
|
580
|
-
* `
|
|
581
|
-
* the
|
|
582
|
-
*
|
|
583
|
-
*
|
|
584
|
-
*
|
|
585
|
-
* before the build that follows it.
|
|
580
|
+
* `encoded` with `hash` on its model and the text the server holds for it:
|
|
581
|
+
* the store's while it holds the document, the build's otherwise. The text
|
|
582
|
+
* is read when the document is sent rather than kept with the build: a save
|
|
583
|
+
* changes `text.dirty` without a rebuild, and the store's text moves on before
|
|
584
|
+
* the build that follows it.
|
|
586
585
|
*/
|
|
587
|
-
protected withServerState(
|
|
586
|
+
protected withServerState(encoded: EncodedTransferDocument<TransferElement, TDiagnostic>, hash: string): TransferDocument<TTransfer, TDiagnostic>;
|
|
587
|
+
/**
|
|
588
|
+
* The text a build read for a document the store never held, which is
|
|
589
|
+
* clean: the store holds every text a client gave it.
|
|
590
|
+
*/
|
|
591
|
+
protected builtTextState(uri: string): TextState | undefined;
|
|
588
592
|
/**
|
|
589
593
|
* Subscribe one listener at the configured {@link DataServerOptions.subscriptionPhase}.
|
|
590
594
|
* The listener dispatches subscription events for every matching URI. A
|
|
@@ -726,7 +730,9 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
726
730
|
* {@link subscribeToTextDocumentCloses}).
|
|
727
731
|
*
|
|
728
732
|
* An event for a rebuild with no observable change since the last emit is
|
|
729
|
-
* suppressed against the URI's fingerprint
|
|
733
|
+
* suppressed against the URI's fingerprint and the version it was taken at;
|
|
734
|
+
* a new version with the same fingerprint goes out with the same
|
|
735
|
+
* `model.hash`, so a watcher still learns the version. Such rebuilds are routine: a
|
|
730
736
|
* second client attaching to an open document makes
|
|
731
737
|
* `HydraniumTextDocuments.refreshContent` fire `onDidChangeContent` purely
|
|
732
738
|
* to re-trigger the build, and Langium rebuilds a document when a
|
|
@@ -742,27 +748,19 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
742
748
|
*/
|
|
743
749
|
protected dispatchPhaseEvent(document: LangiumDocument, cancelToken: CancellationToken): void;
|
|
744
750
|
/**
|
|
745
|
-
* Fingerprint of the
|
|
746
|
-
* `onDocumentUpdated` emissions
|
|
747
|
-
*
|
|
748
|
-
* {@link
|
|
751
|
+
* Fingerprint of the snapshot `root` and its encoding `encoded`, used to
|
|
752
|
+
* de-dup `onDocumentUpdated` emissions and sent as every document's
|
|
753
|
+
* `model.hash`, so it must not depend on the version or on live state. The
|
|
754
|
+
* {@link FingerprintStrategy} option selects what is hashed (default
|
|
755
|
+
* `'transfer-document'` — see the type).
|
|
749
756
|
*
|
|
750
|
-
*
|
|
751
|
-
*
|
|
752
|
-
*
|
|
753
|
-
* `envelope` share a single encode walk.
|
|
757
|
+
* {@link TransferEncoder.toTransferDocument} is cached per build, so within
|
|
758
|
+
* one phase event the fingerprint and the subsequently-emitted `envelope`
|
|
759
|
+
* share a single encode walk.
|
|
754
760
|
*
|
|
755
761
|
* Wrapped in {@link Tracer.time} against {@link FINGERPRINT_LOG_AFTER_MS}.
|
|
756
762
|
*/
|
|
757
|
-
protected computeDocumentFingerprint(
|
|
758
|
-
/**
|
|
759
|
-
* Extra inputs folded into {@link computeDocumentFingerprint} alongside the
|
|
760
|
-
* chosen {@link FingerprintStrategy}. Default: none. Override to contribute a
|
|
761
|
-
* signal that lives outside the document's text / root / diagnostics — each
|
|
762
|
-
* entry need only be stable across equivalent emissions and
|
|
763
|
-
* JSON-serialisable.
|
|
764
|
-
*/
|
|
765
|
-
protected additionalFingerprintInputs(_document: LangiumDocument): readonly unknown[];
|
|
763
|
+
protected computeDocumentFingerprint(root: AstNode, encoded: EncodedTransferDocument<TransferElement, TDiagnostic>): string;
|
|
766
764
|
/**
|
|
767
765
|
* Subscribe to the project tier's change channel and re-fan registry
|
|
768
766
|
* diffs into per-project wire notifications. The internal
|
package/lib/data-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server.d.ts","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAGJ,oBAAoB,EAOpB,eAAe,EAGf,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"data-server.d.ts","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
|
package/lib/data-server.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { createRpcProxy, defineMessage, DisposableCollection, HYDRANIUM_ERROR_CODES, isDocumentSource, isElementSource, isSyntheticSource, messageData, messageError, ReferenceSource, SessionClosedError, TIMED_OUT, TransferDocument, UNKNOWN_CLIENT_ID,
|
|
9
|
+
import { createRpcProxy, defineMessage, DisposableCollection, HYDRANIUM_ERROR_CODES, isDocumentSource, isElementSource, isSyntheticSource, messageData, messageError, ReferenceSource, SessionClosedError, TIMED_OUT, TransferDocument, UNKNOWN_CLIENT_ID, textHash } from '@hydranium/protocol';
|
|
10
10
|
import { DATA_SERVER_DIAGNOSTICS_METHODS, DATA_SERVER_PROTOCOL_METHODS, DATA_SERVER_WIRE_PREFIX } from '@hydranium/protocol/data';
|
|
11
11
|
import { REVERT_ON_CLOSE_CLIENT_ID } from '@hydranium/core';
|
|
12
12
|
import { defaultDataServerDiagnostics } from './default-diagnostics.js';
|
|
@@ -57,15 +57,25 @@ const FINGERPRINT_SEPARATOR = '\0';
|
|
|
57
57
|
*/
|
|
58
58
|
const SERVER_CANCELLED = -32802;
|
|
59
59
|
const resumableByModelService = new WeakMap();
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Hash `text`, the text the model was parsed from, + `model`'s diagnostics — the `'text-diagnostics'` strategy.
|
|
62
|
+
* The text comes from the root's ledger record or CST, as the document's own may have moved on,
|
|
63
|
+
* and a repair in place leaves the CST on the unrepaired text;
|
|
64
|
+
* a root built without a CST hashes as `'transfer-document'`.
|
|
65
|
+
* Absent diagnostics must hash apart from `[]`, as in {@link transferDocumentFingerprint}.
|
|
66
|
+
*/
|
|
67
|
+
function textDiagnosticsFingerprint(text, model) {
|
|
68
|
+
return text === undefined
|
|
69
|
+
? transferDocumentFingerprint(model)
|
|
70
|
+
: textHash([text, FINGERPRINT_SEPARATOR, JSON.stringify(model.diagnostics ?? null)]);
|
|
63
71
|
}
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Hash an encoded model's root + diagnostics — the `'transfer-document'` strategy.
|
|
74
|
+
* Absent diagnostics must hash apart from `[]`: a client skipping a render on an
|
|
75
|
+
* equal hash would otherwise miss a validation that found nothing.
|
|
76
|
+
*/
|
|
77
|
+
function transferDocumentFingerprint(model) {
|
|
78
|
+
return textHash([JSON.stringify(model.root), FINGERPRINT_SEPARATOR, JSON.stringify(model.diagnostics ?? null)]);
|
|
69
79
|
}
|
|
70
80
|
/**
|
|
71
81
|
* `logAfterMs` threshold passed to {@link Tracer.time} around
|
|
@@ -96,6 +106,10 @@ const FINGERPRINT_LOG_AFTER_MS = 5;
|
|
|
96
106
|
* adopters subclass ONLY when they need to decorate wire returns or
|
|
97
107
|
* notifications. The usual adoption path is DI rebinds alone.
|
|
98
108
|
*
|
|
109
|
+
* **`TTransfer` is not checked.** It declares the union of the transfer roots
|
|
110
|
+
* the workspace's languages produce. Which root a document has is known only
|
|
111
|
+
* at runtime, from its language, so a `TTransfer` missing a language compiles.
|
|
112
|
+
*
|
|
99
113
|
* Lifecycle: the constructor registers framework request handlers (plus
|
|
100
114
|
* any names supplied via {@link DataServerOptions.additionalMethods}) and
|
|
101
115
|
* builds the {@link DataClientProtocol} notification proxy on the same
|
|
@@ -338,7 +352,7 @@ export class DataServer {
|
|
|
338
352
|
* through an override of this.
|
|
339
353
|
*/
|
|
340
354
|
toSessionWrite(request) {
|
|
341
|
-
return { uri: request.uri, model: request.model,
|
|
355
|
+
return { uri: request.uri, model: request.model, baseVersion: request.baseVersion };
|
|
342
356
|
}
|
|
343
357
|
/**
|
|
344
358
|
* The session this connection registered under `clientId`, which every
|
|
@@ -365,26 +379,16 @@ export class DataServer {
|
|
|
365
379
|
* fails, `rollback` undoes the open this call made before the failure is
|
|
366
380
|
* rethrown: the caller sees no open, so nothing on its side would ever close
|
|
367
381
|
* it.
|
|
368
|
-
*
|
|
369
|
-
* Versioned with the store's shared version rather than the snapshot's own:
|
|
370
|
-
* the built document's `textDocument.version` lags the store's whenever the
|
|
371
|
-
* store assigned the version, and the store's is what a write's `basedOn` is
|
|
372
|
-
* compared against, so reporting the snapshot's would make the caller's
|
|
373
|
-
* first based-on write conflict with itself.
|
|
374
382
|
*/
|
|
375
383
|
async openedSnapshot(uri, rollback) {
|
|
376
|
-
let document;
|
|
377
384
|
try {
|
|
378
|
-
|
|
385
|
+
return await this.getModelDocument({ uri });
|
|
379
386
|
}
|
|
380
387
|
catch (error) {
|
|
381
388
|
// The open's failure is the one the caller needs, not the cleanup's.
|
|
382
389
|
await rollback?.().catch(() => undefined);
|
|
383
390
|
throw error;
|
|
384
391
|
}
|
|
385
|
-
// Stamped again with the version, in one step: a write landing after the
|
|
386
|
-
// read would otherwise pair its version with the read's text hash.
|
|
387
|
-
return this.withServerState({ ...document, version: asSnapshotVersion(this.services.workspace.TextDocuments.version(uri)) });
|
|
388
392
|
}
|
|
389
393
|
async closeModelDocument(args) {
|
|
390
394
|
// Through the handle, so a close under an ended session fails as that
|
|
@@ -413,7 +417,7 @@ export class DataServer {
|
|
|
413
417
|
}
|
|
414
418
|
catch (error) {
|
|
415
419
|
// The protocol answers a read of a URI with no document with an
|
|
416
|
-
// envelope that has no
|
|
420
|
+
// envelope that has no model.
|
|
417
421
|
if (this.isMissingDocument(error, args.uri)) {
|
|
418
422
|
return this.envelope(UriUtils.toUri(args.uri));
|
|
419
423
|
}
|
|
@@ -449,8 +453,9 @@ export class DataServer {
|
|
|
449
453
|
record.watchers.add(args.clientId);
|
|
450
454
|
if (record.fingerprint === undefined) {
|
|
451
455
|
const document = this.services.workspace.LangiumDocuments.getDocument(UriUtils.toUri(uri));
|
|
452
|
-
if (document) {
|
|
453
|
-
record.fingerprint = this.computeDocumentFingerprint(document);
|
|
456
|
+
if (document && !this.services.workspace.ModelLedger.isPlaceholder(document.parseResult.value)) {
|
|
457
|
+
record.fingerprint = this.computeDocumentFingerprint(document.parseResult.value, this.encoder.toTransferDocument(document));
|
|
458
|
+
record.fingerprintVersion = this.services.workspace.ModelLedger.versionOf(document.parseResult.value);
|
|
454
459
|
}
|
|
455
460
|
}
|
|
456
461
|
}
|
|
@@ -480,6 +485,7 @@ export class DataServer {
|
|
|
480
485
|
}
|
|
481
486
|
if (record.revertPending) {
|
|
482
487
|
record.fingerprint = undefined;
|
|
488
|
+
record.fingerprintVersion = undefined;
|
|
483
489
|
}
|
|
484
490
|
else {
|
|
485
491
|
this.uriWatchRecords.delete(uri);
|
|
@@ -581,8 +587,8 @@ export class DataServer {
|
|
|
581
587
|
if (!resolved) {
|
|
582
588
|
return undefined;
|
|
583
589
|
}
|
|
584
|
-
|
|
585
|
-
return { ...resolved.candidate, element };
|
|
590
|
+
// The caller's claim about the target's type; see `ReferenceServerProtocol.resolveReference`.
|
|
591
|
+
return { ...resolved.candidate, element: this.encoder.toTransfer(resolved.node) };
|
|
586
592
|
}
|
|
587
593
|
async findNextName(args) {
|
|
588
594
|
const uri = UriUtils.toUri(args.uri);
|
|
@@ -783,55 +789,65 @@ export class DataServer {
|
|
|
783
789
|
/**
|
|
784
790
|
* Build a {@link TransferDocument} envelope from the current document state,
|
|
785
791
|
* delegating root + diagnostic encoding to {@link encoder} (see
|
|
786
|
-
* `TransferEncoder.toTransferDocument` for the walk).
|
|
787
|
-
*
|
|
788
|
-
*
|
|
789
|
-
* `Record<string, TransferElement>` at the framework-default level, and an
|
|
790
|
-
* adopter supplying a typed-overlay encoder narrows the runtime shape to
|
|
791
|
-
* its wire types. The cast on the return is where that invariant — the
|
|
792
|
-
* adopter's `TTransfer` matches its encoder's overlay — is asserted, at a
|
|
793
|
-
* single boundary point rather than spread across the callers.
|
|
792
|
+
* `TransferEncoder.toTransferDocument` for the walk). `fingerprint` is the
|
|
793
|
+
* caller's {@link computeDocumentFingerprint} of that same state, which
|
|
794
|
+
* spares hashing it twice.
|
|
794
795
|
*/
|
|
795
|
-
envelope(uri) {
|
|
796
|
+
envelope(uri, fingerprint) {
|
|
796
797
|
// Resolve through the model service's canonicalizing gateway rather than
|
|
797
798
|
// reaching into `LangiumDocuments` directly, so a divergent (symlink) URI
|
|
798
799
|
// still finds the document the build keys by its real path — and so the
|
|
799
800
|
// data-server never has to remember to canonicalize this lookup itself.
|
|
800
801
|
const document = this.modelService.getDocument(uri.toString());
|
|
801
|
-
if (!document) {
|
|
802
|
+
if (!document || this.services.workspace.ModelLedger.isPlaceholder(document.parseResult.value)) {
|
|
802
803
|
// No document — a shaped envelope rather than a throw, so the caller
|
|
803
|
-
// decides policy at its own layer; `
|
|
804
|
+
// decides policy at its own layer; `model` is optional on the envelope
|
|
804
805
|
// so the compiler forces that decision. Adopters preferring to throw
|
|
805
|
-
// override `envelope`.
|
|
806
|
+
// override `envelope`. The builder's unparsed placeholder is no
|
|
807
|
+
// document either: its root parses no text.
|
|
806
808
|
return TransferDocument.absent(uri.toString());
|
|
807
809
|
}
|
|
808
|
-
|
|
810
|
+
const encoded = this.encoder.toTransferDocument(document);
|
|
811
|
+
return this.withServerState(encoded, fingerprint ?? this.computeDocumentFingerprint(document.parseResult.value, encoded));
|
|
809
812
|
}
|
|
810
813
|
/**
|
|
811
|
-
* The transfer document a request answers with for `astDocument`,
|
|
812
|
-
*
|
|
813
|
-
*
|
|
814
|
-
*
|
|
814
|
+
* The transfer document a request answers with for `astDocument`, its model
|
|
815
|
+
* hashed and the text stamped on it by {@link withServerState}. Every
|
|
816
|
+
* document a request answers with goes through here, so none goes out
|
|
817
|
+
* without them.
|
|
815
818
|
*/
|
|
816
819
|
encodeDocument(astDocument) {
|
|
817
|
-
|
|
820
|
+
const encoded = this.encoder.astDocumentToTransferDocument(astDocument);
|
|
821
|
+
return this.withServerState(encoded, this.computeDocumentFingerprint(astDocument.root, encoded));
|
|
818
822
|
}
|
|
819
823
|
/**
|
|
820
|
-
* `
|
|
821
|
-
* the
|
|
822
|
-
*
|
|
823
|
-
*
|
|
824
|
-
*
|
|
825
|
-
* before the build that follows it.
|
|
824
|
+
* `encoded` with `hash` on its model and the text the server holds for it:
|
|
825
|
+
* the store's while it holds the document, the build's otherwise. The text
|
|
826
|
+
* is read when the document is sent rather than kept with the build: a save
|
|
827
|
+
* changes `text.dirty` without a rebuild, and the store's text moves on before
|
|
828
|
+
* the build that follows it.
|
|
826
829
|
*/
|
|
827
|
-
withServerState(
|
|
828
|
-
const text =
|
|
830
|
+
withServerState(encoded, hash) {
|
|
831
|
+
const text = this.services.workspace.TextDocuments.textState(encoded.uri) ?? this.builtTextState(encoded.uri);
|
|
832
|
+
if (text && text.version > encoded.model.version) {
|
|
833
|
+
this.tracer.withUri(encoded.uri).debug(`Send a model behind its text: model v${encoded.model.version} / text v${text.version}`);
|
|
834
|
+
}
|
|
829
835
|
return {
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
836
|
+
uri: encoded.uri,
|
|
837
|
+
// The encoder returns the structural base; `TTransfer` is the adopter's
|
|
838
|
+
// declaration of the roots its languages produce, and nothing checks it.
|
|
839
|
+
model: { ...encoded.model, hash },
|
|
840
|
+
...(text ? { text } : {})
|
|
833
841
|
};
|
|
834
842
|
}
|
|
843
|
+
/**
|
|
844
|
+
* The text a build read for a document the store never held, which is
|
|
845
|
+
* clean: the store holds every text a client gave it.
|
|
846
|
+
*/
|
|
847
|
+
builtTextState(uri) {
|
|
848
|
+
const textDocument = this.modelService.getDocument(uri)?.textDocument;
|
|
849
|
+
return textDocument && { version: textDocument.version, hash: textHash(textDocument.getText()), dirty: false };
|
|
850
|
+
}
|
|
835
851
|
/**
|
|
836
852
|
* Subscribe one listener at the configured {@link DataServerOptions.subscriptionPhase}.
|
|
837
853
|
* The listener dispatches subscription events for every matching URI. A
|
|
@@ -920,7 +936,7 @@ export class DataServer {
|
|
|
920
936
|
dispatchDirtyEvent(event) {
|
|
921
937
|
const uri = this.canonicalKey(event.uri);
|
|
922
938
|
if (this.uriWatchRecords.get(uri)?.watchers.size) {
|
|
923
|
-
this.clientProxy.onDocumentDirtyChanged({ uri,
|
|
939
|
+
this.clientProxy.onDocumentDirtyChanged({ uri, text: event.text });
|
|
924
940
|
}
|
|
925
941
|
}
|
|
926
942
|
/**
|
|
@@ -993,6 +1009,7 @@ export class DataServer {
|
|
|
993
1009
|
const record = this.uriWatchRecords.get(uri);
|
|
994
1010
|
if (record) {
|
|
995
1011
|
record.fingerprint = undefined;
|
|
1012
|
+
record.fingerprintVersion = undefined;
|
|
996
1013
|
record.revertPending = undefined;
|
|
997
1014
|
record.sentVersion = undefined;
|
|
998
1015
|
this.pruneUriWatchRecord(uri);
|
|
@@ -1033,7 +1050,9 @@ export class DataServer {
|
|
|
1033
1050
|
* {@link subscribeToTextDocumentCloses}).
|
|
1034
1051
|
*
|
|
1035
1052
|
* An event for a rebuild with no observable change since the last emit is
|
|
1036
|
-
* suppressed against the URI's fingerprint
|
|
1053
|
+
* suppressed against the URI's fingerprint and the version it was taken at;
|
|
1054
|
+
* a new version with the same fingerprint goes out with the same
|
|
1055
|
+
* `model.hash`, so a watcher still learns the version. Such rebuilds are routine: a
|
|
1037
1056
|
* second client attaching to an open document makes
|
|
1038
1057
|
* `HydraniumTextDocuments.refreshContent` fire `onDidChangeContent` purely
|
|
1039
1058
|
* to re-trigger the build, and Langium rebuilds a document when a
|
|
@@ -1072,16 +1091,18 @@ export class DataServer {
|
|
|
1072
1091
|
record.revertPending = undefined;
|
|
1073
1092
|
this.pruneUriWatchRecord(uri);
|
|
1074
1093
|
}
|
|
1075
|
-
const fingerprint = this.computeDocumentFingerprint(document);
|
|
1076
|
-
|
|
1094
|
+
const fingerprint = this.computeDocumentFingerprint(document.parseResult.value, this.encoder.toTransferDocument(document));
|
|
1095
|
+
const stamped = this.services.workspace.ModelLedger.versionOf(document.parseResult.value);
|
|
1096
|
+
if (record.fingerprint === fingerprint && record.fingerprintVersion === stamped) {
|
|
1077
1097
|
// A rebuild that produced no observable change since the last emit —
|
|
1078
1098
|
// suppressed so RPC subscribers don't see a no-op broadcast. Logged at
|
|
1079
1099
|
// debug so a *needed* re-broadcast wrongly suppressed by this dedup
|
|
1080
1100
|
// (the failure mode the fingerprint strategy must avoid) is visible.
|
|
1081
|
-
this.tracer.withUri(uri).debug(`Suppress onDocumentUpdated v${
|
|
1101
|
+
this.tracer.withUri(uri).debug(`Suppress onDocumentUpdated v${stamped}: fingerprint and version unchanged`);
|
|
1082
1102
|
return;
|
|
1083
1103
|
}
|
|
1084
1104
|
record.fingerprint = fingerprint;
|
|
1105
|
+
record.fingerprintVersion = stamped;
|
|
1085
1106
|
// The manager's attribution, so this head names the same client as the
|
|
1086
1107
|
// in-process heads do for one build, except for a version this head
|
|
1087
1108
|
// already sent; see `DataServerUriWatchRecord.sentVersion`.
|
|
@@ -1091,46 +1112,32 @@ export class DataServer {
|
|
|
1091
1112
|
: this.services.workspace.AstDocumentManager.attributeUpdate(document);
|
|
1092
1113
|
record.sentVersion = version;
|
|
1093
1114
|
const event = {
|
|
1094
|
-
document: this.envelope(document.uri),
|
|
1115
|
+
document: this.envelope(document.uri, fingerprint),
|
|
1095
1116
|
sourceClientId: revertedOnClose ? REVERT_ON_CLOSE_CLIENT_ID : sourceClientId,
|
|
1096
1117
|
reason
|
|
1097
1118
|
};
|
|
1098
|
-
this.tracer
|
|
1099
|
-
.withUri(uri)
|
|
1100
|
-
.debug(`Emit onDocumentUpdated v${event.document.version} (reason=${event.reason}, sourceClientId=${event.sourceClientId})`);
|
|
1119
|
+
this.tracer.withUri(uri).debug(`Emit onDocumentUpdated v${stamped} (reason=${event.reason}, sourceClientId=${event.sourceClientId})`);
|
|
1101
1120
|
this.clientProxy.onDocumentUpdated(event);
|
|
1102
1121
|
}
|
|
1103
1122
|
/**
|
|
1104
|
-
* Fingerprint of the
|
|
1105
|
-
* `onDocumentUpdated` emissions
|
|
1106
|
-
*
|
|
1107
|
-
* {@link
|
|
1123
|
+
* Fingerprint of the snapshot `root` and its encoding `encoded`, used to
|
|
1124
|
+
* de-dup `onDocumentUpdated` emissions and sent as every document's
|
|
1125
|
+
* `model.hash`, so it must not depend on the version or on live state. The
|
|
1126
|
+
* {@link FingerprintStrategy} option selects what is hashed (default
|
|
1127
|
+
* `'transfer-document'` — see the type).
|
|
1108
1128
|
*
|
|
1109
|
-
*
|
|
1110
|
-
*
|
|
1111
|
-
*
|
|
1112
|
-
* `envelope` share a single encode walk.
|
|
1129
|
+
* {@link TransferEncoder.toTransferDocument} is cached per build, so within
|
|
1130
|
+
* one phase event the fingerprint and the subsequently-emitted `envelope`
|
|
1131
|
+
* share a single encode walk.
|
|
1113
1132
|
*
|
|
1114
1133
|
* Wrapped in {@link Tracer.time} against {@link FINGERPRINT_LOG_AFTER_MS}.
|
|
1115
1134
|
*/
|
|
1116
|
-
computeDocumentFingerprint(
|
|
1117
|
-
return this.tracer
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
return extra.length === 0 ? base : textHash([base, FINGERPRINT_SEPARATOR, ...extra.map(value => JSON.stringify(value))]);
|
|
1123
|
-
}, 'debug', { logAfterMs: FINGERPRINT_LOG_AFTER_MS });
|
|
1124
|
-
}
|
|
1125
|
-
/**
|
|
1126
|
-
* Extra inputs folded into {@link computeDocumentFingerprint} alongside the
|
|
1127
|
-
* chosen {@link FingerprintStrategy}. Default: none. Override to contribute a
|
|
1128
|
-
* signal that lives outside the document's text / root / diagnostics — each
|
|
1129
|
-
* entry need only be stable across equivalent emissions and
|
|
1130
|
-
* JSON-serialisable.
|
|
1131
|
-
*/
|
|
1132
|
-
additionalFingerprintInputs(_document) {
|
|
1133
|
-
return [];
|
|
1135
|
+
computeDocumentFingerprint(root, encoded) {
|
|
1136
|
+
return this.tracer
|
|
1137
|
+
.withUri(encoded.uri)
|
|
1138
|
+
.time('Compute fingerprint', () => this.options.fingerprintStrategy === 'text-diagnostics'
|
|
1139
|
+
? textDiagnosticsFingerprint(this.services.workspace.ModelLedger.textOf(root), encoded.model)
|
|
1140
|
+
: transferDocumentFingerprint(encoded.model), 'debug', { logAfterMs: FINGERPRINT_LOG_AFTER_MS });
|
|
1134
1141
|
}
|
|
1135
1142
|
/**
|
|
1136
1143
|
* Subscribe to the project tier's change channel and re-fan registry
|
package/lib/data-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server.js","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-server.js","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/data-server",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.189",
|
|
4
4
|
"description": "Typed-RPC protocol head for the hydranium framework. Peer of @hydranium/core/lsp and @hydranium/glsp-server; built on @hydranium/core.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-server",
|
|
@@ -78,18 +78,18 @@
|
|
|
78
78
|
"watch": "tsc -b -w --preserveWatchOutput"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@hydranium/core": "1.0.0-next.
|
|
82
|
-
"@hydranium/langium": "1.0.0-next.
|
|
83
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
81
|
+
"@hydranium/core": "1.0.0-next.189",
|
|
82
|
+
"@hydranium/langium": "1.0.0-next.189",
|
|
83
|
+
"@hydranium/protocol": "1.0.0-next.189",
|
|
84
84
|
"rimraf": "^5.0.0",
|
|
85
85
|
"typescript": "^7.0.2",
|
|
86
86
|
"vscode-jsonrpc": "9.0.1",
|
|
87
87
|
"vscode-languageserver-textdocument": "^1.0.12"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"@hydranium/core": "1.0.0-next.
|
|
91
|
-
"@hydranium/langium": "1.0.0-next.
|
|
92
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
90
|
+
"@hydranium/core": "1.0.0-next.189",
|
|
91
|
+
"@hydranium/langium": "1.0.0-next.189",
|
|
92
|
+
"@hydranium/protocol": "1.0.0-next.189",
|
|
93
93
|
"vscode-jsonrpc": "9.0.1",
|
|
94
94
|
"vscode-languageserver-textdocument": "^1.0.12"
|
|
95
95
|
},
|
package/src/data-server.ts
CHANGED
|
@@ -34,12 +34,14 @@ import {
|
|
|
34
34
|
type ReferenceContext,
|
|
35
35
|
type ReferenceRequest,
|
|
36
36
|
type ReferenceTarget,
|
|
37
|
+
type TransferModelSnapshot,
|
|
38
|
+
type ModelVersion,
|
|
39
|
+
type TextState,
|
|
37
40
|
type Tracer,
|
|
38
41
|
type TransferDiagnostic,
|
|
39
42
|
TransferDocument,
|
|
40
43
|
type TransferElement,
|
|
41
44
|
UNKNOWN_CLIENT_ID,
|
|
42
|
-
asSnapshotVersion,
|
|
43
45
|
textHash
|
|
44
46
|
} from '@hydranium/protocol';
|
|
45
47
|
import {
|
|
@@ -122,6 +124,7 @@ import type {
|
|
|
122
124
|
LogNameOptions,
|
|
123
125
|
AstDiagnostic,
|
|
124
126
|
AstDocument,
|
|
127
|
+
EncodedTransferDocument,
|
|
125
128
|
ModelService,
|
|
126
129
|
ProjectChangeEvent,
|
|
127
130
|
ServerSharedServices,
|
|
@@ -170,22 +173,32 @@ const resumableByModelService = new WeakMap<object, Map<string, ResumableSession
|
|
|
170
173
|
* folded in on a cascade rebuild that leaves the document's own text
|
|
171
174
|
* untouched. Safe for any adopter whose AST extensions fold derived state
|
|
172
175
|
* into the transfer projection (the framework norm).
|
|
173
|
-
* - `'text-diagnostics'` — the cheaper
|
|
174
|
-
* opt-DOWN for adopters that fold no derived state and want to avoid
|
|
175
|
-
* transfer
|
|
176
|
+
* - `'text-diagnostics'` — the cheaper parsed-text + diagnostics hash. An
|
|
177
|
+
* opt-DOWN for adopters that fold no derived state and want to avoid
|
|
178
|
+
* stringifying the transfer root per phase event.
|
|
176
179
|
*/
|
|
177
180
|
export type FingerprintStrategy = 'transfer-document' | 'text-diagnostics';
|
|
178
181
|
|
|
179
|
-
/**
|
|
180
|
-
|
|
181
|
-
|
|
182
|
+
/**
|
|
183
|
+
* Hash `text`, the text the model was parsed from, + `model`'s diagnostics — the `'text-diagnostics'` strategy.
|
|
184
|
+
* The text comes from the root's ledger record or CST, as the document's own may have moved on,
|
|
185
|
+
* and a repair in place leaves the CST on the unrepaired text;
|
|
186
|
+
* a root built without a CST hashes as `'transfer-document'`.
|
|
187
|
+
* Absent diagnostics must hash apart from `[]`, as in {@link transferDocumentFingerprint}.
|
|
188
|
+
*/
|
|
189
|
+
function textDiagnosticsFingerprint(text: string | undefined, model: EncodedTransferDocument<TransferElement, unknown>['model']): string {
|
|
190
|
+
return text === undefined
|
|
191
|
+
? transferDocumentFingerprint(model)
|
|
192
|
+
: textHash([text, FINGERPRINT_SEPARATOR, JSON.stringify(model.diagnostics ?? null)]);
|
|
182
193
|
}
|
|
183
194
|
|
|
184
|
-
/**
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
195
|
+
/**
|
|
196
|
+
* Hash an encoded model's root + diagnostics — the `'transfer-document'` strategy.
|
|
197
|
+
* Absent diagnostics must hash apart from `[]`: a client skipping a render on an
|
|
198
|
+
* equal hash would otherwise miss a validation that found nothing.
|
|
199
|
+
*/
|
|
200
|
+
function transferDocumentFingerprint(model: EncodedTransferDocument<TransferElement, unknown>['model']): string {
|
|
201
|
+
return textHash([JSON.stringify(model.root), FINGERPRINT_SEPARATOR, JSON.stringify(model.diagnostics ?? null)]);
|
|
189
202
|
}
|
|
190
203
|
/**
|
|
191
204
|
* `logAfterMs` threshold passed to {@link Tracer.time} around
|
|
@@ -363,6 +376,13 @@ export interface DataServerUriWatchRecord {
|
|
|
363
376
|
readonly watchers: Set<string>;
|
|
364
377
|
/** Digest of the last emitted state, or of the state a first watch found; see {@link DataServer.dispatchPhaseEvent} for why it de-duplicates, {@link DataServer.computeDocumentFingerprint} for its inputs. */
|
|
365
378
|
fingerprint?: string;
|
|
379
|
+
/**
|
|
380
|
+
* The version {@link DataServerUriWatchRecord.fingerprint} was taken at; an
|
|
381
|
+
* event goes out when either moves. Not {@link DataServerUriWatchRecord.sentVersion}:
|
|
382
|
+
* a first watch sets this and sends nothing, so the next event at its
|
|
383
|
+
* version still carries the manager's attribution.
|
|
384
|
+
*/
|
|
385
|
+
fingerprintVersion?: ModelVersion;
|
|
366
386
|
/** Set by {@link DataServer.subscribeToTextDocumentCloses}; the next phase event broadcasts even without a watcher. */
|
|
367
387
|
revertPending?: boolean;
|
|
368
388
|
/**
|
|
@@ -398,6 +418,10 @@ export interface DataServerUriWatchRecord {
|
|
|
398
418
|
* adopters subclass ONLY when they need to decorate wire returns or
|
|
399
419
|
* notifications. The usual adoption path is DI rebinds alone.
|
|
400
420
|
*
|
|
421
|
+
* **`TTransfer` is not checked.** It declares the union of the transfer roots
|
|
422
|
+
* the workspace's languages produce. Which root a document has is known only
|
|
423
|
+
* at runtime, from its language, so a `TTransfer` missing a language compiles.
|
|
424
|
+
*
|
|
401
425
|
* Lifecycle: the constructor registers framework request handlers (plus
|
|
402
426
|
* any names supplied via {@link DataServerOptions.additionalMethods}) and
|
|
403
427
|
* builds the {@link DataClientProtocol} notification proxy on the same
|
|
@@ -663,7 +687,7 @@ export class DataServer<
|
|
|
663
687
|
* through an override of this.
|
|
664
688
|
*/
|
|
665
689
|
protected toSessionWrite(request: Omit<TransferUpdateDocumentArgs<TTransfer>, 'clientId'>): ClientSessionWriteArgs<TTransfer> {
|
|
666
|
-
return { uri: request.uri, model: request.model,
|
|
690
|
+
return { uri: request.uri, model: request.model, baseVersion: request.baseVersion };
|
|
667
691
|
}
|
|
668
692
|
|
|
669
693
|
/**
|
|
@@ -693,25 +717,15 @@ export class DataServer<
|
|
|
693
717
|
* fails, `rollback` undoes the open this call made before the failure is
|
|
694
718
|
* rethrown: the caller sees no open, so nothing on its side would ever close
|
|
695
719
|
* it.
|
|
696
|
-
*
|
|
697
|
-
* Versioned with the store's shared version rather than the snapshot's own:
|
|
698
|
-
* the built document's `textDocument.version` lags the store's whenever the
|
|
699
|
-
* store assigned the version, and the store's is what a write's `basedOn` is
|
|
700
|
-
* compared against, so reporting the snapshot's would make the caller's
|
|
701
|
-
* first based-on write conflict with itself.
|
|
702
720
|
*/
|
|
703
721
|
protected async openedSnapshot(uri: string, rollback?: () => Promise<void>): Promise<TransferDocument<TTransfer, TDiagnostic>> {
|
|
704
|
-
let document: TransferDocument<TTransfer, TDiagnostic>;
|
|
705
722
|
try {
|
|
706
|
-
|
|
723
|
+
return await this.getModelDocument({ uri });
|
|
707
724
|
} catch (error: unknown) {
|
|
708
725
|
// The open's failure is the one the caller needs, not the cleanup's.
|
|
709
726
|
await rollback?.().catch(() => undefined);
|
|
710
727
|
throw error;
|
|
711
728
|
}
|
|
712
|
-
// Stamped again with the version, in one step: a write landing after the
|
|
713
|
-
// read would otherwise pair its version with the read's text hash.
|
|
714
|
-
return this.withServerState({ ...document, version: asSnapshotVersion(this.services.workspace.TextDocuments.version(uri)) });
|
|
715
729
|
}
|
|
716
730
|
|
|
717
731
|
async closeModelDocument(args: CloseModelArgs): Promise<void> {
|
|
@@ -741,7 +755,7 @@ export class DataServer<
|
|
|
741
755
|
return this.encodeDocument(await this.modelService.ensureDocumentState(args.uri, state));
|
|
742
756
|
} catch (error: unknown) {
|
|
743
757
|
// The protocol answers a read of a URI with no document with an
|
|
744
|
-
// envelope that has no
|
|
758
|
+
// envelope that has no model.
|
|
745
759
|
if (this.isMissingDocument(error, args.uri)) {
|
|
746
760
|
return this.envelope(UriUtils.toUri(args.uri));
|
|
747
761
|
}
|
|
@@ -780,8 +794,9 @@ export class DataServer<
|
|
|
780
794
|
record.watchers.add(args.clientId);
|
|
781
795
|
if (record.fingerprint === undefined) {
|
|
782
796
|
const document = this.services.workspace.LangiumDocuments.getDocument(UriUtils.toUri(uri));
|
|
783
|
-
if (document) {
|
|
784
|
-
record.fingerprint = this.computeDocumentFingerprint(document);
|
|
797
|
+
if (document && !this.services.workspace.ModelLedger.isPlaceholder(document.parseResult.value)) {
|
|
798
|
+
record.fingerprint = this.computeDocumentFingerprint(document.parseResult.value, this.encoder.toTransferDocument(document));
|
|
799
|
+
record.fingerprintVersion = this.services.workspace.ModelLedger.versionOf(document.parseResult.value);
|
|
785
800
|
}
|
|
786
801
|
}
|
|
787
802
|
}
|
|
@@ -813,6 +828,7 @@ export class DataServer<
|
|
|
813
828
|
}
|
|
814
829
|
if (record.revertPending) {
|
|
815
830
|
record.fingerprint = undefined;
|
|
831
|
+
record.fingerprintVersion = undefined;
|
|
816
832
|
} else {
|
|
817
833
|
this.uriWatchRecords.delete(uri);
|
|
818
834
|
}
|
|
@@ -915,14 +931,16 @@ export class DataServer<
|
|
|
915
931
|
return this.resolveReferenceServices(ctx.source).CandidateProvider.find(ctx);
|
|
916
932
|
}
|
|
917
933
|
|
|
918
|
-
async resolveReference
|
|
934
|
+
async resolveReference<TElement extends TransferElement = TransferElement>(
|
|
935
|
+
ref: ReferenceRequest
|
|
936
|
+
): Promise<ReferenceTarget<TElement> | undefined> {
|
|
919
937
|
await this.awaitReferencesLinked(ref.source);
|
|
920
938
|
const resolved = this.resolveReferenceServices(ref.source).CandidateProvider.resolveCandidate(ref);
|
|
921
939
|
if (!resolved) {
|
|
922
940
|
return undefined;
|
|
923
941
|
}
|
|
924
|
-
|
|
925
|
-
return { ...resolved.candidate, element };
|
|
942
|
+
// The caller's claim about the target's type; see `ReferenceServerProtocol.resolveReference`.
|
|
943
|
+
return { ...resolved.candidate, element: this.encoder.toTransfer(resolved.node) as TElement };
|
|
926
944
|
}
|
|
927
945
|
|
|
928
946
|
async findNextName(args: FindNextNameArgs): Promise<string> {
|
|
@@ -1133,60 +1151,72 @@ export class DataServer<
|
|
|
1133
1151
|
/**
|
|
1134
1152
|
* Build a {@link TransferDocument} envelope from the current document state,
|
|
1135
1153
|
* delegating root + diagnostic encoding to {@link encoder} (see
|
|
1136
|
-
* `TransferEncoder.toTransferDocument` for the walk).
|
|
1137
|
-
*
|
|
1138
|
-
*
|
|
1139
|
-
* `Record<string, TransferElement>` at the framework-default level, and an
|
|
1140
|
-
* adopter supplying a typed-overlay encoder narrows the runtime shape to
|
|
1141
|
-
* its wire types. The cast on the return is where that invariant — the
|
|
1142
|
-
* adopter's `TTransfer` matches its encoder's overlay — is asserted, at a
|
|
1143
|
-
* single boundary point rather than spread across the callers.
|
|
1154
|
+
* `TransferEncoder.toTransferDocument` for the walk). `fingerprint` is the
|
|
1155
|
+
* caller's {@link computeDocumentFingerprint} of that same state, which
|
|
1156
|
+
* spares hashing it twice.
|
|
1144
1157
|
*/
|
|
1145
|
-
protected envelope(uri: URI): TransferDocument<TTransfer, TDiagnostic> {
|
|
1158
|
+
protected envelope(uri: URI, fingerprint?: string): TransferDocument<TTransfer, TDiagnostic> {
|
|
1146
1159
|
// Resolve through the model service's canonicalizing gateway rather than
|
|
1147
1160
|
// reaching into `LangiumDocuments` directly, so a divergent (symlink) URI
|
|
1148
1161
|
// still finds the document the build keys by its real path — and so the
|
|
1149
1162
|
// data-server never has to remember to canonicalize this lookup itself.
|
|
1150
1163
|
const document = this.modelService.getDocument(uri.toString());
|
|
1151
|
-
if (!document) {
|
|
1164
|
+
if (!document || this.services.workspace.ModelLedger.isPlaceholder(document.parseResult.value)) {
|
|
1152
1165
|
// No document — a shaped envelope rather than a throw, so the caller
|
|
1153
|
-
// decides policy at its own layer; `
|
|
1166
|
+
// decides policy at its own layer; `model` is optional on the envelope
|
|
1154
1167
|
// so the compiler forces that decision. Adopters preferring to throw
|
|
1155
|
-
// override `envelope`.
|
|
1168
|
+
// override `envelope`. The builder's unparsed placeholder is no
|
|
1169
|
+
// document either: its root parses no text.
|
|
1156
1170
|
return TransferDocument.absent<TTransfer, TDiagnostic>(uri.toString());
|
|
1157
1171
|
}
|
|
1158
|
-
|
|
1172
|
+
const encoded = this.encoder.toTransferDocument(document);
|
|
1173
|
+
return this.withServerState(encoded, fingerprint ?? this.computeDocumentFingerprint(document.parseResult.value, encoded));
|
|
1159
1174
|
}
|
|
1160
1175
|
|
|
1161
1176
|
/**
|
|
1162
|
-
* The transfer document a request answers with for `astDocument`,
|
|
1163
|
-
*
|
|
1164
|
-
*
|
|
1165
|
-
*
|
|
1177
|
+
* The transfer document a request answers with for `astDocument`, its model
|
|
1178
|
+
* hashed and the text stamped on it by {@link withServerState}. Every
|
|
1179
|
+
* document a request answers with goes through here, so none goes out
|
|
1180
|
+
* without them.
|
|
1166
1181
|
*/
|
|
1167
1182
|
protected encodeDocument(astDocument: AstDocument<AstNode, AstDiagnostic>): TransferDocument<TTransfer, TDiagnostic> {
|
|
1168
|
-
|
|
1183
|
+
const encoded = this.encoder.astDocumentToTransferDocument(astDocument);
|
|
1184
|
+
return this.withServerState(encoded, this.computeDocumentFingerprint(astDocument.root, encoded));
|
|
1169
1185
|
}
|
|
1170
1186
|
|
|
1171
1187
|
/**
|
|
1172
|
-
* `
|
|
1173
|
-
* the
|
|
1174
|
-
*
|
|
1175
|
-
*
|
|
1176
|
-
*
|
|
1177
|
-
* before the build that follows it.
|
|
1188
|
+
* `encoded` with `hash` on its model and the text the server holds for it:
|
|
1189
|
+
* the store's while it holds the document, the build's otherwise. The text
|
|
1190
|
+
* is read when the document is sent rather than kept with the build: a save
|
|
1191
|
+
* changes `text.dirty` without a rebuild, and the store's text moves on before
|
|
1192
|
+
* the build that follows it.
|
|
1178
1193
|
*/
|
|
1179
|
-
protected withServerState(
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1194
|
+
protected withServerState(
|
|
1195
|
+
encoded: EncodedTransferDocument<TransferElement, TDiagnostic>,
|
|
1196
|
+
hash: string
|
|
1197
|
+
): TransferDocument<TTransfer, TDiagnostic> {
|
|
1198
|
+
const text = this.services.workspace.TextDocuments.textState(encoded.uri) ?? this.builtTextState(encoded.uri);
|
|
1199
|
+
if (text && text.version > encoded.model.version) {
|
|
1200
|
+
this.tracer.withUri(encoded.uri).debug(`Send a model behind its text: model v${encoded.model.version} / text v${text.version}`);
|
|
1201
|
+
}
|
|
1183
1202
|
return {
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1203
|
+
uri: encoded.uri,
|
|
1204
|
+
// The encoder returns the structural base; `TTransfer` is the adopter's
|
|
1205
|
+
// declaration of the roots its languages produce, and nothing checks it.
|
|
1206
|
+
model: { ...encoded.model, hash } as TransferModelSnapshot<TTransfer, TDiagnostic>,
|
|
1207
|
+
...(text ? { text } : {})
|
|
1187
1208
|
};
|
|
1188
1209
|
}
|
|
1189
1210
|
|
|
1211
|
+
/**
|
|
1212
|
+
* The text a build read for a document the store never held, which is
|
|
1213
|
+
* clean: the store holds every text a client gave it.
|
|
1214
|
+
*/
|
|
1215
|
+
protected builtTextState(uri: string): TextState | undefined {
|
|
1216
|
+
const textDocument = this.modelService.getDocument(uri)?.textDocument;
|
|
1217
|
+
return textDocument && { version: textDocument.version, hash: textHash(textDocument.getText()), dirty: false };
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1190
1220
|
/**
|
|
1191
1221
|
* Subscribe one listener at the configured {@link DataServerOptions.subscriptionPhase}.
|
|
1192
1222
|
* The listener dispatches subscription events for every matching URI. A
|
|
@@ -1285,7 +1315,7 @@ export class DataServer<
|
|
|
1285
1315
|
protected dispatchDirtyEvent(event: DocumentDirtyChangedEvent): void {
|
|
1286
1316
|
const uri = this.canonicalKey(event.uri);
|
|
1287
1317
|
if (this.uriWatchRecords.get(uri)?.watchers.size) {
|
|
1288
|
-
this.clientProxy.onDocumentDirtyChanged({ uri,
|
|
1318
|
+
this.clientProxy.onDocumentDirtyChanged({ uri, text: event.text });
|
|
1289
1319
|
}
|
|
1290
1320
|
}
|
|
1291
1321
|
|
|
@@ -1362,6 +1392,7 @@ export class DataServer<
|
|
|
1362
1392
|
const record = this.uriWatchRecords.get(uri);
|
|
1363
1393
|
if (record) {
|
|
1364
1394
|
record.fingerprint = undefined;
|
|
1395
|
+
record.fingerprintVersion = undefined;
|
|
1365
1396
|
record.revertPending = undefined;
|
|
1366
1397
|
record.sentVersion = undefined;
|
|
1367
1398
|
this.pruneUriWatchRecord(uri);
|
|
@@ -1404,7 +1435,9 @@ export class DataServer<
|
|
|
1404
1435
|
* {@link subscribeToTextDocumentCloses}).
|
|
1405
1436
|
*
|
|
1406
1437
|
* An event for a rebuild with no observable change since the last emit is
|
|
1407
|
-
* suppressed against the URI's fingerprint
|
|
1438
|
+
* suppressed against the URI's fingerprint and the version it was taken at;
|
|
1439
|
+
* a new version with the same fingerprint goes out with the same
|
|
1440
|
+
* `model.hash`, so a watcher still learns the version. Such rebuilds are routine: a
|
|
1408
1441
|
* second client attaching to an open document makes
|
|
1409
1442
|
* `HydraniumTextDocuments.refreshContent` fire `onDidChangeContent` purely
|
|
1410
1443
|
* to re-trigger the build, and Langium rebuilds a document when a
|
|
@@ -1443,16 +1476,18 @@ export class DataServer<
|
|
|
1443
1476
|
record.revertPending = undefined;
|
|
1444
1477
|
this.pruneUriWatchRecord(uri);
|
|
1445
1478
|
}
|
|
1446
|
-
const fingerprint = this.computeDocumentFingerprint(document);
|
|
1447
|
-
|
|
1479
|
+
const fingerprint = this.computeDocumentFingerprint(document.parseResult.value, this.encoder.toTransferDocument(document));
|
|
1480
|
+
const stamped = this.services.workspace.ModelLedger.versionOf(document.parseResult.value);
|
|
1481
|
+
if (record.fingerprint === fingerprint && record.fingerprintVersion === stamped) {
|
|
1448
1482
|
// A rebuild that produced no observable change since the last emit —
|
|
1449
1483
|
// suppressed so RPC subscribers don't see a no-op broadcast. Logged at
|
|
1450
1484
|
// debug so a *needed* re-broadcast wrongly suppressed by this dedup
|
|
1451
1485
|
// (the failure mode the fingerprint strategy must avoid) is visible.
|
|
1452
|
-
this.tracer.withUri(uri).debug(`Suppress onDocumentUpdated v${
|
|
1486
|
+
this.tracer.withUri(uri).debug(`Suppress onDocumentUpdated v${stamped}: fingerprint and version unchanged`);
|
|
1453
1487
|
return;
|
|
1454
1488
|
}
|
|
1455
1489
|
record.fingerprint = fingerprint;
|
|
1490
|
+
record.fingerprintVersion = stamped;
|
|
1456
1491
|
// The manager's attribution, so this head names the same client as the
|
|
1457
1492
|
// in-process heads do for one build, except for a version this head
|
|
1458
1493
|
// already sent; see `DataServerUriWatchRecord.sentVersion`.
|
|
@@ -1463,54 +1498,39 @@ export class DataServer<
|
|
|
1463
1498
|
: this.services.workspace.AstDocumentManager.attributeUpdate(document);
|
|
1464
1499
|
record.sentVersion = version;
|
|
1465
1500
|
const event: TransferDocumentUpdatedEvent<TTransfer, TDiagnostic> = {
|
|
1466
|
-
document: this.envelope(document.uri),
|
|
1501
|
+
document: this.envelope(document.uri, fingerprint),
|
|
1467
1502
|
sourceClientId: revertedOnClose ? REVERT_ON_CLOSE_CLIENT_ID : sourceClientId,
|
|
1468
1503
|
reason
|
|
1469
1504
|
};
|
|
1470
|
-
this.tracer
|
|
1471
|
-
.withUri(uri)
|
|
1472
|
-
.debug(`Emit onDocumentUpdated v${event.document.version} (reason=${event.reason}, sourceClientId=${event.sourceClientId})`);
|
|
1505
|
+
this.tracer.withUri(uri).debug(`Emit onDocumentUpdated v${stamped} (reason=${event.reason}, sourceClientId=${event.sourceClientId})`);
|
|
1473
1506
|
this.clientProxy.onDocumentUpdated(event);
|
|
1474
1507
|
}
|
|
1475
1508
|
|
|
1476
1509
|
/**
|
|
1477
|
-
* Fingerprint of the
|
|
1478
|
-
* `onDocumentUpdated` emissions
|
|
1479
|
-
*
|
|
1480
|
-
* {@link
|
|
1510
|
+
* Fingerprint of the snapshot `root` and its encoding `encoded`, used to
|
|
1511
|
+
* de-dup `onDocumentUpdated` emissions and sent as every document's
|
|
1512
|
+
* `model.hash`, so it must not depend on the version or on live state. The
|
|
1513
|
+
* {@link FingerprintStrategy} option selects what is hashed (default
|
|
1514
|
+
* `'transfer-document'` — see the type).
|
|
1481
1515
|
*
|
|
1482
|
-
*
|
|
1483
|
-
*
|
|
1484
|
-
*
|
|
1485
|
-
* `envelope` share a single encode walk.
|
|
1516
|
+
* {@link TransferEncoder.toTransferDocument} is cached per build, so within
|
|
1517
|
+
* one phase event the fingerprint and the subsequently-emitted `envelope`
|
|
1518
|
+
* share a single encode walk.
|
|
1486
1519
|
*
|
|
1487
1520
|
* Wrapped in {@link Tracer.time} against {@link FINGERPRINT_LOG_AFTER_MS}.
|
|
1488
1521
|
*/
|
|
1489
|
-
protected computeDocumentFingerprint(
|
|
1490
|
-
return this.tracer
|
|
1491
|
-
|
|
1492
|
-
(
|
|
1493
|
-
|
|
1522
|
+
protected computeDocumentFingerprint(root: AstNode, encoded: EncodedTransferDocument<TransferElement, TDiagnostic>): string {
|
|
1523
|
+
return this.tracer
|
|
1524
|
+
.withUri(encoded.uri)
|
|
1525
|
+
.time(
|
|
1526
|
+
'Compute fingerprint',
|
|
1527
|
+
() =>
|
|
1494
1528
|
this.options.fingerprintStrategy === 'text-diagnostics'
|
|
1495
|
-
? textDiagnosticsFingerprint(
|
|
1496
|
-
: transferDocumentFingerprint(
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
'debug',
|
|
1501
|
-
{ logAfterMs: FINGERPRINT_LOG_AFTER_MS }
|
|
1502
|
-
);
|
|
1503
|
-
}
|
|
1504
|
-
|
|
1505
|
-
/**
|
|
1506
|
-
* Extra inputs folded into {@link computeDocumentFingerprint} alongside the
|
|
1507
|
-
* chosen {@link FingerprintStrategy}. Default: none. Override to contribute a
|
|
1508
|
-
* signal that lives outside the document's text / root / diagnostics — each
|
|
1509
|
-
* entry need only be stable across equivalent emissions and
|
|
1510
|
-
* JSON-serialisable.
|
|
1511
|
-
*/
|
|
1512
|
-
protected additionalFingerprintInputs(_document: LangiumDocument): readonly unknown[] {
|
|
1513
|
-
return [];
|
|
1529
|
+
? textDiagnosticsFingerprint(this.services.workspace.ModelLedger.textOf(root), encoded.model)
|
|
1530
|
+
: transferDocumentFingerprint(encoded.model),
|
|
1531
|
+
'debug',
|
|
1532
|
+
{ logAfterMs: FINGERPRINT_LOG_AFTER_MS }
|
|
1533
|
+
);
|
|
1514
1534
|
}
|
|
1515
1535
|
|
|
1516
1536
|
/**
|