@hydranium/glsp-server 1.0.0-next.117 → 1.0.0-next.123

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.
Files changed (39) hide show
  1. package/lib/command/hydranium-glsp-recording-command.d.ts +1 -1
  2. package/lib/command/hydranium-glsp-recording-command.js +1 -1
  3. package/lib/messages/index.d.ts +1 -1
  4. package/lib/messages/index.d.ts.map +1 -1
  5. package/lib/messages/index.js +1 -1
  6. package/lib/messages/index.js.map +1 -1
  7. package/lib/state/abstract-hydranium-glsp-state.d.ts +52 -8
  8. package/lib/state/abstract-hydranium-glsp-state.d.ts.map +1 -1
  9. package/lib/state/abstract-hydranium-glsp-state.js +77 -5
  10. package/lib/state/abstract-hydranium-glsp-state.js.map +1 -1
  11. package/lib/state/full-text-hydranium-glsp-state.d.ts +4 -4
  12. package/lib/state/full-text-hydranium-glsp-state.d.ts.map +1 -1
  13. package/lib/state/full-text-hydranium-glsp-state.js +5 -10
  14. package/lib/state/full-text-hydranium-glsp-state.js.map +1 -1
  15. package/lib/state/reconcile-source-model-write.d.ts +2 -2
  16. package/lib/state/reconcile-source-model-write.d.ts.map +1 -1
  17. package/lib/state/reconcile-source-model-write.js +1 -1
  18. package/lib/state/reconcile-source-model-write.js.map +1 -1
  19. package/lib/state/reconciling-multi-document-glsp-state.d.ts +54 -74
  20. package/lib/state/reconciling-multi-document-glsp-state.d.ts.map +1 -1
  21. package/lib/state/reconciling-multi-document-glsp-state.js +77 -102
  22. package/lib/state/reconciling-multi-document-glsp-state.js.map +1 -1
  23. package/lib/state/reconciling-transfer-hydranium-glsp-state.d.ts +16 -15
  24. package/lib/state/reconciling-transfer-hydranium-glsp-state.d.ts.map +1 -1
  25. package/lib/state/reconciling-transfer-hydranium-glsp-state.js +21 -25
  26. package/lib/state/reconciling-transfer-hydranium-glsp-state.js.map +1 -1
  27. package/lib/storage/hydranium-glsp-storage.d.ts +103 -26
  28. package/lib/storage/hydranium-glsp-storage.d.ts.map +1 -1
  29. package/lib/storage/hydranium-glsp-storage.js +199 -32
  30. package/lib/storage/hydranium-glsp-storage.js.map +1 -1
  31. package/package.json +7 -7
  32. package/src/command/hydranium-glsp-recording-command.ts +1 -1
  33. package/src/messages/index.ts +6 -1
  34. package/src/state/abstract-hydranium-glsp-state.ts +85 -8
  35. package/src/state/full-text-hydranium-glsp-state.ts +5 -10
  36. package/src/state/reconcile-source-model-write.ts +3 -3
  37. package/src/state/reconciling-multi-document-glsp-state.ts +78 -103
  38. package/src/state/reconciling-transfer-hydranium-glsp-state.ts +21 -25
  39. package/src/storage/hydranium-glsp-storage.ts +236 -33
@@ -45,7 +45,7 @@ export type HydraniumGlspRecordingState<TSourceModel extends AnyObject> = Abstra
45
45
  * `modelState.updateSourceModel(newModel)` with the model only. The
46
46
  * framework lift overrides `postChange` so it also threads the snapshot
47
47
  * version taken at command start — letting the downstream
48
- * `ModelService.update` opt into the `ConflictError` gate. Undo / redo
48
+ * session `update` opt into the `ConflictError` gate. Undo / redo
49
49
  * postChange calls pass `'anything'`: the user authored against the recorded
50
50
  * patch, not against a specific server version, so re-applying it should
51
51
  * succeed regardless of intervening edits. The recorded patch itself encodes
@@ -31,7 +31,7 @@ import { JsonRecordingCommand } from '@eclipse-glsp/server';
31
31
  * `modelState.updateSourceModel(newModel)` with the model only. The
32
32
  * framework lift overrides `postChange` so it also threads the snapshot
33
33
  * version taken at command start — letting the downstream
