@hydranium/glsp-server 1.0.0-next.31 → 1.0.0-next.315

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 +80 -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 +250 -0
  19. package/lib/command/hydranium-glsp-operation-command.d.ts.map +1 -0
  20. package/lib/command/hydranium-glsp-operation-command.js +491 -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 +50 -15
  82. package/lib/node/start-glsp-server.d.ts.map +1 -1
  83. package/lib/node/start-glsp-server.js +97 -30
  84. package/lib/node/start-glsp-server.js.map +1 -1
  85. package/lib/state/abstract-hydranium-glsp-state.d.ts +326 -102
  86. package/lib/state/abstract-hydranium-glsp-state.d.ts.map +1 -1
  87. package/lib/state/abstract-hydranium-glsp-state.js +529 -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 +22 -9
  94. package/lib/state/full-text-hydranium-glsp-state.d.ts.map +1 -1
  95. package/lib/state/full-text-hydranium-glsp-state.js +45 -18
  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 +13 -27
  112. package/lib/state/reconcile-source-model-write.d.ts.map +1 -1
  113. package/lib/state/reconcile-source-model-write.js +44 -32
  114. package/lib/state/reconcile-source-model-write.js.map +1 -1
  115. package/lib/state/reconciling-multi-document-glsp-state.d.ts +125 -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 +242 -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 +36 -28
  120. package/lib/state/reconciling-transfer-hydranium-glsp-state.d.ts.map +1 -1
  121. package/lib/state/reconciling-transfer-hydranium-glsp-state.js +59 -42
  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 +324 -143
  144. package/lib/storage/hydranium-glsp-storage.d.ts.map +1 -1
  145. package/lib/storage/hydranium-glsp-storage.js +569 -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 +51 -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 +34 -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 +602 -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 +133 -40
  193. package/src/state/abstract-hydranium-glsp-state.ts +609 -154
  194. package/src/state/diagram-status.ts +41 -0
  195. package/src/state/full-text-hydranium-glsp-state.ts +46 -18
  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 +51 -53
  200. package/src/state/reconciling-multi-document-glsp-state.ts +276 -102
  201. package/src/state/reconciling-transfer-hydranium-glsp-state.ts +67 -45
  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 +647 -223
  208. package/src/storage/index.ts +2 -1
  209. package/src/storage/save-delivery-policy.ts +49 -0
  210. package/src/submission/hydranium-glsp-submission-handler.ts +91 -5
  211. package/src/testing/glsp-harness.ts +67 -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,162 @@ 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.
177
+ *
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.
194
+ *
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 whose `$container` chain
235
+ * reaches no document and no copy, such as a node built with no
236
+ * `$container` that is not a document's root.
237
+ *
238
+ * A node not created yet is asked about through a stand-in built with
239
+ * `buildAstNode`: its type, `$container` the container it would join, and
240
+ * `$containerProperty`, left unattached.
241
+ */
242
+ referenceInfoOf(node: AstNode, property: string): ReferenceInfo | undefined;
243
+ /**
244
+ * The built node of `node`, or of its nearest container that has one: a
245
+ * node the operation created has no built node, but its container's
246
+ * document and project are its own.
247
+ */
248
+ protected builtContextOf(node: AstNode): AstNode;
249
+ /**
250
+ * Take `root`, which a write of this state's own produced, as the source
251
+ * root; during an operation the operation takes it and captures it when it
252
+ * ends.
253
+ */
254
+ protected captureWrittenRoot(root: TRoot): void;
255
+ /**
256
+ * Resync after a write whose reconcile dropped the edit: during an
257
+ * operation the operation undoes its side effects, pushes nothing, and
258
+ * captures the document's current root when it ends.
259
+ */
260
+ protected writeDropped(): void;
261
+ /**
262
+ * Take the document's built root as the source root; during an operation,
263
+ * as the root the operation closes on. A write the document already held,
264
+ * and an undo or redo that wrote nothing while its steps may have rebuilt
265
+ * the document, leave this state on a root that predates the document. The
266
+ * built root can lag the text until the next build, whose refresh captures
267
+ * that, as after {@link writeDropped}.
268
+ */
269
+ captureBuiltRoot(): void;
270
+ /**
271
+ * Whether `node` belongs to the root its document is built to now, or to no
272
+ * document; a root a rebuild replaced holds only stale nodes.
273
+ */
274
+ protected isCurrentBuiltNode(node: AstNode): boolean;
275
+ /**
276
+ * The language services of the diagram document: the language
277
+ * {@link sourceUri} routed to at the last {@link setSourceRoot}.
106
278
  *
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.
279
+ * `undefined` until a document is loaded, as GLSP builds a session's
280
+ * handlers at `InitializeClientSession`, before `RequestModelAction`
281
+ * supplies the URI: read it when called, not at construction.
114
282
  *
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.
283
+ * Reach for it only when the thing you are asking about lives in the
284
+ * diagram document itself. Anything reached through a reference is decided
285
+ * by its own document: use {@link languageServicesFor}.
120
286
  */
