@hydranium/core 1.0.0-next.204 → 1.0.0-next.206

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 (99) hide show
  1. package/lib/documents/ast-document-manager.js +4 -4
  2. package/lib/documents/ast-document-manager.js.map +1 -1
  3. package/lib/documents/client-ids.d.ts +1 -1
  4. package/lib/documents/client-ids.d.ts.map +1 -1
  5. package/lib/documents/client-ids.js +1 -1
  6. package/lib/documents/client-ids.js.map +1 -1
  7. package/lib/documents/client-session-registry.d.ts +24 -17
  8. package/lib/documents/client-session-registry.d.ts.map +1 -1
  9. package/lib/documents/client-session-registry.js +49 -29
  10. package/lib/documents/client-session-registry.js.map +1 -1
  11. package/lib/documents/dirty-state-tracker.d.ts +79 -0
  12. package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
  13. package/lib/documents/dirty-state-tracker.js +69 -0
  14. package/lib/documents/dirty-state-tracker.js.map +1 -0
  15. package/lib/documents/document-release-handler.d.ts +174 -0
  16. package/lib/documents/document-release-handler.d.ts.map +1 -0
  17. package/lib/documents/document-release-handler.js +270 -0
  18. package/lib/documents/document-release-handler.js.map +1 -0
  19. package/lib/documents/document-release-scheduler.d.ts +67 -0
  20. package/lib/documents/document-release-scheduler.d.ts.map +1 -0
  21. package/lib/documents/document-release-scheduler.js +80 -0
  22. package/lib/documents/document-release-scheduler.js.map +1 -0
  23. package/lib/documents/hydranium-text-documents.d.ts +130 -455
  24. package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
  25. package/lib/documents/hydranium-text-documents.js +362 -835
  26. package/lib/documents/hydranium-text-documents.js.map +1 -1
  27. package/lib/documents/index.d.ts +5 -1
  28. package/lib/documents/index.d.ts.map +1 -1
  29. package/lib/documents/index.js +5 -1
  30. package/lib/documents/index.js.map +1 -1
  31. package/lib/documents/language-client-shadow.d.ts +221 -0
  32. package/lib/documents/language-client-shadow.d.ts.map +1 -0
  33. package/lib/documents/language-client-shadow.js +288 -0
  34. package/lib/documents/language-client-shadow.js.map +1 -0
  35. package/lib/documents/text-ledger.d.ts +64 -0
  36. package/lib/documents/text-ledger.d.ts.map +1 -0
  37. package/lib/documents/text-ledger.js +63 -0
  38. package/lib/documents/text-ledger.js.map +1 -0
  39. package/lib/langium/document-builder/document-builder.d.ts +8 -7
  40. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  41. package/lib/langium/document-builder/document-builder.js +8 -7
  42. package/lib/langium/document-builder/document-builder.js.map +1 -1
  43. package/lib/langium/integrity/integrity-service.d.ts +1 -1
  44. package/lib/langium/integrity/integrity-service.js +4 -4
  45. package/lib/langium/integrity/integrity-service.js.map +1 -1
  46. package/lib/langium/model-service/client-session.d.ts +4 -4
  47. package/lib/langium/model-service/client-session.js +2 -2
  48. package/lib/langium/model-service/client-session.js.map +1 -1
  49. package/lib/langium/model-service/model-events.d.ts +8 -11
  50. package/lib/langium/model-service/model-events.d.ts.map +1 -1
  51. package/lib/langium/model-service/model-service.d.ts +12 -4
  52. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  53. package/lib/langium/model-service/model-service.js +1 -1
  54. package/lib/langium/model-service/model-service.js.map +1 -1
  55. package/lib/langium/module.d.ts +7 -0
  56. package/lib/langium/module.d.ts.map +1 -1
  57. package/lib/langium/module.js +3 -1
  58. package/lib/langium/module.js.map +1 -1
  59. package/lib/langium/workspace/file-not-found.d.ts +7 -1
  60. package/lib/langium/workspace/file-not-found.d.ts.map +1 -1
  61. package/lib/langium/workspace/file-not-found.js +14 -3
  62. package/lib/langium/workspace/file-not-found.js.map +1 -1
  63. package/lib/lsp/hydranium-document-update-handler.d.ts +6 -6
  64. package/lib/lsp/hydranium-document-update-handler.js +10 -10
  65. package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
  66. package/lib/testing/make-test-services.d.ts +3 -0
  67. package/lib/testing/make-test-services.d.ts.map +1 -1
  68. package/lib/testing/make-test-services.js +5 -2
  69. package/lib/testing/make-test-services.js.map +1 -1
  70. package/lib/testing/stub-hydranium-text-documents.d.ts +9 -6
  71. package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
  72. package/lib/testing/stub-hydranium-text-documents.js +19 -11
  73. package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
  74. package/package.json +5 -5
  75. package/src/documents/ast-document-manager.ts +4 -4
  76. package/src/documents/client-ids.ts +1 -1
  77. package/src/documents/client-session-registry.ts +55 -34
  78. package/src/documents/dirty-state-tracker.ts +130 -0
  79. package/src/documents/document-release-handler.ts +351 -0
  80. package/src/documents/document-release-scheduler.ts +121 -0
  81. package/src/documents/hydranium-text-documents.ts +395 -1034
  82. package/src/documents/index.ts +5 -1
  83. package/src/documents/language-client-shadow.ts +463 -0
  84. package/src/documents/text-ledger.ts +112 -0
  85. package/src/langium/document-builder/document-builder.ts +8 -7
  86. package/src/langium/integrity/integrity-service.ts +4 -4
  87. package/src/langium/model-service/client-session.ts +6 -6
  88. package/src/langium/model-service/model-events.ts +12 -11
  89. package/src/langium/model-service/model-service.ts +13 -4
  90. package/src/langium/module.ts +9 -1
  91. package/src/langium/workspace/file-not-found.ts +15 -3
  92. package/src/lsp/hydranium-document-update-handler.ts +10 -10
  93. package/src/testing/make-test-services.ts +7 -2
  94. package/src/testing/stub-hydranium-text-documents.ts +34 -21
  95. package/lib/documents/language-client-text-shadow.d.ts +0 -133
  96. package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
  97. package/lib/documents/language-client-text-shadow.js +0 -201
  98. package/lib/documents/language-client-text-shadow.js.map +0 -1
  99. package/src/documents/language-client-text-shadow.ts +0 -223
