@hydranium/core 1.0.0-next.307 → 1.0.0-next.308
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 +6 -5
- package/lib/browser/host-heads-in-worker.d.ts +20 -6
- package/lib/browser/host-heads-in-worker.d.ts.map +1 -1
- package/lib/browser/host-heads-in-worker.js +54 -8
- package/lib/browser/host-heads-in-worker.js.map +1 -1
- package/lib/langium/workspace/file-system-provider.d.ts +2 -0
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +4 -0
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/host-heads-in-worker.ts +70 -9
- package/src/langium/workspace/file-system-provider.ts +5 -0
- package/src/langium/workspace/persistent-file-system-provider.ts +1 -1
package/README.md
CHANGED
|
@@ -53,11 +53,12 @@ needs it.
|
|
|
53
53
|
`./browser`: it awaits what you prepared, such as `persistentFileSystem`,
|
|
54
54
|
then calls your `start`, which starts the LSP head on its port with
|
|
55
55
|
`startLanguageServerInWorker` and the other heads with their own starters.
|
|
56
|
-
It posts the ready message once every head is up,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
It posts the ready message once every head is up, with the files under the
|
|
57
|
+
`rootUri` you pass it, runs the validating build and reports a failed
|
|
58
|
+
start, build or rejection to the page; `reportWorkerError` reports a
|
|
59
|
+
failure of your own. The LSP starter answers the editor's save request,
|
|
60
|
+
which a worker creating its own connection adds with
|
|
61
|
+
`withSaveTextDocumentCapability` and `listenToSaveTextDocument` from
|
|
61
62
|
`./lsp`.
|
|
62
63
|
|
|
63
64
|
See *Compose a server by hand* and *Add a validation check* in
|
|
@@ -26,6 +26,18 @@ export interface StartedHeads {
|
|
|
26
26
|
*/
|
|
27
27
|
readonly started?: ReadonlyArray<Promise<unknown>>;
|
|
28
28
|
}
|
|
29
|
+
/** What {@link hostHeadsInWorker} does beyond starting the heads. */
|
|
30
|
+
export interface HostHeadsInWorkerOptions {
|
|
31
|
+
/**
|
|
32
|
+
* The workspace root, as the page names it in `initialize`. Given one, the
|
|
33
|
+
* ready message carries every file under it with its content, and the paths
|
|
34
|
+
* restored from a {@link PersistentFileSystemProvider}'s store under it.
|
|
35
|
+
* Left out, the ready message carries no files and nothing is read. Every
|
|
36
|
+
* file's content goes in one message, so a workspace too large for that
|
|
37
|
+
* wants a per-document read instead.
|
|
38
|
+
*/
|
|
39
|
+
readonly rootUri?: string;
|
|
40
|
+
}
|
|
29
41
|
/**
|
|
30
42
|
* Answer the page's bootstrap by starting the heads on its ports, once per
|
|
31
43
|
* worker, and tell the page when they are up and when something fails.
|
|
@@ -41,11 +53,13 @@ export interface StartedHeads {
|
|
|
41
53
|
* Once `start` has returned and every `started` it handed back has resolved,
|
|
42
54
|
* the ready message goes out, so a page never hears of heads that failed to
|
|
43
55
|
* come up, and an uncaught error from then on is a report rather than the end
|
|
44
|
-
* of the heads.
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
56
|
+
* of the heads. It carries the workspace's files when
|
|
57
|
+
* {@link HostHeadsInWorkerOptions.rootUri} is given. Then every document is
|
|
58
|
+
* built with validation once the workspace has initialised: Langium's initial
|
|
59
|
+
* build validates nothing, so a page that only opens its ports would see a
|
|
60
|
+
* server that indexed the workspace and says nothing. An initial build that
|
|
61
|
+
* a write during startup cancelled is built the same, since every document
|
|
62
|
+
* exists by then.
|
|
49
63
|
*
|
|
50
64
|
* Call it once: a second call answers the same bootstrap with a second set of
|
|
51
65
|
* heads on the same ports and reports every rejection twice. The worker's
|
|
@@ -54,5 +68,5 @@ export interface StartedHeads {
|
|
|
54
68
|
* with, as the Node host does. An uncaught throw needs no listener, since it
|
|
55
69
|
* reaches the page as the `Worker`'s own `error` event.
|
|
56
70
|
*/
|
|
57
|
-
export declare function hostHeadsInWorker<TPrepared>(prepared: TPrepared | PromiseLike<TPrepared>, start: (ports: HeadPorts, prepared: TPrepared) => ServerSharedServicesMinimal | StartedHeads): void;
|
|
71
|
+
export declare function hostHeadsInWorker<TPrepared>(prepared: TPrepared | PromiseLike<TPrepared>, start: (ports: HeadPorts, prepared: TPrepared) => ServerSharedServicesMinimal | StartedHeads, options?: HostHeadsInWorkerOptions): void;
|
|
58
72
|
//# sourceMappingURL=host-heads-in-worker.d.ts.map
|
|
@@ -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,
|
|
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;AAKjF;;;;;;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;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;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,CAoDN"}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { describeErrorWithStack, isWorkerBootstrapMessage, WORKER_BOOTSTRAP_PHASE, WORKER_ERROR_MESSAGE_TYPE, WORKER_READY_MESSAGE_TYPE } from '@hydranium/protocol';
|
|
10
|
-
import { isOperationCancelled } from '@hydranium/langium';
|
|
10
|
+
import { isOperationCancelled, URI } from '@hydranium/langium';
|
|
11
|
+
import { isFileSystemProviderRegistry } from '../langium/workspace/file-system-provider.js';
|
|
12
|
+
import { PersistentFileSystemProvider } from '../langium/workspace/persistent-file-system-provider.js';
|
|
11
13
|
import { isConnectionGoneError } from '../util/connection-liveness.js';
|
|
12
14
|
/**
|
|
13
15
|
* Report a failure to the page on the worker global, the channel no head is
|
|
@@ -35,11 +37,13 @@ export function reportWorkerError(phase, error) {
|
|
|
35
37
|
* Once `start` has returned and every `started` it handed back has resolved,
|
|
36
38
|
* the ready message goes out, so a page never hears of heads that failed to
|
|
37
39
|
* come up, and an uncaught error from then on is a report rather than the end
|
|
38
|
-
* of the heads.
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* of the heads. It carries the workspace's files when
|
|
41
|
+
* {@link HostHeadsInWorkerOptions.rootUri} is given. Then every document is
|
|
42
|
+
* built with validation once the workspace has initialised: Langium's initial
|
|
43
|
+
* build validates nothing, so a page that only opens its ports would see a
|
|
44
|
+
* server that indexed the workspace and says nothing. An initial build that
|
|
45
|
+
* a write during startup cancelled is built the same, since every document
|
|
46
|
+
* exists by then.
|
|
43
47
|
*
|
|
44
48
|
* Call it once: a second call answers the same bootstrap with a second set of
|
|
45
49
|
* heads on the same ports and reports every rejection twice. The worker's
|
|
@@ -48,7 +52,7 @@ export function reportWorkerError(phase, error) {
|
|
|
48
52
|
* with, as the Node host does. An uncaught throw needs no listener, since it
|
|
49
53
|
* reaches the page as the `Worker`'s own `error` event.
|
|
50
54
|
*/
|
|
51
|
-
export function hostHeadsInWorker(prepared, start) {
|
|
55
|
+
export function hostHeadsInWorker(prepared, start, options = {}) {
|
|
52
56
|
const preparation = Promise.resolve(prepared);
|
|
53
57
|
// Handled here, so a restore that fails before the bootstrap arrives reaches
|
|
54
58
|
// the page once, under the bootstrap phase, and not first as an unhandled
|
|
@@ -91,11 +95,53 @@ export function hostHeadsInWorker(prepared, start) {
|
|
|
91
95
|
const { shared, started } = 'shared' in result ? result : { shared: result, started: undefined };
|
|
92
96
|
// Safe to await now: every head listens already, so nothing is lost.
|
|
93
97
|
await Promise.all(started ?? []);
|
|
94
|
-
const ready = {
|
|
98
|
+
const ready = {
|
|
99
|
+
type: WORKER_READY_MESSAGE_TYPE,
|
|
100
|
+
workspace: options.rootUri === undefined ? undefined : readWorkspace(shared, options.rootUri)
|
|
101
|
+
};
|
|
95
102
|
postMessage(ready);
|
|
96
103
|
validateWorkspace(shared).catch((error) => reportWorkerError('workspace validation', error));
|
|
97
104
|
}
|
|
98
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Every file under `rootUri`, walked through the bound provider, so a file
|
|
108
|
+
* that exists only in the store is included, which the seed's keys would miss.
|
|
109
|
+
*/
|
|
110
|
+
function readWorkspace(shared, rootUri) {
|
|
111
|
+
const provider = shared.workspace.FileSystemProvider;
|
|
112
|
+
const root = URI.parse(rootUri);
|
|
113
|
+
// Keys past the root, a trailing slash on it or not.
|
|
114
|
+
const prefix = `${root.toString().replace(/\/$/, '')}/`;
|
|
115
|
+
// No prototype, so a file named `__proto__` is a key like any other.
|
|
116
|
+
const files = Object.create(null);
|
|
117
|
+
const visit = (uri) => {
|
|
118
|
+
for (const node of provider.readDirectorySync(uri)) {
|
|
119
|
+
if (node.isFile) {
|
|
120
|
+
files[node.uri.toString().slice(prefix.length)] = provider.readFileSync(node.uri);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
visit(node.uri);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
visit(root);
|
|
128
|
+
// The bound slot is the scheme registry, so the provider that holds the
|
|
129
|
+
// root is the one its scheme selects. Its store may key under another
|
|
130
|
+
// root, absolutely or unencoded, so a restored path is resolved as the
|
|
131
|
+
// provider resolves it, and one outside this root names no file here.
|
|
132
|
+
const holder = isFileSystemProviderRegistry(provider) ? provider.providerFor(root) : provider;
|
|
133
|
+
// A set, since a store may hold one file under two spellings.
|
|
134
|
+
const restored = new Set();
|
|
135
|
+
if (holder instanceof PersistentFileSystemProvider) {
|
|
136
|
+
for (const path of holder.restoredPaths) {
|
|
137
|
+
const uri = holder.storeUri(path).toString();
|
|
138
|
+
if (uri.startsWith(prefix) && Object.hasOwn(files, uri.slice(prefix.length))) {
|
|
139
|
+
restored.add(uri.slice(prefix.length));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return { rootUri, files, restored: [...restored] };
|
|
144
|
+
}
|
|
99
145
|
/**
|
|
100
146
|
* The trailing validating build, after `workspaceInitialized`: building before
|
|
101
147
|
* it would validate a partial document set. A cancelled or connection-gone
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"host-heads-in-worker.js","sourceRoot":"","sources":["../../src/browser/host-heads-in-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,6 +129,8 @@ export interface FileSystemProviderRegistry<THost extends WritableFileSystemProv
|
|
|
129
129
|
/** The provider that answers for `uri`. */
|
|
130
130
|
providerFor(uri: URI): WritableFileSystemProvider;
|
|
131
131
|
}
|
|
132
|
+
/** Whether `provider` dispatches by scheme, as the provider bound on `workspace.FileSystemProvider` does. */
|
|
133
|
+
export declare function isFileSystemProviderRegistry(provider: WritableFileSystemProvider): provider is FileSystemProviderRegistry;
|
|
132
134
|
/** Options for {@link DefaultFileSystemProviderRegistry}. */
|
|
133
135
|
export interface FileSystemProviderRegistryOptions<THost extends WritableFileSystemProvider = WritableFileSystemProvider> extends LogNameOptions {
|
|
134
136
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,10 @@ export class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider {
|
|
|
46
46
|
return super.stat(uri);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
/** Whether `provider` dispatches by scheme, as the provider bound on `workspace.FileSystemProvider` does. */
|
|
50
|
+
export function isFileSystemProviderRegistry(provider) {
|
|
51
|
+
return 'providerFor' in provider && typeof provider.providerFor === 'function';
|
|
52
|
+
}
|
|
49
53
|
/**
|
|
50
54
|
* The framework's {@link FileSystemProviderRegistry}.
|
|
51
55
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAmF7D;;;;;;;GAOG;AACH,MAAM,OAAO,8BAA+B,SAAQ,uBAAuB;IAIlD,QAAQ;IAHX,MAAM,CAAS;IAElC,YACsB,QAAqC,EACxD,OAAO,GAAmB,EAAE;QAE5B,KAAK,EAAE,CAAC;wBAHW,QAAQ;QAI3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrG,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAS,EAAE,QAAgB;QACxC,QAAQ;IACX,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAS;QACvB,QAAQ;IACX,CAAC;IAED,+DAA+D;IAC/D,kEAAkE;IAClE,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,kBAAkB;IACT,KAAK,CAAC,QAAQ,CAAC,IAAU;QAC/B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,IAAU;QACjC,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,GAAQ;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -171,7 +171,7 @@ export declare class PersistentFileSystemProvider extends InMemoryFileSystemProv
|
|
|
171
171
|
*/
|
|
172
172
|
deleteFile(uri: URI): Promise<void>;
|
|
173
173
|
/** The absolute URI a store-space `path` addresses. */
|
|
174
|
-
|
|
174
|
+
storeUri(path: string): URI;
|
|
175
175
|
/** Mirror one write. `async` so a bad key rejects rather than throwing at the call site. */
|
|
176
176
|
protected persist(uri: URI, content: string): Promise<void>;
|
|
177
177
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAAE,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEtI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,eAAe;IAC7B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,kEAAkE;IAClE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAYD,yFAAyF;AACzF,MAAM,WAAW,2BAA4B,SAAQ,yBAAyB;IAC3E,6EAA6E;IAC7E,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IACzE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAC1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1C,YAAY,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,2BAA2B,EAwBtF;IAED;;;;;;OAMG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhD;IAED;;;;;;;;;;OAUG;IACY,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACY,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjD;IAED,uDAAuD;IACvD,
|
|
1
|
+
{"version":3,"file":"persistent-file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAAE,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEtI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,eAAe;IAC7B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,kEAAkE;IAClE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAYD,yFAAyF;AACzF,MAAM,WAAW,2BAA4B,SAAQ,yBAAyB;IAC3E,6EAA6E;IAC7E,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IACzE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAC1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1C,YAAY,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,2BAA2B,EAwBtF;IAED;;;;;;OAMG;IACM,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhD;IAED;;;;;;;;;;OAUG;IACY,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACY,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjD;IAED,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAE1B;IAED,4FAA4F;IAC5F,UAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;IAED;;;;OAIG;IACH,UAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9C;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CASnC;IAED,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9E;CACH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,0BAA0B,CAAC;CACxE,CAAC,CAKD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"persistent-file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/persistent-file-system-provider.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.308",
|
|
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.308",
|
|
91
|
+
"@hydranium/protocol": "1.0.0-next.308",
|
|
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.308",
|
|
105
|
+
"@hydranium/protocol": "1.0.0-next.308",
|
|
106
106
|
"@playwright/test": "^1.40.0",
|
|
107
107
|
"vscode-jsonrpc": "^9.0.0",
|
|
108
108
|
"vscode-languageserver": "~10.0.1",
|
|
@@ -15,10 +15,13 @@ import {
|
|
|
15
15
|
WORKER_READY_MESSAGE_TYPE,
|
|
16
16
|
type HeadPorts,
|
|
17
17
|
type WorkerErrorMessage,
|
|
18
|
-
type WorkerReadyMessage
|
|
18
|
+
type WorkerReadyMessage,
|
|
19
|
+
type WorkerWorkspace
|
|
19
20
|
} from '@hydranium/protocol';
|
|
20
|
-
import { isOperationCancelled } from '@hydranium/langium';
|
|
21
|
+
import { isOperationCancelled, URI } from '@hydranium/langium';
|
|
21
22
|
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
23
|
+
import { isFileSystemProviderRegistry } from '../langium/workspace/file-system-provider.js';
|
|
24
|
+
import { PersistentFileSystemProvider } from '../langium/workspace/persistent-file-system-provider.js';
|
|
22
25
|
import { isConnectionGoneError } from '../util/connection-liveness.js';
|
|
23
26
|
|
|
24
27
|
/**
|
|
@@ -44,6 +47,19 @@ export interface StartedHeads {
|
|
|
44
47
|
readonly started?: ReadonlyArray<Promise<unknown>>;
|
|
45
48
|
}
|
|
46
49
|
|
|
50
|
+
/** What {@link hostHeadsInWorker} does beyond starting the heads. */
|
|
51
|
+
export interface HostHeadsInWorkerOptions {
|
|
52
|
+
/**
|
|
53
|
+
* The workspace root, as the page names it in `initialize`. Given one, the
|
|
54
|
+
* ready message carries every file under it with its content, and the paths
|
|
55
|
+
* restored from a {@link PersistentFileSystemProvider}'s store under it.
|
|
56
|
+
* Left out, the ready message carries no files and nothing is read. Every
|
|
57
|
+
* file's content goes in one message, so a workspace too large for that
|
|
58
|
+
* wants a per-document read instead.
|
|
59
|
+
*/
|
|
60
|
+
readonly rootUri?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
47
63
|
/**
|
|
48
64
|
* Answer the page's bootstrap by starting the heads on its ports, once per
|
|
49
65
|
* worker, and tell the page when they are up and when something fails.
|
|
@@ -59,11 +75,13 @@ export interface StartedHeads {
|
|
|
59
75
|
* Once `start` has returned and every `started` it handed back has resolved,
|
|
60
76
|
* the ready message goes out, so a page never hears of heads that failed to
|
|
61
77
|
* come up, and an uncaught error from then on is a report rather than the end
|
|
62
|
-
* of the heads.
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
78
|
+
* of the heads. It carries the workspace's files when
|
|
79
|
+
* {@link HostHeadsInWorkerOptions.rootUri} is given. Then every document is
|
|
80
|
+
* built with validation once the workspace has initialised: Langium's initial
|
|
81
|
+
* build validates nothing, so a page that only opens its ports would see a
|
|
82
|
+
* server that indexed the workspace and says nothing. An initial build that
|
|
83
|
+
* a write during startup cancelled is built the same, since every document
|
|
84
|
+
* exists by then.
|
|
67
85
|
*
|
|
68
86
|
* Call it once: a second call answers the same bootstrap with a second set of
|
|
69
87
|
* heads on the same ports and reports every rejection twice. The worker's
|
|
@@ -74,7 +92,8 @@ export interface StartedHeads {
|
|
|
74
92
|
*/
|
|
75
93
|
export function hostHeadsInWorker<TPrepared>(
|
|
76
94
|
prepared: TPrepared | PromiseLike<TPrepared>,
|
|
77
|
-
start: (ports: HeadPorts, prepared: TPrepared) => ServerSharedServicesMinimal | StartedHeads
|
|
95
|
+
start: (ports: HeadPorts, prepared: TPrepared) => ServerSharedServicesMinimal | StartedHeads,
|
|
96
|
+
options: HostHeadsInWorkerOptions = {}
|
|
78
97
|
): void {
|
|
79
98
|
const preparation = Promise.resolve(prepared);
|
|
80
99
|
// Handled here, so a restore that fails before the bootstrap arrives reaches
|
|
@@ -120,12 +139,54 @@ export function hostHeadsInWorker<TPrepared>(
|
|
|
120
139
|
const { shared, started } = 'shared' in result ? result : { shared: result, started: undefined };
|
|
121
140
|
// Safe to await now: every head listens already, so nothing is lost.
|
|
122
141
|
await Promise.all(started ?? []);
|
|
123
|
-
const ready: WorkerReadyMessage = {
|
|
142
|
+
const ready: WorkerReadyMessage = {
|
|
143
|
+
type: WORKER_READY_MESSAGE_TYPE,
|
|
144
|
+
workspace: options.rootUri === undefined ? undefined : readWorkspace(shared, options.rootUri)
|
|
145
|
+
};
|
|
124
146
|
postMessage(ready);
|
|
125
147
|
validateWorkspace(shared).catch((error: unknown) => reportWorkerError('workspace validation', error));
|
|
126
148
|
}
|
|
127
149
|
}
|
|
128
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Every file under `rootUri`, walked through the bound provider, so a file
|
|
153
|
+
* that exists only in the store is included, which the seed's keys would miss.
|
|
154
|
+
*/
|
|
155
|
+
function readWorkspace(shared: ServerSharedServicesMinimal, rootUri: string): WorkerWorkspace {
|
|
156
|
+
const provider = shared.workspace.FileSystemProvider;
|
|
157
|
+
const root = URI.parse(rootUri);
|
|
158
|
+
// Keys past the root, a trailing slash on it or not.
|
|
159
|
+
const prefix = `${root.toString().replace(/\/$/, '')}/`;
|
|
160
|
+
// No prototype, so a file named `__proto__` is a key like any other.
|
|
161
|
+
const files: Record<string, string> = Object.create(null);
|
|
162
|
+
const visit = (uri: URI): void => {
|
|
163
|
+
for (const node of provider.readDirectorySync(uri)) {
|
|
164
|
+
if (node.isFile) {
|
|
165
|
+
files[node.uri.toString().slice(prefix.length)] = provider.readFileSync(node.uri);
|
|
166
|
+
} else {
|
|
167
|
+
visit(node.uri);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
visit(root);
|
|
172
|
+
// The bound slot is the scheme registry, so the provider that holds the
|
|
173
|
+
// root is the one its scheme selects. Its store may key under another
|
|
174
|
+
// root, absolutely or unencoded, so a restored path is resolved as the
|
|
175
|
+
// provider resolves it, and one outside this root names no file here.
|
|
176
|
+
const holder = isFileSystemProviderRegistry(provider) ? provider.providerFor(root) : provider;
|
|
177
|
+
// A set, since a store may hold one file under two spellings.
|
|
178
|
+
const restored = new Set<string>();
|
|
179
|
+
if (holder instanceof PersistentFileSystemProvider) {
|
|
180
|
+
for (const path of holder.restoredPaths) {
|
|
181
|
+
const uri = holder.storeUri(path).toString();
|
|
182
|
+
if (uri.startsWith(prefix) && Object.hasOwn(files, uri.slice(prefix.length))) {
|
|
183
|
+
restored.add(uri.slice(prefix.length));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return { rootUri, files, restored: [...restored] };
|
|
188
|
+
}
|
|
189
|
+
|
|
129
190
|
/**
|
|
130
191
|
* The trailing validating build, after `workspaceInitialized`: building before
|
|
131
192
|
* it would validate a partial document set. A cancelled or connection-gone
|
|
@@ -164,6 +164,11 @@ export interface FileSystemProviderRegistry<
|
|
|
164
164
|
providerFor(uri: URI): WritableFileSystemProvider;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
/** Whether `provider` dispatches by scheme, as the provider bound on `workspace.FileSystemProvider` does. */
|
|
168
|
+
export function isFileSystemProviderRegistry(provider: WritableFileSystemProvider): provider is FileSystemProviderRegistry {
|
|
169
|
+
return 'providerFor' in provider && typeof provider.providerFor === 'function';
|
|
170
|
+
}
|
|
171
|
+
|
|
167
172
|
/** Options for {@link DefaultFileSystemProviderRegistry}. */
|
|
168
173
|
export interface FileSystemProviderRegistryOptions<
|
|
169
174
|
THost extends WritableFileSystemProvider = WritableFileSystemProvider
|
|
@@ -226,7 +226,7 @@ export class PersistentFileSystemProvider extends InMemoryFileSystemProvider {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
/** The absolute URI a store-space `path` addresses. */
|
|
229
|
-
|
|
229
|
+
storeUri(path: string): URI {
|
|
230
230
|
return URI.parse(this.storeRoot === undefined ? path : `${this.storeRoot}${path}`);
|
|
231
231
|
}
|
|
232
232
|
|