@hydranium/glsp-server 1.0.0-next.28 → 1.0.0-next.280

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 (217) hide show
  1. package/README.md +77 -88
  2. package/lib/browser/start-glsp-server-in-worker.d.ts +43 -42
  3. package/lib/browser/start-glsp-server-in-worker.d.ts.map +1 -1
  4. package/lib/browser/start-glsp-server-in-worker.js +62 -13
  5. package/lib/browser/start-glsp-server-in-worker.js.map +1 -1
  6. package/lib/command/diagram-edit-dropped-error.d.ts +31 -0
  7. package/lib/command/diagram-edit-dropped-error.d.ts.map +1 -0
  8. package/lib/command/diagram-edit-dropped-error.js +48 -0
  9. package/lib/command/diagram-edit-dropped-error.js.map +1 -0
  10. package/lib/command/hydranium-glsp-command-stack.d.ts +33 -0
  11. package/lib/command/hydranium-glsp-command-stack.d.ts.map +1 -0
  12. package/lib/command/hydranium-glsp-command-stack.js +63 -0
  13. package/lib/command/hydranium-glsp-command-stack.js.map +1 -0
  14. package/lib/command/hydranium-glsp-operation-action-handler.d.ts +64 -0
  15. package/lib/command/hydranium-glsp-operation-action-handler.d.ts.map +1 -0
  16. package/lib/command/hydranium-glsp-operation-action-handler.js +142 -0
  17. package/lib/command/hydranium-glsp-operation-action-handler.js.map +1 -0
  18. package/lib/command/hydranium-glsp-operation-command.d.ts +249 -0
  19. package/lib/command/hydranium-glsp-operation-command.d.ts.map +1 -0
  20. package/lib/command/hydranium-glsp-operation-command.js +486 -0
  21. package/lib/command/hydranium-glsp-operation-command.js.map +1 -0
  22. package/lib/command/hydranium-glsp-recording-command.d.ts +26 -87
  23. package/lib/command/hydranium-glsp-recording-command.d.ts.map +1 -1
  24. package/lib/command/hydranium-glsp-recording-command.js +40 -117
  25. package/lib/command/hydranium-glsp-recording-command.js.map +1 -1
  26. package/lib/command/hydranium-glsp-undo-redo-action-handler.d.ts +23 -0
  27. package/lib/command/hydranium-glsp-undo-redo-action-handler.d.ts.map +1 -0
  28. package/lib/command/hydranium-glsp-undo-redo-action-handler.js +41 -0
  29. package/lib/command/hydranium-glsp-undo-redo-action-handler.js.map +1 -0
  30. package/lib/command/index.d.ts +5 -0
  31. package/lib/command/index.d.ts.map +1 -1
  32. package/lib/command/index.js +5 -0
  33. package/lib/command/index.js.map +1 -1
  34. package/lib/computed-bounds/hydranium-glsp-computed-bounds-action-handler.d.ts +1 -1
  35. package/lib/computed-bounds/hydranium-glsp-computed-bounds-action-handler.d.ts.map +1 -1
  36. package/lib/computed-bounds/hydranium-glsp-computed-bounds-action-handler.js +2 -2
  37. package/lib/computed-bounds/hydranium-glsp-computed-bounds-action-handler.js.map +1 -1
  38. package/lib/dispatcher/server-action-dispatcher.d.ts +25 -24
  39. package/lib/dispatcher/server-action-dispatcher.d.ts.map +1 -1
  40. package/lib/dispatcher/server-action-dispatcher.js +38 -26
  41. package/lib/dispatcher/server-action-dispatcher.js.map +1 -1
  42. package/lib/index.d.ts +1 -0
  43. package/lib/index.d.ts.map +1 -1
  44. package/lib/index.js +1 -0
  45. package/lib/index.js.map +1 -1
  46. package/lib/launcher/abstract-hydranium-glsp-diagram-module.d.ts +35 -59
  47. package/lib/launcher/abstract-hydranium-glsp-diagram-module.d.ts.map +1 -1
  48. package/lib/launcher/abstract-hydranium-glsp-diagram-module.js +60 -71
  49. package/lib/launcher/abstract-hydranium-glsp-diagram-module.js.map +1 -1
  50. package/lib/launcher/drop-notifications-to-gone-client.d.ts +23 -0
  51. package/lib/launcher/drop-notifications-to-gone-client.d.ts.map +1 -0
  52. package/lib/launcher/drop-notifications-to-gone-client.js +43 -0
  53. package/lib/launcher/drop-notifications-to-gone-client.js.map +1 -0
  54. package/lib/launcher/glsp-app-module.d.ts +1 -2
  55. package/lib/launcher/glsp-app-module.d.ts.map +1 -1
  56. package/lib/launcher/glsp-app-module.js.map +1 -1
  57. package/lib/launcher/glsp-connection-logger.d.ts +19 -0
  58. package/lib/launcher/glsp-connection-logger.d.ts.map +1 -0
  59. package/lib/launcher/glsp-connection-logger.js +24 -0
  60. package/lib/launcher/glsp-connection-logger.js.map +1 -0
  61. package/lib/launcher/glsp-server-overrides.d.ts +10 -8
  62. package/lib/launcher/glsp-server-overrides.d.ts.map +1 -1
  63. package/lib/launcher/glsp-server-overrides.js +25 -11
  64. package/lib/launcher/glsp-server-overrides.js.map +1 -1
  65. package/lib/launcher/hydranium-glsp-server.d.ts +60 -15
  66. package/lib/launcher/hydranium-glsp-server.d.ts.map +1 -1
  67. package/lib/launcher/hydranium-glsp-server.js +145 -22
  68. package/lib/launcher/hydranium-glsp-server.js.map +1 -1
  69. package/lib/launcher/index.d.ts +2 -0
  70. package/lib/launcher/index.d.ts.map +1 -1
  71. package/lib/launcher/index.js +5 -4
  72. package/lib/launcher/index.js.map +1 -1
  73. package/lib/logging/glsp-client-logger.d.ts +10 -6
  74. package/lib/logging/glsp-client-logger.d.ts.map +1 -1
  75. package/lib/logging/glsp-client-logger.js +14 -7
  76. package/lib/logging/glsp-client-logger.js.map +1 -1
  77. package/lib/messages/index.d.ts +11 -6
  78. package/lib/messages/index.d.ts.map +1 -1
  79. package/lib/messages/index.js +11 -6
  80. package/lib/messages/index.js.map +1 -1
  81. package/lib/node/start-glsp-server.d.ts +30 -8
  82. package/lib/node/start-glsp-server.d.ts.map +1 -1
  83. package/lib/node/start-glsp-server.js +49 -10
  84. package/lib/node/start-glsp-server.js.map +1 -1
  85. package/lib/state/abstract-hydranium-glsp-state.d.ts +312 -102
  86. package/lib/state/abstract-hydranium-glsp-state.d.ts.map +1 -1
  87. package/lib/state/abstract-hydranium-glsp-state.js +505 -139
  88. package/lib/state/abstract-hydranium-glsp-state.js.map +1 -1
  89. package/lib/state/diagram-status.d.ts +38 -0
  90. package/lib/state/diagram-status.d.ts.map +1 -0
  91. package/lib/state/diagram-status.js +27 -0
  92. package/lib/state/diagram-status.js.map +1 -0
  93. package/lib/state/full-text-hydranium-glsp-state.d.ts +15 -8
  94. package/lib/state/full-text-hydranium-glsp-state.d.ts.map +1 -1
  95. package/lib/state/full-text-hydranium-glsp-state.js +26 -16
  96. package/lib/state/full-text-hydranium-glsp-state.js.map +1 -1
  97. package/lib/state/hydranium-glsp-index.d.ts +40 -29
  98. package/lib/state/hydranium-glsp-index.d.ts.map +1 -1
  99. package/lib/state/hydranium-glsp-index.js +82 -45
  100. package/lib/state/hydranium-glsp-index.js.map +1 -1
  101. package/lib/state/hydranium-shared-core-services.d.ts +16 -29
  102. package/lib/state/hydranium-shared-core-services.d.ts.map +1 -1
  103. package/lib/state/hydranium-shared-core-services.js +15 -28
  104. package/lib/state/hydranium-shared-core-services.js.map +1 -1
  105. package/lib/state/index.d.ts +1 -0
  106. package/lib/state/index.d.ts.map +1 -1
  107. package/lib/state/index.js +1 -0
  108. package/lib/state/index.js.map +1 -1
  109. package/lib/state/model-ready-timeout-error.d.ts.map +1 -1
  110. package/lib/state/model-ready-timeout-error.js.map +1 -1
  111. package/lib/state/reconcile-source-model-write.d.ts +10 -27
  112. package/lib/state/reconcile-source-model-write.d.ts.map +1 -1
  113. package/lib/state/reconcile-source-model-write.js +39 -32
  114. package/lib/state/reconcile-source-model-write.js.map +1 -1
  115. package/lib/state/reconciling-multi-document-glsp-state.d.ts +123 -69
  116. package/lib/state/reconciling-multi-document-glsp-state.d.ts.map +1 -1
  117. package/lib/state/reconciling-multi-document-glsp-state.js +239 -100
  118. package/lib/state/reconciling-multi-document-glsp-state.js.map +1 -1
  119. package/lib/state/reconciling-transfer-hydranium-glsp-state.d.ts +35 -27
  120. package/lib/state/reconciling-transfer-hydranium-glsp-state.d.ts.map +1 -1
  121. package/lib/state/reconciling-transfer-hydranium-glsp-state.js +57 -41
  122. package/lib/state/reconciling-transfer-hydranium-glsp-state.js.map +1 -1
  123. package/lib/status/diagram-status-reporter.d.ts +44 -0
  124. package/lib/status/diagram-status-reporter.d.ts.map +1 -0
  125. package/lib/status/diagram-status-reporter.js +88 -0
  126. package/lib/status/diagram-status-reporter.js.map +1 -0
  127. package/lib/status/hydranium-glsp-request-model-action-handler.d.ts +27 -0
  128. package/lib/status/hydranium-glsp-request-model-action-handler.d.ts.map +1 -0
  129. package/lib/status/hydranium-glsp-request-model-action-handler.js +52 -0
  130. package/lib/status/hydranium-glsp-request-model-action-handler.js.map +1 -0
  131. package/lib/status/hydranium-glsp-set-edit-mode-action-handler.d.ts +27 -0
  132. package/lib/status/hydranium-glsp-set-edit-mode-action-handler.d.ts.map +1 -0
  133. package/lib/status/hydranium-glsp-set-edit-mode-action-handler.js +53 -0
  134. package/lib/status/hydranium-glsp-set-edit-mode-action-handler.js.map +1 -0
  135. package/lib/status/index.d.ts +12 -0
  136. package/lib/status/index.d.ts.map +1 -0
  137. package/lib/status/index.js +12 -0
  138. package/lib/status/index.js.map +1 -0
  139. package/lib/storage/hydranium-glsp-request-save-model-action-handler.d.ts +30 -0
  140. package/lib/storage/hydranium-glsp-request-save-model-action-handler.d.ts.map +1 -0
  141. package/lib/storage/hydranium-glsp-request-save-model-action-handler.js +47 -0
  142. package/lib/storage/hydranium-glsp-request-save-model-action-handler.js.map +1 -0
  143. package/lib/storage/hydranium-glsp-storage.d.ts +322 -143
  144. package/lib/storage/hydranium-glsp-storage.d.ts.map +1 -1
  145. package/lib/storage/hydranium-glsp-storage.js +563 -213
  146. package/lib/storage/hydranium-glsp-storage.js.map +1 -1
  147. package/lib/storage/index.d.ts +2 -1
  148. package/lib/storage/index.d.ts.map +1 -1
  149. package/lib/storage/index.js +2 -1
  150. package/lib/storage/index.js.map +1 -1
  151. package/lib/storage/save-delivery-policy.d.ts +46 -0
  152. package/lib/storage/save-delivery-policy.d.ts.map +1 -0
  153. package/lib/storage/{save-conflict-policy.js → save-delivery-policy.js} +7 -8
  154. package/lib/storage/save-delivery-policy.js.map +1 -0
  155. package/lib/submission/hydranium-glsp-submission-handler.d.ts +44 -4
  156. package/lib/submission/hydranium-glsp-submission-handler.d.ts.map +1 -1
  157. package/lib/submission/hydranium-glsp-submission-handler.js +82 -6
  158. package/lib/submission/hydranium-glsp-submission-handler.js.map +1 -1
  159. package/lib/testing/glsp-harness.d.ts +29 -7
  160. package/lib/testing/glsp-harness.d.ts.map +1 -1
  161. package/lib/testing/glsp-harness.js +47 -19
  162. package/lib/testing/glsp-harness.js.map +1 -1
  163. package/lib/validation/diagnostic-markers.d.ts +3 -3
  164. package/lib/validation/diagnostic-markers.d.ts.map +1 -1
  165. package/lib/validation/diagnostic-markers.js +1 -1
  166. package/lib/validation/diagnostic-markers.js.map +1 -1
  167. package/lib/validation/hydranium-glsp-model-validator.d.ts +1 -2
  168. package/lib/validation/hydranium-glsp-model-validator.d.ts.map +1 -1
  169. package/lib/validation/hydranium-glsp-model-validator.js +1 -1
  170. package/lib/validation/hydranium-glsp-model-validator.js.map +1 -1
  171. package/package.json +31 -52
  172. package/src/browser/start-glsp-server-in-worker.ts +79 -51
  173. package/src/command/diagram-edit-dropped-error.ts +51 -0
  174. package/src/command/hydranium-glsp-command-stack.ts +47 -0
  175. package/src/command/hydranium-glsp-operation-action-handler.ts +141 -0
  176. package/src/command/hydranium-glsp-operation-command.ts +598 -0
  177. package/src/command/hydranium-glsp-recording-command.ts +40 -121
  178. package/src/command/hydranium-glsp-undo-redo-action-handler.ts +29 -0
  179. package/src/command/index.ts +10 -0
  180. package/src/computed-bounds/hydranium-glsp-computed-bounds-action-handler.ts +2 -2
  181. package/src/dispatcher/server-action-dispatcher.ts +39 -31
  182. package/src/index.ts +1 -0
  183. package/src/launcher/abstract-hydranium-glsp-diagram-module.ts +79 -91
  184. package/src/launcher/drop-notifications-to-gone-client.ts +47 -0
  185. package/src/launcher/glsp-app-module.ts +1 -2
  186. package/src/launcher/glsp-connection-logger.ts +27 -0
  187. package/src/launcher/glsp-server-overrides.ts +27 -11
  188. package/src/launcher/hydranium-glsp-server.ts +153 -23
  189. package/src/launcher/index.ts +5 -4
  190. package/src/logging/glsp-client-logger.ts +16 -9
  191. package/src/messages/index.ts +16 -6
  192. package/src/node/start-glsp-server.ts +60 -14
  193. package/src/state/abstract-hydranium-glsp-state.ts +584 -154
  194. package/src/state/diagram-status.ts +41 -0
  195. package/src/state/full-text-hydranium-glsp-state.ts +27 -17
  196. package/src/state/hydranium-glsp-index.ts +85 -41
  197. package/src/state/hydranium-shared-core-services.ts +16 -29
  198. package/src/state/index.ts +1 -0
  199. package/src/state/reconcile-source-model-write.ts +44 -53
  200. package/src/state/reconciling-multi-document-glsp-state.ts +273 -102
  201. package/src/state/reconciling-transfer-hydranium-glsp-state.ts +65 -44
  202. package/src/status/diagram-status-reporter.ts +106 -0
  203. package/src/status/hydranium-glsp-request-model-action-handler.ts +43 -0
  204. package/src/status/hydranium-glsp-set-edit-mode-action-handler.ts +38 -0
  205. package/src/status/index.ts +12 -0
  206. package/src/storage/hydranium-glsp-request-save-model-action-handler.ts +40 -0
  207. package/src/storage/hydranium-glsp-storage.ts +639 -223
  208. package/src/storage/index.ts +2 -1
  209. package/src/storage/save-delivery-policy.ts +44 -0
  210. package/src/submission/hydranium-glsp-submission-handler.ts +91 -5
  211. package/src/testing/glsp-harness.ts +62 -25
  212. package/src/validation/diagnostic-markers.ts +3 -3
  213. package/src/validation/hydranium-glsp-model-validator.ts +4 -5
  214. package/lib/storage/save-conflict-policy.d.ts +0 -56
  215. package/lib/storage/save-conflict-policy.d.ts.map +0 -1
  216. package/lib/storage/save-conflict-policy.js.map +0 -1
  217. package/src/storage/save-conflict-policy.ts +0 -52
