@hydranium/core 1.0.0-next.10
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/LICENSE +21 -0
- package/README.md +100 -0
- package/lib/documents/ast-document-manager.d.ts +243 -0
- package/lib/documents/ast-document-manager.d.ts.map +1 -0
- package/lib/documents/ast-document-manager.js +302 -0
- package/lib/documents/ast-document-manager.js.map +1 -0
- package/lib/documents/client-ids.d.ts +30 -0
- package/lib/documents/client-ids.d.ts.map +1 -0
- package/lib/documents/client-ids.js +30 -0
- package/lib/documents/client-ids.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +490 -0
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -0
- package/lib/documents/hydranium-text-documents.js +893 -0
- package/lib/documents/hydranium-text-documents.js.map +1 -0
- package/lib/documents/index.d.ts +14 -0
- package/lib/documents/index.d.ts.map +1 -0
- package/lib/documents/index.js +14 -0
- package/lib/documents/index.js.map +1 -0
- package/lib/documents/language-client-text-shadow.d.ts +101 -0
- package/lib/documents/language-client-text-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-text-shadow.js +156 -0
- package/lib/documents/language-client-text-shadow.js.map +1 -0
- package/lib/documents/self-save-registry.d.ts +55 -0
- package/lib/documents/self-save-registry.d.ts.map +1 -0
- package/lib/documents/self-save-registry.js +68 -0
- package/lib/documents/self-save-registry.js.map +1 -0
- package/lib/index.d.ts +38 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +39 -0
- package/lib/index.js.map +1 -0
- package/lib/langium/ast-extension/ast-extension-contribution.d.ts +33 -0
- package/lib/langium/ast-extension/ast-extension-contribution.d.ts.map +1 -0
- package/lib/langium/ast-extension/ast-extension-contribution.js +10 -0
- package/lib/langium/ast-extension/ast-extension-contribution.js.map +1 -0
- package/lib/langium/ast-extension/ast-extension-service.d.ts +212 -0
- package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -0
- package/lib/langium/ast-extension/ast-extension-service.js +181 -0
- package/lib/langium/ast-extension/ast-extension-service.js.map +1 -0
- package/lib/langium/ast-extension/ast-node-builder.d.ts +90 -0
- package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -0
- package/lib/langium/ast-extension/ast-node-builder.js +61 -0
- package/lib/langium/ast-extension/ast-node-builder.js.map +1 -0
- package/lib/langium/ast-extension/index.d.ts +12 -0
- package/lib/langium/ast-extension/index.d.ts.map +1 -0
- package/lib/langium/ast-extension/index.js +12 -0
- package/lib/langium/ast-extension/index.js.map +1 -0
- package/lib/langium/bootstrap.d.ts +224 -0
- package/lib/langium/bootstrap.d.ts.map +1 -0
- package/lib/langium/bootstrap.js +512 -0
- package/lib/langium/bootstrap.js.map +1 -0
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +77 -0
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -0
- package/lib/langium/build-phase-pass/build-phase-pass-service.js +102 -0
- package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -0
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts +106 -0
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -0
- package/lib/langium/build-phase-pass/build-phase-pass.js +43 -0
- package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -0
- package/lib/langium/build-phase-pass/index.d.ts +11 -0
- package/lib/langium/build-phase-pass/index.d.ts.map +1 -0
- package/lib/langium/build-phase-pass/index.js +11 -0
- package/lib/langium/build-phase-pass/index.js.map +1 -0
- package/lib/langium/config/index.d.ts +10 -0
- package/lib/langium/config/index.d.ts.map +1 -0
- package/lib/langium/config/index.js +10 -0
- package/lib/langium/config/index.js.map +1 -0
- package/lib/langium/config/settings.d.ts +173 -0
- package/lib/langium/config/settings.d.ts.map +1 -0
- package/lib/langium/config/settings.js +196 -0
- package/lib/langium/config/settings.js.map +1 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +109 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +153 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -0
- package/lib/langium/diagnostics/index.d.ts +14 -0
- package/lib/langium/diagnostics/index.d.ts.map +1 -0
- package/lib/langium/diagnostics/index.js +19 -0
- package/lib/langium/diagnostics/index.js.map +1 -0
- package/lib/langium/diagnostics/log-file-token.d.ts +16 -0
- package/lib/langium/diagnostics/log-file-token.d.ts.map +1 -0
- package/lib/langium/diagnostics/log-file-token.js +25 -0
- package/lib/langium/diagnostics/log-file-token.js.map +1 -0
- package/lib/langium/diagnostics/log-preamble.d.ts +42 -0
- package/lib/langium/diagnostics/log-preamble.d.ts.map +1 -0
- package/lib/langium/diagnostics/log-preamble.js +57 -0
- package/lib/langium/diagnostics/log-preamble.js.map +1 -0
- package/lib/langium/diagnostics/logger.d.ts +104 -0
- package/lib/langium/diagnostics/logger.d.ts.map +1 -0
- package/lib/langium/diagnostics/logger.js +178 -0
- package/lib/langium/diagnostics/logger.js.map +1 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts +76 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -0
- package/lib/langium/diagnostics/lsp-logger.js +223 -0
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -0
- package/lib/langium/diagnostics/server-tracer.d.ts +27 -0
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -0
- package/lib/langium/diagnostics/server-tracer.js +66 -0
- package/lib/langium/diagnostics/server-tracer.js.map +1 -0
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +88 -0
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -0
- package/lib/langium/document-builder/build-pipeline-integration.js +151 -0
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -0
- package/lib/langium/document-builder/document-builder.d.ts +405 -0
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -0
- package/lib/langium/document-builder/document-builder.js +729 -0
- package/lib/langium/document-builder/document-builder.js.map +1 -0
- package/lib/langium/document-builder/index.d.ts +12 -0
- package/lib/langium/document-builder/index.d.ts.map +1 -0
- package/lib/langium/document-builder/index.js +12 -0
- package/lib/langium/document-builder/index.js.map +1 -0
- package/lib/langium/document-builder/labeled-phase-listener.d.ts +21 -0
- package/lib/langium/document-builder/labeled-phase-listener.d.ts.map +1 -0
- package/lib/langium/document-builder/labeled-phase-listener.js +15 -0
- package/lib/langium/document-builder/labeled-phase-listener.js.map +1 -0
- package/lib/langium/documentation/comment-provider.d.ts +31 -0
- package/lib/langium/documentation/comment-provider.d.ts.map +1 -0
- package/lib/langium/documentation/comment-provider.js +36 -0
- package/lib/langium/documentation/comment-provider.js.map +1 -0
- package/lib/langium/documentation/index.d.ts +10 -0
- package/lib/langium/documentation/index.d.ts.map +1 -0
- package/lib/langium/documentation/index.js +10 -0
- package/lib/langium/documentation/index.js.map +1 -0
- package/lib/langium/integration-services.d.ts +200 -0
- package/lib/langium/integration-services.d.ts.map +1 -0
- package/lib/langium/integration-services.js +65 -0
- package/lib/langium/integration-services.js.map +1 -0
- package/lib/langium/integrity/index.d.ts +12 -0
- package/lib/langium/integrity/index.d.ts.map +1 -0
- package/lib/langium/integrity/index.js +12 -0
- package/lib/langium/integrity/index.js.map +1 -0
- package/lib/langium/integrity/integrity-contribution.d.ts +42 -0
- package/lib/langium/integrity/integrity-contribution.d.ts.map +1 -0
- package/lib/langium/integrity/integrity-contribution.js +10 -0
- package/lib/langium/integrity/integrity-contribution.js.map +1 -0
- package/lib/langium/integrity/integrity-rule.d.ts +82 -0
- package/lib/langium/integrity/integrity-rule.d.ts.map +1 -0
- package/lib/langium/integrity/integrity-rule.js +52 -0
- package/lib/langium/integrity/integrity-rule.js.map +1 -0
- package/lib/langium/integrity/integrity-service.d.ts +221 -0
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -0
- package/lib/langium/integrity/integrity-service.js +328 -0
- package/lib/langium/integrity/integrity-service.js.map +1 -0
- package/lib/langium/keys/default-element-key-provider.d.ts +19 -0
- package/lib/langium/keys/default-element-key-provider.d.ts.map +1 -0
- package/lib/langium/keys/default-element-key-provider.js +18 -0
- package/lib/langium/keys/default-element-key-provider.js.map +1 -0
- package/lib/langium/keys/element-key-provider.d.ts +106 -0
- package/lib/langium/keys/element-key-provider.d.ts.map +1 -0
- package/lib/langium/keys/element-key-provider.js +25 -0
- package/lib/langium/keys/element-key-provider.js.map +1 -0
- package/lib/langium/keys/index.d.ts +13 -0
- package/lib/langium/keys/index.d.ts.map +1 -0
- package/lib/langium/keys/index.js +13 -0
- package/lib/langium/keys/index.js.map +1 -0
- package/lib/langium/keys/name-based-key-provider.d.ts +99 -0
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -0
- package/lib/langium/keys/name-based-key-provider.js +134 -0
- package/lib/langium/keys/name-based-key-provider.js.map +1 -0
- package/lib/langium/keys/positional-key-provider.d.ts +41 -0
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -0
- package/lib/langium/keys/positional-key-provider.js +48 -0
- package/lib/langium/keys/positional-key-provider.js.map +1 -0
- package/lib/langium/labeling/index.d.ts +10 -0
- package/lib/langium/labeling/index.d.ts.map +1 -0
- package/lib/langium/labeling/index.js +10 -0
- package/lib/langium/labeling/index.js.map +1 -0
- package/lib/langium/labeling/label-provider.d.ts +79 -0
- package/lib/langium/labeling/label-provider.d.ts.map +1 -0
- package/lib/langium/labeling/label-provider.js +44 -0
- package/lib/langium/labeling/label-provider.js.map +1 -0
- package/lib/langium/language-module.d.ts +281 -0
- package/lib/langium/language-module.d.ts.map +1 -0
- package/lib/langium/language-module.js +103 -0
- package/lib/langium/language-module.js.map +1 -0
- package/lib/langium/language-types.d.ts +85 -0
- package/lib/langium/language-types.d.ts.map +1 -0
- package/lib/langium/language-types.js +173 -0
- package/lib/langium/language-types.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +10 -0
- package/lib/langium/model-service/index.d.ts.map +1 -0
- package/lib/langium/model-service/index.js +10 -0
- package/lib/langium/model-service/index.js.map +1 -0
- package/lib/langium/model-service/model-service.d.ts +598 -0
- package/lib/langium/model-service/model-service.d.ts.map +1 -0
- package/lib/langium/model-service/model-service.js +889 -0
- package/lib/langium/model-service/model-service.js.map +1 -0
- package/lib/langium/module.d.ts +308 -0
- package/lib/langium/module.d.ts.map +1 -0
- package/lib/langium/module.js +165 -0
- package/lib/langium/module.js.map +1 -0
- package/lib/langium/naming/index.d.ts +11 -0
- package/lib/langium/naming/index.d.ts.map +1 -0
- package/lib/langium/naming/index.js +11 -0
- package/lib/langium/naming/index.js.map +1 -0
- package/lib/langium/naming/name-provider.d.ts +360 -0
- package/lib/langium/naming/name-provider.d.ts.map +1 -0
- package/lib/langium/naming/name-provider.js +240 -0
- package/lib/langium/naming/name-provider.js.map +1 -0
- package/lib/langium/naming/name-separator-validation.d.ts +47 -0
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -0
- package/lib/langium/naming/name-separator-validation.js +61 -0
- package/lib/langium/naming/name-separator-validation.js.map +1 -0
- package/lib/langium/project/abstract-project-manager.d.ts +242 -0
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -0
- package/lib/langium/project/abstract-project-manager.js +545 -0
- package/lib/langium/project/abstract-project-manager.js.map +1 -0
- package/lib/langium/project/index.d.ts +13 -0
- package/lib/langium/project/index.d.ts.map +1 -0
- package/lib/langium/project/index.js +13 -0
- package/lib/langium/project/index.js.map +1 -0
- package/lib/langium/project/project-change-event.d.ts +64 -0
- package/lib/langium/project/project-change-event.d.ts.map +1 -0
- package/lib/langium/project/project-change-event.js +10 -0
- package/lib/langium/project/project-change-event.js.map +1 -0
- package/lib/langium/project/project-manager.d.ts +196 -0
- package/lib/langium/project/project-manager.d.ts.map +1 -0
- package/lib/langium/project/project-manager.js +10 -0
- package/lib/langium/project/project-manager.js.map +1 -0
- package/lib/langium/project/single-project-manager.d.ts +69 -0
- package/lib/langium/project/single-project-manager.d.ts.map +1 -0
- package/lib/langium/project/single-project-manager.js +104 -0
- package/lib/langium/project/single-project-manager.js.map +1 -0
- package/lib/langium/residency/cst-residency-service.d.ts +214 -0
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -0
- package/lib/langium/residency/cst-residency-service.js +349 -0
- package/lib/langium/residency/cst-residency-service.js.map +1 -0
- package/lib/langium/residency/index.d.ts +10 -0
- package/lib/langium/residency/index.d.ts.map +1 -0
- package/lib/langium/residency/index.js +10 -0
- package/lib/langium/residency/index.js.map +1 -0
- package/lib/langium/scope/ast-node-description-provider.d.ts +122 -0
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -0
- package/lib/langium/scope/ast-node-description-provider.js +115 -0
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts +163 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.js +220 -0
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-provider.d.ts +411 -0
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -0
- package/lib/langium/scope/hydranium-scope-provider.js +543 -0
- package/lib/langium/scope/hydranium-scope-provider.js.map +1 -0
- package/lib/langium/scope/index.d.ts +18 -0
- package/lib/langium/scope/index.d.ts.map +1 -0
- package/lib/langium/scope/index.js +18 -0
- package/lib/langium/scope/index.js.map +1 -0
- package/lib/langium/scope/reference-builder.d.ts +125 -0
- package/lib/langium/scope/reference-builder.d.ts.map +1 -0
- package/lib/langium/scope/reference-builder.js +115 -0
- package/lib/langium/scope/reference-builder.js.map +1 -0
- package/lib/langium/scope/reference-candidate-provider.d.ts +228 -0
- package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -0
- package/lib/langium/scope/reference-candidate-provider.js +185 -0
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -0
- package/lib/langium/scope/scope-extension-contribution.d.ts +32 -0
- package/lib/langium/scope/scope-extension-contribution.d.ts.map +1 -0
- package/lib/langium/scope/scope-extension-contribution.js +10 -0
- package/lib/langium/scope/scope-extension-contribution.js.map +1 -0
- package/lib/langium/scope/scope-extension-service.d.ts +149 -0
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -0
- package/lib/langium/scope/scope-extension-service.js +94 -0
- package/lib/langium/scope/scope-extension-service.js.map +1 -0
- package/lib/langium/scope/scoped-ast-node-description.d.ts +160 -0
- package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -0
- package/lib/langium/scope/scoped-ast-node-description.js +98 -0
- package/lib/langium/scope/scoped-ast-node-description.js.map +1 -0
- package/lib/langium/scope/tier-specificity.d.ts +47 -0
- package/lib/langium/scope/tier-specificity.d.ts.map +1 -0
- package/lib/langium/scope/tier-specificity.js +83 -0
- package/lib/langium/scope/tier-specificity.js.map +1 -0
- package/lib/langium/serialization/abstract-serializer.d.ts +316 -0
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -0
- package/lib/langium/serialization/abstract-serializer.js +351 -0
- package/lib/langium/serialization/abstract-serializer.js.map +1 -0
- package/lib/langium/serialization/index.d.ts +14 -0
- package/lib/langium/serialization/index.d.ts.map +1 -0
- package/lib/langium/serialization/index.js +14 -0
- package/lib/langium/serialization/index.js.map +1 -0
- package/lib/langium/serialization/json-serializer.d.ts +106 -0
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -0
- package/lib/langium/serialization/json-serializer.js +198 -0
- package/lib/langium/serialization/json-serializer.js.map +1 -0
- package/lib/langium/serialization/serialization-util.d.ts +29 -0
- package/lib/langium/serialization/serialization-util.d.ts.map +1 -0
- package/lib/langium/serialization/serialization-util.js +37 -0
- package/lib/langium/serialization/serialization-util.js.map +1 -0
- package/lib/langium/serialization/serializer.d.ts +66 -0
- package/lib/langium/serialization/serializer.d.ts.map +1 -0
- package/lib/langium/serialization/serializer.js +10 -0
- package/lib/langium/serialization/serializer.js.map +1 -0
- package/lib/langium/serialization/yaml-serializer.d.ts +166 -0
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -0
- package/lib/langium/serialization/yaml-serializer.js +228 -0
- package/lib/langium/serialization/yaml-serializer.js.map +1 -0
- package/lib/langium/service-registry.d.ts +220 -0
- package/lib/langium/service-registry.d.ts.map +1 -0
- package/lib/langium/service-registry.js +258 -0
- package/lib/langium/service-registry.js.map +1 -0
- package/lib/langium/shared-services.d.ts +98 -0
- package/lib/langium/shared-services.d.ts.map +1 -0
- package/lib/langium/shared-services.js +30 -0
- package/lib/langium/shared-services.js.map +1 -0
- package/lib/langium/transfer/index.d.ts +10 -0
- package/lib/langium/transfer/index.d.ts.map +1 -0
- package/lib/langium/transfer/index.js +10 -0
- package/lib/langium/transfer/index.js.map +1 -0
- package/lib/langium/transfer/transfer-encoder.d.ts +294 -0
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -0
- package/lib/langium/transfer/transfer-encoder.js +328 -0
- package/lib/langium/transfer/transfer-encoder.js.map +1 -0
- package/lib/langium/update-rewrite/index.d.ts +14 -0
- package/lib/langium/update-rewrite/index.d.ts.map +1 -0
- package/lib/langium/update-rewrite/index.js +14 -0
- package/lib/langium/update-rewrite/index.js.map +1 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.d.ts +52 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.js +83 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.js.map +1 -0
- package/lib/langium/update-rewrite/semantic-root-rewrite.d.ts +37 -0
- package/lib/langium/update-rewrite/semantic-root-rewrite.d.ts.map +1 -0
- package/lib/langium/update-rewrite/semantic-root-rewrite.js +51 -0
- package/lib/langium/update-rewrite/semantic-root-rewrite.js.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite-contribution.d.ts +42 -0
- package/lib/langium/update-rewrite/update-rewrite-contribution.d.ts.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite-contribution.js +10 -0
- package/lib/langium/update-rewrite/update-rewrite-contribution.js.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts +89 -0
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite-service.js +75 -0
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite.d.ts +59 -0
- package/lib/langium/update-rewrite/update-rewrite.d.ts.map +1 -0
- package/lib/langium/update-rewrite/update-rewrite.js +10 -0
- package/lib/langium/update-rewrite/update-rewrite.js.map +1 -0
- package/lib/langium/validation/document-validator.d.ts +106 -0
- package/lib/langium/validation/document-validator.d.ts.map +1 -0
- package/lib/langium/validation/document-validator.js +118 -0
- package/lib/langium/validation/document-validator.js.map +1 -0
- package/lib/langium/validation/index.d.ts +12 -0
- package/lib/langium/validation/index.d.ts.map +1 -0
- package/lib/langium/validation/index.js +12 -0
- package/lib/langium/validation/index.js.map +1 -0
- package/lib/langium/validation/validation-contribution-collector.d.ts +34 -0
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -0
- package/lib/langium/validation/validation-contribution-collector.js +51 -0
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -0
- package/lib/langium/validation/validation-contribution.d.ts +36 -0
- package/lib/langium/validation/validation-contribution.d.ts.map +1 -0
- package/lib/langium/validation/validation-contribution.js +10 -0
- package/lib/langium/validation/validation-contribution.js.map +1 -0
- package/lib/langium/workspace/additional-document-contribution.d.ts +68 -0
- package/lib/langium/workspace/additional-document-contribution.d.ts.map +1 -0
- package/lib/langium/workspace/additional-document-contribution.js +23 -0
- package/lib/langium/workspace/additional-document-contribution.js.map +1 -0
- package/lib/langium/workspace/document-uri-policy.d.ts +151 -0
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -0
- package/lib/langium/workspace/document-uri-policy.js +121 -0
- package/lib/langium/workspace/document-uri-policy.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +30 -0
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -0
- package/lib/langium/workspace/file-system-provider.js +41 -0
- package/lib/langium/workspace/file-system-provider.js.map +1 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +45 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js +64 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -0
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +31 -0
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -0
- package/lib/langium/workspace/hydranium-workspace-lock.js +33 -0
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -0
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +232 -0
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -0
- package/lib/langium/workspace/hydranium-workspace-manager.js +368 -0
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -0
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +127 -0
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -0
- package/lib/langium/workspace/in-memory-file-system-provider.js +195 -0
- package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -0
- package/lib/langium/workspace/index-manager.d.ts +142 -0
- package/lib/langium/workspace/index-manager.d.ts.map +1 -0
- package/lib/langium/workspace/index-manager.js +245 -0
- package/lib/langium/workspace/index-manager.js.map +1 -0
- package/lib/langium/workspace/index.d.ts +23 -0
- package/lib/langium/workspace/index.d.ts.map +1 -0
- package/lib/langium/workspace/index.js +23 -0
- package/lib/langium/workspace/index.js.map +1 -0
- package/lib/langium/workspace/initialize-workspace.d.ts +63 -0
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -0
- package/lib/langium/workspace/initialize-workspace.js +88 -0
- package/lib/langium/workspace/initialize-workspace.js.map +1 -0
- package/lib/langium/workspace/langium-documents.d.ts +47 -0
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -0
- package/lib/langium/workspace/langium-documents.js +85 -0
- package/lib/langium/workspace/langium-documents.js.map +1 -0
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +207 -0
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -0
- package/lib/langium/workspace/persistent-file-system-provider.js +208 -0
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -0
- package/lib/langium/workspace/synthetic.d.ts +38 -0
- package/lib/langium/workspace/synthetic.d.ts.map +1 -0
- package/lib/langium/workspace/synthetic.js +58 -0
- package/lib/langium/workspace/synthetic.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +78 -0
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -0
- package/lib/langium/workspace/virtual-document.js +89 -0
- package/lib/langium/workspace/virtual-document.js.map +1 -0
- package/lib/langium/workspace/write-lock-scope.d.ts +69 -0
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -0
- package/lib/langium/workspace/write-lock-scope.js +54 -0
- package/lib/langium/workspace/write-lock-scope.js.map +1 -0
- package/lib/launcher/index.d.ts +10 -0
- package/lib/launcher/index.d.ts.map +1 -0
- package/lib/launcher/index.js +12 -0
- package/lib/launcher/index.js.map +1 -0
- package/lib/launcher/integrated-server.d.ts +28 -0
- package/lib/launcher/integrated-server.d.ts.map +1 -0
- package/lib/launcher/integrated-server.js +10 -0
- package/lib/launcher/integrated-server.js.map +1 -0
- package/lib/lsp/completion/hydranium-completion-provider.d.ts +89 -0
- package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -0
- package/lib/lsp/completion/hydranium-completion-provider.js +123 -0
- package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -0
- package/lib/lsp/hydranium-document-update-handler.d.ts +204 -0
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -0
- package/lib/lsp/hydranium-document-update-handler.js +288 -0
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -0
- package/lib/lsp/index.d.ts +23 -0
- package/lib/lsp/index.d.ts.map +1 -0
- package/lib/lsp/index.js +23 -0
- package/lib/lsp/index.js.map +1 -0
- package/lib/lsp/instrument-connection.d.ts +36 -0
- package/lib/lsp/instrument-connection.d.ts.map +1 -0
- package/lib/lsp/instrument-connection.js +62 -0
- package/lib/lsp/instrument-connection.js.map +1 -0
- package/lib/lsp/language-module.d.ts +53 -0
- package/lib/lsp/language-module.d.ts.map +1 -0
- package/lib/lsp/language-module.js +28 -0
- package/lib/lsp/language-module.js.map +1 -0
- package/lib/lsp/semantic-token-provider.d.ts +131 -0
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -0
- package/lib/lsp/semantic-token-provider.js +148 -0
- package/lib/lsp/semantic-token-provider.js.map +1 -0
- package/lib/lsp/shared-module.d.ts +76 -0
- package/lib/lsp/shared-module.d.ts.map +1 -0
- package/lib/lsp/shared-module.js +33 -0
- package/lib/lsp/shared-module.js.map +1 -0
- package/lib/lsp/start-language-server.d.ts +43 -0
- package/lib/lsp/start-language-server.d.ts.map +1 -0
- package/lib/lsp/start-language-server.js +60 -0
- package/lib/lsp/start-language-server.js.map +1 -0
- package/lib/node/ast-ground-truth.d.ts +57 -0
- package/lib/node/ast-ground-truth.d.ts.map +1 -0
- package/lib/node/ast-ground-truth.js +46 -0
- package/lib/node/ast-ground-truth.js.map +1 -0
- package/lib/node/event-loop-monitor.d.ts +40 -0
- package/lib/node/event-loop-monitor.d.ts.map +1 -0
- package/lib/node/event-loop-monitor.js +62 -0
- package/lib/node/event-loop-monitor.js.map +1 -0
- package/lib/node/index.d.ts +29 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +50 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/latency-from-env.d.ts +32 -0
- package/lib/node/latency-from-env.d.ts.map +1 -0
- package/lib/node/latency-from-env.js +36 -0
- package/lib/node/latency-from-env.js.map +1 -0
- package/lib/node/lint-grammar.d.ts +87 -0
- package/lib/node/lint-grammar.d.ts.map +1 -0
- package/lib/node/lint-grammar.js +124 -0
- package/lib/node/lint-grammar.js.map +1 -0
- package/lib/node/log-file-sink.d.ts +22 -0
- package/lib/node/log-file-sink.d.ts.map +1 -0
- package/lib/node/log-file-sink.js +43 -0
- package/lib/node/log-file-sink.js.map +1 -0
- package/lib/node/log-preamble-node.d.ts +28 -0
- package/lib/node/log-preamble-node.d.ts.map +1 -0
- package/lib/node/log-preamble-node.js +55 -0
- package/lib/node/log-preamble-node.js.map +1 -0
- package/lib/node/measure-memory.d.ts +86 -0
- package/lib/node/measure-memory.d.ts.map +1 -0
- package/lib/node/measure-memory.js +128 -0
- package/lib/node/measure-memory.js.map +1 -0
- package/lib/node/memory-monitor.d.ts +42 -0
- package/lib/node/memory-monitor.d.ts.map +1 -0
- package/lib/node/memory-monitor.js +83 -0
- package/lib/node/memory-monitor.js.map +1 -0
- package/lib/node/node-file-system-provider.d.ts +112 -0
- package/lib/node/node-file-system-provider.d.ts.map +1 -0
- package/lib/node/node-file-system-provider.js +230 -0
- package/lib/node/node-file-system-provider.js.map +1 -0
- package/lib/node/process-memory.d.ts +66 -0
- package/lib/node/process-memory.d.ts.map +1 -0
- package/lib/node/process-memory.js +252 -0
- package/lib/node/process-memory.js.map +1 -0
- package/lib/node/profile-capture.d.ts +118 -0
- package/lib/node/profile-capture.d.ts.map +1 -0
- package/lib/node/profile-capture.js +315 -0
- package/lib/node/profile-capture.js.map +1 -0
- package/lib/node/profile-digest.d.ts +49 -0
- package/lib/node/profile-digest.d.ts.map +1 -0
- package/lib/node/profile-digest.js +74 -0
- package/lib/node/profile-digest.js.map +1 -0
- package/lib/node/profiling-run.d.ts +80 -0
- package/lib/node/profiling-run.d.ts.map +1 -0
- package/lib/node/profiling-run.js +183 -0
- package/lib/node/profiling-run.js.map +1 -0
- package/lib/node/reflect-grammar.d.ts +109 -0
- package/lib/node/reflect-grammar.d.ts.map +1 -0
- package/lib/node/reflect-grammar.js +96 -0
- package/lib/node/reflect-grammar.js.map +1 -0
- package/lib/node/server-diagnostics.d.ts +43 -0
- package/lib/node/server-diagnostics.d.ts.map +1 -0
- package/lib/node/server-diagnostics.js +46 -0
- package/lib/node/server-diagnostics.js.map +1 -0
- package/lib/node/server-state-snapshot.d.ts +48 -0
- package/lib/node/server-state-snapshot.d.ts.map +1 -0
- package/lib/node/server-state-snapshot.js +139 -0
- package/lib/node/server-state-snapshot.js.map +1 -0
- package/lib/node/socket-launcher.d.ts +106 -0
- package/lib/node/socket-launcher.d.ts.map +1 -0
- package/lib/node/socket-launcher.js +138 -0
- package/lib/node/socket-launcher.js.map +1 -0
- package/lib/node/stdio-launcher.d.ts +88 -0
- package/lib/node/stdio-launcher.d.ts.map +1 -0
- package/lib/node/stdio-launcher.js +83 -0
- package/lib/node/stdio-launcher.js.map +1 -0
- package/lib/node/validate-workspace.d.ts +80 -0
- package/lib/node/validate-workspace.d.ts.map +1 -0
- package/lib/node/validate-workspace.js +72 -0
- package/lib/node/validate-workspace.js.map +1 -0
- package/lib/node/write-lock-scope-node.d.ts +27 -0
- package/lib/node/write-lock-scope-node.d.ts.map +1 -0
- package/lib/node/write-lock-scope-node.js +38 -0
- package/lib/node/write-lock-scope-node.js.map +1 -0
- package/lib/testing/ast-snapshot.d.ts +38 -0
- package/lib/testing/ast-snapshot.d.ts.map +1 -0
- package/lib/testing/ast-snapshot.js +78 -0
- package/lib/testing/ast-snapshot.js.map +1 -0
- package/lib/testing/document-uri-policy-conformance.d.ts +65 -0
- package/lib/testing/document-uri-policy-conformance.d.ts.map +1 -0
- package/lib/testing/document-uri-policy-conformance.js +69 -0
- package/lib/testing/document-uri-policy-conformance.js.map +1 -0
- package/lib/testing/fake-description.d.ts +35 -0
- package/lib/testing/fake-description.d.ts.map +1 -0
- package/lib/testing/fake-description.js +38 -0
- package/lib/testing/fake-description.js.map +1 -0
- package/lib/testing/fake-document.d.ts +71 -0
- package/lib/testing/fake-document.d.ts.map +1 -0
- package/lib/testing/fake-document.js +85 -0
- package/lib/testing/fake-document.js.map +1 -0
- package/lib/testing/fake-reflection.d.ts +29 -0
- package/lib/testing/fake-reflection.d.ts.map +1 -0
- package/lib/testing/fake-reflection.js +30 -0
- package/lib/testing/fake-reflection.js.map +1 -0
- package/lib/testing/index.d.ts +44 -0
- package/lib/testing/index.d.ts.map +1 -0
- package/lib/testing/index.js +44 -0
- package/lib/testing/index.js.map +1 -0
- package/lib/testing/langium-test-helpers.d.ts +26 -0
- package/lib/testing/langium-test-helpers.d.ts.map +1 -0
- package/lib/testing/langium-test-helpers.js +26 -0
- package/lib/testing/langium-test-helpers.js.map +1 -0
- package/lib/testing/make-noop-language-services.d.ts +39 -0
- package/lib/testing/make-noop-language-services.d.ts.map +1 -0
- package/lib/testing/make-noop-language-services.js +30 -0
- package/lib/testing/make-noop-language-services.js.map +1 -0
- package/lib/testing/make-noop-shared-services.d.ts +61 -0
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -0
- package/lib/testing/make-noop-shared-services.js +49 -0
- package/lib/testing/make-noop-shared-services.js.map +1 -0
- package/lib/testing/make-test-services.d.ts +217 -0
- package/lib/testing/make-test-services.d.ts.map +1 -0
- package/lib/testing/make-test-services.js +128 -0
- package/lib/testing/make-test-services.js.map +1 -0
- package/lib/testing/make-test-tracer.d.ts +67 -0
- package/lib/testing/make-test-tracer.d.ts.map +1 -0
- package/lib/testing/make-test-tracer.js +68 -0
- package/lib/testing/make-test-tracer.js.map +1 -0
- package/lib/testing/node/generated-workspace.d.ts +95 -0
- package/lib/testing/node/generated-workspace.d.ts.map +1 -0
- package/lib/testing/node/generated-workspace.js +134 -0
- package/lib/testing/node/generated-workspace.js.map +1 -0
- package/lib/testing/node/golden-corpus.d.ts +50 -0
- package/lib/testing/node/golden-corpus.d.ts.map +1 -0
- package/lib/testing/node/golden-corpus.js +80 -0
- package/lib/testing/node/golden-corpus.js.map +1 -0
- package/lib/testing/node/index.d.ts +28 -0
- package/lib/testing/node/index.d.ts.map +1 -0
- package/lib/testing/node/index.js +28 -0
- package/lib/testing/node/index.js.map +1 -0
- package/lib/testing/node/lsp-harness.d.ts +139 -0
- package/lib/testing/node/lsp-harness.d.ts.map +1 -0
- package/lib/testing/node/lsp-harness.js +119 -0
- package/lib/testing/node/lsp-harness.js.map +1 -0
- package/lib/testing/node/lsp-server-connection.d.ts +232 -0
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -0
- package/lib/testing/node/lsp-server-connection.js +304 -0
- package/lib/testing/node/lsp-server-connection.js.map +1 -0
- package/lib/testing/node/scratch-workspace.d.ts +60 -0
- package/lib/testing/node/scratch-workspace.d.ts.map +1 -0
- package/lib/testing/node/scratch-workspace.js +87 -0
- package/lib/testing/node/scratch-workspace.js.map +1 -0
- package/lib/testing/node/spawned-server.d.ts +170 -0
- package/lib/testing/node/spawned-server.d.ts.map +1 -0
- package/lib/testing/node/spawned-server.js +265 -0
- package/lib/testing/node/spawned-server.js.map +1 -0
- package/lib/testing/parse-semantic-root.d.ts +83 -0
- package/lib/testing/parse-semantic-root.d.ts.map +1 -0
- package/lib/testing/parse-semantic-root.js +119 -0
- package/lib/testing/parse-semantic-root.js.map +1 -0
- package/lib/testing/playwright/browser-capture-bridge.d.ts +80 -0
- package/lib/testing/playwright/browser-capture-bridge.d.ts.map +1 -0
- package/lib/testing/playwright/browser-capture-bridge.js +161 -0
- package/lib/testing/playwright/browser-capture-bridge.js.map +1 -0
- package/lib/testing/playwright/e2e-profiling.d.ts +132 -0
- package/lib/testing/playwright/e2e-profiling.d.ts.map +1 -0
- package/lib/testing/playwright/e2e-profiling.js +270 -0
- package/lib/testing/playwright/e2e-profiling.js.map +1 -0
- package/lib/testing/playwright/index.d.ts +13 -0
- package/lib/testing/playwright/index.d.ts.map +1 -0
- package/lib/testing/playwright/index.js +16 -0
- package/lib/testing/playwright/index.js.map +1 -0
- package/lib/testing/playwright/server-log-capture.d.ts +230 -0
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -0
- package/lib/testing/playwright/server-log-capture.js +336 -0
- package/lib/testing/playwright/server-log-capture.js.map +1 -0
- package/lib/testing/playwright/server-log-fixture.d.ts +36 -0
- package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -0
- package/lib/testing/playwright/server-log-fixture.js +38 -0
- package/lib/testing/playwright/server-log-fixture.js.map +1 -0
- package/lib/testing/playwright/server-log-rename-reporter.d.ts +22 -0
- package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -0
- package/lib/testing/playwright/server-log-rename-reporter.js +26 -0
- package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -0
- package/lib/testing/run-update-pipeline.d.ts +99 -0
- package/lib/testing/run-update-pipeline.d.ts.map +1 -0
- package/lib/testing/run-update-pipeline.js +24 -0
- package/lib/testing/run-update-pipeline.js.map +1 -0
- package/lib/testing/stub-ast-document-manager.d.ts +82 -0
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -0
- package/lib/testing/stub-ast-document-manager.js +125 -0
- package/lib/testing/stub-ast-document-manager.js.map +1 -0
- package/lib/testing/stub-document-builder.d.ts +99 -0
- package/lib/testing/stub-document-builder.d.ts.map +1 -0
- package/lib/testing/stub-document-builder.js +142 -0
- package/lib/testing/stub-document-builder.js.map +1 -0
- package/lib/testing/stub-hydranium-text-documents.d.ts +125 -0
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -0
- package/lib/testing/stub-hydranium-text-documents.js +164 -0
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -0
- package/lib/testing/stub-index-manager.d.ts +40 -0
- package/lib/testing/stub-index-manager.d.ts.map +1 -0
- package/lib/testing/stub-index-manager.js +38 -0
- package/lib/testing/stub-index-manager.js.map +1 -0
- package/lib/testing/stub-langium-documents.d.ts +53 -0
- package/lib/testing/stub-langium-documents.d.ts.map +1 -0
- package/lib/testing/stub-langium-documents.js +62 -0
- package/lib/testing/stub-langium-documents.js.map +1 -0
- package/lib/testing/stub-model-service.d.ts +31 -0
- package/lib/testing/stub-model-service.d.ts.map +1 -0
- package/lib/testing/stub-model-service.js +45 -0
- package/lib/testing/stub-model-service.js.map +1 -0
- package/lib/testing/stub-project-manager.d.ts +43 -0
- package/lib/testing/stub-project-manager.d.ts.map +1 -0
- package/lib/testing/stub-project-manager.js +125 -0
- package/lib/testing/stub-project-manager.js.map +1 -0
- package/lib/testing/stub-self-save-registry.d.ts +31 -0
- package/lib/testing/stub-self-save-registry.d.ts.map +1 -0
- package/lib/testing/stub-self-save-registry.js +23 -0
- package/lib/testing/stub-self-save-registry.js.map +1 -0
- package/lib/testing/stub-service-registry.d.ts +95 -0
- package/lib/testing/stub-service-registry.d.ts.map +1 -0
- package/lib/testing/stub-service-registry.js +108 -0
- package/lib/testing/stub-service-registry.js.map +1 -0
- package/lib/testing/stub-writable-file-system.d.ts +42 -0
- package/lib/testing/stub-writable-file-system.d.ts.map +1 -0
- package/lib/testing/stub-writable-file-system.js +26 -0
- package/lib/testing/stub-writable-file-system.js.map +1 -0
- package/lib/util/connection-liveness.d.ts +25 -0
- package/lib/util/connection-liveness.d.ts.map +1 -0
- package/lib/util/connection-liveness.js +46 -0
- package/lib/util/connection-liveness.js.map +1 -0
- package/lib/util/environment.d.ts +53 -0
- package/lib/util/environment.d.ts.map +1 -0
- package/lib/util/environment.js +78 -0
- package/lib/util/environment.js.map +1 -0
- package/lib/util/index.d.ts +13 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +18 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/registry.d.ts +88 -0
- package/lib/util/registry.d.ts.map +1 -0
- package/lib/util/registry.js +105 -0
- package/lib/util/registry.js.map +1 -0
- package/package.json +134 -0
- package/src/documents/ast-document-manager.ts +455 -0
- package/src/documents/client-ids.ts +33 -0
- package/src/documents/hydranium-text-documents.ts +1142 -0
- package/src/documents/index.ts +14 -0
- package/src/documents/language-client-text-shadow.ts +175 -0
- package/src/documents/self-save-registry.ts +81 -0
- package/src/index.ts +39 -0
- package/src/langium/ast-extension/ast-extension-contribution.ts +35 -0
- package/src/langium/ast-extension/ast-extension-service.ts +311 -0
- package/src/langium/ast-extension/ast-node-builder.ts +125 -0
- package/src/langium/ast-extension/index.ts +12 -0
- package/src/langium/bootstrap.ts +600 -0
- package/src/langium/build-phase-pass/build-phase-pass-service.ts +141 -0
- package/src/langium/build-phase-pass/build-phase-pass.ts +123 -0
- package/src/langium/build-phase-pass/index.ts +11 -0
- package/src/langium/config/index.ts +10 -0
- package/src/langium/config/settings.ts +353 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +187 -0
- package/src/langium/diagnostics/index.ts +19 -0
- package/src/langium/diagnostics/log-file-token.ts +26 -0
- package/src/langium/diagnostics/log-preamble.ts +87 -0
- package/src/langium/diagnostics/logger.ts +246 -0
- package/src/langium/diagnostics/lsp-logger.ts +277 -0
- package/src/langium/diagnostics/server-tracer.ts +73 -0
- package/src/langium/document-builder/build-pipeline-integration.ts +193 -0
- package/src/langium/document-builder/document-builder.ts +839 -0
- package/src/langium/document-builder/index.ts +12 -0
- package/src/langium/document-builder/labeled-phase-listener.ts +26 -0
- package/src/langium/documentation/comment-provider.ts +37 -0
- package/src/langium/documentation/index.ts +10 -0
- package/src/langium/integration-services.ts +281 -0
- package/src/langium/integrity/index.ts +12 -0
- package/src/langium/integrity/integrity-contribution.ts +44 -0
- package/src/langium/integrity/integrity-rule.ts +100 -0
- package/src/langium/integrity/integrity-service.ts +423 -0
- package/src/langium/keys/default-element-key-provider.ts +20 -0
- package/src/langium/keys/element-key-provider.ts +114 -0
- package/src/langium/keys/index.ts +13 -0
- package/src/langium/keys/name-based-key-provider.ts +146 -0
- package/src/langium/keys/positional-key-provider.ts +57 -0
- package/src/langium/labeling/index.ts +10 -0
- package/src/langium/labeling/label-provider.ts +110 -0
- package/src/langium/language-module.ts +367 -0
- package/src/langium/language-types.ts +214 -0
- package/src/langium/model-service/index.ts +10 -0
- package/src/langium/model-service/model-service.ts +1051 -0
- package/src/langium/module.ts +446 -0
- package/src/langium/naming/index.ts +11 -0
- package/src/langium/naming/name-provider.ts +533 -0
- package/src/langium/naming/name-separator-validation.ts +73 -0
- package/src/langium/project/abstract-project-manager.ts +630 -0
- package/src/langium/project/index.ts +13 -0
- package/src/langium/project/project-change-event.ts +66 -0
- package/src/langium/project/project-manager.ts +221 -0
- package/src/langium/project/single-project-manager.ts +126 -0
- package/src/langium/residency/cst-residency-service.ts +412 -0
- package/src/langium/residency/index.ts +10 -0
- package/src/langium/scope/ast-node-description-provider.ts +141 -0
- package/src/langium/scope/hydranium-scope-computation.ts +246 -0
- package/src/langium/scope/hydranium-scope-provider.ts +659 -0
- package/src/langium/scope/index.ts +18 -0
- package/src/langium/scope/reference-builder.ts +194 -0
- package/src/langium/scope/reference-candidate-provider.ts +314 -0
- package/src/langium/scope/scope-extension-contribution.ts +34 -0
- package/src/langium/scope/scope-extension-service.ts +207 -0
- package/src/langium/scope/scoped-ast-node-description.ts +174 -0
- package/src/langium/scope/tier-specificity.ts +89 -0
- package/src/langium/serialization/abstract-serializer.ts +474 -0
- package/src/langium/serialization/index.ts +14 -0
- package/src/langium/serialization/json-serializer.ts +264 -0
- package/src/langium/serialization/serialization-util.ts +40 -0
- package/src/langium/serialization/serializer.ts +68 -0
- package/src/langium/serialization/yaml-serializer.ts +348 -0
- package/src/langium/service-registry.ts +323 -0
- package/src/langium/shared-services.ts +107 -0
- package/src/langium/transfer/index.ts +10 -0
- package/src/langium/transfer/transfer-encoder.ts +434 -0
- package/src/langium/update-rewrite/index.ts +14 -0
- package/src/langium/update-rewrite/normalize-empty-strings.ts +86 -0
- package/src/langium/update-rewrite/semantic-root-rewrite.ts +57 -0
- package/src/langium/update-rewrite/update-rewrite-contribution.ts +44 -0
- package/src/langium/update-rewrite/update-rewrite-service.ts +129 -0
- package/src/langium/update-rewrite/update-rewrite.ts +60 -0
- package/src/langium/validation/document-validator.ts +188 -0
- package/src/langium/validation/index.ts +12 -0
- package/src/langium/validation/validation-contribution-collector.ts +61 -0
- package/src/langium/validation/validation-contribution.ts +38 -0
- package/src/langium/workspace/additional-document-contribution.ts +80 -0
- package/src/langium/workspace/document-uri-policy.ts +187 -0
- package/src/langium/workspace/file-system-provider.ts +52 -0
- package/src/langium/workspace/hydranium-langium-document-factory.ts +78 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +35 -0
- package/src/langium/workspace/hydranium-workspace-manager.ts +412 -0
- package/src/langium/workspace/in-memory-file-system-provider.ts +241 -0
- package/src/langium/workspace/index-manager.ts +266 -0
- package/src/langium/workspace/index.ts +23 -0
- package/src/langium/workspace/initialize-workspace.ts +102 -0
- package/src/langium/workspace/langium-documents.ts +94 -0
- package/src/langium/workspace/persistent-file-system-provider.ts +287 -0
- package/src/langium/workspace/synthetic.ts +63 -0
- package/src/langium/workspace/virtual-document.ts +94 -0
- package/src/langium/workspace/write-lock-scope.ts +88 -0
- package/src/launcher/index.ts +12 -0
- package/src/launcher/integrated-server.ts +28 -0
- package/src/lsp/completion/hydranium-completion-provider.ts +132 -0
- package/src/lsp/hydranium-document-update-handler.ts +345 -0
- package/src/lsp/index.ts +24 -0
- package/src/lsp/instrument-connection.ts +66 -0
- package/src/lsp/language-module.ts +64 -0
- package/src/lsp/semantic-token-provider.ts +215 -0
- package/src/lsp/shared-module.ts +88 -0
- package/src/lsp/start-language-server.ts +68 -0
- package/src/node/ast-ground-truth.ts +76 -0
- package/src/node/event-loop-monitor.ts +89 -0
- package/src/node/index.ts +53 -0
- package/src/node/latency-from-env.ts +39 -0
- package/src/node/lint-grammar.ts +189 -0
- package/src/node/log-file-sink.ts +43 -0
- package/src/node/log-preamble-node.ts +63 -0
- package/src/node/measure-memory.ts +196 -0
- package/src/node/memory-monitor.ts +103 -0
- package/src/node/node-file-system-provider.ts +252 -0
- package/src/node/process-memory.ts +299 -0
- package/src/node/profile-capture.ts +377 -0
- package/src/node/profile-digest.ts +112 -0
- package/src/node/profiling-run.ts +236 -0
- package/src/node/reflect-grammar.ts +182 -0
- package/src/node/server-diagnostics.ts +63 -0
- package/src/node/server-state-snapshot.ts +192 -0
- package/src/node/socket-launcher.ts +210 -0
- package/src/node/stdio-launcher.ts +150 -0
- package/src/node/validate-workspace.ts +133 -0
- package/src/node/write-lock-scope-node.ts +41 -0
- package/src/testing/ast-snapshot.ts +88 -0
- package/src/testing/document-uri-policy-conformance.ts +104 -0
- package/src/testing/fake-description.ts +52 -0
- package/src/testing/fake-document.ts +120 -0
- package/src/testing/fake-reflection.ts +39 -0
- package/src/testing/index.ts +45 -0
- package/src/testing/langium-test-helpers.ts +26 -0
- package/src/testing/make-noop-language-services.ts +47 -0
- package/src/testing/make-noop-shared-services.ts +78 -0
- package/src/testing/make-test-services.ts +356 -0
- package/src/testing/make-test-tracer.ts +92 -0
- package/src/testing/node/generated-workspace.ts +222 -0
- package/src/testing/node/golden-corpus.ts +114 -0
- package/src/testing/node/index.ts +29 -0
- package/src/testing/node/lsp-harness.ts +230 -0
- package/src/testing/node/lsp-server-connection.ts +575 -0
- package/src/testing/node/scratch-workspace.ts +137 -0
- package/src/testing/node/spawned-server.ts +447 -0
- package/src/testing/parse-semantic-root.ts +150 -0
- package/src/testing/playwright/browser-capture-bridge.ts +258 -0
- package/src/testing/playwright/e2e-profiling.ts +362 -0
- package/src/testing/playwright/index.ts +16 -0
- package/src/testing/playwright/server-log-capture.ts +433 -0
- package/src/testing/playwright/server-log-fixture.ts +57 -0
- package/src/testing/playwright/server-log-rename-reporter.ts +29 -0
- package/src/testing/run-update-pipeline.ts +113 -0
- package/src/testing/stub-ast-document-manager.ts +224 -0
- package/src/testing/stub-document-builder.ts +242 -0
- package/src/testing/stub-hydranium-text-documents.ts +270 -0
- package/src/testing/stub-index-manager.ts +79 -0
- package/src/testing/stub-langium-documents.ts +104 -0
- package/src/testing/stub-model-service.ts +72 -0
- package/src/testing/stub-project-manager.ts +161 -0
- package/src/testing/stub-self-save-registry.ts +43 -0
- package/src/testing/stub-service-registry.ts +192 -0
- package/src/testing/stub-writable-file-system.ts +58 -0
- package/src/util/connection-liveness.ts +47 -0
- package/src/util/environment.ts +88 -0
- package/src/util/index.ts +18 -0
- package/src/util/registry.ts +129 -0
|
@@ -0,0 +1,204 @@
|
|
|
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 { Debouncer, type Logger, ObservableValue, type MaybeObservableValue } from '@hydranium/protocol';
|
|
10
|
+
import { URI } from '@hydranium/langium';
|
|
11
|
+
import { DefaultDocumentUpdateHandler } from '@hydranium/langium/lsp';
|
|
12
|
+
import { type HydraniumDocumentBuilder } from '../langium/document-builder/document-builder.js';
|
|
13
|
+
import { type ServerSharedServices } from '../langium/module.js';
|
|
14
|
+
import { type SelfSaveRegistry } from '../documents/self-save-registry.js';
|
|
15
|
+
import { type WritableFileSystemProvider } from '../documents/ast-document-manager.js';
|
|
16
|
+
import { type HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
|
|
17
|
+
import { type DidChangeWatchedFilesParams, type TextDocumentChangeEvent } from 'vscode-languageserver';
|
|
18
|
+
import { type TextDocument } from 'vscode-languageserver-textdocument';
|
|
19
|
+
/**
|
|
20
|
+
* Default LSP-event reasons stamped by {@link HydraniumDocumentUpdateHandler}
|
|
21
|
+
* onto the next `documentBuilder.update` call via `markNextReason`. Exposed
|
|
22
|
+
* so adopters subclassing the handler can layer additional reasons or rename
|
|
23
|
+
* existing ones without losing the canonical names the framework emits.
|
|
24
|
+
*/
|
|
25
|
+
export declare const HYDRANIUM_BUILD_REASONS: Readonly<{
|
|
26
|
+
readonly didOpen: "didOpen";
|
|
27
|
+
readonly didChangeContent: "didChangeContent";
|
|
28
|
+
readonly didChangeWatchedFiles: "didChangeWatchedFiles";
|
|
29
|
+
readonly didClose: "didClose";
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Construction options for {@link HydraniumDocumentUpdateHandler}.
|
|
33
|
+
*/
|
|
34
|
+
export interface HydraniumDocumentUpdateHandlerOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Trailing-edge debounce window. `0` (the default) disables
|
|
37
|
+
* debouncing — `didChangeContent` flows synchronously into
|
|
38
|
+
* `fireDocumentUpdate` as in Langium's default. Accepts an
|
|
39
|
+
* {@link MaybeObservableValue} so adopters can bind to a user setting via
|
|
40
|
+
* `Settings.number`; updates to the underlying snapshot reshape
|
|
41
|
+
* the live debounce window without rebuilding the handler.
|
|
42
|
+
*/
|
|
43
|
+
readonly debounceMs?: MaybeObservableValue<number>;
|
|
44
|
+
/**
|
|
45
|
+
* Bypass debouncing for changes whose author is anything other
|
|
46
|
+
* than the language client (Monaco). GLSP / form-editor /
|
|
47
|
+
* integrity-rule author changes are already coalesced upstream —
|
|
48
|
+
* debouncing them adds latency for no benefit. Default `true`.
|
|
49
|
+
*
|
|
50
|
+
* Adopters disable this when they want uniform debouncing
|
|
51
|
+
* regardless of source (rare — typically only for synthetic
|
|
52
|
+
* load tests).
|
|
53
|
+
*/
|
|
54
|
+
readonly bypassNonLanguageClientChanges?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Framework `DocumentUpdateHandler` adding these behaviours over Langium's
|
|
58
|
+
* default:
|
|
59
|
+
*
|
|
60
|
+
* 1. **Self-save filter** ({@link filterSelfSaves}) — drops
|
|
61
|
+
* watched-file-change echoes for the server's own writes via
|
|
62
|
+
* {@link SelfSaveRegistry}, keyed by `fsPath` + mtime.
|
|
63
|
+
* 2. **Trailing-edge debouncing** — collapses rapid
|
|
64
|
+
* `didChangeContent` calls into one rebuild on the trailing
|
|
65
|
+
* edge of the configured window. Non-language-client author
|
|
66
|
+
* changes and watched-file changes bypass the debounce (their
|
|
67
|
+
* producers are already coalesced).
|
|
68
|
+
* 3. **Build-reason stamping** — the LSP event overrides
|
|
69
|
+
* (`didOpenDocument`, `didChangeContent`, `didChangeWatchedFiles`,
|
|
70
|
+
* `didCloseDocument`) populate {@link nextReason} with a canonical
|
|
71
|
+
* reason string. {@link fireDocumentUpdate} captures the reason;
|
|
72
|
+
* {@link dispatch} stages it on the builder via
|
|
73
|
+
* {@link HydraniumDocumentBuilder.markNextReason}, so a subclass that
|
|
74
|
+
* formats build logs can tag its line with the event that caused the
|
|
75
|
+
* build without per-adopter wiring to capture it.
|
|
76
|
+
* 4. **Last-client-close rebuild trigger** ({@link didCloseDocument}) —
|
|
77
|
+
* when the final client closes a document, dispatch a build so the
|
|
78
|
+
* LangiumDocument's `textDocument` is refreshed (from disk for `file:`
|
|
79
|
+
* URIs, or removed from the index for ephemeral URIs). Langium's
|
|
80
|
+
* default handler does not implement `didCloseDocument`, so the
|
|
81
|
+
* in-memory text of the last writer would otherwise persist.
|
|
82
|
+
*
|
|
83
|
+
* Adopters with their own handler subclass should extend this class
|
|
84
|
+
* (not Langium's `DefaultDocumentUpdateHandler`) so all of them are
|
|
85
|
+
* preserved. The {@link dispatch} hook is the canonical override
|
|
86
|
+
* point for adopters that need to stamp additional per-build metadata
|
|
87
|
+
* inside the workspace-lock callback.
|
|
88
|
+
*/
|
|
89
|
+
export declare class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler {
|
|
90
|
+
/**
|
|
91
|
+
* Narrow Langium's `DefaultDocumentUpdateHandler.documentBuilder` typing to
|
|
92
|
+
* the framework subclass: `markNextReason` is the only method this handler
|
|
93
|
+
* reaches for beyond the Langium interface.
|
|
94
|
+
*/
|
|
95
|
+
protected readonly documentBuilder: HydraniumDocumentBuilder;
|
|
96
|
+
protected readonly logger: Logger;
|
|
97
|
+
protected readonly selfSaveRegistry: SelfSaveRegistry;
|
|
98
|
+
protected readonly fileSystemProvider: WritableFileSystemProvider;
|
|
99
|
+
protected readonly textDocuments: HydraniumTextDocuments<TextDocument>;
|
|
100
|
+
/** Live debounce window — a constant or a setting-bound cell; read `.value` per flush. */
|
|
101
|
+
protected readonly debounce: ObservableValue<number>;
|
|
102
|
+
protected readonly bypassNonLanguageClientChanges: boolean;
|
|
103
|
+
/** Accumulated changed / deleted URIs awaiting the next debounced flush. Keyed by URI string so duplicates merge. */
|
|
104
|
+
protected pendingChanged: Map<string, URI>;
|
|
105
|
+
protected pendingDeleted: Map<string, URI>;
|
|
106
|
+
/** Trailing-edge timing for the coalesced flush; the pending sets above are the payload it drains. */
|
|
107
|
+
protected readonly flushDebouncer: Debouncer;
|
|
108
|
+
/** Flush on the next `fireDocumentUpdate` instead of debouncing — set by the LSP event handlers when the source isn't typing. */
|
|
109
|
+
protected immediateFlush: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Build-reason for the next `fireDocumentUpdate`, stamped by the LSP
|
|
112
|
+
* event overrides. `??=` semantics in `didChangeContent` preserve a
|
|
113
|
+
* prior `'didOpen'` stamp because Langium fires `didOpen` then
|
|
114
|
+
* `didChangeContent` on document open — the open semantics are the
|
|
115
|
+
* authoritative trigger for that pair, not the content change.
|
|
116
|
+
*/
|
|
117
|
+
protected nextReason?: string;
|
|
118
|
+
/**
|
|
119
|
+
* Build-reason captured at `fireDocumentUpdate` time, drained by
|
|
120
|
+
* {@link dispatch} into `markNextReason`. Survives across debounced
|
|
121
|
+
* batches (`?? pendingReason` in `fireDocumentUpdate` retains the
|
|
122
|
+
* first reason in a coalesced burst).
|
|
123
|
+
*/
|
|
124
|
+
protected pendingReason?: string;
|
|
125
|
+
constructor(services: ServerSharedServices, options?: HydraniumDocumentUpdateHandlerOptions);
|
|
126
|
+
didOpenDocument(_change: TextDocumentChangeEvent<TextDocument>): void;
|
|
127
|
+
didChangeContent(change: TextDocumentChangeEvent<TextDocument>): void;
|
|
128
|
+
/**
|
|
129
|
+
* Last-client close is the missing rebuild trigger in Langium's
|
|
130
|
+
* `DefaultDocumentUpdateHandler`: `documents.onDidClose` fires on every
|
|
131
|
+
* per-client close, but the default handler ignores the event entirely.
|
|
132
|
+
* For multi-client servers this leaves the LangiumDocument carrying the
|
|
133
|
+
* unsaved in-memory `textDocument` of the last writer until something
|
|
134
|
+
* else triggers a rebuild — integrity rules walking `langiumDocuments.all`
|
|
135
|
+
* then see stale text long after the user discarded their edits.
|
|
136
|
+
*
|
|
137
|
+
* We funnel the last-client transition through the same dispatch path
|
|
138
|
+
* the other LSP events use, so the rebuild gets debouncing, workspace
|
|
139
|
+
* locking, build-reason stamping, and `markNextReason` for free. The
|
|
140
|
+
* scheme split governs the `DocumentBuilder.update` shape:
|
|
141
|
+
*
|
|
142
|
+
* - **`file:` URI** → `update([uri], [])`. Routes through
|
|
143
|
+
* `LangiumDocuments.invalidateDocument` (doc stays in the trie) and
|
|
144
|
+
* `LangiumDocumentFactory.update`, which consults the LSP-tracked
|
|
145
|
+
* open-documents map first. That map is cleared LATER in the same
|
|
146
|
+
* synchronous `notifyDidCloseTextDocument` call that fires this event,
|
|
147
|
+
* and {@link dispatch} defers the build behind `workspaceManager.ready`
|
|
148
|
+
* — so by the time the factory looks, the URI is gone: it falls back to
|
|
149
|
+
* `FileSystemProvider.readFile` and the doc rebuilds from disk,
|
|
150
|
+
* Langium's canonical close-without-save semantic. A dispatch made
|
|
151
|
+
* synchronously here would still see the open document and re-read the
|
|
152
|
+
* in-memory text instead.
|
|
153
|
+
* - **non-`file:` URI** (`builtin:`, `untitled:`) → no dispatch.
|
|
154
|
+
* Adopter-loaded schemes — documents pulled in via
|
|
155
|
+
* `loadAdditionalDocuments` — need to stay in the workspace index;
|
|
156
|
+
* dropping them on close would break every cross-reference that
|
|
157
|
+
* targets them. The framework cannot enumerate adopter schemes, so the
|
|
158
|
+
* safe default is "leave alone unless it's a file." Adopters that need
|
|
159
|
+
* ephemeral-URI cleanup handle it explicitly.
|
|
160
|
+
*
|
|
161
|
+
* Per-client closes (where other clients still hold the URI) are
|
|
162
|
+
* suppressed via {@link HydraniumTextDocuments.isOpenInAnyClient}.
|
|
163
|
+
*/
|
|
164
|
+
didCloseDocument(change: TextDocumentChangeEvent<TextDocument>): void;
|
|
165
|
+
didChangeWatchedFiles(params: DidChangeWatchedFilesParams): void;
|
|
166
|
+
/**
|
|
167
|
+
* Drop watched-file changes whose path + mtime match a recent self-save
|
|
168
|
+
* record. Deletions always pass (no mtime); stat failures pass (the
|
|
169
|
+
* change is real enough). Keyed by `fsPath` to avoid URI-form
|
|
170
|
+
* mismatches between watcher payloads and write-time records. Stats run
|
|
171
|
+
* in parallel — order in the output is irrelevant; the consumer
|
|
172
|
+
* aggregates URIs into changed/deleted sets.
|
|
173
|
+
*/
|
|
174
|
+
protected filterSelfSaves(params: DidChangeWatchedFilesParams): Promise<DidChangeWatchedFilesParams>;
|
|
175
|
+
/**
|
|
176
|
+
* Coalesce `changed` / `deleted` into the pending sets, then either
|
|
177
|
+
* flush immediately (`immediateFlush` or `debounceMs <= 0`) or restart
|
|
178
|
+
* the trailing-edge timer. Subclasses that need to stamp per-build
|
|
179
|
+
* metadata can override and inspect the merged sets — but the canonical
|
|
180
|
+
* override point for the workspace-lock callback is {@link dispatch},
|
|
181
|
+
* not this method.
|
|
182
|
+
*/
|
|
183
|
+
protected fireDocumentUpdate(changed: URI[], deleted: URI[]): void;
|
|
184
|
+
/**
|
|
185
|
+
* Drain the pending sets and dispatch a single build. Public so tests
|
|
186
|
+
* can flush deterministically and shutdown paths can drain any
|
|
187
|
+
* trailing-edge updates that would otherwise be lost when the timer
|
|
188
|
+
* never fires.
|
|
189
|
+
*/
|
|
190
|
+
flushPending(): void;
|
|
191
|
+
/**
|
|
192
|
+
* Workspace-lock + `documentBuilder.update` call for the merged sets.
|
|
193
|
+
* Mirrors Langium's `super.fireDocumentUpdate` body plus
|
|
194
|
+
* `markNextReason(pendingReason)` inside the write-lock callback, so the
|
|
195
|
+
* build the lock is about to run carries the LSP event that triggered it.
|
|
196
|
+
* Adopters override to stamp additional per-build metadata — the canonical
|
|
197
|
+
* pattern is to read the reason via `this.pendingReason`, call
|
|
198
|
+
* `super.dispatch(...)` or replicate the
|
|
199
|
+
* `workspaceManager.ready -> workspaceLock.write` block, and add
|
|
200
|
+
* adopter-specific behaviour inside the write callback.
|
|
201
|
+
*/
|
|
202
|
+
protected dispatch(changed: URI[], deleted: URI[]): void;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=hydranium-document-update-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydranium-document-update-handler.d.ts","sourceRoot":"","sources":["../../src/lsp/hydranium-document-update-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,288 @@
|
|
|
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 { Debouncer, ObservableValue } from '@hydranium/protocol';
|
|
10
|
+
import { URI, UriUtils } from '@hydranium/langium';
|
|
11
|
+
import { DefaultDocumentUpdateHandler } from '@hydranium/langium/lsp';
|
|
12
|
+
import { LANGUAGE_CLIENT_ID } from '../documents/client-ids.js';
|
|
13
|
+
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
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Framework `DocumentUpdateHandler` adding these behaviours over Langium's
|
|
28
|
+
* default:
|
|
29
|
+
*
|
|
30
|
+
* 1. **Self-save filter** ({@link filterSelfSaves}) — drops
|
|
31
|
+
* watched-file-change echoes for the server's own writes via
|
|
32
|
+
* {@link SelfSaveRegistry}, keyed by `fsPath` + mtime.
|
|
33
|
+
* 2. **Trailing-edge debouncing** — collapses rapid
|
|
34
|
+
* `didChangeContent` calls into one rebuild on the trailing
|
|
35
|
+
* edge of the configured window. Non-language-client author
|
|
36
|
+
* changes and watched-file changes bypass the debounce (their
|
|
37
|
+
* producers are already coalesced).
|
|
38
|
+
* 3. **Build-reason stamping** — the LSP event overrides
|
|
39
|
+
* (`didOpenDocument`, `didChangeContent`, `didChangeWatchedFiles`,
|
|
40
|
+
* `didCloseDocument`) populate {@link nextReason} with a canonical
|
|
41
|
+
* reason string. {@link fireDocumentUpdate} captures the reason;
|
|
42
|
+
* {@link dispatch} stages it on the builder via
|
|
43
|
+
* {@link HydraniumDocumentBuilder.markNextReason}, so a subclass that
|
|
44
|
+
* formats build logs can tag its line with the event that caused the
|
|
45
|
+
* build without per-adopter wiring to capture it.
|
|
46
|
+
* 4. **Last-client-close rebuild trigger** ({@link didCloseDocument}) —
|
|
47
|
+
* when the final client closes a document, dispatch a build so the
|
|
48
|
+
* LangiumDocument's `textDocument` is refreshed (from disk for `file:`
|
|
49
|
+
* URIs, or removed from the index for ephemeral URIs). Langium's
|
|
50
|
+
* default handler does not implement `didCloseDocument`, so the
|
|
51
|
+
* in-memory text of the last writer would otherwise persist.
|
|
52
|
+
*
|
|
53
|
+
* Adopters with their own handler subclass should extend this class
|
|
54
|
+
* (not Langium's `DefaultDocumentUpdateHandler`) so all of them are
|
|
55
|
+
* 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.
|
|
58
|
+
*/
|
|
59
|
+
export class HydraniumDocumentUpdateHandler extends DefaultDocumentUpdateHandler {
|
|
60
|
+
logger;
|
|
61
|
+
selfSaveRegistry;
|
|
62
|
+
fileSystemProvider;
|
|
63
|
+
textDocuments;
|
|
64
|
+
/** Live debounce window — a constant or a setting-bound cell; read `.value` per flush. */
|
|
65
|
+
debounce;
|
|
66
|
+
bypassNonLanguageClientChanges;
|
|
67
|
+
/** Accumulated changed / deleted URIs awaiting the next debounced flush. Keyed by URI string so duplicates merge. */
|
|
68
|
+
pendingChanged = new Map();
|
|
69
|
+
pendingDeleted = new Map();
|
|
70
|
+
/** Trailing-edge timing for the coalesced flush; the pending sets above are the payload it drains. */
|
|
71
|
+
flushDebouncer;
|
|
72
|
+
/** Flush on the next `fireDocumentUpdate` instead of debouncing — set by the LSP event handlers when the source isn't typing. */
|
|
73
|
+
immediateFlush = false;
|
|
74
|
+
/**
|
|
75
|
+
* Build-reason for the next `fireDocumentUpdate`, stamped by the LSP
|
|
76
|
+
* event overrides. `??=` semantics in `didChangeContent` preserve a
|
|
77
|
+
* prior `'didOpen'` stamp because Langium fires `didOpen` then
|
|
78
|
+
* `didChangeContent` on document open — the open semantics are the
|
|
79
|
+
* authoritative trigger for that pair, not the content change.
|
|
80
|
+
*/
|
|
81
|
+
nextReason;
|
|
82
|
+
/**
|
|
83
|
+
* Build-reason captured at `fireDocumentUpdate` time, drained by
|
|
84
|
+
* {@link dispatch} into `markNextReason`. Survives across debounced
|
|
85
|
+
* batches (`?? pendingReason` in `fireDocumentUpdate` retains the
|
|
86
|
+
* first reason in a coalesced burst).
|
|
87
|
+
*/
|
|
88
|
+
pendingReason;
|
|
89
|
+
constructor(services, options = {}) {
|
|
90
|
+
super(services);
|
|
91
|
+
this.logger = services.Logger;
|
|
92
|
+
this.selfSaveRegistry = services.workspace.SelfSaveRegistry;
|
|
93
|
+
this.fileSystemProvider = services.workspace.FileSystemProvider;
|
|
94
|
+
this.textDocuments = services.workspace.TextDocuments;
|
|
95
|
+
this.debounce = ObservableValue.from(options.debounceMs ?? 0);
|
|
96
|
+
this.flushDebouncer = new Debouncer(services.Clock, () => this.flushPending(), { delayMs: this.debounce });
|
|
97
|
+
this.bypassNonLanguageClientChanges = options.bypassNonLanguageClientChanges ?? true;
|
|
98
|
+
}
|
|
99
|
+
didOpenDocument(_change) {
|
|
100
|
+
// Langium also fires `didChangeContent` on open, which is what triggers
|
|
101
|
+
// `fireDocumentUpdate`. Stamp the reason here so the trailing
|
|
102
|
+
// `didChangeContent` preserves it via `??=`. Bypass debouncing so the
|
|
103
|
+
// LangiumDocument is in the index before consumers (model service,
|
|
104
|
+
// form-editor, GLSP) try to read it.
|
|
105
|
+
this.nextReason = HYDRANIUM_BUILD_REASONS.didOpen;
|
|
106
|
+
this.immediateFlush = true;
|
|
107
|
+
}
|
|
108
|
+
didChangeContent(change) {
|
|
109
|
+
// `??=` preserves a prior `'didOpen'` stamp (Langium fires didOpen
|
|
110
|
+
// immediately before didChangeContent on document open).
|
|
111
|
+
this.nextReason ??= HYDRANIUM_BUILD_REASONS.didChangeContent;
|
|
112
|
+
// Bypass debouncing for non-Monaco author changes (GLSP node moves, form-editor
|
|
113
|
+
// saves, integrity-rule mutations) — their producers already coalesce upstream.
|
|
114
|
+
if (this.bypassNonLanguageClientChanges && this.textDocuments.getAuthor(change.document.uri) !== LANGUAGE_CLIENT_ID) {
|
|
115
|
+
this.immediateFlush = true;
|
|
116
|
+
}
|
|
117
|
+
super.didChangeContent(change);
|
|
118
|
+
}
|
|
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
|
+
didChangeWatchedFiles(params) {
|
|
168
|
+
void this.filterSelfSaves(params)
|
|
169
|
+
.then(filtered => {
|
|
170
|
+
if (filtered.changes.length === 0) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
// External file-system changes are authoritative — overwrite any
|
|
174
|
+
// pending reason (typically empty here; could be `didChangeContent`
|
|
175
|
+
// if a watcher event raced an in-flight Monaco edit, in which case
|
|
176
|
+
// the watcher event is the more interesting trigger to log).
|
|
177
|
+
this.nextReason = HYDRANIUM_BUILD_REASONS.didChangeWatchedFiles;
|
|
178
|
+
// External file-system changes are discrete events — flush immediately
|
|
179
|
+
// rather than coalescing with in-flight Monaco typing.
|
|
180
|
+
this.immediateFlush = true;
|
|
181
|
+
super.didChangeWatchedFiles(filtered);
|
|
182
|
+
})
|
|
183
|
+
.catch(err => {
|
|
184
|
+
// The rejection would otherwise reach the process-level
|
|
185
|
+
// `unhandledRejection` listener, which reports neither the URIs nor
|
|
186
|
+
// the fact that a watched-file rebuild was dropped — leaving the
|
|
187
|
+
// workspace diverged from disk with no diagnostic and no retry.
|
|
188
|
+
const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
189
|
+
const uris = params.changes.map(change => change.uri).join(', ');
|
|
190
|
+
this.logger.error(`Watched-file update dropped for ${uris}. ${detail}`);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Drop watched-file changes whose path + mtime match a recent self-save
|
|
195
|
+
* record. Deletions always pass (no mtime); stat failures pass (the
|
|
196
|
+
* change is real enough). Keyed by `fsPath` to avoid URI-form
|
|
197
|
+
* mismatches between watcher payloads and write-time records. Stats run
|
|
198
|
+
* in parallel — order in the output is irrelevant; the consumer
|
|
199
|
+
* aggregates URIs into changed/deleted sets.
|
|
200
|
+
*/
|
|
201
|
+
async filterSelfSaves(params) {
|
|
202
|
+
const kept = await Promise.all(params.changes.map(async (change) => {
|
|
203
|
+
if (change.type === FileChangeType.Deleted) {
|
|
204
|
+
return change;
|
|
205
|
+
}
|
|
206
|
+
const uri = UriUtils.toUri(change.uri);
|
|
207
|
+
const mtimeMs = await this.fileSystemProvider.mtimeMs?.(uri);
|
|
208
|
+
if (mtimeMs !== undefined && this.selfSaveRegistry.matches(uri.fsPath, mtimeMs)) {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
return change;
|
|
212
|
+
}));
|
|
213
|
+
return { changes: kept.filter((change) => change !== undefined) };
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Coalesce `changed` / `deleted` into the pending sets, then either
|
|
217
|
+
* flush immediately (`immediateFlush` or `debounceMs <= 0`) or restart
|
|
218
|
+
* the trailing-edge timer. Subclasses that need to stamp per-build
|
|
219
|
+
* metadata can override and inspect the merged sets — but the canonical
|
|
220
|
+
* override point for the workspace-lock callback is {@link dispatch},
|
|
221
|
+
* not this method.
|
|
222
|
+
*/
|
|
223
|
+
fireDocumentUpdate(changed, deleted) {
|
|
224
|
+
// Capture the reason set by the LSP event handler immediately before
|
|
225
|
+
// we merge into the pending sets. `?? pendingReason` keeps the
|
|
226
|
+
// first reason in a coalesced burst (LSP events arriving inside an
|
|
227
|
+
// active debounce window all stamp the same `pendingReason` once,
|
|
228
|
+
// because subsequent stamps see the field already non-undefined).
|
|
229
|
+
this.pendingReason = this.nextReason ?? this.pendingReason;
|
|
230
|
+
this.nextReason = undefined;
|
|
231
|
+
for (const uri of changed) {
|
|
232
|
+
this.pendingChanged.set(uri.toString(), uri);
|
|
233
|
+
}
|
|
234
|
+
for (const uri of deleted) {
|
|
235
|
+
const key = uri.toString();
|
|
236
|
+
this.pendingDeleted.set(key, uri);
|
|
237
|
+
this.pendingChanged.delete(key);
|
|
238
|
+
}
|
|
239
|
+
if (this.immediateFlush || this.debounce.value <= 0) {
|
|
240
|
+
this.immediateFlush = false;
|
|
241
|
+
this.flushPending(); // cancels any armed flush, then drains
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
this.flushDebouncer.schedule();
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Drain the pending sets and dispatch a single build. Public so tests
|
|
248
|
+
* can flush deterministically and shutdown paths can drain any
|
|
249
|
+
* trailing-edge updates that would otherwise be lost when the timer
|
|
250
|
+
* never fires.
|
|
251
|
+
*/
|
|
252
|
+
flushPending() {
|
|
253
|
+
this.flushDebouncer.cancel();
|
|
254
|
+
const changed = Array.from(this.pendingChanged.values());
|
|
255
|
+
const deleted = Array.from(this.pendingDeleted.values());
|
|
256
|
+
this.pendingChanged.clear();
|
|
257
|
+
this.pendingDeleted.clear();
|
|
258
|
+
if (changed.length === 0 && deleted.length === 0) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
this.dispatch(changed, deleted);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Workspace-lock + `documentBuilder.update` call for the merged sets.
|
|
265
|
+
* Mirrors Langium's `super.fireDocumentUpdate` body plus
|
|
266
|
+
* `markNextReason(pendingReason)` inside the write-lock callback, so the
|
|
267
|
+
* build the lock is about to run carries the LSP event that triggered it.
|
|
268
|
+
* Adopters override to stamp additional per-build metadata — the canonical
|
|
269
|
+
* pattern is to read the reason via `this.pendingReason`, call
|
|
270
|
+
* `super.dispatch(...)` or replicate the
|
|
271
|
+
* `workspaceManager.ready -> workspaceLock.write` block, and add
|
|
272
|
+
* adopter-specific behaviour inside the write callback.
|
|
273
|
+
*/
|
|
274
|
+
dispatch(changed, deleted) {
|
|
275
|
+
const reason = this.pendingReason;
|
|
276
|
+
this.pendingReason = undefined;
|
|
277
|
+
this.workspaceManager.ready
|
|
278
|
+
.then(() => this.workspaceLock.write(token => {
|
|
279
|
+
this.documentBuilder.markNextReason(reason);
|
|
280
|
+
return this.documentBuilder.update(changed, deleted, token);
|
|
281
|
+
}))
|
|
282
|
+
.catch(err => {
|
|
283
|
+
const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
284
|
+
this.logger.error(`Workspace initialization failed. Could not perform document update. ${detail}`);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=hydranium-document-update-handler.js.map
|
|
@@ -0,0 +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,EAAE,SAAS,EAAe,eAAe,EAA6B,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,OAAO,EAAoD,cAAc,EAAgC,MAAM,uBAAuB,CAAC;AAGvI;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,qBAAqB,EAAE,uBAAuB;IAC9C,QAAQ,EAAE,UAAU;CACb,CAAC,CAAC;AA4BZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,8BAA+B,SAAQ,4BAA4B;IAQ1D,MAAM,CAAS;IACf,gBAAgB,CAAmB;IACnC,kBAAkB,CAA6B;IAC/C,aAAa,CAAuC;IAEvE,0FAA0F;IACvE,QAAQ,CAA0B;IAClC,8BAA8B,CAAU;IAE3D,qHAAqH;IAC3G,cAAc,GAAG,IAAI,GAAG,EAAe,CAAC;IACxC,cAAc,GAAG,IAAI,GAAG,EAAe,CAAC;IAClD,sGAAsG;IACnF,cAAc,CAAY;IAC7C,iIAAiI;IACvH,cAAc,GAAG,KAAK,CAAC;IAEjC;;;;;;OAMG;IACO,UAAU,CAAU;IAC9B;;;;;OAKG;IACO,aAAa,CAAU;IAEjC,YAAY,QAA8B,EAAE,UAAiD,EAAE;QAC5F,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,IAAI,IAAI,CAAC;IACxF,CAAC;IAED,eAAe,CAAC,OAA8C;QAC3D,wEAAwE;QACxE,8DAA8D;QAC9D,sEAAsE;QACtE,mEAAmE;QACnE,qCAAqC;QACrC,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC9B,CAAC;IAEQ,gBAAgB,CAAC,MAA6C;QACpE,mEAAmE;QACnE,yDAAyD;QACzD,IAAI,CAAC,UAAU,KAAK,uBAAuB,CAAC,gBAAgB,CAAC;QAC7D,gFAAgF;QAChF,gFAAgF;QAChF,IAAI,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,kBAAkB,EAAE,CAAC;YACnH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,gBAAgB,CAAC,MAA6C;QAC3D,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO;QACV,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO;QACV,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAEQ,qBAAqB,CAAC,MAAmC;QAC/D,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;aAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE;YACd,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO;YACV,CAAC;YACD,iEAAiE;YACjE,oEAAoE;YACpE,mEAAmE;YACnE,6DAA6D;YAC7D,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC,qBAAqB,CAAC;YAChE,uEAAuE;YACvE,uDAAuD;YACvD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,wDAAwD;YACxD,oEAAoE;YACpE,iEAAiE;YACjE,gEAAgE;YAChE,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACT,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,eAAe,CAAC,MAAmC;QAChE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC1C,OAAO,MAAM,CAAC;YACjB,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC/E,OAAO,SAAS,CAAC;YACpB,CAAC;YACD,OAAO,MAAM,CAAC;QACjB,CAAC,CAAC,CACJ,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAuB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;IAC1F,CAAC;IAED;;;;;;;OAOG;IACgB,kBAAkB,CAAC,OAAc,EAAE,OAAc;QACjE,qEAAqE;QACrE,+DAA+D;QAC/D,mEAAmE;QACnE,kEAAkE;QAClE,kEAAkE;QAClE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,uCAAuC;YAC5D,OAAO;QACV,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACI,YAAY;QAChB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACO,QAAQ,CAAC,OAAc,EAAE,OAAc;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK;aACvB,IAAI,CAAC,GAAG,EAAE,CACR,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,CACJ;aACA,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,MAAM,EAAE,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACT,CAAC;CACH"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
export * from './completion/hydranium-completion-provider.js';
|
|
10
|
+
export * from './instrument-connection.js';
|
|
11
|
+
export * from './semantic-token-provider.js';
|
|
12
|
+
export * from './language-module.js';
|
|
13
|
+
export * from './shared-module.js';
|
|
14
|
+
export * from './hydranium-document-update-handler.js';
|
|
15
|
+
/**
|
|
16
|
+
* The LSP server entry point, so adopters get a unified import surface for the
|
|
17
|
+
* head: framework overrides + the start function live behind one
|
|
18
|
+
* `@hydranium/core/lsp` subpath, mirroring Langium's own `langium/lsp`
|
|
19
|
+
* convention. Signature-compatible with Langium's `startLanguageServer`, plus
|
|
20
|
+
* a guard that the head's shared module was composed.
|
|
21
|
+
*/
|
|
22
|
+
export * from './start-language-server.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,4BAA4B,CAAC;AAC3C,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
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
export * from './completion/hydranium-completion-provider.js';
|
|
10
|
+
export * from './instrument-connection.js';
|
|
11
|
+
export * from './semantic-token-provider.js';
|
|
12
|
+
export * from './language-module.js';
|
|
13
|
+
export * from './shared-module.js';
|
|
14
|
+
export * from './hydranium-document-update-handler.js';
|
|
15
|
+
/**
|
|
16
|
+
* The LSP server entry point, so adopters get a unified import surface for the
|
|
17
|
+
* head: framework overrides + the start function live behind one
|
|
18
|
+
* `@hydranium/core/lsp` subpath, mirroring Langium's own `langium/lsp`
|
|
19
|
+
* convention. Signature-compatible with Langium's `startLanguageServer`, plus
|
|
20
|
+
* a guard that the head's shared module was composed.
|
|
21
|
+
*/
|
|
22
|
+
export * from './start-language-server.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AAEvD;;;;;;GAMG;AACH,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
/**
|
|
11
|
+
* Wrap an LSP `Connection` so every request handler registered through
|
|
12
|
+
* `onRequest` is timed into `latency` under its method name — the LSP analog of
|
|
13
|
+
* the data-server RPC chokepoint. Langium's `startLanguageServer` registers
|
|
14
|
+
* `onCompletion`/`onHover`/… one handler at a time, so there is no single
|
|
15
|
+
* dispatch point; but every registration funnels through the ONE `onRequest`
|
|
16
|
+
* on the shared `Connection`, so decorating it catches every method with no
|
|
17
|
+
* Langium fork and no per-handler code.
|
|
18
|
+
*
|
|
19
|
+
* Opt in where the head creates the connection, before it hands it to the
|
|
20
|
+
* services factory — wrapping it afterwards is too late, because Langium has
|
|
21
|
+
* already registered its handlers against the raw connection.
|
|
22
|
+
*
|
|
23
|
+
* `onRequest` has several overloads: most register a handler for a specific
|
|
24
|
+
* method (a string, or a typed request whose `.method` names it) and one is the
|
|
25
|
+
* `StarRequestHandler` catch-all `onRequest(handler)`. The star form fires only
|
|
26
|
+
* for methods with no registered handler, so timing it would be misleading — it
|
|
27
|
+
* is passed through untouched. Every other member of the connection is
|
|
28
|
+
* forwarded unchanged.
|
|
29
|
+
*
|
|
30
|
+
* When `latency` is `undefined` the seam is off: the connection is returned
|
|
31
|
+
* unchanged (no Proxy, no per-request timing), so a head can pass the result of
|
|
32
|
+
* an env-gated factory (`latencyFromEnv()`) straight through and pay nothing
|
|
33
|
+
* when latency is not enabled.
|
|
34
|
+
*/
|
|
35
|
+
export declare function instrumentLspConnection<C extends object>(connection: C, latency: LatencyCollector | undefined): C;
|
|
36
|
+
//# sourceMappingURL=instrument-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrument-connection.d.ts","sourceRoot":"","sources":["../../src/lsp/instrument-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,CAAC,CA2BjH"}
|