@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
package/README.md
CHANGED
|
@@ -27,7 +27,9 @@ and so does every other head package (`@hydranium/data-server`,
|
|
|
27
27
|
`HydraniumTextDocuments`, `WritableFileSystemProvider` and `SelfSaveRegistry`
|
|
28
28
|
generalise the LSP document lifecycle to several co-editing heads, so an edit
|
|
29
29
|
made on one surface is observable on the others without a head-to-head
|
|
30
|
-
synchronisation protocol.
|
|
30
|
+
synchronisation protocol. A participant works through a `ClientSession` from
|
|
31
|
+
`ModelService.createSession`, which writes only what it has open; see
|
|
32
|
+
[client sessions](../../docs/concepts/client-sessions.md).
|
|
31
33
|
- **The projection the non-LSP heads build on:** `ModelService` (the in-process
|
|
32
34
|
workspace facade), `TransferEncoder` (AST → transfer model), and the
|
|
33
35
|
`Serializer` slot.
|
|
@@ -94,6 +96,8 @@ Alpha — pre-v0, not yet published. The API is not stable and may change withou
|
|
|
94
96
|
deprecation cycle. See the [repository README](../../README.md) for the current
|
|
95
97
|
status and known limitations.
|
|
96
98
|
|
|
99
|
+
For task-shaped adoption paths, start with the [validation check guide](../../docs/guides/add-validation-check.md). It shows the validation contribution boundary that this package supplies.
|
|
100
|
+
|
|
97
101
|
## License
|
|
98
102
|
|
|
99
103
|
`MIT` — see this package's [`LICENSE`](./LICENSE). Third-party notices for the
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { type CloseModelArgs, type Tracer, type TransferSavedEvent, type TransferUpdatedEvent, type OpenModelArgs } from '@hydranium/protocol';
|
|
10
|
-
import { type AstNode, type
|
|
9
|
+
import { type CanonicalUri, type CloseModelArgs, type Tracer, type TransferSavedEvent, type TransferUpdatedEvent, type OpenModelArgs, type SnapshotVersion } from '@hydranium/protocol';
|
|
10
|
+
import { type AstNode, type FileSystemProvider, type LangiumDocument, type LangiumDocuments } from '@hydranium/langium';
|
|
11
11
|
import { type LogNameOptions } from '../langium/diagnostics/logger.js';
|
|
12
|
+
import { type AstDiagnostic } from '../langium/validation/document-validator.js';
|
|
12
13
|
/**
|
|
13
14
|
* File-system provider extension that supports writes. Langium's standard
|
|
14
15
|
* {@link FileSystemProvider} is read-only; the manager needs to persist saves,
|
|
@@ -46,8 +47,9 @@ export interface WritableFileSystemProvider extends FileSystemProvider {
|
|
|
46
47
|
* - A non-`file:` URI (or any URI the provider cannot stat) passes through
|
|
47
48
|
* **unchanged** — it is treated as present, never reported absent.
|
|
48
49
|
* - A provider with no disk to check (in-memory / browser / empty) simply
|
|
49
|
-
* omits this method; `
|
|
50
|
-
*
|
|
50
|
+
* omits this method; the framework's `FileSystemProviderRegistry` then
|
|
51
|
+
* returns the URI unchanged, and `RealpathDocumentUriPolicy` answers as
|
|
52
|
+
* the syntactic `DefaultDocumentUriPolicy` does.
|
|
51
53
|
*
|
|
52
54
|
* Synchronous (a `realpath` is a kernel-cached syscall) and optional — the
|
|
53
55
|
* only consumers are the document-identity policy's `canonicalUri`/`loadUri`.
|
|
@@ -63,6 +65,7 @@ import { type TextDocumentItem } from 'vscode-languageserver-protocol';
|
|
|
63
65
|
import { type TextDocument } from 'vscode-languageserver-textdocument';
|
|
64
66
|
import { URI } from '@hydranium/langium';
|
|
65
67
|
import { type ServerSharedServices } from '../langium/module.js';
|
|
68
|
+
import { type HydraniumDocumentBuilder } from '../langium/document-builder/index.js';
|
|
66
69
|
import { type HydraniumTextDocuments } from './hydranium-text-documents.js';
|
|
67
70
|
import { type SelfSaveRegistry } from './self-save-registry.js';
|
|
68
71
|
import { type DocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
|
|
@@ -82,19 +85,18 @@ export interface UpdateInfo {
|
|
|
82
85
|
* twins; the type-system distinction is the generic constraint, and the
|
|
83
86
|
* conversion seam between them is the framework `TransferEncoder`.
|
|
84
87
|
*/
|
|
85
|
-
export interface AstDocument<TAst extends AstNode, TDiagnostic> {
|
|
88
|
+
export interface AstDocument<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> {
|
|
86
89
|
root: TAst;
|
|
87
90
|
diagnostics: TDiagnostic[];
|
|
88
91
|
uri: string;
|
|
89
92
|
/**
|
|
90
93
|
* Text-document version this snapshot was taken at — read from
|
|
91
94
|
* `LangiumDocument.textDocument.version`. Symmetric with
|
|
92
|
-
* `TransferDocument.version` on the wire side: in-process
|
|
93
|
-
*
|
|
94
|
-
* `
|
|
95
|
-
* into the conflict gate.
|
|
95
|
+
* `TransferDocument.version` on the wire side: an in-process caller that
|
|
96
|
+
* holds an `AstDocument` and mutates it sends this straight back as the
|
|
97
|
+
* `basedOn` of its session's write, and the conflict gate arms on it.
|
|
96
98
|
*/
|
|
97
|
-
version:
|
|
99
|
+
version: SnapshotVersion;
|
|
98
100
|
}
|
|
99
101
|
export declare namespace AstDocument {
|
|
100
102
|
/**
|
|
@@ -103,7 +105,7 @@ export declare namespace AstDocument {
|
|
|
103
105
|
* don't need to repeat the empty array at every call site. Mirrors
|
|
104
106
|
* `TransferDocument.create` on the wire side.
|
|
105
107
|
*/
|
|
106
|
-
function create<TAst extends AstNode, TDiagnostic =
|
|
108
|
+
function create<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(uri: string, version: number, root: TAst, diagnostics?: TDiagnostic[]): AstDocument<TAst, TDiagnostic>;
|
|
107
109
|
/**
|
|
108
110
|
* Project a {@link LangiumDocument} into its {@link AstDocument}
|
|
109
111
|
* envelope — the single place that reads `root` / `diagnostics` /
|
|
@@ -117,15 +119,84 @@ export declare namespace AstDocument {
|
|
|
117
119
|
* carry that identity, not the subscriber's (possibly non-canonical) URI:
|
|
118
120
|
* a subscriber already knows the URI it subscribed with, so the useful
|
|
119
121
|
* thing to surface is the canonical one every other layer keys by.
|
|
122
|
+
*
|
|
123
|
+
* Narrowing `TDiagnostic` below the constraint asserts that the validators
|
|
124
|
+
* in play produce that shape, and nothing here checks it: the build fills the
|
|
125
|
+
* array, so a document carrying a diagnostic from elsewhere — a lexer error,
|
|
126
|
+
* another validator — satisfies the declared type and not the narrowed one.
|
|
120
127
|
*/
|
|
121
|
-
function from<TAst extends AstNode, TDiagnostic =
|
|
128
|
+
function from<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(document: LangiumDocument): AstDocument<TAst, TDiagnostic>;
|
|
122
129
|
}
|
|
123
130
|
/** Update event delivered by {@link AstDocumentManager.onUpdate} — typed alias over the generic event wrapper. */
|
|
124
|
-
export type AstDocumentUpdatedEvent<TAst extends AstNode, TDiagnostic> = TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>;
|
|
131
|
+
export type AstDocumentUpdatedEvent<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> = TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>;
|
|
125
132
|
/** Save event delivered by {@link AstDocumentManager.onSave} — typed alias over the generic event wrapper. */
|
|
126
|
-
export type AstDocumentSavedEvent<TAst extends AstNode, TDiagnostic> = TransferSavedEvent<AstDocument<TAst, TDiagnostic>>;
|
|
133
|
+
export type AstDocumentSavedEvent<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> = TransferSavedEvent<AstDocument<TAst, TDiagnostic>>;
|
|
134
|
+
/**
|
|
135
|
+
* Why an update event fired and whose write it echoes, as
|
|
136
|
+
* {@link AstDocumentManager.attributeUpdate} answers for a document. The
|
|
137
|
+
* fields mean what they mean on `TransferUpdatedEvent`.
|
|
138
|
+
*/
|
|
139
|
+
export interface UpdateAttribution {
|
|
140
|
+
reason: 'changed' | 'rebuilt';
|
|
141
|
+
sourceClientId: string;
|
|
142
|
+
causedBy: string;
|
|
143
|
+
}
|
|
127
144
|
/** Construction options for {@link AstDocumentManager}. */
|
|
128
|
-
export
|
|
145
|
+
export interface AstDocumentManagerOptions extends LogNameOptions {
|
|
146
|
+
/**
|
|
147
|
+
* Skip a queued save of a URI when a newer save of it is queued behind. The
|
|
148
|
+
* newer save took its text later, so disk ends the same with fewer writes.
|
|
149
|
+
* A skipped save announces nothing and takes the newer save's outcome: it
|
|
150
|
+
* resolves when that one lands and rejects with its error when it fails,
|
|
151
|
+
* since disk then holds neither text. Defaults to `false`: every save
|
|
152
|
+
* writes. The framework binds the manager without options, so turning this
|
|
153
|
+
* on means rebinding `AstDocumentManager` with them.
|
|
154
|
+
*/
|
|
155
|
+
readonly coalesceSaves?: boolean;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The document slot the model server and the integrity service talk to:
|
|
159
|
+
* open/close/update/save plus the AST-typed event streams, with the LSP
|
|
160
|
+
* plumbing hidden.
|
|
161
|
+
*
|
|
162
|
+
* Generic over `<TAst extends AstNode, TDiagnostic>` so each consumer projects
|
|
163
|
+
* its own AST root type and diagnostic shape into the emitted
|
|
164
|
+
* {@link AstDocument} envelopes.
|
|
165
|
+
*
|
|
166
|
+
* **URI contract.** Every URI-accepting member takes a URI in *any* spelling
|
|
167
|
+
* (canonical, symlinked, `..`/case-divergent) and canonicalizes internally
|
|
168
|
+
* through the {@link DocumentUriPolicy}, so a caller never has to canonicalize
|
|
169
|
+
* first and an implementation may not require it.
|
|
170
|
+
*/
|
|
171
|
+
export interface AstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> {
|
|
172
|
+
open(args: OpenModelArgs): Promise<Disposable>;
|
|
173
|
+
close(args: CloseModelArgs): Promise<void>;
|
|
174
|
+
isOpen(uri: string): boolean;
|
|
175
|
+
/** Apply `text` as `clientId`'s edit. Resolves to the resulting text-document version. */
|
|
176
|
+
update(uri: string, text: string, clientId: string): Promise<number>;
|
|
177
|
+
/**
|
|
178
|
+
* Write the document's current text to disk through `FileSystemTaskQueue`.
|
|
179
|
+
* The text is taken when this is called, so saves of one file land in the
|
|
180
|
+
* order they were called.
|
|
181
|
+
*/
|
|
182
|
+
save(uri: string, clientId: string): Promise<void>;
|
|
183
|
+
onUpdate(uri: string, listener: (event: AstDocumentUpdatedEvent<TAst, TDiagnostic>) => void): Disposable;
|
|
184
|
+
onSave(uri: string, listener: (event: AstDocumentSavedEvent<TAst, TDiagnostic>) => void | Promise<void>): Disposable;
|
|
185
|
+
onClientClosed(uri: string, clientId: string, listener: () => void): Disposable;
|
|
186
|
+
getDocument(uri: string): LangiumDocument | undefined;
|
|
187
|
+
/** Client id that authored the document's current version, or `undefined` for a framework-internal build. */
|
|
188
|
+
getAuthor(document: LangiumDocument): string | undefined;
|
|
189
|
+
/**
|
|
190
|
+
* The reason, source and cause of an update event for `document` emitted
|
|
191
|
+
* now, from a phase listener of the build that carries it. Every head takes
|
|
192
|
+
* its update events' attribution from here, so they name the same client
|
|
193
|
+
* for one build. For a document a client opened, while rebuilds validate,
|
|
194
|
+
* the answer changes once its `Validated` listeners have all run: a later
|
|
195
|
+
* event at that version is `'rebuilt'`. `TransferDocumentUpdateReason`
|
|
196
|
+
* names the cases that fall back to the last update.
|
|
197
|
+
*/
|
|
198
|
+
attributeUpdate(document: LangiumDocument): UpdateAttribution;
|
|
199
|
+
}
|
|
129
200
|
/**
|
|
130
201
|
* Higher-level facade over {@link HydraniumTextDocuments} that speaks the
|
|
131
202
|
* model-server protocol (open/close/update/save with the transfer-model event
|
|
@@ -146,13 +217,49 @@ export type AstDocumentManagerOptions = LogNameOptions;
|
|
|
146
217
|
* resolution (the egress `applyEditToLanguageClient`) stay on
|
|
147
218
|
* {@link HydraniumTextDocuments}, their owner.
|
|
148
219
|
*/
|
|
149
|
-
export declare class
|
|
220
|
+
export declare class DefaultAstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> implements AstDocumentManager<TAst, TDiagnostic> {
|
|
150
221
|
protected readonly services: ServerSharedServices;
|
|
222
|
+
/** The last `DocumentBuilder.update`'s URIs; the reason for a document the store does not track. */
|
|
151
223
|
protected lastUpdate?: UpdateInfo;
|
|
224
|
+
/**
|
|
225
|
+
* Canonical URIs a client has opened since the file was last deleted,
|
|
226
|
+
* whose versions the store keeps. One no client has opened keeps Langium's
|
|
227
|
+
* version `0` through every change of its content, so its version says
|
|
228
|
+
* nothing. Kept past the last close, since the store continues the version
|
|
229
|
+
* sequence on the next open; a delivery can land after that close.
|
|
230
|
+
*/
|
|
231
|
+
protected readonly trackedUris: Set<CanonicalUri>;
|
|
232
|
+
/**
|
|
233
|
+
* Per tracked URI, the version whose `Validated` listeners last all ran,
|
|
234
|
+
* which is the version an update event was delivered for. Dropped on
|
|
235
|
+
* deletion, so a file created again with the same text is changed again.
|
|
236
|
+
*/
|
|
237
|
+
protected readonly deliveredVersions: Map<CanonicalUri, number>;
|
|
238
|
+
/**
|
|
239
|
+
* Whose writes the build under way carries, set when it starts: the author
|
|
240
|
+
* of every open document's undelivered version, and the unknown-client id
|
|
241
|
+
* for a change no write explains, such as a deletion, a document no client
|
|
242
|
+
* has open, or a write that changed nothing. An undelivered version is one
|
|
243
|
+
* whose build has not validated it yet, so a write whose build was
|
|
244
|
+
* cancelled stays a cause of the build that takes over.
|
|
245
|
+
*
|
|
246
|
+
* Errs toward more than one cause, and so toward the unknown client, which
|
|
247
|
+
* a reader treats as foreign: an answer it repeats, never one it misses.
|
|
248
|
+
* A change no write explains counts for its own build only, so a build
|
|
249
|
+
* that takes over from a cancelled one loses it. One field for every build:
|
|
250
|
+
* a build started outside the workspace lock, such as a re-queue of an
|
|
251
|
+
* orphaned document, reads the causes of whichever build started last.
|
|
252
|
+
* An open document no build delivers, one a `shouldValidate` override
|
|
253
|
+
* skips, stays undelivered, so it is a cause of every build while open.
|
|
254
|
+
*/
|
|
255
|
+
protected readonly buildCauses: Set<string>;
|
|
256
|
+
/** Per canonical URI, the newest save queued for it, which {@link coalesceSaves} lets older queued saves defer to. */
|
|
257
|
+
protected readonly newestSaves: Map<CanonicalUri, Promise<void>>;
|
|
258
|
+
protected readonly coalesceSaves: boolean;
|
|
152
259
|
protected readonly textDocuments: HydraniumTextDocuments<TextDocument>;
|
|
153
260
|
protected readonly fileSystemProvider: WritableFileSystemProvider;
|
|
154
261
|
protected readonly langiumDocs: LangiumDocuments;
|
|
155
|
-
protected readonly documentBuilder:
|
|
262
|
+
protected readonly documentBuilder: HydraniumDocumentBuilder;
|
|
156
263
|
protected readonly uriPolicy: DocumentUriPolicy;
|
|
157
264
|
protected readonly tracer: Tracer;
|
|
158
265
|
constructor(services: ServerSharedServices, options?: AstDocumentManagerOptions);
|
|
@@ -187,15 +294,48 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
|
|
|
187
294
|
onUpdate(uri: string, listener: (event: TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>) => void): Disposable;
|
|
188
295
|
/**
|
|
189
296
|
* The client that authored `document`'s current version, or `undefined` when
|
|
190
|
-
* no client wrote it
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
297
|
+
* no client wrote it: a document no client has open. A rebuild that keeps
|
|
298
|
+
* the version keeps its author, so this does not say who caused a build;
|
|
299
|
+
* {@link attributeUpdate} does.
|
|
300
|
+
* Honest about absence so a routing consumer tests `undefined` directly
|
|
301
|
+
* rather than against a sentinel; the presentation default
|
|
302
|
+
* ({@link UNKNOWN_CLIENT_ID}) is applied where an event needs a value.
|
|
303
|
+
*/
|
|
304
|
+
getAuthor(document: LangiumDocument): string | undefined;
|
|
305
|
+
/**
|
|
306
|
+
* `'changed'` for the first delivery of the document's version, crediting
|
|
307
|
+
* its author; `'rebuilt'` for a later one, crediting nobody, since it echoes
|
|
308
|
+
* no write, and naming the build's single cause if it has one.
|
|
309
|
+
*
|
|
310
|
+
* A document the rule does not apply to (see {@link isTracked}) falls back
|
|
311
|
+
* to the last update: it is `'changed'` when its URI was passed to
|
|
312
|
+
* `DocumentBuilder.update`. An open document that a validating build skips,
|
|
313
|
+
* through a `shouldValidate` override, is never delivered, so each of its
|
|
314
|
+
* events is its author's change.
|
|
315
|
+
*/
|
|
316
|
+
attributeUpdate(document: LangiumDocument): UpdateAttribution;
|
|
317
|
+
/**
|
|
318
|
+
* Whether the version rule applies to `uri`: the store keeps its version,
|
|
319
|
+
* and rebuilds validate. With `updateBuildOptions.validation` off no version
|
|
320
|
+
* is ever delivered, and the rule would report every event of an open
|
|
321
|
+
* document as its author's change.
|
|
322
|
+
*/
|
|
323
|
+
protected isTracked(uri: CanonicalUri): boolean;
|
|
324
|
+
/**
|
|
325
|
+
* Whether the store keeps `uri`'s version: a client opened it since its
|
|
326
|
+
* file was last deleted, or has it open still, as an editor keeps a
|
|
327
|
+
* deleted file's buffer.
|
|
328
|
+
*/
|
|
329
|
+
protected keepsVersion(uri: CanonicalUri): boolean;
|
|
330
|
+
/**
|
|
331
|
+
* Record that `version` of `document` was delivered, when the store tracks
|
|
332
|
+
* it. The version the listeners saw, not the document's current one: a
|
|
333
|
+
* write during them has moved that on, and marking it would report the
|
|
334
|
+
* write's own build as rebuilt.
|
|
335
|
+
*/
|
|
336
|
+
protected markDelivered(document: LangiumDocument, version: number): void;
|
|
337
|
+
/** Whether `version` of `uri` was delivered. */
|
|
338
|
+
protected isDelivered(uri: string, version: number): boolean;
|
|
199
339
|
open(args: OpenModelArgs): Promise<Disposable>;
|
|
200
340
|
close(args: CloseModelArgs): Promise<void>;
|
|
201
341
|
/**
|
|
@@ -217,12 +357,34 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
|
|
|
217
357
|
* callers don't need to pass it — the manager owns content and version
|
|
218
358
|
* sequencing.
|
|
219
359
|
*
|
|
360
|
+
* The text is taken synchronously, before the save waits in the file's task
|
|
361
|
+
* queue; the compare and the write run in the queue. Taken later, a save
|
|
362
|
+
* that waits behind another writes whatever the store holds when its turn
|
|
363
|
+
* comes, edits made after the call included, and announces that text under
|
|
364
|
+
* its own client id.
|
|
365
|
+
*
|
|
366
|
+
* **The write is skipped when the file already holds that text; the
|
|
367
|
+
* notification is not.** A save announces that the content is on disk, which
|
|
368
|
+
* is true either way — so a subscriber clearing a dirty marker or reacting to
|
|
369
|
+
* a persist behaves the same, while an mtime is not moved for byte-identical
|
|
370
|
+
* content that a downstream mtime-keyed build would then read as new work.
|
|
371
|
+
*
|
|
220
372
|
* Throws if no document is open for `uri`.
|
|
221
373
|
*/
|
|
222
374
|
save(uri: string, clientId: string): Promise<void>;
|
|
375
|
+
/** Write `text` to `uri` unless the file already holds it, then announce the save. Runs inside the file's task queue. */
|
|
376
|
+
protected writeSave(uri: CanonicalUri, text: string, clientId: string): Promise<void>;
|
|
377
|
+
/**
|
|
378
|
+
* Whether the file at `uri` already holds `text`.
|
|
379
|
+
*
|
|
380
|
+
* Compared by CONTENT rather than against a remembered version, so a write
|
|
381
|
+
* from outside this server is still corrected: a version this manager already
|
|
382
|
+
* saved says nothing about what is on disk now. `false` when the file cannot
|
|
383
|
+
* be read at all, which is the answer that writes — a document whose file does
|
|
384
|
+
* not exist yet is exactly the one a first save has to create.
|
|
385
|
+
*/
|
|
386
|
+
protected matchesDisk(uri: string, text: string): Promise<boolean>;
|
|
223
387
|
isOpen(uri: string): boolean;
|
|
224
|
-
/** True if the URI was in the directly-changed set of the most recent build (not just affected). */
|
|
225
|
-
isDirectChange(uri: string): boolean;
|
|
226
388
|
/**
|
|
227
389
|
* The `LangiumDocument` for an externally-supplied URI, looked up by its
|
|
228
390
|
* canonical identity. Folds the `getDocument(toUri(canonicalUri(uri)))` idiom
|
|
@@ -232,7 +394,6 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
|
|
|
232
394
|
*/
|
|
233
395
|
getDocument(uri: string): LangiumDocument | undefined;
|
|
234
396
|
protected createDocumentFromTextOrFileSystem(uri: string, languageId?: string, version?: number, text?: string): Promise<TextDocumentItem>;
|
|
235
|
-
readFile(uri: string): Promise<string>;
|
|
236
397
|
/**
|
|
237
398
|
* Hook for subclasses that want to re-shape the emitted document (e.g. inject
|
|
238
399
|
* a custom-typed `diagnostics` field). The default delegates to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-document-manager.d.ts","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"ast-document-manager.d.ts","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"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"}
|