@@ -8,9 +8,11 @@
8
8
  ********************************************************************************/
9
9
  import { DefaultModelState, type MaybePromise } from '@eclipse-glsp/server';
10
10
  import { Emitter, type Event } from 'vscode-jsonrpc';
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';
13
- import type { ConflictResolver, Logger, Tracer } from '@hydranium/protocol';
11
+ import { type AstNode, DocumentState, type Reference, type ReferenceInfo } from '@hydranium/langium';
12
+ import { type ClientSession, type HydraniumScopeProvider, type LanguageTarget, type NameProvider, type ReferenceCandidateProvider, type ServerLanguageServices, type ServerSharedServices } from '@hydranium/core';
13
+ import { type BaseVersion, type ModelVersion, type ConflictResolver, type Logger, type Tracer, type TransferElement } from '@hydranium/protocol';
14
+ import { type OperationTransition } from '../command/hydranium-glsp-operation-command.js';
15
+ import { type DiagramStatus, type DiagramStatusEntry } from './diagram-status.js';
14
16
  import { type HydraniumGlspIndex } from './hydranium-glsp-index.js';
15
17
  import { ModelReadyTimeoutError } from './model-ready-timeout-error.js';
16
18
  /**
@@ -38,7 +40,7 @@ import { ModelReadyTimeoutError } from './model-ready-timeout-error.js';
38
40
  * override only to change the error shape (richer per-adopter output comes
39
41
  * from overriding `wsRelativePath` / `formatBuildStatus`).
40
42
  * - logging — see {@link baseTracer}. Adopters wanting a different label
41
- * override `setSourceRoot` and derive via
43
+ * override `captureSourceRoot` and derive via
42
44
  * `this.baseTracer.for('Name').withUri(uri)`.
43
45
  *
44
46
  * **Lifecycle ordering.** Reading {@link sourceUri} or {@link sourceRoot}
@@ -47,7 +49,7 @@ import { ModelReadyTimeoutError } from './model-ready-timeout-error.js';
47
49
  * (typically from the storage `loadSourceModel` flow) before reading them.
48
50
  * The {@link logger}/{@link tracer} are the exception: the injected
49
51
  * {@link baseTracer} is always available, so the getters fall back to it
50
- * before {@link setSourceRoot} derives the URI-tagged {@link _tracer} —
52
+ * before {@link captureSourceRoot} derives the URI-tagged {@link _tracer} —
51
53
  * logging is never `undefined`.
52
54
  */