34
- * `ModelService.update` opt into the `ConflictError` gate. Undo / redo
34
+ * session `update` opt into the `ConflictError` gate. Undo / redo
35
35
  * postChange calls pass `'anything'`: the user authored against the recorded
36
36
  * patch, not against a specific server version, so re-applying it should
37
37
  * succeed regardless of intervening edits. The recorded patch itself encodes
@@ -20,5 +20,5 @@
20
20
  * The barrel is also how an adopter rendering their own diagram chrome
21
21
  * discovers the codes exist.
22
22
  */
23
- export { DIAGRAM_READONLY_PARSE_ERROR, SAVE_TARGET_UNKNOWN, SOURCE_URI_MISSING } from '../storage/hydranium-glsp-storage.js';
23
+ export { DIAGRAM_READONLY_PARSE_ERROR, DIAGRAM_SESSION_REFUSED, SAVE_TARGET_UNKNOWN, SOURCE_URI_MISSING } from '../storage/hydranium-glsp-storage.js';
24
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACJ,4BAA4B,EAC5B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EACpB,MAAM,sCAAsC,CAAC"}
@@ -20,5 +20,5 @@
20
20
  * The barrel is also how an adopter rendering their own diagram chrome
21
21
  * discovers the codes exist.
22
22
  */
23
- export { DIAGRAM_READONLY_PARSE_ERROR, SAVE_TARGET_UNKNOWN, SOURCE_URI_MISSING } from '../storage/hydranium-glsp-storage.js';
23
+ export { DIAGRAM_READONLY_PARSE_ERROR, DIAGRAM_SESSION_REFUSED, SAVE_TARGET_UNKNOWN, SOURCE_URI_MISSING } from '../storage/hydranium-glsp-storage.js';
24
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACJ,4BAA4B,EAC5B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EACpB,MAAM,sCAAsC,CAAC"}
@@ -9,7 +9,7 @@
9
9
  import { DefaultModelState, type MaybePromise } from '@eclipse-glsp/server';
10
10
  import { Emitter, type Event } from 'vscode-jsonrpc';
11
11
  import { type AstNode, DocumentState } from '@hydranium/langium';
12
- import { type HydraniumScopeProvider, type LanguageTarget, type NameProvider, type ReferenceCandidateProvider, type ServerLanguageServices, type ServerSharedServices } from '@hydranium/core';
12
+ import { type ClientSession, type HydraniumScopeProvider, type LanguageTarget, type NameProvider, type ReferenceCandidateProvider, type ServerLanguageServices, type ServerSharedServices } from '@hydranium/core';
13
13
  import { type BasedOn, type SnapshotVersion, type ConflictResolver, type Logger, type Tracer } from '@hydranium/protocol';
14
14
  import { type HydraniumGlspIndex } from './hydranium-glsp-index.js';
15
15
  import { ModelReadyTimeoutError } from './model-ready-timeout-error.js';
@@ -71,6 +71,25 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
71
71
  protected readonly baseTracer: Tracer;
72
72
  /** Narrows {@link DefaultModelState.index} to the framework-extended index type. */
73
73
  readonly index: HydraniumGlspIndex;
74
+ /**
75
+ * The client session this diagram works as, registered under `clientId` by
76
+ * the source-model storage and ended with the GLSP client session.
77
+ * `undefined` for GLSP's placeholder client, and when the id was held by
78
+ * another participant, in which case the diagram does not load.
79
+ *
80
+ * Every write of the diagram goes through this session, which writes only a
81
+ * document it has open and opens nothing. A one-shot write to a document
82
+ * outside the write set goes through
83
+ * {@link ClientSession.withOpen}, and a document the diagram brings into
84
+ * existence through {@link ClientSession.create}.
85
+ */
86
+ modelSession?: ClientSession<AstNode>;
87
+ /**
88
+ * {@link modelSession}, or a throw without one: the diagram never loaded or
89
+ * has ended. Looking `clientId` up through `ModelService.getSession` instead
90
+ * would write as whichever participant holds that id.
91
+ */
92
+ protected requireModelSession(): ClientSession<AstNode>;
74
93
  protected _sourceUri: string;
75
94
  protected _sourceRoot: TRoot;
76
95
  protected _tracer?: Tracer;
@@ -174,8 +193,8 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
174
193
  * until the next one, then re-read from the document store.
175
194
  *
176
195
  * Threaded by `HydraniumGlspRecordingCommand` into
