@hydranium/core 1.0.0-next.309 → 1.0.0-next.313
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/README.md +4 -2
- package/lib/browser/host-heads-in-worker.d.ts +8 -3
- package/lib/browser/host-heads-in-worker.d.ts.map +1 -1
- package/lib/browser/host-heads-in-worker.js +14 -4
- package/lib/browser/host-heads-in-worker.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +9 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -1
- package/lib/langium/model-service/client-session.js +9 -0
- package/lib/langium/model-service/client-session.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts +3 -2
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +30 -2
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +68 -3
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/node/socket-launcher.d.ts +23 -3
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +36 -2
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/stdio-launcher.d.ts +3 -3
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +7 -5
- package/lib/node/stdio-launcher.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/host-heads-in-worker.ts +19 -4
- package/src/langium/model-service/client-session.ts +14 -0
- package/src/langium/residency/cst-residency-service.ts +3 -2
- package/src/langium/workspace/initialize-workspace.ts +86 -3
- package/src/node/socket-launcher.ts +53 -5
- package/src/node/stdio-launcher.ts +10 -8
package/README.md
CHANGED
|
@@ -48,13 +48,15 @@ needs it.
|
|
|
48
48
|
the LSP shared module is missing.
|
|
49
49
|
3. Start other heads on the same shared services, with `startSocketServer` and
|
|
50
50
|
`publishPortOnLspConnection` beside the LSP head, or `startStdioServer`
|
|
51
|
-
alone.
|
|
51
|
+
alone. Without an LSP head, give each starter the workspace root as
|
|
52
|
+
`workspace`: it brings the workspace up before it listens.
|
|
52
53
|
4. In a web worker, answer the page's bootstrap with `hostHeadsInWorker` from
|
|
53
54
|
`./browser`: it awaits what you prepared, such as `persistentFileSystem`,
|
|
54
55
|
then calls your `start`, which starts the LSP head on its port with
|
|
55
56
|
`startLanguageServerInWorker` and the other heads with their own starters.
|
|
56
57
|
It posts the ready message once every head is up, with the files under the
|
|
57
|
-
`rootUri` you pass it
|
|
58
|
+
`rootUri` you pass it; without an LSP head it brings the workspace up from
|
|
59
|
+
that root first. It runs the validating build and reports a failed
|
|
58
60
|
start, build or rejection to the page; `reportWorkerError` reports a
|
|
59
61
|
failure of your own. The LSP starter answers the editor's save request,
|
|
60
62
|
which a worker creating its own connection adds with
|
|
@@ -35,6 +35,9 @@ export interface HostHeadsInWorkerOptions {
|
|
|
35
35
|
* Left out, the ready message carries no files and nothing is read. Every
|
|
36
36
|
* file's content goes in one message, so a workspace too large for that
|
|
37
37
|
* wants a per-document read instead.
|
|
38
|
+
*
|
|
39
|
+
* Required when `start` composes no LSP head: the workspace is then brought
|
|
40
|
+
* up from it before the ready message, which nothing else would do.
|
|
38
41
|
*/
|
|
39
42
|
readonly rootUri?: string;
|
|
40
43
|
}
|
|
@@ -50,9 +53,11 @@ export interface HostHeadsInWorkerOptions {
|
|
|
50
53
|
* awaited before `start` is called. It may be a plain value where nothing has
|
|
51
54
|
* to be awaited.
|
|
52
55
|
*
|
|
53
|
-
* Once `start` has returned
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
+
* Once `start` has returned, every `started` it handed back has resolved and,
|
|
57
|
+
* without an LSP head, the workspace has been brought up from
|
|
58
|
+
* {@link HostHeadsInWorkerOptions.rootUri}, the ready message goes out, so a
|
|
59
|
+
* page never hears of heads that failed to come up, and an uncaught error from
|
|
60
|
+
* then on is a report rather than the end
|
|
56
61
|
* of the heads. It carries the workspace's files when
|
|
57
62
|
* {@link HostHeadsInWorkerOptions.rootUri} is given. Then every document is
|
|
58
63
|
* built with validation once the workspace has initialised: Langium's initial
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-heads-in-worker.d.ts","sourceRoot":"","sources":["../../src/browser/host-heads-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAMJ,KAAK,SAAS,EAIhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"host-heads-in-worker.d.ts","sourceRoot":"","sources":["../../src/browser/host-heads-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAMJ,KAAK,SAAS,EAIhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAMjF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGrE;AAED,gHAAgH;AAChH,MAAM,WAAW,YAAY;IAC1B,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CACrD;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACtC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EACxC,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,EAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAK,2BAA2B,GAAG,YAAY,EAC5F,OAAO,GAAE,wBAA6B,GACtC,IAAI,CA6DN"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { describeErrorWithStack, isWorkerBootstrapMessage, WORKER_BOOTSTRAP_PHASE, WORKER_ERROR_MESSAGE_TYPE, WORKER_READY_MESSAGE_TYPE } from '@hydranium/protocol';
|
|
10
10
|
import { isOperationCancelled, URI } from '@hydranium/langium';
|
|
11
11
|
import { isFileSystemProviderRegistry } from '../langium/workspace/file-system-provider.js';
|
|
12
|
+
import { hasLspConnection, initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
|
|
12
13
|
import { PersistentFileSystemProvider } from '../langium/workspace/persistent-file-system-provider.js';
|
|
13
14
|
import { isConnectionGoneError } from '../util/connection-liveness.js';
|
|
14
15
|
/**
|
|
@@ -34,9 +35,11 @@ export function reportWorkerError(phase, error) {
|
|
|
34
35
|
* awaited before `start` is called. It may be a plain value where nothing has
|
|
35
36
|
* to be awaited.
|
|
36
37
|
*
|
|
37
|
-
* Once `start` has returned
|
|
38
|
-
*
|
|
39
|
-
*
|
|
38
|
+
* Once `start` has returned, every `started` it handed back has resolved and,
|
|
39
|
+
* without an LSP head, the workspace has been brought up from
|
|
40
|
+
* {@link HostHeadsInWorkerOptions.rootUri}, the ready message goes out, so a
|
|
41
|
+
* page never hears of heads that failed to come up, and an uncaught error from
|
|
42
|
+
* then on is a report rather than the end
|
|
40
43
|
* of the heads. It carries the workspace's files when
|
|
41
44
|
* {@link HostHeadsInWorkerOptions.rootUri} is given. Then every document is
|
|
42
45
|
* built with validation once the workspace has initialised: Langium's initial
|
|
@@ -93,8 +96,15 @@ export function hostHeadsInWorker(prepared, start, options = {}) {
|
|
|
93
96
|
const value = await preparation;
|
|
94
97
|
const result = start(ports, value);
|
|
95
98
|
const { shared, started } = 'shared' in result ? result : { shared: result, started: undefined };
|
|
99
|
+
// Without an LSP head the workspace is brought up here, queued in the step
|
|
100
|
+
// `start` returns in: a page message is handled in a later task, so no
|
|
101
|
+
// request settles against a workspace not yet brought up. Its throw is a
|
|
102
|
+
// rejection, so the awaiting below still handles every head's `started`.
|
|
103
|
+
const bringUp = hasLspConnection(shared)
|
|
104
|
+
? undefined
|
|
105
|
+
: new Promise(resolve => resolve(initializeWorkspaceWithoutLsp(shared, options.rootUri === undefined ? undefined : URI.parse(options.rootUri))));
|
|
96
106
|
// Safe to await now: every head listens already, so nothing is lost.
|
|
97
|
-
await Promise.all(started ?? []);
|
|
107
|
+
await Promise.all([...(started ?? []), bringUp]);
|
|
98
108
|
const ready = {
|
|
99
109
|
type: WORKER_READY_MESSAGE_TYPE,
|
|
100
110
|
workspace: options.rootUri === undefined ? undefined : readWorkspace(shared, options.rootUri)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-heads-in-worker.js","sourceRoot":"","sources":["../../src/browser/host-heads-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EAK3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAc;IAC5D,MAAM,MAAM,GAAuB,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;IACtH,WAAW,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"host-heads-in-worker.js","sourceRoot":"","sources":["../../src/browser/host-heads-in-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,11 @@ export interface ClientSession<TAst extends AstNode, TDiagnostic extends AstDiag
|
|
|
64
64
|
* it open already or it holds this client's unsaved text within its release
|
|
65
65
|
* grace. `options` are kept for this open until it closes; a repeat open,
|
|
66
66
|
* concurrent or not, keeps the options of the first.
|
|
67
|
+
*
|
|
68
|
+
* Waits for the workspace to be brought up, as {@link create} does, and does
|
|
69
|
+
* not settle while nothing brings it up. So neither may be awaited from
|
|
70
|
+
* inside the bring-up, such as a workspace manager's document loading: the
|
|
71
|
+
* bring-up then waits for itself.
|
|
67
72
|
*/
|
|
68
73
|
open(uri: string, options?: TOpenOptions): Promise<void>;
|
|
69
74
|
/** The options this session opened `uri` with, or `undefined` when it gave none or does not have `uri` open. */
|
|
@@ -287,6 +292,10 @@ export declare class DefaultClientSession<TAst extends AstNode, TDiagnostic exte
|
|
|
287
292
|
* A first open records its options before the store opens the URI, so a
|
|
288
293
|
* listener of the store's open reads this open's options rather than an
|
|
289
294
|
* earlier one's.
|
|
295
|
+
*
|
|
296
|
+
* It waits for the workspace first, as an LSP head's open does: a document
|
|
297
|
+
* opened before the bring-up links against a workspace that holds only
|
|
298
|
+
* itself, and the bring-up does not always relink it.
|
|
290
299
|
*/
|
|
291
300
|
protected registerOpen(uri: string, options: TOpenOptions | undefined): Promise<void>;
|
|
292
301
|
protected canonicalKey(uri: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/client-session.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,WAAW,EAIhB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,eAAe,EAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACpG,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,4GAA4G;AAC5G,MAAM,WAAW,sBAAsB,CAAC,SAAS;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B;;;;OAIG;IACH,WAAW,EAAE,WAAW,CAAC;CAC3B;AAED,6EAA6E;AAC7E,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAEpF,gGAAgG;AAChG,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAEnF,wDAAwD;AACxD,MAAM,WAAW,0BAA0B,CAAC,SAAS;IAClD,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,aAAa,CAC3B,IAAI,SAAS,OAAO,EACpB,WAAW,SAAS,aAAa,GAAG,aAAa,EACjD,SAAS,SAAS,eAAe,GAAG,eAAe,EACnD,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,gHAAgH;IAChH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB
|
|
1
|
+
{"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../../src/langium/model-service/client-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -336,8 +336,15 @@ export class DefaultClientSession {
|
|
|
336
336
|
* A first open records its options before the store opens the URI, so a
|
|
337
337
|
* listener of the store's open reads this open's options rather than an
|
|
338
338
|
* earlier one's.
|
|
339
|
+
*
|
|
340
|
+
* It waits for the workspace first, as an LSP head's open does: a document
|
|
341
|
+
* opened before the bring-up links against a workspace that holds only
|
|
342
|
+
* itself, and the bring-up does not always relink it.
|
|
339
343
|
*/
|
|
340
344
|
async registerOpen(uri, options) {
|
|
345
|
+
await this.modelService.ready;
|
|
346
|
+
// A session ended during the wait opens nothing.
|
|
347
|
+
this.assertLive();
|
|
341
348
|
const wasOpen = this.services.workspace.TextDocuments.isOpenInClient(uri, this.clientId);
|
|
342
349
|
if (!wasOpen) {
|
|
343
350
|
this.openOptionsByUri.set(this.canonicalKey(uri), options);
|
|
@@ -349,6 +356,8 @@ export class DefaultClientSession {
|
|
|
349
356
|
return this.services.workspace.DocumentUriPolicy.canonicalUri(uri);
|
|
350
357
|
}
|
|
351
358
|
async createDocument(uri, text) {
|
|
359
|
+
// As `registerOpen` does, and before the checks, which read the workspace.
|
|
360
|
+
await this.modelService.ready;
|
|
352
361
|
if (await this.services.workspace.FileSystemProvider.exists(UriUtils.toUri(uri))) {
|
|
353
362
|
throw new Error(`Cannot create ${uri}: the file exists`);
|
|
354
363
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../../src/langium/model-service/client-session.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAEJ,aAAa,EACb,cAAc,EACd,MAAM,EAGN,eAAe,EAIf,sBAAsB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAgB,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAA2C,OAAO,EAAc,MAAM,uBAAuB,CAAC;AAErG,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAsJpG;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAoB;IAoCR,QAAQ;IA9BpB,QAAQ,GAAG,KAAK,CAAC;IAC3B;;;;OAIG;IACgB,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnE;;;;;;;;OAQG;IACgB,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;IAClF,4FAA4F;IACzE,aAAa,CAAa;IAC1B,cAAc,GAAG,IAAI,OAAO,EAAmB,CAAC;IACnE,wJAAwJ;IACrI,MAAM,CAAS;IAClC,iGAAiG;IAC9E,YAAY,CAA6C;IAC5E,0FAA0F;IACvE,cAAc,CAA2B;IACnD,QAAQ,CAAS;IACjB,KAAK,CAAS;IAEvB,YACsB,QAA8B,EACjD,OAA6B;wBADV,QAAQ;QAG3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;QAC/C,wEAAwE;QACxE,gEAAgE;QAChE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAA0D,CAAC;QAC9F,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1H,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACtE,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;QACJ,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,OAAsB;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW,CAAC,GAAW;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;YAC5E,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,IAAY;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,IAAuC,EAAE,WAA+B;QAC5E,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,IAA2C,EAAE,WAA+B;QACnF,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,IAAuC,EAAE,WAA+B;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,IAA8B;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAW;QACd,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,IAA6B;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAI,GAAW,EAAE,EAAyB;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,cAAsB;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,KAAuB;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,YAAY;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IACpC,CAAC;IAES,UAAU;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACJ,CAAC;IAED,wGAAwG;IAC9F,UAAU,CAAC,GAAW;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/G,MAAM,IAAI,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,iBAAiB,CAAC,GAAW,EAAE,WAAwB,EAAE,cAAsB;QACtF,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;YACjE,0EAA0E;YAC1E,uEAAuE;YACvE,iBAAiB;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,wBAAwB,WAAW,YAAY,cAAc,EAAE,CAAC,CAAC;YACrG,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAC7D,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACO,KAAK,CAAC,cAAc,CAC3B,IAAuC,EACvC,WAA+B;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;QACvH,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,MAAM,GAAG,GAAG,KAAK,EAAK,KAAa,EAAE,EAAyB,EAAc,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3H,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QAC7F,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,wEAAwE;QACxE,wEAAwE;QACxE,wDAAwD;QACxD,0BAA0B;QAC1B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACrI,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,YAAY,GAAG,cAAc,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,cAAc,cAAc,YAAY,oCAAoC,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,cAAc,QAAQ,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3C,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,OAAO,QAAQ,SAAS,QAAQ,cAAc,YAAY,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC7H,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACO,KAAK,CAAC,eAAe,CAC5B,IAA2C,EAC3C,WAA+B;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,KAAK,GAAG,GAAS,EAAE,CACtB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACN,KAAK,EAAE,CAAC;QACR,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,wEAAwE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtH,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACpG,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,6EAA6E;QAC7E,wEAAwE;QACxE,qDAAqD;QACrD,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC1D,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG,6BAA6B,QAAQ,EAAE,CAAC,CAAC;YACzF,CAAC;iBAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG,0BAA0B,QAAQ,KAAK,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzH,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,YAAY,CACzB,IAAuC,EACvC,WAA+B;QAE/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,KAAK,CAAC,eAAe,CAAC,IAA8B;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,cAAc,CAAC,IAA6B;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChF,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,GAAW;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,uGAAuG;IAC7F,YAAY,CAAC,GAAW,EAAE,OAAiC;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACX,OAAO,OAAO,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YAC1D,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACO,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAiC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,CAAC,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAES,YAAY,CAAC,GAAW;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,IAAY;QACrD,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,6EAA6E,CAAC,CAAC;QACtH,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,0BAA0B,CAAC,CAAC;QACnE,CAAC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,uEAAuE;QACvE,oEAAoE;QACpE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAgC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACtE,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAClE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;gBAAS,CAAC;YACR,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,0BAA0B,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,OAAO,CAAC;IAClB,CAAC;IAES,KAAK,CAAC,WAAW,CAAI,GAAW,EAAE,EAAyB;QAClE,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,WAAW,GACd,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7H,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC;YACF,OAAO,MAAM,EAAE,EAAE,CAAC;QACrB,CAAC;gBAAS,CAAC;YACR,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACJ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACO,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,OAAgB;QACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACV,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACH;AAsDD;;;;;;;;;GASG;AACH,MAAM,OAAO,2BAA2B;IAIf,QAAQ;IACR,OAAO;IAJV,MAAM,CAAS;IAElC,YACsB,QAA8B,EAC9B,OAAO,GAAgC,EAAE;wBADzC,QAAQ;uBACR,OAAO;QAE1B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,KAAa;QACnC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../../src/langium/model-service/client-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,8 +89,9 @@ export declare function isCstShed(document: LangiumDocument): boolean;
|
|
|
89
89
|
* Each build refreshes
|
|
90
90
|
* the idle window of the documents in its batch; when a closed, sheddable
|
|
91
91
|
* document's window elapses, every AST node's `$cstNode` and every reference's
|
|
92
|
-
* `$refNode` are nulled, and the CST
|
|
93
|
-
*
|
|
92
|
+
* `$refNode` are nulled, and the CST becomes unreachable with the `Range`s
|
|
93
|
+
* and `Position`s only it holds. A description's segments and the reference
|
|
94
|
+
* index's segments share the CST's `Range` objects, so those stay.
|
|
94
95
|
*
|
|
95
96
|
* **Terminology.** *Residency* is the state axis (is the CST in memory? —
|
|
96
97
|
* `resident` vs `shed`); *shed* is both the act and the policy vocabulary (drop
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cst-residency-service.d.ts","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAa,KAAK,KAAK,EAAE,SAAS,EAAU,KAAK,MAAM,EAAsB,MAAM,qBAAqB,CAAC;AAChH,OAAO,EACJ,KAAK,OAAO,EAEZ,aAAa,EACb,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,UAAY,CAAC;AAErD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1I,4DAA4D;AAC5D,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACxD,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,aAAqC,CAAC;AAEhF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAM5D;AA2FD
|
|
1
|
+
{"version":3,"file":"cst-residency-service.d.ts","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cst-residency-service.js","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cst-residency-service.js","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,14 +59,42 @@ export interface ProgrammaticInitOptions {
|
|
|
59
59
|
* negotiation, `onInitialize`/`onInitialized` events) are intentionally not
|
|
60
60
|
* reproduced — a headless server has no client and they degrade gracefully.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
62
|
+
* Runs once per workspace manager: a later call naming the same folders, in
|
|
63
|
+
* any order, gets the first call's promise, and one naming others throws
|
|
64
|
+
* synchronously. A second initialisation would cancel the first one's build
|
|
65
|
+
* and leave the documents unbuilt, which happens as soon as a starter and its
|
|
66
|
+
* caller both bring the workspace up. Errors from discovery/build propagate to
|
|
67
|
+
* the caller.
|
|
64
68
|
*
|
|
65
69
|
* @param services the shared services tree the workspace manager lives on
|
|
66
70
|
* @param folders one or more workspace roots (filesystem paths or URIs)
|
|
67
71
|
* @param options the message locale, when the caller has one
|
|
68
72
|
*/
|
|
69
73
|
export declare function initializeWorkspaceProgrammatically(services: ServerSharedServicesMinimal, folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>, options?: ProgrammaticInitOptions): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Whether the services were composed around an LSP connection, which is what
|
|
76
|
+
* makes an LSP head present: its client's `initialize`/`initialized` pair then
|
|
77
|
+
* brings the workspace up, and nothing else should.
|
|
78
|
+
*/
|
|
79
|
+
export declare function hasLspConnection(shared: ServerSharedServicesMinimal): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* The starters' workspace bring-up: {@link initializeWorkspaceProgrammatically}
|
|
82
|
+
* on `workspace` when no LSP head is present, nothing when one is.
|
|
83
|
+
*
|
|
84
|
+
* Without an LSP head nothing else initialises the workspace, and a head
|
|
85
|
+
* serving from it answers without an error but wrongly: a diagram loads with
|
|
86
|
+
* its cross-file references unresolved. So a missing `workspace` there throws,
|
|
87
|
+
* and so does one given beside an LSP head, whose client names the folders
|
|
88
|
+
* itself. Both throw synchronously, before anything starts, so a starter can
|
|
89
|
+
* tell its caller's mistake from a failed initialisation, which the workspace
|
|
90
|
+
* manager logs. The initialisation is queued on the workspace lock
|
|
91
|
+
* synchronously too: a request that settles before it is queued keeps its
|
|
92
|
+
* unresolved references for good.
|
|
93
|
+
*
|
|
94
|
+
* Two starters on one services tree each name the workspace, and share one
|
|
95
|
+
* initialisation: see {@link initializeWorkspaceProgrammatically}.
|
|
96
|
+
*/
|
|
97
|
+
export declare function initializeWorkspaceWithoutLsp(shared: ServerSharedServicesMinimal, workspace: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput> | undefined, options?: ProgrammaticInitOptions): Promise<void>;
|
|
70
98
|
/**
|
|
71
99
|
* {@link initializeWorkspaceProgrammatically} **and then build every registered
|
|
72
100
|
* document to `Validated`** — the "fully-built workspace" convenience for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-workspace.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,GAAG,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACrC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD
|
|
1
|
+
{"version":3,"file":"initialize-workspace.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,GAAG,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACrC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mCAAmC,CAChD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,EACnE,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAuBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAG7E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC1C,MAAM,EAAE,2BAA2B,EACnC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GAAG,SAAS,EACjF,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,8BAA8B,CACjD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,EACnE,OAAO,GAAE,uBAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
|
@@ -45,16 +45,39 @@ function toWorkspaceFolders(folders) {
|
|
|
45
45
|
* negotiation, `onInitialize`/`onInitialized` events) are intentionally not
|
|
46
46
|
* reproduced — a headless server has no client and they degrade gracefully.
|
|
47
47
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
48
|
+
* Runs once per workspace manager: a later call naming the same folders, in
|
|
49
|
+
* any order, gets the first call's promise, and one naming others throws
|
|
50
|
+
* synchronously. A second initialisation would cancel the first one's build
|
|
51
|
+
* and leave the documents unbuilt, which happens as soon as a starter and its
|
|
52
|
+
* caller both bring the workspace up. Errors from discovery/build propagate to
|
|
53
|
+
* the caller.
|
|
50
54
|
*
|
|
51
55
|
* @param services the shared services tree the workspace manager lives on
|
|
52
56
|
* @param folders one or more workspace roots (filesystem paths or URIs)
|
|
53
57
|
* @param options the message locale, when the caller has one
|
|
54
58
|
*/
|
|
55
|
-
export
|
|
59
|
+
export function initializeWorkspaceProgrammatically(services, folders, options = {}) {
|
|
56
60
|
const workspaceFolders = toWorkspaceFolders(folders);
|
|
57
61
|
const manager = services.workspace.WorkspaceManager;
|
|
62
|
+
const key = workspaceFolders
|
|
63
|
+
.map(folder => folder.uri)
|
|
64
|
+
.sort()
|
|
65
|
+
.join('\n');
|
|
66
|
+
const running = bringUps.get(manager);
|
|
67
|
+
if (running !== undefined) {
|
|
68
|
+
if (running.folders !== key) {
|
|
69
|
+
throw new Error(`[hydranium] the workspace is already initialised from ${running.folders.replace(/\n/g, ', ')}; ` +
|
|
70
|
+
'every caller on one services tree has to name the same folders.');
|
|
71
|
+
}
|
|
72
|
+
return running.promise;
|
|
73
|
+
}
|
|
74
|
+
const promise = initialize(manager, workspaceFolders, options);
|
|
75
|
+
bringUps.set(manager, { folders: key, promise });
|
|
76
|
+
return promise;
|
|
77
|
+
}
|
|
78
|
+
/** The programmatic initialisation running on each workspace manager, with the folders it names. */
|
|
79
|
+
const bringUps = new WeakMap();
|
|
80
|
+
async function initialize(manager, workspaceFolders, options) {
|
|
58
81
|
// `locale` goes through the synthesized params rather than a direct
|
|
59
82
|
// `acceptLocale` call, so this seam and a real LSP `initialize` reach the
|
|
60
83
|
// slot by the SAME path — an adopter overriding the capture in
|
|
@@ -67,6 +90,48 @@ export async function initializeWorkspaceProgrammatically(services, folders, opt
|
|
|
67
90
|
manager.initialize({ workspaceFolders, locale: options.locale });
|
|
68
91
|
await manager.initialized({});
|
|
69
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Whether the services were composed around an LSP connection, which is what
|
|
95
|
+
* makes an LSP head present: its client's `initialize`/`initialized` pair then
|
|
96
|
+
* brings the workspace up, and nothing else should.
|
|
97
|
+
*/
|
|
98
|
+
export function hasLspConnection(shared) {
|
|
99
|
+
const lsp = 'lsp' in shared ? shared.lsp : undefined;
|
|
100
|
+
return typeof lsp === 'object' && lsp !== null && 'Connection' in lsp && lsp.Connection !== undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The starters' workspace bring-up: {@link initializeWorkspaceProgrammatically}
|
|
104
|
+
* on `workspace` when no LSP head is present, nothing when one is.
|
|
105
|
+
*
|
|
106
|
+
* Without an LSP head nothing else initialises the workspace, and a head
|
|
107
|
+
* serving from it answers without an error but wrongly: a diagram loads with
|
|
108
|
+
* its cross-file references unresolved. So a missing `workspace` there throws,
|
|
109
|
+
* and so does one given beside an LSP head, whose client names the folders
|
|
110
|
+
* itself. Both throw synchronously, before anything starts, so a starter can
|
|
111
|
+
* tell its caller's mistake from a failed initialisation, which the workspace
|
|
112
|
+
* manager logs. The initialisation is queued on the workspace lock
|
|
113
|
+
* synchronously too: a request that settles before it is queued keeps its
|
|
114
|
+
* unresolved references for good.
|
|
115
|
+
*
|
|
116
|
+
* Two starters on one services tree each name the workspace, and share one
|
|
117
|
+
* initialisation: see {@link initializeWorkspaceProgrammatically}.
|
|
118
|
+
*/
|
|
119
|
+
export function initializeWorkspaceWithoutLsp(shared, workspace, options = {}) {
|
|
120
|
+
if (hasLspConnection(shared)) {
|
|
121
|
+
if (workspace !== undefined) {
|
|
122
|
+
throw new Error('[hydranium] a workspace was given to a starter beside an LSP head, whose client names the folders in `initialize`. ' +
|
|
123
|
+
"Drop the starter's `workspace`.");
|
|
124
|
+
}
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
}
|
|
127
|
+
// An empty list too: Langium initialises zero folders without complaint,
|
|
128
|
+
// and the heads would serve an empty workspace.
|
|
129
|
+
if (workspace === undefined || toWorkspaceFolders(workspace).length === 0) {
|
|
130
|
+
throw new Error('[hydranium] no LSP head is composed, so nothing initialises the workspace. ' +
|
|
131
|
+
'Name its root to the starter: `workspace`, or `rootUri` on `hostHeadsInWorker`.');
|
|
132
|
+
}
|
|
133
|
+
return initializeWorkspaceProgrammatically(shared, workspace, options);
|
|
134
|
+
}
|
|
70
135
|
/**
|
|
71
136
|
* {@link initializeWorkspaceProgrammatically} **and then build every registered
|
|
72
137
|
* document to `Validated`** — the "fully-built workspace" convenience for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-workspace.js","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEnD,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAkC7B;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAmE;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAA+B,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACrB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACN,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"initialize-workspace.js","sourceRoot":"","sources":["../../../src/langium/workspace/initialize-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEnD,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAkC7B;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAmE;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAA+B,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACrB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,mCAAmC,CAChD,QAAqC,EACrC,OAAmE,EACnE,OAAO,GAA4B,EAAE;IAErC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACpD,MAAM,GAAG,GAAG,gBAAgB;SACxB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;SACzB,IAAI,EAAE;SACN,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACZ,yDAAyD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;gBAC9F,iEAAiE,CACtE,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC/D,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC;AAClB,CAAC;AAED,oGAAoG;AACpG,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAyE,CAAC;AAEtG,KAAK,UAAU,UAAU,CACtB,OAAqE,EACrE,gBAAmC,EACnC,OAAgC;IAEhC,oEAAoE;IACpE,0EAA0E;IAC1E,+DAA+D;IAC/D,6EAA6E;IAC7E,gDAAgD;IAChD,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,OAAO,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAsB,CAAC,CAAC;IACrF,MAAM,OAAO,CAAC,WAAW,CAAC,EAAuB,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmC;IACjE,MAAM,GAAG,GAAY,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC;AACzG,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,6BAA6B,CAC1C,MAAmC,EACnC,SAAiF,EACjF,OAAO,GAA4B,EAAE;IAErC,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACZ,qHAAqH;gBAClH,iCAAiC,CACtC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACD,yEAAyE;IACzE,gDAAgD;IAChD,IAAI,SAAS,KAAK,SAAS,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACZ,6EAA6E;YAC1E,iFAAiF,CACtF,CAAC;IACL,CAAC;IACD,OAAO,mCAAmC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CACjD,QAAqC,EACrC,OAAmE,EACnE,OAAO,GAA4B,EAAE;IAErC,MAAM,mCAAmC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -9,10 +9,24 @@
|
|
|
9
9
|
import { type Disposable, type Logger } from '@hydranium/protocol';
|
|
10
10
|
import type { MessageConnection } from 'vscode-jsonrpc';
|
|
11
11
|
import type { IntegratedServer } from '../launcher/integrated-server.js';
|
|
12
|
+
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
13
|
+
import { type WorkspaceFolderInput } from '../langium/workspace/initialize-workspace.js';
|
|
12
14
|
/**
|
|
13
15
|
* Construction-time options for {@link startSocketServer}.
|
|
14
16
|
*/
|
|
15
17
|
export interface SocketServerOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Shared services tree the head serves from. Without an LSP head the
|
|
20
|
+
* launcher brings its workspace up before listening, so a client never
|
|
21
|
+
* reaches a workspace that is not up.
|
|
22
|
+
*/
|
|
23
|
+
readonly shared: ServerSharedServicesMinimal;
|
|
24
|
+
/**
|
|
25
|
+
* Workspace root(s) to initialize — a filesystem path or a `URI`. Required
|
|
26
|
+
* when no LSP head is composed, refused beside one: see
|
|
27
|
+
* {@link initializeWorkspaceWithoutLsp}.
|
|
28
|
+
*/
|
|
29
|
+
readonly workspace?: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>;
|
|
16
30
|
/**
|
|
17
31
|
* Port to bind. Default `0` — OS-assigned ephemeral. Resolve the
|
|
18
32
|
* actual port off {@link StartedSocketServer.port} once `started`
|
|
@@ -65,10 +79,12 @@ export type OnClientConnection = (connection: MessageConnection) => Disposable;
|
|
|
65
79
|
/**
|
|
66
80
|
* Live socket server handle returned by {@link startSocketServer}.
|
|
67
81
|
*
|
|
68
|
-
* - {@link IntegratedServer.started} resolves once
|
|
69
|
-
* AND `port` is
|
|
82
|
+
* - {@link IntegratedServer.started} resolves once the workspace is up,
|
|
83
|
+
* where the launcher brings it up, AND `listen` resolves AND `port` is
|
|
84
|
+
* populated. It rejects, and nothing listens, when the bring-up fails.
|
|
70
85
|
* - {@link IntegratedServer.stopped} resolves when the underlying
|
|
71
|
-
* `net.Server` emits `close
|
|
86
|
+
* `net.Server` emits `close`, or once a failed bring-up has rejected
|
|
87
|
+
* `started`.
|
|
72
88
|
* - {@link port} is undefined until `started` resolves.
|
|
73
89
|
* - {@link close} triggers shutdown: disposes all active client
|
|
74
90
|
* connections and closes the underlying `net.Server`.
|
|
@@ -90,6 +106,10 @@ export interface StartedSocketServer extends IntegratedServer {
|
|
|
90
106
|
* close / server shutdown. Adopters keep per-client instance creation
|
|
91
107
|
* (their server objects) but don't re-implement the tracking machinery.
|
|
92
108
|
*
|
|
109
|
+
* **Without an LSP head the launcher brings the workspace up, then
|
|
110
|
+
* listens**, as `startStdioServer` does: a request served before the
|
|
111
|
+
* bring-up starts keeps its cross-file references unresolved for good.
|
|
112
|
+
*
|
|
93
113
|
* The port is only known once {@link StartedSocketServer.started} has
|
|
94
114
|
* resolved, so announcing it — via {@link publishPortOnLspConnection} —
|
|
95
115
|
* belongs after that await, not beside the call.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-launcher.d.ts","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,
|
|
1
|
+
{"version":3,"file":"socket-launcher.d.ts","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAmD,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEpH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAExH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAChF;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,iBAAiB,KAAK,UAAU,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,mBAAmB,CAuH3H;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,UAAU,CAAC;CACtG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAKlI"}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import * as net from 'node:net';
|
|
10
|
-
import { Deferred, describeErrorWithStack } from '@hydranium/protocol';
|
|
10
|
+
import { Deferred, describeError, describeErrorWithStack } from '@hydranium/protocol';
|
|
11
11
|
import { createMessageConnection, SocketMessageReader, SocketMessageWriter } from 'vscode-jsonrpc/node';
|
|
12
|
+
import { initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
|
|
12
13
|
/**
|
|
13
14
|
* Start a socket-based protocol head. Wraps `net.createServer` with the
|
|
14
15
|
* boilerplate adopters used to write per-head: address resolution,
|
|
@@ -22,6 +23,10 @@ import { createMessageConnection, SocketMessageReader, SocketMessageWriter } fro
|
|
|
22
23
|
* close / server shutdown. Adopters keep per-client instance creation
|
|
23
24
|
* (their server objects) but don't re-implement the tracking machinery.
|
|
24
25
|
*
|
|
26
|
+
* **Without an LSP head the launcher brings the workspace up, then
|
|
27
|
+
* listens**, as `startStdioServer` does: a request served before the
|
|
28
|
+
* bring-up starts keeps its cross-file references unresolved for good.
|
|
29
|
+
*
|
|
25
30
|
* The port is only known once {@link StartedSocketServer.started} has
|
|
26
31
|
* resolved, so announcing it — via {@link publishPortOnLspConnection} —
|
|
27
32
|
* belongs after that await, not beside the call.
|
|
@@ -67,7 +72,35 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
67
72
|
connection.onClose(() => dispose());
|
|
68
73
|
connection.listen();
|
|
69
74
|
});
|
|
70
|
-
|
|
75
|
+
// The workspace manager logs a failed initialization itself; a refused
|
|
76
|
+
// `workspace` throws before `initializing` is set.
|
|
77
|
+
let initializing = false;
|
|
78
|
+
let closed = false;
|
|
79
|
+
const begin = async () => {
|
|
80
|
+
const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
|
|
81
|
+
initializing = true;
|
|
82
|
+
await initialization;
|
|
83
|
+
initializing = false;
|
|
84
|
+
// A `close` during the bring-up has resolved `stopped` already.
|
|
85
|
+
if (closed) {
|
|
86
|
+
started.reject(new Error(`${tag} was closed before it listened`));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
netServer.listen(port, host);
|
|
90
|
+
};
|
|
91
|
+
begin().catch((err) => {
|
|
92
|
+
if (initializing) {
|
|
93
|
+
logger?.debug(`[${tag}] Startup failed: the workspace did not initialize. ${describeError(err)}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
logger?.error(`[${tag}] Startup failed: ${describeErrorWithStack(err)}`);
|
|
97
|
+
}
|
|
98
|
+
started.reject(err);
|
|
99
|
+
stopped.resolve();
|
|
100
|
+
});
|
|
101
|
+
// `started` is always observed internally, as `startStdioServer`'s is, so a
|
|
102
|
+
// caller that closes early and ignores it cannot crash the process.
|
|
103
|
+
void started.promise.catch(() => undefined);
|
|
71
104
|
netServer.on('listening', () => {
|
|
72
105
|
const addressInfo = netServer.address();
|
|
73
106
|
if (!addressInfo) {
|
|
@@ -112,6 +145,7 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
112
145
|
started: started.promise,
|
|
113
146
|
stopped: stopped.promise,
|
|
114
147
|
close() {
|
|
148
|
+
closed = true;
|
|
115
149
|
netServer.close();
|
|
116
150
|
}
|
|
117
151
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-launcher.js","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAgC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-launcher.js","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,9 +20,9 @@ export interface StdioServerOptions {
|
|
|
20
20
|
*/
|
|
21
21
|
readonly shared: ServerSharedServicesMinimal;
|
|
22
22
|
/**
|
|
23
|
-
* Workspace root(s) to initialize — a filesystem path or a `URI`.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Workspace root(s) to initialize — a filesystem path or a `URI`. Required
|
|
24
|
+
* when no LSP head is composed, refused beside one: see
|
|
25
|
+
* {@link initializeWorkspaceWithoutLsp}.
|
|
26
26
|
*/
|
|
27
27
|
readonly workspace?: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>;
|
|
28
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-launcher.d.ts","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,MAAM,EAAyC,MAAM,qBAAqB,CAAC;AACpH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"stdio-launcher.d.ts","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,MAAM,EAAyC,MAAM,qBAAqB,CAAC;AACpH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAExH,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACzD,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,YAAY,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,UAAU,GAC3D,kBAAkB,CAiEpB"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { Deferred, describeError, describeErrorWithStack } from '@hydranium/protocol';
|
|
10
10
|
import { createMessageConnection, StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node';
|
|
11
|
-
import {
|
|
11
|
+
import { initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
|
|
12
12
|
/**
|
|
13
13
|
* Start a **stdio**-based protocol head — the transport `hydranium-cli` speaks,
|
|
14
14
|
* since its data-server subcommands spawn a server command and drive JSON-RPC
|
|
@@ -57,15 +57,17 @@ export function startStdioServer(options, onConnection) {
|
|
|
57
57
|
stopped.resolve();
|
|
58
58
|
};
|
|
59
59
|
connection.onClose(() => close());
|
|
60
|
-
// The workspace manager logs a failed initialization itself
|
|
60
|
+
// The workspace manager logs a failed initialization itself; a refused
|
|
61
|
+
// `workspace` throws before `initializing` is set.
|
|
61
62
|
let initializing = false;
|
|
62
63
|
const begin = async () => {
|
|
64
|
+
const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
|
|
65
|
+
initializing = true;
|
|
63
66
|
if (options.workspace !== undefined) {
|
|
64
67
|
logger?.info(`[${tag}] Initializing workspace`);
|
|
65
|
-
initializing = true;
|
|
66
|
-
await initializeWorkspaceProgrammatically(options.shared, options.workspace);
|
|
67
|
-
initializing = false;
|
|
68
68
|
}
|
|
69
|
+
await initialization;
|
|
70
|
+
initializing = false;
|
|
69
71
|
// Only now attach the reader — see the ordering note in the doc above.
|
|
70
72
|
connection.listen();
|
|
71
73
|
logger?.info(`[${tag}] Listening on stdio`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-launcher.js","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAgC,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEpH,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGxG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stdio-launcher.js","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/core",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.313",
|
|
4
4
|
"description": "Foundational runtime of the hydranium framework: AST coordination layer (services, integrity, AST extension, serialization, multi-client documents) plus the LSP textual head at the /lsp subpath. Consumed by protocol-head packages (@hydranium/data-server, @hydranium/glsp-server).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ast",
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"diff": "^5.2.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
|
-
"@hydranium/langium": "1.0.0-next.
|
|
91
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
90
|
+
"@hydranium/langium": "1.0.0-next.313",
|
|
91
|
+
"@hydranium/protocol": "1.0.0-next.313",
|
|
92
92
|
"@playwright/test": "^1.40.0",
|
|
93
93
|
"@types/diff": "^5.2.0",
|
|
94
94
|
"fake-indexeddb": "^6.2.5",
|
|
@@ -101,8 +101,8 @@
|
|
|
101
101
|
"vscode-languageserver-types": "^3.17.5"
|
|
102
102
|
},
|
|
103
103
|
"peerDependencies": {
|
|
104
|
-
"@hydranium/langium": "1.0.0-next.
|
|
105
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
104
|
+
"@hydranium/langium": "1.0.0-next.313",
|
|
105
|
+
"@hydranium/protocol": "1.0.0-next.313",
|
|
106
106
|
"@playwright/test": "^1.40.0",
|
|
107
107
|
"vscode-jsonrpc": "^9.0.0",
|
|
108
108
|
"vscode-languageserver": "~10.0.1",
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
import { isOperationCancelled, URI } from '@hydranium/langium';
|
|
22
22
|
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
23
23
|
import { isFileSystemProviderRegistry } from '../langium/workspace/file-system-provider.js';
|
|
24
|
+
import { hasLspConnection, initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
|
|
24
25
|
import { PersistentFileSystemProvider } from '../langium/workspace/persistent-file-system-provider.js';
|
|
25
26
|
import { isConnectionGoneError } from '../util/connection-liveness.js';
|
|
26
27
|
|
|
@@ -56,6 +57,9 @@ export interface HostHeadsInWorkerOptions {
|
|
|
56
57
|
* Left out, the ready message carries no files and nothing is read. Every
|
|
57
58
|
* file's content goes in one message, so a workspace too large for that
|
|
58
59
|
* wants a per-document read instead.
|
|
60
|
+
*
|
|
61
|
+
* Required when `start` composes no LSP head: the workspace is then brought
|
|
62
|
+
* up from it before the ready message, which nothing else would do.
|
|
59
63
|
*/
|
|
60
64
|
readonly rootUri?: string;
|
|
61
65
|
}
|
|
@@ -72,9 +76,11 @@ export interface HostHeadsInWorkerOptions {
|
|
|
72
76
|
* awaited before `start` is called. It may be a plain value where nothing has
|
|
73
77
|
* to be awaited.
|
|
74
78
|
*
|
|
75
|
-
* Once `start` has returned
|
|
76
|
-
*
|
|
77
|
-
*
|
|
79
|
+
* Once `start` has returned, every `started` it handed back has resolved and,
|
|
80
|
+
* without an LSP head, the workspace has been brought up from
|
|
81
|
+
* {@link HostHeadsInWorkerOptions.rootUri}, the ready message goes out, so a
|
|
82
|
+
* page never hears of heads that failed to come up, and an uncaught error from
|
|
83
|
+
* then on is a report rather than the end
|
|
78
84
|
* of the heads. It carries the workspace's files when
|
|
79
85
|
* {@link HostHeadsInWorkerOptions.rootUri} is given. Then every document is
|
|
80
86
|
* built with validation once the workspace has initialised: Langium's initial
|
|
@@ -137,8 +143,17 @@ export function hostHeadsInWorker<TPrepared>(
|
|
|
137
143
|
const value = await preparation;
|
|
138
144
|
const result = start(ports, value);
|
|
139
145
|
const { shared, started } = 'shared' in result ? result : { shared: result, started: undefined };
|
|
146
|
+
// Without an LSP head the workspace is brought up here, queued in the step
|
|
147
|
+
// `start` returns in: a page message is handled in a later task, so no
|
|
148
|
+
// request settles against a workspace not yet brought up. Its throw is a
|
|
149
|
+
// rejection, so the awaiting below still handles every head's `started`.
|
|
150
|
+
const bringUp = hasLspConnection(shared)
|
|
151
|
+
? undefined
|
|
152
|
+
: new Promise<void>(resolve =>
|
|
153
|
+
resolve(initializeWorkspaceWithoutLsp(shared, options.rootUri === undefined ? undefined : URI.parse(options.rootUri)))
|
|
154
|
+
);
|
|
140
155
|
// Safe to await now: every head listens already, so nothing is lost.
|
|
141
|
-
await Promise.all(started ?? []);
|
|
156
|
+
await Promise.all([...(started ?? []), bringUp]);
|
|
142
157
|
const ready: WorkerReadyMessage = {
|
|
143
158
|
type: WORKER_READY_MESSAGE_TYPE,
|
|
144
159
|
workspace: options.rootUri === undefined ? undefined : readWorkspace(shared, options.rootUri)
|
|
@@ -89,6 +89,11 @@ export interface ClientSession<
|
|
|
89
89
|
* it open already or it holds this client's unsaved text within its release
|
|
90
90
|
* grace. `options` are kept for this open until it closes; a repeat open,
|
|
91
91
|
* concurrent or not, keeps the options of the first.
|
|
92
|
+
*
|
|
93
|
+
* Waits for the workspace to be brought up, as {@link create} does, and does
|
|
94
|
+
* not settle while nothing brings it up. So neither may be awaited from
|
|
95
|
+
* inside the bring-up, such as a workspace manager's document loading: the
|
|
96
|
+
* bring-up then waits for itself.
|
|
92
97
|
*/
|
|
93
98
|
open(uri: string, options?: TOpenOptions): Promise<void>;
|
|
94
99
|
/** The options this session opened `uri` with, or `undefined` when it gave none or does not have `uri` open. */
|
|
@@ -538,8 +543,15 @@ export class DefaultClientSession<
|
|
|
538
543
|
* A first open records its options before the store opens the URI, so a
|
|
539
544
|
* listener of the store's open reads this open's options rather than an
|
|
540
545
|
* earlier one's.
|
|
546
|
+
*
|
|
547
|
+
* It waits for the workspace first, as an LSP head's open does: a document
|
|
548
|
+
* opened before the bring-up links against a workspace that holds only
|
|
549
|
+
* itself, and the bring-up does not always relink it.
|
|
541
550
|
*/
|
|
542
551
|
protected async registerOpen(uri: string, options: TOpenOptions | undefined): Promise<void> {
|
|
552
|
+
await this.modelService.ready;
|
|
553
|
+
// A session ended during the wait opens nothing.
|
|
554
|
+
this.assertLive();
|
|
543
555
|
const wasOpen = this.services.workspace.TextDocuments.isOpenInClient(uri, this.clientId);
|
|
544
556
|
if (!wasOpen) {
|
|
545
557
|
this.openOptionsByUri.set(this.canonicalKey(uri), options);
|
|
@@ -553,6 +565,8 @@ export class DefaultClientSession<
|
|
|
553
565
|
}
|
|
554
566
|
|
|
555
567
|
protected async createDocument(uri: string, text: string): Promise<TextVersion> {
|
|
568
|
+
// As `registerOpen` does, and before the checks, which read the workspace.
|
|
569
|
+
await this.modelService.ready;
|
|
556
570
|
if (await this.services.workspace.FileSystemProvider.exists(UriUtils.toUri(uri))) {
|
|
557
571
|
throw new Error(`Cannot create ${uri}: the file exists`);
|
|
558
572
|
}
|
|
@@ -194,8 +194,9 @@ function rehydrateCst(document: LangiumDocument, factory: LangiumDocumentFactory
|
|
|
194
194
|
* Each build refreshes
|
|
195
195
|
* the idle window of the documents in its batch; when a closed, sheddable
|
|
196
196
|
* document's window elapses, every AST node's `$cstNode` and every reference's
|
|
197
|
-
* `$refNode` are nulled, and the CST
|
|
198
|
-
*
|
|
197
|
+
* `$refNode` are nulled, and the CST becomes unreachable with the `Range`s
|
|
198
|
+
* and `Position`s only it holds. A description's segments and the reference
|
|
199
|
+
* index's segments share the CST's `Range` objects, so those stay.
|
|
199
200
|
*
|
|
200
201
|
* **Terminology.** *Residency* is the state axis (is the CST in memory? —
|
|
201
202
|
* `resident` vs `shed`); *shed* is both the act and the policy vocabulary (drop
|
|
@@ -81,20 +81,51 @@ function toWorkspaceFolders(folders: WorkspaceFolderInput | ReadonlyArray<Worksp
|
|
|
81
81
|
* negotiation, `onInitialize`/`onInitialized` events) are intentionally not
|
|
82
82
|
* reproduced — a headless server has no client and they degrade gracefully.
|
|
83
83
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
84
|
+
* Runs once per workspace manager: a later call naming the same folders, in
|
|
85
|
+
* any order, gets the first call's promise, and one naming others throws
|
|
86
|
+
* synchronously. A second initialisation would cancel the first one's build
|
|
87
|
+
* and leave the documents unbuilt, which happens as soon as a starter and its
|
|
88
|
+
* caller both bring the workspace up. Errors from discovery/build propagate to
|
|
89
|
+
* the caller.
|
|
86
90
|
*
|
|
87
91
|
* @param services the shared services tree the workspace manager lives on
|
|
88
92
|
* @param folders one or more workspace roots (filesystem paths or URIs)
|
|
89
93
|
* @param options the message locale, when the caller has one
|
|
90
94
|
*/
|
|
91
|
-
export
|
|
95
|
+
export function initializeWorkspaceProgrammatically(
|
|
92
96
|
services: ServerSharedServicesMinimal,
|
|
93
97
|
folders: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>,
|
|
94
98
|
options: ProgrammaticInitOptions = {}
|
|
95
99
|
): Promise<void> {
|
|
96
100
|
const workspaceFolders = toWorkspaceFolders(folders);
|
|
97
101
|
const manager = services.workspace.WorkspaceManager;
|
|
102
|
+
const key = workspaceFolders
|
|
103
|
+
.map(folder => folder.uri)
|
|
104
|
+
.sort()
|
|
105
|
+
.join('\n');
|
|
106
|
+
const running = bringUps.get(manager);
|
|
107
|
+
if (running !== undefined) {
|
|
108
|
+
if (running.folders !== key) {
|
|
109
|
+
throw new Error(
|
|
110
|
+
`[hydranium] the workspace is already initialised from ${running.folders.replace(/\n/g, ', ')}; ` +
|
|
111
|
+
'every caller on one services tree has to name the same folders.'
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
return running.promise;
|
|
115
|
+
}
|
|
116
|
+
const promise = initialize(manager, workspaceFolders, options);
|
|
117
|
+
bringUps.set(manager, { folders: key, promise });
|
|
118
|
+
return promise;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** The programmatic initialisation running on each workspace manager, with the folders it names. */
|
|
122
|
+
const bringUps = new WeakMap<object, { readonly folders: string; readonly promise: Promise<void> }>();
|
|
123
|
+
|
|
124
|
+
async function initialize(
|
|
125
|
+
manager: ServerSharedServicesMinimal['workspace']['WorkspaceManager'],
|
|
126
|
+
workspaceFolders: WorkspaceFolder[],
|
|
127
|
+
options: ProgrammaticInitOptions
|
|
128
|
+
): Promise<void> {
|
|
98
129
|
// `locale` goes through the synthesized params rather than a direct
|
|
99
130
|
// `acceptLocale` call, so this seam and a real LSP `initialize` reach the
|
|
100
131
|
// slot by the SAME path — an adopter overriding the capture in
|
|
@@ -108,6 +139,58 @@ export async function initializeWorkspaceProgrammatically(
|
|
|
108
139
|
await manager.initialized({} as InitializedParams);
|
|
109
140
|
}
|
|
110
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Whether the services were composed around an LSP connection, which is what
|
|
144
|
+
* makes an LSP head present: its client's `initialize`/`initialized` pair then
|
|
145
|
+
* brings the workspace up, and nothing else should.
|
|
146
|
+
*/
|
|
147
|
+
export function hasLspConnection(shared: ServerSharedServicesMinimal): boolean {
|
|
148
|
+
const lsp: unknown = 'lsp' in shared ? shared.lsp : undefined;
|
|
149
|
+
return typeof lsp === 'object' && lsp !== null && 'Connection' in lsp && lsp.Connection !== undefined;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* The starters' workspace bring-up: {@link initializeWorkspaceProgrammatically}
|
|
154
|
+
* on `workspace` when no LSP head is present, nothing when one is.
|
|
155
|
+
*
|
|
156
|
+
* Without an LSP head nothing else initialises the workspace, and a head
|
|
157
|
+
* serving from it answers without an error but wrongly: a diagram loads with
|
|
158
|
+
* its cross-file references unresolved. So a missing `workspace` there throws,
|
|
159
|
+
* and so does one given beside an LSP head, whose client names the folders
|
|
160
|
+
* itself. Both throw synchronously, before anything starts, so a starter can
|
|
161
|
+
* tell its caller's mistake from a failed initialisation, which the workspace
|
|
162
|
+
* manager logs. The initialisation is queued on the workspace lock
|
|
163
|
+
* synchronously too: a request that settles before it is queued keeps its
|
|
164
|
+
* unresolved references for good.
|
|
165
|
+
*
|
|
166
|
+
* Two starters on one services tree each name the workspace, and share one
|
|
167
|
+
* initialisation: see {@link initializeWorkspaceProgrammatically}.
|
|
168
|
+
*/
|
|
169
|
+
export function initializeWorkspaceWithoutLsp(
|
|
170
|
+
shared: ServerSharedServicesMinimal,
|
|
171
|
+
workspace: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput> | undefined,
|
|
172
|
+
options: ProgrammaticInitOptions = {}
|
|
173
|
+
): Promise<void> {
|
|
174
|
+
if (hasLspConnection(shared)) {
|
|
175
|
+
if (workspace !== undefined) {
|
|
176
|
+
throw new Error(
|
|
177
|
+
'[hydranium] a workspace was given to a starter beside an LSP head, whose client names the folders in `initialize`. ' +
|
|
178
|
+
"Drop the starter's `workspace`."
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
return Promise.resolve();
|
|
182
|
+
}
|
|
183
|
+
// An empty list too: Langium initialises zero folders without complaint,
|
|
184
|
+
// and the heads would serve an empty workspace.
|
|
185
|
+
if (workspace === undefined || toWorkspaceFolders(workspace).length === 0) {
|
|
186
|
+
throw new Error(
|
|
187
|
+
'[hydranium] no LSP head is composed, so nothing initialises the workspace. ' +
|
|
188
|
+
'Name its root to the starter: `workspace`, or `rootUri` on `hostHeadsInWorker`.'
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
return initializeWorkspaceProgrammatically(shared, workspace, options);
|
|
192
|
+
}
|
|
193
|
+
|
|
111
194
|
/**
|
|
112
195
|
* {@link initializeWorkspaceProgrammatically} **and then build every registered
|
|
113
196
|
* document to `Validated`** — the "fully-built workspace" convenience for
|
|
@@ -8,15 +8,29 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
|
|
10
10
|
import * as net from 'node:net';
|
|
11
|
-
import { Deferred, describeErrorWithStack, type Disposable, type Logger } from '@hydranium/protocol';
|
|
11
|
+
import { Deferred, describeError, describeErrorWithStack, type Disposable, type Logger } from '@hydranium/protocol';
|
|
12
12
|
import { createMessageConnection, SocketMessageReader, SocketMessageWriter } from 'vscode-jsonrpc/node';
|
|
13
13
|
import type { MessageConnection } from 'vscode-jsonrpc';
|
|
14
14
|
import type { IntegratedServer } from '../launcher/integrated-server.js';
|
|
15
|
+
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
16
|
+
import { initializeWorkspaceWithoutLsp, type WorkspaceFolderInput } from '../langium/workspace/initialize-workspace.js';
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* Construction-time options for {@link startSocketServer}.
|
|
18
20
|
*/
|
|
19
21
|
export interface SocketServerOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Shared services tree the head serves from. Without an LSP head the
|
|
24
|
+
* launcher brings its workspace up before listening, so a client never
|
|
25
|
+
* reaches a workspace that is not up.
|
|
26
|
+
*/
|
|
27
|
+
readonly shared: ServerSharedServicesMinimal;
|
|
28
|
+
/**
|
|
29
|
+
* Workspace root(s) to initialize — a filesystem path or a `URI`. Required
|
|
30
|
+
* when no LSP head is composed, refused beside one: see
|
|
31
|
+
* {@link initializeWorkspaceWithoutLsp}.
|
|
32
|
+
*/
|
|
33
|
+
readonly workspace?: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>;
|
|
20
34
|
/**
|
|
21
35
|
* Port to bind. Default `0` — OS-assigned ephemeral. Resolve the
|
|
22
36
|
* actual port off {@link StartedSocketServer.port} once `started`
|
|
@@ -71,10 +85,12 @@ export type OnClientConnection = (connection: MessageConnection) => Disposable;
|
|
|
71
85
|
/**
|
|
72
86
|
* Live socket server handle returned by {@link startSocketServer}.
|
|
73
87
|
*
|
|
74
|
-
* - {@link IntegratedServer.started} resolves once
|
|
75
|
-
* AND `port` is
|
|
88
|
+
* - {@link IntegratedServer.started} resolves once the workspace is up,
|
|
89
|
+
* where the launcher brings it up, AND `listen` resolves AND `port` is
|
|
90
|
+
* populated. It rejects, and nothing listens, when the bring-up fails.
|
|
76
91
|
* - {@link IntegratedServer.stopped} resolves when the underlying
|
|
77
|
-
* `net.Server` emits `close
|
|
92
|
+
* `net.Server` emits `close`, or once a failed bring-up has rejected
|
|
93
|
+
* `started`.
|
|
78
94
|
* - {@link port} is undefined until `started` resolves.
|
|
79
95
|
* - {@link close} triggers shutdown: disposes all active client
|
|
80
96
|
* connections and closes the underlying `net.Server`.
|
|
@@ -97,6 +113,10 @@ export interface StartedSocketServer extends IntegratedServer {
|
|
|
97
113
|
* close / server shutdown. Adopters keep per-client instance creation
|
|
98
114
|
* (their server objects) but don't re-implement the tracking machinery.
|
|
99
115
|
*
|
|
116
|
+
* **Without an LSP head the launcher brings the workspace up, then
|
|
117
|
+
* listens**, as `startStdioServer` does: a request served before the
|
|
118
|
+
* bring-up starts keeps its cross-file references unresolved for good.
|
|
119
|
+
*
|
|
100
120
|
* The port is only known once {@link StartedSocketServer.started} has
|
|
101
121
|
* resolved, so announcing it — via {@link publishPortOnLspConnection} —
|
|
102
122
|
* belongs after that await, not beside the call.
|
|
@@ -144,7 +164,34 @@ export function startSocketServer(options: SocketServerOptions, onClientConnecti
|
|
|
144
164
|
connection.listen();
|
|
145
165
|
});
|
|
146
166
|
|
|
147
|
-
|
|
167
|
+
// The workspace manager logs a failed initialization itself; a refused
|
|
168
|
+
// `workspace` throws before `initializing` is set.
|
|
169
|
+
let initializing = false;
|
|
170
|
+
let closed = false;
|
|
171
|
+
const begin = async (): Promise<void> => {
|
|
172
|
+
const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
|
|
173
|
+
initializing = true;
|
|
174
|
+
await initialization;
|
|
175
|
+
initializing = false;
|
|
176
|
+
// A `close` during the bring-up has resolved `stopped` already.
|
|
177
|
+
if (closed) {
|
|
178
|
+
started.reject(new Error(`${tag} was closed before it listened`));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
netServer.listen(port, host);
|
|
182
|
+
};
|
|
183
|
+
begin().catch((err: unknown) => {
|
|
184
|
+
if (initializing) {
|
|
185
|
+
logger?.debug(`[${tag}] Startup failed: the workspace did not initialize. ${describeError(err)}`);
|
|
186
|
+
} else {
|
|
187
|
+
logger?.error(`[${tag}] Startup failed: ${describeErrorWithStack(err)}`);
|
|
188
|
+
}
|
|
189
|
+
started.reject(err);
|
|
190
|
+
stopped.resolve();
|
|
191
|
+
});
|
|
192
|
+
// `started` is always observed internally, as `startStdioServer`'s is, so a
|
|
193
|
+
// caller that closes early and ignores it cannot crash the process.
|
|
194
|
+
void started.promise.catch(() => undefined);
|
|
148
195
|
netServer.on('listening', () => {
|
|
149
196
|
const addressInfo = netServer.address();
|
|
150
197
|
if (!addressInfo) {
|
|
@@ -189,6 +236,7 @@ export function startSocketServer(options: SocketServerOptions, onClientConnecti
|
|
|
189
236
|
started: started.promise,
|
|
190
237
|
stopped: stopped.promise,
|
|
191
238
|
close(): void {
|
|
239
|
+
closed = true;
|
|
192
240
|
netServer.close();
|
|
193
241
|
}
|
|
194
242
|
};
|
|
@@ -12,7 +12,7 @@ import type { MessageConnection } from 'vscode-jsonrpc';
|
|
|
12
12
|
import { createMessageConnection, StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node';
|
|
13
13
|
import type { IntegratedServer } from '../launcher/integrated-server.js';
|
|
14
14
|
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
15
|
-
import {
|
|
15
|
+
import { initializeWorkspaceWithoutLsp, type WorkspaceFolderInput } from '../langium/workspace/initialize-workspace.js';
|
|
16
16
|
|
|
17
17
|
/** Construction-time options for {@link startStdioServer}. */
|
|
18
18
|
export interface StdioServerOptions {
|
|
@@ -23,9 +23,9 @@ export interface StdioServerOptions {
|
|
|
23
23
|
*/
|
|
24
24
|
readonly shared: ServerSharedServicesMinimal;
|
|
25
25
|
/**
|
|
26
|
-
* Workspace root(s) to initialize — a filesystem path or a `URI`.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* Workspace root(s) to initialize — a filesystem path or a `URI`. Required
|
|
27
|
+
* when no LSP head is composed, refused beside one: see
|
|
28
|
+
* {@link initializeWorkspaceWithoutLsp}.
|
|
29
29
|
*/
|
|
30
30
|
readonly workspace?: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>;
|
|
31
31
|
/**
|
|
@@ -121,15 +121,17 @@ export function startStdioServer(
|
|
|
121
121
|
};
|
|
122
122
|
connection.onClose(() => close());
|
|
123
123
|
|
|
124
|
-
// The workspace manager logs a failed initialization itself
|
|
124
|
+
// The workspace manager logs a failed initialization itself; a refused
|
|
125
|
+
// `workspace` throws before `initializing` is set.
|
|
125
126
|
let initializing = false;
|
|
126
127
|
const begin = async (): Promise<void> => {
|
|
128
|
+
const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
|
|
129
|
+
initializing = true;
|
|
127
130
|
if (options.workspace !== undefined) {
|
|
128
131
|
logger?.info(`[${tag}] Initializing workspace`);
|
|
129
|
-
initializing = true;
|
|
130
|
-
await initializeWorkspaceProgrammatically(options.shared, options.workspace);
|
|
131
|
-
initializing = false;
|
|
132
132
|
}
|
|
133
|
+
await initialization;
|
|
134
|
+
initializing = false;
|
|
133
135
|
// Only now attach the reader — see the ordering note in the doc above.
|
|
134
136
|
connection.listen();
|
|
135
137
|
logger?.info(`[${tag}] Listening on stdio`);
|