121
- readonly diagramLanguage?: ServerLanguageServices;
287
+ get diagramLanguage(): ServerLanguageServices | undefined;
122
288
  /**
123
289
  * 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.
290
+ * document), a URI, or a URI string — falling back, for a node, to the
291
+ * language the index read from the diagram's root, and otherwise to
292
+ * {@link diagramLanguage}, when `target` routes nowhere.
126
293
  *
127
294
  * Use this wherever the thing being named, keyed or completed may live in
128
295
  * another document than the diagram. Two registered languages are free to
@@ -132,6 +299,9 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
132
299
  * diagnostic. The fallback covers the genuinely unroutable case, a synthetic
133
300
  * node not yet attached to a document, where the diagram's own language is
134
301
  * the only defensible answer.
302
+ *
303
+ * A node routes through {@link HydraniumGlspIndex.languageServicesFor}, so
304
+ * an override of the index's routing applies here too.
135
305
  */
136
306
  languageServicesFor(target: LanguageTarget | undefined): ServerLanguageServices | undefined;
137
307
  /**
@@ -151,46 +321,35 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
151
321
  scopeProviderFor(target: LanguageTarget | undefined): HydraniumScopeProvider | undefined;
152
322
  /** The `ReferenceCandidateProvider` of the language owning `target`. See {@link nameProviderFor}. */
153
323
  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
324
  /** The observability handle as a plain {@link Logger} (a {@link Tracer} is-a Logger). */
169
325
  get logger(): Logger;
170
- /** URI-tagged once {@link setSourceRoot} has run; the class-tagged injected {@link baseTracer} before that. */
326
+ /** URI-tagged once a source root is captured; the class-tagged injected {@link baseTracer} before that. */
171
327
  get tracer(): Tracer;
172
328
  /**
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`.
329
+ * Model version of the root the last {@link captureSourceRoot} took,
330
+ * frozen until the next one.
177
331
  *
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
332
+ * The base an operation's write is gated on, taken when the operation
333
+ * opens; nothing captures during an operation, so it is the version of the
334
+ * root the operation's copies were made from. See
182
335
  * `@hydranium/protocol#ConflictError` for the detection contract.
183
336
  *
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.
337
+ * **This, not a number read at write time, is what a write must be gated
338
+ * on.** A version read when the write is issued is the store's current one,
339
+ * so it matches by construction and the gate can never fire.
340
+ */
341
+ get baseVersion(): ModelVersion;
342
+ /**
343
+ * {@link baseVersion} as a plain number: the store's version of the text the
344
+ * root was parsed from.
345
+ *
346
+ * `UNRECORDED_VERSION` when the document was not built when the snapshot
347
+ * was taken, which no write matches.
189
348
  */
190
349
  get version(): number;
191
350
  /**
192
- * Register `uri` as a document this state also writes, capturing its current
193
- * text-document version.
351
+ * Register `uri` as a document this state also writes, snapshotting its
352
+ * current text-document version.
194
353
  *
195
354
  * A diagram whose layout lives in its own file, or whose canvas creates
196
355
  * elements in a referenced semantic document, writes more than the document
@@ -203,7 +362,7 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
203
362
  * identified once the operation names the node. What the framework supplies
204
363
  * is the part an adopter cannot reconstruct after the fact — the version each
205
364
  * document was at BEFORE the command mutated anything (see
206
- * {@link capturedVersionOf}). Idempotent; registering the primary is ignored,
365
+ * {@link baseVersionOf}). Idempotent; registering the primary is ignored,
207
366
  * since {@link version} already tracks it. Registering a URI not already in
208
367
  * the set fires {@link onSecondaryUrisChanged}.
209
368
  */
@@ -215,14 +374,15 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
215
374
  untrackSecondaryDocuments(): void;
