@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,270 @@
|
|
|
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 { CanonicalUri } from '@hydranium/protocol';
|
|
11
|
+
import type { ApplyWorkspaceEditResult } from 'vscode-languageserver';
|
|
12
|
+
import { Disposable } from 'vscode-languageserver';
|
|
13
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
14
|
+
import { LANGUAGE_CLIENT_ID } from '../documents/client-ids.js';
|
|
15
|
+
import type { ClientTextDocumentChangeEvent, HydraniumTextDocuments } from '../documents/hydranium-text-documents.js';
|
|
16
|
+
|
|
17
|
+
/** Snapshot of an open document tracked by the stub. */
|
|
18
|
+
export interface StubTextDocumentEntry {
|
|
19
|
+
uri: string;
|
|
20
|
+
version: number;
|
|
21
|
+
text: string;
|
|
22
|
+
clientId: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Stub for {@link HydraniumTextDocuments}. Implements the slice production code
|
|
27
|
+
* reads from on test paths — the content channel
|
|
28
|
+
* (`notifyDidChangeTextDocument` / `applyContentChange` / `version` /
|
|
29
|
+
* `getAuthor`), the open-state probes (`isOpenInLanguageClient` /
|
|
30
|
+
* `isOpenInAnyClient` / `openDocuments`), the push channel to the language
|
|
31
|
+
* client (`applyEditToLanguageClient` / `stagePendingContent`) and the
|
|
32
|
+
* save / close notifications — plus test-only helpers:
|
|
33
|
+
*
|
|
34
|
+
* - {@link seedOpen} — pre-populate an open document without firing change
|
|
35
|
+
* events. Use to set up a baseline version before exercising an `update`.
|
|
36
|
+
* - {@link fireClose} — synchronously deliver `onDidClose` to subscribers.
|
|
37
|
+
* The `ModelService.onClientClosed` pass-through depends on this.
|
|
38
|
+
* - {@link changes} / {@link saves} — replay arrays for assertion.
|
|
39
|
+
*
|
|
40
|
+
* # Stub-vs-real surface
|
|
41
|
+
*
|
|
42
|
+
* Picked methods are bound structurally to {@link HydraniumTextDocuments} via
|
|
43
|
+
* `Pick<...>` so the compiler enforces that each picked signature stays in
|
|
44
|
+
* lockstep with the real class. A standalone interface with no structural tie
|
|
45
|
+
* lets the stub drift silently when the real manager grows a method: the
|
|
46
|
+
* failure then surfaces only when a test calls the missing method at runtime.
|
|
47
|
+
*
|
|
48
|
+
* `get(uri)` is deliberately NOT picked — real returns the full
|
|
49
|
+
* vscode-languageserver `TextDocument` (with `lineCount`, `positionAt`,
|
|
50
|
+
* etc.); the stub returns just `{ version, getText }` which is the only
|
|
51
|
+
* shape framework callers (`AstDocumentManager.save`) read on the test
|
|
52
|
+
* paths. Promote to a Pick when a test needs the full document surface.
|
|
53
|
+
*
|
|
54
|
+
* Versions: {@link notifyDidChangeTextDocument} drops payloads whose version
|
|
55
|
+
* is `<=` the current version (matches the real `HydraniumTextDocuments`
|
|
56
|
+
* staleness fallback for clients with no didOpen baseline) so
|
|
57
|
+
* concurrent-update test patterns observe the same supersession behaviour.
|
|
58
|
+
* {@link applyContentChange} mirrors the real server-assigned write path:
|
|
59
|
+
* the version steps iff the text differs from the current content.
|
|
60
|
+
*/
|
|
61
|
+
export interface StubHydraniumTextDocuments extends Pick<
|
|
62
|
+
HydraniumTextDocuments<TextDocument>,
|
|
63
|
+
| 'version'
|
|
64
|
+
| 'notifyDidChangeTextDocument'
|
|
65
|
+
| 'applyContentChange'
|
|
66
|
+
| 'getAuthor'
|
|
67
|
+
| 'isOpenInLanguageClient'
|
|
68
|
+
| 'isOpenInAnyClient'
|
|
69
|
+
| 'applyEditToLanguageClient'
|
|
70
|
+
| 'stagePendingContent'
|
|
71
|
+
| 'openDocuments'
|
|
72
|
+
> {
|
|
73
|
+
/**
|
|
74
|
+
* Stub-tailored read accessor. Returns just the surface the framework's
|
|
75
|
+
* save path reads (`version` + `getText()`), rather than the real `get`'s
|
|
76
|
+
* full `TextDocument`.
|
|
77
|
+
*/
|
|
78
|
+
get(uri: string): { version: number; getText(): string } | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Stub-tailored save notification. Real signature accepts
|
|
81
|
+
* `DidSaveTextDocumentParams` with optional `text`; the stub takes the
|
|
82
|
+
* same shape but with `clientId` required (tests always supply it
|
|
83
|
+
* explicitly).
|
|
84
|
+
*/
|
|
85
|
+
notifyDidSaveTextDocument(event: { textDocument: { uri: string }; text?: string }, clientId: string): void;
|
|
86
|
+
/** Stub-friendly save subscription — listener gets `{ document: { uri }, clientId }`. */
|
|
87
|
+
onDidSave(listener: (event: { document: { uri: string }; clientId: string }) => void): Disposable;
|
|
88
|
+
/** Real-shaped close subscription — listener gets {@link ClientTextDocumentChangeEvent}. */
|
|
89
|
+
onDidClose(listener: (event: ClientTextDocumentChangeEvent<TextDocument>) => void): Disposable;
|
|
90
|
+
/** Pre-populate an open document without firing change events. */
|
|
91
|
+
seedOpen(uri: string, text: string, clientId: string): void;
|
|
92
|
+
/** Mark `uri` as open in the LSP textual language client (drives {@link isOpenInLanguageClient}). */
|
|
93
|
+
seedOpenInLanguageClient(uri: string): void;
|
|
94
|
+
/** Synchronously deliver `onDidClose` to subscribers. */
|
|
95
|
+
fireClose(uri: string, clientId: string): void;
|
|
96
|
+
/** Drop recorded state. Useful for `beforeEach` resets. */
|
|
97
|
+
reset(): void;
|
|
98
|
+
readonly changes: readonly StubTextDocumentEntry[];
|
|
99
|
+
readonly saves: readonly { uri: string; clientId: string }[];
|
|
100
|
+
/**
|
|
101
|
+
* Decide what {@link applyEditToLanguageClient} answers, so a suite can drive
|
|
102
|
+
* the rejection path (`{ applied: false }`) the real client takes when its
|
|
103
|
+
* buffer has outrun the version the push was addressed at. The call is still
|
|
104
|
+
* recorded in {@link appliedEdits} either way. Defaults to accepting.
|
|
105
|
+
*
|
|
106
|
+
* The handler runs INSIDE the call, which is also the only place a suite can
|
|
107
|
+
* simulate something happening while the push is in flight — a newer settle,
|
|
108
|
+
* a concurrent client edit.
|
|
109
|
+
*/
|
|
110
|
+
setApplyEditHandler(handler: (uri: string, text: string) => ApplyWorkspaceEditResult | undefined): void;
|
|
111
|
+
/** Replay of every {@link applyEditToLanguageClient} call (the text channel to Monaco). */
|
|
112
|
+
readonly appliedEdits: readonly { uri: string; text: string; label?: string }[];
|
|
113
|
+
/** Replay of every {@link stagePendingContent} call (the not-yet-open staging path). */
|
|
114
|
+
readonly staged: readonly { uri: string; text: string }[];
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Build a {@link StubHydraniumTextDocuments}. */
|
|
118
|
+
export function makeStubHydraniumTextDocuments(): StubHydraniumTextDocuments {
|
|
119
|
+
const docs = new Map<string, StubTextDocumentEntry>();
|
|
120
|
+
const changes: StubTextDocumentEntry[] = [];
|
|
121
|
+
const saves: { uri: string; clientId: string }[] = [];
|
|
122
|
+
const languageClientOpen = new Set<string>();
|
|
123
|
+
const appliedEdits: { uri: string; text: string; label?: string }[] = [];
|
|
124
|
+
const staged: { uri: string; text: string }[] = [];
|
|
125
|
+
let applyEditHandler: (uri: string, text: string) => ApplyWorkspaceEditResult | undefined = () => ({ applied: true });
|
|
126
|
+
const saveListeners: Array<(event: { document: { uri: string }; clientId: string }) => void> = [];
|
|
127
|
+
const closeListeners: Array<(event: ClientTextDocumentChangeEvent<TextDocument>) => void> = [];
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
get changes() {
|
|
131
|
+
return changes;
|
|
132
|
+
},
|
|
133
|
+
get saves() {
|
|
134
|
+
return saves;
|
|
135
|
+
},
|
|
136
|
+
get appliedEdits() {
|
|
137
|
+
return appliedEdits;
|
|
138
|
+
},
|
|
139
|
+
get staged() {
|
|
140
|
+
return staged;
|
|
141
|
+
},
|
|
142
|
+
get(uri) {
|
|
143
|
+
const doc = docs.get(uri);
|
|
144
|
+
return doc ? { version: doc.version, getText: () => doc.text } : undefined;
|
|
145
|
+
},
|
|
146
|
+
version(uri) {
|
|
147
|
+
return docs.get(uri)?.version ?? 0;
|
|
148
|
+
},
|
|
149
|
+
notifyDidChangeTextDocument(event, clientId = LANGUAGE_CLIENT_ID) {
|
|
150
|
+
const existing = docs.get(event.textDocument.uri);
|
|
151
|
+
const next: StubTextDocumentEntry = {
|
|
152
|
+
uri: event.textDocument.uri,
|
|
153
|
+
version: event.textDocument.version,
|
|
154
|
+
text: event.contentChanges[0]?.text ?? '',
|
|
155
|
+
clientId
|
|
156
|
+
};
|
|
157
|
+
if (existing && next.version <= existing.version) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
docs.set(event.textDocument.uri, next);
|
|
161
|
+
changes.push(next);
|
|
162
|
+
},
|
|
163
|
+
applyContentChange(uri, text, clientId) {
|
|
164
|
+
const existing = docs.get(uri);
|
|
165
|
+
if (!existing) {
|
|
166
|
+
throw new Error(`Document ${uri} is not open for content changes`);
|
|
167
|
+
}
|
|
168
|
+
const changed = existing.text !== text;
|
|
169
|
+
// Mirrors the real store: step the version iff the content changed;
|
|
170
|
+
// an identical write mints no new version (the original author stays
|
|
171
|
+
// on record) but is still recorded as a change (rebuild fires).
|
|
172
|
+
const next: StubTextDocumentEntry = changed ? { uri, version: existing.version + 1, text, clientId } : existing;
|
|
173
|
+
docs.set(uri, next);
|
|
174
|
+
changes.push({ uri, version: next.version, text, clientId });
|
|
175
|
+
return next.version;
|
|
176
|
+
},
|
|
177
|
+
notifyDidSaveTextDocument(event, clientId) {
|
|
178
|
+
saves.push({ uri: event.textDocument.uri, clientId });
|
|
179
|
+
for (const listener of saveListeners.slice()) {
|
|
180
|
+
listener({ document: { uri: event.textDocument.uri }, clientId });
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
onDidSave(listener) {
|
|
184
|
+
saveListeners.push(listener);
|
|
185
|
+
return Disposable.create(() => {
|
|
186
|
+
const idx = saveListeners.indexOf(listener);
|
|
187
|
+
if (idx >= 0) {
|
|
188
|
+
saveListeners.splice(idx, 1);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
},
|
|
192
|
+
onDidClose(listener) {
|
|
193
|
+
closeListeners.push(listener);
|
|
194
|
+
return Disposable.create(() => {
|
|
195
|
+
const idx = closeListeners.indexOf(listener);
|
|
196
|
+
if (idx >= 0) {
|
|
197
|
+
closeListeners.splice(idx, 1);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
},
|
|
201
|
+
getAuthor(uri) {
|
|
202
|
+
return docs.get(uri)?.clientId;
|
|
203
|
+
},
|
|
204
|
+
isOpenInLanguageClient(uri) {
|
|
205
|
+
return languageClientOpen.has(uri);
|
|
206
|
+
},
|
|
207
|
+
isOpenInAnyClient(uri) {
|
|
208
|
+
return docs.has(uri) || languageClientOpen.has(uri);
|
|
209
|
+
},
|
|
210
|
+
openDocuments() {
|
|
211
|
+
// Merge the two seeding channels: `seedOpen` records the holding client
|
|
212
|
+
// on the doc entry, `seedOpenInLanguageClient` marks the LSP client.
|
|
213
|
+
const clientsByUri = new Map<string, Set<string>>();
|
|
214
|
+
for (const [uri, entry] of docs) {
|
|
215
|
+
clientsByUri.set(uri, new Set([entry.clientId]));
|
|
216
|
+
}
|
|
217
|
+
for (const uri of languageClientOpen) {
|
|
218
|
+
const clients = clientsByUri.get(uri) ?? new Set<string>();
|
|
219
|
+
clients.add(LANGUAGE_CLIENT_ID);
|
|
220
|
+
clientsByUri.set(uri, clients);
|
|
221
|
+
}
|
|
222
|
+
// The real store keys by canonical identity; the stub's plain-string
|
|
223
|
+
// keys stand in for it (single stub-boundary cast, like `fireClose`).
|
|
224
|
+
return [...clientsByUri].map(([uri, clients]) => ({ uri: uri as CanonicalUri, clients: [...clients] }));
|
|
225
|
+
},
|
|
226
|
+
setApplyEditHandler(handler) {
|
|
227
|
+
applyEditHandler = handler;
|
|
228
|
+
},
|
|
229
|
+
async applyEditToLanguageClient(uri, newText, options): Promise<ApplyWorkspaceEditResult | undefined> {
|
|
230
|
+
appliedEdits.push({ uri, text: newText, label: options?.label });
|
|
231
|
+
return applyEditHandler(uri, newText);
|
|
232
|
+
},
|
|
233
|
+
stagePendingContent(uri, text) {
|
|
234
|
+
staged.push({ uri, text });
|
|
235
|
+
},
|
|
236
|
+
seedOpen(uri, text, clientId) {
|
|
237
|
+
docs.set(uri, { uri, version: 1, text, clientId });
|
|
238
|
+
},
|
|
239
|
+
seedOpenInLanguageClient(uri) {
|
|
240
|
+
languageClientOpen.add(uri);
|
|
241
|
+
},
|
|
242
|
+
fireClose(uri, clientId) {
|
|
243
|
+
// Drop the closing client's hold BEFORE notifying, matching the real
|
|
244
|
+
// class: listeners detect the last-close transition by consulting
|
|
245
|
+
// `isOpenInAnyClient`, which reads the already-decremented state.
|
|
246
|
+
const holder = docs.get(uri);
|
|
247
|
+
if (holder && holder.clientId === clientId) {
|
|
248
|
+
docs.delete(uri);
|
|
249
|
+
}
|
|
250
|
+
if (clientId === LANGUAGE_CLIENT_ID) {
|
|
251
|
+
languageClientOpen.delete(uri);
|
|
252
|
+
}
|
|
253
|
+
const event = { document: { uri } as unknown as TextDocument, clientId } as ClientTextDocumentChangeEvent<TextDocument>;
|
|
254
|
+
for (const listener of closeListeners.slice()) {
|
|
255
|
+
listener(event);
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
reset() {
|
|
259
|
+
docs.clear();
|
|
260
|
+
changes.length = 0;
|
|
261
|
+
saves.length = 0;
|
|
262
|
+
languageClientOpen.clear();
|
|
263
|
+
appliedEdits.length = 0;
|
|
264
|
+
staged.length = 0;
|
|
265
|
+
saveListeners.length = 0;
|
|
266
|
+
closeListeners.length = 0;
|
|
267
|
+
applyEditHandler = () => ({ applied: true });
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 AstNodeDescription, stream, type Stream } from '@hydranium/langium';
|
|
11
|
+
import type { HydraniumIndexManager } from '../langium/workspace/index-manager.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Stub for the framework's {@link HydraniumIndexManager}, backed by a flat list
|
|
15
|
+
* of descriptions a test seeds directly. It stands in for the GLOBAL INDEX — the
|
|
16
|
+
* source Langium's `DefaultScopeProvider.getGlobalScope` reads — so a test can
|
|
17
|
+
* assert what a scope does and does not fall through to without a workspace,
|
|
18
|
+
* a parse or a build.
|
|
19
|
+
*
|
|
20
|
+
* # Stub-vs-real surface
|
|
21
|
+
*
|
|
22
|
+
* `Pick` claims only the three read methods, so TypeScript keeps their
|
|
23
|
+
* signatures in lockstep with the real class and every other member of it (the
|
|
24
|
+
* `updateContent` / `removeContent` index maintenance, the reference index,
|
|
25
|
+
* `resolveElement*`, `getElementsInProject`) is unreachable through this
|
|
26
|
+
* interface. A test that needs one of those wants the real class over a real
|
|
27
|
+
* workspace.
|
|
28
|
+
*
|
|
29
|
+
* `nodeType` filtering is an exact `type` match, NOT the reflection subtype test
|
|
30
|
+
* the real manager applies — the stub binds no `AstReflection`. So a fixture
|
|
31
|
+
* asserting subtype visibility must name the concrete type, or it is asserting
|
|
32
|
+
* against the stub rather than against the framework.
|
|
33
|
+
*/
|
|
34
|
+
export interface StubIndexManager extends Pick<HydraniumIndexManager, 'allElements' | 'getElementsByName' | 'getElementByName'> {
|
|
35
|
+
/** Mutable seed; push / splice to model an index changing between assertions. */
|
|
36
|
+
readonly descriptions: AstNodeDescription[];
|
|
37
|
+
/** Drop every seeded description. */
|
|
38
|
+
reset(): void;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Build a {@link StubIndexManager}. Initial `descriptions` are pushed onto the mutable backing array. */
|
|
42
|
+
export function makeStubIndexManager(initialDescriptions: readonly AstNodeDescription[] = []): StubIndexManager {
|
|
43
|
+
const descriptions: AstNodeDescription[] = [...initialDescriptions];
|
|
44
|
+
|
|
45
|
+
const matching = (name: string, type?: string, languageId?: string): AstNodeDescription[] =>
|
|
46
|
+
descriptions.filter(
|
|
47
|
+
description =>
|
|
48
|
+
description.name === name &&
|
|
49
|
+
(type === undefined || description.type === type) &&
|
|
50
|
+
// The real manager derives the language id from the document URI via
|
|
51
|
+
// the service registry; the stub has neither, so it can only honour
|
|
52
|
+
// an unfiltered query.
|
|
53
|
+
languageId === undefined
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
get descriptions() {
|
|
58
|
+
return descriptions;
|
|
59
|
+
},
|
|
60
|
+
allElements(nodeType?: string, uris?: Set<string>): Stream<AstNodeDescription> {
|
|
61
|
+
return stream(
|
|
62
|
+
descriptions.filter(
|
|
63
|
+
description =>
|
|
64
|
+
(nodeType === undefined || description.type === nodeType) &&
|
|
65
|
+
(uris === undefined || uris.has(description.documentUri.toString()))
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
},
|
|
69
|
+
getElementsByName(name: string, type?: string, languageId?: string): readonly AstNodeDescription[] {
|
|
70
|
+
return matching(name, type, languageId);
|
|
71
|
+
},
|
|
72
|
+
getElementByName(name: string, type?: string, languageId?: string): AstNodeDescription | undefined {
|
|
73
|
+
return matching(name, type, languageId)[0];
|
|
74
|
+
},
|
|
75
|
+
reset() {
|
|
76
|
+
descriptions.length = 0;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
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 LangiumDocument, type LangiumDocuments, stream, type URI } from '@hydranium/langium';
|
|
11
|
+
import { makeFakeAstNode, makeFakeDocument, type FakeDocumentOptions } from './fake-document.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Map-backed stub for Langium's {@link LangiumDocuments} registry. Implements
|
|
15
|
+
* the surface real consumer code reads from on test paths
|
|
16
|
+
* (`getDocument` / `hasDocument` / `getOrCreateDocument` / `all`) plus
|
|
17
|
+
* test-only helpers: `set` (mutate the registry), `clear`, and `entries`
|
|
18
|
+
* (read the backing map directly).
|
|
19
|
+
*
|
|
20
|
+
* # Stub-vs-real surface
|
|
21
|
+
*
|
|
22
|
+
* Picks only the methods the framework reads on test paths from
|
|
23
|
+
* {@link LangiumDocuments}; the compiler enforces those signatures stay
|
|
24
|
+
* aligned with the real interface. Methods Langium adds in the future
|
|
25
|
+
* (or methods the stub doesn't claim — `deleteDocument`, etc.) can't be
|
|
26
|
+
* called through this stub interface; consumers that need them either
|
|
27
|
+
* extend the Pick or wire the real registry.
|
|
28
|
+
*
|
|
29
|
+
* Returned as a structural value rather than a class subclass because
|
|
30
|
+
* Langium doesn't expose a constructable `LangiumDocuments` registry —
|
|
31
|
+
* production code reads the slot value through the `LangiumDocuments`
|
|
32
|
+
* interface and a narrowing cast bridges the stub at the binding site.
|
|
33
|
+
*/
|
|
34
|
+
export interface StubLangiumDocuments<TAst extends AstNode = AstNode, TDiagnostic = unknown> extends Pick<
|
|
35
|
+
LangiumDocuments,
|
|
36
|
+
'getDocument' | 'hasDocument' | 'getOrCreateDocument' | 'all'
|
|
37
|
+
> {
|
|
38
|
+
/**
|
|
39
|
+
* Replace (or insert) the {@link LangiumDocument} at the given URI. Returns
|
|
40
|
+
* the inserted document so call sites can chain to phase-fire helpers
|
|
41
|
+
* without a separate lookup.
|
|
42
|
+
*/
|
|
43
|
+
set(uri: string | URI, root: TAst, options?: FakeDocumentOptions<TAst, TDiagnostic>): LangiumDocument<TAst>;
|
|
44
|
+
/** Drop every entry. Useful for `beforeEach` resets without rebuilding the bundle. */
|
|
45
|
+
clear(): void;
|
|
46
|
+
/** Direct accessor on the underlying map — for assertion-side reads in tests. */
|
|
47
|
+
readonly entries: ReadonlyMap<string, LangiumDocument<TAst>>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Build a {@link StubLangiumDocuments}. Seed entries via the optional
|
|
52
|
+
* `seeds` parameter so simple tests don't need a separate `set` call.
|
|
53
|
+
*/
|
|
54
|
+
export function makeStubLangiumDocuments<TAst extends AstNode = AstNode, TDiagnostic = unknown>(
|
|
55
|
+
seeds: ReadonlyArray<{ uri: string | URI; root: TAst; options?: FakeDocumentOptions<TAst, TDiagnostic> }> = []
|
|
56
|
+
): StubLangiumDocuments<TAst, TDiagnostic> {
|
|
57
|
+
const docs = new Map<string, LangiumDocument<TAst>>();
|
|
58
|
+
|
|
59
|
+
const stub: StubLangiumDocuments<TAst, TDiagnostic> = {
|
|
60
|
+
get entries() {
|
|
61
|
+
return docs;
|
|
62
|
+
},
|
|
63
|
+
get all() {
|
|
64
|
+
// A `Stream`, not an array: the picked signature promises one, and
|
|
65
|
+
// framework code reads `documents.all.toArray()`. Returning an array
|
|
66
|
+
// behind the cast let that call throw against the stub while every
|
|
67
|
+
// signature still typechecked. Use `entries` for a size.
|
|
68
|
+
return stream(docs.values()) as unknown as LangiumDocuments['all'];
|
|
69
|
+
},
|
|
70
|
+
set(uri: string | URI, root: TAst, options?: FakeDocumentOptions<TAst, TDiagnostic>) {
|
|
71
|
+
const key = typeof uri === 'string' ? uri : uri.toString();
|
|
72
|
+
const doc = makeFakeDocument<TAst, TDiagnostic>(uri, root, options);
|
|
73
|
+
docs.set(key, doc);
|
|
74
|
+
return doc;
|
|
75
|
+
},
|
|
76
|
+
clear() {
|
|
77
|
+
docs.clear();
|
|
78
|
+
},
|
|
79
|
+
getDocument(uri: URI) {
|
|
80
|
+
return docs.get(uri.toString()) as LangiumDocument | undefined;
|
|
81
|
+
},
|
|
82
|
+
hasDocument(uri: URI) {
|
|
83
|
+
return docs.has(uri.toString());
|
|
84
|
+
},
|
|
85
|
+
async getOrCreateDocument(uri: URI) {
|
|
86
|
+
const existing = docs.get(uri.toString());
|
|
87
|
+
if (existing) {
|
|
88
|
+
return existing as LangiumDocument;
|
|
89
|
+
}
|
|
90
|
+
// Registered on creation, as `DefaultLangiumDocuments` does — a
|
|
91
|
+
// caller that reads it back through `getDocument` must find it. The
|
|
92
|
+
// root is a `$type: 'unknown'` placeholder because the stub has no
|
|
93
|
+
// parser, so a test asserting on the root has to `set` first.
|
|
94
|
+
const placeholder = makeFakeDocument(uri, makeFakeAstNode<TAst>({ $type: 'unknown' }));
|
|
95
|
+
docs.set(uri.toString(), placeholder);
|
|
96
|
+
return placeholder as LangiumDocument;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
for (const seed of seeds) {
|
|
101
|
+
stub.set(seed.uri, seed.root, seed.options);
|
|
102
|
+
}
|
|
103
|
+
return stub;
|
|
104
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
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 { TransferDiagnostic, TransferElement } from '@hydranium/protocol';
|
|
11
|
+
import type { AstNode } from '@hydranium/langium';
|
|
12
|
+
import { ModelService, type ModelServiceOptions } from '../langium/model-service/model-service.js';
|
|
13
|
+
import type { ServerSharedServices } from '../langium/module.js';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Implementation detail of {@link makeStubModelService}. A {@link ModelService}
|
|
17
|
+
* subclass that takes `serialize` as a constructor callback — the test stub
|
|
18
|
+
* services tree has no `ServiceRegistry`, so the framework default `serialize`
|
|
19
|
+
* path would fail. Construct it through the factory; the {@link StubModelService}
|
|
20
|
+
* type alias is the public type name.
|
|
21
|
+
*/
|
|
22
|
+
class StubModelServiceImpl<
|
|
23
|
+
TAst extends AstNode,
|
|
24
|
+
TDiagnostic extends TransferDiagnostic = TransferDiagnostic,
|
|
25
|
+
TTransfer extends TransferElement = TransferElement
|
|
26
|
+
> extends ModelService<TAst, TDiagnostic, TTransfer> {
|
|
27
|
+
constructor(
|
|
28
|
+
services: ServerSharedServices,
|
|
29
|
+
protected readonly serializeFn: (uri: string, root: TTransfer) => string,
|
|
30
|
+
options?: ModelServiceOptions
|
|
31
|
+
) {
|
|
32
|
+
super(services, options);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
protected override serialize(uri: string, root: TTransfer): string {
|
|
36
|
+
return this.serializeFn(uri, root);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The type of the model-service test double produced by {@link makeStubModelService}. */
|
|
41
|
+
export type StubModelService<
|
|
42
|
+
TAst extends AstNode,
|
|
43
|
+
TDiagnostic extends TransferDiagnostic = TransferDiagnostic,
|
|
44
|
+
TTransfer extends TransferElement = TransferElement
|
|
45
|
+
> = ModelService<TAst, TDiagnostic, TTransfer>;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Build a {@link StubModelService} — a {@link ModelService} test double that
|
|
49
|
+
* takes `serialize` as a constructor callback. The stub services tree has no
|
|
50
|
+
* `ServiceRegistry`, so the framework default `serialize` path would fail; the
|
|
51
|
+
* callback supplies a grammar-free serializer instead. The bundle assembled by
|
|
52
|
+
* `makeTestServices` wires this stub automatically.
|
|
53
|
+
*
|
|
54
|
+
* `options` are the framework {@link ModelServiceOptions}, forwarded verbatim, so
|
|
55
|
+
* a test can exercise an option-gated code path (`serializeBuilds`, the slow-warn
|
|
56
|
+
* threshold) without hand-rolling a subclass just to reach the constructor.
|
|
57
|
+
*
|
|
58
|
+
* Adopters that need richer override behaviour — the framework's own extension
|
|
59
|
+
* surface is {@link ModelService.rewriteModel} alongside `serialize` — should
|
|
60
|
+
* subclass {@link ModelService} directly instead.
|
|
61
|
+
*/
|
|
62
|
+
export function makeStubModelService<
|
|
63
|
+
TAst extends AstNode,
|
|
64
|
+
TDiagnostic extends TransferDiagnostic = TransferDiagnostic,
|
|
65
|
+
TTransfer extends TransferElement = TransferElement
|
|
66
|
+
>(
|
|
67
|
+
services: ServerSharedServices,
|
|
68
|
+
serialize: (uri: string, root: TTransfer) => string,
|
|
69
|
+
options?: ModelServiceOptions
|
|
70
|
+
): StubModelService<TAst, TDiagnostic, TTransfer> {
|
|
71
|
+
return new StubModelServiceImpl<TAst, TDiagnostic, TTransfer>(services, serialize, options);
|
|
72
|
+
}
|