@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,62 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* Wrap an LSP `Connection` so every request handler registered through
|
|
11
|
+
* `onRequest` is timed into `latency` under its method name — the LSP analog of
|
|
12
|
+
* the data-server RPC chokepoint. Langium's `startLanguageServer` registers
|
|
13
|
+
* `onCompletion`/`onHover`/… one handler at a time, so there is no single
|
|
14
|
+
* dispatch point; but every registration funnels through the ONE `onRequest`
|
|
15
|
+
* on the shared `Connection`, so decorating it catches every method with no
|
|
16
|
+
* Langium fork and no per-handler code.
|
|
17
|
+
*
|
|
18
|
+
* Opt in where the head creates the connection, before it hands it to the
|
|
19
|
+
* services factory — wrapping it afterwards is too late, because Langium has
|
|
20
|
+
* already registered its handlers against the raw connection.
|
|
21
|
+
*
|
|
22
|
+
* `onRequest` has several overloads: most register a handler for a specific
|
|
23
|
+
* method (a string, or a typed request whose `.method` names it) and one is the
|
|
24
|
+
* `StarRequestHandler` catch-all `onRequest(handler)`. The star form fires only
|
|
25
|
+
* for methods with no registered handler, so timing it would be misleading — it
|
|
26
|
+
* is passed through untouched. Every other member of the connection is
|
|
27
|
+
* forwarded unchanged.
|
|
28
|
+
*
|
|
29
|
+
* When `latency` is `undefined` the seam is off: the connection is returned
|
|
30
|
+
* unchanged (no Proxy, no per-request timing), so a head can pass the result of
|
|
31
|
+
* an env-gated factory (`latencyFromEnv()`) straight through and pay nothing
|
|
32
|
+
* when latency is not enabled.
|
|
33
|
+
*/
|
|
34
|
+
export function instrumentLspConnection(connection, latency) {
|
|
35
|
+
if (!latency) {
|
|
36
|
+
return connection;
|
|
37
|
+
}
|
|
38
|
+
return new Proxy(connection, {
|
|
39
|
+
get(target, property, receiver) {
|
|
40
|
+
const value = Reflect.get(target, property, receiver);
|
|
41
|
+
if (property !== 'onRequest' || typeof value !== 'function') {
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
const onRequest = value;
|
|
45
|
+
return (...args) => {
|
|
46
|
+
const [first, handler] = args;
|
|
47
|
+
// Star form `onRequest(handler)` — pass through; it is not a timer.
|
|
48
|
+
if (typeof first === 'function' || typeof handler !== 'function') {
|
|
49
|
+
return onRequest.apply(target, args);
|
|
50
|
+
}
|
|
51
|
+
const method = typeof first === 'string' ? first : first.method;
|
|
52
|
+
if (typeof method !== 'string') {
|
|
53
|
+
return onRequest.apply(target, args);
|
|
54
|
+
}
|
|
55
|
+
const original = handler;
|
|
56
|
+
const timed = (...handlerArgs) => latency.time(method, () => original(...handlerArgs));
|
|
57
|
+
return onRequest.apply(target, [first, timed, ...args.slice(2)]);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=instrument-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrument-connection.js","sourceRoot":"","sources":["../../src/lsp/instrument-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,uBAAuB,CAAmB,UAAa,EAAE,OAAqC;IAC3G,IAAI,CAAC,OAAO,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE;QAC1B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC3B,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,QAAQ,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC3D,OAAO,KAAK,CAAC;YAChB,CAAC;YACD,MAAM,SAAS,GAAG,KAAwC,CAAC;YAC3D,OAAO,CAAC,GAAG,IAAe,EAAW,EAAE;gBACpC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;gBAC9B,oEAAoE;gBACpE,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;oBAChE,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAA8B,CAAC,MAAM,CAAC;gBAC1F,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,QAAQ,GAAG,OAAyB,CAAC;gBAC3C,MAAM,KAAK,GAAmB,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;gBACvG,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC;QACL,CAAC;KACH,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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 Module } from '@hydranium/langium';
|
|
10
|
+
import { type ServerLanguageServices } from '../langium/language-module.js';
|
|
11
|
+
import { type ServerModuleContext } from '../langium/module.js';
|
|
12
|
+
import { type PartialLangiumServices } from '@hydranium/langium/lsp';
|
|
13
|
+
import { HydraniumCompletionProvider } from './completion/hydranium-completion-provider.js';
|
|
14
|
+
/**
|
|
15
|
+
* Language-level slots contributed by the LSP-textual protocol head.
|
|
16
|
+
* Bound by {@link createLspServerLanguageModule}; consumer modules
|
|
17
|
+
* layered after it can override any slot.
|
|
18
|
+
*
|
|
19
|
+
* - {@link HydraniumCompletionProvider} upgrades Langium's default
|
|
20
|
+
* `TextEdit` to an `InsertReplaceEdit` so the user's
|
|
21
|
+
* `editor.suggest.insertMode` preference is honoured.
|
|
22
|
+
*
|
|
23
|
+
* The head's SHARED-tier slots are bound by
|
|
24
|
+
* `createLspServerSharedModule` instead: `lsp.DocumentUpdateHandler`
|
|
25
|
+
* exists once per server rather than once per grammar, so binding it here is
|
|
26
|
+
* inert — nothing reads a per-language one.
|
|
27
|
+
*/
|
|
28
|
+
export interface LspServerAddedServices {
|
|
29
|
+
lsp: {
|
|
30
|
+
CompletionProvider: HydraniumCompletionProvider;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Full language-service surface visible to consumers that compose this
|
|
35
|
+
* head: `@hydranium/core`'s bindings plus the LSP-textual additions. Use as
|
|
36
|
+
* the `T` type parameter for the consumer's own
|
|
37
|
+
* `Module<LspServerLanguageServices, ...>` if its overrides depend on
|
|
38
|
+
* any LSP-only slot.
|
|
39
|
+
*/
|
|
40
|
+
export type LspServerLanguageServices = ServerLanguageServices & LspServerAddedServices;
|
|
41
|
+
/**
|
|
42
|
+
* The LSP-textual protocol head's default language module. Composes on
|
|
43
|
+
* top of `createServerLanguageModule` — as a later `inject(...)`
|
|
44
|
+
* argument, or as `languageModules.extra` when composing through
|
|
45
|
+
* `createIntegrationServices`; the adopter's own language module goes after
|
|
46
|
+
* it either way.
|
|
47
|
+
*
|
|
48
|
+
* `createServerLanguageModule` MUST be merged before this one — the
|
|
49
|
+
* lsp-server head only contributes LSP-textual-specific slots and
|
|
50
|
+
* relies on `@hydranium/core`'s references / naming bindings being present.
|
|
51
|
+
*/
|
|
52
|
+
export declare function createLspServerLanguageModule(_context: ServerModuleContext): Module<LspServerLanguageServices, PartialLangiumServices & LspServerAddedServices>;
|
|
53
|
+
//# sourceMappingURL=language-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-module.d.ts","sourceRoot":"","sources":["../../src/lsp/language-module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAE5F;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,sBAAsB;IACpC,GAAG,EAAE;QACa,kBAAkB,EAAE,2BAA2B,CAAC;KACjE,CAAC;CACJ;AAED;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAExF;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAC1C,QAAQ,EAAE,mBAAmB,GAC7B,MAAM,CAAC,yBAAyB,EAAE,sBAAsB,GAAG,sBAAsB,CAAC,CAMpF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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 { HydraniumCompletionProvider } from './completion/hydranium-completion-provider.js';
|
|
10
|
+
/**
|
|
11
|
+
* The LSP-textual protocol head's default language module. Composes on
|
|
12
|
+
* top of `createServerLanguageModule` — as a later `inject(...)`
|
|
13
|
+
* argument, or as `languageModules.extra` when composing through
|
|
14
|
+
* `createIntegrationServices`; the adopter's own language module goes after
|
|
15
|
+
* it either way.
|
|
16
|
+
*
|
|
17
|
+
* `createServerLanguageModule` MUST be merged before this one — the
|
|
18
|
+
* lsp-server head only contributes LSP-textual-specific slots and
|
|
19
|
+
* relies on `@hydranium/core`'s references / naming bindings being present.
|
|
20
|
+
*/
|
|
21
|
+
export function createLspServerLanguageModule(_context) {
|
|
22
|
+
return {
|
|
23
|
+
lsp: {
|
|
24
|
+
CompletionProvider: services => new HydraniumCompletionProvider(services)
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=language-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-module.js","sourceRoot":"","sources":["../../src/lsp/language-module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AA+B5F;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CAC1C,QAA6B;IAE7B,OAAO;QACJ,GAAG,EAAE;YACF,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,2BAA2B,CAAC,QAAQ,CAAC;SAC3E;KACH,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
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 AstNode, type AstReflection, type LangiumDocument, type ReferenceInfo } from '@hydranium/langium';
|
|
10
|
+
import { AbstractSemanticTokenProvider, type SemanticTokenAcceptor } from '@hydranium/langium/lsp';
|
|
11
|
+
import { type CancellationToken } from 'vscode-languageserver';
|
|
12
|
+
import { type NameProvider } from '../langium/naming/name-provider.js';
|
|
13
|
+
import { type ServerLanguageServices } from '../langium/language-module.js';
|
|
14
|
+
/**
|
|
15
|
+
* What a node or reference should be coloured as. The bare string form is the
|
|
16
|
+
* common case (`SemanticTokenTypes.class`); the object form is for the
|
|
17
|
+
* minority that also need modifiers, or that need to suppress the
|
|
18
|
+
* declaration modifier this provider adds by default (pass `modifier: []`).
|
|
19
|
+
*/
|
|
20
|
+
export type SemanticTokenKind = string | {
|
|
21
|
+
readonly type: string;
|
|
22
|
+
readonly modifier?: string | string[];
|
|
23
|
+
};
|
|
24
|
+
/** Behaviour switches for {@link AbstractHydraniumSemanticTokenProvider}. */
|
|
25
|
+
export interface HydraniumSemanticTokenProviderOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Also emit a `keyword` token for every keyword leaf of the CST.
|
|
28
|
+
*
|
|
29
|
+
* OFF by default, and the default is not timidity: semantic tokens OVERRIDE
|
|
30
|
+
* a client-side TextMate grammar, and such a grammar classifies keywords
|
|
31
|
+
* with far finer scopes (`keyword.control`, `storage.type`,
|
|
32
|
+
* `keyword.operator`) than the one flat `keyword` a legend can carry — so
|
|
33
|
+
* turning this on in a host that ships a grammar makes its editor *less*
|
|
34
|
+
* coloured, not more. It exists for the host that ships NO client-side
|
|
35
|
+
* grammar at all (a plain-Monaco page, a minimal web client), where the
|
|
36
|
+
* server's tokens are the only source of colour and keywords otherwise
|
|
37
|
+
* render in the editor's default foreground.
|
|
38
|
+
*/
|
|
39
|
+
readonly highlightKeywords?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Semantic-token provider that derives highlighting from ONE adopter-supplied
|
|
43
|
+
* map of AST type → token kind, instead of a hand-written walk.
|
|
44
|
+
*
|
|
45
|
+
* **What it replaces.** Langium's {@link AbstractSemanticTokenProvider} hands
|
|
46
|
+
* you every node and asks you to emit tokens for it, so a grammar-specific
|
|
47
|
+
* provider becomes a chain of typeguards, each repeating two mechanical
|
|
48
|
+
* steps: emit the declaration name with `property: 'name'`, then emit one
|
|
49
|
+
* acceptor call per cross-reference property, remembering `index` for the
|
|
50
|
+
* multi-valued ones. Both steps are derivable, and getting the second one
|
|
51
|
+
* wrong is silent — a forgotten reference property simply renders uncoloured.
|
|
52
|
+
*
|
|
53
|
+
* **How the derivation works.**
|
|
54
|
+
* - The declaration name's PROPERTY comes from {@link NameProvider.getNameProperty},
|
|
55
|
+
* so an `id`-keyed grammar works without the provider hardcoding `'name'`.
|
|
56
|
+
* - Cross-references are discovered with Langium's `streamReferences`, which
|
|
57
|
+
* yields every reference on the node with its property and index already
|
|
58
|
+
* filled in — so multi-valued references cannot be missed or mis-indexed.
|
|
59
|
+
* - A reference's kind is resolved from the reference's DECLARED target type
|
|
60
|
+
* (`AstReflection.getReferenceType`), NOT from `ref.ref.$type`. That is
|
|
61
|
+
* deliberate: the declared type is available whether or not the reference
|
|
62
|
+
* resolves, so a broken or half-typed document keeps its colouring instead
|
|
63
|
+
* of flickering as links come and go.
|
|
64
|
+
*
|
|
65
|
+
* The net effect is that {@link getTokenKind} — a `$type` string in, a token
|
|
66
|
+
* kind out — is usually the only member an adopter writes.
|
|
67
|
+
*
|
|
68
|
+
* Anything the map cannot express stays overridable: {@link getDeclarationKind}
|
|
69
|
+
* and {@link getReferenceKind} for per-node or per-property decisions,
|
|
70
|
+
* {@link highlightElement} for tokens that are neither a declaration nor a
|
|
71
|
+
* cross-reference (a sub-range, a single keyword of one rule). Returning
|
|
72
|
+
* `'prune'` from an override still skips the subtree, as upstream. Colouring
|
|
73
|
+
* EVERY keyword is not one of those cases — that is
|
|
74
|
+
* {@link HydraniumSemanticTokenProviderOptions.highlightKeywords}, which walks
|
|
75
|
+
* the CST once instead.
|
|
76
|
+
*/
|
|
77
|
+
export declare abstract class AbstractHydraniumSemanticTokenProvider extends AbstractSemanticTokenProvider {
|
|
78
|
+
protected readonly nameProvider: NameProvider;
|
|
79
|
+
protected readonly reflection: AstReflection;
|
|
80
|
+
protected readonly options: HydraniumSemanticTokenProviderOptions;
|
|
81
|
+
/**
|
|
82
|
+
* Modifier added to every declaration token. `declaration` is what themes
|
|
83
|
+
* key on to render a definition differently from a use; override to
|
|
84
|
+
* `undefined` to add none.
|
|
85
|
+
*/
|
|
86
|
+
protected readonly declarationModifier: string | undefined;
|
|
87
|
+
constructor(services: ServerLanguageServices, options?: HydraniumSemanticTokenProviderOptions);
|
|
88
|
+
/**
|
|
89
|
+
* The AST pass, then — when asked for — one CST pass over the keywords.
|
|
90
|
+
*
|
|
91
|
+
* **The keyword pass belongs here and not in {@link highlightElement}**,
|
|
92
|
+
* which is called once per AST node: a node reaching its own keyword leaves
|
|
93
|
+
* has to descend its CST subtree, and every node repeating that visits each
|
|
94
|
+
* leaf once per ancestor, so the AST-hosted version is O(leaves × depth)
|
|
95
|
+
* against this one's O(leaves). It also cannot be written correctly with a
|
|
96
|
+
* `prune`, because a keyword leaf's nearest AST node is not always the one
|
|
97
|
+
* whose rule contributed it.
|
|
98
|
+
*
|
|
99
|
+
* Emitting out of positional order is safe: `SemanticTokensBuilder` sorts
|
|
100
|
+
* before it encodes the deltas, so the two passes need not interleave. The
|
|
101
|
+
* range form of the request needs no accommodation either — the acceptor
|
|
102
|
+
* drops anything outside `currentRange` on its own.
|
|
103
|
+
*/
|
|
104
|
+
protected computeHighlighting(document: LangiumDocument, acceptor: SemanticTokenAcceptor, cancelToken: CancellationToken): Promise<void>;
|
|
105
|
+
protected highlightElement(node: AstNode, acceptor: SemanticTokenAcceptor): void | undefined | 'prune';
|
|
106
|
+
/** Colour the node's own name, at whichever property the NameProvider reads it from. */
|
|
107
|
+
protected highlightDeclaration(node: AstNode, acceptor: SemanticTokenAcceptor): void;
|
|
108
|
+
/** Colour every cross-reference the node carries, including multi-valued ones. */
|
|
109
|
+
protected highlightReferences(node: AstNode, acceptor: SemanticTokenAcceptor): void;
|
|
110
|
+
/**
|
|
111
|
+
* The adopter's map: an AST `$type` in, the token kind its declarations and
|
|
112
|
+
* the references pointing at it should render as. `undefined` leaves the
|
|
113
|
+
* type uncoloured.
|
|
114
|
+
*
|
|
115
|
+
* What uncoloured means depends on the host, and this map cannot see which:
|
|
116
|
+
* a host shipping a TextMate grammar keeps that grammar's colour, a host
|
|
117
|
+
* shipping none renders the default foreground. So `undefined` says only
|
|
118
|
+
* "not a name worth a kind of its own" — never "someone else will colour
|
|
119
|
+
* it". Keywords in particular are not left to this map at all; they are
|
|
120
|
+
* {@link HydraniumSemanticTokenProviderOptions.highlightKeywords}, because
|
|
121
|
+
* they have no AST type to key on.
|
|
122
|
+
*/
|
|
123
|
+
protected abstract getTokenKind(type: string): SemanticTokenKind | undefined;
|
|
124
|
+
/** Kind for `node`'s own declaration. Defaults to {@link getTokenKind} on its `$type`. */
|
|
125
|
+
protected getDeclarationKind(node: AstNode): SemanticTokenKind | undefined;
|
|
126
|
+
/** Kind for a cross-reference. Defaults to {@link getTokenKind} on the reference's DECLARED target type. */
|
|
127
|
+
protected getReferenceKind(info: ReferenceInfo): SemanticTokenKind | undefined;
|
|
128
|
+
/** Property holding `node`'s name. Defaults to the language's {@link NameProvider}. */
|
|
129
|
+
protected getNameProperty(node: AstNode): string | undefined;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=semantic-token-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-token-provider.d.ts","sourceRoot":"","sources":["../../src/lsp/semantic-token-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,OAAO,EACZ,KAAK,aAAa,EAKlB,KAAK,eAAe,EACpB,KAAK,aAAa,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,6BAA6B,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,KAAK,iBAAiB,EAA8C,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAC;AAU1G,6EAA6E;AAC7E,MAAM,WAAW,qCAAqC;IACnD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8BAAsB,sCAAuC,SAAQ,6BAA6B;IAC/F,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,qCAAqC,CAAC;IAElE;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAsC;gBAEpF,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAE,qCAA0C;IAOjG;;;;;;;;;;;;;;;OAeG;cACsB,mBAAmB,CACzC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,qBAAqB,EAC/B,WAAW,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC;cAsBG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAM/G,wFAAwF;IACxF,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAYpF,kFAAkF;IAClF,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAUnF;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAE5E,0FAA0F;IAC1F,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS;IAI1E,4GAA4G;IAC5G,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,GAAG,SAAS;IAI9E,uFAAuF;IACvF,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;CAG9D"}
|
|
@@ -0,0 +1,148 @@
|
|
|
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 { AstUtils, CstUtils, GrammarAST, interruptAndCheck } from '@hydranium/langium';
|
|
10
|
+
import { AbstractSemanticTokenProvider } from '@hydranium/langium/lsp';
|
|
11
|
+
import { SemanticTokenModifiers, SemanticTokenTypes } from 'vscode-languageserver';
|
|
12
|
+
/** Normalise both {@link SemanticTokenKind} forms to the acceptor's shape. */
|
|
13
|
+
function toAcceptorFields(kind, fallbackModifier) {
|
|
14
|
+
if (typeof kind === 'string') {
|
|
15
|
+
return fallbackModifier === undefined ? { type: kind } : { type: kind, modifier: fallbackModifier };
|
|
16
|
+
}
|
|
17
|
+
return kind.modifier === undefined && fallbackModifier !== undefined ? { type: kind.type, modifier: fallbackModifier } : { ...kind };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Semantic-token provider that derives highlighting from ONE adopter-supplied
|
|
21
|
+
* map of AST type → token kind, instead of a hand-written walk.
|
|
22
|
+
*
|
|
23
|
+
* **What it replaces.** Langium's {@link AbstractSemanticTokenProvider} hands
|
|
24
|
+
* you every node and asks you to emit tokens for it, so a grammar-specific
|
|
25
|
+
* provider becomes a chain of typeguards, each repeating two mechanical
|
|
26
|
+
* steps: emit the declaration name with `property: 'name'`, then emit one
|
|
27
|
+
* acceptor call per cross-reference property, remembering `index` for the
|
|
28
|
+
* multi-valued ones. Both steps are derivable, and getting the second one
|
|
29
|
+
* wrong is silent — a forgotten reference property simply renders uncoloured.
|
|
30
|
+
*
|
|
31
|
+
* **How the derivation works.**
|
|
32
|
+
* - The declaration name's PROPERTY comes from {@link NameProvider.getNameProperty},
|
|
33
|
+
* so an `id`-keyed grammar works without the provider hardcoding `'name'`.
|
|
34
|
+
* - Cross-references are discovered with Langium's `streamReferences`, which
|
|
35
|
+
* yields every reference on the node with its property and index already
|
|
36
|
+
* filled in — so multi-valued references cannot be missed or mis-indexed.
|
|
37
|
+
* - A reference's kind is resolved from the reference's DECLARED target type
|
|
38
|
+
* (`AstReflection.getReferenceType`), NOT from `ref.ref.$type`. That is
|
|
39
|
+
* deliberate: the declared type is available whether or not the reference
|
|
40
|
+
* resolves, so a broken or half-typed document keeps its colouring instead
|
|
41
|
+
* of flickering as links come and go.
|
|
42
|
+
*
|
|
43
|
+
* The net effect is that {@link getTokenKind} — a `$type` string in, a token
|
|
44
|
+
* kind out — is usually the only member an adopter writes.
|
|
45
|
+
*
|
|
46
|
+
* Anything the map cannot express stays overridable: {@link getDeclarationKind}
|
|
47
|
+
* and {@link getReferenceKind} for per-node or per-property decisions,
|
|
48
|
+
* {@link highlightElement} for tokens that are neither a declaration nor a
|
|
49
|
+
* cross-reference (a sub-range, a single keyword of one rule). Returning
|
|
50
|
+
* `'prune'` from an override still skips the subtree, as upstream. Colouring
|
|
51
|
+
* EVERY keyword is not one of those cases — that is
|
|
52
|
+
* {@link HydraniumSemanticTokenProviderOptions.highlightKeywords}, which walks
|
|
53
|
+
* the CST once instead.
|
|
54
|
+
*/
|
|
55
|
+
export class AbstractHydraniumSemanticTokenProvider extends AbstractSemanticTokenProvider {
|
|
56
|
+
nameProvider;
|
|
57
|
+
reflection;
|
|
58
|
+
options;
|
|
59
|
+
/**
|
|
60
|
+
* Modifier added to every declaration token. `declaration` is what themes
|
|
61
|
+
* key on to render a definition differently from a use; override to
|
|
62
|
+
* `undefined` to add none.
|
|
63
|
+
*/
|
|
64
|
+
declarationModifier = SemanticTokenModifiers.declaration;
|
|
65
|
+
constructor(services, options = {}) {
|
|
66
|
+
super(services);
|
|
67
|
+
this.nameProvider = services.references.NameProvider;
|
|
68
|
+
this.reflection = services.shared.AstReflection;
|
|
69
|
+
this.options = options;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The AST pass, then — when asked for — one CST pass over the keywords.
|
|
73
|
+
*
|
|
74
|
+
* **The keyword pass belongs here and not in {@link highlightElement}**,
|
|
75
|
+
* which is called once per AST node: a node reaching its own keyword leaves
|
|
76
|
+
* has to descend its CST subtree, and every node repeating that visits each
|
|
77
|
+
* leaf once per ancestor, so the AST-hosted version is O(leaves × depth)
|
|
78
|
+
* against this one's O(leaves). It also cannot be written correctly with a
|
|
79
|
+
* `prune`, because a keyword leaf's nearest AST node is not always the one
|
|
80
|
+
* whose rule contributed it.
|
|
81
|
+
*
|
|
82
|
+
* Emitting out of positional order is safe: `SemanticTokensBuilder` sorts
|
|
83
|
+
* before it encodes the deltas, so the two passes need not interleave. The
|
|
84
|
+
* range form of the request needs no accommodation either — the acceptor
|
|
85
|
+
* drops anything outside `currentRange` on its own.
|
|
86
|
+
*/
|
|
87
|
+
async computeHighlighting(document, acceptor, cancelToken) {
|
|
88
|
+
await super.computeHighlighting(document, acceptor, cancelToken);
|
|
89
|
+
if (this.options.highlightKeywords !== true) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const root = document.parseResult.value.$cstNode;
|
|
93
|
+
if (root === undefined) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
for (const cst of CstUtils.streamCst(root)) {
|
|
97
|
+
await interruptAndCheck(cancelToken);
|
|
98
|
+
// The grammar source is the whole filter. A keyword is always a leaf,
|
|
99
|
+
// and the hidden leaves a comment or a run of whitespace contributes
|
|
100
|
+
// are sourced from a terminal rule rather than a `Keyword` — so
|
|
101
|
+
// neither a composite-node check nor a hidden-token check adds
|
|
102
|
+
// anything here.
|
|
103
|
+
if (GrammarAST.isKeyword(cst.grammarSource)) {
|
|
104
|
+
acceptor({ cst, type: SemanticTokenTypes.keyword });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
highlightElement(node, acceptor) {
|
|
109
|
+
this.highlightDeclaration(node, acceptor);
|
|
110
|
+
this.highlightReferences(node, acceptor);
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
/** Colour the node's own name, at whichever property the NameProvider reads it from. */
|
|
114
|
+
highlightDeclaration(node, acceptor) {
|
|
115
|
+
const kind = this.getDeclarationKind(node);
|
|
116
|
+
if (kind === undefined) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const property = this.getNameProperty(node);
|
|
120
|
+
if (property === undefined) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
acceptor({ node, property, ...toAcceptorFields(kind, this.declarationModifier) });
|
|
124
|
+
}
|
|
125
|
+
/** Colour every cross-reference the node carries, including multi-valued ones. */
|
|
126
|
+
highlightReferences(node, acceptor) {
|
|
127
|
+
for (const info of AstUtils.streamReferences(node)) {
|
|
128
|
+
const kind = this.getReferenceKind(info);
|
|
129
|
+
if (kind === undefined) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
acceptor({ node: info.container, property: info.property, index: info.index, ...toAcceptorFields(kind) });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** Kind for `node`'s own declaration. Defaults to {@link getTokenKind} on its `$type`. */
|
|
136
|
+
getDeclarationKind(node) {
|
|
137
|
+
return this.getTokenKind(node.$type);
|
|
138
|
+
}
|
|
139
|
+
/** Kind for a cross-reference. Defaults to {@link getTokenKind} on the reference's DECLARED target type. */
|
|
140
|
+
getReferenceKind(info) {
|
|
141
|
+
return this.getTokenKind(this.reflection.getReferenceType(info));
|
|
142
|
+
}
|
|
143
|
+
/** Property holding `node`'s name. Defaults to the language's {@link NameProvider}. */
|
|
144
|
+
getNameProperty(node) {
|
|
145
|
+
return this.nameProvider.getNameProperty(node);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=semantic-token-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-token-provider.js","sourceRoot":"","sources":["../../src/lsp/semantic-token-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAGJ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,iBAAiB,EAGnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,6BAA6B,EAA8B,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAA0B,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAY3G,8EAA8E;AAC9E,SAAS,gBAAgB,CAAC,IAAuB,EAAE,gBAAyB;IACzE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IACvG,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AACxI,CAAC;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAgB,sCAAuC,SAAQ,6BAA6B;IAC5E,YAAY,CAAe;IAC3B,UAAU,CAAgB;IAC1B,OAAO,CAAwC;IAElE;;;;OAIG;IACgB,mBAAmB,GAAuB,sBAAsB,CAAC,WAAW,CAAC;IAEhG,YAAY,QAAgC,EAAE,UAAiD,EAAE;QAC9F,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACgB,KAAK,CAAC,mBAAmB,CACzC,QAAyB,EACzB,QAA+B,EAC/B,WAA8B;QAE9B,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO;QACV,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO;QACV,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACrC,sEAAsE;YACtE,qEAAqE;YACrE,gEAAgE;YAChE,+DAA+D;YAC/D,iBAAiB;YACjB,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;QACJ,CAAC;IACJ,CAAC;IAEkB,gBAAgB,CAAC,IAAa,EAAE,QAA+B;QAC/E,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACpB,CAAC;IAED,wFAAwF;IAC9E,oBAAoB,CAAC,IAAa,EAAE,QAA+B;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;QACV,CAAC;QACD,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,kFAAkF;IACxE,mBAAmB,CAAC,IAAa,EAAE,QAA+B;QACzE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACZ,CAAC;YACD,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;IACJ,CAAC;IAiBD,0FAA0F;IAChF,kBAAkB,CAAC,IAAa;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,4GAA4G;IAClG,gBAAgB,CAAC,IAAmB;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,uFAAuF;IAC7E,eAAe,CAAC,IAAa;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACH"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 Module } from '@hydranium/langium';
|
|
10
|
+
import { type PartialLangiumSharedServices } from '@hydranium/langium/lsp';
|
|
11
|
+
import { LspLogger } from '../langium/diagnostics/lsp-logger.js';
|
|
12
|
+
import { type ServerModuleContext, type ServerSharedServices } from '../langium/module.js';
|
|
13
|
+
import { HydraniumDocumentUpdateHandler } from './hydranium-document-update-handler.js';
|
|
14
|
+
/**
|
|
15
|
+
* Shared-tier slots contributed by the LSP-textual protocol head. Bound by
|
|
16
|
+
* {@link createLspServerSharedModule}; consumer modules layered after it can
|
|
17
|
+
* override any slot.
|
|
18
|
+
*
|
|
19
|
+
* - {@link LspLogger} replaces the shared tier's `NoopLogger` on the `Logger` slot,
|
|
20
|
+
* so a head composing this module actually emits. It routes through the LSP
|
|
21
|
+
* `window/logMessage` channel once a `Connection` is bound and to `stderr`
|
|
22
|
+
* before that (or in a headless head that never binds one), and its
|
|
23
|
+
* constructor is what applies the `HYDRANIUM_LOG_LEVEL` / `HYDRANIUM_LOG_FILE`
|
|
24
|
+
* env baselines — so binding it here is also what makes `hydranium-cli
|
|
25
|
+
* --log-level` reach the spawned server. Adopters wanting a different sink
|
|
26
|
+
* (an output channel, a structured logger) override the slot after this
|
|
27
|
+
* module.
|
|
28
|
+
*
|
|
29
|
+
* - {@link HydraniumDocumentUpdateHandler} wraps `didChangeWatchedFiles` to
|
|
30
|
+
* suppress echo events for the server's own writes via the shared
|
|
31
|
+
* `SelfSaveRegistry` slot, debounces `didChangeContent`, stamps build
|
|
32
|
+
* reasons through `markNextReason`, and dispatches a rebuild when the last
|
|
33
|
+
* client closes a document.
|
|
34
|
+
* Adopters with their own update-handler subclass should extend
|
|
35
|
+
* `HydraniumDocumentUpdateHandler` (not Langium's
|
|
36
|
+
* `DefaultDocumentUpdateHandler`) to preserve those behaviours.
|
|
37
|
+
*
|
|
38
|
+
* **Why this is a shared slot and not a per-language one.** Langium declares
|
|
39
|
+
* `DocumentUpdateHandler` in `LangiumSharedLSPServices` — there is exactly one
|
|
40
|
+
* per server, and `startLanguageServer` reads it off the shared tree. It is
|
|
41
|
+
* parameterised by the CLIENT PROTOCOL (which LSP notifications arrive), not
|
|
42
|
+
* by the grammar — the rule for which DI scope a service belongs to. Binding
|
|
43
|
+
* it per language is inert: nothing reads a per-language
|
|
44
|
+
* `lsp.DocumentUpdateHandler`, and under a multi-grammar composition a
|
|
45
|
+
* per-language binding would attach N listener sets to the one document store.
|
|
46
|
+
*/
|
|
47
|
+
export interface LspServerAddedSharedServices {
|
|
48
|
+
Logger: LspLogger;
|
|
49
|
+
lsp: {
|
|
50
|
+
DocumentUpdateHandler: HydraniumDocumentUpdateHandler;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Full shared-service surface visible to consumers that compose this head:
|
|
55
|
+
* `@hydranium/core`'s shared bindings plus the LSP-textual additions. Use as
|
|
56
|
+
* the `T` type parameter for the consumer's own
|
|
57
|
+
* `Module<LspServerSharedServices, ...>` if its overrides depend on any
|
|
58
|
+
* LSP-only shared slot.
|
|
59
|
+
*/
|
|
60
|
+
export type LspServerSharedServices = ServerSharedServices & LspServerAddedSharedServices;
|
|
61
|
+
/**
|
|
62
|
+
* The LSP-textual protocol head's default shared module. Composes on top of
|
|
63
|
+
* `createServerSharedModule` — as a later `inject(...)` argument, or as
|
|
64
|
+
* `sharedModules.extra` when composing through `createIntegrationServices`;
|
|
65
|
+
* the adopter's own shared module goes after it either way.
|
|
66
|
+
*
|
|
67
|
+
* `createServerSharedModule` MUST be merged before this one — the lsp-server
|
|
68
|
+
* head only contributes LSP-textual-specific slots and relies on
|
|
69
|
+
* `@hydranium/core`'s `SelfSaveRegistry` / `TextDocuments` / `DocumentBuilder`
|
|
70
|
+
* bindings being present.
|
|
71
|
+
*
|
|
72
|
+
* Returned as a function (not a constant) so head defaults can read from the
|
|
73
|
+
* construction context, mirroring `createLspServerLanguageModule`.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createLspServerSharedModule(_context: ServerModuleContext): Module<LspServerSharedServices, PartialLangiumSharedServices & LspServerAddedSharedServices>;
|
|
76
|
+
//# sourceMappingURL=shared-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-module.d.ts","sourceRoot":"","sources":["../../src/lsp/shared-module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,WAAW,4BAA4B;IAC3B,MAAM,EAAE,SAAS,CAAC;IACjC,GAAG,EAAE;QACa,qBAAqB,EAAE,8BAA8B,CAAC;KACvE,CAAC;CACJ;AAED;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,GAAG,4BAA4B,CAAC;AAE1F;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACxC,QAAQ,EAAE,mBAAmB,GAC7B,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,GAAG,4BAA4B,CAAC,CAO9F"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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 { LspLogger } from '../langium/diagnostics/lsp-logger.js';
|
|
10
|
+
import { HydraniumDocumentUpdateHandler } from './hydranium-document-update-handler.js';
|
|
11
|
+
/**
|
|
12
|
+
* The LSP-textual protocol head's default shared module. Composes on top of
|
|
13
|
+
* `createServerSharedModule` — as a later `inject(...)` argument, or as
|
|
14
|
+
* `sharedModules.extra` when composing through `createIntegrationServices`;
|
|
15
|
+
* the adopter's own shared module goes after it either way.
|
|
16
|
+
*
|
|
17
|
+
* `createServerSharedModule` MUST be merged before this one — the lsp-server
|
|
18
|
+
* head only contributes LSP-textual-specific slots and relies on
|
|
19
|
+
* `@hydranium/core`'s `SelfSaveRegistry` / `TextDocuments` / `DocumentBuilder`
|
|
20
|
+
* bindings being present.
|
|
21
|
+
*
|
|
22
|
+
* Returned as a function (not a constant) so head defaults can read from the
|
|
23
|
+
* construction context, mirroring `createLspServerLanguageModule`.
|
|
24
|
+
*/
|
|
25
|
+
export function createLspServerSharedModule(_context) {
|
|
26
|
+
return {
|
|
27
|
+
Logger: services => new LspLogger(services),
|
|
28
|
+
lsp: {
|
|
29
|
+
DocumentUpdateHandler: services => new HydraniumDocumentUpdateHandler(services)
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=shared-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-module.js","sourceRoot":"","sources":["../../src/lsp/shared-module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAmDxF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CACxC,QAA6B;IAE7B,OAAO;QACJ,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC;QAC3C,GAAG,EAAE;YACF,qBAAqB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,8BAA8B,CAAC,QAAQ,CAAC;SACjF;KACH,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 LangiumSharedServices, type ServiceRequirements } from '@hydranium/langium/lsp';
|
|
10
|
+
/**
|
|
11
|
+
* Fail the LSP head's start when its shared module was never composed.
|
|
12
|
+
*
|
|
13
|
+
* **The composition mistake this catches.** `lsp.DocumentUpdateHandler` is a
|
|
14
|
+
* SHARED slot, so the head binds it in `createLspServerSharedModule` — a
|
|
15
|
+
* separate module from `createLspServerLanguageModule`. An adopter who adds
|
|
16
|
+
* only the language module gets a server that boots, links and serves
|
|
17
|
+
* completion, and quietly runs Langium's `DefaultDocumentUpdateHandler`: echo
|
|
18
|
+
* suppression for the server's own writes, the `didChangeContent` debounce,
|
|
19
|
+
* `markNextReason` stamping and the last-client-close rebuild are all absent,
|
|
20
|
+
* with nothing in the log to say so.
|
|
21
|
+
*
|
|
22
|
+
* The type system does not catch it. `createIntegrationServices` returns
|
|
23
|
+
* `inject(...) as unknown as TShared`, so widening `TShared` with
|
|
24
|
+
* `LspServerAddedSharedServices` while omitting the module type-checks and
|
|
25
|
+
* leaves the slot holding Langium's default.
|
|
26
|
+
*
|
|
27
|
+
* Checked with `instanceof`, so an adopter subclass of
|
|
28
|
+
* {@link HydraniumDocumentUpdateHandler} — the documented way to extend the
|
|
29
|
+
* handler — passes.
|
|
30
|
+
*
|
|
31
|
+
* Skips silently when no connection is bound: that is a more fundamental
|
|
32
|
+
* misconfiguration, and Langium reports it immediately afterwards in its own
|
|
33
|
+
* vocabulary. Reporting it here as a missing module would misname it.
|
|
34
|
+
*/
|
|
35
|
+
export declare function assertLspHeadComposed(services: LangiumSharedServices): void;
|
|
36
|
+
/**
|
|
37
|
+
* The framework's LSP server entry point: {@link assertLspHeadComposed}, then
|
|
38
|
+
* Langium's `startLanguageServer` unchanged. Signature-compatible with
|
|
39
|
+
* Langium's, so it is a drop-in for adopters importing from
|
|
40
|
+
* `@hydranium/core/lsp`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function startLanguageServer(services: LangiumSharedServices, serviceRequirements?: Partial<ServiceRequirements>): void;
|
|
43
|
+
//# sourceMappingURL=start-language-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-language-server.d.ts","sourceRoot":"","sources":["../../src/lsp/start-language-server.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAEJ,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAC1B,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAe3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,mBAAmB,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAAG,IAAI,CAGjI"}
|