53
55
  export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode, TSourceModel = string> extends DefaultModelState {
@@ -62,21 +64,69 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
62
64
  * `updateSourceModel` implementations.
63
65
  */
64
66
  readonly conflictResolver: ConflictResolver;
67
+ /**
68
+ * Writes of one diagram edit, the first included, that may conflict before
69
+ * the edit is dropped with a warning; each further write reconciles again.
70
+ */
71
+ protected readonly maxSourceModelWrites: number;
65
72
  /**
66
73
  * Per-class tracer, caller-tagged with this state's runtime subclass name by
67
- * the `HydraniumTypes.Tracer` binding. {@link setSourceRoot} derives the
74
+ * the `HydraniumTypes.Tracer` binding. {@link captureSourceRoot} derives the
68
75
  * URI-tagged {@link _tracer} from it; the {@link tracer}/{@link logger}
69
76
  * getters fall back to it before then, so logging is never `undefined`.
70
77
  */
71
78
  protected readonly baseTracer: Tracer;
72
79
  /** Narrows {@link DefaultModelState.index} to the framework-extended index type. */
73
80
  readonly index: HydraniumGlspIndex;
81
+ /**
82
+ * The client session this diagram works as, registered under `clientId` by
83
+ * the source-model storage's load and ended with the GLSP client session,
84
+ * or by a resume that takes it over. `undefined` before the load, for
85
+ * GLSP's placeholder client, and when another participant held the id, in
86
+ * which case the diagram does not load.
87
+ *
88
+ * Every write of the diagram goes through this session, which writes only a
89
+ * document it has open and opens nothing. A one-shot write to a document
90
+ * outside the write set goes through
91
+ * {@link ClientSession.withOpen}, and a document the diagram brings into
92
+ * existence through {@link ClientSession.create}.
93
+ */
94
+ modelSession?: ClientSession<AstNode>;
95
+ /**
96
+ * {@link modelSession}, or a throw without one: the diagram never loaded or
97
+ * has ended. Looking `clientId` up through `ModelService.getSession` instead
98
+ * would write as whichever participant holds that id.
99
+ */
100
+ protected requireModelSession(): ClientSession<AstNode>;
74
101
  protected _sourceUri: string;
102
+ /**
103
+ * The language {@link _sourceUri} routed to at the last capture, or
104
+ * `undefined` when it routes nowhere. Captured rather than looked up on
105
+ * each {@link diagramLanguage} read, which a GModel factory may make once
106
+ * per element, because the lookup parses the URI and walks the registry.
107
+ */
108
+ protected _sourceLanguage?: ServerLanguageServices;
109
+ /**
110
+ * The root the last capture took, which every reader of the document
111
+ * shares. A projection that must see an operation's edits reads
112
+ * {@link sourceRoot}, which is a copy of it during an operation.
113
+ */
75
114
  protected _sourceRoot: TRoot;
115
+ /** Settles when the last {@link runExclusive} call queued so far has. */
116
+ protected exclusiveTail: Promise<unknown>;
76
117
  protected _tracer?: Tracer;
77
- protected _version: number;
78
- /** Based-on versions of the secondary write set, keyed by URI. See {@link trackSecondaryDocument}. */
79
- protected readonly _secondaryVersions: Map<string, number>;
118
+ protected _baseVersion: ModelVersion;
119
+ /**
120
+ * The built root each secondary's version was read from, keyed by
121
+ * canonical URI, and during an operation the root of any other document it
122
+ * first reached. An operation copies a secondary from here, so the copy,
123
+ * the base a conflict reconciles from and the version its write is gated
124
+ * on describe one revision; the registry's current root can be a later
125
+ * build's.
126
+ */
127
+ protected readonly capturedRoots: Map<string, AstNode>;
128
+ /** Model versions of the secondary write set, keyed by URI. See {@link trackSecondaryDocument}. */
129
+ protected readonly _secondaryVersions: Map<string, ModelVersion>;
80
130
  /** Backing emitter for {@link onSecondaryUrisChanged}; fired only on a membership change. */
81
131
  protected readonly secondaryUrisChangedEmitter: Emitter<void>;
82
132
  /** Default of one minute. */
@@ -84,45 +134,148 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
84
134
  /** Maximum wait inside {@link readyWithTimeout} before raising {@link ModelReadyTimeoutError}. */
85
135
  protected readyTimeoutMs: number;
86
136
  /**
87
- * Capture a freshly built source root alongside its URI, refresh the
88
- * logger to label log lines with the URI, and re-index the AST so
89
- * downstream GModel projection can resolve elements back to nodes.
137
+ * Capture a freshly built source root alongside its URI through
138
+ * {@link captureSourceRoot}, and index the AST so downstream GModel
139
+ * projection can resolve elements back to nodes.
140
+ *
141
+ * Capturing the document already captured keeps what the last GModel build
142
+ * registered in the index, which only the next build makes again, and drops
143
+ * an id added through `indexSemanticElement` whose node a rebuild replaced.
90
144
  *
91
- * Also mirrors `uri` into the inherited properties map under
92
- * {@link SOURCE_URI_ARG} so legacy GLSP code paths (`state.get(...)`)
93
- * stay consistent with the typed field.
145
+ * Throws during an operation: a capture there swaps the root out from under
146
+ * the nodes a handler resolved, and the operation captures when it ends.
94
147
  */
95
148
  setSourceRoot(uri: string, root: TRoot): void;
149
+ /**
150
+ * Take `root` as the source root and read everything derived from it: the
151
+ * base version, every tracked secondary version, the URI mirrored into the
152
+ * inherited properties map under {@link SOURCE_URI_ARG}, and the
153
+ * URI-labelled logger. Everything but the index, which
154
+ * {@link setSourceRoot} sets. Override to derive more from a capture.
155
+ */
156
+ protected captureSourceRoot(uri: string, root: TRoot): void;
96
157
  /**
97
158
  * Typed override of {@link DefaultModelState.sourceUri}. Narrows the
98
159
  * inherited `string | undefined` to `string` (defined after
99
160
  * {@link setSourceRoot}; throws on definite-assignment otherwise).
100
161
  */
101
162
  get sourceUri(): string;
163
+ /** The root operation handlers edit: during an operation a copy of the built root, outside one the built root. */
102
164
  get sourceRoot(): TRoot;
103
165
  /**
104
- * The language services of the grammar this DIAGRAM TYPE edits, as declared
105
- * by `AbstractHydraniumGlspDiagramModule.declareLanguage`.
166
+ * Run `run` once every earlier call has settled, thrown or not: the
167
+ * boundary that orders operations, undo and redo, and the storage's capture
168
+ * and render. Code running inside it never calls this again, since the
169
+ * call would wait for the section it runs in.
170
+ */
171
+ runExclusive<T>(run: () => MaybePromise<T>): Promise<T>;
172
+ /**
173
+ * The root of `uri` that operation handlers edit: during an operation a
174
+ * copy made on the first request and returned for the rest of it, outside
175
+ * one the root itself. The root is the built root of `uri`, or `orElse()`
176
+ * when `uri` has no document; `undefined` when neither gives one.
106
177
  *
107
- * **Named for what it is, not for "the language".** Reach for it only when
108
- * the thing you are asking about lives in the diagram document itself.
109
- * Anything reached *through* a reference is decided by its own document: use
110
- * {@link languageServicesFor}. Making that choice explicit at the call site
111
- * is the point; a neutral-looking `languageServices` invites the diagram's
112
- * grammar to be applied to a foreign node, which is the defect this whole
113
- * seam exists to prevent.
178
+ * A handler that edits another document than the source reaches its root
179
+ * through this, or the edit lands on the root every reader shares. An id
180
+ * added through `indexSemanticElement` for a node of that root names the
181
+ * node's copy from then on.
182
+ */
183
+ workingRootOf(uri: string, orElse?: () => AstNode | undefined): AstNode | undefined;
184
+ /** The copy of `uri` the open operation made, without making one. */
185
+ protected existingWorkingRootOf(uri: string): AstNode | undefined;
186
+ /**
187
+ * The key of `uri` among an operation's copies: its canonical form, so two
188
+ * spellings of one document share one copy.
189
+ */
190
+ protected workingKey(uri: string): string;
191
+ /**
192
+ * The built node `node` was copied from during an operation; `node` itself
193
+ * for a built node, for a node the operation created, and outside one.
114
194
  *
115
- * Injected rather than derived from {@link sourceUri} so it is available
116
- * before the first {@link setSourceRoot} — GLSP constructs operation
117
- * handlers at `InitializeClientSession`, well before `RequestModelAction`.
118
- * `@optional()` so a harness that binds no diagram module still resolves;
119
- * `undefined` then means no diagram module declared a grammar.
195
+ * A copy has no `$document`, so a lookup that reads its document, scope or
196
+ * project throws or answers for no document. Handlers pass the built node
197
+ * there and keep editing the copy. A candidate query takes
198
+ * {@link referenceInfoOf} instead, since a created node has no built node.
199
+ */
200
+ builtNodeOf<T extends AstNode>(node: T): T;
201
+ /**
202
+ * A reference to `target` whose `ref` is `target` itself, a copy node
203
+ * included, so an identity comparison later in the operation finds it.
204
+ * `undefined` when no reference can be formed. Outside an operation the
205
+ * nodes are built ones and this is the `ReferenceBuilder`'s answer as is.
206
+ *
207
+ * With `tier: 'own'` the `$refText` is the target's own name as
208
+ * `toOwnReference` gives it, read off `target` itself, so a name the
209
+ * operation edited is the one written; the builder is the target's
210
+ * language's, which a copy node, having no `$document`, would not otherwise
211
+ * reach. `source` plays no part in that tier.
212
+ *
213
+ * By default it is `getReferenceName` from `source`'s context, with the
214
+ * builder of `source`'s language, since `$refText` encoding follows the
215
+ * grammar writing it. That call reads both nodes' projects, to pick the
216
+ * qualification and to refuse a reference across projects the target's is
217
+ * not visible to, and a copy node has none; so it is asked about the built
218
+ * target, which names a target as built, before any rename in the
219
+ * operation, and about {@link builtContextOf} the source. A target the
220
+ * operation created has no built node, and is asked about without a
221
+ * project.
222
+ */
223
+ referenceTo<T extends AstNode>(target: T, source?: AstNode, options?: {
224
+ readonly tier?: 'own';
225
+ }): Reference<T> | undefined;
226
+ /**
227
+ * A candidate query for `property` of `node`, to pass to
228
+ * `candidateProviderFor(node)?.find`. It is asked from the built node, and
229
+ * for a node the operation created from a stand-in of its type under the
230
+ * built containers it sits in, one per created level: a scope reads local
231
+ * names off every container up the chain, so anchoring higher drops them.
232
+ * A protocol context cannot express this: an element source resolves only
233
+ * through a `resolveElementByName` override, and through the index only
234
+ * for the nodes it exports. `undefined` for a node in no document and no
235
+ * copy, such as one not attached yet.
236
+ */
237
+ referenceInfoOf(node: AstNode, property: string): ReferenceInfo | undefined;
238
+ /**
239
+ * The built node of `node`, or of its nearest container that has one: a
240
+ * node the operation created has no built node, but its container's
241
+ * document and project are its own.
120
242
  */
121
- readonly diagramLanguage?: ServerLanguageServices;
243
+ protected builtContextOf(node: AstNode): AstNode;
244
+ /**
245
+ * Take `root`, which a write of this state's own produced, as the source
246
+ * root; during an operation the operation takes it and captures it when it
247
+ * ends.
248
+ */
249
+ protected captureWrittenRoot(root: TRoot): void;
250
+ /**
251
+ * Resync after a write whose reconcile dropped the edit: during an
252
+ * operation the operation undoes its side effects, pushes nothing, and
253
+ * captures the document's current root when it ends.
254
+ */
255
+ protected writeDropped(): void;
256
+ /**
257
+ * Whether `node` belongs to the root its document is built to now, or to no
258
+ * document; a root a rebuild replaced holds only stale nodes.
259
+ */
260
+ protected isCurrentBuiltNode(node: AstNode): boolean;
261
+ /**
262
+ * The language services of the diagram document: the language
263
+ * {@link sourceUri} routed to at the last {@link setSourceRoot}.
264
+ *
265
+ * `undefined` until a document is loaded, as GLSP builds a session's
266
+ * handlers at `InitializeClientSession`, before `RequestModelAction`
267
+ * supplies the URI: read it when called, not at construction.
268
+ *
269
+ * Reach for it only when the thing you are asking about lives in the
270
+ * diagram document itself. Anything reached through a reference is decided
271
+ * by its own document: use {@link languageServicesFor}.
272
+ */
273
+ get diagramLanguage(): ServerLanguageServices | undefined;
122
274
  /**
123
275
  * The language services owning `target` — an AST node (routed by its
124
- * document), a URI, or a URI string — falling back to
125
- * {@link diagramLanguage} when `target` routes nowhere.
276
+ * document), a URI, or a URI string — falling back, for a node, to the
277
+ * language the index read from the diagram's root, and otherwise to
278
+ * {@link diagramLanguage}, when `target` routes nowhere.
126
279
  *
127
280
  * Use this wherever the thing being named, keyed or completed may live in
128
281
  * another document than the diagram. Two registered languages are free to
@@ -132,6 +285,9 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
132
285
  * diagnostic. The fallback covers the genuinely unroutable case, a synthetic
133
286
  * node not yet attached to a document, where the diagram's own language is
134
287
  * the only defensible answer.
288
+ *
289
+ * A node routes through {@link HydraniumGlspIndex.languageServicesFor}, so
290
+ * an override of the index's routing applies here too.
135
291
  */
136
292
  languageServicesFor(target: LanguageTarget | undefined): ServerLanguageServices | undefined;
137
293
  /**
@@ -151,46 +307,35 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
151
307
  scopeProviderFor(target: LanguageTarget | undefined): HydraniumScopeProvider | undefined;
152
308
  /** The `ReferenceCandidateProvider` of the language owning `target`. See {@link nameProviderFor}. */
153
309
  candidateProviderFor(target: LanguageTarget | undefined): ReferenceCandidateProvider | undefined;
154
- /**
155
- * Warn when the loaded document does not route to the grammar this diagram
156
- * module declared.
157
- *
158
- * The declared language is the one fact the module states that the grammar
159
- * itself does not, so it is the one that can drift — a diagram type pointed
160
- * at the wrong `LanguageMetaData`, or a file extension reassigned. Both
161
- * would otherwise surface much later as references resolving against the
162
- * wrong scope. Only a warning, not a throw: the document is loaded and
163
- * usable either way, and a hard failure here would take out a diagram over
164
- * a mismatch that may be intentional in an adopter serving one diagram type
165
- * over several grammars.
166
- */
167
- protected checkDeclaredLanguage(uri: string): void;
168
310
  /** The observability handle as a plain {@link Logger} (a {@link Tracer} is-a Logger). */
169
311
  get logger(): Logger;
170
- /** URI-tagged once {@link setSourceRoot} has run; the class-tagged injected {@link baseTracer} before that. */
312
+ /** URI-tagged once a source root is captured; the class-tagged injected {@link baseTracer} before that. */
171
313
  get tracer(): Tracer;
172
314
  /**
173
- * Text-document version captured at the last {@link setSourceRoot}
174
- * call. Mirrors the server-side `TextDocuments.version(uri)` counter
175
- * at that point in time — frozen until the next `setSourceRoot`, then
176
- * re-read from `LangiumDocuments`.
315
+ * Model version of the root the last {@link captureSourceRoot} took,
316
+ * frozen until the next one.
177
317
  *
178
- * Threaded by `HydraniumGlspRecordingCommand` into
179
- * {@link updateSourceModel}'s optional `version` parameter so the
180
- * downstream `ModelService.update` / `.save` call can opt into the
181
- * conflict gate against the captured based-on version. See
318
+ * The base an operation's write is gated on, taken when the operation
319
+ * opens; nothing captures during an operation, so it is the version of the
320
+ * root the operation's copies were made from. See
182
321
  * `@hydranium/protocol#ConflictError` for the detection contract.
183
322
  *
184
- * Falls back to `0` when the document is absent from `LangiumDocuments`
185
- * at capture time — the same observable state callers see for a doc
186
- * that was never opened. Callers that need to distinguish
187
- * "never-versioned" from "v0" must consult the document registry
188
- * directly.
323
+ * **This, not a number read at write time, is what a write must be gated
324
+ * on.** A version read when the write is issued is the store's current one,
325
+ * so it matches by construction and the gate can never fire.
326
+ */
327
+ get baseVersion(): ModelVersion;
328
+ /**
329
+ * {@link baseVersion} as a plain number: the store's version of the text the
330
+ * root was parsed from.
331
+ *
332
+ * `UNRECORDED_VERSION` when the document was not built when the snapshot
333
+ * was taken, which no write matches.
189
334
  */
190
335
  get version(): number;
191
336
  /**
192
- * Register `uri` as a document this state also writes, capturing its current
193
- * text-document version.
337
+ * Register `uri` as a document this state also writes, snapshotting its
338
+ * current text-document version.
194
339
  *
195
340
  * A diagram whose layout lives in its own file, or whose canvas creates
196
341
  * elements in a referenced semantic document, writes more than the document
@@ -203,7 +348,7 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
203
348
  * identified once the operation names the node. What the framework supplies
204
349
  * is the part an adopter cannot reconstruct after the fact — the version each
205
350
  * document was at BEFORE the command mutated anything (see
206
- * {@link capturedVersionOf}). Idempotent; registering the primary is ignored,
351
+ * {@link baseVersionOf}). Idempotent; registering the primary is ignored,
207
352
  * since {@link version} already tracks it. Registering a URI not already in
208
353
  * the set fires {@link onSecondaryUrisChanged}.
209
354
  */
@@ -215,14 +360,15 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
215
360
  untrackSecondaryDocuments(): void;
216
361
  /**
217
362
  * Fires whenever the secondary write set gains or loses a URI — never when a
218
- * tracked document's captured version is merely refreshed, which happens on
219
- * every {@link setSourceRoot} and changes nothing a subscriber cares about.
363
+ * tracked document's model version is merely refreshed, which happens on
364
+ * every {@link captureSourceRoot} and changes nothing a subscriber cares about.
220
365
  *
221
366
  * **This exists so no caller has to know when the set can change.** The set is
222
367
  * usually discovered rather than known, and the discovery point is an
223
- * operation handler naming a node — not a capture. A subscriber that instead
224
- * re-derived the set after each capture would miss exactly that case, and miss
225
- * it silently: the document would simply never be watched, with nothing logged.
368
+ * operation handler naming a node — not a read of the source root. A
369
+ * subscriber that instead re-derived the set after each such read would miss
370
+ * exactly that case, and miss it silently: the document would simply never be
371
+ * watched, with nothing logged.
226
372
  * Announcing the change here moves the obligation to the one place that can
227
373
  * always discharge it.
228
374
  *
@@ -234,27 +380,53 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
234
380
  get onSecondaryUrisChanged(): Event<void>;
235
381
  /** Registered secondary document URIs, in registration order. */
236
382
  get secondaryUris(): readonly string[];
383
+ /** Active statuses, least recently set first. See {@link setStatus}. */
384
+ protected readonly statuses: Map<DiagramStatus, DiagramStatusEntry>;
385
+ /** Backing emitter for {@link onStatusChanged}. */
386
+ protected readonly statusChangedEmitter: Emitter<void>;
237
387
  /**
238
- * Based-on version captured for `uri` — {@link version} for the primary, the
239
- * value captured at {@link trackSecondaryDocument} (refreshed by
240
- * {@link setSourceRoot}) for a secondary, `undefined` for anything untracked.
388
+ * Set `status`'s entry, or withdraw it with `undefined`, and recompute
389
+ * {@link currentStatus} and {@link editMode} from every active entry.
241
390
  *
242
- * `undefined` rather than `0` for an untracked URI deliberately: `0` is a real
243
- * version meaning "present but never edited", so collapsing the two would let
244
- * a caller gate a write against a document it never captured.
391
+ * `editMode` is derived here and nowhere else: a writer that assigns it
392
+ * directly is overwritten by the next status change, and its write is not
393
+ * announced on {@link onStatusChanged}.
245
394
  */
246
- capturedVersionOf(uri: string): number | undefined;
395
+ setStatus(status: DiagramStatus, entry: DiagramStatusEntry | undefined): void;
396
+ /** The active entry whose message the client shows: highest severity, then most recently set. */
397
+ get currentStatus(): DiagramStatusEntry | undefined;
398
+ /** The active statuses that block editing; empty while the diagram is editable. */
399
+ get readonlyStatuses(): DiagramStatus[];
400
+ /** The status that supplies {@link currentStatus}, for a log line naming it. */
401
+ get currentStatusSource(): DiagramStatus | undefined;
402
+ /** Fires when {@link currentStatus} or {@link editMode} changes. */
403
+ get onStatusChanged(): Event<void>;
247
404
  /**
248
- * Read a document's current text-document version through the model service's
249
- * canonicalizing gateway, so a URI spelled through a symlink still resolves to
250
- * the document keyed by its real path rather than stranding at `0` (which
251
- * would silently weaken the conflict gate). Optional-chained on `textDocument`
252
- * so a fixture that omits it does not throw; real Langium documents always
253
- * populate it.
405
+ * The base version of a write of `uri`: {@link baseVersion} for the primary,
406
+ * the version taken at {@link trackSecondaryDocument} (refreshed by
407
+ * {@link captureSourceRoot}) for a secondary, `undefined` for anything untracked.
408
+ *
409
+ * `undefined` rather than v0 for an untracked URI deliberately: `0` is a real
410
+ * version meaning "present but never edited", so collapsing the two would let
411
+ * a caller gate a write against a document this state never read.
254
412
  */
255
- protected readDocumentVersion(uri: string): number;
256
- /** Re-read every registered secondary's version from the document store. */
413
+ baseVersionOf(uri: string): ModelVersion | undefined;
414
+ /** Re-take every registered secondary's built root and the model version of that root. */
257
415
  protected refreshSecondaryVersions(): void;
416
+ /**
417
+ * The built root of `uri`, looked up through the model service's
418
+ * canonicalizing gateway so a symlinked URI does not strand without one;
419
+ * `undefined` for a URI with no parsed document, whose version is then
420
+ * `UNRECORDED_VERSION`, which no write matches. The store counts a file it
421
+ * has not built at `0`, and so does the placeholder the builder registers
422
+ * before its parse, and a write based on `0` overwrites text this state
423
+ * never read.
424
+ */
425
+ protected readBuiltRoot(uri: string): AstNode | undefined;
426
+ /** Take `root` as the secondary `uri` was read at, and its version, `UNRECORDED_VERSION` without one. */
427
+ protected recordSecondary(uri: string, root: AstNode | undefined): void;
428
+ /** The root the secondary `uri` was read at; see {@link capturedRoots}. */
429
+ protected capturedRootOf(uri: string): AstNode | undefined;
258
430
  /**
259
431
  * Re-capture the source root from the current Langium document,
260
432
  * replacing any orphaned root. A rebuild between an earlier
@@ -263,18 +435,38 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
263
435
  * handlers) must see the root the freshly built document carries.
264
436
  */
265
437
  protected refreshSourceRoot(): void;
438
+ /**
439
+ * The root that `uri`'s text parses to (the text store's, or the built
440
+ * document's when the store holds none) and the store's version of that
441
+ * text, read once the document has validated; `undefined` when it cannot be
442
+ * read. The version is read in the tick the text is, so a write based on it
443
+ * conflicts with any edit made after.
444
+ *
445
+ * **Parsed afresh, never the built root.** The built root can lag the
446
+ * store, and a root behind the text it is versioned with makes the replay
447
+ * drop the edits it lacks. The root is parsed, not linked: an encoder hook
448
+ * reading a reference's `ref` sees `undefined` on it.
449
+ */
450
+ protected readCurrentRoot(uri: string): Promise<{
451
+ root: AstNode;
452
+ version: ModelVersion;
453
+ } | undefined>;
266
454
  /**
267
455
  * Wait until the captured document reaches `state`, then run
268
456
  * {@link onReadyRefreshed} so consumers see a fresh AST. Wraps the
269
457
  * wait in {@link Tracer.time} for observability.
458
+ *
459
+ * A source not in the document registry is built first, through
460
+ * `ModelService.rebuild`. For a source with neither a file nor text, that
461
+ * build leaves no document, and this rejects rather than timing out.
270
462
  */
271
463
  ready(state: DocumentState): Promise<void>;
272
464
  /**
273
- * Race `ModelService.waitForDocumentState` against
274
- * {@link readyTimeoutMs}. If the timeout fires but the document has
275
- * already reached `state` silently (Langium build-phase event race),
276
- * log a warning and resolve; otherwise raise
277
- * {@link ModelReadyTimeoutError} via {@link buildReadyTimeoutError}.
465
+ * Race `ModelService.ensureDocumentState`, which builds a root behind its
466
+ * text, against {@link readyTimeoutMs}. If the timeout fires but the
467
+ * document has already reached `state`, log a warning naming the cause, a
468
+ * root behind its text or a missed phase event, and resolve; otherwise
469
+ * raise {@link ModelReadyTimeoutError} via {@link buildReadyTimeoutError}.
278
470
  */
279
471
  protected readyWithTimeout(state: DocumentState): Promise<void>;
280
472
  /**
@@ -295,11 +487,13 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
295
487
  */
296
488
  protected buildReadyTimeoutError(state: DocumentState, elapsed: number): ModelReadyTimeoutError;
297
489
  /**
298
- * Persist a new source-model representation back to the document store
299
- * after an interactive edit. Adopters wire this against their
300
- * language-services facade. The `HydraniumGlspRecordingCommand` calls
301
- * it from its `postChange` hook to commit the edited AST back to the
302
- * document store.
490
+ * Persist a new source-model representation back to the document store after
491
+ * an interactive edit. Adopters wire this against their language-services
492
+ * facade. An operation calls it once, with the model projected from its
493
+ * copies; an undo or redo calls it with the transition resolved onto the
494
+ * current model. An implementation takes the root it wrote through
495
+ * {@link captureWrittenRoot}, which during an operation leaves the capture
496
+ * to the operation.
303
497
  *
304
498
  * Adopters whose source model is a structured transfer projection
305
499
  * round-tripped through `ModelService` should extend
@@ -320,14 +514,30 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
320
514
  * `JsonModelState` shape meet the framework state via structural
321
515
  * intersection at the recording-command call site.
322
516
  *
323
- * `version` is the based-on text-document version captured at command
324
- * start by `HydraniumGlspRecordingCommand.execute`. Adopters that
325
- * route through `ModelService.update` / `.save` pass it as the args'
326
- * `version` field to opt into the conflict gate; adopters that don't
327
- * care (or whose write path doesn't go through `ModelService`) ignore
328
- * the parameter. Undefined when the writer is not the recording-command
329
- * (e.g. external storage refresh paths).
330
- */
331
- abstract updateSourceModel(model: TSourceModel, version?: number): MaybePromise<void>;
517
+ * `baseVersion` is what the write was authored against: an operation's
518
+ * write, and an undo's or redo's, passes the {@link baseVersion} it read
519
+ * the model at. Adopters that write through the diagram's session forward
520
+ * it as the args' `baseVersion` field; adopters whose write path doesn't go
521
+ * through the session ignore it.
522
+ *
523
+ * **Optional, and every implementation must default it to {@link baseVersion}
524
+ * rather than to `'any'`.** Optional is forced: GLSP's `JsonModelState`
525
+ * declares a one-parameter `updateSourceModel` and calls it with one
526
+ * argument, so a second required parameter makes the state unassignable to
527
+ * the slot it has to fill. Defaulting to the state's own model version is
528
+ * what keeps that from costing anything — an operation handler calling
529
+ * `updateSourceModel(model)` gets the gate, and skipping it has to be typed
530
+ * out as `'any'`.
531
+ */
532
+ abstract updateSourceModel(model: TSourceModel, baseVersion?: BaseVersion): MaybePromise<void>;
533
+ /**
534
+ * `transition` as the documents would hold both ends after a write. A
535
+ * serializer may normalize what it writes, provided normalizing again
536
+ * changes nothing; an end left as recorded makes an undo or redo conflict
537
+ * with the write it follows. Default: unchanged.
538
+ */
539
+ normalizeTransition(transition: OperationTransition<TSourceModel>): Promise<OperationTransition<TSourceModel>>;
540
+ /** The root `model` parses back to once serialized for `uri`, as a write would leave it; nothing is written. */
541
+ protected roundTrip(uri: string, model: TransferElement): Promise<AstNode>;
332
542
  }
333
543
  //# sourceMappingURL=abstract-hydranium-glsp-state.d.ts.map
@@ -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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"}