@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,533 @@
|
|
|
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
|
+
import { findNextUnique, identity, UNQUALIFIED_PROJECT_REFERENCE } from '@hydranium/protocol';
|
|
11
|
+
import {
|
|
12
|
+
type AstNode,
|
|
13
|
+
AstUtils,
|
|
14
|
+
type CstNode,
|
|
15
|
+
DocumentCache,
|
|
16
|
+
GrammarUtils,
|
|
17
|
+
type NameProvider as LangiumNameProvider,
|
|
18
|
+
type URI
|
|
19
|
+
} from '@hydranium/langium';
|
|
20
|
+
import type { HydraniumLanguageServices } from '../language-module.js';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Per-call options for the workspace-scoped `findNext*` name proposals
|
|
24
|
+
* ({@link NameProvider.findNextDocumentQualifiedName} /
|
|
25
|
+
* {@link NameProvider.findNextProjectQualifiedName}).
|
|
26
|
+
*/
|
|
27
|
+
export interface NextNameOptions {
|
|
28
|
+
/**
|
|
29
|
+
* Ignore elements indexed under this document URI when collecting taken
|
|
30
|
+
* names — the self-exclusion a rename or a provisional-id confirmation
|
|
31
|
+
* needs. The proposal is being made FOR this document, so its own
|
|
32
|
+
* already-indexed entry is not a genuine collision; counting it would
|
|
33
|
+
* append a uniqueness suffix to a name the document already legitimately
|
|
34
|
+
* owns.
|
|
35
|
+
*
|
|
36
|
+
* Compared by canonical URI string, so callers may pass either form.
|
|
37
|
+
*/
|
|
38
|
+
readonly excludeDocumentUri?: URI | string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Construction-time options for {@link DefaultNameProvider}.
|
|
43
|
+
*
|
|
44
|
+
* Adopters whose reference syntax uses a different separator than the
|
|
45
|
+
* framework default (`'.'`) pass `nameSeparator` here. The two-sided contract:
|
|
46
|
+
* the parser/AST treats this character as reserved (validated via
|
|
47
|
+
* `nameSeparatorCheck`), and the joiner produces qualified names with the
|
|
48
|
+
* same character so the linker's lookups against
|
|
49
|
+
* {@link NameProvider.getName} match the syntactic reference form.
|
|
50
|
+
*/
|
|
51
|
+
export interface NameProviderOptions {
|
|
52
|
+
/** Separator used to join name segments into a qualified name. Default `'.'`. */
|
|
53
|
+
readonly nameSeparator?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Property names checked, in order, when reading a node's own name.
|
|
56
|
+
* Default `['name']` — matches Langium's upstream
|
|
57
|
+
* `DefaultNameProvider.getName(node)` which reads `node.name`. Adopters
|
|
58
|
+
* whose grammar carries the identifier on a different property (e.g.
|
|
59
|
+
* an `id` field) override explicitly; the explicit override at
|
|
60
|
+
* the adopter side documents the grammar's convention rather than
|
|
61
|
+
* burying it in a framework default.
|
|
62
|
+
*/
|
|
63
|
+
readonly nameProperties?: readonly string[];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* A node's name together with the property it was read from — the pair
|
|
68
|
+
* {@link NameProvider.getOwnName} and {@link NameProvider.getNameProperty}
|
|
69
|
+
* each project one half of.
|
|
70
|
+
*
|
|
71
|
+
* They are returned together because they must agree: with several configured
|
|
72
|
+
* {@link NameProviderOptions.nameProperties}, answering "what is the name"
|
|
73
|
+
* and "which property holds it" in two independent walks is how the two
|
|
74
|
+
* answers drift apart.
|
|
75
|
+
*/
|
|
76
|
+
export interface ResolvedName {
|
|
77
|
+
/** The property key the name was read from, e.g. `'name'` or `'id'`. */
|
|
78
|
+
readonly property: string;
|
|
79
|
+
/** The name value at that property. */
|
|
80
|
+
readonly value: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Naming service — **the canonical naming surface in this framework.**
|
|
85
|
+
* Extends Langium's `NameProvider` with the three **qualification levels**
|
|
86
|
+
* of qualified name the framework uses for scope construction:
|
|
87
|
+
*
|
|
88
|
+
* ("Qualification level", never "tier" — `tier` is reserved for the
|
|
89
|
+
* visibility axis (`local` / `project` / `public` / `universal`), which is a
|
|
90
|
+
* different question with confusingly similar member names.)
|
|
91
|
+
*
|
|
92
|
+
* - {@link getOwnName} — the bare segment a user typed next to the node's
|
|
93
|
+
* declaration. Used for: label edits, UI display, search-box typing,
|
|
94
|
+
* references within the same container — `HydraniumScopeComputation`
|
|
95
|
+
* keys the per-document local-symbols map by this level, overriding
|
|
96
|
+
* Langium's default of keying it by `getName`.
|
|
97
|
+
* - {@link getDocumentQualifiedName} — joins every named ancestor inside
|
|
98
|
+
* the document. Used for the name written when referencing across
|
|
99
|
+
* documents or containers within the same project — emitted as the
|
|
100
|
+
* `tier: 'project'` global-index entry by `HydraniumScopeComputation`.
|
|
101
|
+
* - {@link getProjectQualifiedName} — prepends the owning project's
|
|
102
|
+
* `Project.referenceName` to the document-qualified name. Used
|
|
103
|
+
* for cross-project references — emitted as the `tier: 'public'`
|
|
104
|
+
* global-index entry when the project qualifies its names. When the
|
|
105
|
+
* owning project's `referenceName` is `UNQUALIFIED_PROJECT_REFERENCE`,
|
|
106
|
+
* collapses to {@link getDocumentQualifiedName} (single-emit path in
|
|
107
|
+
* `HydraniumScopeComputation`).
|
|
108
|
+
*
|
|
109
|
+
* `getName` (Langium contract) defaults to {@link getProjectQualifiedName}
|
|
110
|
+
* — the workspace-unique form by construction. Adopters whose grammar
|
|
111
|
+
* uses a different lookup scheme override `getName` to return a different
|
|
112
|
+
* qualification level; grammars with bare-name cross-references stick with
|
|
113
|
+
* the framework default and rely on the local-symbols pass for the
|
|
114
|
+
* in-document case.
|
|
115
|
+
*
|
|
116
|
+
* # Relationship to `ElementKeyProvider`
|
|
117
|
+
*
|
|
118
|
+
* `NameProvider` and `ElementKeyProvider` are two distinct services:
|
|
119
|
+
* - `NameProvider` produces user-facing names used in reference syntax,
|
|
120
|
+
* completion, and search — non-unique and rename-sensitive.
|
|
121
|
+
* - `ElementKeyProvider` produces a string *handle* that round-trips to a
|
|
122
|
+
* node within a document — used for GModel ids and UI selection. A key is
|
|
123
|
+
* a lookup token, not a unique id; under the default name-based strategy
|
|
124
|
+
* it is non-unique and flips on rename (the positional strategy is unique
|
|
125
|
+
* and rename-stable instead).
|
|
126
|
+
*
|
|
127
|
+
* The split is deliberate: a single `Id`-suffixed surface conflated the name
|
|
128
|
+
* axis, the key axis, and the label axis. Adopters override the one they
|
|
129
|
+
* need.
|
|
130
|
+
*/
|
|
131
|
+
export interface NameProvider extends LangiumNameProvider {
|
|
132
|
+
/**
|
|
133
|
+
* Separator used to join name segments into a qualified name. Read
|
|
134
|
+
* polymorphically by the framework's separator-in-id validation rule
|
|
135
|
+
* (`nameSeparatorCheck`) so it works against any conforming
|
|
136
|
+
* implementation.
|
|
137
|
+
*
|
|
138
|
+
* **Two-sided contract.** Adopters that change the separator must
|
|
139
|
+
* (1) configure their grammar's reference syntax to use the same
|
|
140
|
+
* character, and (2) ensure name-typed property values do not
|
|
141
|
+
* contain that character — the framework's separator validation
|
|
142
|
+
* rule enforces (2) automatically when registered.
|
|
143
|
+
*/
|
|
144
|
+
readonly nameSeparator: string;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Produce a qualified name by joining segments with
|
|
148
|
+
* {@link nameSeparator}, dropping empty segments. The dual of the
|
|
149
|
+
* qualification-level getters: it composes the form they decompose.
|
|
150
|
+
*
|
|
151
|
+
* Use at adopter callsites that have already computed segments and
|
|
152
|
+
* need to compose them into a qualified name — typically when the
|
|
153
|
+
* segments come from a mix of node walks, project lookups, and
|
|
154
|
+
* adopter-specific suffixes. Replaces manual
|
|
155
|
+
* `segment + nameProvider.nameSeparator + segment` concatenation,
|
|
156
|
+
* which silently breaks for adopters that change the separator.
|
|
157
|
+
*
|
|
158
|
+
* Drops empty segments so callers can pass a qualification-level output
|
|
159
|
+
* that may legitimately be empty (an unqualified project reference name)
|
|
160
|
+
* without producing a leading or doubled separator.
|
|
161
|
+
*/
|
|
162
|
+
qualify(...segments: string[]): string;
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* The node's bare segment — what the user typed next to the node's
|
|
166
|
+
* declaration, with no ancestor qualification. Used for label edits,
|
|
167
|
+
* UI display, search typing, and the per-document local-symbols pass.
|
|
168
|
+
*/
|
|
169
|
+
getOwnName(node?: AstNode): string | undefined;
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Predicate form of {@link getOwnName} — true iff this NameProvider
|
|
173
|
+
* can read a name from `node` via the configured
|
|
174
|
+
* {@link NameProviderOptions.nameProperties}. Equivalent to
|
|
175
|
+
* `getOwnName(node) !== undefined`, exposed under a readable name for
|
|
176
|
+
* sites that only need the existence check (not the value).
|
|
177
|
+
*
|
|
178
|
+
* Distinct from Langium's `isNamed(node): node is NamedAstNode`
|
|
179
|
+
* upstream typeguard, which checks `node.name` specifically and
|
|
180
|
+
* narrows the static type. `hasName` is adopter-polymorphic
|
|
181
|
+
* (respects `nameProperties` — an `id`-based grammar
|
|
182
|
+
* passes `hasName` even though Langium's `isNamed` would return
|
|
183
|
+
* false), but cannot narrow at the type level because
|
|
184
|
+
* `nameProperties` is a runtime configuration.
|
|
185
|
+
*/
|
|
186
|
+
hasName(node?: AstNode): boolean;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* The property KEY {@link getOwnName} read the name from — `'name'` for
|
|
190
|
+
* a conventional grammar, `'id'` for an `id`-keyed one. Returns
|
|
191
|
+
* `undefined` when no configured name property holds a string, i.e.
|
|
192
|
+
* exactly when {@link hasName} is false.
|
|
193
|
+
*
|
|
194
|
+
* The companion of {@link getOwnName}: that returns the value, this
|
|
195
|
+
* returns where it came from. Callers that must address the name's
|
|
196
|
+
* source rather than read it need the key — an LSP semantic-token or
|
|
197
|
+
* document-symbol acceptor takes `{ node, property }` and resolves the
|
|
198
|
+
* CST range itself, so handing it the value would be useless.
|
|
199
|
+
*/
|
|
200
|
+
getNameProperty(node?: AstNode): string | undefined;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Document-qualified name — joins every named ancestor's own-name
|
|
204
|
+
* within the document using {@link nameSeparator}. Used as the name
|
|
205
|
+
* written when referencing across documents or containers within the
|
|
206
|
+
* same project; emitted as the `tier: 'project'` global-index entry by
|
|
207
|
+
* `HydraniumScopeComputation`.
|
|
208
|
+
*
|
|
209
|
+
* Unnamed ancestors (containers without their own name) contribute
|
|
210
|
+
* nothing to the qualified form — the walk skips them silently. The
|
|
211
|
+
* walk traverses through the document root: if the root has its own
|
|
212
|
+
* name, that name IS part of the qualified form. Adopters who want a
|
|
213
|
+
* different boundary override this method.
|
|
214
|
+
*/
|
|
215
|
+
getDocumentQualifiedName(node?: AstNode): string | undefined;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Project-qualified name — prepends the owning project's
|
|
219
|
+
* `referenceName` (via {@link getProjectReferenceName}) to the
|
|
220
|
+
* document-qualified name. Used as the name for cross-project
|
|
221
|
+
* references — emitted as the `tier: 'public'` global-index entry by
|
|
222
|
+
* `HydraniumScopeComputation` when the project qualifies its names.
|
|
223
|
+
*
|
|
224
|
+
* Collapses to {@link getDocumentQualifiedName} when the owning
|
|
225
|
+
* project's reference name is `UNQUALIFIED_PROJECT_REFERENCE` (empty
|
|
226
|
+
* string) or no project owns the URI — in those cases project-
|
|
227
|
+
* qualified equals document-qualified, and
|
|
228
|
+
* `HydraniumScopeComputation` skips the multi-tier emit.
|
|
229
|
+
*/
|
|
230
|
+
getProjectQualifiedName(node?: AstNode): string | undefined;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Resolve the user-facing reference prefix for the project owning
|
|
234
|
+
* `uri`. Default: reads `Project.referenceName` from the shared
|
|
235
|
+
* `ProjectManager`. Override when project ownership comes from a
|
|
236
|
+
* service other than `ProjectManager`.
|
|
237
|
+
*
|
|
238
|
+
* Returns `undefined` if no project owns the URI; returns the empty
|
|
239
|
+
* `UNQUALIFIED_PROJECT_REFERENCE` sentinel when the project is
|
|
240
|
+
* intentionally unqualified.
|
|
241
|
+
*/
|
|
242
|
+
getProjectReferenceName(uri: URI): string | undefined;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Find a unique name for a new node within `container`, using `base`
|
|
246
|
+
* as a stem. Walks the AST subtree rooted at `container` and avoids
|
|
247
|
+
* names already used by `$type === type` nodes there. Default
|
|
248
|
+
* generates `${base}1`, `${base}2`, ... until an unused value is
|
|
249
|
+
* found. Used by create-element operation handlers when the
|
|
250
|
+
* uniqueness scope is one AST subtree.
|
|
251
|
+
*/
|
|
252
|
+
findNextName(type: string, base: string, container: AstNode): string;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Find a name whose document-qualified form is unique within the
|
|
256
|
+
* given project. Walks `IndexManager.allElements(type)` and filters
|
|
257
|
+
* to the project identified by `projectId`. Used by create-element
|
|
258
|
+
* operation handlers when the uniqueness scope is one project: the
|
|
259
|
+
* result becomes the new element's bare own-name, whose document-
|
|
260
|
+
* qualified form must be unique within that project.
|
|
261
|
+
*
|
|
262
|
+
* Workspace-walk-with-filter — O(N) per call where N is the total
|
|
263
|
+
* element count of `type` workspace-wide. Adopters with a project-
|
|
264
|
+
* tier element index override for O(1) lookup.
|
|
265
|
+
*
|
|
266
|
+
* Pass {@link NextNameOptions.excludeDocumentUri} when the caller is
|
|
267
|
+
* proposing a name FOR an already-indexed document — a rename, or a
|
|
268
|
+
* client confirming a provisional id it already flushed. Without it the
|
|
269
|
+
* document collides with its own index entry and the proposal takes a
|
|
270
|
+
* spurious uniqueness suffix.
|
|
271
|
+
*/
|
|
272
|
+
findNextDocumentQualifiedName(type: string, base: string, projectId: string, options?: NextNameOptions): string;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Find a name whose project-qualified form is unique across the
|
|
276
|
+
* workspace. Walks `IndexManager.allElements(type)` workspace-wide.
|
|
277
|
+
* Used by create-element operation handlers when the uniqueness
|
|
278
|
+
* scope is the entire workspace — generating a name that must not
|
|
279
|
+
* collide with any element of `type` in any project.
|
|
280
|
+
*
|
|
281
|
+
* Takes the same {@link NextNameOptions.excludeDocumentUri} self-exclusion
|
|
282
|
+
* as {@link findNextDocumentQualifiedName}, for the same reason.
|
|
283
|
+
*/
|
|
284
|
+
findNextProjectQualifiedName(type: string, base: string, options?: NextNameOptions): string;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Default {@link NameProvider}. Resolves a node's own name from the
|
|
289
|
+
* configured {@link NameProviderOptions.nameProperties}, which defaults to
|
|
290
|
+
* `['name']` (the Langium-conventional `node.name`). Adopters whose grammar
|
|
291
|
+
* carries an explicit identifier property configure it at construction.
|
|
292
|
+
*
|
|
293
|
+
* Designed for subclassing: each qualification-level method is overridable
|
|
294
|
+
* so adopters can adjust the convention without re-implementing the whole
|
|
295
|
+
* class.
|
|
296
|
+
*/
|
|
297
|
+
export class DefaultNameProvider implements NameProvider {
|
|
298
|
+
protected readonly nameProperties: readonly string[];
|
|
299
|
+
readonly nameSeparator: string;
|
|
300
|
+
/**
|
|
301
|
+
* Per-document memo for {@link getDocumentQualifiedName} results.
|
|
302
|
+
* Eliminates the redundant container-chain walk that arises when
|
|
303
|
+
* {@link getProjectQualifiedName} (and other consumers) repeatedly
|
|
304
|
+
* query the document-qualified name for the same node within a
|
|
305
|
+
* document's lifetime. Evicted automatically when Langium rebuilds
|
|
306
|
+
* the document.
|
|
307
|
+
*
|
|
308
|
+
* Only cached when the computed result is a defined string — `undefined`
|
|
309
|
+
* results re-evaluate on each call (cheap path: `getOwnName` returns
|
|
310
|
+
* undefined for unnamed nodes, no chain walk needed).
|
|
311
|
+
*/
|
|
312
|
+
protected readonly documentQualifiedNameCache: DocumentCache<AstNode, string>;
|
|
313
|
+
/**
|
|
314
|
+
* Per-document memo for {@link getProjectQualifiedName} results.
|
|
315
|
+
* Sibling of {@link documentQualifiedNameCache}; covers the additional
|
|
316
|
+
* project-reference-name lookup the project-qualified variant performs.
|
|
317
|
+
*
|
|
318
|
+
* **Project-rename caveat.** If `Project.referenceName` mutates without
|
|
319
|
+
* a corresponding document rebuild, cached entries become stale. Adopters
|
|
320
|
+
* renaming projects at runtime should clear the cache explicitly; the
|
|
321
|
+
* default workspace lifecycle (descriptor file edits trigger
|
|
322
|
+
* `DocumentBuilder.onUpdate` → `DocumentCache` evicts) covers the
|
|
323
|
+
* common case.
|
|
324
|
+
*/
|
|
325
|
+
protected readonly projectQualifiedNameCache: DocumentCache<AstNode, string>;
|
|
326
|
+
|
|
327
|
+
constructor(
|
|
328
|
+
protected readonly services: HydraniumLanguageServices,
|
|
329
|
+
options: NameProviderOptions = {}
|
|
330
|
+
) {
|
|
331
|
+
this.nameSeparator = options.nameSeparator ?? '.';
|
|
332
|
+
this.nameProperties = options.nameProperties ?? ['name'];
|
|
333
|
+
this.documentQualifiedNameCache = new DocumentCache(services.shared);
|
|
334
|
+
this.projectQualifiedNameCache = new DocumentCache(services.shared);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Join name segments with {@link nameSeparator}, dropping empty segments.
|
|
339
|
+
* Subclasses whose joining policy depends on the segment's position or
|
|
340
|
+
* kind, rather than on a single separator, override.
|
|
341
|
+
*/
|
|
342
|
+
qualify(...segments: string[]): string {
|
|
343
|
+
return segments.filter(segment => segment.length > 0).join(this.nameSeparator);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
getOwnName(node?: AstNode): string | undefined {
|
|
347
|
+
return this.findNameProperty(node)?.value;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
hasName(node?: AstNode): boolean {
|
|
351
|
+
return this.findNameProperty(node) !== undefined;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
getNameProperty(node?: AstNode): string | undefined {
|
|
355
|
+
return this.findNameProperty(node)?.property;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* The single walk over {@link nameProperties} the three public name-reading
|
|
360
|
+
* members share — first configured property holding a string wins, so key
|
|
361
|
+
* and value can never disagree about which one that was.
|
|
362
|
+
*/
|
|
363
|
+
protected findNameProperty(node?: AstNode): ResolvedName | undefined {
|
|
364
|
+
if (!node) {
|
|
365
|
+
return undefined;
|
|
366
|
+
}
|
|
367
|
+
const indexed = node as unknown as Record<string, unknown>;
|
|
368
|
+
for (const property of this.nameProperties) {
|
|
369
|
+
const value = indexed[property];
|
|
370
|
+
if (typeof value === 'string') {
|
|
371
|
+
return { property, value };
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return undefined;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
getDocumentQualifiedName(node?: AstNode): string | undefined {
|
|
378
|
+
if (!node) {
|
|
379
|
+
return undefined;
|
|
380
|
+
}
|
|
381
|
+
const document = AstUtils.findRootNode(node).$document;
|
|
382
|
+
if (!document) {
|
|
383
|
+
return this.computeDocumentQualifiedName(node);
|
|
384
|
+
}
|
|
385
|
+
const cached = this.documentQualifiedNameCache.get(document.uri, node);
|
|
386
|
+
if (cached !== undefined) {
|
|
387
|
+
return cached;
|
|
388
|
+
}
|
|
389
|
+
const computed = this.computeDocumentQualifiedName(node);
|
|
390
|
+
if (computed !== undefined) {
|
|
391
|
+
this.documentQualifiedNameCache.set(document.uri, node, computed);
|
|
392
|
+
}
|
|
393
|
+
return computed;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
protected computeDocumentQualifiedName(node: AstNode): string | undefined {
|
|
397
|
+
let name = this.getOwnName(node);
|
|
398
|
+
if (!name) {
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
let parent = node.$container;
|
|
402
|
+
while (parent) {
|
|
403
|
+
const segment = this.getOwnName(parent);
|
|
404
|
+
if (segment) {
|
|
405
|
+
name = this.qualify(segment, name);
|
|
406
|
+
}
|
|
407
|
+
parent = parent.$container;
|
|
408
|
+
}
|
|
409
|
+
return name;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
getProjectQualifiedName(node?: AstNode): string | undefined {
|
|
413
|
+
if (!node) {
|
|
414
|
+
return undefined;
|
|
415
|
+
}
|
|
416
|
+
const document = AstUtils.findRootNode(node).$document;
|
|
417
|
+
if (!document) {
|
|
418
|
+
return this.getDocumentQualifiedName(node);
|
|
419
|
+
}
|
|
420
|
+
const cached = this.projectQualifiedNameCache.get(document.uri, node);
|
|
421
|
+
if (cached !== undefined) {
|
|
422
|
+
return cached;
|
|
423
|
+
}
|
|
424
|
+
const documentName = this.getDocumentQualifiedName(node);
|
|
425
|
+
if (!documentName) {
|
|
426
|
+
return undefined;
|
|
427
|
+
}
|
|
428
|
+
const referenceName = this.getProjectReferenceName(document.uri);
|
|
429
|
+
const computed =
|
|
430
|
+
!referenceName || referenceName === UNQUALIFIED_PROJECT_REFERENCE ? documentName : this.qualify(referenceName, documentName);
|
|
431
|
+
this.projectQualifiedNameCache.set(document.uri, node, computed);
|
|
432
|
+
return computed;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
getProjectReferenceName(uri: URI): string | undefined {
|
|
436
|
+
const project = this.services.shared.workspace.ProjectManager.getProject(uri);
|
|
437
|
+
return project?.referenceName;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Langium contract — the canonical name used by the linker for cross-
|
|
442
|
+
* reference resolution.
|
|
443
|
+
*
|
|
444
|
+
* **Default: {@link getProjectQualifiedName}** (workspace-unique by
|
|
445
|
+
* construction — a project's `referenceName` is unique within the
|
|
446
|
+
* workspace, and qualifying with it lifts any name into a workspace-
|
|
447
|
+
* unique key). This is the form the cross-document global-scope
|
|
448
|
+
* index uses for cross-project references; LSP UI surfaces (document
|
|
449
|
+
* symbols, completion, hover) also see this form and display
|
|
450
|
+
* qualified names.
|
|
451
|
+
*
|
|
452
|
+
* **Within-document references stay keyed by bare names** via
|
|
453
|
+
* `HydraniumScopeComputation.addLocalSymbol`, which explicitly calls
|
|
454
|
+
* {@link getOwnName} when populating the local-symbols map (bypassing
|
|
455
|
+
* Langium's default that goes through this `getName`). The
|
|
456
|
+
* separation lets `getName` carry the workspace-unique form for the
|
|
457
|
+
* linker without forcing qualified names into the per-document
|
|
458
|
+
* symbol map.
|
|
459
|
+
*
|
|
460
|
+
* Adopters whose grammar uses a different lookup level override here
|
|
461
|
+
* — bare names ({@link getOwnName}) for grammars without a
|
|
462
|
+
* qualified-name syntax, document-qualified ({@link getDocumentQualifiedName})
|
|
463
|
+
* for grammars whose linker resolves within a project.
|
|
464
|
+
*/
|
|
465
|
+
getName(node: AstNode): string | undefined {
|
|
466
|
+
return this.getProjectQualifiedName(node);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
getNameNode(node: AstNode): CstNode | undefined {
|
|
470
|
+
// Read-side CST rehydration. Target-range navigation
|
|
471
|
+
// (go-to-definition / declaration / implementation / type & call hierarchy)
|
|
472
|
+
// reaches the target node's name through `getNameNode` but does NOT run a
|
|
473
|
+
// build, so a target in a closed (CST-shed) document would otherwise have no
|
|
474
|
+
// CST to read. Restore it on demand — a no-op when the CST is resident
|
|
475
|
+
// (every parsed node has a `$cstNode`), so this is behaviour-neutral unless
|
|
476
|
+
// a residency policy has shed the document.
|
|
477
|
+
this.services.shared.workspace.CstResidencyService.rehydrateNode(node);
|
|
478
|
+
for (const property of this.nameProperties) {
|
|
479
|
+
const cstNode = GrammarUtils.findNodeForProperty(node.$cstNode, property);
|
|
480
|
+
if (cstNode) {
|
|
481
|
+
return cstNode;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
return undefined;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
findNextName(type: string, base: string, container: AstNode): string {
|
|
488
|
+
const proposal = base.replaceAll(this.nameSeparator, '_');
|
|
489
|
+
const knownNames = AstUtils.streamAst(container)
|
|
490
|
+
.filter(node => node.$type === type)
|
|
491
|
+
.map(node => this.getOwnName(node))
|
|
492
|
+
.nonNullable()
|
|
493
|
+
.toArray();
|
|
494
|
+
return findNextUnique(proposal, knownNames, identity);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
findNextDocumentQualifiedName(type: string, base: string, projectId: string, options?: NextNameOptions): string {
|
|
498
|
+
const proposal = base.replaceAll(this.nameSeparator, '_');
|
|
499
|
+
const shared = this.services.shared.workspace;
|
|
500
|
+
const isSelf = this.selfDocumentFilter(options);
|
|
501
|
+
const knownNames = shared.IndexManager.allElements(type)
|
|
502
|
+
.filter(description => shared.ProjectManager.getProject(description.documentUri)?.id === projectId)
|
|
503
|
+
.filter(description => !isSelf(description.documentUri))
|
|
504
|
+
.map(description => description.name)
|
|
505
|
+
.toArray();
|
|
506
|
+
return findNextUnique(proposal, knownNames, identity);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
findNextProjectQualifiedName(type: string, base: string, options?: NextNameOptions): string {
|
|
510
|
+
const proposal = base.replaceAll(this.nameSeparator, '_');
|
|
511
|
+
const isSelf = this.selfDocumentFilter(options);
|
|
512
|
+
const knownNames = this.services.shared.workspace.IndexManager.allElements(type)
|
|
513
|
+
.filter(description => !isSelf(description.documentUri))
|
|
514
|
+
.map(description => description.name)
|
|
515
|
+
.toArray();
|
|
516
|
+
return findNextUnique(proposal, knownNames, identity);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Predicate matching the document a `findNext*` proposal is being made FOR,
|
|
521
|
+
* so its own indexed entries can be dropped from the taken-name set. Returns
|
|
522
|
+
* a never-matching predicate when no exclusion was requested, which keeps the
|
|
523
|
+
* default behaviour byte-identical for existing callers.
|
|
524
|
+
*/
|
|
525
|
+
protected selfDocumentFilter(options?: NextNameOptions): (documentUri: URI) => boolean {
|
|
526
|
+
const excluded = options?.excludeDocumentUri;
|
|
527
|
+
if (excluded === undefined) {
|
|
528
|
+
return () => false;
|
|
529
|
+
}
|
|
530
|
+
const target = this.services.shared.workspace.DocumentUriPolicy.canonicalUri(excluded.toString());
|
|
531
|
+
return documentUri => this.services.shared.workspace.DocumentUriPolicy.canonicalUri(documentUri.toString()) === target;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
import { type AstNode, type ValidationAcceptor, type ValidationChecks } from '@hydranium/langium';
|
|
11
|
+
import { type ServerLanguageServices } from '../language-module.js';
|
|
12
|
+
import { type ValidationCheckContribution, type ValidationCheckRegistry } from '../validation/validation-contribution.js';
|
|
13
|
+
import type { NameProvider } from './name-provider.js';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Per-node validation check: flag name-bearing AST nodes whose name
|
|
17
|
+
* value contains the configured name separator. Such values produce
|
|
18
|
+
* silent ambiguity — once composed, a qualified name spanning several
|
|
19
|
+
* nested nodes is indistinguishable from the literal name of one node.
|
|
20
|
+
*
|
|
21
|
+
* Polymorphic on {@link NameProvider.nameSeparator}: adopters that configure
|
|
22
|
+
* a different separator get the corresponding check automatically. The rule
|
|
23
|
+
* registers under `AstNode` so it fires for every node; nodes without a
|
|
24
|
+
* name-bearing property are skipped by the check itself.
|
|
25
|
+
*
|
|
26
|
+
* This is a **validation** rule, not an **integrity** rule:
|
|
27
|
+
* - Per-node syntactic check on a single AST node — no cross-document
|
|
28
|
+
* consistency dependency.
|
|
29
|
+
* - Fires via Langium's `ValidationRegistry` at the validation phase.
|
|
30
|
+
* - Integrity rules (in `IntegrityService`) run at the `Parsed` or
|
|
31
|
+
* `Linked` phase and reason about cross-document state.
|
|
32
|
+
*/
|
|
33
|
+
export function nameSeparatorCheck(nameProvider: NameProvider): (node: AstNode, accept: ValidationAcceptor) => void {
|
|
34
|
+
return (node, accept) => {
|
|
35
|
+
const ownName = nameProvider.getOwnName(node);
|
|
36
|
+
if (typeof ownName !== 'string' || ownName.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const separator = nameProvider.nameSeparator;
|
|
40
|
+
if (ownName.includes(separator)) {
|
|
41
|
+
accept(
|
|
42
|
+
'error',
|
|
43
|
+
`Name '${ownName}' contains the configured name separator '${separator}', which is reserved for qualified-name composition — use a different character.`,
|
|
44
|
+
{ node }
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Framework's own {@link ValidationCheckContribution} for {@link nameSeparatorCheck}.
|
|
52
|
+
* Bound under `validation.checks.framework` in `createServerLanguageModule`,
|
|
53
|
+
* so every adopter receives the name-separator validation out of the box —
|
|
54
|
+
* no manual `registerValidationChecks` call needed.
|
|
55
|
+
*
|
|
56
|
+
* Adopters wanting narrower coverage can call {@link nameSeparatorCheck}
|
|
57
|
+
* directly inside their own contribution and register the result against
|
|
58
|
+
* the desired node types.
|
|
59
|
+
*/
|
|
60
|
+
export class NameSeparatorCheckContribution implements ValidationCheckContribution {
|
|
61
|
+
protected readonly nameProvider: NameProvider;
|
|
62
|
+
|
|
63
|
+
constructor(services: ServerLanguageServices) {
|
|
64
|
+
this.nameProvider = services.references.NameProvider;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
registerValidationChecks(registry: ValidationCheckRegistry): void {
|
|
68
|
+
const checks: ValidationChecks<{ AstNode: AstNode }> = {
|
|
69
|
+
AstNode: nameSeparatorCheck(this.nameProvider)
|
|
70
|
+
};
|
|
71
|
+
registry.register(checks);
|
|
72
|
+
}
|
|
73
|
+
}
|