@hydranium/core 1.0.0-next.16 → 1.0.0-next.168
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 +5 -1
- package/lib/documents/ast-document-manager.d.ts +190 -29
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +235 -38
- package/lib/documents/ast-document-manager.js.map +1 -1
- package/lib/documents/client-ids.d.ts +5 -19
- package/lib/documents/client-ids.d.ts.map +1 -1
- package/lib/documents/client-ids.js +5 -19
- package/lib/documents/client-ids.js.map +1 -1
- package/lib/documents/client-session-errors.d.ts +15 -0
- package/lib/documents/client-session-errors.d.ts.map +1 -0
- package/lib/documents/client-session-errors.js +15 -0
- package/lib/documents/client-session-errors.js.map +1 -0
- package/lib/documents/client-session-registry.d.ts +138 -0
- package/lib/documents/client-session-registry.d.ts.map +1 -0
- package/lib/documents/client-session-registry.js +187 -0
- package/lib/documents/client-session-registry.js.map +1 -0
- 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 +439 -82
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +769 -159
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +3 -0
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +3 -0
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/language-client-text-shadow.d.ts +41 -9
- package/lib/documents/language-client-text-shadow.d.ts.map +1 -1
- package/lib/documents/language-client-text-shadow.js +56 -11
- package/lib/documents/language-client-text-shadow.js.map +1 -1
- package/lib/documents/self-save-registry.d.ts +37 -6
- package/lib/documents/self-save-registry.d.ts.map +1 -1
- package/lib/documents/self-save-registry.js +28 -15
- package/lib/documents/self-save-registry.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
- package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.js +60 -22
- package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +16 -9
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/config/configuration-provider.d.ts +81 -0
- package/lib/langium/config/configuration-provider.d.ts.map +1 -0
- package/lib/langium/config/configuration-provider.js +112 -0
- package/lib/langium/config/configuration-provider.js.map +1 -0
- package/lib/langium/config/index.d.ts +1 -0
- package/lib/langium/config/index.d.ts.map +1 -1
- package/lib/langium/config/index.js +1 -0
- package/lib/langium/config/index.js.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +40 -6
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +32 -5
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/build-session.d.ts +93 -0
- package/lib/langium/document-builder/build-session.d.ts.map +1 -0
- package/lib/langium/document-builder/build-session.js +72 -0
- package/lib/langium/document-builder/build-session.js.map +1 -0
- package/lib/langium/document-builder/document-builder.d.ts +365 -19
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +637 -44
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/document-builder/index.d.ts +1 -0
- package/lib/langium/document-builder/index.d.ts.map +1 -1
- package/lib/langium/document-builder/index.js +1 -0
- package/lib/langium/document-builder/index.js.map +1 -1
- package/lib/langium/integration-services.d.ts +45 -1
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +10 -5
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +13 -5
- package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-rule.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +50 -6
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +193 -17
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/containment.d.ts +64 -0
- package/lib/langium/keys/containment.d.ts.map +1 -0
- package/lib/langium/keys/containment.js +53 -0
- package/lib/langium/keys/containment.js.map +1 -0
- package/lib/langium/keys/index.d.ts +1 -0
- package/lib/langium/keys/index.d.ts.map +1 -1
- package/lib/langium/keys/index.js +1 -0
- package/lib/langium/keys/index.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +4 -0
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +27 -2
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +16 -2
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +307 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +395 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +1 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +1 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-service.d.ts +261 -198
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +234 -346
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +144 -35
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +45 -34
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +25 -4
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +2 -1
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts +23 -0
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/naming/name-separator-validation.js +30 -1
- package/lib/langium/naming/name-separator-validation.js.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +9 -2
- package/lib/langium/project/abstract-project-manager.js.map +1 -1
- package/lib/langium/project/project-change-event.d.ts +2 -2
- package/lib/langium/residency/cst-residency-service.d.ts +31 -11
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +13 -56
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +56 -20
- package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
- package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/abstract-serializer.js +12 -21
- package/lib/langium/serialization/abstract-serializer.js.map +1 -1
- package/lib/langium/service-registry.d.ts +15 -1
- package/lib/langium/service-registry.d.ts.map +1 -1
- package/lib/langium/service-registry.js +16 -0
- package/lib/langium/service-registry.js.map +1 -1
- package/lib/langium/shared-services.d.ts +15 -2
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/shared-services.js.map +1 -1
- package/lib/langium/transfer/transfer-encoder.d.ts +60 -17
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +38 -16
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/langium/trivia/comment-preserver.d.ts +423 -0
- package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/comment-preserver.js +906 -0
- package/lib/langium/trivia/comment-preserver.js.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts +43 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +48 -0
- package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
- package/lib/langium/trivia/index.d.ts +14 -0
- package/lib/langium/trivia/index.d.ts.map +1 -0
- package/lib/langium/trivia/index.js +14 -0
- package/lib/langium/trivia/index.js.map +1 -0
- package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
- package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-contribution.js +10 -0
- package/lib/langium/trivia/trivia-contribution.js.map +1 -0
- package/lib/langium/trivia/trivia-preserver.d.ts +50 -0
- package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-preserver.js +10 -0
- package/lib/langium/trivia/trivia-preserver.js.map +1 -0
- package/lib/langium/trivia/trivia-service.d.ts +70 -0
- package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-service.js +56 -0
- package/lib/langium/trivia/trivia-service.js.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/validation/document-validator.d.ts +294 -10
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +448 -5
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/workspace/document-uri-policy.d.ts +17 -12
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +10 -9
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-not-found.d.ts +17 -0
- package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
- package/lib/langium/workspace/file-not-found.js +20 -0
- package/lib/langium/workspace/file-not-found.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +84 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +93 -14
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +25 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +25 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +13 -0
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +18 -0
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +77 -8
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +115 -9
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +25 -2
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
- package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +13 -5
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +79 -17
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +91 -29
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +0 -7
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/virtual-document.d.ts +48 -15
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +78 -18
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +4 -3
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +4 -3
- package/lib/langium/workspace/write-lock-scope.js.map +1 -1
- package/lib/locale/index.d.ts +10 -0
- package/lib/locale/index.d.ts.map +1 -0
- package/lib/locale/index.js +10 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/server-locale.d.ts +73 -0
- package/lib/locale/server-locale.d.ts.map +1 -0
- package/lib/locale/server-locale.js +61 -0
- package/lib/locale/server-locale.js.map +1 -0
- package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
- package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
- package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
- package/lib/lsp/connection-features.d.ts +23 -0
- package/lib/lsp/connection-features.d.ts.map +1 -0
- package/lib/lsp/connection-features.js +60 -0
- package/lib/lsp/connection-features.js.map +1 -0
- package/lib/lsp/diagnostics-connection.d.ts +27 -0
- package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
- package/lib/lsp/diagnostics-connection.js +53 -0
- package/lib/lsp/diagnostics-connection.js.map +1 -0
- package/lib/lsp/hydranium-document-update-handler.d.ts +90 -79
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +152 -99
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/lsp/index.d.ts +3 -1
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +3 -1
- package/lib/lsp/index.js.map +1 -1
- package/lib/lsp/lsp-latency.d.ts +39 -0
- package/lib/lsp/lsp-latency.d.ts.map +1 -0
- package/lib/lsp/lsp-latency.js +58 -0
- package/lib/lsp/lsp-latency.js.map +1 -0
- package/lib/lsp/semantic-token-provider.d.ts +34 -1
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
- package/lib/lsp/semantic-token-provider.js +55 -8
- package/lib/lsp/semantic-token-provider.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 +8 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +13 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +54 -0
- package/lib/messages/carriers.d.ts.map +1 -0
- package/lib/messages/carriers.js +62 -0
- package/lib/messages/carriers.js.map +1 -0
- package/lib/messages/index.d.ts +25 -0
- package/lib/messages/index.d.ts.map +1 -0
- package/lib/messages/index.js +25 -0
- package/lib/messages/index.js.map +1 -0
- package/lib/messages/renderer.d.ts +142 -0
- package/lib/messages/renderer.d.ts.map +1 -0
- package/lib/messages/renderer.js +165 -0
- package/lib/messages/renderer.js.map +1 -0
- package/lib/node/heap-ceiling.d.ts +61 -0
- package/lib/node/heap-ceiling.d.ts.map +1 -0
- package/lib/node/heap-ceiling.js +72 -0
- package/lib/node/heap-ceiling.js.map +1 -0
- package/lib/node/index.d.ts +1 -0
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +1 -0
- package/lib/node/index.js.map +1 -1
- package/lib/node/latency-from-env.d.ts +1 -1
- package/lib/node/latency-from-env.js +1 -1
- package/lib/node/measure-memory.d.ts.map +1 -1
- package/lib/node/measure-memory.js +1 -0
- package/lib/node/measure-memory.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +39 -4
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +109 -49
- package/lib/node/node-file-system-provider.js.map +1 -1
- package/lib/node/profile-capture.d.ts +8 -2
- package/lib/node/profile-capture.d.ts.map +1 -1
- package/lib/node/profile-capture.js.map +1 -1
- package/lib/node/profiling-run.d.ts +2 -2
- package/lib/node/profiling-run.js +1 -1
- package/lib/node/profiling-run.js.map +1 -1
- package/lib/node/rename-over-open-readers.d.ts +52 -0
- package/lib/node/rename-over-open-readers.d.ts.map +1 -0
- package/lib/node/rename-over-open-readers.js +66 -0
- package/lib/node/rename-over-open-readers.js.map +1 -0
- package/lib/node/socket-launcher.d.ts +16 -1
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +4 -3
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/stdio-launcher.d.ts +1 -1
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +1 -1
- package/lib/node/stdio-launcher.js.map +1 -1
- package/lib/testing/fake-document.d.ts +16 -4
- package/lib/testing/fake-document.d.ts.map +1 -1
- package/lib/testing/fake-document.js +18 -3
- package/lib/testing/fake-document.js.map +1 -1
- package/lib/testing/make-noop-shared-services.d.ts +14 -0
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +28 -2
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +62 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +27 -6
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/node/index.d.ts +1 -0
- package/lib/testing/node/index.d.ts.map +1 -1
- package/lib/testing/node/index.js +1 -0
- package/lib/testing/node/index.js.map +1 -1
- package/lib/testing/node/lsp-harness.d.ts.map +1 -1
- package/lib/testing/node/lsp-harness.js +2 -0
- package/lib/testing/node/lsp-harness.js.map +1 -1
- package/lib/testing/node/lsp-server-connection.d.ts +11 -3
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +42 -9
- package/lib/testing/node/lsp-server-connection.js.map +1 -1
- package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
- package/lib/testing/node/scratch-workspace.js +10 -5
- package/lib/testing/node/scratch-workspace.js.map +1 -1
- package/lib/testing/node/spawned-server.d.ts +14 -0
- package/lib/testing/node/spawned-server.d.ts.map +1 -1
- package/lib/testing/node/spawned-server.js +33 -1
- package/lib/testing/node/spawned-server.js.map +1 -1
- package/lib/testing/node/unhandled-rejections.d.ts +20 -0
- package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
- package/lib/testing/node/unhandled-rejections.js +32 -0
- package/lib/testing/node/unhandled-rejections.js.map +1 -0
- package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
- package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
- package/lib/testing/playwright/flaky-network-proxy.js +164 -0
- package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
- package/lib/testing/playwright/index.d.ts +1 -0
- package/lib/testing/playwright/index.d.ts.map +1 -1
- package/lib/testing/playwright/index.js +1 -0
- package/lib/testing/playwright/index.js.map +1 -1
- package/lib/testing/playwright/server-log-capture.d.ts +14 -4
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +21 -4
- package/lib/testing/playwright/server-log-capture.js.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
- package/lib/testing/playwright/server-log-rename-reporter.js.map +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 +10 -9
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +17 -9
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +26 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +57 -4
- package/lib/testing/stub-document-builder.js.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.d.ts +22 -7
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.js +92 -15
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
- package/lib/testing/stub-langium-documents.d.ts +3 -2
- package/lib/testing/stub-langium-documents.d.ts.map +1 -1
- package/lib/testing/stub-langium-documents.js.map +1 -1
- package/lib/testing/stub-model-service.d.ts +7 -6
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +4 -4
- package/lib/testing/stub-model-service.js.map +1 -1
- package/lib/util/connection-liveness.d.ts +7 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +35 -14
- package/lib/util/connection-liveness.js.map +1 -1
- package/package.json +17 -8
- package/src/documents/ast-document-manager.ts +348 -64
- package/src/documents/client-ids.ts +5 -22
- package/src/documents/client-session-errors.ts +24 -0
- package/src/documents/client-session-registry.ts +240 -0
- package/src/documents/file-system-task-queue.ts +68 -0
- package/src/documents/hydranium-text-documents.ts +959 -201
- package/src/documents/index.ts +3 -0
- package/src/documents/language-client-text-shadow.ts +59 -11
- package/src/documents/self-save-registry.ts +52 -13
- package/src/index.ts +6 -0
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +16 -9
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/lsp-logger.ts +41 -6
- package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
- package/src/langium/document-builder/build-session.ts +87 -0
- package/src/langium/document-builder/document-builder.ts +720 -43
- package/src/langium/document-builder/index.ts +1 -0
- package/src/langium/integration-services.ts +67 -6
- package/src/langium/integrity/integrity-rule.ts +13 -5
- package/src/langium/integrity/integrity-service.ts +202 -17
- package/src/langium/keys/containment.ts +87 -0
- package/src/langium/keys/index.ts +1 -0
- package/src/langium/keys/name-based-key-provider.ts +4 -0
- package/src/langium/language-module.ts +42 -4
- package/src/langium/model-service/client-session.ts +606 -0
- package/src/langium/model-service/index.ts +1 -0
- package/src/langium/model-service/model-service.ts +395 -351
- package/src/langium/module.ts +192 -63
- package/src/langium/naming/name-provider.ts +27 -5
- package/src/langium/naming/name-separator-validation.ts +34 -5
- package/src/langium/project/abstract-project-manager.ts +9 -1
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +36 -14
- package/src/langium/scope/hydranium-scope-provider.ts +60 -22
- package/src/langium/serialization/abstract-serializer.ts +13 -32
- package/src/langium/service-registry.ts +19 -2
- package/src/langium/shared-services.ts +19 -2
- package/src/langium/transfer/transfer-encoder.ts +85 -24
- package/src/langium/trivia/comment-preserver.ts +1100 -0
- package/src/langium/trivia/document-ending-preserver.ts +55 -0
- package/src/langium/trivia/index.ts +14 -0
- package/src/langium/trivia/trivia-contribution.ts +39 -0
- package/src/langium/trivia/trivia-preserver.ts +54 -0
- package/src/langium/trivia/trivia-service.ts +99 -0
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +537 -11
- package/src/langium/workspace/document-uri-policy.ts +17 -12
- package/src/langium/workspace/file-not-found.ts +23 -0
- package/src/langium/workspace/file-system-provider.ts +153 -16
- package/src/langium/workspace/hydranium-langium-document-factory.ts +34 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +21 -0
- package/src/langium/workspace/hydranium-workspace-manager.ts +133 -12
- package/src/langium/workspace/in-memory-file-system-provider.ts +47 -16
- package/src/langium/workspace/initialize-workspace.ts +43 -5
- package/src/langium/workspace/langium-documents.ts +113 -33
- package/src/langium/workspace/persistent-file-system-provider.ts +0 -7
- package/src/langium/workspace/virtual-document.ts +96 -19
- package/src/langium/workspace/write-lock-scope.ts +4 -3
- package/src/locale/index.ts +10 -0
- package/src/locale/server-locale.ts +86 -0
- package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
- package/src/lsp/connection-features.ts +67 -0
- package/src/lsp/diagnostics-connection.ts +56 -0
- package/src/lsp/hydranium-document-update-handler.ts +182 -106
- package/src/lsp/index.ts +3 -1
- package/src/lsp/lsp-latency.ts +62 -0
- package/src/lsp/semantic-token-provider.ts +74 -7
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +13 -7
- package/src/messages/carriers.ts +78 -0
- package/src/messages/index.ts +36 -0
- package/src/messages/renderer.ts +212 -0
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +1 -0
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/measure-memory.ts +1 -0
- package/src/node/node-file-system-provider.ts +122 -51
- package/src/node/profile-capture.ts +8 -2
- package/src/node/profiling-run.ts +3 -3
- package/src/node/rename-over-open-readers.ts +78 -0
- package/src/node/socket-launcher.ts +19 -4
- package/src/node/stdio-launcher.ts +1 -2
- package/src/testing/fake-document.ts +24 -5
- package/src/testing/make-noop-shared-services.ts +50 -2
- package/src/testing/make-test-services.ts +103 -27
- package/src/testing/node/index.ts +1 -0
- package/src/testing/node/lsp-harness.ts +2 -0
- package/src/testing/node/lsp-server-connection.ts +61 -11
- package/src/testing/node/scratch-workspace.ts +10 -5
- package/src/testing/node/spawned-server.ts +35 -1
- package/src/testing/node/unhandled-rejections.ts +31 -0
- package/src/testing/playwright/flaky-network-proxy.ts +240 -0
- package/src/testing/playwright/index.ts +1 -0
- package/src/testing/playwright/server-log-capture.ts +24 -5
- package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
- package/src/testing/run-update-pipeline.ts +4 -4
- package/src/testing/stub-ast-document-manager.ts +28 -21
- package/src/testing/stub-document-builder.ts +83 -17
- package/src/testing/stub-hydranium-text-documents.ts +127 -22
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +9 -8
- package/src/util/connection-liveness.ts +37 -14
- package/lib/lsp/instrument-connection.d.ts +0 -36
- package/lib/lsp/instrument-connection.d.ts.map +0 -1
- package/lib/lsp/instrument-connection.js +0 -62
- package/lib/lsp/instrument-connection.js.map +0 -1
- package/src/lsp/instrument-connection.ts +0 -66
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type URI } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* A missing-file error shaped as a Node file system raises it, with code
|
|
12
|
+
* `ENOENT` and the path: callers tell a missing file from any other failure by
|
|
13
|
+
* those two fields, whichever provider is bound. The last close relies on it to
|
|
14
|
+
* tell a document gone meanwhile from any other failed rebuild.
|
|
15
|
+
*/
|
|
16
|
+
export declare function notFound(message: string, uri: URI): Error;
|
|
17
|
+
//# sourceMappingURL=file-not-found.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-not-found.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-not-found.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAK9C;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAEzD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
// Not re-exported from the workspace barrel: the framework's providers share
|
|
10
|
+
// it, and it is no API of theirs.
|
|
11
|
+
/**
|
|
12
|
+
* A missing-file error shaped as a Node file system raises it, with code
|
|
13
|
+
* `ENOENT` and the path: callers tell a missing file from any other failure by
|
|
14
|
+
* those two fields, whichever provider is bound. The last close relies on it to
|
|
15
|
+
* tell a document gone meanwhile from any other failed rebuild.
|
|
16
|
+
*/
|
|
17
|
+
export function notFound(message, uri) {
|
|
18
|
+
return Object.assign(new Error(message), { code: 'ENOENT', path: uri.fsPath });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=file-not-found.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-not-found.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-not-found.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,6EAA6E;AAC7E,kCAAkC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAQ;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -8,23 +8,99 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Tracer } from '@hydranium/protocol';
|
|
10
10
|
import { EmptyFileSystemProvider } from '@hydranium/langium';
|
|
11
|
-
import type { URI } from '@hydranium/langium';
|
|
11
|
+
import type { FileSystemNode, URI } from '@hydranium/langium';
|
|
12
12
|
import { type WritableFileSystemProvider } from '../../documents/ast-document-manager.js';
|
|
13
13
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
14
14
|
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
15
15
|
/**
|
|
16
|
-
* Empty-filesystem
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* Node-backed
|
|
20
|
-
* lives in `@hydranium/core/node` (it pulls
|
|
16
|
+
* Empty-filesystem {@link WritableFileSystemProvider}. For browser / test / CLI
|
|
17
|
+
* hosts that don't have a real filesystem. All writes are no-ops. On the
|
|
18
|
+
* portable `.` entry it is the {@link FileSystemProviderRegistry.host} when
|
|
19
|
+
* `context.fileSystemProvider` gives no writable provider; the Node-backed
|
|
20
|
+
* `DefaultFileSystemProvider` lives in `@hydranium/core/node` (it pulls
|
|
21
|
+
* `node:fs`).
|
|
21
22
|
*/
|
|
22
23
|
export declare class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider implements WritableFileSystemProvider {
|
|
23
24
|
protected readonly services: ServerSharedServicesMinimal;
|
|
24
25
|
protected readonly tracer: Tracer;
|
|
25
26
|
constructor(services: ServerSharedServicesMinimal, options?: LogNameOptions);
|
|
26
27
|
writeFile(_uri: URI, _content: string): Promise<void>;
|
|
27
|
-
readFile(
|
|
28
|
-
|
|
28
|
+
readFile(_uri?: URI): Promise<string>;
|
|
29
|
+
readBinary(_uri?: URI): Promise<Uint8Array>;
|
|
30
|
+
stat(uri: URI): Promise<FileSystemNode>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The provider bound on `workspace.FileSystemProvider`: it dispatches each call
|
|
34
|
+
* by the URI's scheme to the provider registered for it in the shared
|
|
35
|
+
* `fileSystemProviders` group, and to the {@link host} for any scheme without
|
|
36
|
+
* one.
|
|
37
|
+
*
|
|
38
|
+
* So one provider answers for each scheme, and a host's provider needs to know
|
|
39
|
+
* only its own: the framework registers `virtual:` there, and an adopter adds a
|
|
40
|
+
* scheme by contributing to the group. The host takes every unclaimed scheme
|
|
41
|
+
* rather than `file:` alone, which keeps an in-memory workspace under `memory:`
|
|
42
|
+
* or any other scheme on the host's provider.
|
|
43
|
+
*
|
|
44
|
+
* `THost` types the host, so an adopter whose own provider has more members
|
|
45
|
+
* than the base declares the slot as `FileSystemProviderRegistry<MyProvider>`,
|
|
46
|
+
* binds a {@link DefaultFileSystemProviderRegistry} with that host, and reads
|
|
47
|
+
* those members through `services.workspace.FileSystemProvider.host`.
|
|
48
|
+
*/
|
|
49
|
+
export interface FileSystemProviderRegistry<THost extends WritableFileSystemProvider = WritableFileSystemProvider> extends WritableFileSystemProvider {
|
|
50
|
+
/** The provider for every scheme no entry of `fileSystemProviders` claims. */
|
|
51
|
+
readonly host: THost;
|
|
52
|
+
/** The provider that answers for `uri`. */
|
|
53
|
+
providerFor(uri: URI): WritableFileSystemProvider;
|
|
54
|
+
}
|
|
55
|
+
/** Options for {@link DefaultFileSystemProviderRegistry}. */
|
|
56
|
+
export interface FileSystemProviderRegistryOptions<THost extends WritableFileSystemProvider = WritableFileSystemProvider> extends LogNameOptions {
|
|
57
|
+
/**
|
|
58
|
+
* The provider for every scheme no entry of `fileSystemProviders` claims.
|
|
59
|
+
* The framework passes the provider `context.fileSystemProvider` returns,
|
|
60
|
+
* or a {@link DefaultEmptyFileSystemProvider} when that is not writable.
|
|
61
|
+
*/
|
|
62
|
+
host: THost;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The framework's {@link FileSystemProviderRegistry}.
|
|
66
|
+
*
|
|
67
|
+
* A directory is listed by the provider of its own scheme, so a workspace
|
|
68
|
+
* root's tree comes from that provider alone.
|
|
69
|
+
*
|
|
70
|
+
* `realpath` and `mtimeMs` are always present and forward to the scheme's
|
|
71
|
+
* provider. Where that provider lacks one, `realpath` returns the URI unchanged
|
|
72
|
+
* and `mtimeMs` returns `undefined`: the answers `RealpathDocumentUriPolicy`
|
|
73
|
+
* and the self-save filter already give a provider without them.
|
|
74
|
+
*/
|
|
75
|
+
export declare class DefaultFileSystemProviderRegistry<THost extends WritableFileSystemProvider = WritableFileSystemProvider> implements FileSystemProviderRegistry<THost> {
|
|
76
|
+
protected readonly services: ServerSharedServicesMinimal & {
|
|
77
|
+
fileSystemProviders: Record<string, WritableFileSystemProvider>;
|
|
78
|
+
};
|
|
79
|
+
readonly host: THost;
|
|
80
|
+
protected readonly tracer: Tracer;
|
|
81
|
+
constructor(services: ServerSharedServicesMinimal & {
|
|
82
|
+
fileSystemProviders: Record<string, WritableFileSystemProvider>;
|
|
83
|
+
}, options: FileSystemProviderRegistryOptions<THost>);
|
|
84
|
+
/**
|
|
85
|
+
* The group is read per call, not in the constructor, so a registered
|
|
86
|
+
* provider is built on first use and may read slots that reach back to this
|
|
87
|
+
* one. Only an OWN key of the group counts: the DI container resolves any
|
|
88
|
+
* key found on the prototype chain, so a scheme such as `constructor` would
|
|
89
|
+
* otherwise dispatch to a function.
|
|
90
|
+
*/
|
|
91
|
+
providerFor(uri: URI): WritableFileSystemProvider;
|
|
92
|
+
writeFile(uri: URI, content: string): Promise<void>;
|
|
93
|
+
mtimeMs(uri: URI): Promise<number | undefined>;
|
|
94
|
+
realpath(uri: URI): URI | undefined;
|
|
95
|
+
stat(uri: URI): Promise<FileSystemNode>;
|
|
96
|
+
statSync(uri: URI): FileSystemNode;
|
|
97
|
+
exists(uri: URI): Promise<boolean>;
|
|
98
|
+
existsSync(uri: URI): boolean;
|
|
99
|
+
readBinary(uri: URI): Promise<Uint8Array>;
|
|
100
|
+
readBinarySync(uri: URI): Uint8Array;
|
|
101
|
+
readFile(uri: URI): Promise<string>;
|
|
102
|
+
readFileSync(uri: URI): string;
|
|
103
|
+
readDirectory(uri: URI): Promise<FileSystemNode[]>;
|
|
104
|
+
readDirectorySync(uri: URI): FileSystemNode[];
|
|
29
105
|
}
|
|
30
106
|
//# sourceMappingURL=file-system-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { EmptyFileSystemProvider } from '@hydranium/langium';
|
|
10
|
-
import { serveVirtualDocument } from './virtual-document.js';
|
|
11
10
|
/**
|
|
12
|
-
* Empty-filesystem
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* Node-backed
|
|
16
|
-
* lives in `@hydranium/core/node` (it pulls
|
|
11
|
+
* Empty-filesystem {@link WritableFileSystemProvider}. For browser / test / CLI
|
|
12
|
+
* hosts that don't have a real filesystem. All writes are no-ops. On the
|
|
13
|
+
* portable `.` entry it is the {@link FileSystemProviderRegistry.host} when
|
|
14
|
+
* `context.fileSystemProvider` gives no writable provider; the Node-backed
|
|
15
|
+
* `DefaultFileSystemProvider` lives in `@hydranium/core/node` (it pulls
|
|
16
|
+
* `node:fs`).
|
|
17
17
|
*/
|
|
18
18
|
export class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider {
|
|
19
19
|
services;
|
|
@@ -26,16 +26,95 @@ export class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider {
|
|
|
26
26
|
async writeFile(_uri, _content) {
|
|
27
27
|
// no-op
|
|
28
28
|
}
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
// `async` so the base's refusal becomes a rejection: it throws
|
|
30
|
+
// SYNCHRONOUSLY from a method declared to return a promise, and a
|
|
31
|
+
// synchronous throw escapes the promise chain — `.catch()` never attaches
|
|
32
|
+
// and `Promise.all` dies while its argument array is still being built, so
|
|
33
|
+
// a caller reading several URIs cannot handle the miss it asked about. The
|
|
34
|
+
// base declares `readFile` and `readBinary` param-less, so the param is
|
|
35
|
+
// optional there.
|
|
36
|
+
async readFile(_uri) {
|
|
37
|
+
return super.readFile();
|
|
38
|
+
}
|
|
39
|
+
async readBinary(_uri) {
|
|
40
|
+
return super.readBinary();
|
|
41
|
+
}
|
|
42
|
+
async stat(uri) {
|
|
43
|
+
return super.stat(uri);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The framework's {@link FileSystemProviderRegistry}.
|
|
48
|
+
*
|
|
49
|
+
* A directory is listed by the provider of its own scheme, so a workspace
|
|
50
|
+
* root's tree comes from that provider alone.
|
|
51
|
+
*
|
|
52
|
+
* `realpath` and `mtimeMs` are always present and forward to the scheme's
|
|
53
|
+
* provider. Where that provider lacks one, `realpath` returns the URI unchanged
|
|
54
|
+
* and `mtimeMs` returns `undefined`: the answers `RealpathDocumentUriPolicy`
|
|
55
|
+
* and the self-save filter already give a provider without them.
|
|
56
|
+
*/
|
|
57
|
+
export class DefaultFileSystemProviderRegistry {
|
|
58
|
+
services;
|
|
59
|
+
host;
|
|
60
|
+
tracer;
|
|
61
|
+
constructor(services, options) {
|
|
62
|
+
this.services = services;
|
|
63
|
+
this.host = options.host;
|
|
64
|
+
this.tracer = services.Tracer.for(options.logName ?? this.constructor.name).trace('instantiated');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The group is read per call, not in the constructor, so a registered
|
|
68
|
+
* provider is built on first use and may read slots that reach back to this
|
|
69
|
+
* one. Only an OWN key of the group counts: the DI container resolves any
|
|
70
|
+
* key found on the prototype chain, so a scheme such as `constructor` would
|
|
71
|
+
* otherwise dispatch to a function.
|
|
72
|
+
*/
|
|
73
|
+
providerFor(uri) {
|
|
74
|
+
const providers = this.services.fileSystemProviders;
|
|
75
|
+
return Object.hasOwn(providers, uri.scheme) ? providers[uri.scheme] : this.host;
|
|
76
|
+
}
|
|
77
|
+
// The async methods are `async` so a provider that throws synchronously from
|
|
78
|
+
// one still rejects, for the reason `DefaultEmptyFileSystemProvider` gives.
|
|
79
|
+
async writeFile(uri, content) {
|
|
80
|
+
return this.providerFor(uri).writeFile(uri, content);
|
|
81
|
+
}
|
|
82
|
+
async mtimeMs(uri) {
|
|
83
|
+
return this.providerFor(uri).mtimeMs?.(uri);
|
|
84
|
+
}
|
|
85
|
+
realpath(uri) {
|
|
86
|
+
const provider = this.providerFor(uri);
|
|
87
|
+
return provider.realpath ? provider.realpath(uri) : uri;
|
|
88
|
+
}
|
|
89
|
+
async stat(uri) {
|
|
90
|
+
return this.providerFor(uri).stat(uri);
|
|
91
|
+
}
|
|
92
|
+
statSync(uri) {
|
|
93
|
+
return this.providerFor(uri).statSync(uri);
|
|
94
|
+
}
|
|
95
|
+
async exists(uri) {
|
|
96
|
+
return this.providerFor(uri).exists(uri);
|
|
97
|
+
}
|
|
98
|
+
existsSync(uri) {
|
|
99
|
+
return this.providerFor(uri).existsSync(uri);
|
|
100
|
+
}
|
|
101
|
+
async readBinary(uri) {
|
|
102
|
+
return this.providerFor(uri).readBinary(uri);
|
|
103
|
+
}
|
|
104
|
+
readBinarySync(uri) {
|
|
105
|
+
return this.providerFor(uri).readBinarySync(uri);
|
|
106
|
+
}
|
|
107
|
+
async readFile(uri) {
|
|
108
|
+
return this.providerFor(uri).readFile(uri);
|
|
35
109
|
}
|
|
36
110
|
readFileSync(uri) {
|
|
37
|
-
|
|
38
|
-
|
|
111
|
+
return this.providerFor(uri).readFileSync(uri);
|
|
112
|
+
}
|
|
113
|
+
async readDirectory(uri) {
|
|
114
|
+
return this.providerFor(uri).readDirectory(uri);
|
|
115
|
+
}
|
|
116
|
+
readDirectorySync(uri) {
|
|
117
|
+
return this.providerFor(uri).readDirectorySync(uri);
|
|
39
118
|
}
|
|
40
119
|
}
|
|
41
120
|
//# sourceMappingURL=file-system-provider.js.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type AstNode, DefaultLangiumDocumentFactory, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
10
|
+
import { type ExtendedServiceRegistry } from '../service-registry.js';
|
|
10
11
|
/**
|
|
11
12
|
* Framework `LangiumDocumentFactory` that fills in the one thing Langium
|
|
12
13
|
* leaves empty for a code-built document: its text.
|
|
@@ -34,6 +35,30 @@ import { type AstNode, DefaultLangiumDocumentFactory, type LangiumDocument, type
|
|
|
34
35
|
* node identity is preserved.
|
|
35
36
|
*/
|
|
36
37
|
export declare class HydraniumLangiumDocumentFactory extends DefaultLangiumDocumentFactory {
|
|
38
|
+
/**
|
|
39
|
+
* Narrows the inherited Langium `ServiceRegistry` field to the framework's
|
|
40
|
+
* {@link ExtendedServiceRegistry}, so the by-id lookup below needs no
|
|
41
|
+
* per-callsite cast. The framework's shared module binds that class.
|
|
42
|
+
*/
|
|
43
|
+
protected readonly serviceRegistry: ExtendedServiceRegistry;
|
|
44
|
+
/**
|
|
45
|
+
* Parse `text` for `uri` under the grammar `languageId` names, instead of
|
|
46
|
+
* the one `uri` routes to.
|
|
47
|
+
*
|
|
48
|
+
* For a URI that routes to no grammar at all: a directory, or any other URI
|
|
49
|
+
* that names no file and so carries no extension. Langium's ladder ends at
|
|
50
|
+
* the extension, so it reports `no services for the extension ''` from
|
|
51
|
+
* inside the parse — naming neither the URI nor the caller that could have
|
|
52
|
+
* said which grammar it meant.
|
|
53
|
+
*
|
|
54
|
+
* The caller supplies the language because nothing else can. A URI with no
|
|
55
|
+
* extension carries no routing signal, and choosing on its behalf would be a
|
|
56
|
+
* guess the moment a second grammar is registered — which is why this takes
|
|
57
|
+
* the id rather than falling back to a sole registered language.
|
|
58
|
+
*
|
|
59
|
+
* @throws when `languageId` names no registered grammar.
|
|
60
|
+
*/
|
|
61
|
+
fromStringInLanguage<T extends AstNode = AstNode>(text: string, uri: URI, languageId: string): LangiumDocument<T>;
|
|
37
62
|
fromModel<T extends AstNode = AstNode>(model: T, uri: URI): LangiumDocument<T>;
|
|
38
63
|
/**
|
|
39
64
|
* Serialize `model` via the per-language serializer, or `undefined` if none
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-langium-document-factory.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,OAAO,EAEZ,6BAA6B,EAC7B,KAAK,eAAe,EAEpB,KAAK,GAAG,EACV,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"hydranium-langium-document-factory.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,OAAO,EAEZ,6BAA6B,EAC7B,KAAK,eAAe,EAEpB,KAAK,GAAG,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAQtE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,+BAAgC,SAAQ,6BAA6B;IAC/E;;;;OAIG;IACH,mBAA2B,eAAe,EAAE,uBAAuB,CAAC;IAEpE;;;;;;;;;;;;;;;;OAgBG;IACH,oBAAoB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IASxG,SAAS,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC;IAYvF;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;CASxE"}
|
|
@@ -34,6 +34,31 @@ import { AstUtils, DefaultLangiumDocumentFactory } from '@hydranium/langium';
|
|
|
34
34
|
* node identity is preserved.
|
|
35
35
|
*/
|
|
36
36
|
export class HydraniumLangiumDocumentFactory extends DefaultLangiumDocumentFactory {
|
|
37
|
+
/**
|
|
38
|
+
* Parse `text` for `uri` under the grammar `languageId` names, instead of
|
|
39
|
+
* the one `uri` routes to.
|
|
40
|
+
*
|
|
41
|
+
* For a URI that routes to no grammar at all: a directory, or any other URI
|
|
42
|
+
* that names no file and so carries no extension. Langium's ladder ends at
|
|
43
|
+
* the extension, so it reports `no services for the extension ''` from
|
|
44
|
+
* inside the parse — naming neither the URI nor the caller that could have
|
|
45
|
+
* said which grammar it meant.
|
|
46
|
+
*
|
|
47
|
+
* The caller supplies the language because nothing else can. A URI with no
|
|
48
|
+
* extension carries no routing signal, and choosing on its behalf would be a
|
|
49
|
+
* guess the moment a second grammar is registered — which is why this takes
|
|
50
|
+
* the id rather than falling back to a sole registered language.
|
|
51
|
+
*
|
|
52
|
+
* @throws when `languageId` names no registered grammar.
|
|
53
|
+
*/
|
|
54
|
+
fromStringInLanguage(text, uri, languageId) {
|
|
55
|
+
const services = this.serviceRegistry.getServicesById(languageId);
|
|
56
|
+
if (!services) {
|
|
57
|
+
throw new Error(`No grammar is registered for the language id '${languageId}' (parsing ${uri.toString()}).`);
|
|
58
|
+
}
|
|
59
|
+
const parseResult = services.parser.LangiumParser.parse(text);
|
|
60
|
+
return this.createLangiumDocument(parseResult, uri, undefined, text);
|
|
61
|
+
}
|
|
37
62
|
fromModel(model, uri) {
|
|
38
63
|
// Make the code-built AST as structurally complete as a parsed one — the
|
|
39
64
|
// parser links containers, `fromModel` does not. In place (identity kept).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-langium-document-factory.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAEJ,QAAQ,EACR,6BAA6B,EAI/B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"hydranium-langium-document-factory.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAEJ,QAAQ,EACR,6BAA6B,EAI/B,MAAM,oBAAoB,CAAC;AAS5B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,+BAAgC,SAAQ,6BAA6B;IAQ/E;;;;;;;;;;;;;;;;OAgBG;IACH,oBAAoB,CAA8B,IAAY,EAAE,GAAQ,EAAE,UAAkB;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,cAAc,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,WAAW,GAAmB,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAI,IAAI,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,qBAAqB,CAAI,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEQ,SAAS,CAA8B,KAAQ,EAAE,GAAQ;QAC/D,yEAAyE;QACzE,2EAA2E;QAC3E,QAAQ,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,WAAW,GAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACxF,OAAO,IAAI,CAAC,qBAAqB,CAAI,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,KAAc,EAAE,GAAQ;QAC9C,IAAI,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAmB,CAAC;YACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACpB,CAAC;IACJ,CAAC;CACH"}
|
|
@@ -26,6 +26,19 @@ import { type CancellationToken } from 'vscode-languageserver-protocol';
|
|
|
26
26
|
* would turn ordinary read-then-write sequences into false positives.
|
|
27
27
|
*/
|
|
28
28
|
export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
29
|
+
/** Backs {@link writeCancellations}. */
|
|
30
|
+
protected cancelledWriteCount: number;
|
|
31
|
+
/**
|
|
32
|
+
* How many calls have cancelled the lock's latest write: every `write`,
|
|
33
|
+
* which cancels the write before it, and every `cancelWrite`. A caller that
|
|
34
|
+
* reads this right after queuing a write, and reads the same number later,
|
|
35
|
+
* holds a write nothing has cancelled, whether it is still queued or
|
|
36
|
+
* already running. Its token answers that only once the write runs, since
|
|
37
|
+
* a queued write has not been handed it yet.
|
|
38
|
+
*/
|
|
39
|
+
get writeCancellations(): number;
|
|
29
40
|
write(action: (token: CancellationToken) => MaybePromise<void>): Promise<void>;
|
|
41
|
+
/** Counted here rather than in {@link write}, because Langium's `write` cancels through this method too. */
|
|
42
|
+
cancelWrite(): void;
|
|
30
43
|
}
|
|
31
44
|
//# sourceMappingURL=hydranium-workspace-lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;
|
|
1
|
+
{"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAElC;;;;;;;OAOG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAEQ,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF,4GAA4G;IACnG,WAAW,IAAI,IAAI;CAI9B"}
|
|
@@ -26,8 +26,26 @@ import { runInWriteLockScope } from './write-lock-scope.js';
|
|
|
26
26
|
* would turn ordinary read-then-write sequences into false positives.
|
|
27
27
|
*/
|
|
28
28
|
export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
29
|
+
/** Backs {@link writeCancellations}. */
|
|
30
|
+
cancelledWriteCount = 0;
|
|
31
|
+
/**
|
|
32
|
+
* How many calls have cancelled the lock's latest write: every `write`,
|
|
33
|
+
* which cancels the write before it, and every `cancelWrite`. A caller that
|
|
34
|
+
* reads this right after queuing a write, and reads the same number later,
|
|
35
|
+
* holds a write nothing has cancelled, whether it is still queued or
|
|
36
|
+
* already running. Its token answers that only once the write runs, since
|
|
37
|
+
* a queued write has not been handed it yet.
|
|
38
|
+
*/
|
|
39
|
+
get writeCancellations() {
|
|
40
|
+
return this.cancelledWriteCount;
|
|
41
|
+
}
|
|
29
42
|
write(action) {
|
|
30
43
|
return super.write(token => runInWriteLockScope(() => action(token)));
|
|
31
44
|
}
|
|
45
|
+
/** Counted here rather than in {@link write}, because Langium's `write` cancels through this method too. */
|
|
46
|
+
cancelWrite() {
|
|
47
|
+
this.cancelledWriteCount++;
|
|
48
|
+
super.cancelWrite();
|
|
49
|
+
}
|
|
32
50
|
}
|
|
33
51
|
//# sourceMappingURL=hydranium-workspace-lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;
|
|
1
|
+
{"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IAElC;;;;;;;OAOG;IACH,IAAI,kBAAkB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,MAAwD;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,4GAA4G;IACnG,WAAW;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,KAAK,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;CACH"}
|
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { Deferred, type Logger, type Tracer } from '@hydranium/protocol';
|
|
10
|
-
import { DefaultWorkspaceManager, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
11
|
-
import { type CancellationToken } from 'vscode-languageserver';
|
|
10
|
+
import { DefaultWorkspaceManager, type LangiumDocument, type Stream, type URI } from '@hydranium/langium';
|
|
11
|
+
import { type CancellationToken, type InitializeParams } from 'vscode-languageserver';
|
|
12
12
|
import type { WorkspaceFolder } from 'vscode-languageserver-types';
|
|
13
13
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
14
|
+
import type { ServerLocale } from '../../locale/server-locale.js';
|
|
14
15
|
import type { ProjectChangeEvent } from '../project/project-change-event.js';
|
|
15
16
|
import type { ProjectManager } from '../project/project-manager.js';
|
|
16
17
|
import type { ServerSharedServicesMinimal } from '../shared-services.js';
|
|
@@ -53,6 +54,17 @@ export declare function handleProcessUnhandledRejection(reason: unknown, logger:
|
|
|
53
54
|
* Applies to every Langium-based server that experiences concurrent builds.
|
|
54
55
|
*/
|
|
55
56
|
export declare function installOperationCancelledSuppression(logger: Logger): void;
|
|
57
|
+
/** Options for {@link HydraniumWorkspaceManager}. */
|
|
58
|
+
export interface HydraniumWorkspaceManagerOptions extends LogNameOptions {
|
|
59
|
+
/**
|
|
60
|
+
* Whether startup warns about seeded documents the bound
|
|
61
|
+
* `FileSystemProvider` cannot serve (see
|
|
62
|
+
* {@link HydraniumWorkspaceManager.warnIfDocumentsUnserved}). Defaults to
|
|
63
|
+
* `true`; turn it off for a host that drops such documents at their last
|
|
64
|
+
* close on purpose.
|
|
65
|
+
*/
|
|
66
|
+
warnUnservedDocuments?: boolean;
|
|
67
|
+
}
|
|
56
68
|
/**
|
|
57
69
|
* Framework {@link DefaultWorkspaceManager} subclass that integrates the
|
|
58
70
|
* project tier with Langium's workspace startup.
|
|
@@ -85,8 +97,8 @@ export declare function installOperationCancelledSuppression(logger: Logger): vo
|
|
|
85
97
|
* URIs (its own members plus any transitive dependents per the
|
|
86
98
|
* `getAffectedProjects` hook). This manager re-runs
|
|
87
99
|
* `DocumentBuilder.resetToState(doc, DocumentState.Changed)` on each
|
|
88
|
-
* affected document so the
|
|
89
|
-
* visibility scope.
|
|
100
|
+
* affected document so the build of the update that changed the descriptor
|
|
101
|
+
* re-links them with the new visibility scope.
|
|
90
102
|
*
|
|
91
103
|
* Descriptor URIs that triggered the cycle are intentionally excluded
|
|
92
104
|
* from the affected set by `AbstractProjectManager.onBuildUpdate` —
|
|
@@ -114,11 +126,17 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
114
126
|
*/
|
|
115
127
|
readonly workspaceInitialized: Promise<unknown>;
|
|
116
128
|
protected readonly uriPolicy: DocumentUriPolicy;
|
|
129
|
+
/** Handed the client's locale at init; read by whoever renders in it. */
|
|
130
|
+
protected readonly serverLocale: ServerLocale;
|
|
117
131
|
protected readonly writableFileSystemProvider: WritableFileSystemProvider;
|
|
118
132
|
protected readonly additionalDocuments: Record<string, AdditionalDocumentContribution>;
|
|
119
133
|
/** Registry consulted by {@link warnIfUnroutable} to check a seeded document routes. */
|
|
120
134
|
protected readonly languageRegistry: ServerSharedServicesMinimal['ServiceRegistry'];
|
|
121
|
-
|
|
135
|
+
/** Whether startup runs {@link warnIfDocumentsUnserved}. */
|
|
136
|
+
protected readonly warnUnservedDocuments: boolean;
|
|
137
|
+
/** URIs of the documents the running startup's file traversal loaded; see {@link loadWorkspaceDocuments}. */
|
|
138
|
+
protected readonly traversedUris: Set<string>;
|
|
139
|
+
constructor(services: ServerSharedServicesMinimal, options?: HydraniumWorkspaceManagerOptions);
|
|
122
140
|
/**
|
|
123
141
|
* Contribution form of Langium's `loadAdditionalDocuments`. Runs the base
|
|
124
142
|
* behaviour first (a no-op unless a further subclass adds documents), then
|
|
@@ -150,6 +168,40 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
150
168
|
*/
|
|
151
169
|
protected warnIfUnroutable(document: LangiumDocument): void;
|
|
152
170
|
protected performStartup(folders: WorkspaceFolder[]): Promise<LangiumDocument[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Record each document the file traversal loads, so startup can tell them
|
|
173
|
+
* from the documents `loadAdditionalDocuments` seeded, through the
|
|
174
|
+
* `additionalDocuments` group or an override of its own.
|
|
175
|
+
*
|
|
176
|
+
* The traversal found each of its documents through the provider, so asking
|
|
177
|
+
* it again whether they exist costs one call per workspace file and cannot
|
|
178
|
+
* come out false. Telling them apart by scheme does not work either: the
|
|
179
|
+
* registry's host answers every scheme no other provider claims, a seeded
|
|
180
|
+
* scheme nobody serves included. An override that loads documents without
|
|
181
|
+
* delegating here leaves them unrecorded, so startup asks the provider
|
|
182
|
+
* about each of them.
|
|
183
|
+
*/
|
|
184
|
+
protected loadWorkspaceDocuments(uris: Stream<URI>, collector: (document: LangiumDocument) => void): Promise<void>;
|
|
185
|
+
/**
|
|
186
|
+
* Warn once when the bound `FileSystemProvider` cannot serve a seeded
|
|
187
|
+
* document, naming each such document's scheme.
|
|
188
|
+
*
|
|
189
|
+
* The last close keeps a document only if the provider says it `exists`, so
|
|
190
|
+
* each such document leaves the workspace the first time an editor closes
|
|
191
|
+
* it, and whatever resolved against it breaks. The framework's registry
|
|
192
|
+
* serves `virtual:` through the `fileSystemProviders` group and every other
|
|
193
|
+
* scheme through its host, which knows nothing of a scheme an adopter
|
|
194
|
+
* invented for its seeded documents, and nothing else reports the loss. A
|
|
195
|
+
* provider that throws counts as not serving the document, since a startup
|
|
196
|
+
* that failed on a diagnostic would be worse than the loss.
|
|
197
|
+
*
|
|
198
|
+
* Runs over every document startup collected outside the file traversal,
|
|
199
|
+
* which is what `loadAdditionalDocuments` seeded, through the
|
|
200
|
+
* `additionalDocuments` group or an override of that method, once startup
|
|
201
|
+
* has added them to the workspace, unless `warnUnservedDocuments` is
|
|
202
|
+
* `false`.
|
|
203
|
+
*/
|
|
204
|
+
protected warnIfDocumentsUnserved(documents: readonly LangiumDocument[]): Promise<void>;
|
|
153
205
|
/**
|
|
154
206
|
* Add back the documents project discovery created that Langium's file
|
|
155
207
|
* traversal then filtered out.
|
|
@@ -199,6 +251,23 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
199
251
|
* server's file name and the harness's correlation key agree.
|
|
200
252
|
*/
|
|
201
253
|
protected resolveWorkspaceLogTarget(folders: WorkspaceFolder[]): void;
|
|
254
|
+
/**
|
|
255
|
+
* Forward the locale the client declared, then Langium's own read of the
|
|
256
|
+
* params. `DefaultWorkspaceManager.initialize` reads `workspaceFolders`
|
|
257
|
+
* alone, so `params.locale` would otherwise be discarded — and this is the
|
|
258
|
+
* only place it arrives, which the headless init seams route through too.
|
|
259
|
+
*
|
|
260
|
+
* **The ABSENT case is reported from here rather than from `ServerLocale`,
|
|
261
|
+
* because this is the only end that can see it.** `accept` is not called
|
|
262
|
+
* when no locale was declared — nor should it be, since `''` is a claim
|
|
263
|
+
* about a language rather than the absence of one — so a log written there
|
|
264
|
+
* covers one of the two outcomes and leaves the other looking like a server
|
|
265
|
+
* that never reached init. Both lines are at `info` for the reason `accept`
|
|
266
|
+
* gives: the framework ships no catalogue, so an undeclared locale and an
|
|
267
|
+
* untranslated code produce the same English and the log is what separates
|
|
268
|
+
* them.
|
|
269
|
+
*/
|
|
270
|
+
initialize(params: InitializeParams): void;
|
|
202
271
|
/**
|
|
203
272
|
* Override of Langium's workspace setup to resolve / reject
|
|
204
273
|
* {@link workspaceInitializedDeferred} once setup completes. Adopters with
|
|
@@ -210,9 +279,9 @@ export declare class HydraniumWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
210
279
|
initializeWorkspace(folders: WorkspaceFolder[], cancelToken?: CancellationToken): Promise<void>;
|
|
211
280
|
/**
|
|
212
281
|
* Default cascade-rebuild handler. Iterates {@link ProjectChangeEvent.affectedDocuments}
|
|
213
|
-
* and resets each to {@link DocumentState.Changed} so the
|
|
214
|
-
* re-runs the pipeline (parse → link → validate)
|
|
215
|
-
* visibility scope.
|
|
282
|
+
* and resets each to {@link DocumentState.Changed} so the build of the update
|
|
283
|
+
* that changed the descriptor re-runs the pipeline (parse → link → validate)
|
|
284
|
+
* under the new project visibility scope.
|
|
216
285
|
*
|
|
217
286
|
* Subclasses can override for additional behaviour (e.g. logging,
|
|
218
287
|
* telemetry, custom rebuild policies); call `super` to preserve the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-workspace-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAiB,KAAK,eAAe,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"hydranium-workspace-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-manager.ts"],"names":[],"mappings":"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"}
|