@@ -0,0 +1,288 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { textHash } from '@hydranium/protocol';
10
+ import { diffLines } from 'diff';
11
+ import { Range, TextDocumentContentChangeEvent as ContentChange, uinteger } from 'vscode-languageserver';
12
+ import { TextDocument } from 'vscode-languageserver-textdocument';
13
+ /**
14
+ * Upper bound on the pending pushes per URI. Echoes normally return within
15
+ * milliseconds; a queue this deep means the client stopped echoing.
16
+ */
17
+ const PENDING_ECHO_CAP = 32;
18
+ /** The range every full-document replace emitted here carries. */
19
+ const FULL_RANGE = Range.create(0, 0, uinteger.MAX_VALUE, uinteger.MAX_VALUE);
20
+ /**
21
+ * Whether `edits` is the single full-document replace a push emits when it has
22
+ * no usable baseline. A full replace is position-independent and lands on any
23
+ * client buffer; a line-keyed diff lands only on the text it was diffed
24
+ * against, so only the latter needs a client-version gate.
25
+ */
26
+ export function isFullReplace(edits) {
27
+ if (edits.length !== 1) {
28
+ return false;
29
+ }
30
+ const { start, end } = edits[0].range;
31
+ return start.line === FULL_RANGE.start.line && start.character === FULL_RANGE.start.character && end.line === FULL_RANGE.end.line;
32
+ }
33
+ export class DefaultLanguageClientShadow {
34
+ configuration;
35
+ tracer;
36
+ opens = new Map();
37
+ /** The diff baseline: the text the client is believed to hold. */
38
+ baselines = new Map();
39
+ /**
40
+ * The text the client declared at an open with no diff baseline, compared
41
+ * for equality only. A line-keyed diff keyed to this snapshot splices a
42
+ * buffer the client may have moved past.
43
+ */
44
+ openedTexts = new Map();
45
+ pending = new Map();
46
+ /**
47
+ * @param configuration the store's text-document factories, the store's own
48
+ * `create` and `update`. Probes go through them rather than `TextDocument`
49
+ * directly, so an adopter's custom text-document type applies ranges here
50
+ * as it does on the synced document; the bare `TextDocument.update` also
51
+ * refuses a document it did not create.
52
+ */
53
+ constructor(configuration, tracer) {
54
+ this.configuration = configuration;
55
+ this.tracer = tracer;
56
+ }
57
+ addOpen(key, clientUri, version, text, firstOpen) {
58
+ let uris = this.opens.get(key);
59
+ if (uris?.has(clientUri)) {
60
+ return;
61
+ }
62
+ if (!uris) {
63
+ uris = new Map();
64
+ this.opens.set(key, uris);
65
+ }
66
+ uris.set(clientUri, { declaredVersion: version });
67
+ if (!firstOpen) {
68
+ this.openedTexts.set(clientUri, text);
69
+ }
70
+ else if (!this.baselines.has(clientUri)) {
71
+ // A push to a closed file has the client open it from disk and apply
72
+ // afterwards, so a tracked text already names what it is about to hold.
73
+ this.baselines.set(clientUri, text);
74
+ }
75
+ }
76
+ declaredVersion(key, clientUri) {
77
+ return this.opens.get(key)?.get(clientUri)?.declaredVersion;
78
+ }
79
+ acceptChange(key, clientUri, version, document, changes) {
80
+ const state = this.opens.get(key)?.get(clientUri);
81
+ if (state) {
82
+ state.declaredVersion = version;
83
+ }
84
+ return this.classify(clientUri, document, changes);
85
+ }
86
+ /**
87
+ * Reconstruct the client's resulting buffer against the text its ranges
88
+ * address: the pre-push buffer of the oldest push still in flight, else
89
+ * what the client is believed to hold.
90
+ *
91
+ * The client applies pushes in order and echoes each against the buffer it
92
+ * held before that push, so the first echo belongs to the oldest entry.
93
+ * Matching against every pending hash, not only the oldest, recognises an
94
+ * echo a newer push already superseded, and consumes everything older too.
95
+ * A reconstruction matching none means the client's buffer went somewhere
96
+ * we did not send it, and the queue drops.
97
+ *
98
+ * Content equality is a sound echo proof because entries live only between
99
+ * a push and its echo, and `didChange` arrives in mutation order: an undo
100
+ * back to a previously pushed text revisits a past state, while the queue
101
+ * holds only in-flight ones.
102
+ */
103
+ classify(clientUri, document, changes) {
104
+ const queued = this.pending.get(clientUri);
105
+ const pending = queued?.length ? queued : undefined;
106
+ const clientText = pending?.[0].before ?? this.clientText(clientUri);
107
+ if (pending === undefined && (clientText === undefined || clientText === document.getText())) {
108
+ return { kind: 'direct' };
109
+ }
110
+ if (pending !== undefined && pending[0].before === undefined && changes.some(change => ContentChange.isIncremental(change))) {
111
+ // A push sent to a buffer it did not know: the tracked text is now the
112
+ // text that push moves the client to, the one text these ranges
113
+ // provably do not address. Dropped, the next push is a full replace. A
114
+ // full-text change reconstructs identically against any baseline.
115
+ this.invalidateClientText(clientUri);
116
+ return { kind: 'unreconstructable' };
117
+ }
118
+ const probe = this.configuration.create(clientUri, document.languageId, 0, clientText ?? document.getText());
119
+ const reconstructed = this.configuration.update(probe, changes, 0).getText();
120
+ if (pending !== undefined) {
121
+ const matchIndex = pending.findIndex(push => push.afterHash === textHash(reconstructed));
122
+ if (matchIndex >= 0) {
123
+ pending.splice(0, matchIndex + 1);
124
+ return { kind: 'echo' };
125
+ }
126
+ this.pending.delete(clientUri);
127
+ }
128
+ return { kind: 'divergent', text: reconstructed };
129
+ }
130
+ setClientText(clientUri, text) {
131
+ this.baselines.set(clientUri, text);
132
+ this.pending.delete(clientUri);
133
+ }
134
+ removeOpen(key, clientUri) {
135
+ const uris = this.opens.get(key);
136
+ if (uris?.delete(clientUri)) {
137
+ this.invalidateClientText(clientUri);
138
+ if (uris.size === 0) {
139
+ this.opens.delete(key);
140
+ }
141
+ }
142
+ }
143
+ isOpen(key, clientUri) {
144
+ const uris = this.opens.get(key);
145
+ return clientUri === undefined ? uris !== undefined : (uris?.has(clientUri) ?? false);
146
+ }
147
+ removeAllOpens(key) {
148
+ for (const clientUri of this.opens.get(key)?.keys() ?? []) {
149
+ this.invalidateClientText(clientUri);
150
+ }
151
+ this.opens.delete(key);
152
+ }
153
+ pushTargets(key, fallback) {
154
+ const uris = this.opens.get(key);
155
+ return uris && uris.size > 0 ? [...uris.keys()] : [fallback];
156
+ }
157
+ preparePush(key, clientUri, text) {
158
+ // Read before computing the edits, which moves the baseline: this is the
159
+ // only text the push's echo can be reconstructed against.
160
+ const before = this.clientText(clientUri);
161
+ const edits = this.computeEdits(clientUri, text);
162
+ if (edits.length === 0) {
163
+ return undefined;
164
+ }
165
+ this.recordPendingPush(clientUri, before, text);
166
+ // Captured now: a reopen while the push is in flight replaces the state.
167
+ const state = this.opens.get(key)?.get(clientUri);
168
+ // Gating a full replace turns a stale-by-one version into a refused
169
+ // update for no safety gain, and refuses the retry after a rejection.
170
+ const version = isFullReplace(edits) || state === undefined ? null : Math.max(state.declaredVersion, state.pushedVersion ?? state.declaredVersion);
171
+ let settled = false;
172
+ return {
173
+ clientUri,
174
+ edits,
175
+ version,
176
+ notifyOutcome: outcome => {
177
+ if (!settled) {
178
+ settled = true;
179
+ if (outcome === 'refused' && version !== null) {
180
+ this.tracer
181
+ .with(key)
182
+ .warn(`Language client refused applyEdit addressed at version ${version} (it last declared version ${state?.declaredVersion})`);
183
+ }
184
+ this.settle(clientUri, version, state, outcome);
185
+ }
186
+ }
187
+ };
188
+ }
189
+ /** What a prepared push's {@link PreparedLanguageClientPush.notifyOutcome} does. */
190
+ settle(clientUri, version, state, outcome) {
191
+ if (outcome !== 'applied') {
192
+ this.invalidateClientText(clientUri);
193
+ }
194
+ else if (version !== null && state) {
195
+ // A client steps once per applied edit that changes its buffer. Left
196
+ // to the echo, a push sent next is refused at the old version.
197
+ state.pushedVersion = version + 1;
198
+ }
199
+ }
200
+ invalidateClientText(clientUri) {
201
+ this.baselines.delete(clientUri);
202
+ this.openedTexts.delete(clientUri);
203
+ this.pending.delete(clientUri);
204
+ }
205
+ /** The text the client is believed to hold: the diff baseline, else what it declared at open. */
206
+ clientText(clientUri) {
207
+ return this.baselines.get(clientUri) ?? this.openedTexts.get(clientUri);
208
+ }
209
+ /**
210
+ * The edits that bring the client from its baseline to `text`, moving the
211
+ * baseline to `text`. A full replace without a baseline, none when the
212
+ * client opened with exactly `text` (pushing it anyway dirties the buffer on
213
+ * open), and otherwise a line diff, verified by applying it: a diff that
214
+ * does not reproduce `text` falls back to a full replace rather than
215
+ * corrupting the client.
216
+ */
217
+ computeEdits(clientUri, text) {
218
+ const old = this.baselines.get(clientUri);
219
+ if (old === text) {
220
+ return [];
221
+ }
222
+ this.baselines.set(clientUri, text);
223
+ const fullReplace = { range: FULL_RANGE, newText: text };
224
+ if (old === undefined) {
225
+ const openedText = this.openedTexts.get(clientUri);
226
+ this.openedTexts.delete(clientUri);
227
+ return openedText === text ? [] : [fullReplace];
228
+ }
229
+ const edits = diffToEdits(old, text);
230
+ const probe = this.configuration.create(clientUri, 'plaintext', 0, old);
231
+ if (TextDocument.applyEdits(probe, edits) !== text) {
232
+ this.tracer.with(clientUri).warn('Diff apply-verify fallback (apply-verify-mismatch) — using full-document replace');
233
+ return [fullReplace];
234
+ }
235
+ return edits;
236
+ }
237
+ /** Bounded, so an echo that never arrives cannot grow the queue without limit. */
238
+ recordPendingPush(clientUri, before, text) {
239
+ let queue = this.pending.get(clientUri);
240
+ if (!queue) {
241
+ queue = [];
242
+ this.pending.set(clientUri, queue);
243
+ }
244
+ queue.push({ before, afterHash: textHash(text) });
245
+ if (queue.length > PENDING_ECHO_CAP) {
246
+ queue.shift();
247
+ this.tracer.with(clientUri).debug(`Pending-echo queue exceeded ${PENDING_ECHO_CAP} entries; dropped the oldest`);
248
+ }
249
+ }
250
+ }
251
+ /**
252
+ * Convert a {@link diffLines} result to a list of LSP {@link TextEdit}s keyed on line positions
253
+ * in the *old* text. Contiguous added/removed hunks are coalesced into a single replace so the
254
+ * client sees one edit per changed region.
255
+ */
256
+ export function diffToEdits(oldText, newText) {
257
+ const hunks = diffLines(oldText, newText);
258
+ const edits = [];
259
+ let oldLine = 0;
260
+ let i = 0;
261
+ while (i < hunks.length) {
262
+ const hunk = hunks[i];
263
+ if (!hunk.added && !hunk.removed) {
264
+ oldLine += hunk.count ?? 0;
265
+ i++;
266
+ continue;
267
+ }
268
+ // Coalesce a run of add/remove hunks into a single replace for this region.
269
+ let removedLines = 0;
270
+ let addedText = '';
271
+ while (i < hunks.length && (hunks[i].added || hunks[i].removed)) {
272
+ if (hunks[i].removed) {
273
+ removedLines += hunks[i].count ?? 0;
274
+ }
275
+ if (hunks[i].added) {
276
+ addedText += hunks[i].value;
277
+ }
278
+ i++;
279
+ }
280
+ edits.push({
281
+ range: Range.create(oldLine, 0, oldLine + removedLines, 0),
282
+ newText: addedText
283
+ });
284
+ oldLine += removedLines;
285
+ }
286
+ return edits;
287
+ }
288
+ //# sourceMappingURL=language-client-shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-client-shadow.js","sourceRoot":"","sources":["../../src/documents/language-client-shadow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { type CanonicalUri, type TextVersion } from '@hydranium/protocol';
10
+ import { type TextDocument } from 'vscode-languageserver-textdocument';
11
+ /** What {@link TextLedger} holds for a document: where its version sequence stands, kept across closes and reopens. */
12
+ export interface TextRecord {
13
+ readonly version: TextVersion;
14
+ /** {@link textHash} of the text at that version. */
15
+ readonly hash: string;
16
+ }
17
+ /**
18
+ * Where each document's {@link TextVersion} sequence stands, and who authored
19
+ * each version; the text-side counterpart of `ModelLedger`.
20
+ *
21
+ * A record survives the document's release and is never pruned, not even when
22
+ * the file is deleted: a sequence that restarts lets a write based on the old
23
+ * text pass the base-version gate. Authors last only until the release.
24
+ */
25
+ export interface TextLedger {
26
+ /**
27
+ * The version a first open of `key` with `text` starts at: the record's
28
+ * version when the text is unchanged, one step on when it changed;
29
+ * `undefined` without a record.
30
+ */
31
+ openingVersion(key: CanonicalUri, text: string): TextVersion | undefined;
32
+ /** Keep where the sequence of the released `document` stands. */
33
+ record(key: CanonicalUri, document: TextDocument): void;
34
+ recordOf(key: CanonicalUri): TextRecord | undefined;
35
+ /**
36
+ * Text reached the closed document `key` outside the store's write paths.
37
+ * Steps the record iff `text` differs from it, and starts one at `0` when
38
+ * there is none.
39
+ */
40
+ reconcile(key: CanonicalUri, text: string): TextVersion;
41
+ /** {@link textHash} of `document`'s text, taken once per version. */
42
+ hashOf(document: TextDocument): string;
43
+ setAuthor(key: CanonicalUri, version: TextVersion, author: string): void;
44
+ /** The author of `version`, or of the latest version when `version` is omitted. */
45
+ authorOf(key: CanonicalUri, version?: TextVersion): string | undefined;
46
+ clearAuthors(key: CanonicalUri): void;
47
+ }
48
+ export declare class DefaultTextLedger implements TextLedger {
49
+ protected readonly records: Map<CanonicalUri, TextRecord>;
50
+ protected readonly authors: Map<CanonicalUri, string[]>;
51
+ protected readonly hashes: WeakMap<TextDocument, {
52
+ readonly version: number;
53
+ readonly hash: string;
54
+ }>;
55
+ openingVersion(key: CanonicalUri, text: string): TextVersion | undefined;
56
+ record(key: CanonicalUri, document: TextDocument): void;
57
+ recordOf(key: CanonicalUri): TextRecord | undefined;
58
+ reconcile(key: CanonicalUri, text: string): TextVersion;
59
+ hashOf(document: TextDocument): string;
60
+ setAuthor(key: CanonicalUri, version: TextVersion, author: string): void;
61
+ authorOf(key: CanonicalUri, version?: TextVersion): string | undefined;
62
+ clearAuthors(key: CanonicalUri): void;
63
+ }
64
+ //# sourceMappingURL=text-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-ledger.d.ts","sourceRoot":"","sources":["../../src/documents/text-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAY,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,uHAAuH;AACvH,MAAM,WAAW,UAAU;IACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACxB;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACzE,iEAAiE;IACjE,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;IACpD;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IACxD,qEAAqE;IACrE,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC;IACvC,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IACvE,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CACxC;AAED,qBAAa,iBAAkB,YAAW,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,OAAO,gCAAuC;IACjE,SAAS,CAAC,QAAQ,CAAC,OAAO,8BAAqC;IAC/D,SAAS,CAAC,QAAQ,CAAC,MAAM;0BAAiD,MAAM;uBAAiB,MAAM;OAAM;IAE7G,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAMvE;IAED,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAEtD;IAED,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAElD;IAED,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAStD;IAED,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAQrC;IAED,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOvE;IAED,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAIrE;IAED,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAEpC;CACH"}
@@ -0,0 +1,63 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ import { textHash } from '@hydranium/protocol';
10
+ export class DefaultTextLedger {
11
+ records = new Map();
12
+ authors = new Map();
13
+ hashes = new WeakMap();
14
+ openingVersion(key, text) {
15
+ const recorded = this.records.get(key);
16
+ if (recorded === undefined) {
17
+ return undefined;
18
+ }
19
+ return recorded.hash === textHash(text) ? recorded.version : recorded.version + 1;
20
+ }
21
+ record(key, document) {
22
+ this.records.set(key, { version: document.version, hash: this.hashOf(document) });
23
+ }
24
+ recordOf(key) {
25
+ return this.records.get(key);
26
+ }
27
+ reconcile(key, text) {
28
+ const hash = textHash(text);
29
+ const recorded = this.records.get(key);
30
+ if (recorded?.hash === hash) {
31
+ return recorded.version;
32
+ }
33
+ const version = recorded === undefined ? 0 : recorded.version + 1;
34
+ this.records.set(key, { version, hash });
35
+ return version;
36
+ }
37
+ hashOf(document) {
38
+ const taken = this.hashes.get(document);
39
+ if (taken?.version === document.version) {
40
+ return taken.hash;
41
+ }
42
+ const hash = textHash(document.getText());
43
+ this.hashes.set(document, { version: document.version, hash });
44
+ return hash;
45
+ }
46
+ setAuthor(key, version, author) {
47
+ let history = this.authors.get(key);
48
+ if (!history) {
49
+ history = [];
50
+ this.authors.set(key, history);
51
+ }
52
+ history[version] = author;
53
+ }
54
+ authorOf(key, version) {
55
+ const history = this.authors.get(key);
56
+ // `!== undefined` so version 0 is not read as "latest".
57
+ return version !== undefined ? history?.[version] : history?.at(-1);
58
+ }
59
+ clearAuthors(key) {
60
+ this.authors.delete(key);
61
+ }
62
+ }
63
+ //# sourceMappingURL=text-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-ledger.js","sourceRoot":"","sources":["../../src/documents/text-ledger.ts"],"names":[],"mappings":"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"}
@@ -21,15 +21,16 @@ export declare const DEFAULT_LOGGED_PHASES: DocumentState[];
21
21
  /**
22
22
  * The build reasons the framework stages through
23
23
  * {@link HydraniumDocumentBuilder.markNextReason}: the LSP events the update
24
- * handler dispatches on, and `didClose` for the revert the text store runs
25
- * after a last close. Exposed so a subclass layering reasons of its own keeps
26
- * the names the framework emits.
24
+ * handler dispatches on, and `didRelease` for the builds the
25
+ * `DocumentReleaseHandler` runs once the text store has released a document.
26
+ * Exposed so a subclass layering reasons of its own keeps the names the
27
+ * framework emits.
27
28
  */
