@hydranium/core 1.0.0-next.28 → 1.0.0-next.281
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 +64 -82
- package/lib/documents/ast-document-manager.d.ts +252 -122
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +290 -130
- 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 +146 -0
- package/lib/documents/client-session-registry.d.ts.map +1 -0
- package/lib/documents/client-session-registry.js +207 -0
- package/lib/documents/client-session-registry.js.map +1 -0
- package/lib/documents/dirty-state-tracker.d.ts +101 -0
- package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
- package/lib/documents/dirty-state-tracker.js +85 -0
- package/lib/documents/dirty-state-tracker.js.map +1 -0
- package/lib/documents/document-release-handler.d.ts +204 -0
- package/lib/documents/document-release-handler.d.ts.map +1 -0
- package/lib/documents/document-release-handler.js +317 -0
- package/lib/documents/document-release-handler.js.map +1 -0
- package/lib/documents/document-release-scheduler.d.ts +67 -0
- package/lib/documents/document-release-scheduler.d.ts.map +1 -0
- package/lib/documents/document-release-scheduler.js +80 -0
- package/lib/documents/document-release-scheduler.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 +415 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +849 -483
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +10 -2
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +10 -2
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/language-client-shadow.d.ts +218 -0
- package/lib/documents/language-client-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-shadow.js +284 -0
- package/lib/documents/language-client-shadow.js.map +1 -0
- 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/text-ledger.d.ts +64 -0
- package/lib/documents/text-ledger.d.ts.map +1 -0
- package/lib/documents/text-ledger.js +63 -0
- package/lib/documents/text-ledger.js.map +1 -0
- package/lib/documents/version-sync-service.d.ts +138 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +173 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.d.ts +3 -0
- 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 +49 -36
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +91 -45
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +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/build-phase-pass/build-phase-pass.d.ts +1 -1
- package/lib/langium/composite-ast-reflection.d.ts +46 -0
- package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
- package/lib/langium/composite-ast-reflection.js +97 -0
- package/lib/langium/composite-ast-reflection.js.map +1 -0
- 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 +9 -20
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/log-preamble.js +1 -1
- package/lib/langium/diagnostics/log-preamble.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 +58 -17
- 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 +6 -5
- package/lib/langium/document-builder/build-session.d.ts.map +1 -1
- package/lib/langium/document-builder/build-session.js +5 -5
- package/lib/langium/document-builder/build-session.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +309 -35
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +511 -75
- package/lib/langium/document-builder/document-builder.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 +40 -24
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +7 -4
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +16 -8
- 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 +83 -27
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +273 -63
- 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 +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +18 -4
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +372 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +446 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +2 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +2 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-events.d.ts +66 -0
- package/lib/langium/model-service/model-events.d.ts.map +1 -0
- package/lib/langium/model-service/model-events.js +10 -0
- package/lib/langium/model-service/model-events.js.map +1 -0
- package/lib/langium/model-service/model-service.d.ts +440 -282
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +542 -446
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +158 -37
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +52 -36
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +27 -6
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +4 -3
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts +23 -1
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/naming/name-separator-validation.js +22 -0
- 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 +13 -6
- 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 +35 -12
- 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/fallback-scope.d.ts +27 -0
- package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
- package/lib/langium/scope/fallback-scope.js +35 -0
- package/lib/langium/scope/fallback-scope.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js +38 -39
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +61 -24
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +74 -35
- package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
- package/lib/langium/scope/index.d.ts +1 -0
- package/lib/langium/scope/index.d.ts.map +1 -1
- package/lib/langium/scope/index.js +1 -0
- package/lib/langium/scope/index.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 +6 -5
- package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.js +3 -2
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
- package/lib/langium/scope/scope-extension-service.d.ts +41 -37
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js +57 -29
- package/lib/langium/scope/scope-extension-service.js.map +1 -1
- package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
- package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
- package/lib/langium/scope/scoped-ast-node-description.js +1 -3
- package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
- package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/abstract-serializer.js +54 -30
- package/lib/langium/serialization/abstract-serializer.js.map +1 -1
- package/lib/langium/serialization/json-serializer.d.ts +8 -1
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/json-serializer.js +13 -3
- package/lib/langium/serialization/json-serializer.js.map +1 -1
- package/lib/langium/serialization/serializer.d.ts +1 -1
- package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/yaml-serializer.js +4 -0
- package/lib/langium/serialization/yaml-serializer.js.map +1 -1
- package/lib/langium/service-registry.d.ts +29 -1
- package/lib/langium/service-registry.d.ts.map +1 -1
- package/lib/langium/service-registry.js +37 -0
- package/lib/langium/service-registry.js.map +1 -1
- package/lib/langium/shared-services.d.ts +23 -6
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/shared-services.js.map +1 -1
- package/lib/langium/single-langium-copy.d.ts +22 -0
- package/lib/langium/single-langium-copy.d.ts.map +1 -0
- package/lib/langium/single-langium-copy.js +36 -0
- package/lib/langium/single-langium-copy.js.map +1 -0
- package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +34 -23
- 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 +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 +280 -9
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +453 -8
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.js +1 -1
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
- package/lib/langium/workspace/document-uri-policy.d.ts +15 -10
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +7 -5
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-not-found.d.ts +23 -0
- package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
- package/lib/langium/workspace/file-not-found.js +31 -0
- package/lib/langium/workspace/file-not-found.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +154 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +102 -13
- 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 +109 -9
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +192 -12
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
- 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/index.d.ts +1 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +1 -0
- package/lib/langium/workspace/index.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 +37 -4
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +49 -4
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +7 -9
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +14 -13
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/self-save-registry.d.ts +84 -0
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +49 -15
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +81 -18
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +15 -5
- package/lib/langium/workspace/write-lock-scope.js.map +1 -1
- package/lib/launcher/integrated-server.d.ts +3 -1
- package/lib/launcher/integrated-server.d.ts.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 +106 -82
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +182 -102
- 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 +18 -12
- package/lib/messages/carriers.d.ts.map +1 -1
- package/lib/messages/carriers.js +22 -13
- package/lib/messages/carriers.js.map +1 -1
- package/lib/messages/index.d.ts +4 -1
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +4 -1
- package/lib/messages/index.js.map +1 -1
- 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.d.ts.map +1 -1
- package/lib/node/event-loop-monitor.js +2 -1
- 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 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +1 -1
- 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/log-preamble-node.d.ts +5 -3
- package/lib/node/log-preamble-node.d.ts.map +1 -1
- package/lib/node/log-preamble-node.js +13 -10
- package/lib/node/log-preamble-node.js.map +1 -1
- package/lib/node/measure-memory.d.ts.map +1 -1
- package/lib/node/measure-memory.js +5 -4
- package/lib/node/measure-memory.js.map +1 -1
- package/lib/node/memory-monitor.d.ts +2 -2
- package/lib/node/memory-monitor.d.ts.map +1 -1
- package/lib/node/memory-monitor.js +9 -10
- package/lib/node/memory-monitor.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +60 -9
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +162 -52
- package/lib/node/node-file-system-provider.js.map +1 -1
- package/lib/node/profile-capture.d.ts +12 -4
- package/lib/node/profile-capture.d.ts.map +1 -1
- package/lib/node/profile-capture.js +8 -6
- 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 +61 -0
- package/lib/node/rename-over-open-readers.d.ts.map +1 -0
- package/lib/node/rename-over-open-readers.js +80 -0
- package/lib/node/rename-over-open-readers.js.map +1 -0
- package/lib/node/server-diagnostics.js +1 -1
- package/lib/node/server-diagnostics.js.map +1 -1
- package/lib/node/server-state-snapshot.js +4 -4
- package/lib/node/server-state-snapshot.js.map +1 -1
- package/lib/node/socket-launcher.d.ts +20 -4
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +8 -7
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/stdio-launcher.d.ts +10 -10
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +17 -9
- package/lib/node/stdio-launcher.js.map +1 -1
- package/lib/testing/document-uri-policy-conformance.js +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 +72 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +42 -10
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/make-test-tracer.d.ts +12 -0
- package/lib/testing/make-test-tracer.d.ts.map +1 -1
- package/lib/testing/make-test-tracer.js +13 -0
- package/lib/testing/make-test-tracer.js.map +1 -1
- package/lib/testing/node/applied-edit-capture.d.ts +29 -0
- package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
- package/lib/testing/node/applied-edit-capture.js +115 -0
- package/lib/testing/node/applied-edit-capture.js.map +1 -0
- 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 +12 -4
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +45 -106
- 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 +30 -1
- package/lib/testing/node/spawned-server.d.ts.map +1 -1
- package/lib/testing/node/spawned-server.js +39 -2
- 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 +35 -8
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +39 -6
- package/lib/testing/playwright/server-log-capture.js.map +1 -1
- package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
- package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-fixture.js +25 -6
- package/lib/testing/playwright/server-log-fixture.js.map +1 -1
- package/lib/testing/playwright/server-log-region.d.ts +15 -0
- package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
- package/lib/testing/playwright/server-log-region.js +30 -0
- package/lib/testing/playwright/server-log-region.js.map +1 -0
- 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 +6 -5
- package/lib/testing/run-update-pipeline.d.ts.map +1 -1
- package/lib/testing/run-update-pipeline.js.map +1 -1
- package/lib/testing/stub-ast-document-manager.d.ts +11 -52
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +31 -62
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +33 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +103 -5
- package/lib/testing/stub-document-builder.js.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.js +132 -16
- 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 +9 -8
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +6 -6
- package/lib/testing/stub-model-service.js.map +1 -1
- package/lib/testing/stub-project-manager.js.map +1 -1
- package/lib/testing/stub-self-save-registry.d.ts +1 -1
- package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
- package/lib/testing/stub-service-registry.d.ts +1 -1
- package/lib/testing/stub-service-registry.js.map +1 -1
- package/lib/testing/stub-writable-file-system.d.ts +1 -1
- package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
- package/lib/testing/stub-writable-file-system.js +2 -1
- package/lib/testing/stub-writable-file-system.js.map +1 -1
- package/lib/util/connection-liveness.d.ts +19 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +61 -15
- 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 +29 -53
- package/src/documents/ast-document-manager.ts +463 -231
- package/src/documents/client-ids.ts +5 -22
- package/src/documents/client-session-errors.ts +24 -0
- package/src/documents/client-session-registry.ts +262 -0
- package/src/documents/dirty-state-tracker.ts +167 -0
- package/src/documents/document-release-handler.ts +404 -0
- package/src/documents/document-release-scheduler.ts +121 -0
- package/src/documents/file-system-task-queue.ts +68 -0
- package/src/documents/hydranium-text-documents.ts +968 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +452 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/text-ledger.ts +112 -0
- package/src/documents/version-sync-service.ts +275 -0
- package/src/index.ts +8 -0
- package/src/langium/ast-extension/ast-extension-service.ts +3 -0
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +95 -52
- package/src/langium/build-phase-pass/build-phase-pass-service.ts +1 -1
- package/src/langium/build-phase-pass/build-phase-pass.ts +1 -1
- package/src/langium/composite-ast-reflection.ts +112 -0
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +12 -5
- package/src/langium/diagnostics/lsp-logger.ts +61 -16
- package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
- package/src/langium/document-builder/build-session.ts +4 -3
- package/src/langium/document-builder/document-builder.ts +616 -73
- package/src/langium/integration-services.ts +59 -28
- package/src/langium/integrity/integrity-rule.ts +16 -8
- package/src/langium/integrity/integrity-service.ts +296 -69
- 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 +49 -8
- package/src/langium/model-service/client-session.ts +702 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +80 -0
- package/src/langium/model-service/model-service.ts +835 -475
- package/src/langium/module.ts +212 -67
- package/src/langium/naming/name-provider.ts +29 -7
- package/src/langium/naming/name-separator-validation.ts +25 -3
- package/src/langium/project/abstract-project-manager.ts +13 -5
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +50 -16
- package/src/langium/scope/fallback-scope.ts +38 -0
- package/src/langium/scope/hydranium-scope-computation.ts +45 -44
- package/src/langium/scope/hydranium-scope-provider.ts +89 -38
- package/src/langium/scope/index.ts +1 -0
- package/src/langium/scope/reference-candidate-provider.ts +6 -5
- package/src/langium/scope/scope-extension-service.ts +74 -59
- package/src/langium/scope/scoped-ast-node-description.ts +1 -3
- package/src/langium/serialization/abstract-serializer.ts +57 -41
- package/src/langium/serialization/json-serializer.ts +14 -3
- package/src/langium/serialization/serializer.ts +1 -1
- package/src/langium/serialization/yaml-serializer.ts +4 -0
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +26 -6
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +102 -45
- 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-service.ts +1 -1
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +528 -13
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/document-uri-policy.ts +15 -10
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +234 -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 +221 -16
- package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
- package/src/langium/workspace/index.ts +1 -0
- package/src/langium/workspace/initialize-workspace.ts +43 -5
- package/src/langium/workspace/langium-documents.ts +63 -5
- package/src/langium/workspace/persistent-file-system-provider.ts +15 -14
- package/src/langium/workspace/self-save-registry.ts +118 -0
- package/src/langium/workspace/virtual-document.ts +100 -19
- package/src/langium/workspace/write-lock-scope.ts +27 -12
- package/src/launcher/integrated-server.ts +3 -1
- 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 +227 -111
- 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 +23 -15
- package/src/messages/index.ts +13 -1
- package/src/messages/renderer.ts +212 -0
- package/src/node/event-loop-monitor.ts +2 -1
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +1 -1
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/log-preamble-node.ts +20 -10
- package/src/node/measure-memory.ts +5 -4
- package/src/node/memory-monitor.ts +10 -10
- package/src/node/node-file-system-provider.ts +178 -56
- package/src/node/profile-capture.ts +16 -15
- package/src/node/profiling-run.ts +30 -8
- package/src/node/rename-over-open-readers.ts +94 -0
- package/src/node/server-diagnostics.ts +1 -1
- package/src/node/server-state-snapshot.ts +5 -5
- package/src/node/socket-launcher.ts +27 -11
- package/src/node/stdio-launcher.ts +22 -14
- package/src/testing/document-uri-policy-conformance.ts +1 -1
- 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 +125 -31
- package/src/testing/make-test-tracer.ts +26 -0
- package/src/testing/node/applied-edit-capture.ts +139 -0
- 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 +74 -117
- package/src/testing/node/scratch-workspace.ts +10 -5
- package/src/testing/node/spawned-server.ts +57 -3
- package/src/testing/node/unhandled-rejections.ts +31 -0
- package/src/testing/parse-semantic-root.ts +1 -1
- 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 +63 -11
- package/src/testing/playwright/server-log-fixture.ts +46 -6
- package/src/testing/playwright/server-log-region.ts +32 -0
- package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
- package/src/testing/run-update-pipeline.ts +6 -5
- package/src/testing/stub-ast-document-manager.ts +47 -128
- package/src/testing/stub-document-builder.ts +133 -18
- package/src/testing/stub-hydranium-text-documents.ts +184 -27
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +11 -10
- package/src/testing/stub-self-save-registry.ts +1 -1
- package/src/testing/stub-service-registry.ts +1 -1
- package/src/testing/stub-writable-file-system.ts +3 -2
- package/src/util/connection-liveness.ts +67 -15
- package/src/util/environment.ts +9 -1
- package/lib/documents/language-client-text-shadow.d.ts +0 -101
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -156
- package/lib/documents/language-client-text-shadow.js.map +0 -1
- package/lib/documents/self-save-registry.d.ts +0 -55
- package/lib/documents/self-save-registry.d.ts.map +0 -1
- package/lib/documents/self-save-registry.js.map +0 -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/lib/node/process-memory.d.ts +0 -66
- package/lib/node/process-memory.d.ts.map +0 -1
- package/lib/node/process-memory.js +0 -252
- package/lib/node/process-memory.js.map +0 -1
- package/src/documents/language-client-text-shadow.ts +0 -175
- package/src/documents/self-save-registry.ts +0 -81
- package/src/lsp/instrument-connection.ts +0 -66
- package/src/node/process-memory.ts +0 -299
|
@@ -6,57 +6,56 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { Debouncer, ObservableValue } from '@hydranium/protocol';
|
|
9
|
+
import { Debouncer, Deferred, ObservableValue, TIMED_OUT, describeErrorWithStack } from '@hydranium/protocol';
|
|
10
10
|
import { URI, UriUtils } from '@hydranium/langium';
|
|
11
11
|
import { DefaultDocumentUpdateHandler } from '@hydranium/langium/lsp';
|
|
12
|
+
import { HYDRANIUM_BUILD_REASONS } from '../langium/document-builder/document-builder.js';
|
|
12
13
|
import { LANGUAGE_CLIENT_ID } from '../documents/client-ids.js';
|
|
14
|
+
import { isConnectionGoneError } from '../util/connection-liveness.js';
|
|
13
15
|
import { FileChangeType } from 'vscode-languageserver';
|
|
14
|
-
|
|
15
|
-
* Default LSP-event reasons stamped by {@link HydraniumDocumentUpdateHandler}
|
|
16
|
-
* onto the next `documentBuilder.update` call via `markNextReason`. Exposed
|
|
17
|
-
* so adopters subclassing the handler can layer additional reasons or rename
|
|
18
|
-
* existing ones without losing the canonical names the framework emits.
|
|
19
|
-
*/
|
|
20
|
-
export const HYDRANIUM_BUILD_REASONS = Object.freeze({
|
|
21
|
-
didOpen: 'didOpen',
|
|
22
|
-
didChangeContent: 'didChangeContent',
|
|
23
|
-
didChangeWatchedFiles: 'didChangeWatchedFiles',
|
|
24
|
-
didClose: 'didClose'
|
|
25
|
-
});
|
|
16
|
+
export { HYDRANIUM_BUILD_REASONS };
|
|
26
17
|
/**
|
|
27
18
|
* Framework `DocumentUpdateHandler` adding these behaviours over Langium's
|
|
28
19
|
* default:
|
|
29
20
|
*
|
|
30
21
|
* 1. **Self-save filter** ({@link filterSelfSaves}) — drops
|
|
31
22
|
* watched-file-change echoes for the server's own writes via
|
|
32
|
-
* {@link SelfSaveRegistry}, keyed by `fsPath` + mtime
|
|
23
|
+
* {@link SelfSaveRegistry}, keyed by `fsPath` + mtime, and
|
|
24
|
+
* ({@link filterStaleDeletions}) deletions the disk contradicts.
|
|
33
25
|
* 2. **Trailing-edge debouncing** — collapses rapid
|
|
34
26
|
* `didChangeContent` calls into one rebuild on the trailing
|
|
35
27
|
* edge of the configured window. Non-language-client author
|
|
36
28
|
* changes and watched-file changes bypass the debounce (their
|
|
37
29
|
* producers are already coalesced).
|
|
38
30
|
* 3. **Build-reason stamping** — the LSP event overrides
|
|
39
|
-
* (`didOpenDocument`, `didChangeContent`, `didChangeWatchedFiles
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* {@link
|
|
43
|
-
* {@link HydraniumDocumentBuilder.markNextReason}
|
|
44
|
-
* formats build logs can tag its line with the
|
|
45
|
-
* build without per-adopter wiring to capture it.
|
|
46
|
-
* 4. **
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
31
|
+
* (`didOpenDocument`, `didChangeContent`, `didChangeWatchedFiles`)
|
|
32
|
+
* populate {@link nextReason} with a canonical reason string.
|
|
33
|
+
* {@link fireDocumentUpdate} captures the reason; {@link dispatch} hands
|
|
34
|
+
* it to {@link HydraniumDocumentBuilder.scheduleUpdate}, which stages it
|
|
35
|
+
* through {@link HydraniumDocumentBuilder.markNextReason} when the build
|
|
36
|
+
* runs, so a subclass that formats build logs can tag its line with the
|
|
37
|
+
* event that caused the build without per-adopter wiring to capture it.
|
|
38
|
+
* 4. **Editor save gate** ({@link willSaveDocumentWaitUntil}) — the editor
|
|
39
|
+
* writes the file itself, so the server's disk writes of that document
|
|
40
|
+
* are ordered around it: the editor's save waits for the ones already
|
|
41
|
+
* queued, and the ones queued during its save wait for its `didSave`.
|
|
42
|
+
* Both waits are capped by
|
|
43
|
+
* {@link HydraniumDocumentUpdateHandlerOptions.willSaveGateMs}.
|
|
44
|
+
*
|
|
45
|
+
* What the build keeps after a document's last close is not dispatched here:
|
|
46
|
+
* the store hands the released document to the `DocumentReleaseHandler` for
|
|
47
|
+
* every head, the LSP head included, so a `didCloseDocument` added in a
|
|
48
|
+
* subclass would build the document twice. A change still debounced for the
|
|
49
|
+
* document is dropped when the store releases it: the release handler rebuilds
|
|
50
|
+
* the document from the file system provider or removes it.
|
|
52
51
|
*
|
|
53
52
|
* Adopters with their own handler subclass should extend this class
|
|
54
53
|
* (not Langium's `DefaultDocumentUpdateHandler`) so all of them are
|
|
55
54
|
* preserved. The {@link dispatch} hook is the canonical override
|
|
56
|
-
* point for adopters that need to stamp additional per-build metadata
|
|
57
|
-
* inside the workspace-lock callback.
|
|
55
|
+
* point for adopters that need to stamp additional per-build metadata.
|
|
58
56
|
*/
|
|
59
57
|
export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler {
|
|
58
|
+
services;
|
|
60
59
|
logger;
|
|
61
60
|
selfSaveRegistry;
|
|
62
61
|
fileSystemProvider;
|
|
@@ -81,13 +80,24 @@ export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler
|
|
|
81
80
|
nextReason;
|
|
82
81
|
/**
|
|
83
82
|
* Build-reason captured at `fireDocumentUpdate` time, drained by
|
|
84
|
-
* {@link dispatch} into
|
|
85
|
-
* batches
|
|
86
|
-
*
|
|
83
|
+
* {@link dispatch} into the scheduled build. Survives across debounced
|
|
84
|
+
* batches: `fireDocumentUpdate` replaces it with each event's reason, so a
|
|
85
|
+
* coalesced burst carries its latest.
|
|
87
86
|
*/
|
|
88
87
|
pendingReason;
|
|
88
|
+
willSaveGateMs;
|
|
89
|
+
/**
|
|
90
|
+
* Per document URI, the release of the hold an editor's save in progress
|
|
91
|
+
* keeps on the document's disk queue. A second save of the document
|
|
92
|
+
* releases the first: its hold would otherwise keep the second's answer
|
|
93
|
+
* waiting until the cap. The key is the document, not the save, so for a
|
|
94
|
+
* client that sends its next `willSaveWaitUntil` before the previous
|
|
95
|
+
* `didSave`, that late `didSave` releases the next save's hold.
|
|
96
|
+
*/
|
|
97
|
+
editorSaves = new Map();
|
|
89
98
|
constructor(services, options = {}) {
|
|
90
99
|
super(services);
|
|
100
|
+
this.services = services;
|
|
91
101
|
this.logger = services.Logger;
|
|
92
102
|
this.selfSaveRegistry = services.workspace.SelfSaveRegistry;
|
|
93
103
|
this.fileSystemProvider = services.workspace.FileSystemProvider;
|
|
@@ -95,6 +105,19 @@ export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler
|
|
|
95
105
|
this.debounce = ObservableValue.from(options.debounceMs ?? 0);
|
|
96
106
|
this.flushDebouncer = new Debouncer(services.Clock, () => this.flushPending(), { delayMs: this.debounce });
|
|
97
107
|
this.bypassNonLanguageClientChanges = options.bypassNonLanguageClientChanges ?? true;
|
|
108
|
+
this.willSaveGateMs = options.willSaveGateMs ?? 1000;
|
|
109
|
+
this.textDocuments.onDidSaveInLanguageClient(event => this.editorSaves.get(event.uri)?.());
|
|
110
|
+
services.workspace.VersionSyncService.registerDeferredBuilds(uri => this.pendingChanged.has(uri.toString()) || this.pendingDeleted.has(uri.toString()));
|
|
111
|
+
// A change still debounced for a document the store has released would
|
|
112
|
+
// build it once more after the release handler's build: from the
|
|
113
|
+
// provider again, or, for a document the release removed, by reading a
|
|
114
|
+
// file that is not there.
|
|
115
|
+
this.textDocuments.onDidReleaseDocument(event => {
|
|
116
|
+
this.pendingChanged.delete(URI.parse(event.uri).toString());
|
|
117
|
+
if (this.pendingChanged.size === 0 && this.pendingDeleted.size === 0) {
|
|
118
|
+
this.pendingReason = undefined;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
98
121
|
}
|
|
99
122
|
didOpenDocument(_change) {
|
|
100
123
|
// Langium also fires `didChangeContent` on open, which is what triggers
|
|
@@ -116,60 +139,22 @@ export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler
|
|
|
116
139
|
}
|
|
117
140
|
super.didChangeContent(change);
|
|
118
141
|
}
|
|
119
|
-
/**
|
|
120
|
-
* Last-client close is the missing rebuild trigger in Langium's
|
|
121
|
-
* `DefaultDocumentUpdateHandler`: `documents.onDidClose` fires on every
|
|
122
|
-
* per-client close, but the default handler ignores the event entirely.
|
|
123
|
-
* For multi-client servers this leaves the LangiumDocument carrying the
|
|
124
|
-
* unsaved in-memory `textDocument` of the last writer until something
|
|
125
|
-
* else triggers a rebuild — integrity rules walking `langiumDocuments.all`
|
|
126
|
-
* then see stale text long after the user discarded their edits.
|
|
127
|
-
*
|
|
128
|
-
* We funnel the last-client transition through the same dispatch path
|
|
129
|
-
* the other LSP events use, so the rebuild gets debouncing, workspace
|
|
130
|
-
* locking, build-reason stamping, and `markNextReason` for free. The
|
|
131
|
-
* scheme split governs the `DocumentBuilder.update` shape:
|
|
132
|
-
*
|
|
133
|
-
* - **`file:` URI** → `update([uri], [])`. Routes through
|
|
134
|
-
* `LangiumDocuments.invalidateDocument` (doc stays in the trie) and
|
|
135
|
-
* `LangiumDocumentFactory.update`, which consults the LSP-tracked
|
|
136
|
-
* open-documents map first. That map is cleared LATER in the same
|
|
137
|
-
* synchronous `notifyDidCloseTextDocument` call that fires this event,
|
|
138
|
-
* and {@link dispatch} defers the build behind `workspaceManager.ready`
|
|
139
|
-
* — so by the time the factory looks, the URI is gone: it falls back to
|
|
140
|
-
* `FileSystemProvider.readFile` and the doc rebuilds from disk,
|
|
141
|
-
* Langium's canonical close-without-save semantic. A dispatch made
|
|
142
|
-
* synchronously here would still see the open document and re-read the
|
|
143
|
-
* in-memory text instead.
|
|
144
|
-
* - **non-`file:` URI** (`builtin:`, `untitled:`) → no dispatch.
|
|
145
|
-
* Adopter-loaded schemes — documents pulled in via
|
|
146
|
-
* `loadAdditionalDocuments` — need to stay in the workspace index;
|
|
147
|
-
* dropping them on close would break every cross-reference that
|
|
148
|
-
* targets them. The framework cannot enumerate adopter schemes, so the
|
|
149
|
-
* safe default is "leave alone unless it's a file." Adopters that need
|
|
150
|
-
* ephemeral-URI cleanup handle it explicitly.
|
|
151
|
-
*
|
|
152
|
-
* Per-client closes (where other clients still hold the URI) are
|
|
153
|
-
* suppressed via {@link HydraniumTextDocuments.isOpenInAnyClient}.
|
|
154
|
-
*/
|
|
155
|
-
didCloseDocument(change) {
|
|
156
|
-
if (this.textDocuments.isOpenInAnyClient(change.document.uri)) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
const uri = URI.parse(change.document.uri);
|
|
160
|
-
if (uri.scheme !== 'file') {
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
this.nextReason = HYDRANIUM_BUILD_REASONS.didClose;
|
|
164
|
-
this.immediateFlush = true;
|
|
165
|
-
this.fireDocumentUpdate([uri], []);
|
|
166
|
-
}
|
|
167
142
|
didChangeWatchedFiles(params) {
|
|
168
143
|
void this.filterSelfSaves(params)
|
|
144
|
+
.then(unsaved => this.filterStaleDeletions(unsaved))
|
|
169
145
|
.then(filtered => {
|
|
170
146
|
if (filtered.changes.length === 0) {
|
|
171
147
|
return;
|
|
172
148
|
}
|
|
149
|
+
// Only an open document keeps the file's text as its disk
|
|
150
|
+
// baseline; the store ignores the rest. The self-save filter has
|
|
151
|
+
// dropped the server's own writes, which set the baseline when
|
|
152
|
+
// they wrote.
|
|
153
|
+
for (const change of filtered.changes) {
|
|
154
|
+
this.textDocuments
|
|
155
|
+
.reloadDiskBaseline(change.uri)
|
|
156
|
+
.catch((err) => this.logger.error(`Disk baseline not reloaded for ${change.uri}. ${describeErrorWithStack(err)}`));
|
|
157
|
+
}
|
|
173
158
|
// External file-system changes are authoritative — overwrite any
|
|
174
159
|
// pending reason (typically empty here; could be `didChangeContent`
|
|
175
160
|
// if a watcher event raced an in-flight Monaco edit, in which case
|
|
@@ -185,11 +170,75 @@ export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler
|
|
|
185
170
|
// `unhandledRejection` listener, which reports neither the URIs nor
|
|
186
171
|
// the fact that a watched-file rebuild was dropped — leaving the
|
|
187
172
|
// workspace diverged from disk with no diagnostic and no retry.
|
|
188
|
-
const detail =
|
|
173
|
+
const detail = describeErrorWithStack(err);
|
|
189
174
|
const uris = params.changes.map(change => change.uri).join(', ');
|
|
190
175
|
this.logger.error(`Watched-file update dropped for ${uris}. ${detail}`);
|
|
191
176
|
});
|
|
192
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Answer an editor's `willSaveWaitUntil` with no edits once the server's
|
|
180
|
+
* disk writes of the document already queued have landed, or after
|
|
181
|
+
* {@link willSaveGateMs}, whichever is first. From the moment the queue
|
|
182
|
+
* reaches this save, disk tasks of the document queued behind it wait for
|
|
183
|
+
* the editor's `didSave`, reported through
|
|
184
|
+
* `HydraniumTextDocuments.onDidSaveInLanguageClient`, or for
|
|
185
|
+
* {@link willSaveGateMs} more.
|
|
186
|
+
*
|
|
187
|
+
* The hold is a disk task that waits only for that signal or its timer:
|
|
188
|
+
* waiting on a build, a save or anything else queued for the document would
|
|
189
|
+
* wedge its queue. Resolves in every case, since a failed request counts
|
|
190
|
+
* against the listener in VS Code; Langium drops the request's cancellation,
|
|
191
|
+
* so an abandoned request still runs to the cap. A hold that runs out is
|
|
192
|
+
* logged at debug only: an editor skips `didSave` for a save it cancels or
|
|
193
|
+
* that changed nothing.
|
|
194
|
+
*/
|
|
195
|
+
willSaveDocumentWaitUntil(event) {
|
|
196
|
+
const uri = event.document.uri;
|
|
197
|
+
this.editorSaves.get(uri)?.();
|
|
198
|
+
const hold = new Deferred();
|
|
199
|
+
const release = () => {
|
|
200
|
+
if (this.editorSaves.get(uri) === release) {
|
|
201
|
+
this.editorSaves.delete(uri);
|
|
202
|
+
}
|
|
203
|
+
hold.resolve();
|
|
204
|
+
};
|
|
205
|
+
this.editorSaves.set(uri, release);
|
|
206
|
+
return new Promise(resolve => {
|
|
207
|
+
const clock = this.services.Clock;
|
|
208
|
+
const cap = clock.setTimer(() => {
|
|
209
|
+
this.logger.warn(`willSaveWaitUntil for ${uri} answered after ${this.willSaveGateMs} ms with server writes of it still queued; the editor's save may race them.`);
|
|
210
|
+
resolve([]);
|
|
211
|
+
}, this.willSaveGateMs);
|
|
212
|
+
try {
|
|
213
|
+
void this.services.workspace.FileSystemTaskQueue.enqueue(uri, async () => {
|
|
214
|
+
cap.dispose();
|
|
215
|
+
resolve([]);
|
|
216
|
+
if ((await clock.raceTimer(hold.promise, this.willSaveGateMs)) === TIMED_OUT) {
|
|
217
|
+
this.logger.debug(`No didSave for ${uri} within ${this.willSaveGateMs} ms; server writes of it no longer wait for the editor's save.`);
|
|
218
|
+
release();
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
cap.dispose();
|
|
224
|
+
this.logger.error(`willSaveWaitUntil for ${uri} answered without waiting. ${describeErrorWithStack(err)}`);
|
|
225
|
+
release();
|
|
226
|
+
resolve([]);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Present so that Langium advertises `save` and editors send `didSave`;
|
|
232
|
+
* without it every hold of {@link willSaveDocumentWaitUntil} waits out its
|
|
233
|
+
* cap. The hold is released on
|
|
234
|
+
* `HydraniumTextDocuments.onDidSaveInLanguageClient` instead: it fires as
|
|
235
|
+
* soon as the editor reports the save, while `onDidSave`, and so this
|
|
236
|
+
* method, follows only once the file has been read back, and not at all
|
|
237
|
+
* when the file does not hold the store's text.
|
|
238
|
+
*/
|
|
239
|
+
didSaveDocument(_event) {
|
|
240
|
+
// Nothing to do; see the doc comment.
|
|
241
|
+
}
|
|
193
242
|
/**
|
|
194
243
|
* Drop watched-file changes whose path + mtime match a recent self-save
|
|
195
244
|
* record. Deletions always pass (no mtime); stat failures pass (the
|
|
@@ -205,27 +254,49 @@ export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler
|
|
|
205
254
|
}
|
|
206
255
|
const uri = UriUtils.toUri(change.uri);
|
|
207
256
|
const mtimeMs = await this.fileSystemProvider.mtimeMs?.(uri);
|
|
208
|
-
if (mtimeMs !== undefined && this.selfSaveRegistry.
|
|
257
|
+
if (mtimeMs !== undefined && this.selfSaveRegistry.isRegistered(uri.fsPath, mtimeMs)) {
|
|
209
258
|
return undefined;
|
|
210
259
|
}
|
|
211
260
|
return change;
|
|
212
261
|
}));
|
|
213
262
|
return { changes: kept.filter((change) => change !== undefined) };
|
|
214
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Drop a deletion the disk contradicts: the file is there, or the document
|
|
266
|
+
* at the URI was created from a session's text and its file not seen since,
|
|
267
|
+
* as one created again after a delete. A watcher reports a delete late, the
|
|
268
|
+
* server's own included, and applied to a document created again since, it
|
|
269
|
+
* would close every open of it. A missing disk baseline cannot stand in for
|
|
270
|
+
* the creation: a report that finds the file gone clears it too. A record
|
|
271
|
+
* of the server's own unlinks could not tell its echo from a later real
|
|
272
|
+
* delete, since a delete leaves no mtime to match. A miss the provider
|
|
273
|
+
* reports in error keeps the deletion.
|
|
274
|
+
*/
|
|
275
|
+
async filterStaleDeletions(params) {
|
|
276
|
+
const kept = await Promise.all(params.changes.map(async (change) => {
|
|
277
|
+
if (change.type !== FileChangeType.Deleted) {
|
|
278
|
+
return change;
|
|
279
|
+
}
|
|
280
|
+
if (this.textDocuments.isUnsavedCreation(change.uri)) {
|
|
281
|
+
return undefined;
|
|
282
|
+
}
|
|
283
|
+
const exists = await this.fileSystemProvider.exists(UriUtils.toUri(change.uri)).catch(() => false);
|
|
284
|
+
return exists ? undefined : change;
|
|
285
|
+
}));
|
|
286
|
+
return { changes: kept.filter((change) => change !== undefined) };
|
|
287
|
+
}
|
|
215
288
|
/**
|
|
216
289
|
* Coalesce `changed` / `deleted` into the pending sets, then either
|
|
217
290
|
* flush immediately (`immediateFlush` or `debounceMs <= 0`) or restart
|
|
218
291
|
* the trailing-edge timer. Subclasses that need to stamp per-build
|
|
219
292
|
* metadata can override and inspect the merged sets — but the canonical
|
|
220
|
-
* override point for the
|
|
221
|
-
* not this method.
|
|
293
|
+
* override point for the build is {@link dispatch}, not this method.
|
|
222
294
|
*/
|
|
223
295
|
fireDocumentUpdate(changed, deleted) {
|
|
224
296
|
// Capture the reason set by the LSP event handler immediately before
|
|
225
|
-
// we merge into the pending sets.
|
|
226
|
-
//
|
|
227
|
-
//
|
|
228
|
-
// because subsequent stamps see the field already non-undefined).
|
|
297
|
+
// we merge into the pending sets. Each event stamps its own reason, so
|
|
298
|
+
// a coalesced burst carries its latest; `?? pendingReason` keeps the
|
|
299
|
+
// earlier one only for a call no event stamped.
|
|
229
300
|
this.pendingReason = this.nextReason ?? this.pendingReason;
|
|
230
301
|
this.nextReason = undefined;
|
|
231
302
|
for (const uri of changed) {
|
|
@@ -261,26 +332,35 @@ export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler
|
|
|
261
332
|
this.dispatch(changed, deleted);
|
|
262
333
|
}
|
|
263
334
|
/**
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
* `
|
|
272
|
-
*
|
|
335
|
+
* Build the merged sets once the workspace is ready, through
|
|
336
|
+
* {@link HydraniumDocumentBuilder.scheduleUpdate} with the pending reason,
|
|
337
|
+
* so the build carries the LSP event that triggered it. A session's write
|
|
338
|
+
* fires the store's change event before the session rebuilds the document
|
|
339
|
+
* itself, and the scheduled build is what the two share.
|
|
340
|
+
*
|
|
341
|
+
* Adopters override to stamp additional per-build metadata: read the reason
|
|
342
|
+
* via `this.pendingReason` and call `super.dispatch(...)`; the build may
|
|
343
|
+
* be shared with other requests, so metadata stamped for it describes
|
|
344
|
+
* theirs too. An override that needs code inside the write action takes
|
|
345
|
+
* `workspaceLock.write` itself, as Langium's `fireDocumentUpdate` does, and
|
|
346
|
+
* stages the reason through `markNextReason` there; its build then cancels
|
|
347
|
+
* a scheduled one it coincides with rather than sharing it.
|
|
273
348
|
*/
|
|
274
349
|
dispatch(changed, deleted) {
|
|
275
350
|
const reason = this.pendingReason;
|
|
276
351
|
this.pendingReason = undefined;
|
|
277
352
|
this.workspaceManager.ready
|
|
278
|
-
.then(() => this.
|
|
279
|
-
this.documentBuilder.markNextReason(reason);
|
|
280
|
-
return this.documentBuilder.update(changed, deleted, token);
|
|
281
|
-
}))
|
|
353
|
+
.then(() => this.documentBuilder.scheduleUpdate(changed, deleted, reason))
|
|
282
354
|
.catch(err => {
|
|
283
|
-
|
|
355
|
+
// A deferred rebuild can finish after the LSP peer has gone away.
|
|
356
|
+
// Unless the head was started through `startLanguageServer`, whose
|
|
357
|
+
// guard absorbs it, the diagnostics publish then fails this build:
|
|
358
|
+
// a routine teardown race, not a failed workspace update. Keep
|
|
359
|
+
// genuine update failures visible.
|
|
360
|
+
if (isConnectionGoneError(err)) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
const detail = describeErrorWithStack(err);
|
|
284
364
|
this.logger.error(`Workspace initialization failed. Could not perform document update. ${detail}`);
|
|
285
365
|
});
|
|
286
366
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-document-update-handler.js","sourceRoot":"","sources":["../../src/lsp/hydranium-document-update-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,
|
|
1
|
+
{"version":3,"file":"hydranium-document-update-handler.js","sourceRoot":"","sources":["../../src/lsp/hydranium-document-update-handler.ts"],"names":[],"mappings":"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"}
|
package/lib/lsp/index.d.ts
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
export * from './completion/hydranium-completion-provider.js';
|
|
10
|
-
export * from './
|
|
10
|
+
export * from './lsp-latency.js';
|
|
11
|
+
export * from './connection-features.js';
|
|
12
|
+
export * from './diagnostics-connection.js';
|
|
11
13
|
export * from './semantic-token-provider.js';
|
|
12
14
|
export * from './language-module.js';
|
|
13
15
|
export * from './shared-module.js';
|
package/lib/lsp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AAEvD;;;;;;GAMG;AACH,cAAc,4BAA4B,CAAC"}
|
package/lib/lsp/index.js
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
export * from './completion/hydranium-completion-provider.js';
|
|
10
|
-
export * from './
|
|
10
|
+
export * from './lsp-latency.js';
|
|
11
|
+
export * from './connection-features.js';
|
|
12
|
+
export * from './diagnostics-connection.js';
|
|
11
13
|
export * from './semantic-token-provider.js';
|
|
12
14
|
export * from './language-module.js';
|
|
13
15
|
export * from './shared-module.js';
|
package/lib/lsp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AAEvD;;;;;;GAMG;AACH,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import type { LatencyCollector } from '@hydranium/protocol';
|
|
10
|
+
import type { ConnectionOptions } from 'vscode-jsonrpc';
|
|
11
|
+
/**
|
|
12
|
+
* Connection options that time every inbound LSP message into `latency` under
|
|
13
|
+
* its method name — the LSP analog of the data-server RPC chokepoint.
|
|
14
|
+
*
|
|
15
|
+
* Pass the result to `createConnection` where the head builds its connection:
|
|
16
|
+
* `createConnection(ProposedFeatures.all, lspLatencyOptions(latency))`. The
|
|
17
|
+
* transport is untouched, so a head keeps whatever `--stdio` / `--socket`
|
|
18
|
+
* selection its arguments make.
|
|
19
|
+
*
|
|
20
|
+
* **`messageStrategy` is the seam because it is the only one the handlers
|
|
21
|
+
* actually pass through.** `vscode-languageserver` builds its `Connection` as an
|
|
22
|
+
* object whose `onHover`, `onCompletion` and every other named helper register
|
|
23
|
+
* against the inner protocol connection captured in their closure — not against
|
|
24
|
+
* the returned object's own `onRequest`. Langium registers exclusively through
|
|
25
|
+
* those helpers, so decorating the `Connection` reaches none of them and reports
|
|
26
|
+
* an empty LSP half no matter how much traffic ran. `handleMessage` sits on the
|
|
27
|
+
* dispatch path itself, which every request and notification crosses, so it also
|
|
28
|
+
* catches `initialize` — special-cased into `onInitialize` and invisible to any
|
|
29
|
+
* `onRequest` decoration.
|
|
30
|
+
*
|
|
31
|
+
* What it measures is **dispatch plus handler**, not handler alone: the wait a
|
|
32
|
+
* client actually experiences, including time queued behind other work.
|
|
33
|
+
*
|
|
34
|
+
* When `latency` is `undefined` the seam is off and this returns `undefined`, so
|
|
35
|
+
* a head can pass the result of an env-gated factory (`latencyFromEnv()`)
|
|
36
|
+
* straight through and pay nothing when timing is not enabled.
|
|
37
|
+
*/
|
|
38
|
+
export declare function lspLatencyOptions(latency: LatencyCollector | undefined): ConnectionOptions | undefined;
|
|
39
|
+
//# sourceMappingURL=lsp-latency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-latency.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-latency.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAW,MAAM,gBAAgB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAiBtG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* Connection options that time every inbound LSP message into `latency` under
|
|
11
|
+
* its method name — the LSP analog of the data-server RPC chokepoint.
|
|
12
|
+
*
|
|
13
|
+
* Pass the result to `createConnection` where the head builds its connection:
|
|
14
|
+
* `createConnection(ProposedFeatures.all, lspLatencyOptions(latency))`. The
|
|
15
|
+
* transport is untouched, so a head keeps whatever `--stdio` / `--socket`
|
|
16
|
+
* selection its arguments make.
|
|
17
|
+
*
|
|
18
|
+
* **`messageStrategy` is the seam because it is the only one the handlers
|
|
19
|
+
* actually pass through.** `vscode-languageserver` builds its `Connection` as an
|
|
20
|
+
* object whose `onHover`, `onCompletion` and every other named helper register
|
|
21
|
+
* against the inner protocol connection captured in their closure — not against
|
|
22
|
+
* the returned object's own `onRequest`. Langium registers exclusively through
|
|
23
|
+
* those helpers, so decorating the `Connection` reaches none of them and reports
|
|
24
|
+
* an empty LSP half no matter how much traffic ran. `handleMessage` sits on the
|
|
25
|
+
* dispatch path itself, which every request and notification crosses, so it also
|
|
26
|
+
* catches `initialize` — special-cased into `onInitialize` and invisible to any
|
|
27
|
+
* `onRequest` decoration.
|
|
28
|
+
*
|
|
29
|
+
* What it measures is **dispatch plus handler**, not handler alone: the wait a
|
|
30
|
+
* client actually experiences, including time queued behind other work.
|
|
31
|
+
*
|
|
32
|
+
* When `latency` is `undefined` the seam is off and this returns `undefined`, so
|
|
33
|
+
* a head can pass the result of an env-gated factory (`latencyFromEnv()`)
|
|
34
|
+
* straight through and pay nothing when timing is not enabled.
|
|
35
|
+
*/
|
|
36
|
+
export function lspLatencyOptions(latency) {
|
|
37
|
+
if (!latency) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
messageStrategy: {
|
|
42
|
+
handleMessage: (message, next) => {
|
|
43
|
+
// Responses to requests the SERVER sent carry no method and are not
|
|
44
|
+
// work this head performed; timing them would report the client's
|
|
45
|
+
// latency under a name this collector cannot supply.
|
|
46
|
+
if (!hasMethod(message)) {
|
|
47
|
+
return next(message);
|
|
48
|
+
}
|
|
49
|
+
return latency.time(message.method, () => next(message));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** Narrow to the messages that name an operation — requests and notifications. */
|
|
55
|
+
function hasMethod(message) {
|
|
56
|
+
return typeof message.method === 'string';
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=lsp-latency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-latency.js","sourceRoot":"","sources":["../../src/lsp/lsp-latency.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAKlF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAqC;IACpE,IAAI,CAAC,OAAO,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACpB,CAAC;IACD,OAAO;QACJ,eAAe,EAAE;YACd,aAAa,EAAE,CAAC,OAAgB,EAAE,IAAgD,EAAE,EAAE;gBACnF,oEAAoE;gBACpE,kEAAkE;gBAClE,qDAAqD;gBACrD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;gBACD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5D,CAAC;SACH;KACH,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,SAAS,SAAS,CAAC,OAAgB;IAChC,OAAO,OAAQ,OAAgC,CAAC,MAAM,KAAK,QAAQ,CAAC;AACvE,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { type AstNode, type AstReflection, type LangiumDocument, type ReferenceInfo } from '@hydranium/langium';
|
|
9
|
+
import { type AstNode, type AstReflection, type LangiumDocument, type LeafCstNode, type ReferenceInfo } from '@hydranium/langium';
|
|
10
10
|
import { AbstractSemanticTokenProvider, type SemanticTokenAcceptor } from '@hydranium/langium/lsp';
|
|
11
11
|
import { type CancellationToken } from 'vscode-languageserver';
|
|
12
12
|
import { type NameProvider } from '../langium/naming/name-provider.js';
|
|
@@ -37,6 +37,22 @@ export interface HydraniumSemanticTokenProviderOptions {
|
|
|
37
37
|
* render in the editor's default foreground.
|
|
38
38
|
*/
|
|
39
39
|
readonly highlightKeywords?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Also emit a `comment` token for every comment leaf of the CST.
|
|
42
|
+
*
|
|
43
|
+
* OFF by default for the same reason as {@link highlightKeywords}, and the
|
|
44
|
+
* loss is larger: a TextMate grammar distinguishes `comment.line` from
|
|
45
|
+
* `comment.block` and scopes the delimiters separately, where a semantic
|
|
46
|
+
* token carries one flat `comment` that overrides all of them. It exists
|
|
47
|
+
* for the host that ships no client-side grammar, where a comment otherwise
|
|
48
|
+
* renders in the editor's default foreground.
|
|
49
|
+
*
|
|
50
|
+
* What counts as a comment is every hidden terminal the lexer retains,
|
|
51
|
+
* which is every hidden terminal whose pattern is not whitespace. A grammar
|
|
52
|
+
* whose hidden non-whitespace terminal means something other than a comment
|
|
53
|
+
* is miscoloured, and this option is the place to say no.
|
|
54
|
+
*/
|
|
55
|
+
readonly highlightComments?: boolean;
|
|
40
56
|
}
|
|
41
57
|
/**
|
|
42
58
|
* Semantic-token provider that derives highlighting from ONE adopter-supplied
|
|
@@ -102,6 +118,23 @@ export declare abstract class AbstractHydraniumSemanticTokenProvider extends Abs
|
|
|
102
118
|
* drops anything outside `currentRange` on its own.
|
|
103
119
|
*/
|
|
104
120
|
protected computeHighlighting(document: LangiumDocument, acceptor: SemanticTokenAcceptor, cancelToken: CancellationToken): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Emit a comment as ONE TOKEN PER LINE, never as one multi-line range.
|
|
123
|
+
*
|
|
124
|
+
* A block comment is the first token this provider emits that can span
|
|
125
|
+
* lines, and the upstream encoder mishandles that for a client which does
|
|
126
|
+
* not advertise `multilineTokenSupport` — the split path computes the first
|
|
127
|
+
* line's length as `nextLineOffset - range.start.character - 1`, subtracting
|
|
128
|
+
* a COLUMN from a document OFFSET, so the length is right only for a token
|
|
129
|
+
* starting on line 0 and overruns its line everywhere else. No client in
|
|
130
|
+
* this repository advertises that capability, so the broken path is the one
|
|
131
|
+
* taken. Splitting here means every range handed over starts and ends on one
|
|
132
|
+
* line and the arithmetic is never reached.
|
|
133
|
+
*
|
|
134
|
+
* Lines come from the leaf's own text rather than from the document, so
|
|
135
|
+
* nothing has to re-derive where the comment ends.
|
|
136
|
+
*/
|
|
137
|
+
protected acceptComment(cst: LeafCstNode, acceptor: SemanticTokenAcceptor): void;
|
|
105
138
|
protected highlightElement(node: AstNode, acceptor: SemanticTokenAcceptor): void | undefined | 'prune';
|
|
106
139
|
/** Colour the node's own name, at whichever property the NameProvider reads it from. */
|
|
107
140
|
protected highlightDeclaration(node: AstNode, acceptor: SemanticTokenAcceptor): void;
|