216
375
  /**
217
376
  * 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.
377
+ * tracked document's model version is merely refreshed, which happens on
378
+ * every {@link captureSourceRoot} and changes nothing a subscriber cares about.
220
379
  *
221
380
  * **This exists so no caller has to know when the set can change.** The set is
222
381
  * 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.
382
+ * operation handler naming a node — not a read of the source root. A
383
+ * subscriber that instead re-derived the set after each such read would miss
384
+ * exactly that case, and miss it silently: the document would simply never be
385
+ * watched, with nothing logged.
226
386
  * Announcing the change here moves the obligation to the one place that can
227
387
  * always discharge it.
228
388
  *
@@ -234,27 +394,53 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
234
394
  get onSecondaryUrisChanged(): Event<void>;
235
395
  /** Registered secondary document URIs, in registration order. */
236
396
  get secondaryUris(): readonly string[];
397
+ /** Active statuses, least recently set first. See {@link setStatus}. */
398
+ protected readonly statuses: Map<DiagramStatus, DiagramStatusEntry>;
399
+ /** Backing emitter for {@link onStatusChanged}. */
400
+ protected readonly statusChangedEmitter: Emitter<void>;
237
401
  /**
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.
402
+ * Set `status`'s entry, or withdraw it with `undefined`, and recompute
403
+ * {@link currentStatus} and {@link editMode} from every active entry.
241
404
  *
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.
405
+ * `editMode` is derived here and nowhere else: a writer that assigns it
406
+ * directly is overwritten by the next status change, and its write is not
407
+ * announced on {@link onStatusChanged}.
245
408
  */
246
- capturedVersionOf(uri: string): number | undefined;
409
+ setStatus(status: DiagramStatus, entry: DiagramStatusEntry | undefined): void;
410
+ /** The active entry whose message the client shows: highest severity, then most recently set. */
411
+ get currentStatus(): DiagramStatusEntry | undefined;
412
+ /** The active statuses that block editing; empty while the diagram is editable. */
413
+ get readonlyStatuses(): DiagramStatus[];
414
+ /** The status that supplies {@link currentStatus}, for a log line naming it. */
415
+ get currentStatusSource(): DiagramStatus | undefined;
416
+ /** Fires when {@link currentStatus} or {@link editMode} changes. */
417
+ get onStatusChanged(): Event<void>;
247
418
  /**
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.
419
+ * The base version of a write of `uri`: {@link baseVersion} for the primary,
420
+ * the version taken at {@link trackSecondaryDocument} (refreshed by
421
+ * {@link captureSourceRoot}) for a secondary, `undefined` for anything untracked.
422
+ *
423
+ * `undefined` rather than v0 for an untracked URI deliberately: `0` is a real
424
+ * version meaning "present but never edited", so collapsing the two would let
425
+ * a caller gate a write against a document this state never read.
254
426
  */
255
- protected readDocumentVersion(uri: string): number;
256
- /** Re-read every registered secondary's version from the document store. */
427
+ baseVersionOf(uri: string): ModelVersion | undefined;
428
+ /** Re-take every registered secondary's built root and the model version of that root. */
257
429
  protected refreshSecondaryVersions(): void;
430
+ /**
431
+ * The built root of `uri`, looked up through the model service's
432
+ * canonicalizing gateway so a symlinked URI does not strand without one;
433
+ * `undefined` for a URI with no parsed document, whose version is then
434
+ * `UNRECORDED_VERSION`, which no write matches. The store counts a file it
435
+ * has not built at `0`, and so does the placeholder the builder registers
436
+ * before its parse, and a write based on `0` overwrites text this state
437
+ * never read.
438
+ */
439
+ protected readBuiltRoot(uri: string): AstNode | undefined;
440
+ /** Take `root` as the secondary `uri` was read at, and its version, `UNRECORDED_VERSION` without one. */
441
+ protected recordSecondary(uri: string, root: AstNode | undefined): void;
442
+ /** The root the secondary `uri` was read at; see {@link capturedRoots}. */
443
+ protected capturedRootOf(uri: string): AstNode | undefined;
258
444
  /**
259
445
  * Re-capture the source root from the current Langium document,
260
446
  * replacing any orphaned root. A rebuild between an earlier
@@ -263,18 +449,38 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
263
449
  * handlers) must see the root the freshly built document carries.
264
450
  */
265
451
  protected refreshSourceRoot(): void;