177
- * {@link updateSourceModel} so the downstream `ModelService.update` /
178
- * `.save` call gates against what the command was authored on. See
196
+ * {@link updateSourceModel} so the downstream session `update` / `save`
197
+ * gates against what the command was authored on. See
179
198
  * `@hydranium/protocol#ConflictError` for the detection contract.
180
199
  *
181
200
  * **This, not a number read at write time, is what a write must be gated
@@ -185,7 +204,9 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
185
204
  get basedOn(): SnapshotVersion;
186
205
  /**
187
206
  * Text-document version of {@link basedOn}. Mirrors the server-side
188
- * `TextDocuments.version(uri)` counter as of the snapshot.
207
+ * `TextDocuments.version(uri)` counter as of the snapshot, or is
208
+ * `NO_MATCHING_VERSION` when the store's text could not be tied to the
209
+ * root (see {@link readSnapshotVersion}).
189
210
  *
190
211
  * Falls back to `0` when the document is absent from `LangiumDocuments`
191
212
  * when the snapshot is taken — the same observable state callers see for a
@@ -263,8 +284,19 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
263
284
  * answers with the version the write is about to be compared against, so the
264
285
  * gate passes unconditionally.
265
286
  *
266
- * Falls back to v0 for a URI the store does not know, matching what
287
+ * Falls back to v0 for a URI neither store knows, matching what
267
288
  * {@link version} reports for a document that was never opened.
289
+ *
290
+ * **The version of the text store, which the gate compares against.**
291
+ * When the store holds the text the root was parsed from, that is its
292
+ * version, even while the built document still carries an older number.
293
+ * When the store holds other text, `NO_MATCHING_VERSION`, so the write
294
+ * conflicts instead of overwriting text the root never saw: the
295
+ * reconciling states reconcile it, `FullTextHydraniumGlspState` throws the
296
+ * `ConflictError`. When the root keeps no syntax tree to read its text
297
+ * from, the built document's text stands in for it, unless the built
298
+ * document IS the store's, whose text says nothing about what was parsed;
299
+ * that also gets `NO_MATCHING_VERSION`.
268
300
  */
269
301
  protected readSnapshotVersion(uri: string): SnapshotVersion;
270
302
  /** Re-take every registered secondary's snapshot version from the document store. */
@@ -277,6 +309,18 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
277
309
  * handlers) must see the root the freshly built document carries.
278
310
  */
279
311
  protected refreshSourceRoot(): void;
312
+ /**
313
+ * The root that `uri`'s text parses to (the text store's, or the built
314
+ * document's when the store holds none), read once the document has
315
+ * validated; `undefined` when it cannot be read.
316
+ *
317
+ * **Parsed afresh, never the built root.** Operation handlers edit the
318
+ * built root in place, so until a rebuild replaces it, it already holds
319
+ * the edit being reconciled, and replaying the edit onto it applies it
320
+ * twice. The root is parsed, not linked: an encoder hook reading a
321
+ * reference's `ref` sees `undefined` on it.
322
+ */
323
+ protected readCurrentRoot(uri: string): Promise<AstNode | undefined>;
280
324
  /**
281
325
  * Wait until the captured document reaches `state`, then run
282
326
  * {@link onReadyRefreshed} so consumers see a fresh AST. Wraps the
@@ -335,9 +379,9 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
335
379
  * intersection at the recording-command call site.
336
380
  *
337
381
  * `basedOn` is the snapshot version taken at command start by
338
- * `HydraniumGlspRecordingCommand.execute`. Adopters that route through
339
- * `ModelService.update` / `.save` forward it as the args' `basedOn` field;
340
- * adopters whose write path doesn't go through `ModelService` ignore it.
382
+ * `HydraniumGlspRecordingCommand.execute`. Adopters that write through the
383
+ * diagram's session forward it as the args' `basedOn` field; adopters whose
384
+ * write path doesn't go through the session ignore it.
341
385
  * `'anything'` when the writer is not the recording command (an external
342
386
  * storage refresh, an undo replaying a recorded patch), which is a write
343
387
  * authored against no particular server version.
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-hydranium-glsp-state.d.ts","sourceRoot":"","sources":["../../src/state/abstract-hydranium-glsp-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-hydranium-glsp-state.d.ts","sourceRoot":"","sources":["../../src/state/abstract-hydranium-glsp-state.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ import { DefaultModelState, SOURCE_URI_ARG } from '@eclipse-glsp/server';
20
20
  import { Emitter } from 'vscode-jsonrpc';
21
21
  import { inject, injectable, optional } from 'inversify';
22
22
  import { DocumentState, URI } from '@hydranium/langium';
23
- import { asSnapshotVersion } from '@hydranium/protocol';
23
+ import { asSnapshotVersion, NO_MATCHING_VERSION } from '@hydranium/protocol';
24
24
  import { HydraniumTypes } from './hydranium-shared-core-services.js';
25
25
  import { ModelReadyTimeoutError } from './model-ready-timeout-error.js';
26
26
  /**
@@ -80,6 +80,30 @@ let AbstractHydraniumGlspState = class AbstractHydraniumGlspState extends Defaul
80
80
  * getters fall back to it before then, so logging is never `undefined`.
81
81
  */