28
29
  export declare const HYDRANIUM_BUILD_REASONS: Readonly<{
29
30
  readonly didOpen: 'didOpen';
30
31
  readonly didChangeContent: 'didChangeContent';
31
32
  readonly didChangeWatchedFiles: 'didChangeWatchedFiles';
32
- readonly didClose: 'didClose';
33
+ readonly didRelease: 'didRelease';
33
34
  }>;
34
35
  /** Constructor options for {@link HydraniumDocumentBuilder}. */
35
36
  export interface DocumentBuilderOptions extends LogNameOptions {
@@ -212,7 +213,7 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
212
213
  /**
213
214
  * Stage an LSP event name for the next `update()` call. Adopters call before
214
215
  * the update fires; `HydraniumDocumentUpdateHandler` does it for the LSP
215
- * events, and the text store for the revert that follows a last close.
216
+ * events, and the release handler for the builds that follow a release.
216
217
  *
217
218
  * The framework stages the value and never reads it back. The consumer is a
218
219
  * subclass overriding the build logging, which takes
@@ -438,7 +439,7 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
438
439
  * `drained` set, from a {@link WorkspaceLock} read: it runs once no write
439
440
  * runs or is queued, so no locked build is left that could still carry a
440
441
  * waited-on document. A cancelled build is usually followed by its
441
- * canceller's, but a write that builds nothing, such as a last-close revert
442
+ * canceller's, but a write that builds nothing, such as a release build
442
443
  * that finds its document reopened, leaves a wait armed during the build
443
444
  * with nothing to resolve it, and so does a build that fails. One read
444
445
  * serves every build that throws before it runs.
@@ -595,7 +596,7 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
595
596
  * both hold it by. A document created and not yet saved has text but no
596
597
  * file, and a policy that checks the disk reports it absent. A registered
597
598
  * document whose file has gone is kept too: its rebuild then fails on the
598
- * read, which is how the revert on last close learns to remove it rather
599
+ * read, which is how the release handler learns to remove it rather
599
600
  * than leave it holding its last client's text.
600
601
  */
601
602
  protected flattenAndAdaptURI(uri: URI): URI[];
@@ -1 +1 @@
1
- {"version":3,"file":"document-builder.d.ts","sourceRoot":"","sources":["../../../src/langium/document-builder/document-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-builder.d.ts","sourceRoot":"","sources":["../../../src/langium/document-builder/document-builder.ts"],"names":[],"mappings":"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"}
@@ -29,15 +29,16 @@ export const DEFAULT_LOGGED_PHASES = [
29
29
  /**
30
30
  * The build reasons the framework stages through
31
31
  * {@link HydraniumDocumentBuilder.markNextReason}: the LSP events the update
32
- * handler dispatches on, and `didClose` for the revert the text store runs
33
- * after a last close. Exposed so a subclass layering reasons of its own keeps
34
- * the names the framework emits.
32
+ * handler dispatches on, and `didRelease` for the builds the
33
+ * `DocumentReleaseHandler` runs once the text store has released a document.
34
+ * Exposed so a subclass layering reasons of its own keeps the names the
35
+ * framework emits.
35
36
  */
36
37
  export const HYDRANIUM_BUILD_REASONS = Object.freeze({
37
38
  didOpen: 'didOpen',
38
39
  didChangeContent: 'didChangeContent',
39
40
  didChangeWatchedFiles: 'didChangeWatchedFiles',
40
- didClose: 'didClose'
41
+ didRelease: 'didRelease'
41
42
  });
42
43
  /**
43
44
  * Consecutive re-queued builds that leave a waited-on document at the same state
@@ -174,7 +175,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
174
175
  /**
175
176
  * Stage an LSP event name for the next `update()` call. Adopters call before
176
177
  * the update fires; `HydraniumDocumentUpdateHandler` does it for the LSP
177
- * events, and the text store for the revert that follows a last close.
178
+ * events, and the release handler for the builds that follow a release.
178
179
  *
179
180
  * The framework stages the value and never reads it back. The consumer is a
180
181
  * subclass overriding the build logging, which takes
@@ -616,7 +617,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
616
617
  * `drained` set, from a {@link WorkspaceLock} read: it runs once no write
617
618
  * runs or is queued, so no locked build is left that could still carry a
618
619
  * waited-on document. A cancelled build is usually followed by its
619
- * canceller's, but a write that builds nothing, such as a last-close revert
620
+ * canceller's, but a write that builds nothing, such as a release build
620
621
  * that finds its document reopened, leaves a wait armed during the build
621
622
  * with nothing to resolve it, and so does a build that fails. One read
622
623
  * serves every build that throws before it runs.
@@ -868,7 +869,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
868
869
  * both hold it by. A document created and not yet saved has text but no
869
870
  * file, and a policy that checks the disk reports it absent. A registered
870
871
  * document whose file has gone is kept too: its rebuild then fails on the
871
- * read, which is how the revert on last close learns to remove it rather
872
+ * read, which is how the release handler learns to remove it rather
872
873
  * than leave it holding its last client's text.
873
874
  */
874
875
  flattenAndAdaptURI(uri) {