@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,161 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import { type Project, UNQUALIFIED_PROJECT_REFERENCE } from '@hydranium/protocol';
|
|
11
|
+
import { type AstNode, AstUtils, type URI, UriUtils } from '@hydranium/langium';
|
|
12
|
+
import { Disposable } from 'vscode-languageserver';
|
|
13
|
+
import type { WorkspaceFolder } from 'vscode-languageserver-types';
|
|
14
|
+
import type { ProjectChangeEvent, ProjectChangeListener } from '../langium/project/project-change-event.js';
|
|
15
|
+
import type { ProjectManager } from '../langium/project/project-manager.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Stub for {@link ProjectManager}. Backed by a mutable `projects` array so
|
|
19
|
+
* tests can rearrange the registry between assertions, with test-only
|
|
20
|
+
* helpers:
|
|
21
|
+
*
|
|
22
|
+
* - {@link ownUri} — declare which project owns a given URI. Drives
|
|
23
|
+
* {@link getProject} lookups so tests can model multi-project workspaces
|
|
24
|
+
* without spinning up an `AbstractProjectManager`.
|
|
25
|
+
* - {@link fireProjectsChanged} — synchronously deliver a synthetic
|
|
26
|
+
* {@link ProjectChangeEvent} to subscribers.
|
|
27
|
+
*
|
|
28
|
+
* `getProjectUris` / `getVisibleProjects` / `isVisible` answer from the
|
|
29
|
+
* declared ownership and the projects' `dependencies`, matching what
|
|
30
|
+
* `AbstractProjectManager` computes. `discoverProjects` and
|
|
31
|
+
* `isProjectDescriptor` are inert defaults (no-op / always `false`);
|
|
32
|
+
* override the returned object's methods for tests that need discovery
|
|
33
|
+
* behaviour.
|
|
34
|
+
*/
|
|
35
|
+
export interface StubProjectManager<TProject extends Project = Project> extends ProjectManager<TProject> {
|
|
36
|
+
/** Mutable project list; push / splice to model a changing registry. */
|
|
37
|
+
readonly projects: TProject[];
|
|
38
|
+
/** Declare which project owns the given URI for {@link getProject} lookups. */
|
|
39
|
+
ownUri(uri: string | URI, projectId: string): void;
|
|
40
|
+
/** Synchronously deliver a {@link ProjectChangeEvent} to every registered listener. */
|
|
41
|
+
fireProjectsChanged(event: ProjectChangeEvent<TProject>): void;
|
|
42
|
+
/** Drop ownership state, projects, and listeners. */
|
|
43
|
+
reset(): void;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Build a {@link StubProjectManager}. Initial `projects` are pushed onto the mutable backing array. */
|
|
47
|
+
export function makeStubProjectManager<TProject extends Project = Project>(
|
|
48
|
+
initialProjects: readonly TProject[] = []
|
|
49
|
+
): StubProjectManager<TProject> {
|
|
50
|
+
const projects: TProject[] = [...initialProjects];
|
|
51
|
+
const listeners: ProjectChangeListener<TProject>[] = [];
|
|
52
|
+
const ownership = new Map<string, string>();
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
get projects() {
|
|
56
|
+
return projects;
|
|
57
|
+
},
|
|
58
|
+
ready: Promise.resolve(),
|
|
59
|
+
async discoverProjects(_folders: readonly WorkspaceFolder[]): Promise<void> {
|
|
60
|
+
// No-op default: the stub's registry is seeded directly. Tests that
|
|
61
|
+
// exercise discovery semantics override this method or use a real
|
|
62
|
+
// `AbstractProjectManager` subclass.
|
|
63
|
+
},
|
|
64
|
+
isProjectDescriptor(): boolean {
|
|
65
|
+
return false;
|
|
66
|
+
},
|
|
67
|
+
isSingleProject(): boolean {
|
|
68
|
+
return projects.length <= 1;
|
|
69
|
+
},
|
|
70
|
+
isUnqualifiedProjectReference(uri: URI | string) {
|
|
71
|
+
const project = this.getProject(uri);
|
|
72
|
+
return project === undefined || project.referenceName === UNQUALIFIED_PROJECT_REFERENCE;
|
|
73
|
+
},
|
|
74
|
+
getProjects() {
|
|
75
|
+
return projects;
|
|
76
|
+
},
|
|
77
|
+
getProjectById(id: string) {
|
|
78
|
+
return projects.find(project => project.id === id);
|
|
79
|
+
},
|
|
80
|
+
getProject(uri: URI | string) {
|
|
81
|
+
const key = typeof uri === 'string' ? uri : uri.toString();
|
|
82
|
+
const projectId = ownership.get(key);
|
|
83
|
+
return projectId ? projects.find(project => project.id === projectId) : undefined;
|
|
84
|
+
},
|
|
85
|
+
getProjectForNode(node: AstNode) {
|
|
86
|
+
const uri = AstUtils.findRootNode(node).$document?.uri;
|
|
87
|
+
return uri ? this.getProject(uri) : undefined;
|
|
88
|
+
},
|
|
89
|
+
getProjectUris(projectId: string): readonly URI[] {
|
|
90
|
+
// Registration gates the ownership scan, as in `AbstractProjectManager`:
|
|
91
|
+
// an id no project carries owns nothing, whatever the ownership map
|
|
92
|
+
// says. Without the gate a test could assert membership for a project
|
|
93
|
+
// that was never registered.
|
|
94
|
+
if (!projects.some(project => project.id === projectId)) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
return [...ownership.entries()].filter(([, id]) => id === projectId).map(([uri]) => UriUtils.toUri(uri));
|
|
98
|
+
},
|
|
99
|
+
getVisibleProjects(projectId: string): readonly string[] {
|
|
100
|
+
// Transitive closure of `Project.dependencies` including the source
|
|
101
|
+
// — mirrors `AbstractProjectManager.getVisibleProjects` so tests
|
|
102
|
+
// observe the same visibility model the production manager does.
|
|
103
|
+
if (!projects.some(project => project.id === projectId)) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
const visited = new Set<string>();
|
|
107
|
+
const ordered: string[] = [];
|
|
108
|
+
const walk = (id: string): void => {
|
|
109
|
+
if (visited.has(id)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
visited.add(id);
|
|
113
|
+
const project = projects.find(p => p.id === id);
|
|
114
|
+
if (!project) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
ordered.push(id);
|
|
118
|
+
for (const dep of project.dependencies ?? []) {
|
|
119
|
+
walk(dep);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
walk(projectId);
|
|
123
|
+
return ordered;
|
|
124
|
+
},
|
|
125
|
+
isVisible(sourceProjectId: string, targetProjectId: string, selfVisible = false): boolean {
|
|
126
|
+
// Same logic as AbstractProjectManager.isVisible — kept inline so the
|
|
127
|
+
// stub stays self-contained.
|
|
128
|
+
const visible = this.getVisibleProjects(sourceProjectId);
|
|
129
|
+
if (visible.length === 0) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
if (sourceProjectId === targetProjectId) {
|
|
133
|
+
return selfVisible;
|
|
134
|
+
}
|
|
135
|
+
return visible.includes(targetProjectId);
|
|
136
|
+
},
|
|
137
|
+
onProjectsChanged(listener: ProjectChangeListener<TProject>) {
|
|
138
|
+
listeners.push(listener);
|
|
139
|
+
return Disposable.create(() => {
|
|
140
|
+
const idx = listeners.indexOf(listener);
|
|
141
|
+
if (idx >= 0) {
|
|
142
|
+
listeners.splice(idx, 1);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
ownUri(uri, projectId) {
|
|
147
|
+
const key = typeof uri === 'string' ? uri : uri.toString();
|
|
148
|
+
ownership.set(key, projectId);
|
|
149
|
+
},
|
|
150
|
+
fireProjectsChanged(event) {
|
|
151
|
+
for (const listener of listeners.slice()) {
|
|
152
|
+
listener(event);
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
reset() {
|
|
156
|
+
projects.length = 0;
|
|
157
|
+
listeners.length = 0;
|
|
158
|
+
ownership.clear();
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import type { SelfSaveRegistry } from '../documents/self-save-registry.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Stub for the framework's {@link SelfSaveRegistry}. Records `register` calls
|
|
14
|
+
* so tests can assert that a save path correctly notified the registry.
|
|
15
|
+
*
|
|
16
|
+
* # Stub-vs-real surface
|
|
17
|
+
*
|
|
18
|
+
* The stub declares only the methods exercised by tests via
|
|
19
|
+
* `Pick<SelfSaveRegistry, ...>` — TypeScript enforces that each picked
|
|
20
|
+
* method's signature stays in lockstep with the real class. `matches`, the
|
|
21
|
+
* only other member, is not claimed and so cannot be called through this
|
|
22
|
+
* interface; a test that needs the TTL / mtime matching either picks it here
|
|
23
|
+
* or uses the real class.
|
|
24
|
+
*/
|
|
25
|
+
export interface StubSelfSaveRegistry extends Pick<SelfSaveRegistry, 'register'> {
|
|
26
|
+
readonly registerCalls: ReadonlyArray<{ fsPath: string; mtimeMs: number }>;
|
|
27
|
+
reset(): void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function makeStubSelfSaveRegistry(): StubSelfSaveRegistry {
|
|
31
|
+
const registerCalls: { fsPath: string; mtimeMs: number }[] = [];
|
|
32
|
+
return {
|
|
33
|
+
get registerCalls() {
|
|
34
|
+
return registerCalls;
|
|
35
|
+
},
|
|
36
|
+
register(fsPath, mtimeMs) {
|
|
37
|
+
registerCalls.push({ fsPath, mtimeMs });
|
|
38
|
+
},
|
|
39
|
+
reset() {
|
|
40
|
+
registerCalls.length = 0;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import type { Grammar, LangiumSharedCoreServices, URI } from '@hydranium/langium';
|
|
11
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
12
|
+
import type { ServerLanguageServices } from '../langium/language-module.js';
|
|
13
|
+
import { ExtendedServiceRegistry } from '../langium/service-registry.js';
|
|
14
|
+
import { makeNoopLanguageServices, type NoopLanguageServicesOverrides } from './make-noop-language-services.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* One language to register on a {@link StubServiceRegistry}. Only
|
|
18
|
+
* {@link languageId} and {@link fileExtensions} are required — they are what
|
|
19
|
+
* Langium's routing ladder actually reads.
|
|
20
|
+
*/
|
|
21
|
+
export interface StubLanguageDescriptor {
|
|
22
|
+
/** The language's id, as `LanguageMetaData.languageId`. */
|
|
23
|
+
readonly languageId: string;
|
|
24
|
+
/** Extensions routed to this language, leading dot included (`'.fake'`). */
|
|
25
|
+
readonly fileExtensions: readonly string[];
|
|
26
|
+
/** Whole file names routed to this language (Langium's `fileNameMap` rung). */
|
|
27
|
+
readonly fileNames?: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* AST `$type`s this language's grammar produces. Synthesised into a minimal
|
|
30
|
+
* `Grammar` — one entry-less parser rule per type — which is exactly what
|
|
31
|
+
* `collectProducibleTypes` reads, so type→language routing
|
|
32
|
+
* (`buildLanguageTypeIndex`, `DataServer.resolveReferenceLanguage`) resolves
|
|
33
|
+
* against this stub the same way it does against generated grammars.
|
|
34
|
+
*
|
|
35
|
+
* Entry-less on purpose: `reachableParserRules` falls back to every parser
|
|
36
|
+
* rule when a grammar declares no entry rule, so each listed type is
|
|
37
|
+
* produced. A test that needs the reachability semantics itself (a rule
|
|
38
|
+
* present but unreachable) should build a real grammar rather than list it
|
|
39
|
+
* here.
|
|
40
|
+
*/
|
|
41
|
+
readonly producedTypes?: readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* Per-language service slots the code under test reads (`references`,
|
|
44
|
+
* `serializer`, `ast`, …). Forwarded to {@link makeNoopLanguageServices},
|
|
45
|
+
* which supplies no-op defaults for the `shared` sub-tree only — an unlisted
|
|
46
|
+
* per-language slot stays absent and reads `undefined`.
|
|
47
|
+
*/
|
|
48
|
+
readonly services?: NoopLanguageServicesOverrides;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Optional configuration for {@link makeStubServiceRegistry}. */
|
|
52
|
+
export interface MakeStubServiceRegistryOptions {
|
|
53
|
+
/**
|
|
54
|
+
* Documents to declare open with a client-supplied `languageId`, as
|
|
55
|
+
* `{ [uri]: languageId }`. Drives the FIRST rung of Langium's lookup ladder
|
|
56
|
+
* (languageId, then file name, then extension) by standing in for the
|
|
57
|
+
* `workspace.TextDocuments` provider the registry consults.
|
|
58
|
+
*/
|
|
59
|
+
readonly openLanguageIds?: Readonly<Record<string, string>>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Test-facing view of a stub registry: the real
|
|
64
|
+
* {@link ExtendedServiceRegistry} surface plus seeding/introspection helpers.
|
|
65
|
+
*/
|
|
66
|
+
export interface StubServiceRegistry extends ExtendedServiceRegistry<ServerLanguageServices> {
|
|
67
|
+
/**
|
|
68
|
+
* Narrows Langium's `readonly LangiumCoreServices[]` to the framework's
|
|
69
|
+
* per-language type, so call sites reading a framework slot off a
|
|
70
|
+
* registered language (`references`, `serializer`, …) stay cast-free.
|
|
71
|
+
*/
|
|
72
|
+
readonly all: readonly ServerLanguageServices[];
|
|
73
|
+
/** Registered stub language services by id, in registration order. */
|
|
74
|
+
readonly languagesById: ReadonlyMap<string, ServerLanguageServices>;
|
|
75
|
+
/**
|
|
76
|
+
* Declare `uri` open under `languageId`, so `getServices(uri)` resolves by
|
|
77
|
+
* the declared id rather than the extension. Pass an unregistered id to
|
|
78
|
+
* exercise the fall-through to file name / extension.
|
|
79
|
+
*/
|
|
80
|
+
seedOpen(uri: string, languageId: string): void;
|
|
81
|
+
/** Undo a {@link seedOpen} — the document is no longer open. */
|
|
82
|
+
seedClosed(uri: string): void;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Minimal `Grammar` carrying one parser rule per produced `$type`. Shaped for
|
|
87
|
+
* `collectProducibleTypes`, which reads `rules[].name` / `fragment` /
|
|
88
|
+
* `dataType` / `returnType` / `inferredType` and walks each rule's contents —
|
|
89
|
+
* an empty `Group` is a well-formed, action-free rule definition.
|
|
90
|
+
*/
|
|
91
|
+
function makeStubGrammar(producedTypes: readonly string[]): Grammar {
|
|
92
|
+
return {
|
|
93
|
+
$type: 'Grammar',
|
|
94
|
+
rules: producedTypes.map(name => ({ $type: 'ParserRule', name, definition: { $type: 'Group', elements: [] } }))
|
|
95
|
+
} as unknown as Grammar;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* A `TextDocumentProvider` over a plain uri→languageId map. Only `languageId`
|
|
100
|
+
* is populated: it is the sole field `DefaultServiceRegistry.getServices` reads
|
|
101
|
+
* off the returned document, so a fuller `TextDocument` shell would state a
|
|
102
|
+
* fidelity the stub does not have.
|
|
103
|
+
*/
|
|
104
|
+
function makeLanguageIdProvider(openLanguageIds: Map<string, string>): { get(uri: string | URI): TextDocument | undefined } {
|
|
105
|
+
return {
|
|
106
|
+
get(uri) {
|
|
107
|
+
const languageId = openLanguageIds.get(uri.toString());
|
|
108
|
+
return languageId === undefined ? undefined : ({ languageId } as TextDocument);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* The framework's own {@link ExtendedServiceRegistry}, carrying stub languages
|
|
115
|
+
* and the seeding hooks {@link StubServiceRegistry} adds.
|
|
116
|
+
*
|
|
117
|
+
* Private per the test-support convention for doubles that must subclass a real
|
|
118
|
+
* production class (see `makeStubModelService`): the class is an implementation
|
|
119
|
+
* detail, {@link makeStubServiceRegistry} is the entry point.
|
|
120
|
+
*/
|
|
121
|
+
class StubServiceRegistryImpl extends ExtendedServiceRegistry<ServerLanguageServices> implements StubServiceRegistry {
|
|
122
|
+
readonly languagesById = new Map<string, ServerLanguageServices>();
|
|
123
|
+
|
|
124
|
+
override get all(): readonly ServerLanguageServices[] {
|
|
125
|
+
return super.all as readonly ServerLanguageServices[];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
constructor(protected readonly openLanguageIds: Map<string, string>) {
|
|
129
|
+
// Langium reads exactly one thing off this argument — `workspace.TextDocuments`
|
|
130
|
+
// — and only to resolve an open document's declared languageId. Passing a
|
|
131
|
+
// provider-only shell keeps the stub free of a full shared-services tree.
|
|
132
|
+
super({ workspace: { TextDocuments: makeLanguageIdProvider(openLanguageIds) } } as unknown as LangiumSharedCoreServices);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
override register(language: ServerLanguageServices): void {
|
|
136
|
+
super.register(language);
|
|
137
|
+
this.languagesById.set(language.LanguageMetaData.languageId, language);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
seedOpen(uri: string, languageId: string): void {
|
|
141
|
+
this.openLanguageIds.set(uri, languageId);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
seedClosed(uri: string): void {
|
|
145
|
+
this.openLanguageIds.delete(uri);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Build a {@link StubServiceRegistry} over the given stub languages.
|
|
151
|
+
*
|
|
152
|
+
* **The registry is REAL.** This double stubs the *languages*, not the
|
|
153
|
+
* registry: the returned object is the framework's own
|
|
154
|
+
* {@link ExtendedServiceRegistry}, so `getServices` walks Langium's actual
|
|
155
|
+
* lookup ladder (declared languageId → file name → extension), throws
|
|
156
|
+
* Langium's actual messages on a miss, and picks up `hasServices`,
|
|
157
|
+
* `getServicesById` and `getServicesByExtension` for free. Hand-rolled
|
|
158
|
+
* registry objects re-implement that ladder, and a re-implementation is
|
|
159
|
+
* exactly the fixture-vs-reality gap that lets a multi-grammar defect pass
|
|
160
|
+
* a green test.
|
|
161
|
+
*
|
|
162
|
+
* Pass the same descriptors to `makeTestServices`' `languages` option to
|
|
163
|
+
* get the registry bound on a full shared-services tree.
|
|
164
|
+
*/
|
|
165
|
+
export function makeStubServiceRegistry(
|
|
166
|
+
languages: readonly StubLanguageDescriptor[],
|
|
167
|
+
options: MakeStubServiceRegistryOptions = {}
|
|
168
|
+
): StubServiceRegistry {
|
|
169
|
+
const registry = new StubServiceRegistryImpl(new Map(Object.entries(options.openLanguageIds ?? {})));
|
|
170
|
+
for (const descriptor of languages) {
|
|
171
|
+
registry.register(
|
|
172
|
+
makeNoopLanguageServices({
|
|
173
|
+
// A real language always HAS the `references` group, so code
|
|
174
|
+
// reading `language.references.X` off a routed language is right to
|
|
175
|
+
// do so without a second optional chain. Seeding it empty keeps
|
|
176
|
+
// that true for a descriptor that names no reference service; the
|
|
177
|
+
// individual slots stay absent, so an unstubbed one still reads
|
|
178
|
+
// `undefined` rather than silently answering. A descriptor
|
|
179
|
+
// supplying `references` replaces this wholesale.
|
|
180
|
+
references: {},
|
|
181
|
+
...descriptor.services,
|
|
182
|
+
Grammar: makeStubGrammar(descriptor.producedTypes ?? []),
|
|
183
|
+
LanguageMetaData: {
|
|
184
|
+
languageId: descriptor.languageId,
|
|
185
|
+
fileExtensions: [...descriptor.fileExtensions],
|
|
186
|
+
...(descriptor.fileNames ? { fileNames: [...descriptor.fileNames] } : {})
|
|
187
|
+
}
|
|
188
|
+
})
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
return registry;
|
|
192
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import type { URI } from '@hydranium/langium';
|
|
11
|
+
import type { WritableFileSystemProvider } from '../documents/ast-document-manager.js';
|
|
12
|
+
import type { StubSelfSaveRegistry } from './stub-self-save-registry.js';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Stub for {@link WritableFileSystemProvider}. Records `writeFile` calls so
|
|
16
|
+
* tests can assert on the save path; reads return empty strings / empty
|
|
17
|
+
* directory listings (the framework's read paths don't run against this
|
|
18
|
+
* stub in the tests exercised today).
|
|
19
|
+
*
|
|
20
|
+
* When constructed with a {@link StubSelfSaveRegistry}, `writeFile` notifies
|
|
21
|
+
* the registry with the current wall-clock as the mtime — standing in for
|
|
22
|
+
* `DefaultFileSystemProvider.writeFile`, which registers the written file's
|
|
23
|
+
* real mtime so the watcher echo for the server's own write is suppressed.
|
|
24
|
+
*
|
|
25
|
+
* # Stub-vs-real surface
|
|
26
|
+
*
|
|
27
|
+
* Picks only the framework-relevant methods from {@link WritableFileSystemProvider}
|
|
28
|
+
* (`readFile`, `readDirectory`, `writeFile`); the compiler enforces those
|
|
29
|
+
* signatures stay aligned with the real interface. Langium's wider
|
|
30
|
+
* `FileSystemProvider` surface (`stat`, `statSync`, `exists`, `existsSync`,
|
|
31
|
+
* etc.) is deliberately not picked — tests that need it should construct
|
|
32
|
+
* the real `DefaultFileSystemProvider` instead. Binding the stub at
|
|
33
|
+
* `services.workspace.FileSystemProvider` therefore needs a narrowing cast at
|
|
34
|
+
* the binding site; casting the object literal itself would hide drift on the
|
|
35
|
+
* picked methods too.
|
|
36
|
+
*/
|
|
37
|
+
export interface StubWritableFileSystem extends Pick<WritableFileSystemProvider, 'readFile' | 'readDirectory' | 'writeFile'> {
|
|
38
|
+
readonly writes: ReadonlyArray<{ uri: string; content: string }>;
|
|
39
|
+
reset(): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function makeStubWritableFileSystem(selfSaveRegistry?: StubSelfSaveRegistry): StubWritableFileSystem {
|
|
43
|
+
const writes: { uri: string; content: string }[] = [];
|
|
44
|
+
return {
|
|
45
|
+
get writes() {
|
|
46
|
+
return writes;
|
|
47
|
+
},
|
|
48
|
+
readFile: async () => '',
|
|
49
|
+
readDirectory: async () => [],
|
|
50
|
+
async writeFile(uri: URI, content: string) {
|
|
51
|
+
writes.push({ uri: uri.toString(), content });
|
|
52
|
+
selfSaveRegistry?.register(uri.fsPath, Date.now());
|
|
53
|
+
},
|
|
54
|
+
reset() {
|
|
55
|
+
writes.length = 0;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
/**
|
|
11
|
+
* Phrases `vscode-jsonrpc` uses when a call loses its connection. Matched on the
|
|
12
|
+
* message because the condition surfaces in two different shapes:
|
|
13
|
+
*
|
|
14
|
+
* - a **throw** from `throwIfClosedOrDisposed` (`Connection is disposed.` /
|
|
15
|
+
* `Connection is closed.`), a `ConnectionError` raised synchronously by
|
|
16
|
+
* `sendRequest` / `sendNotification` and by `RemoteConsole.send`;
|
|
17
|
+
* - a **rejection** of an already-issued request (`Pending response rejected
|
|
18
|
+
* since connection got disposed`), a `ResponseError` produced when the
|
|
19
|
+
* pending-response map is drained on teardown.
|
|
20
|
+
*
|
|
21
|
+
* Both are typed, but they are different error classes carrying codes from
|
|
22
|
+
* different enums, so no single code check covers both. Kept
|
|
23
|
+
* lowercase-normalised and anchored on `connection` so an unrelated "disposed"
|
|
24
|
+
* message cannot match.
|
|
25
|
+
*/
|
|
26
|
+
const CONNECTION_GONE_PATTERNS = [/connection is disposed/, /connection is closed/, /connection got disposed/, /connection got closed/];
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Whether `err` means "the peer is gone", as opposed to a genuine failure of
|
|
30
|
+
* the operation.
|
|
31
|
+
*
|
|
32
|
+
* The distinction is a **log-severity** one, and it matters because the two are
|
|
33
|
+
* indistinguishable at the call site otherwise. Pushing an edit to a language
|
|
34
|
+
* client that has already disconnected is a no-op, not a fault — it happens on
|
|
35
|
+
* every ordinary shutdown, and reporting it at `error` turns routine teardown
|
|
36
|
+
* into something that looks like it needs investigation. A real `applyEdit`
|
|
37
|
+
* failure (the client refused, the request malformed) still deserves `error`.
|
|
38
|
+
*
|
|
39
|
+
* Callers that only need to *survive* a dead connection rather than classify it
|
|
40
|
+
* should just catch — see `LspLogger.emit`, whose fallback path does exactly
|
|
41
|
+
* that, since a logger has nowhere to report a logging failure anyway.
|
|
42
|
+
*/
|
|
43
|
+
export function isConnectionGoneError(err: unknown): boolean {
|
|
44
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
45
|
+
const normalized = message.toLowerCase();
|
|
46
|
+
return CONNECTION_GONE_PATTERNS.some(pattern => pattern.test(normalized));
|
|
47
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
// The single home for Node-global access in neutral (`.`-entry) code. Neutral
|
|
11
|
+
// code never touches `process` / `Buffer` directly (enforced by the eslint
|
|
12
|
+
// `no-restricted-globals` ban, whose only neutral exemption is this module); it
|
|
13
|
+
// goes through these guarded accessors so it degrades cleanly in a browser.
|
|
14
|
+
//
|
|
15
|
+
// Capability-detected, NOT environment-detected: bundlers inject a partial
|
|
16
|
+
// `process` shim into browser builds (Theia's browser-app has `process.env` but
|
|
17
|
+
// no `process.memoryUsage` / `fs`), so `typeof process` alone is not a reliable
|
|
18
|
+
// "am I in Node" check. Each accessor only claims the specific API it tests.
|
|
19
|
+
|
|
20
|
+
/** `process.env` when a Node `process` exposes it, else `undefined`. */
|
|
21
|
+
export function processEnv(): NodeJS.ProcessEnv | undefined {
|
|
22
|
+
return typeof process !== 'undefined' && process.env ? process.env : undefined;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** `process.pid` when available, else `undefined` (browser). */
|
|
26
|
+
export function processPid(): number | undefined {
|
|
27
|
+
return typeof process !== 'undefined' ? process.pid : undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Whether the host filesystem treats paths case-insensitively — `true` on
|
|
32
|
+
* Windows and macOS, `false` on Linux and in a browser.
|
|
33
|
+
*
|
|
34
|
+
* Capability cannot be detected without touching the filesystem, so this reads
|
|
35
|
+
* `process.platform` and answers `false` when there is none. That default is
|
|
36
|
+
* the safe one: folding case where the filesystem does NOT would make two
|
|
37
|
+
* genuinely distinct files collide, which is a correctness bug, whereas failing
|
|
38
|
+
* to fold merely misses an optimisation.
|
|
39
|
+
*/
|
|
40
|
+
export function isCaseInsensitiveFileSystem(): boolean {
|
|
41
|
+
const platform = typeof process !== 'undefined' ? process.platform : undefined;
|
|
42
|
+
return platform === 'win32' || platform === 'darwin';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Node `process` lifecycle / error / signal events accepted by {@link onProcessEvent}. */
|
|
46
|
+
export type ProcessEvent =
|
|
47
|
+
'exit' | 'beforeExit' | 'uncaughtException' | 'unhandledRejection' | 'rejectionHandled' | 'warning' | 'SIGINT' | 'SIGTERM' | 'SIGHUP';
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Register a process lifecycle handler (`'exit'`, `'unhandledRejection'`, …) if
|
|
51
|
+
* a Node `process` with `on` is present; a no-op in a browser worker (no
|
|
52
|
+
* `process`, no such events).
|
|
53
|
+
*/
|
|
54
|
+
export function onProcessEvent(event: ProcessEvent, handler: (...args: unknown[]) => void): void {
|
|
55
|
+
if (typeof process !== 'undefined' && typeof process.on === 'function') {
|
|
56
|
+
process.on(event, handler);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Write already-formatted text to the process's standard error, when a
|
|
62
|
+
* Node-like `process` exposes one. Returns `true` when the text was written and
|
|
63
|
+
* `false` in a browser, so a caller can fall back to `console.*`.
|
|
64
|
+
*
|
|
65
|
+
* Exists because **a server's stdout is a data channel, not a log channel**: an
|
|
66
|
+
* LSP or data-server head launched over stdio carries JSON-RPC frames on
|
|
67
|
+
* stdout, so a log line written there corrupts the protocol stream. `stderr` is
|
|
68
|
+
* the diagnostics channel by the same convention, and is the stream a parent
|
|
69
|
+
* process inherits when it spawns a head as a child.
|
|
70
|
+
*/
|
|
71
|
+
export function writeStderr(text: string): boolean {
|
|
72
|
+
if (typeof process === 'undefined' || !process.stderr || typeof process.stderr.write !== 'function') {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
process.stderr.write(text);
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* `process.memoryUsage()` guarded for non-Node hosts — `undefined` in a browser
|
|
81
|
+
* (where a partial `process` shim has no `memoryUsage`).
|
|
82
|
+
*/
|
|
83
|
+
export function currentMemoryUsage(): { heapUsed: number; heapTotal: number; rss: number } | undefined {
|
|
84
|
+
if (typeof process === 'undefined' || typeof process.memoryUsage !== 'function') {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return process.memoryUsage();
|
|
88
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
export * from './connection-liveness.js';
|
|
11
|
+
export * from './environment.js';
|
|
12
|
+
export * from './registry.js';
|
|
13
|
+
// Side-effect import: the `UriUtils` namespace augmentation
|
|
14
|
+
// (`UriUtils.toUri` / `.isAncestorOrEqual`) lives in the langium chokepoint.
|
|
15
|
+
// Pulling it in here keeps it loaded for any consumer importing from
|
|
16
|
+
// `@hydranium/core/util`, and the chokepoint also loads it whenever any
|
|
17
|
+
// `@hydranium/langium` symbol is imported.
|
|
18
|
+
import '@hydranium/langium';
|