@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,80 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type LangiumDocument, type URI } from '@hydranium/langium';
|
|
10
|
+
import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
11
|
+
/** A validation diagnostic's severity, as a stable lowercase string for the JSON contract. */
|
|
12
|
+
export type ValidationSeverity = 'error' | 'warning' | 'info' | 'hint';
|
|
13
|
+
/**
|
|
14
|
+
* One validation problem, flattened to a serialisable shape. This is the JSON
|
|
15
|
+
* contract `hydranium-cli validate --json` emits, deliberately independent of the
|
|
16
|
+
* `vscode-languageserver` {@link Diagnostic} type so CI tooling reads a stable
|
|
17
|
+
* schema and the CLI never needs a runtime `@hydranium/core` dependency.
|
|
18
|
+
*/
|
|
19
|
+
export interface ValidationFinding {
|
|
20
|
+
/** Workspace-relative path of the document the problem was reported on. */
|
|
21
|
+
uri: string;
|
|
22
|
+
severity: ValidationSeverity;
|
|
23
|
+
message: string;
|
|
24
|
+
/** 0-based line of the diagnostic range start (add 1 for editor display). */
|
|
25
|
+
line: number;
|
|
26
|
+
/** 0-based character of the diagnostic range start (add 1 for editor display). */
|
|
27
|
+
character: number;
|
|
28
|
+
/** The diagnostic `code`, when the rule set one. */
|
|
29
|
+
code?: string | number;
|
|
30
|
+
/** The diagnostic `source`, when the rule set one. */
|
|
31
|
+
source?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Per-severity tally across the whole workspace — drives the exit code and the summary line. */
|
|
34
|
+
export interface ValidationCounts {
|
|
35
|
+
error: number;
|
|
36
|
+
warning: number;
|
|
37
|
+
info: number;
|
|
38
|
+
hint: number;
|
|
39
|
+
}
|
|
40
|
+
/** The full result of a headless workspace validation. */
|
|
41
|
+
export interface WorkspaceValidationResult {
|
|
42
|
+
/** Number of `LangiumDocument`s in the built workspace. */
|
|
43
|
+
documents: number;
|
|
44
|
+
/** Every problem found, grouped contiguously by document, in the order the documents were given. */
|
|
45
|
+
findings: ValidationFinding[];
|
|
46
|
+
/** Per-severity totals over {@link findings}. */
|
|
47
|
+
counts: ValidationCounts;
|
|
48
|
+
}
|
|
49
|
+
/** Options for {@link validateWorkspace}. */
|
|
50
|
+
export interface ValidateWorkspaceOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Create the language's shared services in-process. This is the only
|
|
53
|
+
* language-specific input — a head passes its own `create<Lang>Services(fileSystem)`.
|
|
54
|
+
*/
|
|
55
|
+
createServices: () => {
|
|
56
|
+
shared: ServerSharedServicesMinimal;
|
|
57
|
+
};
|
|
58
|
+
/** Workspace root (filesystem path or file URI) to build and validate. */
|
|
59
|
+
workspace: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Flatten each document's `diagnostics` into a {@link WorkspaceValidationResult}.
|
|
63
|
+
* Pure over its inputs (documents + a URI-to-relative-path mapper) so it unit-tests
|
|
64
|
+
* without booting a grammar; {@link validateWorkspace} is the thin boot-and-build wrapper.
|
|
65
|
+
*/
|
|
66
|
+
export declare function collectValidationResult(documents: readonly LangiumDocument[], wsRelativePath: (uri: URI) => string): WorkspaceValidationResult;
|
|
67
|
+
/**
|
|
68
|
+
* Headless workspace validation — the browser-/socket-free counterpart to the
|
|
69
|
+
* diagnostics an editor session publishes. Boots a head's Langium services
|
|
70
|
+
* in-process via {@link ValidateWorkspaceOptions.createServices}, builds every
|
|
71
|
+
* document to `Validated` (which runs the language's validation checks), then
|
|
72
|
+
* collects the diagnostics into a serialisable {@link WorkspaceValidationResult}.
|
|
73
|
+
*
|
|
74
|
+
* Backs `hydranium-cli validate`, whose non-zero exit on errors makes it a CI
|
|
75
|
+
* gate. Like the other headless harnesses the only language-specific input is the
|
|
76
|
+
* service factory, so the framework code stays head-neutral. The build is the
|
|
77
|
+
* standard eager pipeline — identical to what those sibling harnesses run.
|
|
78
|
+
*/
|
|
79
|
+
export declare function validateWorkspace(options: ValidateWorkspaceOptions): Promise<WorkspaceValidationResult>;
|
|
80
|
+
//# sourceMappingURL=validate-workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-workspace.d.ts","sourceRoot":"","sources":["../../src/node/validate-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGjF,8FAA8F;AAC9F,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACf;AAED,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACvC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iDAAiD;IACjD,MAAM,EAAE,gBAAgB,CAAC;CAC3B;AAED,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACtC;;;OAGG;IACH,cAAc,EAAE,MAAM;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC;IAC9D,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACpC,SAAS,EAAE,SAAS,eAAe,EAAE,EACrC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GACpC,yBAAyB,CAsB3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAK7G"}
|
|
@@ -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
|
+
import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver';
|
|
10
|
+
import { buildWorkspaceProgrammatically } from '../langium/workspace/initialize-workspace.js';
|
|
11
|
+
/** Map a `vscode-languageserver` severity to the stable string. Unset → `error` (fail-safe for a CI gate). */
|
|
12
|
+
function severityLabel(severity) {
|
|
13
|
+
switch (severity) {
|
|
14
|
+
case DiagnosticSeverity.Warning:
|
|
15
|
+
return 'warning';
|
|
16
|
+
case DiagnosticSeverity.Information:
|
|
17
|
+
return 'info';
|
|
18
|
+
case DiagnosticSeverity.Hint:
|
|
19
|
+
return 'hint';
|
|
20
|
+
default:
|
|
21
|
+
// DiagnosticSeverity.Error, or an omitted severity — treat as an error so
|
|
22
|
+
// a rule that forgets to set one still blocks the gate rather than passing silently.
|
|
23
|
+
return 'error';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Flatten each document's `diagnostics` into a {@link WorkspaceValidationResult}.
|
|
28
|
+
* Pure over its inputs (documents + a URI-to-relative-path mapper) so it unit-tests
|
|
29
|
+
* without booting a grammar; {@link validateWorkspace} is the thin boot-and-build wrapper.
|
|
30
|
+
*/
|
|
31
|
+
export function collectValidationResult(documents, wsRelativePath) {
|
|
32
|
+
const findings = [];
|
|
33
|
+
const counts = { error: 0, warning: 0, info: 0, hint: 0 };
|
|
34
|
+
for (const document of documents) {
|
|
35
|
+
const relativeUri = wsRelativePath(document.uri);
|
|
36
|
+
for (const diagnostic of (document.diagnostics ?? [])) {
|
|
37
|
+
const severity = severityLabel(diagnostic.severity);
|
|
38
|
+
counts[severity] += 1;
|
|
39
|
+
findings.push({
|
|
40
|
+
uri: relativeUri,
|
|
41
|
+
severity,
|
|
42
|
+
// LSP 3.18 allows a `MarkupContent` message; this report is a
|
|
43
|
+
// line-oriented CI artifact, so take its plain-text rendering.
|
|
44
|
+
message: Diagnostic.getMessageString(diagnostic),
|
|
45
|
+
line: diagnostic.range.start.line,
|
|
46
|
+
character: diagnostic.range.start.character,
|
|
47
|
+
code: diagnostic.code,
|
|
48
|
+
source: diagnostic.source
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { documents: documents.length, findings, counts };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Headless workspace validation — the browser-/socket-free counterpart to the
|
|
56
|
+
* diagnostics an editor session publishes. Boots a head's Langium services
|
|
57
|
+
* in-process via {@link ValidateWorkspaceOptions.createServices}, builds every
|
|
58
|
+
* document to `Validated` (which runs the language's validation checks), then
|
|
59
|
+
* collects the diagnostics into a serialisable {@link WorkspaceValidationResult}.
|
|
60
|
+
*
|
|
61
|
+
* Backs `hydranium-cli validate`, whose non-zero exit on errors makes it a CI
|
|
62
|
+
* gate. Like the other headless harnesses the only language-specific input is the
|
|
63
|
+
* service factory, so the framework code stays head-neutral. The build is the
|
|
64
|
+
* standard eager pipeline — identical to what those sibling harnesses run.
|
|
65
|
+
*/
|
|
66
|
+
export async function validateWorkspace(options) {
|
|
67
|
+
const { shared } = options.createServices();
|
|
68
|
+
await buildWorkspaceProgrammatically(shared, options.workspace);
|
|
69
|
+
const documents = shared.workspace.LangiumDocuments.all.toArray();
|
|
70
|
+
return collectValidationResult(documents, uri => shared.workspace.WorkspaceManager.wsRelativePath(uri));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=validate-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-workspace.js","sourceRoot":"","sources":["../../src/node/validate-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAuD9F,8GAA8G;AAC9G,SAAS,aAAa,CAAC,QAAwC;IAC5D,QAAQ,QAAQ,EAAE,CAAC;QAChB,KAAK,kBAAkB,CAAC,OAAO;YAC5B,OAAO,SAAS,CAAC;QACpB,KAAK,kBAAkB,CAAC,WAAW;YAChC,OAAO,MAAM,CAAC;QACjB,KAAK,kBAAkB,CAAC,IAAI;YACzB,OAAO,MAAM,CAAC;QACjB;YACG,0EAA0E;YAC1E,qFAAqF;YACrF,OAAO,OAAO,CAAC;IACrB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACpC,SAAqC,EACrC,cAAoC;IAEpC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjD,KAAK,MAAM,UAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAiB,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,WAAW;gBAChB,QAAQ;gBACR,8DAA8D;gBAC9D,+DAA+D;gBAC/D,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAChD,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBACjC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;gBAC3C,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;aAC3B,CAAC,CAAC;QACN,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC5C,MAAM,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,OAAO,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type WriteLockScope } from '../langium/workspace/write-lock-scope.js';
|
|
10
|
+
/**
|
|
11
|
+
* `node:async_hooks`-backed {@link WriteLockScope}.
|
|
12
|
+
*
|
|
13
|
+
* `AsyncLocalStorage` is the right primitive rather than a plain module-level
|
|
14
|
+
* boolean: the lock's action is async, and a flag set around it would report
|
|
15
|
+
* "inside" for every other task interleaved on the event loop while that action
|
|
16
|
+
* awaits — which is most of them. The store follows the async stack instead, so
|
|
17
|
+
* only code actually descended from the action sees it.
|
|
18
|
+
*/
|
|
19
|
+
export declare const nodeWriteLockScope: WriteLockScope;
|
|
20
|
+
/**
|
|
21
|
+
* Install the Node write-lock scope tracker, enabling reentrancy detection on the
|
|
22
|
+
* model facade. Idempotent. Called once at `@hydranium/core/node` load, so any
|
|
23
|
+
* Node host that imports the entry gets the detection for free; a browser bundle
|
|
24
|
+
* imports only `.` and keeps the inert default.
|
|
25
|
+
*/
|
|
26
|
+
export declare function installNodeWriteLockScope(): void;
|
|
27
|
+
//# sourceMappingURL=write-lock-scope-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-lock-scope-node.d.ts","sourceRoot":"","sources":["../../src/node/write-lock-scope-node.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,0CAA0C,CAAC;AAIlG;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAOhC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
10
|
+
import { setWriteLockScope } from '../langium/workspace/write-lock-scope.js';
|
|
11
|
+
const storage = new AsyncLocalStorage();
|
|
12
|
+
/**
|
|
13
|
+
* `node:async_hooks`-backed {@link WriteLockScope}.
|
|
14
|
+
*
|
|
15
|
+
* `AsyncLocalStorage` is the right primitive rather than a plain module-level
|
|
16
|
+
* boolean: the lock's action is async, and a flag set around it would report
|
|
17
|
+
* "inside" for every other task interleaved on the event loop while that action
|
|
18
|
+
* awaits — which is most of them. The store follows the async stack instead, so
|
|
19
|
+
* only code actually descended from the action sees it.
|
|
20
|
+
*/
|
|
21
|
+
export const nodeWriteLockScope = {
|
|
22
|
+
run(fn) {
|
|
23
|
+
return storage.run(true, fn);
|
|
24
|
+
},
|
|
25
|
+
isInside() {
|
|
26
|
+
return storage.getStore() === true;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Install the Node write-lock scope tracker, enabling reentrancy detection on the
|
|
31
|
+
* model facade. Idempotent. Called once at `@hydranium/core/node` load, so any
|
|
32
|
+
* Node host that imports the entry gets the detection for free; a browser bundle
|
|
33
|
+
* imports only `.` and keeps the inert default.
|
|
34
|
+
*/
|
|
35
|
+
export function installNodeWriteLockScope() {
|
|
36
|
+
setWriteLockScope(nodeWriteLockScope);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=write-lock-scope-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-lock-scope-node.js","sourceRoot":"","sources":["../../src/node/write-lock-scope-node.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAuB,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAElG,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAQ,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAC/C,GAAG,CAAI,EAAW;QACf,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,QAAQ;QACL,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;IACtC,CAAC;CACH,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACtC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
* A plain, JSON-like structural view of an AST sub-tree — references reduced
|
|
11
|
+
* to `{ $refText }`, every Langium-internal and computed-extension field
|
|
12
|
+
* stripped. Cycle-free by construction, so it compares cleanly with
|
|
13
|
+
* `expect(...).toEqual(...)`.
|
|
14
|
+
*/
|
|
15
|
+
export type AstSnapshot = unknown;
|
|
16
|
+
/**
|
|
17
|
+
* Project an AST node (or any value reachable from one) onto a comparable
|
|
18
|
+
* {@link AstSnapshot} that captures only the grammar-derived shape.
|
|
19
|
+
*
|
|
20
|
+
* Built for round-trip assertions: the snapshot of a model re-parsed from its
|
|
21
|
+
* own serialized text deep-equals the snapshot of the original iff
|
|
22
|
+
* serialization preserved the semantic model, independent of formatting (see
|
|
23
|
+
* the module comment for why a snapshot is needed rather than a direct compare
|
|
24
|
+
* of the live ASTs).
|
|
25
|
+
*
|
|
26
|
+
* What it keeps and what it drops:
|
|
27
|
+
* - **`Reference`** (`$refText` + `ref`) → `{ $refText }`. The resolution
|
|
28
|
+
* target is positional noise; the textual name is the grammar content.
|
|
29
|
+
* - **`$type`** is kept (it identifies the node); every other `$`-prefixed
|
|
30
|
+
* field (`$container`, `$containerProperty`, `$containerIndex`, `$cstNode`,
|
|
31
|
+
* `$document`, …) is dropped — all are derived placement/parse metadata.
|
|
32
|
+
* - **`_`-prefixed fields** — the AST-extension computed properties — are
|
|
33
|
+
* dropped: they are derived at build time, not part of what a serializer
|
|
34
|
+
* round-trips.
|
|
35
|
+
* - Arrays recurse element-wise; primitives pass through unchanged.
|
|
36
|
+
*/
|
|
37
|
+
export declare function makeAstSnapshot(value: unknown): AstSnapshot;
|
|
38
|
+
//# sourceMappingURL=ast-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-snapshot.d.ts","sourceRoot":"","sources":["../../src/testing/ast-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAiClF;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAkB3D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
* Structural AST snapshots for serializer round-trip testing.
|
|
11
|
+
*
|
|
12
|
+
* # The idea
|
|
13
|
+
*
|
|
14
|
+
* Byte-stability (the golden corpus) proves the serializer's *output format*
|
|
15
|
+
* is pinned, but not that serialization *preserves meaning*. The complementary
|
|
16
|
+
* guarantee is the round trip: parse some source, serialize the resulting
|
|
17
|
+
* model back to text, parse that text again — the two models must be the same.
|
|
18
|
+
* If they are, no semantic content was lost or invented in the trip through
|
|
19
|
+
* text, independent of whitespace, member ordering, or dropped comments.
|
|
20
|
+
*
|
|
21
|
+
* # Why a snapshot, not the live AST
|
|
22
|
+
*
|
|
23
|
+
* You cannot `expect(ast2).toEqual(ast1)` on two live Langium ASTs:
|
|
24
|
+
* - `$container` (and friends) make every node cyclic — a deep-equal walk
|
|
25
|
+
* never terminates.
|
|
26
|
+
* - `$cstNode` carries source offsets that legitimately differ once text has
|
|
27
|
+
* been re-serialized and re-parsed, so it is noise for a semantic compare.
|
|
28
|
+
* - a `Reference` holds a resolved `ref` back-pointer into the other tree;
|
|
29
|
+
* only its textual `$refText` is grammar content.
|
|
30
|
+
*
|
|
31
|
+
* {@link makeAstSnapshot} projects a node onto a plain, acyclic, JSON-like
|
|
32
|
+
* value that keeps exactly the grammar-derived shape — node `$type`s, their
|
|
33
|
+
* own properties, references reduced to `{ $refText }` — and drops the derived
|
|
34
|
+
* placement/parse metadata and computed extensions. Two snapshots then compare
|
|
35
|
+
* cleanly with `toEqual`, and that comparison means "same semantic model".
|
|
36
|
+
*/
|
|
37
|
+
import { isAstNode, isReference } from '@hydranium/langium';
|
|
38
|
+
/**
|
|
39
|
+
* Project an AST node (or any value reachable from one) onto a comparable
|
|
40
|
+
* {@link AstSnapshot} that captures only the grammar-derived shape.
|
|
41
|
+
*
|
|
42
|
+
* Built for round-trip assertions: the snapshot of a model re-parsed from its
|
|
43
|
+
* own serialized text deep-equals the snapshot of the original iff
|
|
44
|
+
* serialization preserved the semantic model, independent of formatting (see
|
|
45
|
+
* the module comment for why a snapshot is needed rather than a direct compare
|
|
46
|
+
* of the live ASTs).
|
|
47
|
+
*
|
|
48
|
+
* What it keeps and what it drops:
|
|
49
|
+
* - **`Reference`** (`$refText` + `ref`) → `{ $refText }`. The resolution
|
|
50
|
+
* target is positional noise; the textual name is the grammar content.
|
|
51
|
+
* - **`$type`** is kept (it identifies the node); every other `$`-prefixed
|
|
52
|
+
* field (`$container`, `$containerProperty`, `$containerIndex`, `$cstNode`,
|
|
53
|
+
* `$document`, …) is dropped — all are derived placement/parse metadata.
|
|
54
|
+
* - **`_`-prefixed fields** — the AST-extension computed properties — are
|
|
55
|
+
* dropped: they are derived at build time, not part of what a serializer
|
|
56
|
+
* round-trips.
|
|
57
|
+
* - Arrays recurse element-wise; primitives pass through unchanged.
|
|
58
|
+
*/
|
|
59
|
+
export function makeAstSnapshot(value) {
|
|
60
|
+
if (isReference(value)) {
|
|
61
|
+
return { $refText: value.$refText };
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
return value.map(makeAstSnapshot);
|
|
65
|
+
}
|
|
66
|
+
if (isAstNode(value)) {
|
|
67
|
+
const snapshot = { $type: value.$type };
|
|
68
|
+
for (const [key, child] of Object.entries(value)) {
|
|
69
|
+
if (key.startsWith('$') || key.startsWith('_')) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
snapshot[key] = makeAstSnapshot(child);
|
|
73
|
+
}
|
|
74
|
+
return snapshot;
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ast-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-snapshot.js","sourceRoot":"","sources":["../../src/testing/ast-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAU5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC3C,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAA4B,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACZ,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,QAAQ,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type DocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
|
|
10
|
+
/**
|
|
11
|
+
* The runner primitives the suite emits through. Vitest and Jest both supply
|
|
12
|
+
* structurally-compatible `describe`/`it`/`expect`, so the kit takes them as a
|
|
13
|
+
* parameter rather than importing a runner — keeping it usable from either, and
|
|
14
|
+
* keeping `@hydranium/core/testing` free of a hard runner dependency (the
|
|
15
|
+
* barrel is consumed by Jest adopters too).
|
|
16
|
+
*/
|
|
17
|
+
export interface DocumentUriPolicyConformanceHooks {
|
|
18
|
+
describe(name: string, body: () => void): void;
|
|
19
|
+
it(name: string, body: () => void): void;
|
|
20
|
+
expect(actual: unknown): {
|
|
21
|
+
toBe(expected: unknown): void;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Options for {@link documentUriPolicyConformance}. */
|
|
25
|
+
export interface DocumentUriPolicyConformanceOptions {
|
|
26
|
+
/**
|
|
27
|
+
* URIs the contract is checked against. A policy that strengthens identity
|
|
28
|
+
* (realpath) should include a divergent (symlinked) and an absent sample so
|
|
29
|
+
* the resolve / fallback branches are exercised. Defaults to a syntactic
|
|
30
|
+
* spread (dot segments, spaces, a non-`file:` scheme) that any policy honours.
|
|
31
|
+
*/
|
|
32
|
+
readonly sampleUris?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Reusable contract suite for any {@link DocumentUriPolicy} implementation —
|
|
36
|
+
* the framework's `DefaultDocumentUriPolicy` / `RealpathDocumentUriPolicy` and
|
|
37
|
+
* any adopter policy. Pins the two invariants the document-identity story
|
|
38
|
+
* rests on, so a change to either method — or an adopter binding a
|
|
39
|
+
* custom policy — cannot silently reintroduce the canonical/load divergence:
|
|
40
|
+
*
|
|
41
|
+
* 1. **`canonicalUri` is idempotent** — feeding it an already-canonical URI
|
|
42
|
+
* (e.g. a `LangiumDocument.uri` straight off the build) is a fixed point.
|
|
43
|
+
* 2. **Present-case agreement** — whenever `loadUri(u)` is defined (the URI is
|
|
44
|
+
* loadable), its normalised form equals `canonicalUri(u)`. This is the
|
|
45
|
+
* "two methods, one policy" guarantee: the key the document is stored under
|
|
46
|
+
* and the URI it is loaded from must denote the same identity, or a
|
|
47
|
+
* subscriber keyed by one misses events delivered under the other.
|
|
48
|
+
*
|
|
49
|
+
* The miss case is deliberately NOT constrained (the default returns the URI
|
|
50
|
+
* unchanged from `loadUri`; a realpath policy returns `undefined`) — only the
|
|
51
|
+
* present case must agree.
|
|
52
|
+
*
|
|
53
|
+
* The agreement check is vacuous for a sample that is not loadable, so the
|
|
54
|
+
* suite also emits a guard asserting that at least ONE sample is: an
|
|
55
|
+
* existence-aware policy (realpath, or an adopter's) bound against the
|
|
56
|
+
* fictional {@link DEFAULT_SAMPLE_URIS} resolves every one of them to
|
|
57
|
+
* `undefined`, and would otherwise report an all-green suite that checked
|
|
58
|
+
* nothing.
|
|
59
|
+
*
|
|
60
|
+
* @param hooks the test runner's `describe`/`it`/`expect`
|
|
61
|
+
* @param suiteName label for the emitted `describe` block
|
|
62
|
+
* @param makePolicy fresh policy per assertion (no shared mutable state)
|
|
63
|
+
*/
|
|
64
|
+
export declare function documentUriPolicyConformance(hooks: DocumentUriPolicyConformanceHooks, suiteName: string, makePolicy: () => DocumentUriPolicy, options?: DocumentUriPolicyConformanceOptions): void;
|
|
65
|
+
//# sourceMappingURL=document-uri-policy-conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-uri-policy-conformance.d.ts","sourceRoot":"","sources":["../../src/testing/document-uri-policy-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,WAAW,iCAAiC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;CAC7D;AAED,wDAAwD;AACxD,MAAM,WAAW,mCAAmC;IACjD;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,4BAA4B,CACzC,KAAK,EAAE,iCAAiC,EACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,iBAAiB,EACnC,OAAO,GAAE,mCAAwC,GACjD,IAAI,CA6BN"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { asCanonicalUri } from '@hydranium/protocol';
|
|
10
|
+
import { UriUtils } from '@hydranium/langium';
|
|
11
|
+
const DEFAULT_SAMPLE_URIS = ['file:///a/b.fake', 'file:///a/../b.fake', 'file:///My Folder/x.fake', 'builtin:///Element.fake'];
|
|
12
|
+
/**
|
|
13
|
+
* Reusable contract suite for any {@link DocumentUriPolicy} implementation —
|
|
14
|
+
* the framework's `DefaultDocumentUriPolicy` / `RealpathDocumentUriPolicy` and
|
|
15
|
+
* any adopter policy. Pins the two invariants the document-identity story
|
|
16
|
+
* rests on, so a change to either method — or an adopter binding a
|
|
17
|
+
* custom policy — cannot silently reintroduce the canonical/load divergence:
|
|
18
|
+
*
|
|
19
|
+
* 1. **`canonicalUri` is idempotent** — feeding it an already-canonical URI
|
|
20
|
+
* (e.g. a `LangiumDocument.uri` straight off the build) is a fixed point.
|
|
21
|
+
* 2. **Present-case agreement** — whenever `loadUri(u)` is defined (the URI is
|
|
22
|
+
* loadable), its normalised form equals `canonicalUri(u)`. This is the
|
|
23
|
+
* "two methods, one policy" guarantee: the key the document is stored under
|
|
24
|
+
* and the URI it is loaded from must denote the same identity, or a
|
|
25
|
+
* subscriber keyed by one misses events delivered under the other.
|
|
26
|
+
*
|
|
27
|
+
* The miss case is deliberately NOT constrained (the default returns the URI
|
|
28
|
+
* unchanged from `loadUri`; a realpath policy returns `undefined`) — only the
|
|
29
|
+
* present case must agree.
|
|
30
|
+
*
|
|
31
|
+
* The agreement check is vacuous for a sample that is not loadable, so the
|
|
32
|
+
* suite also emits a guard asserting that at least ONE sample is: an
|
|
33
|
+
* existence-aware policy (realpath, or an adopter's) bound against the
|
|
34
|
+
* fictional {@link DEFAULT_SAMPLE_URIS} resolves every one of them to
|
|
35
|
+
* `undefined`, and would otherwise report an all-green suite that checked
|
|
36
|
+
* nothing.
|
|
37
|
+
*
|
|
38
|
+
* @param hooks the test runner's `describe`/`it`/`expect`
|
|
39
|
+
* @param suiteName label for the emitted `describe` block
|
|
40
|
+
* @param makePolicy fresh policy per assertion (no shared mutable state)
|
|
41
|
+
*/
|
|
42
|
+
export function documentUriPolicyConformance(hooks, suiteName, makePolicy, options = {}) {
|
|
43
|
+
const { describe, it, expect } = hooks;
|
|
44
|
+
const sampleUris = options.sampleUris ?? DEFAULT_SAMPLE_URIS;
|
|
45
|
+
describe(suiteName, () => {
|
|
46
|
+
for (const uri of sampleUris) {
|
|
47
|
+
it(`canonicalUri is idempotent for ${uri}`, () => {
|
|
48
|
+
const once = makePolicy().canonicalUri(uri);
|
|
49
|
+
expect(makePolicy().canonicalUri(once)).toBe(once);
|
|
50
|
+
});
|
|
51
|
+
it(`canonicalUri agrees with loadUri when ${uri} is loadable`, () => {
|
|
52
|
+
const policy = makePolicy();
|
|
53
|
+
const loaded = policy.loadUri(uri);
|
|
54
|
+
if (loaded === undefined) {
|
|
55
|
+
return; // not loadable: the agreement invariant is vacuous here
|
|
56
|
+
}
|
|
57
|
+
expect(policy.canonicalUri(uri)).toBe(asCanonicalUri(UriUtils.normalize(loaded)));
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Computed here rather than tallied from the assertions above, so the
|
|
61
|
+
// guard does not depend on the runner executing tests in declaration
|
|
62
|
+
// order (a `--shuffle` run would otherwise read it as zero).
|
|
63
|
+
it(`at least one sample URI is loadable (checked: ${sampleUris.join(', ')})`, () => {
|
|
64
|
+
const loadable = sampleUris.filter(uri => makePolicy().loadUri(uri) !== undefined);
|
|
65
|
+
expect(loadable.length > 0).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=document-uri-policy-conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-uri-policy-conformance.js","sourceRoot":"","sources":["../../src/testing/document-uri-policy-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA2B9C,MAAM,mBAAmB,GAAG,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;AAE/H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,4BAA4B,CACzC,KAAwC,EACxC,SAAiB,EACjB,UAAmC,EACnC,UAA+C,EAAE;IAEjD,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAE7D,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACtB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC5B,EAAE,CAAC,kCAAkC,GAAG,EAAE,EAAE,GAAG,EAAE;gBAC9C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yCAAyC,GAAG,cAAc,EAAE,GAAG,EAAE;gBACjE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACxB,OAAO,CAAC,wDAAwD;gBACnE,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;QACN,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,6DAA6D;QAC7D,EAAE,CAAC,iDAAiD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;YAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type AstNodeDescription } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* Options for {@link makeFakeDescription}. Extends `Partial<AstNodeDescription>`
|
|
12
|
+
* (override any standard field) plus the tier-index extras (`tier`, `projectId`)
|
|
13
|
+
* that live on a `TieredAstNodeDescription` — attached without the caller
|
|
14
|
+
* writing an `as unknown as` cast.
|
|
15
|
+
*/
|
|
16
|
+
export interface FakeDescriptionOptions extends Partial<AstNodeDescription> {
|
|
17
|
+
/** Visibility tier (`'local' | 'project' | 'public' | 'universal'`) to stamp on the description. */
|
|
18
|
+
tier?: string;
|
|
19
|
+
/** Owning project id, for project/public-tier descriptions. */
|
|
20
|
+
projectId?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Build an {@link AstNodeDescription} fixture for scope / candidate / tier tests.
|
|
24
|
+
*
|
|
25
|
+
* Defaults model distinct nodes: `type: 'Fake'`, `documentUri: memory://test`,
|
|
26
|
+
* and a per-name `path` (`'/' + name`) so distinct names key as distinct nodes
|
|
27
|
+
* under the canonical filter (which keys on `documentUri#path`). Tier-sibling
|
|
28
|
+
* cases that model ONE node under several names pass an explicit shared `path`.
|
|
29
|
+
* `tier` / `projectId` are stamped on when provided; the cast that needs (those
|
|
30
|
+
* fields live on `TieredAstNodeDescription`, not on `AstNodeDescription`) is
|
|
31
|
+
* encapsulated here so call sites stay cast-free. The description sibling of
|
|
32
|
+
* `makeFakeAstNode`.
|
|
33
|
+
*/
|
|
34
|
+
export declare function makeFakeDescription(name: string, opts?: FakeDescriptionOptions): AstNodeDescription;
|
|
35
|
+
//# sourceMappingURL=fake-description.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-description.d.ts","sourceRoot":"","sources":["../../src/testing/fake-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,kBAAkB,EAAO,MAAM,oBAAoB,CAAC;AAElE;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IACxE,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,kBAAkB,CAevG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { URI } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* Build an {@link AstNodeDescription} fixture for scope / candidate / tier tests.
|
|
12
|
+
*
|
|
13
|
+
* Defaults model distinct nodes: `type: 'Fake'`, `documentUri: memory://test`,
|
|
14
|
+
* and a per-name `path` (`'/' + name`) so distinct names key as distinct nodes
|
|
15
|
+
* under the canonical filter (which keys on `documentUri#path`). Tier-sibling
|
|
16
|
+
* cases that model ONE node under several names pass an explicit shared `path`.
|
|
17
|
+
* `tier` / `projectId` are stamped on when provided; the cast that needs (those
|
|
18
|
+
* fields live on `TieredAstNodeDescription`, not on `AstNodeDescription`) is
|
|
19
|
+
* encapsulated here so call sites stay cast-free. The description sibling of
|
|
20
|
+
* `makeFakeAstNode`.
|
|
21
|
+
*/
|
|
22
|
+
export function makeFakeDescription(name, opts = {}) {
|
|
23
|
+
const description = {
|
|
24
|
+
name,
|
|
25
|
+
type: opts.type ?? 'Fake',
|
|
26
|
+
documentUri: opts.documentUri ?? URI.parse('memory://test'),
|
|
27
|
+
path: opts.path ?? '/' + name,
|
|
28
|
+
node: opts.node
|
|
29
|
+
};
|
|
30
|
+
if (opts.tier !== undefined) {
|
|
31
|
+
description.tier = opts.tier;
|
|
32
|
+
}
|
|
33
|
+
if (opts.projectId !== undefined) {
|
|
34
|
+
description.projectId = opts.projectId;
|
|
35
|
+
}
|
|
36
|
+
return description;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=fake-description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-description.js","sourceRoot":"","sources":["../../src/testing/fake-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA2B,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAelE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAA+B,EAAE;IAChF,MAAM,WAAW,GAAuB;QACrC,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAC3D,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;KACjB,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,WAAiD,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvE,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAiD,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjF,CAAC;IACD,OAAO,WAAW,CAAC;AACtB,CAAC"}
|