82
82
  baseTracer;
83
+ /**
84
+ * The client session this diagram works as, registered under `clientId` by
85
+ * the source-model storage and ended with the GLSP client session.
86
+ * `undefined` for GLSP's placeholder client, and when the id was held by
87
+ * another participant, in which case the diagram does not load.
88
+ *
89
+ * Every write of the diagram goes through this session, which writes only a
90
+ * document it has open and opens nothing. A one-shot write to a document
91
+ * outside the write set goes through
92
+ * {@link ClientSession.withOpen}, and a document the diagram brings into
93
+ * existence through {@link ClientSession.create}.
94
+ */
95
+ modelSession;
96
+ /**
97
+ * {@link modelSession}, or a throw without one: the diagram never loaded or
98
+ * has ended. Looking `clientId` up through `ModelService.getSession` instead
99
+ * would write as whichever participant holds that id.
100
+ */
101
+ requireModelSession() {
102
+ if (!this.modelSession) {
103
+ throw new Error(`No client session is registered for ${this.clientId}; the diagram cannot write`);
104
+ }
105
+ return this.modelSession;
106
+ }
83
107
  _sourceUri;
84
108
  _sourceRoot;
85
109
  _tracer;
@@ -223,8 +247,8 @@ let AbstractHydraniumGlspState = class AbstractHydraniumGlspState extends Defaul
223
247
  * until the next one, then re-read from the document store.
224
248
  *
225
249
  * Threaded by `HydraniumGlspRecordingCommand` into
226
- * {@link updateSourceModel} so the downstream `ModelService.update` /
227
- * `.save` call gates against what the command was authored on. See
250
+ * {@link updateSourceModel} so the downstream session `update` / `save`
251
+ * gates against what the command was authored on. See
228
252
  * `@hydranium/protocol#ConflictError` for the detection contract.
229
253
  *
230
254
  * **This, not a number read at write time, is what a write must be gated
@@ -236,7 +260,9 @@ let AbstractHydraniumGlspState = class AbstractHydraniumGlspState extends Defaul
236
260
  }
237
261
  /**
238
262
  * Text-document version of {@link basedOn}. Mirrors the server-side
239
- * `TextDocuments.version(uri)` counter as of the snapshot.
263
+ * `TextDocuments.version(uri)` counter as of the snapshot, or is
264
+ * `NO_MATCHING_VERSION` when the store's text could not be tied to the
265
+ * root (see {@link readSnapshotVersion}).
240
266
  *
241
267
  * Falls back to `0` when the document is absent from `LangiumDocuments`
242
268
  * when the snapshot is taken — the same observable state callers see for a
@@ -343,10 +369,35 @@ let AbstractHydraniumGlspState = class AbstractHydraniumGlspState extends Defaul
343
369
  * answers with the version the write is about to be compared against, so the
344
370
  * gate passes unconditionally.
345
371
  *
346
- * Falls back to v0 for a URI the store does not know, matching what
372
+ * Falls back to v0 for a URI neither store knows, matching what
347
373
  * {@link version} reports for a document that was never opened.
374
+ *
375
+ * **The version of the text store, which the gate compares against.**
376
+ * When the store holds the text the root was parsed from, that is its
377
+ * version, even while the built document still carries an older number.
378
+ * When the store holds other text, `NO_MATCHING_VERSION`, so the write
379
+ * conflicts instead of overwriting text the root never saw: the
380
+ * reconciling states reconcile it, `FullTextHydraniumGlspState` throws the
381
+ * `ConflictError`. When the root keeps no syntax tree to read its text
382
+ * from, the built document's text stands in for it, unless the built
383
+ * document IS the store's, whose text says nothing about what was parsed;
384
+ * that also gets `NO_MATCHING_VERSION`.
348
385
  */
