@hydranium/core 1.0.0-next.117 → 1.0.0-next.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/documents/ast-document-manager.d.ts +8 -44
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +22 -41
- package/lib/documents/ast-document-manager.js.map +1 -1
- package/lib/documents/client-session-errors.d.ts +4 -33
- package/lib/documents/client-session-errors.d.ts.map +1 -1
- package/lib/documents/client-session-errors.js +4 -46
- package/lib/documents/client-session-errors.js.map +1 -1
- package/lib/documents/client-session-registry.d.ts +40 -20
- package/lib/documents/client-session-registry.d.ts.map +1 -1
- package/lib/documents/client-session-registry.js +33 -20
- package/lib/documents/client-session-registry.js.map +1 -1
- package/lib/documents/file-system-task-queue.d.ts +49 -0
- package/lib/documents/file-system-task-queue.d.ts.map +1 -0
- package/lib/documents/file-system-task-queue.js +34 -0
- package/lib/documents/file-system-task-queue.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +138 -13
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +283 -40
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +1 -0
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +1 -0
- package/lib/documents/index.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +15 -2
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +15 -2
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +3 -2
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +9 -6
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/language-module.d.ts +2 -2
- package/lib/langium/language-module.js +2 -2
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +203 -24
- package/lib/langium/model-service/client-session.d.ts.map +1 -1
- package/lib/langium/model-service/client-session.js +233 -29
- package/lib/langium/model-service/client-session.js.map +1 -1
- package/lib/langium/model-service/model-service.d.ts +62 -217
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +54 -357
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +11 -1
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +5 -1
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +10 -2
- package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +1 -1
- package/lib/langium/workspace/write-lock-scope.js +1 -1
- package/lib/lsp/hydranium-document-update-handler.d.ts +69 -67
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +111 -89
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/lsp/shared-module.d.ts +4 -8
- package/lib/lsp/shared-module.d.ts.map +1 -1
- package/lib/lsp/shared-module.js.map +1 -1
- package/lib/lsp/start-language-server.d.ts +3 -4
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +3 -4
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +16 -4
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +6 -2
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/node/lsp-server-connection.d.ts +1 -1
- package/lib/testing/node/scratch-workspace.js +1 -1
- package/lib/testing/run-update-pipeline.d.ts +4 -4
- package/lib/testing/run-update-pipeline.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.d.ts +5 -5
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +6 -8
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.d.ts +10 -5
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.js +16 -9
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
- package/lib/testing/stub-model-service.d.ts +2 -2
- package/lib/testing/stub-model-service.js +2 -2
- package/package.json +5 -5
- package/src/documents/ast-document-manager.ts +27 -78
- package/src/documents/client-session-errors.ts +11 -43
- package/src/documents/client-session-registry.ts +54 -28
- package/src/documents/file-system-task-queue.ts +68 -0
- package/src/documents/hydranium-text-documents.ts +348 -44
- package/src/documents/index.ts +1 -0
- package/src/langium/document-builder/document-builder.ts +16 -2
- package/src/langium/integrity/integrity-service.ts +9 -6
- package/src/langium/language-module.ts +4 -4
- package/src/langium/model-service/client-session.ts +363 -39
- package/src/langium/model-service/model-service.ts +91 -420
- package/src/langium/module.ts +14 -2
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/workspace/in-memory-file-system-provider.ts +11 -2
- package/src/langium/workspace/write-lock-scope.ts +1 -1
- package/src/lsp/hydranium-document-update-handler.ts +138 -92
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +3 -4
- package/src/testing/make-test-services.ts +25 -6
- package/src/testing/node/lsp-server-connection.ts +1 -1
- package/src/testing/node/scratch-workspace.ts +1 -1
- package/src/testing/run-update-pipeline.ts +4 -4
- package/src/testing/stub-ast-document-manager.ts +10 -24
- package/src/testing/stub-hydranium-text-documents.ts +29 -16
- package/src/testing/stub-model-service.ts +2 -2
package/lib/langium/module.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { type MessageRenderer } from '../messages/renderer.js';
|
|
|
12
12
|
import { type AstNode, type Module } from '@hydranium/langium';
|
|
13
13
|
import { type DefaultSharedModuleContext, type LangiumSharedServices, type PartialLangiumSharedServices } from '@hydranium/langium/lsp';
|
|
14
14
|
import { type TextDocument } from 'vscode-languageserver-textdocument';
|
|
15
|
+
import { type ClientSessionFactory } from './model-service/client-session.js';
|
|
15
16
|
import { type ModelService } from './model-service/model-service.js';
|
|
16
17
|
import { type ProjectManager } from './project/project-manager.js';
|
|
17
18
|
import { type TransferEncoder } from './transfer/transfer-encoder.js';
|
|
@@ -29,6 +30,7 @@ import { type DocumentUriPolicy } from './workspace/document-uri-policy.js';
|
|
|
29
30
|
import { HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
|
|
30
31
|
import { type AstDocumentManager, type WritableFileSystemProvider } from '../documents/ast-document-manager.js';
|
|
31
32
|
import { type SelfSaveRegistry } from '../documents/self-save-registry.js';
|
|
33
|
+
import { type FileSystemTaskQueue } from '../documents/file-system-task-queue.js';
|
|
32
34
|
import { type ServerLanguageServices } from './language-module.js';
|
|
33
35
|
import { ExtendedServiceRegistry } from './service-registry.js';
|
|
34
36
|
/**
|
|
@@ -169,7 +171,7 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
|
|
|
169
171
|
* Tighten Langium's read-only `FileSystemProvider` slot to
|
|
170
172
|
* {@link WritableFileSystemProvider}. The framework's save path
|
|
171
173
|
* ({@link AstDocumentManager.save}, integrity corrections,
|
|
172
|
-
* `
|
|
174
|
+
* a session's `save`) requires write semantics — a read-only slot
|
|
173
175
|
* type forces an `as WritableFileSystemProvider` cast at the binding
|
|
174
176
|
* line and defers the failure of a read-only implementation to the
|
|
175
177
|
* first save. The `.`-entry default is
|
|
@@ -209,6 +211,12 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
|
|
|
209
211
|
* behaviour rebind this slot with a subclass.
|
|
210
212
|
*/
|
|
211
213
|
AstDocumentManager: AstDocumentManager<AstNode>;
|
|
214
|
+
/**
|
|
215
|
+
* Orders the server's disk accesses of each file. One slot for every
|
|
216
|
+
* reader and writer: a service given a queue of its own does not order
|
|
217
|
+
* against the others.
|
|
218
|
+
*/
|
|
219
|
+
FileSystemTaskQueue: FileSystemTaskQueue;
|
|
212
220
|
/**
|
|
213
221
|
* Wires the framework's build-time features (integrity, AST
|
|
214
222
|
* enrichment) into Langium's build pipeline: owns the build-phase
|
|
@@ -265,6 +273,8 @@ export interface ServerAddedSharedServices<TProject extends Project = Project> {
|
|
|
265
273
|
model: {
|
|
266
274
|
TransferEncoder: TransferEncoder;
|
|
267
275
|
ModelService: ModelService<AstNode>;
|
|
276
|
+
/** Builds the handle of every session `ModelService.createSession` starts. */
|
|
277
|
+
ClientSessionFactory: ClientSessionFactory;
|
|
268
278
|
};
|
|
269
279
|
/**
|
|
270
280
|
* Shared contribution group for batch-level build-phase passes (see
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/langium/module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGvF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,0BAA0B,EAAE,KAAK,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACxI,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAmC,KAAK,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAClI,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,KAAK,qBAAqB,EAAgC,MAAM,gDAAgD,CAAC;AAC1H,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EAAE,KAAK,yBAAyB,EAA6B,MAAM,kCAAkC,CAAC;AAC7G,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACtG,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAA6B,KAAK,kBAAkB,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAC3I,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/langium/module.ts"],"names":[],"mappings":"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"}
|
package/lib/langium/module.js
CHANGED
|
@@ -11,6 +11,7 @@ import { DefaultServerLocale } from '../locale/server-locale.js';
|
|
|
11
11
|
import { DefaultMessageRenderer } from '../messages/renderer.js';
|
|
12
12
|
import { ServerTracer } from './diagnostics/server-tracer.js';
|
|
13
13
|
import { HydraniumLangiumProfiler } from './diagnostics/hydranium-langium-profiler.js';
|
|
14
|
+
import { DefaultClientSessionFactory } from './model-service/client-session.js';
|
|
14
15
|
import { DefaultModelService } from './model-service/model-service.js';
|
|
15
16
|
import { SingleProjectManager } from './project/single-project-manager.js';
|
|
16
17
|
import { DefaultTransferEncoder } from './transfer/transfer-encoder.js';
|
|
@@ -28,6 +29,7 @@ import { DefaultDocumentUriPolicy } from './workspace/document-uri-policy.js';
|
|
|
28
29
|
import { HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
|
|
29
30
|
import { DefaultAstDocumentManager } from '../documents/ast-document-manager.js';
|
|
30
31
|
import { DefaultSelfSaveRegistry } from '../documents/self-save-registry.js';
|
|
32
|
+
import { DefaultFileSystemTaskQueue } from '../documents/file-system-task-queue.js';
|
|
31
33
|
import { DefaultEmptyFileSystemProvider } from './workspace/file-system-provider.js';
|
|
32
34
|
import { ExtendedServiceRegistry } from './service-registry.js';
|
|
33
35
|
/**
|
|
@@ -154,6 +156,7 @@ export function createServerSharedModule(context) {
|
|
|
154
156
|
return new DefaultEmptyFileSystemProvider(services);
|
|
155
157
|
},
|
|
156
158
|
AstDocumentManager: services => new DefaultAstDocumentManager(services),
|
|
159
|
+
FileSystemTaskQueue: services => new DefaultFileSystemTaskQueue(services),
|
|
157
160
|
// Eagerly constructed, so its build-phase listeners attach before the
|
|
158
161
|
// first build.
|
|
159
162
|
BuildPipelineIntegration: services => new DefaultBuildPipelineIntegration(services),
|
|
@@ -166,7 +169,8 @@ export function createServerSharedModule(context) {
|
|
|
166
169
|
// Generic walker — adopters with a typed `$type → wire shape` overlay
|
|
167
170
|
// rebind this slot with a subclass.
|
|
168
171
|
TransferEncoder: services => new DefaultTransferEncoder(services),
|
|
169
|
-
ModelService: services => new DefaultModelService(services)
|
|
172
|
+
ModelService: services => new DefaultModelService(services),
|
|
173
|
+
ClientSessionFactory: services => new DefaultClientSessionFactory(services)
|
|
170
174
|
},
|
|
171
175
|
// Empty default so `services.buildPhasePasses` always resolves (Langium
|
|
172
176
|
// throws on access to an unbound slot). The framework's own integrity /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/langium/module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAsD,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAwB,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAIvF,OAAO,EAAE,mBAAmB,EAAqB,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAwB,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAiC,MAAM,kDAAkD,CAAC;AAElI,OAAO,EAA8B,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC1H,OAAO,EAAE,0BAA0B,EAA4B,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EAAkC,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7G,OAAO,EAAE,wBAAwB,EAA0B,MAAM,oCAAoC,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAA4D,MAAM,sCAAsC,CAAC;AAC3I,OAAO,EAAE,uBAAuB,EAAyB,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/langium/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { type AstNode } from '@hydranium/langium';
|
|
|
11
11
|
import { type RegistryItem } from '../../util/registry.js';
|
|
12
12
|
/**
|
|
13
13
|
* A single transform applied to the incoming transfer model on the structured
|
|
14
|
-
* (object) write path of `
|
|
14
|
+
* (object) write path of a client session's `update` / `save`, before
|
|
15
15
|
* serialisation. The RPC-update-stage sibling of `IntegrityRule` /
|
|
16
16
|
* `AstExtension` / `ValidationCheck` — same id-keyed,
|
|
17
17
|
* priority-ordered registry shape, but it runs on the transfer model rather
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/in-memory-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,cAAc,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAG9F;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wEAAsE,CAAC;AAEhG,sEAAsE;AACtE,eAAO,MAAM,YAAY,qFAAmF,CAAC;AAE7G;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,6GAG7B,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/in-memory-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,cAAc,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAG9F;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wEAAsE,CAAC;AAEhG,sEAAsE;AACtE,eAAO,MAAM,YAAY,qFAAmF,CAAC;AAE7G;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,6GAG7B,CAAC;AAWF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,qFAAqF;AACrF,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC9D,wEAAwE;IACxE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,0BAA2B,YAAW,0BAA0B;IAKvE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B;IAJ3D,SAAS,CAAC,QAAQ,CAAC,KAAK,sBAA6B;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,2BAA2B,EACxD,OAAO,GAAE,yBAA8B;IAW1C;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,+DAA+D;IAC/D,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAIpB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzC,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAYxB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAI/C,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU;IAI9B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;IAI7C,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAgBlC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAQ7B,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIlD,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,EAAE;IAqB7C;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM;IAI5C,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAS9C;AAYD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG;IAC1E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,0BAA0B,CAAC;CACxE,CAIA"}
|
|
@@ -33,6 +33,14 @@ export const NO_SUCH_PATH = defineMessage('hydranium/core/no-such-path', 'No suc
|
|
|
33
33
|
* module pulls `node:fs` and is server-only.
|
|
34
34
|
*/
|
|
35
35
|
export const UNSUPPORTED_WRITE = defineMessage('hydranium/core/unsupported-write', 'Cannot write {uri}: the scheme names no location on disk');
|
|
36
|
+
/**
|
|
37
|
+
* A missing-file error shaped as a Node file system raises it, with code
|
|
38
|
+
* `ENOENT` and the path: callers tell a missing file from any other failure by
|
|
39
|
+
* those two fields, whichever provider is bound.
|
|
40
|
+
*/
|
|
41
|
+
function notFound(message, uri) {
|
|
42
|
+
return Object.assign(new Error(message), { code: 'ENOENT', path: uri.fsPath });
|
|
43
|
+
}
|
|
36
44
|
/**
|
|
37
45
|
* A writable filesystem held in a `Map`, for a host with no disk — a browser
|
|
38
46
|
* worker, or a test that needs the workspace walk to find real content.
|
|
@@ -124,7 +132,7 @@ export class InMemoryFileSystemProvider {
|
|
|
124
132
|
}
|
|
125
133
|
const content = this.files.get(normalize(uri));
|
|
126
134
|
if (content === undefined) {
|
|
127
|
-
throw
|
|
135
|
+
throw notFound(NO_SUCH_FILE.format({ uri: uri.toString() }), uri);
|
|
128
136
|
}
|
|
129
137
|
return content;
|
|
130
138
|
}
|
|
@@ -150,7 +158,7 @@ export class InMemoryFileSystemProvider {
|
|
|
150
158
|
if (this.hasChildren(path)) {
|
|
151
159
|
return { isFile: false, isDirectory: true, uri };
|
|
152
160
|
}
|
|
153
|
-
throw
|
|
161
|
+
throw notFound(NO_SUCH_PATH.format({ uri: uri.toString() }), uri);
|
|
154
162
|
}
|
|
155
163
|
exists(uri) {
|
|
156
164
|
return Promise.resolve(this.existsSync(uri));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/in-memory-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAuB,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAe,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAoC,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,6BAA6B,EAAE,qBAAqB,CAAC,CAAC;AAEhG,sEAAsE;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,6BAA6B,EAAE,kCAAkC,CAAC,CAAC;AAE7G;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC3C,kCAAkC,EAClC,0DAA0D,CAC5D,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/in-memory-file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ export declare function isInsideWriteLock(): boolean;
|
|
|
54
54
|
/**
|
|
55
55
|
* Thrown when the model facade is reached from inside a workspace write-lock
|
|
56
56
|
* holder — typically an integrity rule or build-phase pass writing through
|
|
57
|
-
* `
|
|
57
|
+
* a session's `update` / `save` or `ModelService.rebuild` during a build.
|
|
58
58
|
*
|
|
59
59
|
* Named rather than a bare `Error` because the remedy is specific and worth
|
|
60
60
|
* pointing at: either move the write out of the build (integrity rules that
|
|
@@ -32,7 +32,7 @@ export function isInsideWriteLock() {
|
|
|
32
32
|
/**
|
|
33
33
|
* Thrown when the model facade is reached from inside a workspace write-lock
|
|
34
34
|
* holder — typically an integrity rule or build-phase pass writing through
|
|
35
|
-
* `
|
|
35
|
+
* a session's `update` / `save` or `ModelService.rebuild` during a build.
|
|
36
36
|
*
|
|
37
37
|
* Named rather than a bare `Error` because the remedy is specific and worth
|
|
38
38
|
* pointing at: either move the write out of the build (integrity rules that
|
|
@@ -9,25 +9,14 @@
|
|
|
9
9
|
import { Debouncer, type Logger, ObservableValue, type MaybeObservableValue } from '@hydranium/protocol';
|
|
10
10
|
import { URI } from '@hydranium/langium';
|
|
11
11
|
import { DefaultDocumentUpdateHandler } from '@hydranium/langium/lsp';
|
|
12
|
-
import { type HydraniumDocumentBuilder } from '../langium/document-builder/document-builder.js';
|
|
12
|
+
import { HYDRANIUM_BUILD_REASONS, type HydraniumDocumentBuilder } from '../langium/document-builder/document-builder.js';
|
|
13
13
|
import { type ServerSharedServices } from '../langium/module.js';
|
|
14
14
|
import { type SelfSaveRegistry } from '../documents/self-save-registry.js';
|
|
15
15
|
import { type WritableFileSystemProvider } from '../documents/ast-document-manager.js';
|
|
16
16
|
import { type HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
|
|
17
|
-
import { type DidChangeWatchedFilesParams, type TextDocumentChangeEvent } from 'vscode-languageserver';
|
|
17
|
+
import { type DidChangeWatchedFilesParams, type TextDocumentChangeEvent, type TextDocumentWillSaveEvent, type TextEdit } from 'vscode-languageserver';
|
|
18
18
|
import { type TextDocument } from 'vscode-languageserver-textdocument';
|
|
19
|
-
|
|
20
|
-
* Default LSP-event reasons stamped by {@link HydraniumDocumentUpdateHandler}
|
|
21
|
-
* onto the next `documentBuilder.update` call via `markNextReason`. Exposed
|
|
22
|
-
* so adopters subclassing the handler can layer additional reasons or rename
|
|
23
|
-
* existing ones without losing the canonical names the framework emits.
|
|
24
|
-
*/
|
|
25
|
-
export declare const HYDRANIUM_BUILD_REASONS: Readonly<{
|
|
26
|
-
readonly didOpen: "didOpen";
|
|
27
|
-
readonly didChangeContent: "didChangeContent";
|
|
28
|
-
readonly didChangeWatchedFiles: "didChangeWatchedFiles";
|
|
29
|
-
readonly didClose: "didClose";
|
|
30
|
-
}>;
|
|
19
|
+
export { HYDRANIUM_BUILD_REASONS };
|
|
31
20
|
/**
|
|
32
21
|
* Construction options for {@link HydraniumDocumentUpdateHandler}.
|
|
33
22
|
*/
|
|
@@ -52,6 +41,17 @@ export interface HydraniumDocumentUpdateHandlerOptions {
|
|
|
52
41
|
* load tests).
|
|
53
42
|
*/
|
|
54
43
|
readonly bypassNonLanguageClientChanges?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Longest an editor's save waits on the server, in milliseconds, at each of
|
|
46
|
+
* its two steps: the `willSaveWaitUntil` answer waits for the server's disk
|
|
47
|
+
* writes of the document already queued, and server writes queued after the
|
|
48
|
+
* answer wait for the editor's `didSave`. Either wait that runs out is
|
|
49
|
+
* logged, and the editor's write and the server's can then land in either
|
|
50
|
+
* order. Default `1000`: VS Code gives up on an answer after about 1.5 s,
|
|
51
|
+
* and switches the listener off for the session once four answers, over
|
|
52
|
+
* all documents, timed out or failed.
|
|
53
|
+
*/
|
|
54
|
+
readonly willSaveGateMs?: number;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Framework `DocumentUpdateHandler` adding these behaviours over Langium's
|
|
@@ -66,19 +66,25 @@ export interface HydraniumDocumentUpdateHandlerOptions {
|
|
|
66
66
|
* changes and watched-file changes bypass the debounce (their
|
|
67
67
|
* producers are already coalesced).
|
|
68
68
|
* 3. **Build-reason stamping** — the LSP event overrides
|
|
69
|
-
* (`didOpenDocument`, `didChangeContent`, `didChangeWatchedFiles
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
69
|
+
* (`didOpenDocument`, `didChangeContent`, `didChangeWatchedFiles`)
|
|
70
|
+
* populate {@link nextReason} with a canonical reason string.
|
|
71
|
+
* {@link fireDocumentUpdate} captures the reason; {@link dispatch} stages
|
|
72
|
+
* it on the builder via {@link HydraniumDocumentBuilder.markNextReason},
|
|
73
|
+
* so a subclass that formats build logs can tag its line with the event
|
|
74
|
+
* that caused the build without per-adopter wiring to capture it.
|
|
75
|
+
* 4. **Editor save gate** ({@link willSaveDocumentWaitUntil}) — the editor
|
|
76
|
+
* writes the file itself, so the server's disk writes of that document
|
|
77
|
+
* are ordered around it: the editor's save waits for the ones already
|
|
78
|
+
* queued, and the ones queued during its save wait for its `didSave`.
|
|
79
|
+
* Both waits are capped by
|
|
80
|
+
* {@link HydraniumDocumentUpdateHandlerOptions.willSaveGateMs}.
|
|
81
|
+
*
|
|
82
|
+
* The revert to disk after a document's last close is not dispatched here:
|
|
83
|
+
* the text store runs it for every head, the LSP head included, so a
|
|
84
|
+
* `didCloseDocument` added in a subclass would build the document twice. A
|
|
85
|
+
* change still debounced for the document is dropped when the store releases
|
|
86
|
+
* it: a `file:` document's revert rebuilds it, and a document of another
|
|
87
|
+
* scheme, which does not revert, keeps its last build.
|
|
82
88
|
*
|
|
83
89
|
* Adopters with their own handler subclass should extend this class
|
|
84
90
|
* (not Langium's `DefaultDocumentUpdateHandler`) so all of them are
|
|
@@ -123,52 +129,48 @@ export declare class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdat
|
|
|
123
129
|
* first reason in a coalesced burst).
|
|
124
130
|
*/
|
|
125
131
|
protected pendingReason?: string;
|
|
132
|
+
protected readonly willSaveGateMs: number;
|
|
133
|
+
/**
|
|
134
|
+
* Per document URI, the release of the hold an editor's save in progress
|
|
135
|
+
* keeps on the document's disk queue. A second save of the document
|
|
136
|
+
* releases the first: its hold would otherwise keep the second's answer
|
|
137
|
+
* waiting until the cap. The key is the document, not the save, so for a
|
|
138
|
+
* client that sends its next `willSaveWaitUntil` before the previous
|
|
139
|
+
* `didSave`, that late `didSave` releases the next save's hold.
|
|
140
|
+
*/
|
|
141
|
+
protected readonly editorSaves: Map<string, () => void>;
|
|
126
142
|
constructor(services: ServerSharedServices, options?: HydraniumDocumentUpdateHandlerOptions);
|
|
127
143
|
didOpenDocument(_change: TextDocumentChangeEvent<TextDocument>): void;
|
|
128
144
|
didChangeContent(change: TextDocumentChangeEvent<TextDocument>): void;
|
|
145
|
+
didChangeWatchedFiles(params: DidChangeWatchedFilesParams): void;
|
|
129
146
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* We funnel the last-client transition through the same dispatch path
|
|
139
|
-
* the other LSP events use, so the rebuild gets debouncing, workspace
|
|
140
|
-
* locking, build-reason stamping, and `markNextReason` for free. The
|
|
141
|
-
* scheme split governs the `DocumentBuilder.update` shape:
|
|
142
|
-
*
|
|
143
|
-
* - **`file:` URI** → `update([uri], [])`. Routes through
|
|
144
|
-
* `LangiumDocuments.invalidateDocument` (doc stays in the trie) and
|
|
145
|
-
* `LangiumDocumentFactory.update`, which consults the LSP-tracked
|
|
146
|
-
* open-documents map first. That map is cleared LATER in the same
|
|
147
|
-
* synchronous `notifyDidCloseTextDocument` call that fires this event,
|
|
148
|
-
* and {@link dispatch} defers the build behind `workspaceManager.ready`
|
|
149
|
-
* — so by the time the factory looks, the URI is gone: it falls back to
|
|
150
|
-
* `FileSystemProvider.readFile` and the doc rebuilds from disk,
|
|
151
|
-
* Langium's canonical close-without-save semantic. A dispatch made
|
|
152
|
-
* synchronously here would still see the open document and re-read the
|
|
153
|
-
* in-memory text instead.
|
|
154
|
-
* - **non-`file:` URI** (`builtin:`, `untitled:`) → no dispatch.
|
|
155
|
-
* Adopter-loaded schemes — documents pulled in via
|
|
156
|
-
* `loadAdditionalDocuments` — need to stay in the workspace index;
|
|
157
|
-
* dropping them on close would break every cross-reference that
|
|
158
|
-
* targets them. The framework cannot enumerate adopter schemes, so the
|
|
159
|
-
* safe default is "leave alone unless it's a file." Adopters that need
|
|
160
|
-
* ephemeral-URI cleanup handle it explicitly.
|
|
161
|
-
*
|
|
162
|
-
* Per-client closes (where other clients still hold the URI) are
|
|
163
|
-
* suppressed via {@link HydraniumTextDocuments.isOpenInAnyClient}.
|
|
147
|
+
* Answer an editor's `willSaveWaitUntil` with no edits once the server's
|
|
148
|
+
* disk writes of the document already queued have landed, or after
|
|
149
|
+
* {@link willSaveGateMs}, whichever is first. From the moment the queue
|
|
150
|
+
* reaches this save, disk tasks of the document queued behind it wait for
|
|
151
|
+
* the editor's `didSave`, reported through
|
|
152
|
+
* `HydraniumTextDocuments.onDidSaveInLanguageClient`, or for
|
|
153
|
+
* {@link willSaveGateMs} more.
|
|
164
154
|
*
|
|
165
|
-
* The
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
155
|
+
* The hold is a disk task that waits only for that signal or its timer:
|
|
156
|
+
* waiting on a build, a save or anything else queued for the document would
|
|
157
|
+
* wedge its queue. Resolves in every case, since a failed request counts
|
|
158
|
+
* against the listener in VS Code; Langium drops the request's cancellation,
|
|
159
|
+
* so an abandoned request still runs to the cap. A hold that runs out is
|
|
160
|
+
* logged at debug only: an editor skips `didSave` for a save it cancels or
|
|
161
|
+
* that changed nothing.
|
|
169
162
|
*/
|
|
170
|
-
|
|
171
|
-
|
|
163
|
+
willSaveDocumentWaitUntil(event: TextDocumentWillSaveEvent<TextDocument>): Promise<TextEdit[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Present so that Langium advertises `save` and editors send `didSave`;
|
|
166
|
+
* without it every hold of {@link willSaveDocumentWaitUntil} waits out its
|
|
167
|
+
* cap. The hold is released on
|
|
168
|
+
* `HydraniumTextDocuments.onDidSaveInLanguageClient` instead: it fires as
|
|
169
|
+
* soon as the editor reports the save, while `onDidSave`, and so this
|
|
170
|
+
* method, follows only once the file has been read back, and not at all
|
|
171
|
+
* when the file does not hold the store's text.
|
|
172
|
+
*/
|
|
173
|
+
didSaveDocument(_event: TextDocumentChangeEvent<TextDocument>): void;
|
|
172
174
|
/**
|
|
173
175
|
* Drop watched-file changes whose path + mtime match a recent self-save
|
|
174
176
|
* record. Deletions always pass (no mtime); stat failures pass (the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-document-update-handler.d.ts","sourceRoot":"","sources":["../../src/lsp/hydranium-document-update-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"hydranium-document-update-handler.d.ts","sourceRoot":"","sources":["../../src/lsp/hydranium-document-update-handler.ts"],"names":[],"mappings":"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"}
|