@hydranium/core 1.0.0-next.187 → 1.0.0-next.188
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/documents/ast-document-manager.d.ts +26 -44
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +20 -50
- package/lib/documents/ast-document-manager.js.map +1 -1
- package/lib/documents/hydranium-text-documents.d.ts +87 -30
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +201 -37
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +2 -0
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +2 -0
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/model-ledger.d.ts +47 -0
- package/lib/documents/model-ledger.d.ts.map +1 -0
- package/lib/documents/model-ledger.js +30 -0
- package/lib/documents/model-ledger.js.map +1 -0
- package/lib/documents/version-sync-service.d.ts +134 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +171 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +16 -0
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +31 -25
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +43 -39
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +6 -15
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +14 -10
- package/lib/langium/model-service/client-session.d.ts.map +1 -1
- package/lib/langium/model-service/client-session.js +18 -15
- package/lib/langium/model-service/client-session.js.map +1 -1
- package/lib/langium/model-service/model-service.d.ts +91 -41
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +127 -50
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +6 -0
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +5 -1
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +10 -1
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/shared-services.d.ts +6 -2
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/shared-services.js.map +1 -1
- package/lib/langium/transfer/transfer-encoder.d.ts +19 -10
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +8 -7
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +7 -0
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +10 -0
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +1 -0
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +7 -0
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +10 -2
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/stub-ast-document-manager.d.ts +3 -2
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +7 -1
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.d.ts +2 -2
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.js +6 -1
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
- package/package.json +5 -5
- package/src/documents/ast-document-manager.ts +45 -77
- package/src/documents/hydranium-text-documents.ts +225 -46
- package/src/documents/index.ts +2 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/version-sync-service.ts +267 -0
- package/src/langium/bootstrap.ts +16 -0
- package/src/langium/document-builder/document-builder.ts +76 -37
- package/src/langium/integrity/integrity-service.ts +6 -15
- package/src/langium/model-service/client-session.ts +29 -21
- package/src/langium/model-service/model-service.ts +182 -64
- package/src/langium/module.ts +9 -1
- package/src/langium/residency/cst-residency-service.ts +10 -1
- package/src/langium/shared-services.ts +6 -2
- package/src/langium/transfer/transfer-encoder.ts +25 -18
- package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
- package/src/langium/workspace/langium-documents.ts +11 -0
- package/src/lsp/hydranium-document-update-handler.ts +3 -0
- package/src/testing/make-test-services.ts +15 -2
- package/src/testing/stub-ast-document-manager.ts +10 -2
- package/src/testing/stub-hydranium-text-documents.ts +8 -3
|
@@ -0,0 +1,47 @@
|
|
|
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 AstNode } from '@hydranium/langium';
|
|
10
|
+
import { type ModelVersion } from '@hydranium/protocol';
|
|
11
|
+
/** What {@link ModelLedger} holds for one root. */
|
|
12
|
+
export interface ModelRecord {
|
|
13
|
+
readonly version: ModelVersion;
|
|
14
|
+
/** For a root whose CST no longer is the text it describes: changed in place, or shed. */
|
|
15
|
+
readonly text?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The version of the text each root was parsed from, and that text where the
|
|
19
|
+
* root's CST does not hold it. Stores what it is told; the rest of the
|
|
20
|
+
* framework relies on these:
|
|
21
|
+
*
|
|
22
|
+
* - every workspace root is recorded through `VersionSyncService.modelProduced` when produced;
|
|
23
|
+
* - a version is recorded only for text the store held at that version, else `STALE_VERSION`;
|
|
24
|
+
* - the builder's placeholder for a file it has not parsed carries no version;
|
|
25
|
+
* - re-recording a root without text keeps the text recorded before.
|
|
26
|
+
*/
|
|
27
|
+
export interface ModelLedger {
|
|
28
|
+
record(root: AstNode, version: number, text?: string): void;
|
|
29
|
+
/** `UNRECORDED_VERSION`, which every write conflicts with, for a root nothing recorded. */
|
|
30
|
+
versionOf(root: AstNode): ModelVersion;
|
|
31
|
+
/** The recorded text, else the root's CST text; `undefined` for a root with neither. */
|
|
32
|
+
textOf(root: AstNode): string | undefined;
|
|
33
|
+
/** Mark `root`, registered before any parse, as no parse of any text, dropping its record. */
|
|
34
|
+
markPlaceholder(root: AstNode): void;
|
|
35
|
+
/** Keyed on the root, not its state: a rebuilt document is reset below `Parsed` but keeps its root. */
|
|
36
|
+
isPlaceholder(root: AstNode): boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class DefaultModelLedger implements ModelLedger {
|
|
39
|
+
protected readonly records: WeakMap<AstNode, ModelRecord>;
|
|
40
|
+
protected readonly placeholders: WeakSet<AstNode>;
|
|
41
|
+
record(root: AstNode, version: number, text?: string): void;
|
|
42
|
+
versionOf(root: AstNode): ModelVersion;
|
|
43
|
+
textOf(root: AstNode): string | undefined;
|
|
44
|
+
markPlaceholder(root: AstNode): void;
|
|
45
|
+
isPlaceholder(root: AstNode): boolean;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=model-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-ledger.d.ts","sourceRoot":"","sources":["../../src/documents/model-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAkB,KAAK,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAE5F,mDAAmD;AACnD,MAAM,WAAW,WAAW;IACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IACzB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,2FAA2F;IAC3F,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC;IACvC,wFAAwF;IACxF,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C,8FAA8F;IAC9F,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,uGAAuG;IACvG,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACxC;AAED,qBAAa,kBAAmB,YAAW,WAAW;IACnD,SAAS,CAAC,QAAQ,CAAC,OAAO,gCAAuC;IACjE,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA0B;IAEzD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAE1D;IAED,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAErC;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAExC;IAED,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGnC;IAED,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEpC;CACH"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 { asModelVersion, UNRECORDED_VERSION } from '@hydranium/protocol';
|
|
10
|
+
export class DefaultModelLedger {
|
|
11
|
+
records = new WeakMap();
|
|
12
|
+
placeholders = new WeakSet();
|
|
13
|
+
record(root, version, text) {
|
|
14
|
+
this.records.set(root, { version: asModelVersion(version), text: text ?? this.records.get(root)?.text });
|
|
15
|
+
}
|
|
16
|
+
versionOf(root) {
|
|
17
|
+
return this.records.get(root)?.version ?? UNRECORDED_VERSION;
|
|
18
|
+
}
|
|
19
|
+
textOf(root) {
|
|
20
|
+
return this.records.get(root)?.text ?? root.$cstNode?.root.fullText;
|
|
21
|
+
}
|
|
22
|
+
markPlaceholder(root) {
|
|
23
|
+
this.placeholders.add(root);
|
|
24
|
+
this.records.delete(root);
|
|
25
|
+
}
|
|
26
|
+
isPlaceholder(root) {
|
|
27
|
+
return this.placeholders.has(root);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=model-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-ledger.js","sourceRoot":"","sources":["../../src/documents/model-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,cAAc,EAAqB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA+B5F,MAAM,OAAO,kBAAkB;IACT,OAAO,GAAG,IAAI,OAAO,EAAwB,CAAC;IAC9C,YAAY,GAAG,IAAI,OAAO,EAAW,CAAC;IAEzD,MAAM,CAAC,IAAa,EAAE,OAAe,EAAE,IAAa;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,SAAS,CAAC,IAAa;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,kBAAkB,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,IAAa;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;IACvE,CAAC;IAED,eAAe,CAAC,IAAa;QAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,IAAa;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACH"}
|
|
@@ -0,0 +1,134 @@
|
|
|
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 LangiumDocument, type URI } from '@hydranium/langium';
|
|
10
|
+
import { type Tracer } from '@hydranium/protocol';
|
|
11
|
+
import { Disposable, Emitter, type Event } from 'vscode-languageserver-protocol';
|
|
12
|
+
import { type LogNameOptions } from '../langium/diagnostics/logger.js';
|
|
13
|
+
import { type ServerSharedServices } from '../langium/module.js';
|
|
14
|
+
/** A build {@link VersionSyncService.requestRecoveryBuild} schedules. */
|
|
15
|
+
export interface RecoveryBuildRequest {
|
|
16
|
+
/** Remove the document instead of building it. */
|
|
17
|
+
readonly deleted?: boolean;
|
|
18
|
+
/** Staged for the build, as `HydraniumDocumentBuilder.scheduleUpdate` takes it. */
|
|
19
|
+
readonly reason?: string;
|
|
20
|
+
/** Asked again inside the lock, where a build that ran meanwhile may have made the request moot. */
|
|
21
|
+
readonly stillNeeded: () => boolean;
|
|
22
|
+
/** Build even while a {@link VersionSyncService.registerDeferredBuilds} check holds the URI back. */
|
|
23
|
+
readonly ignoreDeferred?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Keeps each workspace root's `ModelLedger` record in step with the
|
|
27
|
+
* text store, and owns every build that syncs a root to its text or recovers
|
|
28
|
+
* one a build left behind.
|
|
29
|
+
*/
|
|
30
|
+
export interface VersionSyncService {
|
|
31
|
+
/**
|
|
32
|
+
* Report a root a factory, registry, integrity repair or other producer
|
|
33
|
+
* made. Below `Parsed` it is marked a placeholder. Otherwise `origin.version`,
|
|
34
|
+
* the store's version read before the parse, is recorded; a registered
|
|
35
|
+
* document is then reconciled with the store, re-versioned and recorded at
|
|
36
|
+
* the store's version of its text, built if behind, and announced on
|
|
37
|
+
* {@link onDidRecordModel}. `origin.text` stands for a root whose CST is not
|
|
38
|
+
* the text it describes.
|
|
39
|
+
*/
|
|
40
|
+
modelProduced(document: LangiumDocument, origin?: {
|
|
41
|
+
version?: number;
|
|
42
|
+
text?: string;
|
|
43
|
+
}): void;
|
|
44
|
+
/**
|
|
45
|
+
* Build `uri` from a `WorkspaceLock` read, so the build queues behind a
|
|
46
|
+
* running one rather than cancelling it. Requests made while one for `uri`
|
|
47
|
+
* is pending share its next build. Resolves `true` once a build that carried
|
|
48
|
+
* this request completed, or once a check before a build found it no longer
|
|
49
|
+
* needed or deferred. A build a later write cancelled does not count: the
|
|
50
|
+
* request rides the next one. Resolves `false` once builds carrying this
|
|
51
|
+
* request have failed more often than it may retry, so a caller waiting on
|
|
52
|
+
* the build can stop. Never rejects.
|
|
53
|
+
*/
|
|
54
|
+
requestRecoveryBuild(uri: URI, request: RecoveryBuildRequest): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Build `uri` unless it is {@link isSyncedTo synced to} `textVersion`, asked
|
|
57
|
+
* again inside the lock. `undefined` when no build is needed, else the
|
|
58
|
+
* {@link requestRecoveryBuild} answer.
|
|
59
|
+
*/
|
|
60
|
+
syncTo(uri: URI, textVersion: number): Promise<boolean> | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Whether `uri`'s root was parsed from text at `textVersion` or later; requests
|
|
63
|
+
* nothing. A root with no recorded version or a placeholder counts as synced,
|
|
64
|
+
* since no build records a version for it, and so does a URI with no document.
|
|
65
|
+
*/
|
|
66
|
+
isSyncedTo(uri: URI, textVersion: number): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Register `isDeferred`, which answers whether its caller holds back a build
|
|
69
|
+
* of a URI it will request later, as the update handler does for a debounced
|
|
70
|
+
* editor change. A caller that drops a held change has to leave the URI to
|
|
71
|
+
* another build.
|
|
72
|
+
*/
|
|
73
|
+
registerDeferredBuilds(isDeferred: (uri: URI) => boolean): Disposable;
|
|
74
|
+
/**
|
|
75
|
+
* Fires for every reconciled root. A cancel cannot skip it, unlike a
|
|
76
|
+
* `Parsed` phase listener. It can fire inside a build's write lock, so a
|
|
77
|
+
* listener that requests a build must not await it.
|
|
78
|
+
*/
|
|
79
|
+
readonly onDidRecordModel: Event<LangiumDocument>;
|
|
80
|
+
}
|
|
81
|
+
/** A request waiting in {@link PendingRecoveryBuilds}, with the failed builds that carried it. */
|
|
82
|
+
export interface QueuedRecoveryBuild {
|
|
83
|
+
readonly request: RecoveryBuildRequest;
|
|
84
|
+
failures: number;
|
|
85
|
+
readonly answer: (built: boolean) => void;
|
|
86
|
+
}
|
|
87
|
+
/** The requests waiting on one URI's builds in {@link DefaultVersionSyncService}. */
|
|
88
|
+
export interface PendingRecoveryBuilds {
|
|
89
|
+
readonly queued: QueuedRecoveryBuild[];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Collaborators are resolved per call: the registry and its document factory,
|
|
93
|
+
* which construct each other, report roots to this service.
|
|
94
|
+
*/
|
|
95
|
+
export declare class DefaultVersionSyncService implements VersionSyncService {
|
|
96
|
+
protected readonly services: ServerSharedServices;
|
|
97
|
+
protected readonly tracer: Tracer;
|
|
98
|
+
protected readonly recordedEmitter: Emitter<LangiumDocument<import("@hydranium/langium").AstNode>>;
|
|
99
|
+
protected readonly deferredBuildChecks: Set<(uri: URI) => boolean>;
|
|
100
|
+
protected readonly pendingBuilds: Map<string, PendingRecoveryBuilds>;
|
|
101
|
+
/** Retries of each request after a failed build before it is answered `false`. */
|
|
102
|
+
protected readonly maxBuildRetries: number;
|
|
103
|
+
constructor(services: ServerSharedServices, options?: LogNameOptions);
|
|
104
|
+
get onDidRecordModel(): Event<LangiumDocument>;
|
|
105
|
+
modelProduced(document: LangiumDocument, origin?: {
|
|
106
|
+
version?: number;
|
|
107
|
+
text?: string;
|
|
108
|
+
}): void;
|
|
109
|
+
syncTo(uri: URI, textVersion: number): Promise<boolean> | undefined;
|
|
110
|
+
requestRecoveryBuild(uri: URI, request: RecoveryBuildRequest): Promise<boolean>;
|
|
111
|
+
registerDeferredBuilds(isDeferred: (uri: URI) => boolean): Disposable;
|
|
112
|
+
isSyncedTo(uri: URI, textVersion: number): boolean;
|
|
113
|
+
/** The text `document`'s root was parsed from, or for a root built without either record or CST, the document's own. */
|
|
114
|
+
protected parsedText(document: LangiumDocument): string;
|
|
115
|
+
/**
|
|
116
|
+
* Run `entry`'s requests, one build per batch, until none is queued, and
|
|
117
|
+
* answer each. A request a failed build carried is queued again
|
|
118
|
+
* {@link maxBuildRetries} times, then answered `false`; one a cancelled
|
|
119
|
+
* build carried is queued again without counting. The entry is dropped
|
|
120
|
+
* in the same tick as the last check of the queue, so no request lands in
|
|
121
|
+
* an entry nothing runs any more.
|
|
122
|
+
*/
|
|
123
|
+
protected runBuilds(key: string, uri: URI, entry: PendingRecoveryBuilds): Promise<void>;
|
|
124
|
+
/** Whether `request` still needs its build, and no deferral it heeds holds it back. Runs inside the lock read. */
|
|
125
|
+
protected isStillNeeded(uri: URI, request: RecoveryBuildRequest): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* One build for every request of `batch`, removing the document when the
|
|
128
|
+
* latest of them asks to, as `HydraniumDocumentBuilder.scheduleUpdate`
|
|
129
|
+
* merges a change and a deletion. Runs inside the lock read.
|
|
130
|
+
*/
|
|
131
|
+
protected scheduleBatch(uri: URI, batch: readonly RecoveryBuildRequest[]): Promise<void>;
|
|
132
|
+
protected isDeferred(uri: URI): boolean;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=version-sync-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-sync-service.d.ts","sourceRoot":"","sources":["../../src/documents/version-sync-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
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 { DocumentState } from '@hydranium/langium';
|
|
10
|
+
import { UNRECORDED_VERSION } from '@hydranium/protocol';
|
|
11
|
+
import { Disposable, Emitter } from 'vscode-languageserver-protocol';
|
|
12
|
+
import { HydraniumWorkspaceLock } from '../langium/workspace/hydranium-workspace-lock.js';
|
|
13
|
+
import { HydraniumTextDocuments } from './hydranium-text-documents.js';
|
|
14
|
+
/**
|
|
15
|
+
* Collaborators are resolved per call: the registry and its document factory,
|
|
16
|
+
* which construct each other, report roots to this service.
|
|
17
|
+
*/
|
|
18
|
+
export class DefaultVersionSyncService {
|
|
19
|
+
services;
|
|
20
|
+
tracer;
|
|
21
|
+
recordedEmitter = new Emitter();
|
|
22
|
+
deferredBuildChecks = new Set();
|
|
23
|
+
pendingBuilds = new Map();
|
|
24
|
+
/** Retries of each request after a failed build before it is answered `false`. */
|
|
25
|
+
maxBuildRetries = 1;
|
|
26
|
+
constructor(services, options = {}) {
|
|
27
|
+
this.services = services;
|
|
28
|
+
this.tracer = services.Tracer.for(options.logName ?? 'VersionSyncService').trace('instantiated');
|
|
29
|
+
}
|
|
30
|
+
get onDidRecordModel() {
|
|
31
|
+
return this.recordedEmitter.event;
|
|
32
|
+
}
|
|
33
|
+
modelProduced(document, origin = {}) {
|
|
34
|
+
const workspace = this.services.workspace;
|
|
35
|
+
const ledger = workspace.ModelLedger;
|
|
36
|
+
const root = document.parseResult.value;
|
|
37
|
+
if (document.state < DocumentState.Parsed) {
|
|
38
|
+
ledger.markPlaceholder(root);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (origin.version !== undefined) {
|
|
42
|
+
ledger.record(root, origin.version, origin.text);
|
|
43
|
+
}
|
|
44
|
+
const store = workspace.TextDocuments;
|
|
45
|
+
// Unregistered, it is a probe or a load whose registration reports it again.
|
|
46
|
+
if (!(store instanceof HydraniumTextDocuments) || workspace.LangiumDocuments.getDocument(document.uri) !== document) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const uri = document.uri.toString();
|
|
50
|
+
// Against the parsed text: the text document may already hold a newer edit.
|
|
51
|
+
const version = store.reconcileExternalContent(uri, origin.text ?? this.parsedText(document));
|
|
52
|
+
if (version !== undefined) {
|
|
53
|
+
if (document.textDocument.version !== version) {
|
|
54
|
+
// An empty-changes update only re-stamps the version.
|
|
55
|
+
store.update(document.textDocument, [], version);
|
|
56
|
+
}
|
|
57
|
+
ledger.record(root, version, origin.text);
|
|
58
|
+
}
|
|
59
|
+
void this.syncTo(document.uri, store.version(uri));
|
|
60
|
+
this.recordedEmitter.fire(document);
|
|
61
|
+
}
|
|
62
|
+
syncTo(uri, textVersion) {
|
|
63
|
+
const behind = () => !this.isSyncedTo(uri, textVersion);
|
|
64
|
+
return behind() ? this.requestRecoveryBuild(uri, { stillNeeded: behind }) : undefined;
|
|
65
|
+
}
|
|
66
|
+
requestRecoveryBuild(uri, request) {
|
|
67
|
+
return new Promise(answer => {
|
|
68
|
+
const key = uri.toString();
|
|
69
|
+
const queued = { request, failures: 0, answer };
|
|
70
|
+
const pending = this.pendingBuilds.get(key);
|
|
71
|
+
if (pending) {
|
|
72
|
+
// Not dropped: the pending build may have read the text before this request's change.
|
|
73
|
+
pending.queued.push(queued);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const entry = { queued: [queued] };
|
|
77
|
+
this.pendingBuilds.set(key, entry);
|
|
78
|
+
void this.runBuilds(key, uri, entry);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
registerDeferredBuilds(isDeferred) {
|
|
82
|
+
this.deferredBuildChecks.add(isDeferred);
|
|
83
|
+
return Disposable.create(() => this.deferredBuildChecks.delete(isDeferred));
|
|
84
|
+
}
|
|
85
|
+
isSyncedTo(uri, textVersion) {
|
|
86
|
+
const root = this.services.workspace.LangiumDocuments.getDocument(uri)?.parseResult.value;
|
|
87
|
+
if (root === undefined) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
const ledger = this.services.workspace.ModelLedger;
|
|
91
|
+
const recorded = ledger.versionOf(root);
|
|
92
|
+
return recorded === UNRECORDED_VERSION || ledger.isPlaceholder(root) || recorded >= textVersion;
|
|
93
|
+
}
|
|
94
|
+
/** The text `document`'s root was parsed from, or for a root built without either record or CST, the document's own. */
|
|
95
|
+
parsedText(document) {
|
|
96
|
+
return this.services.workspace.ModelLedger.textOf(document.parseResult.value) ?? document.textDocument.getText();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Run `entry`'s requests, one build per batch, until none is queued, and
|
|
100
|
+
* answer each. A request a failed build carried is queued again
|
|
101
|
+
* {@link maxBuildRetries} times, then answered `false`; one a cancelled
|
|
102
|
+
* build carried is queued again without counting. The entry is dropped
|
|
103
|
+
* in the same tick as the last check of the queue, so no request lands in
|
|
104
|
+
* an entry nothing runs any more.
|
|
105
|
+
*/
|
|
106
|
+
async runBuilds(key, uri, entry) {
|
|
107
|
+
const tracer = this.tracer.withUri(key);
|
|
108
|
+
const lock = this.services.workspace.WorkspaceLock;
|
|
109
|
+
// Any other lock resolves a cancelled write as if it had completed, unnoticed.
|
|
110
|
+
const counting = lock instanceof HydraniumWorkspaceLock ? lock : undefined;
|
|
111
|
+
while (entry.queued.length > 0) {
|
|
112
|
+
let carried = [];
|
|
113
|
+
let build;
|
|
114
|
+
let cancellations;
|
|
115
|
+
try {
|
|
116
|
+
// The read waits until no write runs or is queued. It must not await
|
|
117
|
+
// the build, a write that queues behind it.
|
|
118
|
+
await lock.read(() => {
|
|
119
|
+
carried = entry.queued.splice(0);
|
|
120
|
+
const needed = carried.filter(queued => this.isStillNeeded(uri, queued.request));
|
|
121
|
+
carried.filter(queued => !needed.includes(queued)).forEach(queued => queued.answer(true));
|
|
122
|
+
carried = needed;
|
|
123
|
+
if (needed.length > 0) {
|
|
124
|
+
build = this.scheduleBatch(uri, needed.map(queued => queued.request));
|
|
125
|
+
// Read after the build is queued, which cancels the write before it.
|
|
126
|
+
cancellations = counting?.writeCancellations;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
await build;
|
|
130
|
+
// A write cancelled the build, before it ran or while it did.
|
|
131
|
+
if (cancellations !== undefined && counting?.writeCancellations !== cancellations) {
|
|
132
|
+
entry.queued.unshift(...carried);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
carried.forEach(queued => queued.answer(true));
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
139
|
+
const retried = carried.filter(queued => queued.failures++ < this.maxBuildRetries);
|
|
140
|
+
const givenUp = carried.filter(queued => !retried.includes(queued));
|
|
141
|
+
if (retried.length > 0) {
|
|
142
|
+
tracer.warn(`Requested build failed; retrying. ${detail}`);
|
|
143
|
+
entry.queued.unshift(...retried);
|
|
144
|
+
}
|
|
145
|
+
if (givenUp.length > 0) {
|
|
146
|
+
tracer.error(`Requested build failed again; giving up. ${detail}`);
|
|
147
|
+
givenUp.forEach(queued => queued.answer(false));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
this.pendingBuilds.delete(key);
|
|
152
|
+
}
|
|
153
|
+
/** Whether `request` still needs its build, and no deferral it heeds holds it back. Runs inside the lock read. */
|
|
154
|
+
isStillNeeded(uri, request) {
|
|
155
|
+
return request.stillNeeded() && (request.ignoreDeferred === true || !this.isDeferred(uri));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* One build for every request of `batch`, removing the document when the
|
|
159
|
+
* latest of them asks to, as `HydraniumDocumentBuilder.scheduleUpdate`
|
|
160
|
+
* merges a change and a deletion. Runs inside the lock read.
|
|
161
|
+
*/
|
|
162
|
+
scheduleBatch(uri, batch) {
|
|
163
|
+
const deleted = batch.at(-1)?.deleted === true;
|
|
164
|
+
const reason = batch.find(request => request.reason !== undefined)?.reason;
|
|
165
|
+
return this.services.workspace.DocumentBuilder.scheduleUpdate(deleted ? [] : [uri], deleted ? [uri] : [], reason);
|
|
166
|
+
}
|
|
167
|
+
isDeferred(uri) {
|
|
168
|
+
return [...this.deferredBuildChecks].some(isDeferred => isDeferred(uri));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=version-sync-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-sync-service.js","sourceRoot":"","sources":["../../src/documents/version-sync-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/langium/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/langium/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAwHxE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAanG;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAiG/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAiBvG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,2BAA2B,KAAK,OAAO,CAKpG,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,qBAAqB,GAAG,2BAA2B,EAAE,KAAK,SAAS,eAAe,EAChI,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,KAAK,EACf,0BAA0B,GAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAA0B,GAClG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CAGtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CACtC,OAAO,SAAS,qBAAqB,GAAG,2BAA2B,EACnE,KAAK,SAAS,eAAe,EAE7B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,EAC/B,0BAA0B,GAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAA0B,GAClG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;CAAE,CAiCtD;AAYD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CA+BzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAiC9H"}
|
package/lib/langium/bootstrap.js
CHANGED
|
@@ -16,6 +16,8 @@ import { HydraniumScopeComputation } from './scope/hydranium-scope-computation.j
|
|
|
16
16
|
import { HydraniumScopeProvider } from './scope/hydranium-scope-provider.js';
|
|
17
17
|
import { processEnv } from '../util/environment.js';
|
|
18
18
|
import { DefaultTransferEncoder } from './transfer/transfer-encoder.js';
|
|
19
|
+
import { HydraniumLangiumDocumentFactory } from './workspace/hydranium-langium-document-factory.js';
|
|
20
|
+
import { HydraniumLangiumDocuments } from './workspace/langium-documents.js';
|
|
19
21
|
import { HydraniumWorkspaceManager } from './workspace/hydranium-workspace-manager.js';
|
|
20
22
|
function nested(services, ...keys) {
|
|
21
23
|
let current = services;
|
|
@@ -136,6 +138,20 @@ export function assertCoreSlotsBound(shared, language) {
|
|
|
136
138
|
export const STRICT_BINDINGS_ENV = 'HYDRANIUM_STRICT_BINDINGS';
|
|
137
139
|
const STRICT_SHARED_SLOTS = [
|
|
138
140
|
{ side: 'shared', path: 'workspace.TextDocuments', base: HydraniumTextDocuments, get: s => nested(s, 'workspace', 'TextDocuments') },
|
|
141
|
+
// Every root it builds records no version, so every write gated on one conflicts.
|
|
142
|
+
{
|
|
143
|
+
side: 'shared',
|
|
144
|
+
path: 'workspace.LangiumDocumentFactory',
|
|
145
|
+
base: HydraniumLangiumDocumentFactory,
|
|
146
|
+
get: s => nested(s, 'workspace', 'LangiumDocumentFactory')
|
|
147
|
+
},
|
|
148
|
+
// It reports no registered root, so none is reconciled with the text store or announced.
|
|
149
|
+
{
|
|
150
|
+
side: 'shared',
|
|
151
|
+
path: 'workspace.LangiumDocuments',
|
|
152
|
+
base: HydraniumLangiumDocuments,
|
|
153
|
+
get: s => nested(s, 'workspace', 'LangiumDocuments')
|
|
154
|
+
},
|
|
139
155
|
{
|
|
140
156
|
side: 'shared',
|
|
141
157
|
path: 'workspace.WorkspaceManager',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/langium/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/langium/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAsBvF,SAAS,MAAM,CAAC,QAAiC,EAAE,GAAG,IAAuB;IAC1E,IAAI,OAAO,GAAY,QAAQ,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,qBAAqB,GAA4B;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;IAC/E,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,mBAAmB,CAAC,EAAE;IAChH,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE;IAC1H,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE;IACtH,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE;IAC1H,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE;IACpH,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,oBAAoB,CAAC,EAAE;IAC9H;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,oCAAoC;QAC1C,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,0BAA0B,CAAC;KAC5E;IACD,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,4CAA4C;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE;IACjG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;CAC7F,CAAC;AAEF;;;;;GAKG;AACH,MAAM,uBAAuB,GAA4B;IACtD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6BAA6B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,kBAAkB,CAAC,EAAE;IAC9H,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE;IACxH,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE;IAClI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE;IACtH,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE;CACpH,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;wDAoB+B,CAAC;AAEzD,SAAS,YAAY,CAAC,IAAkB;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,iCAAiC,CAAC;IAC7G,OAAO,0BAA0B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;;uBAEnC,OAAO;;EAE5B,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA6B,EAAE,QAAyB;IAC1F,MAAM,UAAU,GAAG,MAA4C,CAAC;IAChE,MAAM,YAAY,GAAG,QAA8C,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;IACJ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAwB/D,MAAM,mBAAmB,GAA0B;IAChD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE;IACpI,kFAAkF;IAClF;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE,+BAA+B;QACrC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,wBAAwB,CAAC;KAC5D;IACD,yFAAyF;IACzF;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,yBAAyB;QAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC;KACtD;IACD;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,yBAAyB;QAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC;KACtD;IACD;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE,wBAAwB;QAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC;KACrD;IACD;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,yBAAyB;QAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,oBAAoB,CAAC;KACxD;IACD;QACG,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,+BAA+B;QACrC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,0BAA0B,CAAC;KAC9D;IACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE;IAChI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE;CACzH,CAAC;AAEF,MAAM,qBAAqB,GAA0B;IAClD;QACG,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,yBAAyB;QAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC;KACvD;IACD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE;CAC1I,CAAC;AAEF,SAAS,qBAAqB;IAC3B,MAAM,KAAK,GAAG,UAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC;IACjE,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;AACjF,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,IAAgB,EAAE,MAAc;IAChF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,aAAa,CAAC;IAC7D,MAAM,OAAO,GACV,kCAAkC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,oBAAoB,UAAU,MAAM;QAC5F,8CAA8C,IAAI,CAAC,IAAI,CAAC,IAAI,8BAA8B;QAC1F,oDAAoD,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;QACjF,KAAK,mBAAmB,gBAAgB,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA6B,EAAE,QAAyB;IAC9F,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC5B,OAAO;IACV,CAAC;IACD,MAAM,UAAU,GAAG,MAA4C,CAAC;IAChE,MAAM,YAAY,GAAG,QAA8C,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAuB,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,IAA6B,EAAE,KAA4B,EAAQ,EAAE;QACjF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChF,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACJ,CAAC;IACJ,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACvC,KAAK,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsE;IACtG,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc;IAC7C,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,wBAAwB;IACvD,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe;IAC9C,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB;CACpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,gBAAgB,CAC7B,MAAe,EACf,QAAe,EACf,0BAA0B,GAAkD,sBAAsB;IAElG,yBAAyB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,0BAA0B,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,yBAAyB,CAItC,MAAe,EACf,SAA+B,EAC/B,0BAA0B,GAAkD,sBAAsB;IAElG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACZ,+FAA+F;YAC5F,uFAAuF;YACvF,4BAA4B,CACjC,CAAC;IACL,CAAC;IACD,qEAAqE;IACrE,sEAAsE;IACtE,0EAA0E;IAC1E,mEAAmE;IACnE,kEAAkE;IAClE,mEAAmE;IACnE,oDAAoD;IACpD,IAAI,qBAAqB,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,oEAAoE;IACpE,uEAAuE;IACvE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,+BAA+B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,0BAA0B,EAAE,CAAC;QACjD,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,QAAiB;IAC7C,OAAO,OAAQ,QAAsD,EAAE,oBAAoB,KAAK,UAAU,CAAC;AAC9G,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAyC;IAChF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,UAAkB,EAAQ,EAAE;QACnE,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACZ,uDAAuD,IAAI,KAAK,GAAG,OAAO,QAAQ,UAAU,UAAU,KAAK;gBACxG,sGAAsG;gBACtG,iGAAiG;gBACjG,YAAY,IAAI,yBAAyB,CAC9C,CAAC;QACL,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACb,oEAAoE;YACpE,sEAAsE;YACtE,qEAAqE;YACrE,SAAS;QACZ,CAAC;QACD,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC/D,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC/C,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC/C,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC;IACJ,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAA6B,EAAE,SAAyC;IACrH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,+DAA+D;QAC/D,OAAO;IACV,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,aAAa,EAAE,WAAW,KAAK,UAAU,EAAE,CAAC;QAC3D,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,4CAA4C;QAC5C,OAAO;IACV,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAA4C,EAAE,QAAQ,CAAuB,CAAC;IACpG,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,SAAS;QACZ,CAAC;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACxD,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1E,SAAS;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CACZ,0DAA0D,QAAQ,CAAC,IAAI,sBAAsB;YAC1F,IAAI,UAAU,uBAAuB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACxE,2FAA2F;YAC3F,6FAA6F;YAC7F,8FAA8F,CACnG,CAAC;IACL,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC,SAAS,6BAA6B,CACnC,MAA0B,EAC1B,UAAkB,EAClB,OAA0B,EAC1B,aAAqB;IAErB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,MAAM,GAAG,0BAA0B,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9H,MAAM,OAAO,GACV,mDAAmD,OAAO,CAAC,MAAM,WAAW,aAAa,aAAa;QACtG,aAAa,UAAU,kBAAkB,KAAK,GAAG,MAAM,IAAI;QAC3D,0GAA0G;QAC1G,wGAAwG;QACxG,qGAAqG;QACrG,uGAAuG;QACvG,oFAAoF,CAAC;IACxF,IAAI,MAAM,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACJ,CAAC"}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Clock, type LogThreshold, type MaybeObservableValue, ObservableValue, type Tracer } from '@hydranium/protocol';
|
|
10
|
-
import { type AstNode, type BuildOptions, DefaultDocumentBuilder, type DocumentPhaseListener, DocumentState, type LangiumDocument, MultiMap,
|
|
10
|
+
import { type AstNode, type BuildOptions, DefaultDocumentBuilder, type DocumentPhaseListener, DocumentState, type LangiumDocument, MultiMap, URI, type WorkspaceLock } from '@hydranium/langium';
|
|
11
11
|
import { CancellationToken, Disposable } from 'vscode-languageserver-protocol';
|
|
12
|
+
import { type VersionSyncService } from '../../documents/version-sync-service.js';
|
|
12
13
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
13
14
|
import type { MessageRenderer } from '../../messages/renderer.js';
|
|
14
15
|
import { type ExtendedServiceRegistry } from '../service-registry.js';
|
|
@@ -85,6 +86,14 @@ export interface DocumentBuilderOptions extends LogNameOptions {
|
|
|
85
86
|
*/
|
|
86
87
|
readonly refreshCrossDocumentComputedScopes?: boolean;
|
|
87
88
|
}
|
|
89
|
+
/** Options for a {@link HydraniumDocumentBuilder.waitUntil} wait on one document. */
|
|
90
|
+
export interface WaitUntilOptions {
|
|
91
|
+
/**
|
|
92
|
+
* Reject once the builder gives up carrying the document to the target
|
|
93
|
+
* state. Without it, such a wait stays pending until its token is cancelled.
|
|
94
|
+
*/
|
|
95
|
+
readonly rejectWhenStuck?: boolean;
|
|
96
|
+
}
|
|
88
97
|
/**
|
|
89
98
|
* One locked build {@link HydraniumDocumentBuilder.scheduleUpdate} queued,
|
|
90
99
|
* which later requests merge into while it waits and join while it runs.
|
|
@@ -195,6 +204,8 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
|
|
|
195
204
|
protected readonly buildEndedListeners: Set<(drained: boolean) => void>;
|
|
196
205
|
/** Set while the lock read {@link checkWaitsOnceDrained} queued has not run. */
|
|
197
206
|
protected drainCheckQueued: boolean;
|
|
207
|
+
/** Resolved per call: the sync service reaches this builder. */
|
|
208
|
+
protected readonly versionSyncService: () => VersionSyncService;
|
|
198
209
|
constructor(services: ServerSharedServicesMinimal, options?: DocumentBuilderOptions);
|
|
199
210
|
/**
|
|
200
211
|
* Stage an LSP event name for the next `update()` call. Adopters call before
|
|
@@ -245,6 +256,13 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
|
|
|
245
256
|
formatBuildStatus(uri: URI): string;
|
|
246
257
|
/** Render a session for a status line. `undefined` — no build in progress — reads as `none`. */
|
|
247
258
|
protected formatSession(session: BuildSession | undefined): string;
|
|
259
|
+
/**
|
|
260
|
+
* Resolve once the document at `uri` reaches `state`, or without `uri`, once
|
|
261
|
+
* the workspace does. A wait on `uri` re-queues a document no build is
|
|
262
|
+
* carrying, as {@link awaitDocumentState} describes.
|
|
263
|
+
*/
|
|
264
|
+
waitUntil(state: DocumentState, cancelToken?: CancellationToken): Promise<void>;
|
|
265
|
+
waitUntil(state: DocumentState, uri?: URI, cancelToken?: CancellationToken, options?: WaitUntilOptions): Promise<URI>;
|
|
248
266
|
/**
|
|
249
267
|
* Two edge cases the default Langium implementation rejects on:
|
|
250
268
|
* - Document below target state with no build active (newly-created file):
|
|
@@ -270,7 +288,9 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
|
|
|
270
288
|
* whatever cancelled it may build nothing. Re-queuing stops after
|
|
271
289
|
* {@link MAX_STALLED_REQUEUES} builds that fail to advance the document, so a
|
|
272
290
|
* document the builder will never carry to `state` degrades to a pending wait
|
|
273
|
-
* plus a warning rather than an endless build loop.
|
|
291
|
+
* plus a warning rather than an endless build loop. With `rejectWhenStuck`,
|
|
292
|
+
* the wait rejects instead, both then and once
|
|
293
|
+
* `VersionSyncService.requestRecoveryBuild` gives up a re-queued build.
|
|
274
294
|
*
|
|
275
295
|
* A wait for `Validated` on a document that a validating build skips
|
|
276
296
|
* resolves once that build has indexed its references, without diagnostics:
|
|
@@ -283,7 +303,7 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
|
|
|
283
303
|
* a re-queue: the build waits for that action to end. Await it outside the
|
|
284
304
|
* lock.
|
|
285
305
|
*/
|
|
286
|
-
protected awaitDocumentState(state: DocumentState, uri: URI, cancelToken: CancellationToken): Promise<URI>;
|
|
306
|
+
protected awaitDocumentState(state: DocumentState, uri: URI, cancelToken: CancellationToken, { rejectWhenStuck }?: WaitUntilOptions): Promise<URI>;
|
|
287
307
|
/**
|
|
288
308
|
* Whether the build that carries or last carried `document` has indexed its
|
|
289
309
|
* references, asks for validation, and still skips it, which is an override
|
|
@@ -317,28 +337,14 @@ export declare class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
|
|
|
317
337
|
*/
|
|
318
338
|
protected isOrphaned(document: LangiumDocument, state: DocumentState): boolean;
|
|
319
339
|
/**
|
|
320
|
-
* Schedule a build for a document no in-flight build will advance
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
* runs beside a locked one nor cancels the build a re-queue is fired from.
|
|
329
|
-
* Unlocked, it runs beside a locked build that cannot cancel it: both
|
|
330
|
-
* validate the same version and deliver it twice. Taking the write directly,
|
|
331
|
-
* without the read, cancels the running build and skips the rest of its
|
|
332
|
-
* build-phase listeners. The read must not await the write, which queues
|
|
333
|
-
* behind that read. A build scheduled in the gap between the read batch
|
|
334
|
-
* starting and this action running is still queued, so the re-queue merges
|
|
335
|
-
* into it rather than cancelling it.
|
|
336
|
-
*
|
|
337
|
-
* A write that ran while the read waited may have carried the document to
|
|
338
|
-
* `state` already, and a second build would deliver that version again; the
|
|
339
|
-
* read skips the write then.
|
|
340
|
-
*/
|
|
341
|
-
protected requeueOrphaned(document: LangiumDocument, state: DocumentState, reason: string): void;
|
|
340
|
+
* Schedule a build for a document no in-flight build will advance, through
|
|
341
|
+
* `VersionSyncService.requestRecoveryBuild`: from a {@link WorkspaceLock} read, so
|
|
342
|
+
* the build neither runs beside a locked one nor cancels the build a
|
|
343
|
+
* re-queue is fired from, and skipped if a write that ran meanwhile carried
|
|
344
|
+
* the document to `state`. The waiter resolves off the resulting phase
|
|
345
|
+
* notification; the answer only tells it whether the build was given up.
|
|
346
|
+
*/
|
|
347
|
+
protected requeueOrphaned(document: LangiumDocument, state: DocumentState, reason: string): Promise<boolean>;
|
|
342
348
|
/**
|
|
343
349
|
* Build `changed` and `deleted` under the {@link WorkspaceLock}, as
|
|
344
350
|
* `workspaceLock.write(token => update(changed, deleted, token))` would,
|