@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,217 @@
|
|
|
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 Clock, type Logger, type Project, type Tracer, type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
|
|
10
|
+
import type { Harness } from '@hydranium/protocol/testing';
|
|
11
|
+
import { type AstNode, type AstNodeDescription, type WorkspaceLock } from '@hydranium/langium';
|
|
12
|
+
import type { ModelService, ModelServiceOptions } from '../langium/model-service/model-service.js';
|
|
13
|
+
import type { ServerSharedServices } from '../langium/module.js';
|
|
14
|
+
import { TransferEncoder } from '../langium/transfer/transfer-encoder.js';
|
|
15
|
+
import { type DocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
|
|
16
|
+
import type { FakeDocumentOptions } from './fake-document.js';
|
|
17
|
+
import { type StubDocumentBuilder } from './stub-document-builder.js';
|
|
18
|
+
import { type StubIndexManager } from './stub-index-manager.js';
|
|
19
|
+
import { type StubLangiumDocuments } from './stub-langium-documents.js';
|
|
20
|
+
import { type StubAstDocumentManager } from './stub-ast-document-manager.js';
|
|
21
|
+
import { type StubProjectManager } from './stub-project-manager.js';
|
|
22
|
+
import { type StubSelfSaveRegistry } from './stub-self-save-registry.js';
|
|
23
|
+
import { type StubHydraniumTextDocuments } from './stub-hydranium-text-documents.js';
|
|
24
|
+
import { type StubLanguageDescriptor, type StubServiceRegistry } from './stub-service-registry.js';
|
|
25
|
+
import { type StubWritableFileSystem } from './stub-writable-file-system.js';
|
|
26
|
+
/**
|
|
27
|
+
* Honest shape of the `services` tree assembled by {@link makeTestServices}.
|
|
28
|
+
* Captures exactly the slots the bundle binds — narrower than the full
|
|
29
|
+
* {@link ServerSharedServices} that production code consumes, with no
|
|
30
|
+
* placeholder for slots that don't appear in the literal (`AstNodeLocator`,
|
|
31
|
+
* `WorkspaceManager`, etc.). The boundary cast from this type
|
|
32
|
+
* to `ServerSharedServices` in {@link makeTestServices} is therefore the
|
|
33
|
+
* single named place where the "stub stands in for the full service tree"
|
|
34
|
+
* assertion happens.
|
|
35
|
+
*/
|
|
36
|
+
export interface TestSharedServices<TAst extends AstNode = AstNode, TDiagnostic extends TransferDiagnostic = TransferDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project> {
|
|
37
|
+
readonly Clock: Clock;
|
|
38
|
+
readonly Logger: Logger;
|
|
39
|
+
readonly Tracer: Tracer;
|
|
40
|
+
/**
|
|
41
|
+
* Present only when {@link MakeTestServicesOptions.languages} was passed.
|
|
42
|
+
* Omitted otherwise so a bundle without declared languages keeps failing
|
|
43
|
+
* loudly on the slot rather than answering from an empty registry — see
|
|
44
|
+
* the option's doc for why that default is deliberate.
|
|
45
|
+
*/
|
|
46
|
+
readonly ServiceRegistry?: StubServiceRegistry;
|
|
47
|
+
readonly workspace: {
|
|
48
|
+
LangiumDocuments: StubLangiumDocuments<TAst, TDiagnostic>;
|
|
49
|
+
DocumentBuilder: StubDocumentBuilder;
|
|
50
|
+
TextDocuments: StubHydraniumTextDocuments;
|
|
51
|
+
AstDocumentManager: StubAstDocumentManager<TAst, TDiagnostic>;
|
|
52
|
+
FileSystemProvider: StubWritableFileSystem;
|
|
53
|
+
SelfSaveRegistry: StubSelfSaveRegistry;
|
|
54
|
+
ProjectManager: StubProjectManager<TProject>;
|
|
55
|
+
DocumentUriPolicy: DocumentUriPolicy;
|
|
56
|
+
/**
|
|
57
|
+
* Present only when {@link MakeTestServicesOptions.seedIndex} was passed.
|
|
58
|
+
* Omitted otherwise for the same reason as `ServiceRegistry` — see that
|
|
59
|
+
* option's doc.
|
|
60
|
+
*/
|
|
61
|
+
IndexManager?: StubIndexManager;
|
|
62
|
+
/**
|
|
63
|
+
* The REAL `HydraniumWorkspaceLock`, not a stub — it is a few lines of
|
|
64
|
+
* promise queueing with no I/O, and `ModelService`'s build path serialises
|
|
65
|
+
* through it, so a no-op stub would hide exactly the interleaving the lock
|
|
66
|
+
* exists to prevent. The framework subclass rather than Langium's default
|
|
67
|
+
* because it also marks the write scope that `ModelService`'s reentrancy
|
|
68
|
+
* guard reads; binding the default here would make the guard untestable
|
|
69
|
+
* through this tree and let a reentrant write pass unnoticed.
|
|
70
|
+
*/
|
|
71
|
+
WorkspaceLock: WorkspaceLock;
|
|
72
|
+
};
|
|
73
|
+
readonly model: {
|
|
74
|
+
TransferEncoder: TransferEncoder<unknown, TDiagnostic>;
|
|
75
|
+
ModelService: ModelService<TAst, TDiagnostic, TTransfer>;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Optional configuration for {@link makeTestServices}. */
|
|
79
|
+
export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagnostic extends TransferDiagnostic = TransferDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project> {
|
|
80
|
+
/**
|
|
81
|
+
* Serialiser used by the bundled `StubModelService`. The stub tree
|
|
82
|
+
* routes no per-language `Serializer` (the stub languages bind no-op slots),
|
|
83
|
+
* so the framework's own serialize path is unavailable here — supply this
|
|
84
|
+
* whenever a test asserts on the produced text.
|
|
85
|
+
*
|
|
86
|
+
* Default: `JSON.stringify(root)` — deterministic and grammar-free, suitable
|
|
87
|
+
* for tests that don't assert on the produced text.
|
|
88
|
+
*/
|
|
89
|
+
serialize?: (uri: string, root: TTransfer) => string;
|
|
90
|
+
/**
|
|
91
|
+
* Languages to register on a {@link StubServiceRegistry} bound on the
|
|
92
|
+
* `ServiceRegistry` slot. This is how a test gets multi-language routing:
|
|
93
|
+
* production code under test then resolves per-URI through Langium's real
|
|
94
|
+
* lookup ladder instead of a per-file hand-rolled registry object.
|
|
95
|
+
*
|
|
96
|
+
* **Default: no `ServiceRegistry` slot at all.** Binding an empty registry
|
|
97
|
+
* by default would silently change behaviour for the tests that rely on the
|
|
98
|
+
* slot being absent — `ModelService.updateRewriteService` optional-chains it
|
|
99
|
+
* precisely for those bundles — so a registry appears only when a test asks
|
|
100
|
+
* for one.
|
|
101
|
+
*/
|
|
102
|
+
languages?: readonly StubLanguageDescriptor[];
|
|
103
|
+
/**
|
|
104
|
+
* Documents to declare open with a client-supplied `languageId`, as
|
|
105
|
+
* `{ [uri]: languageId }`. Forwarded to {@link makeStubServiceRegistry};
|
|
106
|
+
* only meaningful alongside {@link languages}.
|
|
107
|
+
*/
|
|
108
|
+
openLanguageIds?: Readonly<Record<string, string>>;
|
|
109
|
+
/**
|
|
110
|
+
* Clock bound on the `Clock` shared slot. Pass `makeFakeClock()` to drive
|
|
111
|
+
* time-gated logic deterministically; defaults to a real {@link SystemClock}.
|
|
112
|
+
*/
|
|
113
|
+
clock?: Clock;
|
|
114
|
+
/**
|
|
115
|
+
* Logger bound on the `Logger` slot AND wrapped by the `Tracer` slot, so a
|
|
116
|
+
* capturing logger sees both plain log lines and tracer-emitted timing/warn
|
|
117
|
+
* lines. Defaults to a {@link NoopLogger}.
|
|
118
|
+
*/
|
|
119
|
+
logger?: Logger;
|
|
120
|
+
/** Initial documents to seed the {@link StubLangiumDocuments} with. */
|
|
121
|
+
seedDocuments?: ReadonlyArray<{
|
|
122
|
+
uri: string;
|
|
123
|
+
root: TAst;
|
|
124
|
+
options?: FakeDocumentOptions<TAst, TDiagnostic>;
|
|
125
|
+
}>;
|
|
126
|
+
/** Initial projects to seed the {@link StubProjectManager} with. */
|
|
127
|
+
seedProjects?: readonly TProject[];
|
|
128
|
+
/**
|
|
129
|
+
* Global-index entries to seed a {@link StubIndexManager} with, bound on the
|
|
130
|
+
* `IndexManager` slot. This is how a test reaches the global scope —
|
|
131
|
+
* `DefaultScopeProvider` reads that slot — so a scope assertion can
|
|
132
|
+
* distinguish "closed" from "falls through to the index".
|
|
133
|
+
*
|
|
134
|
+
* **Default: no `IndexManager` slot at all**, matching {@link languages}.
|
|
135
|
+
* Binding an empty stub by default would answer every global-index read with
|
|
136
|
+
* an empty result instead of failing on the unbound slot, which is the
|
|
137
|
+
* silent-`undefined` failure the boundary cast below is annotated for; a
|
|
138
|
+
* suite that never asks for an index would then pass for a new reason.
|
|
139
|
+
*/
|
|
140
|
+
seedIndex?: readonly AstNodeDescription[];
|
|
141
|
+
/**
|
|
142
|
+
* Policy bound on the `DocumentUriPolicy` slot. Defaults to
|
|
143
|
+
* {@link DefaultDocumentUriPolicy} (syntactic normalize). Pass a stub that
|
|
144
|
+
* resolves chosen URIs to a shared canonical form to exercise the
|
|
145
|
+
* symlink-divergence bridges without touching the filesystem.
|
|
146
|
+
*/
|
|
147
|
+
documentUriPolicy?: DocumentUriPolicy;
|
|
148
|
+
/**
|
|
149
|
+
* Override the {@link ModelService} factory. Use for tests that want a
|
|
150
|
+
* custom subclass with `normalize` / lifecycle hooks; the default builds
|
|
151
|
+
* a `StubModelService` from `options.serialize`.
|
|
152
|
+
*/
|
|
153
|
+
modelService?: (services: ServerSharedServices<TProject>) => ModelService<TAst, TDiagnostic, TTransfer>;
|
|
154
|
+
/**
|
|
155
|
+
* Framework {@link ModelServiceOptions} for the DEFAULT stub service, so a
|
|
156
|
+
* test can reach an option-gated path (`serializeBuilds`, the slow-warn
|
|
157
|
+
* threshold) without supplying a whole {@link modelService} factory. Ignored
|
|
158
|
+
* when `modelService` is given — that factory owns its own construction.
|
|
159
|
+
*/
|
|
160
|
+
modelServiceOptions?: ModelServiceOptions;
|
|
161
|
+
/**
|
|
162
|
+
* Override the {@link TransferEncoder} factory. Default: framework
|
|
163
|
+
* {@link TransferEncoder} with no overrides.
|
|
164
|
+
*/
|
|
165
|
+
transferEncoder?: (services: ServerSharedServices<TProject>) => TransferEncoder<unknown, TDiagnostic>;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Bundle returned by {@link makeTestServices}. Exposes the assembled
|
|
169
|
+
* {@link ServerSharedServices} tree plus every stub the bundle composed,
|
|
170
|
+
* so tests can introspect or mutate the underlying state without re-wiring
|
|
171
|
+
* the tree. Each stub member is named after the slot it is bound on.
|
|
172
|
+
*
|
|
173
|
+
* This is the core harness and satisfies the uniform {@link Harness}
|
|
174
|
+
* contract — `services` is the **subject** (the assembled service tree the
|
|
175
|
+
* production code under test runs against), the individual `*` stubs are the
|
|
176
|
+
* **seam** (the doubles tests introspect / mutate), and `dispose()` is the
|
|
177
|
+
* uniform teardown hook (a no-op: the stubs hold only in-memory state,
|
|
178
|
+
* released with the bundle when it goes out of scope).
|
|
179
|
+
*/
|
|
180
|
+
export interface TestServicesBundle<TAst extends AstNode = AstNode, TDiagnostic extends TransferDiagnostic = TransferDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project> extends Harness {
|
|
181
|
+
readonly services: ServerSharedServices<TProject>;
|
|
182
|
+
readonly documents: StubLangiumDocuments<TAst, TDiagnostic>;
|
|
183
|
+
readonly textDocuments: StubHydraniumTextDocuments;
|
|
184
|
+
readonly astDocumentManager: StubAstDocumentManager<TAst, TDiagnostic>;
|
|
185
|
+
readonly documentBuilder: StubDocumentBuilder;
|
|
186
|
+
readonly fileSystem: StubWritableFileSystem;
|
|
187
|
+
readonly selfSaveRegistry: StubSelfSaveRegistry;
|
|
188
|
+
readonly projectManager: StubProjectManager<TProject>;
|
|
189
|
+
readonly documentUriPolicy: DocumentUriPolicy;
|
|
190
|
+
/**
|
|
191
|
+
* The registry bound on the `ServiceRegistry` slot, or `undefined` when no
|
|
192
|
+
* {@link MakeTestServicesOptions.languages} were declared.
|
|
193
|
+
*/
|
|
194
|
+
readonly serviceRegistry: StubServiceRegistry | undefined;
|
|
195
|
+
/**
|
|
196
|
+
* The stub bound on the `IndexManager` slot, or `undefined` when no
|
|
197
|
+
* {@link MakeTestServicesOptions.seedIndex} was passed.
|
|
198
|
+
*/
|
|
199
|
+
readonly indexManager: StubIndexManager | undefined;
|
|
200
|
+
readonly modelService: ModelService<TAst, TDiagnostic, TTransfer>;
|
|
201
|
+
readonly transferEncoder: TransferEncoder<unknown, TDiagnostic>;
|
|
202
|
+
readonly logger: Logger;
|
|
203
|
+
/** The clock bound on the `Clock` slot — a `makeFakeClock()` if one was passed. */
|
|
204
|
+
readonly clock: Clock;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Build a {@link ServerSharedServices} tree backed by the framework's
|
|
208
|
+
* testing stubs. The returned bundle exposes both the tree and the
|
|
209
|
+
* individual stubs so tests can introspect.
|
|
210
|
+
*
|
|
211
|
+
* **Scope.** Langium-layer stubs only — no GLSP-shaped fixtures. Tests for
|
|
212
|
+
* code that runs against real Langium services (grammar parsing, scope
|
|
213
|
+
* computation, etc.) should keep using `bootstrapLangium(...)` rather than
|
|
214
|
+
* this bundle.
|
|
215
|
+
*/
|
|
216
|
+
export declare function makeTestServices<TAst extends AstNode = AstNode, TDiagnostic extends TransferDiagnostic = TransferDiagnostic, TTransfer extends TransferElement = TransferElement, TProject extends Project = Project>(options?: MakeTestServicesOptions<TAst, TDiagnostic, TTransfer, TProject>): TestServicesBundle<TAst, TDiagnostic, TTransfer, TProject>;
|
|
217
|
+
//# sourceMappingURL=make-test-services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-test-services.d.ts","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
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 { DefaultTracer, NoopLogger, SystemClock } from '@hydranium/protocol';
|
|
10
|
+
import { TransferEncoder } from '../langium/transfer/transfer-encoder.js';
|
|
11
|
+
import { DefaultDocumentUriPolicy } from '../langium/workspace/document-uri-policy.js';
|
|
12
|
+
import { HydraniumWorkspaceLock } from '../langium/workspace/hydranium-workspace-lock.js';
|
|
13
|
+
import { makeStubDocumentBuilder } from './stub-document-builder.js';
|
|
14
|
+
import { makeStubIndexManager } from './stub-index-manager.js';
|
|
15
|
+
import { makeStubLangiumDocuments } from './stub-langium-documents.js';
|
|
16
|
+
import { makeStubModelService } from './stub-model-service.js';
|
|
17
|
+
import { makeStubAstDocumentManager } from './stub-ast-document-manager.js';
|
|
18
|
+
import { makeStubProjectManager } from './stub-project-manager.js';
|
|
19
|
+
import { makeStubSelfSaveRegistry } from './stub-self-save-registry.js';
|
|
20
|
+
import { makeStubHydraniumTextDocuments } from './stub-hydranium-text-documents.js';
|
|
21
|
+
import { makeStubServiceRegistry } from './stub-service-registry.js';
|
|
22
|
+
import { makeStubWritableFileSystem } from './stub-writable-file-system.js';
|
|
23
|
+
/**
|
|
24
|
+
* Build a {@link ServerSharedServices} tree backed by the framework's
|
|
25
|
+
* testing stubs. The returned bundle exposes both the tree and the
|
|
26
|
+
* individual stubs so tests can introspect.
|
|
27
|
+
*
|
|
28
|
+
* **Scope.** Langium-layer stubs only — no GLSP-shaped fixtures. Tests for
|
|
29
|
+
* code that runs against real Langium services (grammar parsing, scope
|
|
30
|
+
* computation, etc.) should keep using `bootstrapLangium(...)` rather than
|
|
31
|
+
* this bundle.
|
|
32
|
+
*/
|
|
33
|
+
export function makeTestServices(options = {}) {
|
|
34
|
+
const documents = makeStubLangiumDocuments(options.seedDocuments);
|
|
35
|
+
const textDocuments = makeStubHydraniumTextDocuments();
|
|
36
|
+
const documentBuilder = makeStubDocumentBuilder();
|
|
37
|
+
const selfSaveRegistry = makeStubSelfSaveRegistry();
|
|
38
|
+
const fileSystem = makeStubWritableFileSystem(selfSaveRegistry);
|
|
39
|
+
const projectManager = makeStubProjectManager(options.seedProjects);
|
|
40
|
+
const astDocumentManager = makeStubAstDocumentManager(textDocuments, fileSystem, documents);
|
|
41
|
+
const logger = options.logger ?? new NoopLogger();
|
|
42
|
+
const clock = options.clock ?? new SystemClock();
|
|
43
|
+
const tracer = new DefaultTracer(logger, clock);
|
|
44
|
+
const documentUriPolicy = options.documentUriPolicy ?? new DefaultDocumentUriPolicy();
|
|
45
|
+
const serviceRegistry = options.languages
|
|
46
|
+
? makeStubServiceRegistry(options.languages, { openLanguageIds: options.openLanguageIds })
|
|
47
|
+
: undefined;
|
|
48
|
+
const indexManager = options.seedIndex ? makeStubIndexManager(options.seedIndex) : undefined;
|
|
49
|
+
// Build the literal at its honest narrow type (TestSharedServices) so
|
|
50
|
+
// signature drift on any of these slots produces a compile error here, then
|
|
51
|
+
// cast at the boundary to ServerSharedServices so production consumers that
|
|
52
|
+
// expect the full service tree can accept it. The cast is `as unknown as`
|
|
53
|
+
// because TestSharedServices is structurally narrower (no AstNodeLocator,
|
|
54
|
+
// IndexManager, WorkspaceManager, …); production code that reads one of
|
|
55
|
+
// those slots off the bundle fails at runtime.
|
|
56
|
+
//
|
|
57
|
+
// **So adding a new service READ to a production path means adding the slot
|
|
58
|
+
// here too.** Nothing enforces it: the cast below erases the difference, so
|
|
59
|
+
// the omission surfaces as a runtime `undefined` inside whichever package
|
|
60
|
+
// happens to drive that path — typically several layers from the change, and
|
|
61
|
+
// in a package that did not touch the edit. Prefer the REAL service when it
|
|
62
|
+
// is dependency-free (as `HydraniumWorkspaceLock` is) — a no-op stub of a
|
|
63
|
+
// synchronisation primitive hides the very interleaving it exists to prevent.
|
|
64
|
+
//
|
|
65
|
+
// `model.TransferEncoder` / `model.ModelService` are populated below
|
|
66
|
+
// (after the factories run); the literal uses unsafe casts to
|
|
67
|
+
// partially-built objects to satisfy TestSharedServices, then patches
|
|
68
|
+
// them in.
|
|
69
|
+
const services = {
|
|
70
|
+
Clock: clock,
|
|
71
|
+
Logger: logger,
|
|
72
|
+
Tracer: tracer,
|
|
73
|
+
// Spread rather than assigned so the slot is genuinely ABSENT (not
|
|
74
|
+
// present-and-undefined) when no languages were declared — `'ServiceRegistry'
|
|
75
|
+
// in services` is what an optional-chaining production path effectively asks.
|
|
76
|
+
...(serviceRegistry ? { ServiceRegistry: serviceRegistry } : {}),
|
|
77
|
+
workspace: {
|
|
78
|
+
LangiumDocuments: documents,
|
|
79
|
+
DocumentBuilder: documentBuilder,
|
|
80
|
+
TextDocuments: textDocuments,
|
|
81
|
+
AstDocumentManager: astDocumentManager,
|
|
82
|
+
FileSystemProvider: fileSystem,
|
|
83
|
+
SelfSaveRegistry: selfSaveRegistry,
|
|
84
|
+
ProjectManager: projectManager,
|
|
85
|
+
DocumentUriPolicy: documentUriPolicy,
|
|
86
|
+
// Spread for the same reason as `ServiceRegistry` above — the slot must
|
|
87
|
+
// be genuinely ABSENT, not present-and-undefined, when no index was seeded.
|
|
88
|
+
...(indexManager ? { IndexManager: indexManager } : {}),
|
|
89
|
+
WorkspaceLock: new HydraniumWorkspaceLock()
|
|
90
|
+
},
|
|
91
|
+
model: {}
|
|
92
|
+
};
|
|
93
|
+
const sharedServices = services;
|
|
94
|
+
const serialize = options.serialize ?? ((_uri, root) => JSON.stringify(root));
|
|
95
|
+
const transferEncoder = options.transferEncoder
|
|
96
|
+
? options.transferEncoder(sharedServices)
|
|
97
|
+
: new TransferEncoder(sharedServices);
|
|
98
|
+
const modelService = options.modelService
|
|
99
|
+
? options.modelService(sharedServices)
|
|
100
|
+
: makeStubModelService(sharedServices, serialize, options.modelServiceOptions);
|
|
101
|
+
const mutableModel = services.model;
|
|
102
|
+
mutableModel.TransferEncoder = transferEncoder;
|
|
103
|
+
mutableModel.ModelService = modelService;
|
|
104
|
+
return {
|
|
105
|
+
services: sharedServices,
|
|
106
|
+
documents,
|
|
107
|
+
textDocuments,
|
|
108
|
+
astDocumentManager,
|
|
109
|
+
documentBuilder,
|
|
110
|
+
fileSystem,
|
|
111
|
+
selfSaveRegistry,
|
|
112
|
+
projectManager,
|
|
113
|
+
documentUriPolicy,
|
|
114
|
+
serviceRegistry,
|
|
115
|
+
indexManager,
|
|
116
|
+
modelService,
|
|
117
|
+
transferEncoder,
|
|
118
|
+
logger,
|
|
119
|
+
clock,
|
|
120
|
+
dispose: () => {
|
|
121
|
+
// No-op: the bundled stubs hold only in-memory state (maps, arrays),
|
|
122
|
+
// released with the bundle when it goes out of scope. The hook exists
|
|
123
|
+
// to satisfy the uniform Harness contract so teardown is always
|
|
124
|
+
// `harness.dispose()` regardless of which harness.
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=make-test-services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-test-services.js","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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 Clock, type Logger, type LogLevel, type Tracer } from '@hydranium/protocol';
|
|
10
|
+
/**
|
|
11
|
+
* No-op {@link Tracer} for tests — discards all output with real fluent
|
|
12
|
+
* behaviour. Use to fill the `Tracer` slot of a hand-rolled fake services tree
|
|
13
|
+
* when the test doesn't assert on emitted output. Equivalent to
|
|
14
|
+
* `new DefaultTracer()` (which already defaults to a {@link NoopLogger} +
|
|
15
|
+
* {@link SystemClock}); the named helper reads better at call sites and gives a
|
|
16
|
+
* single place to evolve the test tracer.
|
|
17
|
+
*/
|
|
18
|
+
export declare function makeNoopTracer(): Tracer;
|
|
19
|
+
/**
|
|
20
|
+
* No-op {@link Logger} for tests — discards all output with real fluent
|
|
21
|
+
* behaviour (`for`/`sub`/`with` derive no-op children; `withUri`
|
|
22
|
+
* short-circuits to the same instance). Use to fill
|
|
23
|
+
* a `Logger` slot, or to satisfy a service/function that takes a bare `Logger`,
|
|
24
|
+
* when the test doesn't assert on emitted output. Equivalent to
|
|
25
|
+
* `new NoopLogger()`; the named helper is the bare-logger sibling of
|
|
26
|
+
* {@link makeNoopTracer} and gives a single place to evolve the test logger.
|
|
27
|
+
* Prefer this over hand-rolling a `{ for, sub, with, trace } as unknown as
|
|
28
|
+
* Logger` stub — those omit methods and drift from the real surface.
|
|
29
|
+
*/
|
|
30
|
+
export declare function makeNoopLogger(): Logger;
|
|
31
|
+
/** A captured emission: log level + rendered message. */
|
|
32
|
+
export interface CapturedLine {
|
|
33
|
+
readonly level: LogLevel;
|
|
34
|
+
readonly message: string;
|
|
35
|
+
}
|
|
36
|
+
/** A {@link Logger} whose emitted lines are captured for assertions. */
|
|
37
|
+
export interface CapturingLogger {
|
|
38
|
+
readonly logger: Logger;
|
|
39
|
+
/** Every line emitted through the logger (and its derived children), in order. */
|
|
40
|
+
readonly lines: CapturedLine[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Capturing {@link Logger} for tests that assert on emitted output. Backed by a
|
|
44
|
+
* complete {@link NoopLogger} subclass — so every emit method and `for`/`sub`/
|
|
45
|
+
* `with`/`withUri` derivation works fluently — that records each emitted line
|
|
46
|
+
* into {@link CapturingLogger.lines}. Derived child loggers share the same sink.
|
|
47
|
+
* Emission is still threshold-gated, so set the level (`Logger.setLevel(...)`)
|
|
48
|
+
* to the tier under test — `'trace'` captures everything. Prefer this over
|
|
49
|
+
* hand-rolling a capturing `{ info, warn, ... } as unknown as Logger` stub.
|
|
50
|
+
*/
|
|
51
|
+
export declare function makeCapturingLogger(): CapturingLogger;
|
|
52
|
+
/** A {@link Tracer} whose emitted lines are captured for assertions. */
|
|
53
|
+
export interface CapturingTracer {
|
|
54
|
+
readonly tracer: Tracer;
|
|
55
|
+
/** Every line emitted through the tracer (and its derived children), in order. */
|
|
56
|
+
readonly lines: CapturedLine[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Capturing {@link Tracer} for tests that assert on emitted output. Wraps a
|
|
60
|
+
* {@link makeCapturingLogger} in a {@link DefaultTracer} so timing/profiling
|
|
61
|
+
* lines are captured alongside plain log lines. Emission is threshold-gated, so
|
|
62
|
+
* set the level (`Logger.setLevel(...)`) to the tier under test. Pass a
|
|
63
|
+
* {@link Clock} to share the test's fake-time axis; defaults to
|
|
64
|
+
* {@link SystemClock}.
|
|
65
|
+
*/
|
|
66
|
+
export declare function makeCapturingTracer(clock?: Clock): CapturingTracer;
|
|
67
|
+
//# sourceMappingURL=make-test-tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-test-tracer.d.ts","sourceRoot":"","sources":["../../src/testing/make-test-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAiB,KAAK,MAAM,EAAE,KAAK,QAAQ,EAA2B,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElI;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC3B;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAWrD;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,KAAyB,GAAG,eAAe,CAGrF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
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 { DefaultTracer, NoopLogger, SystemClock } from '@hydranium/protocol';
|
|
10
|
+
/**
|
|
11
|
+
* No-op {@link Tracer} for tests — discards all output with real fluent
|
|
12
|
+
* behaviour. Use to fill the `Tracer` slot of a hand-rolled fake services tree
|
|
13
|
+
* when the test doesn't assert on emitted output. Equivalent to
|
|
14
|
+
* `new DefaultTracer()` (which already defaults to a {@link NoopLogger} +
|
|
15
|
+
* {@link SystemClock}); the named helper reads better at call sites and gives a
|
|
16
|
+
* single place to evolve the test tracer.
|
|
17
|
+
*/
|
|
18
|
+
export function makeNoopTracer() {
|
|
19
|
+
return new DefaultTracer();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* No-op {@link Logger} for tests — discards all output with real fluent
|
|
23
|
+
* behaviour (`for`/`sub`/`with` derive no-op children; `withUri`
|
|
24
|
+
* short-circuits to the same instance). Use to fill
|
|
25
|
+
* a `Logger` slot, or to satisfy a service/function that takes a bare `Logger`,
|
|
26
|
+
* when the test doesn't assert on emitted output. Equivalent to
|
|
27
|
+
* `new NoopLogger()`; the named helper is the bare-logger sibling of
|
|
28
|
+
* {@link makeNoopTracer} and gives a single place to evolve the test logger.
|
|
29
|
+
* Prefer this over hand-rolling a `{ for, sub, with, trace } as unknown as
|
|
30
|
+
* Logger` stub — those omit methods and drift from the real surface.
|
|
31
|
+
*/
|
|
32
|
+
export function makeNoopLogger() {
|
|
33
|
+
return new NoopLogger();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Capturing {@link Logger} for tests that assert on emitted output. Backed by a
|
|
37
|
+
* complete {@link NoopLogger} subclass — so every emit method and `for`/`sub`/
|
|
38
|
+
* `with`/`withUri` derivation works fluently — that records each emitted line
|
|
39
|
+
* into {@link CapturingLogger.lines}. Derived child loggers share the same sink.
|
|
40
|
+
* Emission is still threshold-gated, so set the level (`Logger.setLevel(...)`)
|
|
41
|
+
* to the tier under test — `'trace'` captures everything. Prefer this over
|
|
42
|
+
* hand-rolling a capturing `{ info, warn, ... } as unknown as Logger` stub.
|
|
43
|
+
*/
|
|
44
|
+
export function makeCapturingLogger() {
|
|
45
|
+
const lines = [];
|
|
46
|
+
class Capturing extends NoopLogger {
|
|
47
|
+
emit(level, _label, message) {
|
|
48
|
+
lines.push({ level, message });
|
|
49
|
+
}
|
|
50
|
+
derive(component) {
|
|
51
|
+
return new Capturing(component);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return { logger: new Capturing(), lines };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Capturing {@link Tracer} for tests that assert on emitted output. Wraps a
|
|
58
|
+
* {@link makeCapturingLogger} in a {@link DefaultTracer} so timing/profiling
|
|
59
|
+
* lines are captured alongside plain log lines. Emission is threshold-gated, so
|
|
60
|
+
* set the level (`Logger.setLevel(...)`) to the tier under test. Pass a
|
|
61
|
+
* {@link Clock} to share the test's fake-time axis; defaults to
|
|
62
|
+
* {@link SystemClock}.
|
|
63
|
+
*/
|
|
64
|
+
export function makeCapturingTracer(clock = new SystemClock()) {
|
|
65
|
+
const { logger, lines } = makeCapturingLogger();
|
|
66
|
+
return { tracer: new DefaultTracer(logger, clock), lines };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=make-test-tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-test-tracer.js","sourceRoot":"","sources":["../../src/testing/make-test-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAc,aAAa,EAA8B,UAAU,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAElI;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAC3B,OAAO,IAAI,UAAU,EAAE,CAAC;AAC3B,CAAC;AAeD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IAChC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,SAAU,SAAQ,UAAU;QACZ,IAAI,CAAC,KAAe,EAAE,MAAc,EAAE,OAAe;YACrE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC;QACkB,MAAM,CAAC,SAAiB;YACxC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAS,CAAC;QAC3C,CAAC;KACH;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAe,IAAI,WAAW,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
/** Default name of the file that records — and authorises — a generated corpus. */
|
|
10
|
+
export declare const GENERATED_WORKSPACE_MARKER = ".hydranium-generated-workspace";
|
|
11
|
+
/** The write surface {@link makeGeneratedWorkspace} hands to {@link GeneratedWorkspaceOptions.emit}. */
|
|
12
|
+
export interface GeneratedWorkspaceWriter {
|
|
13
|
+
/** Absolute, resolved path of the corpus root. Already created and empty. */
|
|
14
|
+
readonly root: string;
|
|
15
|
+
/**
|
|
16
|
+
* Next value of the seeded stream, in `[0, 1)`.
|
|
17
|
+
*
|
|
18
|
+
* One stream for the whole corpus, drawn in emission order — so this is
|
|
19
|
+
* reproducible only as long as the emission order is. Prefer drawing
|
|
20
|
+
* unconditionally over drawing inside a branch.
|
|
21
|
+
*/
|
|
22
|
+
random(): number;
|
|
23
|
+
/** An integer in `[minimum, maximum]`, both inclusive, off the same stream. */
|
|
24
|
+
randomInt(minimum: number, maximum: number): number;
|
|
25
|
+
/**
|
|
26
|
+
* Write `content` at `relativePath` under {@link root}, creating parent
|
|
27
|
+
* directories, and count it in the summary's tally. Returns the absolute
|
|
28
|
+
* path.
|
|
29
|
+
*
|
|
30
|
+
* Line endings are normalised to LF, without which the corpus is not
|
|
31
|
+
* byte-identical across platforms and the determinism contract holds only on
|
|
32
|
+
* one OS.
|
|
33
|
+
*/
|
|
34
|
+
write(relativePath: string, content: string): string;
|
|
35
|
+
/** Create a directory under {@link root} and return its absolute path. */
|
|
36
|
+
directory(relativePath: string): string;
|
|
37
|
+
}
|
|
38
|
+
/** Inputs to {@link makeGeneratedWorkspace}. */
|
|
39
|
+
export interface GeneratedWorkspaceOptions {
|
|
40
|
+
/** Directory to write into. Created if absent; wiped if the marker permits it. */
|
|
41
|
+
readonly root: string;
|
|
42
|
+
/**
|
|
43
|
+
* Identifies the generator in the marker file, so a corpus found on disk
|
|
44
|
+
* says what produced it. Free-form; a package-qualified name reads best.
|
|
45
|
+
*/
|
|
46
|
+
readonly generator: string;
|
|
47
|
+
/**
|
|
48
|
+
* Recorded in the marker alongside the seed — the sizes the corpus was
|
|
49
|
+
* generated at, which is what makes a measurement taken over it
|
|
50
|
+
* interpretable later.
|
|
51
|
+
*/
|
|
52
|
+
readonly parameters?: Readonly<Record<string, number | string | boolean>>;
|
|
53
|
+
/** Seed for the content stream. Defaults to `0`; the same seed reproduces the corpus byte for byte. */
|
|
54
|
+
readonly seed?: number;
|
|
55
|
+
/** Marker file name. Defaults to {@link GENERATED_WORKSPACE_MARKER}. */
|
|
56
|
+
readonly marker?: string;
|
|
57
|
+
/** Emit the content. Called once, after the root is prepared and the marker written. */
|
|
58
|
+
emit(writer: GeneratedWorkspaceWriter): void;
|
|
59
|
+
}
|
|
60
|
+
/** What {@link makeGeneratedWorkspace} wrote. */
|
|
61
|
+
export interface GeneratedWorkspaceSummary {
|
|
62
|
+
/** Absolute, resolved corpus root. */
|
|
63
|
+
readonly root: string;
|
|
64
|
+
/** Seed actually used, after the default. */
|
|
65
|
+
readonly seed: number;
|
|
66
|
+
/** Marker file name actually used, relative to {@link root}. */
|
|
67
|
+
readonly marker: string;
|
|
68
|
+
/**
|
|
69
|
+
* How many files `emit` wrote, keyed by extension WITH the leading dot
|
|
70
|
+
* (`'.domain'`). The marker is not counted; everything `emit` wrote is,
|
|
71
|
+
* including any README, so a caller wanting a model-file subtotal adds up
|
|
72
|
+
* the extensions it considers model files.
|
|
73
|
+
*
|
|
74
|
+
* A tally is worth returning rather than leaving to the caller because it is
|
|
75
|
+
* the cheap assertion that catches the expensive defect: a generator whose
|
|
76
|
+
* nested loops skip a file still reports the size it was asked for, and the
|
|
77
|
+
* corpus is then quietly smaller than the number a measurement is filed
|
|
78
|
+
* under. Read it against a count taken off the filesystem, not instead of
|
|
79
|
+
* one — this counts the calls, so it cannot see a failed write.
|
|
80
|
+
*/
|
|
81
|
+
readonly files: Readonly<Record<string, number>>;
|
|
82
|
+
/** Total files `emit` wrote, the marker excluded. */
|
|
83
|
+
readonly total: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generate a corpus under `options.root` and return what was written.
|
|
87
|
+
*
|
|
88
|
+
* The marker is written BEFORE `emit` runs, so an emission that throws
|
|
89
|
+
* half-way leaves a directory the next run is still permitted to wipe. Writing
|
|
90
|
+
* it afterwards would strand a partial corpus that has to be deleted by hand,
|
|
91
|
+
* and it buys nothing: the marker only ever lands in a directory this function
|
|
92
|
+
* has just created or been authorised to clear.
|
|
93
|
+
*/
|
|
94
|
+
export declare function makeGeneratedWorkspace(options: GeneratedWorkspaceOptions): GeneratedWorkspaceSummary;
|
|
95
|
+
//# sourceMappingURL=generated-workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-workspace.d.ts","sourceRoot":"","sources":["../../../src/testing/node/generated-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAmDlF,mFAAmF;AACnF,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAE3E,wGAAwG;AACxG,MAAM,WAAW,wBAAwB;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,MAAM,IAAI,MAAM,CAAC;IACjB,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACrD,0EAA0E;IAC1E,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C;AAED,gDAAgD;AAChD,MAAM,WAAW,yBAAyB;IACvC,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC1E,uGAAuG;IACvG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,wFAAwF;IACxF,IAAI,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC/C;AAED,iDAAiD;AACjD,MAAM,WAAW,yBAAyB;IACvC,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACzB;AAmCD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,yBAAyB,GAAG,yBAAyB,CAyCpG"}
|