452
+ /**
453
+ * The root that `uri`'s text parses to (the text store's, or the built
454
+ * document's when the store holds none) and the store's version of that
455
+ * text, read once the document has validated; `undefined` when it cannot be
456
+ * read. The version is read in the tick the text is, so a write based on it
457
+ * conflicts with any edit made after.
458
+ *
459
+ * **Parsed afresh, never the built root.** The built root can lag the
460
+ * store, and a root behind the text it is versioned with makes the replay
461
+ * drop the edits it lacks. The root is parsed, not linked: an encoder hook
462
+ * reading a reference's `ref` sees `undefined` on it.
463
+ */
464
+ protected readCurrentRoot(uri: string): Promise<{
465
+ root: AstNode;
466
+ version: ModelVersion;
467
+ } | undefined>;
266
468
  /**
267
469
  * Wait until the captured document reaches `state`, then run
268
470
  * {@link onReadyRefreshed} so consumers see a fresh AST. Wraps the
269
471
  * wait in {@link Tracer.time} for observability.
472
+ *
473
+ * A source not in the document registry is built first, through
474
+ * `ModelService.rebuild`. For a source with neither a file nor text, that
475
+ * build leaves no document, and this rejects rather than timing out.
270
476
  */
271
477
  ready(state: DocumentState): Promise<void>;
272
478
  /**
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}.
479
+ * Race `ModelService.ensureDocumentState`, which builds a root behind its
480
+ * text, against {@link readyTimeoutMs}. If the timeout fires but the
481
+ * document has already reached `state`, log a warning naming the cause, a
482
+ * root behind its text or a missed phase event, and resolve; otherwise
483
+ * raise {@link ModelReadyTimeoutError} via {@link buildReadyTimeoutError}.
278
484
  */
279
485
  protected readyWithTimeout(state: DocumentState): Promise<void>;
280
486
  /**
@@ -295,11 +501,13 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
295
501
  */
296
502
  protected buildReadyTimeoutError(state: DocumentState, elapsed: number): ModelReadyTimeoutError;
297
503
  /**
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.
504
+ * Persist a new source-model representation back to the document store after
505
+ * an interactive edit. Adopters wire this against their language-services
506
+ * facade. An operation calls it once, with the model projected from its
507
+ * copies; an undo or redo calls it with the transition resolved onto the
508
+ * current model. An implementation takes the root it wrote through
509
+ * {@link captureWrittenRoot}, which during an operation leaves the capture
510
+ * to the operation.
303
511
  *
304
512
  * Adopters whose source model is a structured transfer projection
305
513
  * round-tripped through `ModelService` should extend
@@ -320,14 +528,30 @@ export declare abstract class AbstractHydraniumGlspState<TRoot extends AstNode,
320
528
  * `JsonModelState` shape meet the framework state via structural
321
529
  * intersection at the recording-command call site.
322
530
  *
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>;
531
+ * `baseVersion` is what the write was authored against: an operation's
532
+ * write, and an undo's or redo's, passes the {@link baseVersion} it read
533
+ * the model at. Adopters that write through the diagram's session forward
534
+ * it as the args' `baseVersion` field; adopters whose write path doesn't go
535
+ * through the session ignore it.
536
+ *
537
+ * **Optional, and every implementation must default it to {@link baseVersion}
538
+ * rather than to `'any'`.** Optional is forced: GLSP's `JsonModelState`
539
+ * declares a one-parameter `updateSourceModel` and calls it with one
540
+ * argument, so a second required parameter makes the state unassignable to
541
+ * the slot it has to fill. Defaulting to the state's own model version is
542
+ * what keeps that from costing anything — an operation handler calling
543
+ * `updateSourceModel(model)` gets the gate, and skipping it has to be typed
544
+ * out as `'any'`.
545
+ */
546
+ abstract updateSourceModel(model: TSourceModel, baseVersion?: BaseVersion): MaybePromise<void>;
547
+ /**
548
+ * `transition` as the documents would hold both ends after a write. A
549
+ * serializer may normalize what it writes, provided normalizing again
550
+ * changes nothing; an end left as recorded makes an undo or redo conflict
551
+ * with the write it follows. Default: unchanged.
552
+ */
553
+ normalizeTransition(transition: OperationTransition<TSourceModel>): Promise<OperationTransition<TSourceModel>>;
554
+ /** The root `model` parses back to once serialized for `uri`, as a write would leave it; nothing is written. */
555
+ protected roundTrip(uri: string, model: TransferElement): Promise<AstNode>;
332
556
  }
333
557
  //# 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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"}