@hydranium/core 1.0.0-next.19 → 1.0.0-next.193
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/lib/documents/ast-document-manager.d.ts +222 -63
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +250 -83
- 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 +523 -101
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +961 -177
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +5 -0
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +5 -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/model-ledger.d.ts +47 -0
- package/lib/documents/model-ledger.d.ts.map +1 -0
- package/lib/documents/model-ledger.js +30 -0
- package/lib/documents/model-ledger.js.map +1 -0
- 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/documents/version-sync-service.d.ts +134 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +171 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- 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-extension-service.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.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 +32 -9
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.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/config/settings.js.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +10 -3
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +12 -5
- package/lib/langium/diagnostics/logger.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 +56 -13
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
- package/lib/langium/diagnostics/server-tracer.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 +382 -29
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +659 -61
- 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/documentation/comment-provider.d.ts.map +1 -1
- package/lib/langium/documentation/comment-provider.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 +58 -13
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +204 -29
- 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/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-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 +330 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +418 -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 +353 -253
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +361 -408
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +150 -35
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +50 -35
- 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/project/single-project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.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 +23 -57
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.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/scope/reference-builder.d.ts.map +1 -1
- package/lib/langium/scope/reference-builder.js.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.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/serialization/json-serializer.d.ts +1 -1
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/json-serializer.js.map +1 -1
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/yaml-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 +21 -4
- 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 +75 -23
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +44 -21
- 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/normalize-empty-strings.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
- 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/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.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 +56 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +81 -8
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
- 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/index-manager.d.ts.map +1 -1
- package/lib/langium/workspace/index-manager.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 +86 -17
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +101 -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 +20 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +12 -4
- 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 +153 -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/event-loop-monitor.js.map +1 -1
- 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/lint-grammar.js.map +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/memory-monitor.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/process-memory.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/profile-digest.js.map +1 -1
- package/lib/node/profiling-run.d.ts +13 -3
- package/lib/node/profiling-run.d.ts.map +1 -1
- package/lib/node/profiling-run.js +17 -8
- 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/document-uri-policy-conformance.js.map +1 -1
- package/lib/testing/fake-description.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/index.d.ts +1 -1
- package/lib/testing/index.d.ts.map +1 -1
- package/lib/testing/index.js +2 -1
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/langium-test-helpers.d.ts.map +1 -1
- package/lib/testing/langium-test-helpers.js +1 -0
- package/lib/testing/langium-test-helpers.js.map +1 -1
- package/lib/testing/make-noop-language-services.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 +69 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +39 -10
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/make-test-tracer.js.map +1 -1
- package/lib/testing/node/golden-corpus.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/browser-capture-bridge.js.map +1 -1
- package/lib/testing/playwright/e2e-profiling.js.map +1 -1
- 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 +24 -8
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +27 -6
- 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 +11 -9
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +25 -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 +97 -15
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
- package/lib/testing/stub-index-manager.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/testing/stub-project-manager.js.map +1 -1
- package/lib/testing/stub-service-registry.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/lib/util/environment.d.ts.map +1 -1
- package/lib/util/environment.js.map +1 -1
- package/lib/util/registry.d.ts.map +1 -1
- package/package.json +35 -26
- package/src/documents/ast-document-manager.ts +395 -126
- 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 +1175 -225
- package/src/documents/index.ts +5 -0
- package/src/documents/language-client-text-shadow.ts +59 -11
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/self-save-registry.ts +52 -13
- package/src/documents/version-sync-service.ts +267 -0
- package/src/index.ts +6 -0
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +32 -9
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/logger.ts +12 -5
- package/src/langium/diagnostics/lsp-logger.ts +58 -12
- 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 +776 -59
- 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 +220 -30
- 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 +649 -0
- package/src/langium/model-service/index.ts +1 -0
- package/src/langium/model-service/model-service.ts +570 -433
- package/src/langium/module.ts +201 -64
- 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 +46 -15
- 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 +25 -4
- package/src/langium/transfer/transfer-encoder.ts +102 -34
- 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 +117 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +153 -13
- 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 +124 -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 +24 -11
- 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 +185 -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 +30 -8
- 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/index.ts +2 -1
- package/src/testing/langium-test-helpers.ts +1 -0
- package/src/testing/make-noop-shared-services.ts +50 -2
- package/src/testing/make-test-services.ts +120 -31
- 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 +45 -11
- 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 +40 -23
- package/src/testing/stub-document-builder.ts +83 -17
- package/src/testing/stub-hydranium-text-documents.ts +133 -23
- 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/src/util/environment.ts +9 -1
- 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,13 +6,20 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { type Clock, type Logger, type Project, type Tracer, type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
|
|
9
|
+
import { type Clock, type Locale, type Logger, type Project, type Tracer, type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
|
|
10
|
+
import { type ServerLocale } from '../locale/server-locale.js';
|
|
11
|
+
import { type MessageRenderer } from '../messages/renderer.js';
|
|
10
12
|
import type { Harness } from '@hydranium/protocol/testing';
|
|
11
13
|
import { type AstNode, type AstNodeDescription, type WorkspaceLock } from '@hydranium/langium';
|
|
14
|
+
import { type ClientSessionFactory, type ClientSessionFactoryOptions } from '../langium/model-service/client-session.js';
|
|
12
15
|
import type { ModelService, ModelServiceOptions } from '../langium/model-service/model-service.js';
|
|
13
16
|
import type { ServerSharedServices } from '../langium/module.js';
|
|
14
|
-
import {
|
|
17
|
+
import type { AstDiagnostic } from '../langium/validation/document-validator.js';
|
|
18
|
+
import { type TransferEncoder } from '../langium/transfer/transfer-encoder.js';
|
|
15
19
|
import { type DocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
|
|
20
|
+
import { type FileSystemTaskQueue } from '../documents/file-system-task-queue.js';
|
|
21
|
+
import { type ModelLedger } from '../documents/model-ledger.js';
|
|
22
|
+
import { type VersionSyncService } from '../documents/version-sync-service.js';
|
|
16
23
|
import type { FakeDocumentOptions } from './fake-document.js';
|
|
17
24
|
import { type StubDocumentBuilder } from './stub-document-builder.js';
|
|
18
25
|
import { type StubIndexManager } from './stub-index-manager.js';
|
|
@@ -32,8 +39,16 @@ import { type StubWritableFileSystem } from './stub-writable-file-system.js';
|
|
|
32
39
|
* to `ServerSharedServices` in {@link makeTestServices} is therefore the
|
|
33
40
|
* single named place where the "stub stands in for the full service tree"
|
|
34
41
|
* assertion happens.
|
|
42
|
+
*
|
|
43
|
+
* **`TDiagnostic` and `TTransferDiagnostic` are the two ends of a conversion
|
|
44
|
+
* and must stay separate.** The first is what the build left on
|
|
45
|
+
* `LangiumDocument.diagnostics` and what `ModelService` hands back on an
|
|
46
|
+
* `AstDocument`; the second is what `TransferEncoder.toTransferDiagnostic`
|
|
47
|
+
* produces for the wire. One parameter serving both makes the tree
|
|
48
|
+
* unbindable for an adopter who extends either shape, since extending one
|
|
49
|
+
* says nothing about the other.
|
|
35
50
|
*/
|
|
36
|
-
export interface TestSharedServices<TAst extends AstNode = AstNode, TDiagnostic extends
|
|
51
|
+
export interface TestSharedServices<TAst extends AstNode = AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project, TTransferDiagnostic extends TransferDiagnostic = TransferDiagnostic> {
|
|
37
52
|
readonly Clock: Clock;
|
|
38
53
|
readonly Logger: Logger;
|
|
39
54
|
readonly Tracer: Tracer;
|
|
@@ -53,6 +68,8 @@ export interface TestSharedServices<TAst extends AstNode = AstNode, TDiagnostic
|
|
|
53
68
|
SelfSaveRegistry: StubSelfSaveRegistry;
|
|
54
69
|
ProjectManager: StubProjectManager<TProject>;
|
|
55
70
|
DocumentUriPolicy: DocumentUriPolicy;
|
|
71
|
+
/** The REAL queue: a stub that runs each task at once hides the save interleaving the queue exists to prevent. */
|
|
72
|
+
FileSystemTaskQueue: FileSystemTaskQueue;
|
|
56
73
|
/**
|
|
57
74
|
* Present only when {@link MakeTestServicesOptions.seedIndex} was passed.
|
|
58
75
|
* Omitted otherwise for the same reason as `ServiceRegistry` — see that
|
|
@@ -69,14 +86,28 @@ export interface TestSharedServices<TAst extends AstNode = AstNode, TDiagnostic
|
|
|
69
86
|
* through this tree and let a reentrant write pass unnoticed.
|
|
70
87
|
*/
|
|
71
88
|
WorkspaceLock: WorkspaceLock;
|
|
89
|
+
/** The REAL ledger: it is a weak map with no dependencies. */
|
|
90
|
+
ModelLedger: ModelLedger;
|
|
91
|
+
/** The REAL service, over this tree's stubs; it reconciles nothing against the stub store. */
|
|
92
|
+
VersionSyncService: VersionSyncService;
|
|
72
93
|
};
|
|
73
94
|
readonly model: {
|
|
74
|
-
TransferEncoder: TransferEncoder<
|
|
95
|
+
TransferEncoder: TransferEncoder<TTransferDiagnostic>;
|
|
75
96
|
ModelService: ModelService<TAst, TDiagnostic, TTransfer>;
|
|
97
|
+
ClientSessionFactory: ClientSessionFactory;
|
|
76
98
|
};
|
|
99
|
+
/**
|
|
100
|
+
* The REAL services, not stubs — the framework renderer's no-catalogue
|
|
101
|
+
* behaviour is a pass-through, so the stub tree agrees with a production one
|
|
102
|
+
* unless a test installs a catalogue. Bound rather than omitted because
|
|
103
|
+
* `HydraniumDocumentBuilder` renders through the renderer on every
|
|
104
|
+
* `Validated` phase, where an omitted slot is a `TypeError`.
|
|
105
|
+
*/
|
|
106
|
+
readonly ServerLocale: ServerLocale;
|
|
107
|
+
readonly MessageRenderer: MessageRenderer;
|
|
77
108
|
}
|
|
78
109
|
/** Optional configuration for {@link makeTestServices}. */
|
|
79
|
-
export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagnostic extends
|
|
110
|
+
export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project, TTransferDiagnostic extends TransferDiagnostic = TransferDiagnostic> {
|
|
80
111
|
/**
|
|
81
112
|
* Serialiser used by the bundled `StubModelService`. The stub tree
|
|
82
113
|
* routes no per-language `Serializer` (the stub languages bind no-op slots),
|
|
@@ -87,6 +118,14 @@ export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagno
|
|
|
87
118
|
* for tests that don't assert on the produced text.
|
|
88
119
|
*/
|
|
89
120
|
serialize?: (uri: string, root: TTransfer) => string;
|
|
121
|
+
/**
|
|
122
|
+
* Renderer bound on `MessageRenderer`. Default: the framework's own, which
|
|
123
|
+
* passes every sentence through unchanged. Supply one to install a catalogue
|
|
124
|
+
* or to drive the throwing path.
|
|
125
|
+
*/
|
|
126
|
+
messageRenderer?: (services: ServerSharedServices<TProject>) => MessageRenderer;
|
|
127
|
+
/** Locale handed to the bundle's {@link ServerLocale}. Default: none, i.e. the framework's English. */
|
|
128
|
+
locale?: Locale;
|
|
90
129
|
/**
|
|
91
130
|
* Languages to register on a {@link StubServiceRegistry} bound on the
|
|
92
131
|
* `ServiceRegistry` slot. This is how a test gets multi-language routing:
|
|
@@ -95,7 +134,7 @@ export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagno
|
|
|
95
134
|
*
|
|
96
135
|
* **Default: no `ServiceRegistry` slot at all.** Binding an empty registry
|
|
97
136
|
* by default would silently change behaviour for the tests that rely on the
|
|
98
|
-
* slot being absent — `ModelService.
|
|
137
|
+
* slot being absent — `ModelService.rewriteModel` optional-chains it
|
|
99
138
|
* precisely for those bundles — so a registry appears only when a test asks
|
|
100
139
|
* for one.
|
|
101
140
|
*/
|
|
@@ -153,16 +192,23 @@ export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagno
|
|
|
153
192
|
modelService?: (services: ServerSharedServices<TProject>) => ModelService<TAst, TDiagnostic, TTransfer>;
|
|
154
193
|
/**
|
|
155
194
|
* Framework {@link ModelServiceOptions} for the DEFAULT stub service, so a
|
|
156
|
-
* test can reach an option-gated path (`
|
|
157
|
-
*
|
|
158
|
-
*
|
|
195
|
+
* test can reach an option-gated path (`allowReentrantBuilds`) without supplying
|
|
196
|
+
* a whole {@link modelService} factory. Ignored when `modelService` is
|
|
197
|
+
* given — that factory owns its own construction.
|
|
159
198
|
*/
|
|
160
199
|
modelServiceOptions?: ModelServiceOptions;
|
|
200
|
+
/**
|
|
201
|
+
* Options of the {@link DefaultClientSessionFactory} bound on
|
|
202
|
+
* `model.ClientSessionFactory`, so a test can reach the slow-update warn.
|
|
203
|
+
* Its sessions serialise and rebuild through the `model.ModelService` slot,
|
|
204
|
+
* so a test of a model service subclass passes it as {@link modelService}.
|
|
205
|
+
*/
|
|
206
|
+
clientSessionFactoryOptions?: ClientSessionFactoryOptions;
|
|
161
207
|
/**
|
|
162
208
|
* Override the {@link TransferEncoder} factory. Default: framework
|
|
163
209
|
* {@link TransferEncoder} with no overrides.
|
|
164
210
|
*/
|
|
165
|
-
transferEncoder?: (services: ServerSharedServices<TProject>) => TransferEncoder<
|
|
211
|
+
transferEncoder?: (services: ServerSharedServices<TProject, TTransferDiagnostic>) => TransferEncoder<TTransferDiagnostic>;
|
|
166
212
|
}
|
|
167
213
|
/**
|
|
168
214
|
* Bundle returned by {@link makeTestServices}. Exposes the assembled
|
|
@@ -177,8 +223,8 @@ export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagno
|
|
|
177
223
|
* uniform teardown hook (a no-op: the stubs hold only in-memory state,
|
|
178
224
|
* released with the bundle when it goes out of scope).
|
|
179
225
|
*/
|
|
180
|
-
export interface TestServicesBundle<TAst extends AstNode = AstNode, TDiagnostic extends
|
|
181
|
-
readonly services: ServerSharedServices<TProject>;
|
|
226
|
+
export interface TestServicesBundle<TAst extends AstNode = AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project, TTransferDiagnostic extends TransferDiagnostic = TransferDiagnostic> extends Harness {
|
|
227
|
+
readonly services: ServerSharedServices<TProject, TTransferDiagnostic>;
|
|
182
228
|
readonly documents: StubLangiumDocuments<TAst, TDiagnostic>;
|
|
183
229
|
readonly textDocuments: StubHydraniumTextDocuments;
|
|
184
230
|
readonly astDocumentManager: StubAstDocumentManager<TAst, TDiagnostic>;
|
|
@@ -187,6 +233,7 @@ export interface TestServicesBundle<TAst extends AstNode = AstNode, TDiagnostic
|
|
|
187
233
|
readonly selfSaveRegistry: StubSelfSaveRegistry;
|
|
188
234
|
readonly projectManager: StubProjectManager<TProject>;
|
|
189
235
|
readonly documentUriPolicy: DocumentUriPolicy;
|
|
236
|
+
readonly modelLedger: ModelLedger;
|
|
190
237
|
/**
|
|
191
238
|
* The registry bound on the `ServiceRegistry` slot, or `undefined` when no
|
|
192
239
|
* {@link MakeTestServicesOptions.languages} were declared.
|
|
@@ -198,10 +245,18 @@ export interface TestServicesBundle<TAst extends AstNode = AstNode, TDiagnostic
|
|
|
198
245
|
*/
|
|
199
246
|
readonly indexManager: StubIndexManager | undefined;
|
|
200
247
|
readonly modelService: ModelService<TAst, TDiagnostic, TTransfer>;
|
|
201
|
-
readonly transferEncoder: TransferEncoder<
|
|
248
|
+
readonly transferEncoder: TransferEncoder<TTransferDiagnostic>;
|
|
202
249
|
readonly logger: Logger;
|
|
203
250
|
/** The clock bound on the `Clock` slot — a `makeFakeClock()` if one was passed. */
|
|
204
251
|
readonly clock: Clock;
|
|
252
|
+
/**
|
|
253
|
+
* The service bound on `ServerLocale`, so a test can hand over a locale
|
|
254
|
+
* mid-run — which is also how it verifies the renderer reads the locale per
|
|
255
|
+
* render rather than caching it at construction.
|
|
256
|
+
*/
|
|
257
|
+
readonly serverLocale: ServerLocale;
|
|
258
|
+
/** The renderer bound on `MessageRenderer` — the framework's own unless one was supplied. */
|
|
259
|
+
readonly messageRenderer: MessageRenderer;
|
|
205
260
|
}
|
|
206
261
|
/**
|
|
207
262
|
* Build a {@link ServerSharedServices} tree backed by the framework's
|
|
@@ -213,5 +268,5 @@ export interface TestServicesBundle<TAst extends AstNode = AstNode, TDiagnostic
|
|
|
213
268
|
* computation, etc.) should keep using `bootstrapLangium(...)` rather than
|
|
214
269
|
* this bundle.
|
|
215
270
|
*/
|
|
216
|
-
export declare function makeTestServices<TAst extends AstNode = AstNode, TDiagnostic extends
|
|
271
|
+
export declare function makeTestServices<TAst extends AstNode = AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project, TTransferDiagnostic extends TransferDiagnostic = TransferDiagnostic>(options?: MakeTestServicesOptions<TAst, TDiagnostic, TTransfer, TProject, TTransferDiagnostic>): TestServicesBundle<TAst, TDiagnostic, TTransfer, TProject, TTransferDiagnostic>;
|
|
217
272
|
//# sourceMappingURL=make-test-services.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-test-services.d.ts","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,KAAK,EAEV,KAAK,MAAM,EAEX,KAAK,OAAO,EAEZ,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"make-test-services.d.ts","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,15 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { DefaultTracer, NoopLogger, SystemClock } from '@hydranium/protocol';
|
|
10
|
-
import {
|
|
10
|
+
import { DefaultServerLocale } from '../locale/server-locale.js';
|
|
11
|
+
import { DefaultMessageRenderer } from '../messages/renderer.js';
|
|
12
|
+
import { DefaultClientSessionFactory } from '../langium/model-service/client-session.js';
|
|
13
|
+
import { DefaultTransferEncoder } from '../langium/transfer/transfer-encoder.js';
|
|
11
14
|
import { DefaultDocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
|
|
12
15
|
import { HydraniumWorkspaceLock } from '../langium/workspace/hydranium-workspace-lock.js';
|
|
16
|
+
import { DefaultFileSystemTaskQueue } from '../documents/file-system-task-queue.js';
|
|
17
|
+
import { DefaultModelLedger } from '../documents/model-ledger.js';
|
|
18
|
+
import { DefaultVersionSyncService } from '../documents/version-sync-service.js';
|
|
13
19
|
import { makeStubDocumentBuilder } from './stub-document-builder.js';
|
|
14
20
|
import { makeStubIndexManager } from './stub-index-manager.js';
|
|
15
21
|
import { makeStubLangiumDocuments } from './stub-langium-documents.js';
|
|
@@ -33,14 +39,16 @@ import { makeStubWritableFileSystem } from './stub-writable-file-system.js';
|
|
|
33
39
|
export function makeTestServices(options = {}) {
|
|
34
40
|
const documents = makeStubLangiumDocuments(options.seedDocuments);
|
|
35
41
|
const textDocuments = makeStubHydraniumTextDocuments();
|
|
36
|
-
const documentBuilder = makeStubDocumentBuilder();
|
|
37
|
-
const selfSaveRegistry = makeStubSelfSaveRegistry();
|
|
38
|
-
const fileSystem = makeStubWritableFileSystem(selfSaveRegistry);
|
|
39
|
-
const projectManager = makeStubProjectManager(options.seedProjects);
|
|
40
|
-
const astDocumentManager = makeStubAstDocumentManager(textDocuments, fileSystem, documents);
|
|
41
42
|
const logger = options.logger ?? new NoopLogger();
|
|
42
43
|
const clock = options.clock ?? new SystemClock();
|
|
43
44
|
const tracer = new DefaultTracer(logger, clock);
|
|
45
|
+
const workspaceLock = new HydraniumWorkspaceLock({ Clock: clock, Tracer: tracer });
|
|
46
|
+
const documentBuilder = makeStubDocumentBuilder(workspaceLock);
|
|
47
|
+
const selfSaveRegistry = makeStubSelfSaveRegistry();
|
|
48
|
+
const fileSystem = makeStubWritableFileSystem(selfSaveRegistry);
|
|
49
|
+
const projectManager = makeStubProjectManager(options.seedProjects);
|
|
50
|
+
const modelLedger = new DefaultModelLedger();
|
|
51
|
+
const astDocumentManager = makeStubAstDocumentManager(textDocuments, fileSystem, documents, modelLedger);
|
|
44
52
|
const documentUriPolicy = options.documentUriPolicy ?? new DefaultDocumentUriPolicy();
|
|
45
53
|
const serviceRegistry = options.languages
|
|
46
54
|
? makeStubServiceRegistry(options.languages, { openLanguageIds: options.openLanguageIds })
|
|
@@ -62,7 +70,7 @@ export function makeTestServices(options = {}) {
|
|
|
62
70
|
// is dependency-free (as `HydraniumWorkspaceLock` is) — a no-op stub of a
|
|
63
71
|
// synchronisation primitive hides the very interleaving it exists to prevent.
|
|
64
72
|
//
|
|
65
|
-
// `model
|
|
73
|
+
// The `model` slots are populated below
|
|
66
74
|
// (after the factories run); the literal uses unsafe casts to
|
|
67
75
|
// partially-built objects to satisfy TestSharedServices, then patches
|
|
68
76
|
// them in.
|
|
@@ -86,21 +94,39 @@ export function makeTestServices(options = {}) {
|
|
|
86
94
|
// Spread for the same reason as `ServiceRegistry` above — the slot must
|
|
87
95
|
// be genuinely ABSENT, not present-and-undefined, when no index was seeded.
|
|
88
96
|
...(indexManager ? { IndexManager: indexManager } : {}),
|
|
89
|
-
WorkspaceLock:
|
|
97
|
+
WorkspaceLock: workspaceLock,
|
|
98
|
+
FileSystemTaskQueue: new DefaultFileSystemTaskQueue({ workspace: { DocumentUriPolicy: documentUriPolicy } }),
|
|
99
|
+
ModelLedger: modelLedger,
|
|
100
|
+
// Patched in below: it reads the tree it belongs to.
|
|
101
|
+
VersionSyncService: {}
|
|
90
102
|
},
|
|
91
|
-
model: {}
|
|
103
|
+
model: {},
|
|
104
|
+
ServerLocale: {},
|
|
105
|
+
MessageRenderer: {}
|
|
92
106
|
};
|
|
93
107
|
const sharedServices = services;
|
|
108
|
+
// Patched in after the literal, like `model` below: both read the tree they
|
|
109
|
+
// belong to, and the renderer reads the locale service.
|
|
110
|
+
services.workspace.VersionSyncService = new DefaultVersionSyncService(sharedServices);
|
|
111
|
+
const mutableMessages = services;
|
|
112
|
+
const serverLocale = new DefaultServerLocale(sharedServices);
|
|
113
|
+
if (options.locale) {
|
|
114
|
+
serverLocale.accept(options.locale);
|
|
115
|
+
}
|
|
116
|
+
mutableMessages.ServerLocale = serverLocale;
|
|
117
|
+
const messageRenderer = options.messageRenderer?.(sharedServices) ?? new DefaultMessageRenderer(sharedServices);
|
|
118
|
+
mutableMessages.MessageRenderer = messageRenderer;
|
|
94
119
|
const serialize = options.serialize ?? ((_uri, root) => JSON.stringify(root));
|
|
95
120
|
const transferEncoder = options.transferEncoder
|
|
96
121
|
? options.transferEncoder(sharedServices)
|
|
97
|
-
: new
|
|
122
|
+
: new DefaultTransferEncoder(sharedServices);
|
|
98
123
|
const modelService = options.modelService
|
|
99
124
|
? options.modelService(sharedServices)
|
|
100
125
|
: makeStubModelService(sharedServices, serialize, options.modelServiceOptions);
|
|
101
126
|
const mutableModel = services.model;
|
|
102
127
|
mutableModel.TransferEncoder = transferEncoder;
|
|
103
128
|
mutableModel.ModelService = modelService;
|
|
129
|
+
mutableModel.ClientSessionFactory = new DefaultClientSessionFactory(sharedServices, options.clientSessionFactoryOptions);
|
|
104
130
|
return {
|
|
105
131
|
services: sharedServices,
|
|
106
132
|
documents,
|
|
@@ -111,12 +137,15 @@ export function makeTestServices(options = {}) {
|
|
|
111
137
|
selfSaveRegistry,
|
|
112
138
|
projectManager,
|
|
113
139
|
documentUriPolicy,
|
|
140
|
+
modelLedger,
|
|
114
141
|
serviceRegistry,
|
|
115
142
|
indexManager,
|
|
116
143
|
modelService,
|
|
117
144
|
transferEncoder,
|
|
118
145
|
logger,
|
|
119
146
|
clock,
|
|
147
|
+
serverLocale,
|
|
148
|
+
messageRenderer,
|
|
120
149
|
dispose: () => {
|
|
121
150
|
// No-op: the bundled stubs hold only in-memory state (maps, arrays),
|
|
122
151
|
// released with the bundle when it goes out of scope. The hook exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-test-services.js","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAEJ,aAAa,
|
|
1
|
+
{"version":3,"file":"make-test-services.js","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-test-tracer.js","sourceRoot":"","sources":["../../src/testing/make-test-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAc,aAAa,EAA8B,UAAU,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAElI;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAC3B,OAAO,IAAI,UAAU,EAAE,CAAC;AAC3B,CAAC;AAeD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IAChC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,SAAU,SAAQ,UAAU;QACZ,IAAI,CAAC,KAAe,EAAE,MAAc,EAAE,OAAe;YACrE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC;QACkB,MAAM,CAAC,SAAiB;YACxC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAS,CAAC;QAC3C,CAAC;KACH;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"make-test-tracer.js","sourceRoot":"","sources":["../../src/testing/make-test-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAc,aAAa,EAA8B,UAAU,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAElI;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAC3B,OAAO,IAAI,UAAU,EAAE,CAAC;AAC3B,CAAC;AAeD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IAChC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,SAAU,SAAQ,UAAU;QACZ,IAAI,CAAC,KAAe,EAAE,MAAc,EAAE,OAAe;YACrE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC;QACkB,MAAM,CAAC,SAAiB;YACxC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAS,CAAC;QAC3C,CAAC;KACH;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAK,GAAU,IAAI,WAAW,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"golden-corpus.js","sourceRoot":"","sources":["../../../src/testing/node/golden-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgC3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"golden-corpus.js","sourceRoot":"","sources":["../../../src/testing/node/golden-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgC3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,OAAO,GAA4B,EAAE;IACtF,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC/B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC1E,GAAG,CAAC,KAAK,CAAC,EAAE;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO;YACJ,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;YAC5E,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,IAAI;YACJ,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;SAClC,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAC;QAC5F,MAAM,IAAI,KAAK,CACZ,oBAAoB,SAAS,YAAY,QAAQ,CAAC,MAAM,oBAAoB,MAAM,uBAAuB,OAAO,IAAI;YACjH,gHAAgH,CACrH,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-harness.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAC5H,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,GAAG,qBAAqB,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,+BAA+B,GAAG,uBAAuB,CAAC;AAE9F,wEAAwE;AACxE,MAAM,WAAW,+BAA+B;IAC7C;;;;OAIG;IACH,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,wBAAwB,CAAC;CACvE;AAED,0FAA0F;AAC1F,MAAM,WAAW,uBAAuB;IACrC;;;;OAIG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,wBAAwB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG;IACtE,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG,CAAC;AA8BF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"lsp-harness.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAC5H,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,GAAG,qBAAqB,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,+BAA+B,GAAG,uBAAuB,CAAC;AAE9F,wEAAwE;AACxE,MAAM,WAAW,+BAA+B;IAC7C;;;;OAIG;IACH,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,wBAAwB,CAAC;CACvE;AAED,0FAA0F;AAC1F,MAAM,WAAW,uBAAuB;IACrC;;;;OAIG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,wBAAwB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG;IACtE,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG,CAAC;AA8BF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,UAAU,CAyDzE"}
|
|
@@ -104,12 +104,14 @@ export function makeLspHarness(options) {
|
|
|
104
104
|
},
|
|
105
105
|
shutdown: transport.shutdown,
|
|
106
106
|
openDocument: transport.openDocument,
|
|
107
|
+
closeDocument: transport.closeDocument,
|
|
107
108
|
changeDocument: transport.changeDocument,
|
|
108
109
|
completion: transport.completion,
|
|
109
110
|
hover: transport.hover,
|
|
110
111
|
semanticTokens: transport.semanticTokens,
|
|
111
112
|
nextDiagnostics: transport.nextDiagnostics,
|
|
112
113
|
appliedEdits: transport.appliedEdits,
|
|
114
|
+
wireBytes: transport.wireBytes,
|
|
113
115
|
nextAppliedEdit: transport.nextAppliedEdit,
|
|
114
116
|
setApplyEditHandler: transport.setApplyEditHandler,
|
|
115
117
|
buildWorkspace: folders => buildWorkspaceProgrammatically(services, folders),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-harness.js","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAA6B,MAAM,iDAAiD,CAAC;AAE5H,OAAO,EAAE,uBAAuB,EAA4B,MAAM,4BAA4B,CAAC;AA2G/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,0BAA0B,CAAC,QAAkC;IACzE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC1D,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjH,0EAA0E;IAC1E,yBAAyB;IACzB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9B,OAAO;QACJ,QAAQ;QACR,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,UAAU,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;QAClD,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC5E,OAAO,EAAE,SAAS,CAAC,OAAO;KAC5B,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"lsp-harness.js","sourceRoot":"","sources":["../../../src/testing/node/lsp-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAA6B,MAAM,iDAAiD,CAAC;AAE5H,OAAO,EAAE,uBAAuB,EAA4B,MAAM,4BAA4B,CAAC;AA2G/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,0BAA0B,CAAC,QAAkC;IACzE,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC1D,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjH,0EAA0E;IAC1E,yBAAyB;IACzB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9B,OAAO;QACJ,QAAQ;QACR,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,UAAU,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;QAClD,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC5E,OAAO,EAAE,SAAS,CAAC,OAAO;KAC5B,CAAC;AACL,CAAC"}
|
|
@@ -76,8 +76,8 @@ export interface NextAppliedEditOptions {
|
|
|
76
76
|
readonly match?: (edit: AppliedEdit) => boolean;
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
* The in-process LSP transport seam — a real `Connection` over
|
|
80
|
-
*
|
|
79
|
+
* The in-process LSP transport seam — a real `Connection` over a crossed pair
|
|
80
|
+
* of in-memory streams, plus the client side, the diagnostics capture,
|
|
81
81
|
* and the typed request facades — with NO services attached. It is the lower
|
|
82
82
|
* half of `makeLspHarness`, factored out so a caller can OWN the services
|
|
83
83
|
* tree: build the tree around {@link serverConnection} (`createXxxServices({
|
|
@@ -132,6 +132,12 @@ export interface LspServerConnection extends Harness {
|
|
|
132
132
|
* unhandled method.
|
|
133
133
|
*/
|
|
134
134
|
readonly appliedEdits: ReadonlyArray<AppliedEdit>;
|
|
135
|
+
/** Bytes written in each direction of the in-process JSON-RPC wire. */
|
|
136
|
+
readonly wireBytes: () => {
|
|
137
|
+
readonly clientToServer: number;
|
|
138
|
+
readonly serverToClient: number;
|
|
139
|
+
readonly total: number;
|
|
140
|
+
};
|
|
135
141
|
/**
|
|
136
142
|
* Drive the real LSP `initialize` → `initialized` handshake and return the
|
|
137
143
|
* `InitializeResult`. Defaults to no workspace folders (no async
|
|
@@ -151,6 +157,8 @@ export interface LspServerConnection extends Harness {
|
|
|
151
157
|
* associates with a language (silent no-diagnostics). `version` defaults to 1.
|
|
152
158
|
*/
|
|
153
159
|
openDocument(uri: string, text: string, languageId: string, version?: number): void;
|
|
160
|
+
/** Send `textDocument/didClose` for a document opened through this harness. */
|
|
161
|
+
closeDocument(uri: string): Promise<void>;
|
|
154
162
|
/** Send `textDocument/didChange` for `uri` as a single full-text replacement at `version`. */
|
|
155
163
|
changeDocument(uri: string, text: string, version: number): void;
|
|
156
164
|
/**
|
|
@@ -194,7 +202,7 @@ export interface LspServerConnection extends Harness {
|
|
|
194
202
|
*
|
|
195
203
|
* **An egress push is asynchronous well past the call that triggers it** —
|
|
196
204
|
* the framework coalesces per URI and drives the sync from a build-phase
|
|
197
|
-
* settle, so a `
|
|
205
|
+
* settle, so a session's `update` resolves long before the push is sent.
|
|
198
206
|
* Record `appliedEdits.length`, drive the edit, then await this; reading the
|
|
199
207
|
* capture on the line after the write proves nothing.
|
|
200
208
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-server-connection.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-server-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-server-connection.d.ts","sourceRoot":"","sources":["../../../src/testing/node/lsp-server-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,17 +6,16 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import {
|
|
9
|
+
import { PassThrough } from 'node:stream';
|
|
10
10
|
import { StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node';
|
|
11
11
|
import { ProposedFeatures } from 'vscode-languageserver/node';
|
|
12
|
+
import { withHydraniumLspFeatures } from '../../lsp/connection-features.js';
|
|
12
13
|
// The node `createConnection` from `vscode-languageserver/node` is built for a
|
|
13
14
|
// standalone server PROCESS: it wires `process.exit()` onto the input stream's
|
|
14
15
|
// `end`/`close` events, onto the `exit` notification (via its watchDog), and onto
|
|
15
|
-
// a parent-pid liveness timer
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
// stream (an uncatchable synchronous `ERR_STREAM_DESTROYED`) and/or exits the host
|
|
19
|
-
// test runner. The lower-level common `createConnection(connectionFactory,
|
|
16
|
+
// a parent-pid liveness timer. In-process every one of those is fatal —
|
|
17
|
+
// destroying the streams at teardown trips the `close` handler, which exits the
|
|
18
|
+
// host test runner. The lower-level common `createConnection(connectionFactory,
|
|
20
19
|
// watchDog, features)` form does none of that: it lets us inject a no-op-`exit`
|
|
21
20
|
// WatchDog and build the connection over the in-memory streams, so teardown is the
|
|
22
21
|
// primitive's responsibility alone.
|
|
@@ -24,7 +23,7 @@ import { ProposedFeatures } from 'vscode-languageserver/node';
|
|
|
24
23
|
// the `lib/common/server.js` deep path is unreachable under the exports-only
|
|
25
24
|
// package map the LSP 3.18 libs ship.)
|
|
26
25
|
import { createConnection } from 'vscode-languageserver';
|
|
27
|
-
import { ApplyWorkspaceEditRequest, CompletionRequest, DidChangeTextDocumentNotification, DidOpenTextDocumentNotification, HoverRequest, InitializeRequest, InitializedNotification, PublishDiagnosticsNotification, SemanticTokensRequest, ShutdownRequest, createProtocolConnection } from 'vscode-languageserver-protocol/node';
|
|
26
|
+
import { ApplyWorkspaceEditRequest, CompletionRequest, DidChangeTextDocumentNotification, DidCloseTextDocumentNotification, DidOpenTextDocumentNotification, HoverRequest, InitializeRequest, InitializedNotification, PublishDiagnosticsNotification, SemanticTokensRequest, ShutdownRequest, createProtocolConnection } from 'vscode-languageserver-protocol/node';
|
|
28
27
|
/**
|
|
29
28
|
* Default wait for {@link LspServerConnection.nextDiagnostics}. Deliberately
|
|
30
29
|
* much shorter than the subprocess smoke's: in-process there is no spawn and no
|
|
@@ -71,6 +70,32 @@ function insertedText(edit) {
|
|
|
71
70
|
}
|
|
72
71
|
return parts.join('');
|
|
73
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* A `PassThrough` that counts the bytes written through it. Counting here
|
|
75
|
+
* rather than in a `'data'` listener is what keeps the wire buffering: a
|
|
76
|
+
* listener switches the stream to flowing mode, and a message written before
|
|
77
|
+
* the server calls `listen()` is then delivered to the counter alone and lost.
|
|
78
|
+
*/
|
|
79
|
+
class CountingPassThrough extends PassThrough {
|
|
80
|
+
bytes = 0;
|
|
81
|
+
_transform(chunk, _encoding, callback) {
|
|
82
|
+
this.bytes += chunk.length;
|
|
83
|
+
callback(null, chunk);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** A crossed pair of {@link CountingPassThrough}s, disposed as one. */
|
|
87
|
+
function makeCountingStreamPair() {
|
|
88
|
+
const clientToServer = new CountingPassThrough();
|
|
89
|
+
const serverToClient = new CountingPassThrough();
|
|
90
|
+
return {
|
|
91
|
+
clientToServer,
|
|
92
|
+
serverToClient,
|
|
93
|
+
dispose() {
|
|
94
|
+
clientToServer.destroy();
|
|
95
|
+
serverToClient.destroy();
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
74
99
|
/**
|
|
75
100
|
* Build the in-process LSP transport seam (server `Connection` + client + wire +
|
|
76
101
|
* diagnostics capture + typed facades) WITHOUT attaching a server. The caller
|
|
@@ -83,7 +108,7 @@ function insertedText(edit) {
|
|
|
83
108
|
* additional protocol heads (data-server, GLSP) onto the same `shared` services.
|
|
84
109
|
*/
|
|
85
110
|
export function makeLspServerConnection() {
|
|
86
|
-
const pair =
|
|
111
|
+
const pair = makeCountingStreamPair();
|
|
87
112
|
// No-op watchDog: in-process, no LSP lifecycle event (parent-pid liveness, the
|
|
88
113
|
// `exit` notification, …) may exit the host test runner — `dispose()` owns
|
|
89
114
|
// teardown. See the import note on why the node `createConnection` is unusable.
|
|
@@ -94,7 +119,7 @@ export function makeLspServerConnection() {
|
|
|
94
119
|
};
|
|
95
120
|
// Server side reads what the client wrote (clientToServer) and writes what the
|
|
96
121
|
// client reads (serverToClient), over a ProtocolConnection on the in-memory pair.
|
|
97
|
-
const serverConnection = createConnection(logger => createProtocolConnection(new StreamMessageReader(pair.clientToServer), new StreamMessageWriter(pair.serverToClient), logger), watchDog, ProposedFeatures.all);
|
|
122
|
+
const serverConnection = createConnection(logger => createProtocolConnection(new StreamMessageReader(pair.clientToServer), new StreamMessageWriter(pair.serverToClient), logger), watchDog, withHydraniumLspFeatures(ProposedFeatures.all));
|
|
98
123
|
// Client side mirrors the directions: reads serverToClient, writes clientToServer.
|
|
99
124
|
const client = createProtocolConnection(new StreamMessageReader(pair.serverToClient), new StreamMessageWriter(pair.clientToServer));
|
|
100
125
|
client.listen();
|
|
@@ -156,6 +181,11 @@ export function makeLspServerConnection() {
|
|
|
156
181
|
client,
|
|
157
182
|
diagnostics,
|
|
158
183
|
appliedEdits,
|
|
184
|
+
wireBytes: () => ({
|
|
185
|
+
clientToServer: pair.clientToServer.bytes,
|
|
186
|
+
serverToClient: pair.serverToClient.bytes,
|
|
187
|
+
total: pair.clientToServer.bytes + pair.serverToClient.bytes
|
|
188
|
+
}),
|
|
159
189
|
async initialize(params) {
|
|
160
190
|
const initializeParams = {
|
|
161
191
|
processId: process.pid,
|
|
@@ -192,6 +222,9 @@ export function makeLspServerConnection() {
|
|
|
192
222
|
}
|
|
193
223
|
});
|
|
194
224
|
},
|
|
225
|
+
async closeDocument(uri) {
|
|
226
|
+
await client.sendNotification(DidCloseTextDocumentNotification.type, { textDocument: { uri } });
|
|
227
|
+
},
|
|
195
228
|
changeDocument(uri, text, version) {
|
|
196
229
|
client.sendNotification(DidChangeTextDocumentNotification.type, {
|
|
197
230
|
textDocument: { uri, version },
|