349
386
  readSnapshotVersion(uri) {
387
+ const document = this.sharedServices.model.ModelService.getDocument(uri);
388
+ const stored = document && this.sharedServices.workspace.TextDocuments.get(uri);
389
+ if (stored) {
390
+ const parsed = document.parseResult.value.$cstNode?.root.fullText;
391
+ if (parsed !== undefined) {
392
+ return parsed === stored.getText() ? asSnapshotVersion(stored.version) : NO_MATCHING_VERSION;
393
+ }
394
+ if (document.textDocument === stored) {
395
+ return NO_MATCHING_VERSION;
396
+ }
397
+ if (stored.version !== document.textDocument.version && stored.getText() === document.textDocument.getText()) {
398
+ return asSnapshotVersion(stored.version);
399
+ }
400
+ }
350
401
  return this.sharedServices.model.ModelService.snapshot(uri)?.version ?? asSnapshotVersion(0);
351
402
  }
352
403
  /** Re-take every registered secondary's snapshot version from the document store. */
@@ -376,6 +427,27 @@ let AbstractHydraniumGlspState = class AbstractHydraniumGlspState extends Defaul
376
427
  this.setSourceRoot(this._sourceUri, root);
377
428
  }
378
429
  }
430
+ /**
431
+ * The root that `uri`'s text parses to (the text store's, or the built
432
+ * document's when the store holds none), read once the document has
433
+ * validated; `undefined` when it cannot be read.
434
+ *
435
+ * **Parsed afresh, never the built root.** Operation handlers edit the
436
+ * built root in place, so until a rebuild replaces it, it already holds
437
+ * the edit being reconciled, and replaying the edit onto it applies it
438
+ * twice. The root is parsed, not linked: an encoder hook reading a
439
+ * reference's `ref` sees `undefined` on it.
440
+ */
441
+ async readCurrentRoot(uri) {
442
+ const modelService = this.sharedServices.model.ModelService;
443
+ if (!(await modelService.validated(uri).catch(() => undefined))) {
444
+ return undefined;
445
+ }
446
+ const text = this.sharedServices.workspace.TextDocuments.get(uri)?.getText() ?? modelService.getDocument(uri)?.textDocument.getText();
447
+ return text === undefined
448
+ ? undefined
449
+ : this.sharedServices.workspace.LangiumDocumentFactory.fromString(text, URI.parse(uri)).parseResult.value;
450
+ }
379
451
  /**
380
452
  * Wait until the captured document reaches `state`, then run
381
453
  * {@link onReadyRefreshed} so consumers see a fresh AST. Wraps the
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-hydranium-glsp-state.js","sourceRoot":"","sources":["../../src/state/abstract-hydranium-glsp-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-hydranium-glsp-state.js","sourceRoot":"","sources":["../../src/state/abstract-hydranium-glsp-state.ts"],"names":[],"mappings":"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"}
@@ -27,11 +27,11 @@ export interface FullTextSourceModel {
27
27
  * `serializer.Serializer` reached via `sharedServices.ServiceRegistry`
28
28
  * (so multi-grammar workspaces route to the right serializer). `MaybePromise`
29
29
  * because serialization may be async; the sync fast path is preserved.
30
- * - {@link updateSourceModel} pushes the text back through
31
- * `ModelService.update` (which accepts a raw text payload) and captures the
32
- * re-parsed root, gated on the caller's `basedOn`.
30
+ * - {@link updateSourceModel} pushes the text back through the diagram's
31
+ * session (`update` accepts a raw text payload) and captures the re-parsed
32
+ * root, gated on the caller's `basedOn`; it throws without a session.
33
33
  *
34
- * No `baseline` / conflict reconcile: a whole-document model has exactly one
34
+ * No `base` / conflict reconcile: a whole-document model has exactly one
35
35
  * field, so every concurrent edit is a same-field collision and undo / redo
36
36
  * degrade to drop-on-divergence. Adopters that need field-level undo use
37
37
  * `ReconcilingTransferHydraniumGlspState` instead.
@@ -1 +1 @@
1
- {"version":3,"file":"full-text-hydranium-glsp-state.d.ts","sourceRoot":"","sources":["../../src/state/full-text-hydranium-glsp-state.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IACjC,IAAI,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,0BAA0B,CAAC,KAAK,SAAS,OAAO,CAC1D,SAAQ,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,CAC7D,YAAW,cAAc,CAAC,mBAAmB,CAAC;IAE9C,IAAI,WAAW,IAAI,YAAY,CAAC,mBAAmB,CAAC,CAInD;IAEK,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,GAAE,OAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CASrG"}
1
+ {"version":3,"file":"full-text-hydranium-glsp-state.d.ts","sourceRoot":"","sources":["../../src/state/full-text-hydranium-glsp-state.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IACjC,IAAI,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,0BAA0B,CAAC,KAAK,SAAS,OAAO,CAC1D,SAAQ,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,CAC7D,YAAW,cAAc,CAAC,mBAAmB,CAAC;IAE9C,IAAI,WAAW,IAAI,YAAY,CAAC,mBAAmB,CAAC,CAInD;IAEK,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,GAAE,OAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAIrG"}
@@ -29,11 +29,11 @@ import { AbstractHydraniumGlspState } from './abstract-hydranium-glsp-state.js';
29
29
  * `serializer.Serializer` reached via `sharedServices.ServiceRegistry`
30
30
  * (so multi-grammar workspaces route to the right serializer). `MaybePromise`
31
31
  * because serialization may be async; the sync fast path is preserved.
32
- * - {@link updateSourceModel} pushes the text back through
33
- * `ModelService.update` (which accepts a raw text payload) and captures the
34
- * re-parsed root, gated on the caller's `basedOn`.
32
+ * - {@link updateSourceModel} pushes the text back through the diagram's
33
+ * session (`update` accepts a raw text payload) and captures the re-parsed
34
+ * root, gated on the caller's `basedOn`; it throws without a session.
35
35
  *
36
- * No `baseline` / conflict reconcile: a whole-document model has exactly one
36
+ * No `base` / conflict reconcile: a whole-document model has exactly one
37
37
  * field, so every concurrent edit is a same-field collision and undo / redo
38
38
  * degrade to drop-on-divergence. Adopters that need field-level undo use
39
39
  * `ReconcilingTransferHydraniumGlspState` instead.
@@ -45,12 +45,7 @@ let FullTextHydraniumGlspState = class FullTextHydraniumGlspState extends Abstra
45
45
  return isPromiseLike(text) ? text.then(value => ({ text: value })) : { text };
46
46
  }
47
47
  async updateSourceModel(model, basedOn = this.basedOn) {
48
- const document = await this.sharedServices.model.ModelService.update({
49
- uri: this._sourceUri,
50
- model: model.text,
51
- clientId: this.clientId,
52
- basedOn
53
- });
48
+ const document = await this.requireModelSession().update({ uri: this._sourceUri, model: model.text, basedOn });
54
49
  this.setSourceRoot(this._sourceUri, document.root);
55
50
  }
56
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"full-text-hydranium-glsp-state.js","sourceRoot":"","sources":["../../src/state/full-text-hydranium-glsp-state.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;;;;;;;AAGlF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAgB,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAOhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BACV,SAAQ,0BAAsD;IAG9D,IAAI,WAAW;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACrH,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAA0B,EAAE,UAAmB,IAAI,CAAC,OAAO;QAChF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;YAClE,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;SACT,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAa,CAAC,CAAC;IAC/D,CAAC;CACH,CAAA;AAnBY,0BAA0B;IADtC,UAAU,EAAE;GACA,0BAA0B,CAmBtC"}
1
+ {"version":3,"file":"full-text-hydranium-glsp-state.js","sourceRoot":"","sources":["../../src/state/full-text-hydranium-glsp-state.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;;;;;;;AAGlF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAgB,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAOhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BACV,SAAQ,0BAAsD;IAG9D,IAAI,WAAW;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACrH,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAA0B,EAAE,UAAmB,IAAI,CAAC,OAAO;QAChF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAa,CAAC,CAAC;IAC/D,CAAC;CACH,CAAA;AAdY,0BAA0B;IADtC,UAAU,EAAE;GACA,0BAA0B,CActC"}
@@ -24,8 +24,8 @@ export interface SourceModelWriteHooks<TModel> {
24
24
  persist(model: TModel, basedOn: BasedOn): Promise<void>;
25
25
  /** Current server-side projection, or `undefined` when unavailable. */
