@hydranium/data-server 1.0.0-next.37 → 1.0.0-next.39
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 +5 -1
- package/lib/data-server.d.ts +93 -11
- package/lib/data-server.d.ts.map +1 -1
- package/lib/data-server.js +114 -19
- package/lib/data-server.js.map +1 -1
- package/lib/testing/data-server-harness.d.ts +5 -1
- package/lib/testing/data-server-harness.d.ts.map +1 -1
- package/lib/testing/data-server-harness.js +4 -2
- package/lib/testing/data-server-harness.js.map +1 -1
- package/package.json +7 -7
- package/src/data-server.ts +118 -19
- package/src/testing/data-server-harness.ts +11 -1
package/README.md
CHANGED
|
@@ -22,7 +22,11 @@ Installed by the server process that already composes
|
|
|
22
22
|
- **Push notifications instead of polling:** `onDocumentUpdated` when a
|
|
23
23
|
subscribed document reaches the configured build phase
|
|
24
24
|
(`DataServerOptions.subscriptionPhase`, `DocumentState.Validated` by default),
|
|
25
|
-
`onDocumentSaved` on a separate channel,
|
|
25
|
+
`onDocumentSaved` on a separate channel, `onDocumentDeleted` on a third (a
|
|
26
|
+
deleted document has no built state to carry, and the build-phase path never
|
|
27
|
+
runs for one), `onDocumentsBuilt` once per build for the documents nobody
|
|
28
|
+
watches — chiefly those rebuilt as a cascade, which no filesystem watcher can
|
|
29
|
+
see because their own files did not change — and `onProjectsChanged` from the
|
|
26
30
|
project registry.
|
|
27
31
|
- **Projects as first-class:** `getProjects` and `getProjectForUri`, answered from
|
|
28
32
|
the framework's `ProjectManager`.
|
package/lib/data-server.d.ts
CHANGED
|
@@ -192,9 +192,11 @@ interface ResolvedDataServerOptions {
|
|
|
192
192
|
* any names supplied via {@link DataServerOptions.additionalMethods}) and
|
|
193
193
|
* builds the {@link DataClientProtocol} notification proxy on the same
|
|
194
194
|
* connection in one {@link createRpcProxy} call (binding `this` as its
|
|
195
|
-
* `localTarget`) under the configured namespace, and subscribes
|
|
196
|
-
* `DocumentBuilder.onDocumentPhase`
|
|
197
|
-
*
|
|
195
|
+
* `localTarget`) under the configured namespace, and subscribes two listeners
|
|
196
|
+
* at the configured phase: a `DocumentBuilder.onDocumentPhase` one dispatching
|
|
197
|
+
* per-document `clientProxy.onDocumentUpdated` for watched URIs, and a
|
|
198
|
+
* `DocumentBuilder.onBuildPhase` one dispatching a single
|
|
199
|
+
* `clientProxy.onDocumentsBuilt` naming the batch's unwatched documents.
|
|
198
200
|
*
|
|
199
201
|
* The data-server requires the full {@link ServerSharedServices}
|
|
200
202
|
* shape — `HydraniumTextDocuments` for client-attributed updates,
|
|
@@ -240,10 +242,12 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
240
242
|
/**
|
|
241
243
|
* Snapshot of the most recent `DocumentBuilder.onUpdate` event. Drives
|
|
242
244
|
* `reason` discrimination on outbound `onDocumentUpdated` notifications:
|
|
243
|
-
* a URI in the `changed` list emits `'changed'`,
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
245
|
+
* a URI in the `changed` list emits `'changed'`, otherwise `'rebuilt'`
|
|
246
|
+
* (cascade rebuild from a dependent URI's change). The same mechanism
|
|
247
|
+
* `AstDocumentManager.onUpdate` uses on the LSP side, so reason fidelity
|
|
248
|
+
* stays consistent between heads. The `deleted` half is read by
|
|
249
|
+
* {@link dispatchDeleteEvents} rather than by the reason discrimination,
|
|
250
|
+
* a deletion travelling on its own channel.
|
|
247
251
|
*/
|
|
248
252
|
protected lastBuildUpdate?: {
|
|
249
253
|
changed: readonly URI[];
|
|
@@ -504,6 +508,42 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
504
508
|
* regardless of subscriber count.
|
|
505
509
|
*/
|
|
506
510
|
protected subscribeToDocumentBuilder(): void;
|
|
511
|
+
/**
|
|
512
|
+
* Report the documents that reached {@link DataServerOptions.subscriptionPhase}
|
|
513
|
+
* and that NOBODY on this
|
|
514
|
+
* connection is watching — the ones a client was not told about through
|
|
515
|
+
* {@link dispatchPhaseEvent}, which is gated per URI.
|
|
516
|
+
*
|
|
517
|
+
* **The gap this closes is the one no other source can observe.** A document
|
|
518
|
+
* the client watches, it hears about already. A file changed on disk, the
|
|
519
|
+
* host's own filesystem watcher reports — and on a browser host, where the
|
|
520
|
+
* workspace lives behind this head, an external change cannot happen at all.
|
|
521
|
+
* What is left, and what nothing outside the server can see, is a document
|
|
522
|
+
* rebuilt because something it DEPENDS ON changed: its file never changed, so
|
|
523
|
+
* a filesystem watcher is silent by construction, and it has no subscriber, so
|
|
524
|
+
* the update channel is silent by design. A consumer displaying data derived
|
|
525
|
+
* from that document — a tree label, a decorator — otherwise goes stale with
|
|
526
|
+
* no signal from any source, and repairs itself the moment someone opens the
|
|
527
|
+
* file to investigate, which is what makes it expensive to diagnose later.
|
|
528
|
+
*
|
|
529
|
+
* Payload-free on purpose: URIs only, so a client re-reads what it displays
|
|
530
|
+
* rather than being handed transfer documents it did not ask for. That is the
|
|
531
|
+
* property the subscription map protects, and it is preserved here by
|
|
532
|
+
* carrying no document rather than by gating the message.
|
|
533
|
+
*
|
|
534
|
+
* Quiet in the common case. Editing a document that an editor has open leaves
|
|
535
|
+
* that URI watched and therefore out of this set, so a build with no
|
|
536
|
+
* dependents produces nothing at all, and workspace initialisation produces
|
|
537
|
+
* nothing because it does not build to this phase. The ceiling is a
|
|
538
|
+
* whole-workspace rebuild at the subscription phase: one message, URIs only.
|
|
539
|
+
*
|
|
540
|
+
* The URI is canonicalised for the same reason the subscription map is keyed
|
|
541
|
+
* that way, and is untested for the same reason as its twin in
|
|
542
|
+
* {@link dispatchDeleteEvents}: the builder reports URIs out of its own
|
|
543
|
+
* store, so a non-canonical one cannot be produced without a fixture
|
|
544
|
+
* asserting a shape the real system never emits.
|
|
545
|
+
*/
|
|
546
|
+
protected dispatchBuiltEvent(built: readonly LangiumDocument[]): void;
|
|
507
547
|
/**
|
|
508
548
|
* Subscribe to the universal save event on `HydraniumTextDocuments` so a
|
|
509
549
|
* single `onDocumentSaved` wire notification fires for ANY save of a
|
|
@@ -526,6 +566,48 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
526
566
|
* hold, so a `false` answer means this close was the last one.
|
|
527
567
|
*/
|
|
528
568
|
protected subscribeToTextDocumentCloses(): void;
|
|
569
|
+
/**
|
|
570
|
+
* Fan out a deletion for each removed URI, to EVERY client on the connection
|
|
571
|
+
* rather than only to the ones watching that URI.
|
|
572
|
+
*
|
|
573
|
+
* **Deliberately ungated, where {@link dispatchPhaseEvent} and
|
|
574
|
+
* {@link dispatchSaveEvent} are gated.** Those two carry a built document and
|
|
575
|
+
* fire on every build, so the subscription map is what keeps bandwidth
|
|
576
|
+
* proportional to what a client asked for. A deletion is neither: it is one
|
|
577
|
+
* URI, it is rare, and it reports the workspace's STRUCTURE rather than a
|
|
578
|
+
* document's content. Gating it forces any consumer that displays the
|
|
579
|
+
* workspace — a model tree, a file decorator — to learn about disappearances
|
|
580
|
+
* from a filesystem watcher instead, which a client hosted in a browser has
|
|
581
|
+
* no way to run: its workspace lives behind the head. A client that does not
|
|
582
|
+
* care filters on the URI, which costs it a comparison.
|
|
583
|
+
*
|
|
584
|
+
* The precedent is the last-close revert broadcast (see
|
|
585
|
+
* {@link pendingRevertBroadcasts}), where the same judgement was already made
|
|
586
|
+
* in the other direction: a transition that matters enough is delivered
|
|
587
|
+
* without a subscription.
|
|
588
|
+
*
|
|
589
|
+
* Runs from the `DocumentBuilder.onUpdate` listener rather than from a phase
|
|
590
|
+
* listener, which is the only place a deletion is observable: `update`
|
|
591
|
+
* removes the document before deriving the rebuild set, so it is never built.
|
|
592
|
+
* That ordering also puts this notification ahead of the `'rebuilt'` events
|
|
593
|
+
* for the dependents whose references the deletion just broke.
|
|
594
|
+
*
|
|
595
|
+
* The `deleted` list arrives already expanded to concrete document URIs —
|
|
596
|
+
* `deleteDocuments` resolves a directory URI to the documents beneath it — so
|
|
597
|
+
* no caller has to handle a directory here.
|
|
598
|
+
*
|
|
599
|
+
* Per-URI derived state is dropped for the same reason it is dropped
|
|
600
|
+
* anywhere: it describes a document that no longer exists.
|
|
601
|
+
* {@link lastEmittedFingerprint} in particular can outlive its subscriptions
|
|
602
|
+
* through the last-close revert path — left behind, it is adopted as the
|
|
603
|
+
* baseline by the next {@link watchModelDocument} and suppresses the first
|
|
604
|
+
* emit after the file returns with its previous content.
|
|
605
|
+
*
|
|
606
|
+
* The subscription itself SURVIVES: a recreated file resumes delivering to
|
|
607
|
+
* the same watchers with no re-subscription, and a client that answers the
|
|
608
|
+
* deletion by closing releases the watch through `closeModelDocument` anyway.
|
|
609
|
+
*/
|
|
610
|
+
protected dispatchDeleteEvents(deleted: readonly URI[]): void;
|
|
529
611
|
/** Fan out a save event for the document's URI, gated by the subscription map. */
|
|
530
612
|
protected dispatchSaveEvent(event: ClientTextDocumentChangeEvent<TextDocument>): void;
|
|
531
613
|
/**
|
|
@@ -571,16 +653,16 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
571
653
|
/**
|
|
572
654
|
* Discriminate the reason for a phase-event-driven update notification.
|
|
573
655
|
* Uses the most recent `DocumentBuilder.onUpdate` snapshot:
|
|
574
|
-
* - URI in the `deleted` list → `'deleted'`
|
|
575
656
|
* - URI in the `changed` list → `'changed'` (the URI was passed to
|
|
576
657
|
* `documentBuilder.update(changed, deleted)`, which spans `didChange`
|
|
577
658
|
* text-document events and programmatic `update([uri], [])` calls).
|
|
578
659
|
* - Otherwise → `'rebuilt'` (cascade re-derivation: this URI was rebuilt
|
|
579
660
|
* because something it depends on changed; its own text wasn't flagged).
|
|
580
661
|
*
|
|
581
|
-
* `'saved'` is NOT emitted
|
|
582
|
-
* `DataClientProtocol.onDocumentSaved` channel
|
|
583
|
-
* unified
|
|
662
|
+
* `'saved'` is NOT emitted here — saves take the dedicated
|
|
663
|
+
* `DataClientProtocol.onDocumentSaved` channel, and adopters wanting a
|
|
664
|
+
* unified stream synthesise it in their bridge layer. A deletion is not a
|
|
665
|
+
* reason at all; see {@link dispatchDeleteEvents}.
|
|
584
666
|
*/
|
|
585
667
|
protected resolveUpdateReason(uri: URI): TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>['reason'];
|
|
586
668
|
/**
|
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":"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
|
|
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
|
@@ -109,9 +109,11 @@ const FINGERPRINT_LOG_AFTER_MS = 5;
|
|
|
109
109
|
* any names supplied via {@link DataServerOptions.additionalMethods}) and
|
|
110
110
|
* builds the {@link DataClientProtocol} notification proxy on the same
|
|
111
111
|
* connection in one {@link createRpcProxy} call (binding `this` as its
|
|
112
|
-
* `localTarget`) under the configured namespace, and subscribes
|
|
113
|
-
* `DocumentBuilder.onDocumentPhase`
|
|
114
|
-
*
|
|
112
|
+
* `localTarget`) under the configured namespace, and subscribes two listeners
|
|
113
|
+
* at the configured phase: a `DocumentBuilder.onDocumentPhase` one dispatching
|
|
114
|
+
* per-document `clientProxy.onDocumentUpdated` for watched URIs, and a
|
|
115
|
+
* `DocumentBuilder.onBuildPhase` one dispatching a single
|
|
116
|
+
* `clientProxy.onDocumentsBuilt` naming the batch's unwatched documents.
|
|
115
117
|
*
|
|
116
118
|
* The data-server requires the full {@link ServerSharedServices}
|
|
117
119
|
* shape — `HydraniumTextDocuments` for client-attributed updates,
|
|
@@ -159,10 +161,12 @@ export class DataServer {
|
|
|
159
161
|
/**
|
|
160
162
|
* Snapshot of the most recent `DocumentBuilder.onUpdate` event. Drives
|
|
161
163
|
* `reason` discrimination on outbound `onDocumentUpdated` notifications:
|
|
162
|
-
* a URI in the `changed` list emits `'changed'`,
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
164
|
+
* a URI in the `changed` list emits `'changed'`, otherwise `'rebuilt'`
|
|
165
|
+
* (cascade rebuild from a dependent URI's change). The same mechanism
|
|
166
|
+
* `AstDocumentManager.onUpdate` uses on the LSP side, so reason fidelity
|
|
167
|
+
* stays consistent between heads. The `deleted` half is read by
|
|
168
|
+
* {@link dispatchDeleteEvents} rather than by the reason discrimination,
|
|
169
|
+
* a deletion travelling on its own channel.
|
|
166
170
|
*/
|
|
167
171
|
lastBuildUpdate;
|
|
168
172
|
/**
|
|
@@ -271,6 +275,7 @@ export class DataServer {
|
|
|
271
275
|
});
|
|
272
276
|
this.disposables.push(this.services.workspace.DocumentBuilder.onUpdate((changed, deleted) => {
|
|
273
277
|
this.lastBuildUpdate = { changed, deleted };
|
|
278
|
+
this.dispatchDeleteEvents(deleted);
|
|
274
279
|
}));
|
|
275
280
|
this.subscribeToDocumentBuilder();
|
|
276
281
|
this.subscribeToTextDocumentSaves();
|
|
@@ -734,6 +739,54 @@ export class DataServer {
|
|
|
734
739
|
*/
|
|
735
740
|
subscribeToDocumentBuilder() {
|
|
736
741
|
this.disposables.push(this.services.workspace.DocumentBuilder.onDocumentPhase(this.options.subscriptionPhase, (document, cancelToken) => this.dispatchPhaseEvent(document, cancelToken)));
|
|
742
|
+
// The BUILD-phase hook, not the per-document one: this notification is one
|
|
743
|
+
// message per build rather than one per document, and Langium hands the
|
|
744
|
+
// whole batch over here. It also does not fire for a cancelled build,
|
|
745
|
+
// which is what the per-document dispatch has to check by hand.
|
|
746
|
+
this.disposables.push(this.services.workspace.DocumentBuilder.onBuildPhase(this.options.subscriptionPhase, built => this.dispatchBuiltEvent(built)));
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Report the documents that reached {@link DataServerOptions.subscriptionPhase}
|
|
750
|
+
* and that NOBODY on this
|
|
751
|
+
* connection is watching — the ones a client was not told about through
|
|
752
|
+
* {@link dispatchPhaseEvent}, which is gated per URI.
|
|
753
|
+
*
|
|
754
|
+
* **The gap this closes is the one no other source can observe.** A document
|
|
755
|
+
* the client watches, it hears about already. A file changed on disk, the
|
|
756
|
+
* host's own filesystem watcher reports — and on a browser host, where the
|
|
757
|
+
* workspace lives behind this head, an external change cannot happen at all.
|
|
758
|
+
* What is left, and what nothing outside the server can see, is a document
|
|
759
|
+
* rebuilt because something it DEPENDS ON changed: its file never changed, so
|
|
760
|
+
* a filesystem watcher is silent by construction, and it has no subscriber, so
|
|
761
|
+
* the update channel is silent by design. A consumer displaying data derived
|
|
762
|
+
* from that document — a tree label, a decorator — otherwise goes stale with
|
|
763
|
+
* no signal from any source, and repairs itself the moment someone opens the
|
|
764
|
+
* file to investigate, which is what makes it expensive to diagnose later.
|
|
765
|
+
*
|
|
766
|
+
* Payload-free on purpose: URIs only, so a client re-reads what it displays
|
|
767
|
+
* rather than being handed transfer documents it did not ask for. That is the
|
|
768
|
+
* property the subscription map protects, and it is preserved here by
|
|
769
|
+
* carrying no document rather than by gating the message.
|
|
770
|
+
*
|
|
771
|
+
* Quiet in the common case. Editing a document that an editor has open leaves
|
|
772
|
+
* that URI watched and therefore out of this set, so a build with no
|
|
773
|
+
* dependents produces nothing at all, and workspace initialisation produces
|
|
774
|
+
* nothing because it does not build to this phase. The ceiling is a
|
|
775
|
+
* whole-workspace rebuild at the subscription phase: one message, URIs only.
|
|
776
|
+
*
|
|
777
|
+
* The URI is canonicalised for the same reason the subscription map is keyed
|
|
778
|
+
* that way, and is untested for the same reason as its twin in
|
|
779
|
+
* {@link dispatchDeleteEvents}: the builder reports URIs out of its own
|
|
780
|
+
* store, so a non-canonical one cannot be produced without a fixture
|
|
781
|
+
* asserting a shape the real system never emits.
|
|
782
|
+
*/
|
|
783
|
+
dispatchBuiltEvent(built) {
|
|
784
|
+
const uris = built.map(document => this.canonicalKey(document.uri.toString())).filter(uri => !this.subscriptions.has(uri));
|
|
785
|
+
if (uris.length === 0) {
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
788
|
+
this.tracer.debug(`Emit onDocumentsBuilt: ${uris.length} unwatched document(s)`);
|
|
789
|
+
this.clientProxy.onDocumentsBuilt({ uris });
|
|
737
790
|
}
|
|
738
791
|
/**
|
|
739
792
|
* Subscribe to the universal save event on `HydraniumTextDocuments` so a
|
|
@@ -766,6 +819,55 @@ export class DataServer {
|
|
|
766
819
|
}
|
|
767
820
|
}));
|
|
768
821
|
}
|
|
822
|
+
/**
|
|
823
|
+
* Fan out a deletion for each removed URI, to EVERY client on the connection
|
|
824
|
+
* rather than only to the ones watching that URI.
|
|
825
|
+
*
|
|
826
|
+
* **Deliberately ungated, where {@link dispatchPhaseEvent} and
|
|
827
|
+
* {@link dispatchSaveEvent} are gated.** Those two carry a built document and
|
|
828
|
+
* fire on every build, so the subscription map is what keeps bandwidth
|
|
829
|
+
* proportional to what a client asked for. A deletion is neither: it is one
|
|
830
|
+
* URI, it is rare, and it reports the workspace's STRUCTURE rather than a
|
|
831
|
+
* document's content. Gating it forces any consumer that displays the
|
|
832
|
+
* workspace — a model tree, a file decorator — to learn about disappearances
|
|
833
|
+
* from a filesystem watcher instead, which a client hosted in a browser has
|
|
834
|
+
* no way to run: its workspace lives behind the head. A client that does not
|
|
835
|
+
* care filters on the URI, which costs it a comparison.
|
|
836
|
+
*
|
|
837
|
+
* The precedent is the last-close revert broadcast (see
|
|
838
|
+
* {@link pendingRevertBroadcasts}), where the same judgement was already made
|
|
839
|
+
* in the other direction: a transition that matters enough is delivered
|
|
840
|
+
* without a subscription.
|
|
841
|
+
*
|
|
842
|
+
* Runs from the `DocumentBuilder.onUpdate` listener rather than from a phase
|
|
843
|
+
* listener, which is the only place a deletion is observable: `update`
|
|
844
|
+
* removes the document before deriving the rebuild set, so it is never built.
|
|
845
|
+
* That ordering also puts this notification ahead of the `'rebuilt'` events
|
|
846
|
+
* for the dependents whose references the deletion just broke.
|
|
847
|
+
*
|
|
848
|
+
* The `deleted` list arrives already expanded to concrete document URIs —
|
|
849
|
+
* `deleteDocuments` resolves a directory URI to the documents beneath it — so
|
|
850
|
+
* no caller has to handle a directory here.
|
|
851
|
+
*
|
|
852
|
+
* Per-URI derived state is dropped for the same reason it is dropped
|
|
853
|
+
* anywhere: it describes a document that no longer exists.
|
|
854
|
+
* {@link lastEmittedFingerprint} in particular can outlive its subscriptions
|
|
855
|
+
* through the last-close revert path — left behind, it is adopted as the
|
|
856
|
+
* baseline by the next {@link watchModelDocument} and suppresses the first
|
|
857
|
+
* emit after the file returns with its previous content.
|
|
858
|
+
*
|
|
859
|
+
* The subscription itself SURVIVES: a recreated file resumes delivering to
|
|
860
|
+
* the same watchers with no re-subscription, and a client that answers the
|
|
861
|
+
* deletion by closing releases the watch through `closeModelDocument` anyway.
|
|
862
|
+
*/
|
|
863
|
+
dispatchDeleteEvents(deleted) {
|
|
864
|
+
for (const removed of deleted) {
|
|
865
|
+
const uri = this.canonicalKey(removed.toString());
|
|
866
|
+
this.lastEmittedFingerprint.delete(uri);
|
|
867
|
+
this.pendingRevertBroadcasts.delete(uri);
|
|
868
|
+
this.clientProxy.onDocumentDeleted({ uri });
|
|
869
|
+
}
|
|
870
|
+
}
|
|
769
871
|
/** Fan out a save event for the document's URI, gated by the subscription map. */
|
|
770
872
|
dispatchSaveEvent(event) {
|
|
771
873
|
// The save event arrives under the CLIENT URI the text store keys by (e.g. a
|
|
@@ -874,26 +976,19 @@ export class DataServer {
|
|
|
874
976
|
/**
|
|
875
977
|
* Discriminate the reason for a phase-event-driven update notification.
|
|
876
978
|
* Uses the most recent `DocumentBuilder.onUpdate` snapshot:
|
|
877
|
-
* - URI in the `deleted` list → `'deleted'`
|
|
878
979
|
* - URI in the `changed` list → `'changed'` (the URI was passed to
|
|
879
980
|
* `documentBuilder.update(changed, deleted)`, which spans `didChange`
|
|
880
981
|
* text-document events and programmatic `update([uri], [])` calls).
|
|
881
982
|
* - Otherwise → `'rebuilt'` (cascade re-derivation: this URI was rebuilt
|
|
882
983
|
* because something it depends on changed; its own text wasn't flagged).
|
|
883
984
|
*
|
|
884
|
-
* `'saved'` is NOT emitted
|
|
885
|
-
* `DataClientProtocol.onDocumentSaved` channel
|
|
886
|
-
* unified
|
|
985
|
+
* `'saved'` is NOT emitted here — saves take the dedicated
|
|
986
|
+
* `DataClientProtocol.onDocumentSaved` channel, and adopters wanting a
|
|
987
|
+
* unified stream synthesise it in their bridge layer. A deletion is not a
|
|
988
|
+
* reason at all; see {@link dispatchDeleteEvents}.
|
|
887
989
|
*/
|
|
888
990
|
resolveUpdateReason(uri) {
|
|
889
|
-
|
|
890
|
-
if (last?.deleted.some(deleted => UriUtils.equals(deleted, uri))) {
|
|
891
|
-
return 'deleted';
|
|
892
|
-
}
|
|
893
|
-
if (last?.changed.some(changed => UriUtils.equals(changed, uri))) {
|
|
894
|
-
return 'changed';
|
|
895
|
-
}
|
|
896
|
-
return 'rebuilt';
|
|
991
|
+
return this.lastBuildUpdate?.changed.some(changed => UriUtils.equals(changed, uri)) ? 'changed' : 'rebuilt';
|
|
897
992
|
}
|
|
898
993
|
/**
|
|
899
994
|
* 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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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Project, type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
|
|
10
|
-
import { type DataClientProtocol, type DataServerProtocol, type ProjectsChangedEvent, type TransferDocumentSavedEvent, type TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
|
|
10
|
+
import { type DataClientProtocol, type DataServerProtocol, type ProjectsChangedEvent, type TransferDocumentDeletedEvent, type TransferDocumentSavedEvent, type TransferDocumentsBuiltEvent, type TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
|
|
11
11
|
import { type Harness } from '@hydranium/protocol/testing';
|
|
12
12
|
import { type DuplexConnectionPair } from '@hydranium/protocol/testing/node';
|
|
13
13
|
import type { MessageConnection } from 'vscode-jsonrpc/node';
|
|
@@ -66,6 +66,10 @@ export interface DataServerHarness<TServer, TTransfer extends TransferElement, T
|
|
|
66
66
|
readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
|
|
67
67
|
/** Captured `onDocumentSaved` events. */
|
|
68
68
|
readonly saves: ReadonlyArray<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
|
|
69
|
+
/** Captured `onDocumentDeleted` events. */
|
|
70
|
+
readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
|
|
71
|
+
/** Captured `onDocumentsBuilt` events, one per build that had unwatched documents. */
|
|
72
|
+
readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
|
|
69
73
|
/** Captured `onProjectsChanged` events. */
|
|
70
74
|
readonly projectsChanges: ReadonlyArray<ProjectsChangedEvent<TProject>>;
|
|
71
75
|
/** Dispose the underlying duplex pair. Idempotent. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server-harness.d.ts","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAGJ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAA2B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,4BAA4B,CAC1C,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO;IAElC;;;;OAIG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAChD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAC/B,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,CACnC,SAAQ,OAAO;IACd,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAClF,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,sDAAsD;IACtD,OAAO,IAAI,IAAI,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAClC,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,EAElC,OAAO,EAAE,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,GAChF,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"data-server-harness.d.ts","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAGJ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAA2B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,4BAA4B,CAC1C,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO;IAElC;;;;OAIG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAChD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAC/B,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,CACnC,SAAQ,OAAO;IACd,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAClF,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAChE,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC5D,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,sDAAsD;IACtD,OAAO,IAAI,IAAI,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAClC,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,EAElC,OAAO,EAAE,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,GAChF,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAsC9D"}
|
|
@@ -24,11 +24,11 @@ export function makeDataServerHarness(options) {
|
|
|
24
24
|
const pair = makeDuplexConnectionPair();
|
|
25
25
|
const server = options.server(pair.left);
|
|
26
26
|
// The capture half is the shared client double, not a local copy: the same
|
|
27
|
-
// recording semantics (
|
|
27
|
+
// recording semantics (every channel, an override replacing rather than
|
|
28
28
|
// supplementing) then hold for a client-side suite that stands the double up
|
|
29
29
|
// without a server, so an assertion learnt against one reads the same in the
|
|
30
30
|
// other.
|
|
31
|
-
const { client: localClient, updates: events, saves, projectsChanges } = makeCapturingDataClient(options.client);
|
|
31
|
+
const { client: localClient, updates: events, saves, deletions, builds, projectsChanges } = makeCapturingDataClient(options.client);
|
|
32
32
|
const proxy = createRpcProxy(pair.right, {
|
|
33
33
|
methodNamespace: options.methodNamespace ?? DATA_SERVER_WIRE_PREFIX,
|
|
34
34
|
localTarget: localClient,
|
|
@@ -40,6 +40,8 @@ export function makeDataServerHarness(options) {
|
|
|
40
40
|
pair,
|
|
41
41
|
events,
|
|
42
42
|
saves,
|
|
43
|
+
deletions,
|
|
44
|
+
builds,
|
|
43
45
|
projectsChanges,
|
|
44
46
|
dispose: () => pair.dispose()
|
|
45
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server-harness.js","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAA+D,MAAM,qBAAqB,CAAC;AAClH,OAAO,EACJ,4BAA4B,EAC5B,uBAAuB,
|
|
1
|
+
{"version":3,"file":"data-server-harness.js","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAA+D,MAAM,qBAAqB,CAAC;AAClH,OAAO,EACJ,4BAA4B,EAC5B,uBAAuB,EAQzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAA6B,MAAM,kCAAkC,CAAC;AA+EvG;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAMlC,OAAgF;IAEhF,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,SAAS;IACT,MAAM,EACH,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EACL,SAAS,EACT,MAAM,EACN,eAAe,EACjB,GAAG,uBAAuB,CAAmC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E,MAAM,KAAK,GAAG,cAAc,CACzB,IAAI,CAAC,KAAK,EACV;QACG,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,uBAAuB;QACnE,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,4BAA4B;KAC5C,CACH,CAAC;IAEF,OAAO;QACJ,MAAM;QACN,KAAK;QACL,IAAI;QACJ,MAAM;QACN,KAAK;QACL,SAAS;QACT,MAAM;QACN,eAAe;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;KAC/B,CAAC;AACL,CAAC"}
|
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.39",
|
|
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
|
"hydranium",
|
|
@@ -75,18 +75,18 @@
|
|
|
75
75
|
"watch": "tsc -b -w --preserveWatchOutput"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
|
-
"@hydranium/core": "1.0.0-next.
|
|
79
|
-
"@hydranium/langium": "1.0.0-next.
|
|
80
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
78
|
+
"@hydranium/core": "1.0.0-next.39",
|
|
79
|
+
"@hydranium/langium": "1.0.0-next.39",
|
|
80
|
+
"@hydranium/protocol": "1.0.0-next.39",
|
|
81
81
|
"rimraf": "^5.0.0",
|
|
82
82
|
"typescript": "^5.8.0",
|
|
83
83
|
"vscode-jsonrpc": "9.0.1",
|
|
84
84
|
"vscode-languageserver-textdocument": "^1.0.12"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@hydranium/core": "1.0.0-next.
|
|
88
|
-
"@hydranium/langium": "1.0.0-next.
|
|
89
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
87
|
+
"@hydranium/core": "1.0.0-next.39",
|
|
88
|
+
"@hydranium/langium": "1.0.0-next.39",
|
|
89
|
+
"@hydranium/protocol": "1.0.0-next.39",
|
|
90
90
|
"vscode-jsonrpc": "9.0.1",
|
|
91
91
|
"vscode-languageserver-textdocument": "^1.0.12"
|
|
92
92
|
},
|
package/src/data-server.ts
CHANGED
|
@@ -326,9 +326,11 @@ interface ResolvedDataServerOptions {
|
|
|
326
326
|
* any names supplied via {@link DataServerOptions.additionalMethods}) and
|
|
327
327
|
* builds the {@link DataClientProtocol} notification proxy on the same
|
|
328
328
|
* connection in one {@link createRpcProxy} call (binding `this` as its
|
|
329
|
-
* `localTarget`) under the configured namespace, and subscribes
|
|
330
|
-
* `DocumentBuilder.onDocumentPhase`
|
|
331
|
-
*
|
|
329
|
+
* `localTarget`) under the configured namespace, and subscribes two listeners
|
|
330
|
+
* at the configured phase: a `DocumentBuilder.onDocumentPhase` one dispatching
|
|
331
|
+
* per-document `clientProxy.onDocumentUpdated` for watched URIs, and a
|
|
332
|
+
* `DocumentBuilder.onBuildPhase` one dispatching a single
|
|
333
|
+
* `clientProxy.onDocumentsBuilt` naming the batch's unwatched documents.
|
|
332
334
|
*
|
|
333
335
|
* The data-server requires the full {@link ServerSharedServices}
|
|
334
336
|
* shape — `HydraniumTextDocuments` for client-attributed updates,
|
|
@@ -381,10 +383,12 @@ export class DataServer<
|
|
|
381
383
|
/**
|
|
382
384
|
* Snapshot of the most recent `DocumentBuilder.onUpdate` event. Drives
|
|
383
385
|
* `reason` discrimination on outbound `onDocumentUpdated` notifications:
|
|
384
|
-
* a URI in the `changed` list emits `'changed'`,
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
386
|
+
* a URI in the `changed` list emits `'changed'`, otherwise `'rebuilt'`
|
|
387
|
+
* (cascade rebuild from a dependent URI's change). The same mechanism
|
|
388
|
+
* `AstDocumentManager.onUpdate` uses on the LSP side, so reason fidelity
|
|
389
|
+
* stays consistent between heads. The `deleted` half is read by
|
|
390
|
+
* {@link dispatchDeleteEvents} rather than by the reason discrimination,
|
|
391
|
+
* a deletion travelling on its own channel.
|
|
388
392
|
*/
|
|
389
393
|
protected lastBuildUpdate?: { changed: readonly URI[]; deleted: readonly URI[] };
|
|
390
394
|
/**
|
|
@@ -499,6 +503,7 @@ export class DataServer<
|
|
|
499
503
|
this.disposables.push(
|
|
500
504
|
this.services.workspace.DocumentBuilder.onUpdate((changed, deleted) => {
|
|
501
505
|
this.lastBuildUpdate = { changed, deleted };
|
|
506
|
+
this.dispatchDeleteEvents(deleted);
|
|
502
507
|
})
|
|
503
508
|
);
|
|
504
509
|
this.subscribeToDocumentBuilder();
|
|
@@ -996,6 +1001,57 @@ export class DataServer<
|
|
|
996
1001
|
this.dispatchPhaseEvent(document, cancelToken)
|
|
997
1002
|
)
|
|
998
1003
|
);
|
|
1004
|
+
// The BUILD-phase hook, not the per-document one: this notification is one
|
|
1005
|
+
// message per build rather than one per document, and Langium hands the
|
|
1006
|
+
// whole batch over here. It also does not fire for a cancelled build,
|
|
1007
|
+
// which is what the per-document dispatch has to check by hand.
|
|
1008
|
+
this.disposables.push(
|
|
1009
|
+
this.services.workspace.DocumentBuilder.onBuildPhase(this.options.subscriptionPhase, built => this.dispatchBuiltEvent(built))
|
|
1010
|
+
);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
/**
|
|
1014
|
+
* Report the documents that reached {@link DataServerOptions.subscriptionPhase}
|
|
1015
|
+
* and that NOBODY on this
|
|
1016
|
+
* connection is watching — the ones a client was not told about through
|
|
1017
|
+
* {@link dispatchPhaseEvent}, which is gated per URI.
|
|
1018
|
+
*
|
|
1019
|
+
* **The gap this closes is the one no other source can observe.** A document
|
|
1020
|
+
* the client watches, it hears about already. A file changed on disk, the
|
|
1021
|
+
* host's own filesystem watcher reports — and on a browser host, where the
|
|
1022
|
+
* workspace lives behind this head, an external change cannot happen at all.
|
|
1023
|
+
* What is left, and what nothing outside the server can see, is a document
|
|
1024
|
+
* rebuilt because something it DEPENDS ON changed: its file never changed, so
|
|
1025
|
+
* a filesystem watcher is silent by construction, and it has no subscriber, so
|
|
1026
|
+
* the update channel is silent by design. A consumer displaying data derived
|
|
1027
|
+
* from that document — a tree label, a decorator — otherwise goes stale with
|
|
1028
|
+
* no signal from any source, and repairs itself the moment someone opens the
|
|
1029
|
+
* file to investigate, which is what makes it expensive to diagnose later.
|
|
1030
|
+
*
|
|
1031
|
+
* Payload-free on purpose: URIs only, so a client re-reads what it displays
|
|
1032
|
+
* rather than being handed transfer documents it did not ask for. That is the
|
|
1033
|
+
* property the subscription map protects, and it is preserved here by
|
|
1034
|
+
* carrying no document rather than by gating the message.
|
|
1035
|
+
*
|
|
1036
|
+
* Quiet in the common case. Editing a document that an editor has open leaves
|
|
1037
|
+
* that URI watched and therefore out of this set, so a build with no
|
|
1038
|
+
* dependents produces nothing at all, and workspace initialisation produces
|
|
1039
|
+
* nothing because it does not build to this phase. The ceiling is a
|
|
1040
|
+
* whole-workspace rebuild at the subscription phase: one message, URIs only.
|
|
1041
|
+
*
|
|
1042
|
+
* The URI is canonicalised for the same reason the subscription map is keyed
|
|
1043
|
+
* that way, and is untested for the same reason as its twin in
|
|
1044
|
+
* {@link dispatchDeleteEvents}: the builder reports URIs out of its own
|
|
1045
|
+
* store, so a non-canonical one cannot be produced without a fixture
|
|
1046
|
+
* asserting a shape the real system never emits.
|
|
1047
|
+
*/
|
|
1048
|
+
protected dispatchBuiltEvent(built: readonly LangiumDocument[]): void {
|
|
1049
|
+
const uris = built.map(document => this.canonicalKey(document.uri.toString())).filter(uri => !this.subscriptions.has(uri));
|
|
1050
|
+
if (uris.length === 0) {
|
|
1051
|
+
return;
|
|
1052
|
+
}
|
|
1053
|
+
this.tracer.debug(`Emit onDocumentsBuilt: ${uris.length} unwatched document(s)`);
|
|
1054
|
+
this.clientProxy.onDocumentsBuilt({ uris });
|
|
999
1055
|
}
|
|
1000
1056
|
|
|
1001
1057
|
/**
|
|
@@ -1033,6 +1089,56 @@ export class DataServer<
|
|
|
1033
1089
|
);
|
|
1034
1090
|
}
|
|
1035
1091
|
|
|
1092
|
+
/**
|
|
1093
|
+
* Fan out a deletion for each removed URI, to EVERY client on the connection
|
|
1094
|
+
* rather than only to the ones watching that URI.
|
|
1095
|
+
*
|
|
1096
|
+
* **Deliberately ungated, where {@link dispatchPhaseEvent} and
|
|
1097
|
+
* {@link dispatchSaveEvent} are gated.** Those two carry a built document and
|
|
1098
|
+
* fire on every build, so the subscription map is what keeps bandwidth
|
|
1099
|
+
* proportional to what a client asked for. A deletion is neither: it is one
|
|
1100
|
+
* URI, it is rare, and it reports the workspace's STRUCTURE rather than a
|
|
1101
|
+
* document's content. Gating it forces any consumer that displays the
|
|
1102
|
+
* workspace — a model tree, a file decorator — to learn about disappearances
|
|
1103
|
+
* from a filesystem watcher instead, which a client hosted in a browser has
|
|
1104
|
+
* no way to run: its workspace lives behind the head. A client that does not
|
|
1105
|
+
* care filters on the URI, which costs it a comparison.
|
|
1106
|
+
*
|
|
1107
|
+
* The precedent is the last-close revert broadcast (see
|
|
1108
|
+
* {@link pendingRevertBroadcasts}), where the same judgement was already made
|
|
1109
|
+
* in the other direction: a transition that matters enough is delivered
|
|
1110
|
+
* without a subscription.
|
|
1111
|
+
*
|
|
1112
|
+
* Runs from the `DocumentBuilder.onUpdate` listener rather than from a phase
|
|
1113
|
+
* listener, which is the only place a deletion is observable: `update`
|
|
1114
|
+
* removes the document before deriving the rebuild set, so it is never built.
|
|
1115
|
+
* That ordering also puts this notification ahead of the `'rebuilt'` events
|
|
1116
|
+
* for the dependents whose references the deletion just broke.
|
|
1117
|
+
*
|
|
1118
|
+
* The `deleted` list arrives already expanded to concrete document URIs —
|
|
1119
|
+
* `deleteDocuments` resolves a directory URI to the documents beneath it — so
|
|
1120
|
+
* no caller has to handle a directory here.
|
|
1121
|
+
*
|
|
1122
|
+
* Per-URI derived state is dropped for the same reason it is dropped
|
|
1123
|
+
* anywhere: it describes a document that no longer exists.
|
|
1124
|
+
* {@link lastEmittedFingerprint} in particular can outlive its subscriptions
|
|
1125
|
+
* through the last-close revert path — left behind, it is adopted as the
|
|
1126
|
+
* baseline by the next {@link watchModelDocument} and suppresses the first
|
|
1127
|
+
* emit after the file returns with its previous content.
|
|
1128
|
+
*
|
|
1129
|
+
* The subscription itself SURVIVES: a recreated file resumes delivering to
|
|
1130
|
+
* the same watchers with no re-subscription, and a client that answers the
|
|
1131
|
+
* deletion by closing releases the watch through `closeModelDocument` anyway.
|
|
1132
|
+
*/
|
|
1133
|
+
protected dispatchDeleteEvents(deleted: readonly URI[]): void {
|
|
1134
|
+
for (const removed of deleted) {
|
|
1135
|
+
const uri = this.canonicalKey(removed.toString());
|
|
1136
|
+
this.lastEmittedFingerprint.delete(uri);
|
|
1137
|
+
this.pendingRevertBroadcasts.delete(uri);
|
|
1138
|
+
this.clientProxy.onDocumentDeleted({ uri });
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1036
1142
|
/** Fan out a save event for the document's URI, gated by the subscription map. */
|
|
1037
1143
|
protected dispatchSaveEvent(event: ClientTextDocumentChangeEvent<TextDocument>): void {
|
|
1038
1144
|
// The save event arrives under the CLIENT URI the text store keys by (e.g. a
|
|
@@ -1151,26 +1257,19 @@ export class DataServer<
|
|
|
1151
1257
|
/**
|
|
1152
1258
|
* Discriminate the reason for a phase-event-driven update notification.
|
|
1153
1259
|
* Uses the most recent `DocumentBuilder.onUpdate` snapshot:
|
|
1154
|
-
* - URI in the `deleted` list → `'deleted'`
|
|
1155
1260
|
* - URI in the `changed` list → `'changed'` (the URI was passed to
|
|
1156
1261
|
* `documentBuilder.update(changed, deleted)`, which spans `didChange`
|
|
1157
1262
|
* text-document events and programmatic `update([uri], [])` calls).
|
|
1158
1263
|
* - Otherwise → `'rebuilt'` (cascade re-derivation: this URI was rebuilt
|
|
1159
1264
|
* because something it depends on changed; its own text wasn't flagged).
|
|
1160
1265
|
*
|
|
1161
|
-
* `'saved'` is NOT emitted
|
|
1162
|
-
* `DataClientProtocol.onDocumentSaved` channel
|
|
1163
|
-
* unified
|
|
1266
|
+
* `'saved'` is NOT emitted here — saves take the dedicated
|
|
1267
|
+
* `DataClientProtocol.onDocumentSaved` channel, and adopters wanting a
|
|
1268
|
+
* unified stream synthesise it in their bridge layer. A deletion is not a
|
|
1269
|
+
* reason at all; see {@link dispatchDeleteEvents}.
|
|
1164
1270
|
*/
|
|
1165
1271
|
protected resolveUpdateReason(uri: URI): TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>['reason'] {
|
|
1166
|
-
|
|
1167
|
-
if (last?.deleted.some(deleted => UriUtils.equals(deleted, uri))) {
|
|
1168
|
-
return 'deleted';
|
|
1169
|
-
}
|
|
1170
|
-
if (last?.changed.some(changed => UriUtils.equals(changed, uri))) {
|
|
1171
|
-
return 'changed';
|
|
1172
|
-
}
|
|
1173
|
-
return 'rebuilt';
|
|
1272
|
+
return this.lastBuildUpdate?.changed.some(changed => UriUtils.equals(changed, uri)) ? 'changed' : 'rebuilt';
|
|
1174
1273
|
}
|
|
1175
1274
|
|
|
1176
1275
|
/**
|
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
type DataClientProtocol,
|
|
15
15
|
type DataServerProtocol,
|
|
16
16
|
type ProjectsChangedEvent,
|
|
17
|
+
type TransferDocumentDeletedEvent,
|
|
17
18
|
type TransferDocumentSavedEvent,
|
|
19
|
+
type TransferDocumentsBuiltEvent,
|
|
18
20
|
type TransferDocumentUpdatedEvent
|
|
19
21
|
} from '@hydranium/protocol/data';
|
|
20
22
|
import { type Harness, makeCapturingDataClient } from '@hydranium/protocol/testing';
|
|
@@ -87,6 +89,10 @@ export interface DataServerHarness<
|
|
|
87
89
|
readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
|
|
88
90
|
/** Captured `onDocumentSaved` events. */
|
|
89
91
|
readonly saves: ReadonlyArray<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
|
|
92
|
+
/** Captured `onDocumentDeleted` events. */
|
|
93
|
+
readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
|
|
94
|
+
/** Captured `onDocumentsBuilt` events, one per build that had unwatched documents. */
|
|
95
|
+
readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
|
|
90
96
|
/** Captured `onProjectsChanged` events. */
|
|
91
97
|
readonly projectsChanges: ReadonlyArray<ProjectsChangedEvent<TProject>>;
|
|
92
98
|
/** Dispose the underlying duplex pair. Idempotent. */
|
|
@@ -115,7 +121,7 @@ export function makeDataServerHarness<
|
|
|
115
121
|
const server = options.server(pair.left);
|
|
116
122
|
|
|
117
123
|
// The capture half is the shared client double, not a local copy: the same
|
|
118
|
-
// recording semantics (
|
|
124
|
+
// recording semantics (every channel, an override replacing rather than
|
|
119
125
|
// supplementing) then hold for a client-side suite that stands the double up
|
|
120
126
|
// without a server, so an assertion learnt against one reads the same in the
|
|
121
127
|
// other.
|
|
@@ -123,6 +129,8 @@ export function makeDataServerHarness<
|
|
|
123
129
|
client: localClient,
|
|
124
130
|
updates: events,
|
|
125
131
|
saves,
|
|
132
|
+
deletions,
|
|
133
|
+
builds,
|
|
126
134
|
projectsChanges
|
|
127
135
|
} = makeCapturingDataClient<TTransfer, TDiagnostic, TProject>(options.client);
|
|
128
136
|
|
|
@@ -141,6 +149,8 @@ export function makeDataServerHarness<
|
|
|
141
149
|
pair,
|
|
142
150
|
events,
|
|
143
151
|
saves,
|
|
152
|
+
deletions,
|
|
153
|
+
builds,
|
|
144
154
|
projectsChanges,
|
|
145
155
|
dispose: () => pair.dispose()
|
|
146
156
|
};
|