@hydranium/core 1.0.0-next.11 → 1.0.0-next.111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/documents/ast-document-manager.d.ts +75 -16
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +57 -19
- 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/hydranium-text-documents.d.ts +124 -36
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +191 -51
- package/lib/documents/hydranium-text-documents.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 +150 -7
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +298 -11
- 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-service.d.ts +16 -0
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +110 -2
- 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 +25 -0
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +14 -0
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/model-service.d.ts +161 -10
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +174 -95
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +84 -15
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +26 -12
- 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/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/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 +3 -4
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +3 -4
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-system-provider.d.ts +9 -1
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +40 -7
- 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-manager.d.ts +21 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +28 -0
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +23 -0
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +47 -9
- package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +23 -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 +83 -28
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/virtual-document.d.ts +18 -3
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +19 -2
- package/lib/langium/workspace/virtual-document.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.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +10 -1
- 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/start-language-server.d.ts +5 -3
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +10 -3
- 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 +136 -0
- package/lib/messages/renderer.d.ts.map +1 -0
- package/lib/messages/renderer.js +159 -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/node-file-system-provider.d.ts +35 -1
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +140 -45
- 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 +15 -0
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +3 -2
- package/lib/node/socket-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 +45 -9
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +19 -3
- 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-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +5 -6
- 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 +9 -4
- 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/stub-ast-document-manager.d.ts +5 -5
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +4 -6
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +8 -0
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +22 -3
- package/lib/testing/stub-document-builder.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 +5 -4
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +2 -2
- 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 +129 -36
- package/src/documents/client-ids.ts +5 -22
- package/src/documents/hydranium-text-documents.ts +248 -75
- 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 +339 -11
- package/src/langium/document-builder/index.ts +1 -0
- package/src/langium/integration-services.ts +67 -6
- package/src/langium/integrity/integrity-service.ts +116 -2
- 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 +38 -0
- package/src/langium/model-service/model-service.ts +264 -32
- package/src/langium/module.ts +106 -21
- package/src/langium/naming/name-provider.ts +27 -5
- package/src/langium/naming/name-separator-validation.ts +34 -5
- 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/validation/document-validator.ts +537 -11
- package/src/langium/workspace/document-uri-policy.ts +3 -4
- package/src/langium/workspace/file-system-provider.ts +48 -8
- package/src/langium/workspace/hydranium-langium-document-factory.ts +34 -0
- package/src/langium/workspace/hydranium-workspace-manager.ts +30 -1
- package/src/langium/workspace/in-memory-file-system-provider.ts +53 -10
- package/src/langium/workspace/initialize-workspace.ts +35 -5
- package/src/langium/workspace/langium-documents.ts +106 -33
- package/src/langium/workspace/virtual-document.ts +21 -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 +10 -1
- 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/start-language-server.ts +10 -3
- package/src/messages/carriers.ts +78 -0
- package/src/messages/index.ts +36 -0
- package/src/messages/renderer.ts +206 -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/node-file-system-provider.ts +154 -47
- 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 +18 -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 +74 -18
- package/src/testing/node/index.ts +1 -0
- package/src/testing/node/lsp-server-connection.ts +5 -6
- package/src/testing/node/scratch-workspace.ts +9 -4
- 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/stub-ast-document-manager.ts +10 -14
- package/src/testing/stub-document-builder.ts +32 -3
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +7 -6
- 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
|
@@ -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';
|
|
9
|
+
import { type CloseModelArgs, type Tracer, type TransferSavedEvent, type TransferUpdatedEvent, type OpenModelArgs, type SnapshotVersion } from '@hydranium/protocol';
|
|
10
10
|
import { type AstNode, type DocumentBuilder, 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,
|
|
@@ -82,19 +83,19 @@ export interface UpdateInfo {
|
|
|
82
83
|
* twins; the type-system distinction is the generic constraint, and the
|
|
83
84
|
* conversion seam between them is the framework `TransferEncoder`.
|
|
84
85
|
*/
|
|
85
|
-
export interface AstDocument<TAst extends AstNode, TDiagnostic> {
|
|
86
|
+
export interface AstDocument<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> {
|
|
86
87
|
root: TAst;
|
|
87
88
|
diagnostics: TDiagnostic[];
|
|
88
89
|
uri: string;
|
|
89
90
|
/**
|
|
90
91
|
* Text-document version this snapshot was taken at — read from
|
|
91
92
|
* `LangiumDocument.textDocument.version`. Symmetric with
|
|
92
|
-
* `TransferDocument.version` on the wire side: in-process
|
|
93
|
-
*
|
|
94
|
-
* `TransferUpdateArgs.
|
|
95
|
-
*
|
|
93
|
+
* `TransferDocument.version` on the wire side: an in-process caller that
|
|
94
|
+
* holds an `AstDocument` and mutates it sends this straight back as
|
|
95
|
+
* `TransferUpdateArgs.basedOn` / `TransferSaveArgs.basedOn`, and the
|
|
96
|
+
* conflict gate arms on it.
|
|
96
97
|
*/
|
|
97
|
-
version:
|
|
98
|
+
version: SnapshotVersion;
|
|
98
99
|
}
|
|
99
100
|
export declare namespace AstDocument {
|
|
100
101
|
/**
|
|
@@ -103,7 +104,7 @@ export declare namespace AstDocument {
|
|
|
103
104
|
* don't need to repeat the empty array at every call site. Mirrors
|
|
104
105
|
* `TransferDocument.create` on the wire side.
|
|
105
106
|
*/
|
|
106
|
-
function create<TAst extends AstNode, TDiagnostic =
|
|
107
|
+
function create<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(uri: string, version: number, root: TAst, diagnostics?: TDiagnostic[]): AstDocument<TAst, TDiagnostic>;
|
|
107
108
|
/**
|
|
108
109
|
* Project a {@link LangiumDocument} into its {@link AstDocument}
|
|
109
110
|
* envelope — the single place that reads `root` / `diagnostics` /
|
|
@@ -117,15 +118,59 @@ export declare namespace AstDocument {
|
|
|
117
118
|
* carry that identity, not the subscriber's (possibly non-canonical) URI:
|
|
118
119
|
* a subscriber already knows the URI it subscribed with, so the useful
|
|
119
120
|
* thing to surface is the canonical one every other layer keys by.
|
|
121
|
+
*
|
|
122
|
+
* Narrowing `TDiagnostic` below the constraint asserts that the validators
|
|
123
|
+
* in play produce that shape, and nothing here checks it: the build fills the
|
|
124
|
+
* array, so a document carrying a diagnostic from elsewhere — a lexer error,
|
|
125
|
+
* another validator — satisfies the declared type and not the narrowed one.
|
|
120
126
|
*/
|
|
121
|
-
function from<TAst extends AstNode, TDiagnostic =
|
|
127
|
+
function from<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(document: LangiumDocument): AstDocument<TAst, TDiagnostic>;
|
|
122
128
|
}
|
|
123
129
|
/** 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>>;
|
|
130
|
+
export type AstDocumentUpdatedEvent<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> = TransferUpdatedEvent<AstDocument<TAst, TDiagnostic>>;
|
|
125
131
|
/** 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>>;
|
|
132
|
+
export type AstDocumentSavedEvent<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> = TransferSavedEvent<AstDocument<TAst, TDiagnostic>>;
|
|
127
133
|
/** Construction options for {@link AstDocumentManager}. */
|
|
128
134
|
export type AstDocumentManagerOptions = LogNameOptions;
|
|
135
|
+
/**
|
|
136
|
+
* The document slot the model server and the integrity service talk to:
|
|
137
|
+
* open/close/update/save plus the AST-typed event streams, with the LSP
|
|
138
|
+
* plumbing hidden.
|
|
139
|
+
*
|
|
140
|
+
* Generic over `<TAst extends AstNode, TDiagnostic>` so each consumer projects
|
|
141
|
+
* its own AST root type and diagnostic shape into the emitted
|
|
142
|
+
* {@link AstDocument} envelopes.
|
|
143
|
+
*
|
|
144
|
+
* **URI contract.** Every URI-accepting member takes a URI in *any* spelling
|
|
145
|
+
* (canonical, symlinked, `..`/case-divergent) and canonicalizes internally
|
|
146
|
+
* through the {@link DocumentUriPolicy}, so a caller never has to canonicalize
|
|
147
|
+
* first and an implementation may not require it.
|
|
148
|
+
*/
|
|
149
|
+
export interface AstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> {
|
|
150
|
+
open(args: OpenModelArgs): Promise<Disposable>;
|
|
151
|
+
close(args: CloseModelArgs): Promise<void>;
|
|
152
|
+
isOpen(uri: string): boolean;
|
|
153
|
+
/** Apply `text` as `clientId`'s edit. Resolves to the resulting text-document version. */
|
|
154
|
+
update(uri: string, text: string, clientId: string): Promise<number>;
|
|
155
|
+
save(uri: string, clientId: string): Promise<void>;
|
|
156
|
+
onUpdate(uri: string, listener: (event: AstDocumentUpdatedEvent<TAst, TDiagnostic>) => void): Disposable;
|
|
157
|
+
onSave(uri: string, listener: (event: AstDocumentSavedEvent<TAst, TDiagnostic>) => void | Promise<void>): Disposable;
|
|
158
|
+
onClientClosed(uri: string, clientId: string, listener: () => void): Disposable;
|
|
159
|
+
getDocument(uri: string): LangiumDocument | undefined;
|
|
160
|
+
/** Client id that authored the document's current version, or `undefined` for a framework-internal build. */
|
|
161
|
+
getAuthor(document: LangiumDocument): string | undefined;
|
|
162
|
+
/**
|
|
163
|
+
* Whether `uri` is one of the URIs the most recent build request named, as
|
|
164
|
+
* opposed to a document that build swept in as a dependent. Deletions are
|
|
165
|
+
* excluded: they never reach this layer, since a deleted document is
|
|
166
|
+
* removed before the build set is computed.
|
|
167
|
+
*
|
|
168
|
+
* The answer refers to the latest request, which may still be building, and
|
|
169
|
+
* it is retained between builds — so outside a build it describes whichever
|
|
170
|
+
* one ran last.
|
|
171
|
+
*/
|
|
172
|
+
isTriggeringEdit(uri: string): boolean;
|
|
173
|
+
}
|
|
129
174
|
/**
|
|
130
175
|
* Higher-level facade over {@link HydraniumTextDocuments} that speaks the
|
|
131
176
|
* model-server protocol (open/close/update/save with the transfer-model event
|
|
@@ -146,7 +191,7 @@ export type AstDocumentManagerOptions = LogNameOptions;
|
|
|
146
191
|
* resolution (the egress `applyEditToLanguageClient`) stay on
|
|
147
192
|
* {@link HydraniumTextDocuments}, their owner.
|
|
148
193
|
*/
|
|
149
|
-
export declare class
|
|
194
|
+
export declare class DefaultAstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> implements AstDocumentManager<TAst, TDiagnostic> {
|
|
150
195
|
protected readonly services: ServerSharedServices;
|
|
151
196
|
protected lastUpdate?: UpdateInfo;
|
|
152
197
|
protected readonly textDocuments: HydraniumTextDocuments<TextDocument>;
|
|
@@ -195,7 +240,7 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
|
|
|
195
240
|
* concrete value (the `onUpdate` event's `sourceClientId`, the data-server's
|
|
196
241
|
* `resolveSourceClientId`).
|
|
197
242
|
*/
|
|
198
|
-
getAuthor(document: LangiumDocument
|
|
243
|
+
getAuthor(document: LangiumDocument): string | undefined;
|
|
199
244
|
open(args: OpenModelArgs): Promise<Disposable>;
|
|
200
245
|
close(args: CloseModelArgs): Promise<void>;
|
|
201
246
|
/**
|
|
@@ -217,12 +262,27 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
|
|
|
217
262
|
* callers don't need to pass it — the manager owns content and version
|
|
218
263
|
* sequencing.
|
|
219
264
|
*
|
|
265
|
+
* **The write is skipped when the file already holds that text; the
|
|
266
|
+
* notification is not.** A save announces that the content is on disk, which
|
|
267
|
+
* is true either way — so a subscriber clearing a dirty marker or reacting to
|
|
268
|
+
* a persist behaves the same, while an mtime is not moved for byte-identical
|
|
269
|
+
* content that a downstream mtime-keyed build would then read as new work.
|
|
270
|
+
*
|
|
220
271
|
* Throws if no document is open for `uri`.
|
|
221
272
|
*/
|
|
222
273
|
save(uri: string, clientId: string): Promise<void>;
|
|
274
|
+
/**
|
|
275
|
+
* Whether the file at `uri` already holds `text`.
|
|
276
|
+
*
|
|
277
|
+
* Compared by CONTENT rather than against a remembered version, so a write
|
|
278
|
+
* from outside this server is still corrected: a version this manager already
|
|
279
|
+
* saved says nothing about what is on disk now. `false` when the file cannot
|
|
280
|
+
* be read at all, which is the answer that writes — a document whose file does
|
|
281
|
+
* not exist yet is exactly the one a first save has to create.
|
|
282
|
+
*/
|
|
283
|
+
protected matchesDisk(uri: string, text: string): Promise<boolean>;
|
|
223
284
|
isOpen(uri: string): boolean;
|
|
224
|
-
|
|
225
|
-
isDirectChange(uri: string): boolean;
|
|
285
|
+
isTriggeringEdit(uri: string): boolean;
|
|
226
286
|
/**
|
|
227
287
|
* The `LangiumDocument` for an externally-supplied URI, looked up by its
|
|
228
288
|
* canonical identity. Folds the `getDocument(toUri(canonicalUri(uri)))` idiom
|
|
@@ -232,7 +292,6 @@ export declare class AstDocumentManager<TAst extends AstNode = AstNode, TDiagnos
|
|
|
232
292
|
*/
|
|
233
293
|
getDocument(uri: string): LangiumDocument | undefined;
|
|
234
294
|
protected createDocumentFromTextOrFileSystem(uri: string, languageId?: string, version?: number, text?: string): Promise<TextDocumentItem>;
|
|
235
|
-
readFile(uri: string): Promise<string>;
|
|
236
295
|
/**
|
|
237
296
|
* Hook for subclasses that want to re-shape the emitted document (e.g. inject
|
|
238
297
|
* 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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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
+
import { asSnapshotVersion } from '@hydranium/protocol';
|
|
9
10
|
import { DocumentState, UriUtils } from '@hydranium/langium';
|
|
10
11
|
import { Disposable } from 'vscode-languageserver';
|
|
11
12
|
import { TextDocumentIdentifier } from 'vscode-languageserver-protocol';
|
|
@@ -21,7 +22,7 @@ export var AstDocument;
|
|
|
21
22
|
* `TransferDocument.create` on the wire side.
|
|
22
23
|
*/
|
|
23
24
|
function create(uri, version, root, diagnostics = []) {
|
|
24
|
-
return { uri, version, root, diagnostics };
|
|
25
|
+
return { uri, version: asSnapshotVersion(version), root, diagnostics };
|
|
25
26
|
}
|
|
26
27
|
AstDocument.create = create;
|
|
27
28
|
/**
|
|
@@ -37,6 +38,11 @@ export var AstDocument;
|
|
|
37
38
|
* carry that identity, not the subscriber's (possibly non-canonical) URI:
|
|
38
39
|
* a subscriber already knows the URI it subscribed with, so the useful
|
|
39
40
|
* thing to surface is the canonical one every other layer keys by.
|
|
41
|
+
*
|
|
42
|
+
* Narrowing `TDiagnostic` below the constraint asserts that the validators
|
|
43
|
+
* in play produce that shape, and nothing here checks it: the build fills the
|
|
44
|
+
* array, so a document carrying a diagnostic from elsewhere — a lexer error,
|
|
45
|
+
* another validator — satisfies the declared type and not the narrowed one.
|
|
40
46
|
*/
|
|
41
47
|
function from(document) {
|
|
42
48
|
return create(document.textDocument.uri, document.textDocument.version, document.parseResult.value, (document.diagnostics ?? []));
|
|
@@ -63,7 +69,7 @@ export var AstDocument;
|
|
|
63
69
|
* resolution (the egress `applyEditToLanguageClient`) stay on
|
|
64
70
|
* {@link HydraniumTextDocuments}, their owner.
|
|
65
71
|
*/
|
|
66
|
-
export class
|
|
72
|
+
export class DefaultAstDocumentManager {
|
|
67
73
|
services;
|
|
68
74
|
lastUpdate;
|
|
69
75
|
textDocuments;
|
|
@@ -176,11 +182,12 @@ export class AstDocumentManager {
|
|
|
176
182
|
const event = {
|
|
177
183
|
document: this.toAstDocument(document),
|
|
178
184
|
sourceClientId,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
185
|
+
// No `'deleted'` arm: `DocumentBuilder.update` drops a deleted
|
|
186
|
+
// document from `LangiumDocuments` before deriving the rebuild set
|
|
187
|
+
// from it, so a deleted URI is never built and never reaches this
|
|
188
|
+
// phase listener. A subscriber needing deletions has to be told on
|
|
189
|
+
// a channel that does not require a built document.
|
|
190
|
+
reason: this.lastUpdate?.changed.some(changed => UriUtils.equals(changed, document.uri)) ? 'changed' : 'rebuilt'
|
|
184
191
|
};
|
|
185
192
|
this.tracer.with(uri).trace(`emitUpdate start: source=${sourceClientId}, reason=${event.reason}`);
|
|
186
193
|
listener(event);
|
|
@@ -218,11 +225,19 @@ export class AstDocumentManager {
|
|
|
218
225
|
// transiently breaks cross-document linking mid-rebuild (a dependent briefly
|
|
219
226
|
// seeing an `extends`/`type` reference unresolved). And because the constructor
|
|
220
227
|
// wires `onDidOpen -> this.open`, it would fire a second, identical rebuild on
|
|
221
|
-
// every first open.
|
|
228
|
+
// every first open.
|
|
229
|
+
//
|
|
230
|
+
// So an already-open `open()` records the attaching client's hold and nothing
|
|
231
|
+
// else. The hold is per `(uri, clientId)` and the last-close revert counts down
|
|
232
|
+
// to it, so skipping it lets the first holder's close tear down a document
|
|
233
|
+
// another client is still reading.
|
|
222
234
|
if (!this.isOpen(args.uri)) {
|
|
223
235
|
const textDocument = await this.createDocumentFromTextOrFileSystem(args.uri, args.languageId, args.version, args.text);
|
|
224
236
|
this.textDocuments.notifyDidOpenTextDocument({ textDocument }, args.clientId);
|
|
225
237
|
}
|
|
238
|
+
else {
|
|
239
|
+
this.textDocuments.attachClient(args.uri, args.clientId);
|
|
240
|
+
}
|
|
226
241
|
return Disposable.create(() => this.close(args));
|
|
227
242
|
}
|
|
228
243
|
async close(args) {
|
|
@@ -253,24 +268,50 @@ export class AstDocumentManager {
|
|
|
253
268
|
* callers don't need to pass it — the manager owns content and version
|
|
254
269
|
* sequencing.
|
|
255
270
|
*
|
|
271
|
+
* **The write is skipped when the file already holds that text; the
|
|
272
|
+
* notification is not.** A save announces that the content is on disk, which
|
|
273
|
+
* is true either way — so a subscriber clearing a dirty marker or reacting to
|
|
274
|
+
* a persist behaves the same, while an mtime is not moved for byte-identical
|
|
275
|
+
* content that a downstream mtime-keyed build would then read as new work.
|
|
276
|
+
*
|
|
256
277
|
* Throws if no document is open for `uri`.
|
|
257
278
|
*/
|
|
258
279
|
async save(uri, clientId) {
|
|
259
|
-
|
|
280
|
+
// Canonical throughout: the write and the read that gates it must address
|
|
281
|
+
// the same file the store was keyed by, or a divergent spelling compares
|
|
282
|
+
// one file and writes another.
|
|
283
|
+
const canonical = this.uriPolicy.canonicalUri(uri);
|
|
284
|
+
const document = this.textDocuments.get(canonical);
|
|
260
285
|
if (!document) {
|
|
261
286
|
throw new Error(`Document ${uri} hasn't been opened for saving yet`);
|
|
262
287
|
}
|
|
263
288
|
const text = document.getText();
|
|
264
|
-
await this.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
289
|
+
if (!(await this.matchesDisk(canonical, text))) {
|
|
290
|
+
await this.tracer.with(canonical).time(`Write file (${text.length} bytes, from ${clientId})`,
|
|
291
|
+
// Async write so a slow disk does not block the event loop for the duration of the fs call.
|
|
292
|
+
() => this.fileSystemProvider.writeFile(UriUtils.toUri(canonical), text), 'debug');
|
|
293
|
+
}
|
|
294
|
+
this.textDocuments.notifyDidSaveTextDocument({ textDocument: TextDocumentIdentifier.create(canonical), text }, clientId);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Whether the file at `uri` already holds `text`.
|
|
298
|
+
*
|
|
299
|
+
* Compared by CONTENT rather than against a remembered version, so a write
|
|
300
|
+
* from outside this server is still corrected: a version this manager already
|
|
301
|
+
* saved says nothing about what is on disk now. `false` when the file cannot
|
|
302
|
+
* be read at all, which is the answer that writes — a document whose file does
|
|
303
|
+
* not exist yet is exactly the one a first save has to create.
|
|
304
|
+
*/
|
|
305
|
+
async matchesDisk(uri, text) {
|
|
306
|
+
return this.fileSystemProvider
|
|
307
|
+
.readFile(UriUtils.toUri(uri))
|
|
308
|
+
.then(onDisk => onDisk === text)
|
|
309
|
+
.catch(() => false);
|
|
268
310
|
}
|
|
269
311
|
isOpen(uri) {
|
|
270
312
|
return !!this.textDocuments.get(uri);
|
|
271
313
|
}
|
|
272
|
-
|
|
273
|
-
isDirectChange(uri) {
|
|
314
|
+
isTriggeringEdit(uri) {
|
|
274
315
|
const canonical = this.uriPolicy.canonicalUri(uri);
|
|
275
316
|
return this.lastUpdate?.changed.some(changed => this.uriPolicy.canonicalUri(changed) === canonical) ?? false;
|
|
276
317
|
}
|
|
@@ -285,10 +326,7 @@ export class AstDocumentManager {
|
|
|
285
326
|
return this.langiumDocs.getDocument(UriUtils.toUri(this.uriPolicy.canonicalUri(uri)));
|
|
286
327
|
}
|
|
287
328
|
async createDocumentFromTextOrFileSystem(uri, languageId = this.resolveLanguageId(uri), version = 0, text) {
|
|
288
|
-
return { uri, languageId, version, text: text ?? (await this.readFile(uri)) };
|
|
289
|
-
}
|
|
290
|
-
async readFile(uri) {
|
|
291
|
-
return this.fileSystemProvider.readFile(UriUtils.toUri(uri));
|
|
329
|
+
return { uri, languageId, version, text: text ?? (await this.fileSystemProvider.readFile(UriUtils.toUri(uri))) };
|
|
292
330
|
}
|
|
293
331
|
/**
|
|
294
332
|
* Hook for subclasses that want to re-shape the emitted document (e.g. inject
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-document-manager.js","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;
|
|
1
|
+
{"version":3,"file":"ast-document-manager.js","sourceRoot":"","sources":["../../src/documents/ast-document-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,24 +7,10 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* client, and/or a structured-form client. Each kind carries a stable id so
|
|
15
|
-
* the server can route outbound corrections, edits, and notifications to the
|
|
16
|
-
* right transport.
|
|
17
|
-
*/
|
|
18
|
-
/** Identifier for an LSP-text client (Monaco, VS Code, …). */
|
|
19
|
-
export declare const LANGUAGE_CLIENT_ID = "language-client";
|
|
20
|
-
/** Fallback identifier when a document's author is unknown (e.g. cold workspace-init load). */
|
|
21
|
-
export declare const UNKNOWN_CLIENT_ID = "unknown";
|
|
22
|
-
/**
|
|
23
|
-
* Synthetic author id on the `onDocumentUpdated` broadcast a data-server
|
|
24
|
-
* emits after the LAST client closed a document and the framework rebuilt it
|
|
25
|
-
* from its disk content (discarding unsaved in-session edits). Not a real
|
|
26
|
-
* client: it lets consumers distinguish the revert broadcast from
|
|
27
|
-
* client-authored updates.
|
|
10
|
+
* Re-export, because these are WIRE values and the side that has to recognise
|
|
11
|
+
* them is the client. They are defined in `@hydranium/protocol` so a frontend
|
|
12
|
+
* can name them without depending on the server tier; this path stays so
|
|
13
|
+
* server-side code keeps importing them from where it already does.
|
|
28
14
|
*/
|
|
29
|
-
export
|
|
15
|
+
export { FRAMEWORK_CLIENT_IDS, LANGUAGE_CLIENT_ID, REVERT_ON_CLOSE_CLIENT_ID, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
|
|
30
16
|
//# sourceMappingURL=client-ids.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-ids.d.ts","sourceRoot":"","sources":["../../src/documents/client-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF
|
|
1
|
+
{"version":3,"file":"client-ids.d.ts","sourceRoot":"","sources":["../../src/documents/client-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -7,24 +7,10 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* client, and/or a structured-form client. Each kind carries a stable id so
|
|
15
|
-
* the server can route outbound corrections, edits, and notifications to the
|
|
16
|
-
* right transport.
|
|
17
|
-
*/
|
|
18
|
-
/** Identifier for an LSP-text client (Monaco, VS Code, …). */
|
|
19
|
-
export const LANGUAGE_CLIENT_ID = 'language-client';
|
|
20
|
-
/** Fallback identifier when a document's author is unknown (e.g. cold workspace-init load). */
|
|
21
|
-
export const UNKNOWN_CLIENT_ID = 'unknown';
|
|
22
|
-
/**
|
|
23
|
-
* Synthetic author id on the `onDocumentUpdated` broadcast a data-server
|
|
24
|
-
* emits after the LAST client closed a document and the framework rebuilt it
|
|
25
|
-
* from its disk content (discarding unsaved in-session edits). Not a real
|
|
26
|
-
* client: it lets consumers distinguish the revert broadcast from
|
|
27
|
-
* client-authored updates.
|
|
10
|
+
* Re-export, because these are WIRE values and the side that has to recognise
|
|
11
|
+
* them is the client. They are defined in `@hydranium/protocol` so a frontend
|
|
12
|
+
* can name them without depending on the server tier; this path stays so
|
|
13
|
+
* server-side code keeps importing them from where it already does.
|
|
28
14
|
*/
|
|
29
|
-
export
|
|
15
|
+
export { FRAMEWORK_CLIENT_IDS, LANGUAGE_CLIENT_ID, REVERT_ON_CLOSE_CLIENT_ID, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
|
|
30
16
|
//# sourceMappingURL=client-ids.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-ids.js","sourceRoot":"","sources":["../../src/documents/client-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF
|
|
1
|
+
{"version":3,"file":"client-ids.js","sourceRoot":"","sources":["../../src/documents/client-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|