26
26
  refetch(): Promise<TModel | undefined>;
27
- /** Last in-sync projection the user's intent is measured against. */
28
- readonly baseline: TModel | undefined;
27
+ /** The last in-sync projection the user's intent is measured against. */
28
+ readonly base: TModel | undefined;
29
29
  readonly conflictResolver: ConflictResolver;
30
30
  readonly logger: Logger;
31
31
  /** Invoked when the edit is dropped, so the caller can resync its own state. */
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile-source-model-write.d.ts","sourceRoot":"","sources":["../../src/state/reconcile-source-model-write.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB,CAAC,MAAM;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,uEAAuE;IACvE,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,iBAAiB,IAAI,IAAI,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,SAAS,MAAM,EAClE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
1
+ {"version":3,"file":"reconcile-source-model-write.d.ts","sourceRoot":"","sources":["../../src/state/reconcile-source-model-write.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB,CAAC,MAAM;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,uEAAuE;IACvE,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,iBAAiB,IAAI,IAAI,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,SAAS,MAAM,EAClE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -24,7 +24,7 @@ export async function reconcileSourceModelWrite(model, basedOn, hooks) {
24
24
  if (!isConflictError(err)) {
25
25
  throw err;
26
26
  }
27
- const outcome = await hooks.conflictResolver.resolve(hooks.baseline ?? model, model, () => hooks.refetch());
27
+ const outcome = await hooks.conflictResolver.resolve(hooks.base ?? model, model, () => hooks.refetch());
28
28
  switch (outcome.status) {
29
29
  case 'merged':
30
30
  await hooks.persist(outcome.merged, 'anything');
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile-source-model-write.js","sourceRoot":"","sources":["../../src/state/reconcile-source-model-write.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAoD,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2BxG;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC5C,KAAa,EACb,OAAgB,EAChB,KAAoC;IAEpC,IAAI,CAAC;QACF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5G,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,QAAQ;gBACV,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAChD,OAAO;YACV,KAAK,OAAO;gBACT,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,eAAe,OAAO,GAAG,CAAC,aAAa,oBAAoB,CAAC,CAAC;gBACjH,OAAO;YACV,KAAK,UAAU;gBACZ,KAAK,CAAC,MAAM,CAAC,IAAI,CACd,gCAAgC,GAAG,CAAC,eAAe,OAAO,GAAG,CAAC,aAAa,iCAAiC;oBACzG,yCAAyC,CAC9C,CAAC;gBACF,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,OAAO;YACV,KAAK,aAAa;gBACf,KAAK,CAAC,MAAM,CAAC,IAAI,CACd,2CAA2C,GAAG,CAAC,eAAe,OAAO,GAAG,CAAC,aAAa,4BAA4B,CACpH,CAAC;gBACF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACvC,OAAO;QACb,CAAC;IACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reconcile-source-model-write.js","sourceRoot":"","sources":["../../src/state/reconcile-source-model-write.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAoD,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2BxG;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC5C,KAAa,EACb,OAAgB,EAChB,KAAoC;IAEpC,IAAI,CAAC;QACF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxG,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,QAAQ;gBACV,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAChD,OAAO;YACV,KAAK,OAAO;gBACT,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,eAAe,OAAO,GAAG,CAAC,aAAa,oBAAoB,CAAC,CAAC;gBACjH,OAAO;YACV,KAAK,UAAU;gBACZ,KAAK,CAAC,MAAM,CAAC,IAAI,CACd,gCAAgC,GAAG,CAAC,eAAe,OAAO,GAAG,CAAC,aAAa,iCAAiC;oBACzG,yCAAyC,CAC9C,CAAC;gBACF,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,OAAO;YACV,KAAK,aAAa;gBACf,KAAK,CAAC,MAAM,CAAC,IAAI,CACd,2CAA2C,GAAG,CAAC,eAAe,OAAO,GAAG,CAAC,aAAa,4BAA4B,CACpH,CAAC;gBACF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACvC,OAAO;QACb,CAAC;IACJ,CAAC;AACJ,CAAC"}