@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 @@
|
|
|
1
|
+
{"version":3,"file":"project-change-event.d.ts","sourceRoot":"","sources":["../../../src/langium/project/project-change-event.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IACnE,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAEtF;;;;;;;;;OASG;IACH,QAAQ,CAAC,iBAAiB,EAAE,SAAS,GAAG,EAAE,CAAC;CAC7C;AAED,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=project-change-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-change-event.js","sourceRoot":"","sources":["../../../src/langium/project/project-change-event.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
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 { Project } from '@hydranium/protocol';
|
|
10
|
+
import type { AstNode, URI } from '@hydranium/langium';
|
|
11
|
+
import type { Disposable } from 'vscode-languageserver';
|
|
12
|
+
import type { WorkspaceFolder } from 'vscode-languageserver-types';
|
|
13
|
+
import type { ProjectChangeListener } from './project-change-event.js';
|
|
14
|
+
/**
|
|
15
|
+
* Manages the **project tier** sitting between the LSP `WorkspaceFolder`
|
|
16
|
+
* (protocol-owned: URI + display name only) and `LangiumDocument`
|
|
17
|
+
* (Langium-owned: per-file parse + index + state). Owns project discovery,
|
|
18
|
+
* registry maintenance, and the cascade signal for documents whose
|
|
19
|
+
* reachable scope changed when a project changed.
|
|
20
|
+
*
|
|
21
|
+
* Langium does not provide a project tier and explicitly does not intend
|
|
22
|
+
* to add one — see [Discussion #1375 — *Multiple Languages from different
|
|
23
|
+
* Projects*](https://github.com/eclipse-langium/langium/discussions/1375).
|
|
24
|
+
* `@hydranium/core` provides this tier so consumers don't have to
|
|
25
|
+
* reinvent it.
|
|
26
|
+
*
|
|
27
|
+
* ## Lifecycle
|
|
28
|
+
*
|
|
29
|
+
* 1. `HydraniumWorkspaceManager.performStartup` awaits {@link discoverProjects}
|
|
30
|
+
* as **phase 0**, before Langium's file-discovery and document-loading
|
|
31
|
+
* phases. By the time any non-descriptor document hits `Parsed`, the
|
|
32
|
+
* registry is fully populated and {@link getProject} returns a
|
|
33
|
+
* definitive answer.
|
|
34
|
+
* 2. {@link ready} resolves at the end of phase 0. Code that depends on
|
|
35
|
+
* project membership during startup (AST extensions running at
|
|
36
|
+
* `IndexedContent`, integrity rules, scope providers) awaits this.
|
|
37
|
+
* 3. After startup, the abstract `AbstractProjectManager` base auto-
|
|
38
|
+
* subscribes to `DocumentBuilder.onUpdate` to track incremental
|
|
39
|
+
* changes to descriptor files; each relevant update fires
|
|
40
|
+
* {@link onProjectsChanged} with the registry diff + affected
|
|
41
|
+
* documents, and `HydraniumWorkspaceManager` re-runs
|
|
42
|
+
* `DocumentBuilder.resetToState` on the affected URIs to cascade
|
|
43
|
+
* the rebuild.
|
|
44
|
+
*
|
|
45
|
+
* ## Implementations
|
|
46
|
+
*
|
|
47
|
+
* - **`SingleProjectManager`** — the framework default. One synthetic
|
|
48
|
+
* project owns every document, so visibility queries answer
|
|
49
|
+
* "everything sees everything" and consumers without a project tier
|
|
50
|
+
* pay zero cost.
|
|
51
|
+
* - **`AbstractProjectManager`** — abstract base for project-aware
|
|
52
|
+
* consumers, carrying the registry, the `DocumentBuilder.onUpdate`
|
|
53
|
+
* subscription, the event channel, and the cascade computation.
|
|
54
|
+
*/
|
|
55
|
+
export interface ProjectManager<TProject extends Project = Project> {
|
|
56
|
+
/**
|
|
57
|
+
* Phase-0 discovery. Called once during workspace startup, before any
|
|
58
|
+
* non-descriptor documents are loaded. Implementations walk the given
|
|
59
|
+
* workspace folders for descriptor files (whatever the consumer defines
|
|
60
|
+
* as such via {@link isProjectDescriptor}), parse them, and populate the
|
|
61
|
+
* registry. After this method resolves, {@link ready} resolves.
|
|
62
|
+
*
|
|
63
|
+
* Implementations may emit an initial {@link onProjectsChanged} with
|
|
64
|
+
* `added` populated. The empty-registry case (no descriptors found) is
|
|
65
|
+
* valid and emits nothing.
|
|
66
|
+
*/
|
|
67
|
+
discoverProjects(folders: readonly WorkspaceFolder[]): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Resolves at the end of {@link discoverProjects}.
|
|
70
|
+
*
|
|
71
|
+
* `SingleProjectManager` resolves this synchronously at construction
|
|
72
|
+
* time — consumers can await it safely without triggering a hang when
|
|
73
|
+
* no project tier is wired.
|
|
74
|
+
*/
|
|
75
|
+
readonly ready: Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Subscribe to project add / update / remove events. Fires whenever
|
|
78
|
+
* the registry changes — both during incremental rebuilds (descriptor
|
|
79
|
+
* file edited / deleted) and as a single event at the end of
|
|
80
|
+
* {@link discoverProjects} when projects were found.
|
|
81
|
+
*
|
|
82
|
+
* Returns a `Disposable` that unregisters the listener.
|
|
83
|
+
*/
|
|
84
|
+
onProjectsChanged(listener: ProjectChangeListener<TProject>): Disposable;
|
|
85
|
+
/**
|
|
86
|
+
* The {@link Project} owning the given document URI, or `undefined` if
|
|
87
|
+
* the URI does not belong to any project. Membership is determined by
|
|
88
|
+
* the concrete implementation.
|
|
89
|
+
*
|
|
90
|
+
* `SingleProjectManager` always returns its synthetic workspace project —
|
|
91
|
+
* never `undefined` — so consumers can rely on a non-null answer when
|
|
92
|
+
* no project tier is wired (matches Langium's flat-scope default).
|
|
93
|
+
*/
|
|
94
|
+
getProject(uri: URI | string): TProject | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* The {@link Project} owning the document `node` belongs to, or `undefined`
|
|
97
|
+
* (including when `node` is not attached to a document). Convenience over
|
|
98
|
+
* {@link getProject} that centralizes the node→root-document→URI derivation
|
|
99
|
+
* that callers would otherwise hand-roll (and risk skipping URI
|
|
100
|
+
* normalization on). No `getProjectForDocument` sibling — `getProject(document.uri)`
|
|
101
|
+
* is already a bare access, so a wrapper would hide nothing.
|
|
102
|
+
*/
|
|
103
|
+
getProjectForNode(node: AstNode): TProject | undefined;
|
|
104
|
+
/** Look up a project by its {@link Project.id}. */
|
|
105
|
+
getProjectById(id: string): TProject | undefined;
|
|
106
|
+
/** Snapshot of all projects currently in the registry. */
|
|
107
|
+
getProjects(): readonly TProject[];
|
|
108
|
+
/**
|
|
109
|
+
* URIs of documents that belong to the given project. Returns an
|
|
110
|
+
* empty array if the project id is unknown.
|
|
111
|
+
*/
|
|
112
|
+
getProjectUris(projectId: string): readonly URI[];
|
|
113
|
+
/**
|
|
114
|
+
* Project ids visible from the given project: the project itself plus
|
|
115
|
+
* the transitive closure of declared dependencies according to the
|
|
116
|
+
* concrete implementation's visibility model. Returns an empty array
|
|
117
|
+
* if the project id is unknown.
|
|
118
|
+
*
|
|
119
|
+
* Default behaviour in `AbstractProjectManager` is the **transitive
|
|
120
|
+
* closure** of {@link Project.dependencies}, including the project
|
|
121
|
+
* itself. An adopter can override to use a different visibility model.
|
|
122
|
+
*
|
|
123
|
+
* `SingleProjectManager` returns `[id]` for its synthetic workspace
|
|
124
|
+
* project, which combined with "synthetic project owns every URI"
|
|
125
|
+
* yields "everything is visible to everything" — Langium's flat-
|
|
126
|
+
* scope behaviour preserved.
|
|
127
|
+
*/
|
|
128
|
+
getVisibleProjects(projectId: string): readonly string[];
|
|
129
|
+
/**
|
|
130
|
+
* Convenience predicate over {@link getVisibleProjects}: returns true
|
|
131
|
+
* iff `targetProjectId` is in the visibility set of `sourceProjectId`.
|
|
132
|
+
* Unknown source ids (empty visibility set) always return false.
|
|
133
|
+
*
|
|
134
|
+
* @param selfVisible when `sourceProjectId === targetProjectId`,
|
|
135
|
+
* controls whether the project is considered visible to itself.
|
|
136
|
+
* Reference-construction callers pass `true` (a project sees
|
|
137
|
+
* its own elements); strict cross-project walks pass `false`.
|
|
138
|
+
* Default: `false`.
|
|
139
|
+
*
|
|
140
|
+
* **The `false` default is deliberate, and stays that way while the only
|
|
141
|
+
* production caller passes `true`.** Flipping it to match that caller
|
|
142
|
+
* would make a configure-time default out of a single hardcoded
|
|
143
|
+
* argument — the same decision, written where the reader cannot see it.
|
|
144
|
+
* Per-call explicitness keeps the *why* at the call site instead. Revisit
|
|
145
|
+
* if a second non-test caller appears, or if an audit-strict caller
|
|
146
|
+
* genuinely wants `false`.
|
|
147
|
+
*/
|
|
148
|
+
isVisible(sourceProjectId: string, targetProjectId: string, selfVisible?: boolean): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Fast-path predicate: true when the workspace has at most one
|
|
151
|
+
* meaningful project boundary. Enables a fast-path in the framework's
|
|
152
|
+
* `HydraniumScopeProvider.getProjectScope` that returns the
|
|
153
|
+
* unfiltered global scope when project filtering would be a no-op.
|
|
154
|
+
*
|
|
155
|
+
* Default implementations:
|
|
156
|
+
* - `SingleProjectManager`: returns `true` unconditionally (its
|
|
157
|
+
* synthetic workspace project owns everything).
|
|
158
|
+
* - `AbstractProjectManager`: returns `getProjects().length <= 1`
|
|
159
|
+
* (conservative — once a second project is registered, returns
|
|
160
|
+
* false even if all documents are still owned by the original).
|
|
161
|
+
*
|
|
162
|
+
* Adopters with custom `ProjectManager` implementations override to
|
|
163
|
+
* match their workspace shape.
|
|
164
|
+
*/
|
|
165
|
+
isSingleProject(): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Predicate: is the given URI a project descriptor file?
|
|
168
|
+
*
|
|
169
|
+
* Determines which URIs participate in project discovery (during
|
|
170
|
+
* {@link discoverProjects}) and incremental tracking (via the
|
|
171
|
+
* auto-subscription to `DocumentBuilder.onUpdate` inside
|
|
172
|
+
* `AbstractProjectManager`).
|
|
173
|
+
*
|
|
174
|
+
* Default in `SingleProjectManager`: returns `false`. Single-project /
|
|
175
|
+
* project-less consumers get the default and never participate in
|
|
176
|
+
* descriptor tracking.
|
|
177
|
+
*/
|
|
178
|
+
isProjectDescriptor(uri: URI | string): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Whether the project owning `uri` uses unqualified references — i.e.
|
|
181
|
+
* its {@link Project.referenceName} equals the
|
|
182
|
+
* `UNQUALIFIED_PROJECT_REFERENCE` sentinel, or `uri` is not owned by
|
|
183
|
+
* any project. The predicate exists so callers that would otherwise
|
|
184
|
+
* compose a project prefix can skip the composition without reaching
|
|
185
|
+
* for the sentinel value themselves; an implementation that can answer
|
|
186
|
+
* without a full membership lookup overrides it.
|
|
187
|
+
*
|
|
188
|
+
* Default implementations:
|
|
189
|
+
* - `SingleProjectManager`: always `true` — its synthetic workspace
|
|
190
|
+
* project is constructed with the sentinel.
|
|
191
|
+
* - `AbstractProjectManager`: the owning project is absent, or its
|
|
192
|
+
* `referenceName` is the sentinel.
|
|
193
|
+
*/
|
|
194
|
+
isUnqualifiedProjectReference(uri: URI | string): boolean;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=project-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IAK/D;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;;;;;OAOG;IACH,iBAAiB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAMzE;;;;;;;;OAQG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEpD;;;;;;;OAOG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEvD,mDAAmD;IACnD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEjD,0DAA0D;IAC1D,WAAW,IAAI,SAAS,QAAQ,EAAE,CAAC;IAEnC;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;IAElD;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAEzD;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAM5F;;;;;;;;;;;;;;;OAeG;IACH,eAAe,IAAI,OAAO,CAAC;IAE3B;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;IAEhD;;;;;;;;;;;;;;OAcG;IACH,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=project-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-manager.js","sourceRoot":"","sources":["../../../src/langium/project/project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type Project, type Tracer } from '@hydranium/protocol';
|
|
10
|
+
import { type AstNode, type LangiumDocuments, type URI } from '@hydranium/langium';
|
|
11
|
+
import { Disposable } from 'vscode-languageserver';
|
|
12
|
+
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
13
|
+
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
14
|
+
import type { ProjectChangeListener } from './project-change-event.js';
|
|
15
|
+
import type { ProjectManager } from './project-manager.js';
|
|
16
|
+
/**
|
|
17
|
+
* Framework default {@link ProjectManager}. Exposes a single synthetic
|
|
18
|
+
* project ({@link SingleProjectManager.WORKSPACE_PROJECT_ID}) that owns
|
|
19
|
+
* every document in the workspace, so visibility queries answer
|
|
20
|
+
* **"everything is visible to everything"** — preserving Langium's
|
|
21
|
+
* default flat-scope behaviour.
|
|
22
|
+
*
|
|
23
|
+
* The class name describes the state literally: one project. Consumers
|
|
24
|
+
* without a project tier (tests / single-grammar adopters) bind
|
|
25
|
+
* this and pay zero cost. No descriptor tracking, no incremental work,
|
|
26
|
+
* no events ever fire from {@link onProjectsChanged}.
|
|
27
|
+
*
|
|
28
|
+
* For project-aware consumers, extend `AbstractProjectManager` instead.
|
|
29
|
+
*/
|
|
30
|
+
export declare class SingleProjectManager implements ProjectManager {
|
|
31
|
+
protected readonly services: ServerSharedServicesMinimal;
|
|
32
|
+
/**
|
|
33
|
+
* Identity of the synthetic project. Prefixed with `@` so it cannot
|
|
34
|
+
* collide with a descriptor-derived project id, which by convention
|
|
35
|
+
* never begins with `@`.
|
|
36
|
+
*/
|
|
37
|
+
static readonly WORKSPACE_PROJECT_ID = "@workspace";
|
|
38
|
+
protected readonly project: Project;
|
|
39
|
+
readonly ready: Promise<void>;
|
|
40
|
+
protected readonly langiumDocuments: LangiumDocuments;
|
|
41
|
+
protected readonly tracer: Tracer;
|
|
42
|
+
constructor(services: ServerSharedServicesMinimal, options?: LogNameOptions);
|
|
43
|
+
/** No-op: there are no descriptors to discover. */
|
|
44
|
+
discoverProjects(): Promise<void>;
|
|
45
|
+
/** Never fires — `SingleProjectManager` exposes a fixed registry. The returned disposable is a safe no-op. */
|
|
46
|
+
onProjectsChanged(_listener: ProjectChangeListener): Disposable;
|
|
47
|
+
isProjectDescriptor(_uri: URI | string): boolean;
|
|
48
|
+
/** Always `true` — single-project by definition. */
|
|
49
|
+
isSingleProject(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Always `true` — the synthetic workspace project is constructed with
|
|
52
|
+
* {@link UNQUALIFIED_PROJECT_REFERENCE}, so every URI it owns is by
|
|
53
|
+
* definition unqualified.
|
|
54
|
+
*/
|
|
55
|
+
isUnqualifiedProjectReference(_uri: URI | string): boolean;
|
|
56
|
+
/** Every URI belongs to the synthetic workspace project. */
|
|
57
|
+
getProject(_uri: URI | string): Project | undefined;
|
|
58
|
+
/** Every node belongs to the synthetic workspace project. */
|
|
59
|
+
getProjectForNode(_node: AstNode): Project | undefined;
|
|
60
|
+
getProjectById(id: string): Project | undefined;
|
|
61
|
+
getProjects(): readonly Project[];
|
|
62
|
+
/** All workspace URIs belong to the synthetic project; any other id yields `[]`. */
|
|
63
|
+
getProjectUris(projectId: string): readonly URI[];
|
|
64
|
+
/** Self-only visibility, combined with single-project ownership = "everything sees everything." */
|
|
65
|
+
getVisibleProjects(projectId: string): readonly string[];
|
|
66
|
+
/** Synthetic project sees itself iff `selfVisible`; cross-project queries always false. */
|
|
67
|
+
isVisible(sourceProjectId: string, targetProjectId: string, selfVisible?: boolean): boolean;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=single-project-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAkBrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B;IAjB3D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,gBAAgB;IAEpD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAGjC;IACF,QAAQ,CAAC,KAAK,gBAAqB;IAEnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,2BAA2B,EACxD,OAAO,GAAE,cAAmB;IAM/B,mDAAmD;IAC7C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC,8GAA8G;IAC9G,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,UAAU;IAI/D,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO;IAIhD,oDAAoD;IACpD,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACH,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO;IAI1D,4DAA4D;IAC5D,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS;IAInD,6DAA6D;IAC7D,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAItD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI/C,WAAW,IAAI,SAAS,OAAO,EAAE;IAIjC,oFAAoF;IACpF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE;IAOjD,mGAAmG;IACnG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAIxD,2FAA2F;IAC3F,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO;CAS3F"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { UNQUALIFIED_PROJECT_REFERENCE } from '@hydranium/protocol';
|
|
10
|
+
import { Disposable } from 'vscode-languageserver';
|
|
11
|
+
/**
|
|
12
|
+
* Framework default {@link ProjectManager}. Exposes a single synthetic
|
|
13
|
+
* project ({@link SingleProjectManager.WORKSPACE_PROJECT_ID}) that owns
|
|
14
|
+
* every document in the workspace, so visibility queries answer
|
|
15
|
+
* **"everything is visible to everything"** — preserving Langium's
|
|
16
|
+
* default flat-scope behaviour.
|
|
17
|
+
*
|
|
18
|
+
* The class name describes the state literally: one project. Consumers
|
|
19
|
+
* without a project tier (tests / single-grammar adopters) bind
|
|
20
|
+
* this and pay zero cost. No descriptor tracking, no incremental work,
|
|
21
|
+
* no events ever fire from {@link onProjectsChanged}.
|
|
22
|
+
*
|
|
23
|
+
* For project-aware consumers, extend `AbstractProjectManager` instead.
|
|
24
|
+
*/
|
|
25
|
+
export class SingleProjectManager {
|
|
26
|
+
services;
|
|
27
|
+
/**
|
|
28
|
+
* Identity of the synthetic project. Prefixed with `@` so it cannot
|
|
29
|
+
* collide with a descriptor-derived project id, which by convention
|
|
30
|
+
* never begins with `@`.
|
|
31
|
+
*/
|
|
32
|
+
static WORKSPACE_PROJECT_ID = '@workspace';
|
|
33
|
+
project = {
|
|
34
|
+
id: SingleProjectManager.WORKSPACE_PROJECT_ID,
|
|
35
|
+
referenceName: UNQUALIFIED_PROJECT_REFERENCE
|
|
36
|
+
};
|
|
37
|
+
ready = Promise.resolve();
|
|
38
|
+
langiumDocuments;
|
|
39
|
+
tracer;
|
|
40
|
+
constructor(services, options = {}) {
|
|
41
|
+
this.services = services;
|
|
42
|
+
this.langiumDocuments = services.workspace.LangiumDocuments;
|
|
43
|
+
this.tracer = services.Tracer.for(options.logName ?? this.constructor.name).trace('instantiated');
|
|
44
|
+
}
|
|
45
|
+
/** No-op: there are no descriptors to discover. */
|
|
46
|
+
async discoverProjects() {
|
|
47
|
+
// no-op
|
|
48
|
+
}
|
|
49
|
+
/** Never fires — `SingleProjectManager` exposes a fixed registry. The returned disposable is a safe no-op. */
|
|
50
|
+
onProjectsChanged(_listener) {
|
|
51
|
+
return Disposable.create(() => undefined);
|
|
52
|
+
}
|
|
53
|
+
isProjectDescriptor(_uri) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
/** Always `true` — single-project by definition. */
|
|
57
|
+
isSingleProject() {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Always `true` — the synthetic workspace project is constructed with
|
|
62
|
+
* {@link UNQUALIFIED_PROJECT_REFERENCE}, so every URI it owns is by
|
|
63
|
+
* definition unqualified.
|
|
64
|
+
*/
|
|
65
|
+
isUnqualifiedProjectReference(_uri) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
/** Every URI belongs to the synthetic workspace project. */
|
|
69
|
+
getProject(_uri) {
|
|
70
|
+
return this.project;
|
|
71
|
+
}
|
|
72
|
+
/** Every node belongs to the synthetic workspace project. */
|
|
73
|
+
getProjectForNode(_node) {
|
|
74
|
+
return this.project;
|
|
75
|
+
}
|
|
76
|
+
getProjectById(id) {
|
|
77
|
+
return id === SingleProjectManager.WORKSPACE_PROJECT_ID ? this.project : undefined;
|
|
78
|
+
}
|
|
79
|
+
getProjects() {
|
|
80
|
+
return [this.project];
|
|
81
|
+
}
|
|
82
|
+
/** All workspace URIs belong to the synthetic project; any other id yields `[]`. */
|
|
83
|
+
getProjectUris(projectId) {
|
|
84
|
+
if (projectId !== SingleProjectManager.WORKSPACE_PROJECT_ID) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
return Array.from(this.langiumDocuments.all, document => document.uri);
|
|
88
|
+
}
|
|
89
|
+
/** Self-only visibility, combined with single-project ownership = "everything sees everything." */
|
|
90
|
+
getVisibleProjects(projectId) {
|
|
91
|
+
return projectId === SingleProjectManager.WORKSPACE_PROJECT_ID ? [SingleProjectManager.WORKSPACE_PROJECT_ID] : [];
|
|
92
|
+
}
|
|
93
|
+
/** Synthetic project sees itself iff `selfVisible`; cross-project queries always false. */
|
|
94
|
+
isVisible(sourceProjectId, targetProjectId, selfVisible = false) {
|
|
95
|
+
if (sourceProjectId !== SingleProjectManager.WORKSPACE_PROJECT_ID) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (sourceProjectId === targetProjectId) {
|
|
99
|
+
return selfVisible;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=single-project-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-project-manager.js","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA6B,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAoB;IAkBR;IAjBtB;;;;OAIG;IACH,MAAM,CAAU,oBAAoB,GAAG,YAAY,CAAC;IAEjC,OAAO,GAAY;QACnC,EAAE,EAAE,oBAAoB,CAAC,oBAAoB;QAC7C,aAAa,EAAE,6BAA6B;KAC9C,CAAC;IACO,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAgB,CAAmB;IACnC,MAAM,CAAS;IAElC,YACsB,QAAqC,EACxD,UAA0B,EAAE;QADT,aAAQ,GAAR,QAAQ,CAA6B;QAGxD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrG,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,gBAAgB;QACnB,QAAQ;IACX,CAAC;IAED,8GAA8G;IAC9G,iBAAiB,CAAC,SAAgC;QAC/C,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,mBAAmB,CAAC,IAAkB;QACnC,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,oDAAoD;IACpD,eAAe;QACZ,OAAO,IAAI,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,6BAA6B,CAAC,IAAkB;QAC7C,OAAO,IAAI,CAAC;IACf,CAAC;IAED,4DAA4D;IAC5D,UAAU,CAAC,IAAkB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,6DAA6D;IAC7D,iBAAiB,CAAC,KAAc;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,EAAU;QACtB,OAAO,EAAE,KAAK,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,CAAC;IAED,WAAW;QACR,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,oFAAoF;IACpF,cAAc,CAAC,SAAiB;QAC7B,IAAI,SAAS,KAAK,oBAAoB,CAAC,oBAAoB,EAAE,CAAC;YAC3D,OAAO,EAAE,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;IAED,mGAAmG;IACnG,kBAAkB,CAAC,SAAiB;QACjC,OAAO,SAAS,KAAK,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrH,CAAC;IAED,2FAA2F;IAC3F,SAAS,CAAC,eAAuB,EAAE,eAAuB,EAAE,WAAW,GAAG,KAAK;QAC5E,IAAI,eAAe,KAAK,oBAAoB,CAAC,oBAAoB,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,IAAI,eAAe,KAAK,eAAe,EAAE,CAAC;YACvC,OAAO,WAAW,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC;IAChB,CAAC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
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, Debouncer, type Tracer } from '@hydranium/protocol';
|
|
10
|
+
import { type AstNode, DocumentState, type LangiumDocument, type LangiumDocuments } from '@hydranium/langium';
|
|
11
|
+
import { type HydraniumTextDocuments } from '../../documents/hydranium-text-documents.js';
|
|
12
|
+
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
13
|
+
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
14
|
+
/**
|
|
15
|
+
* Default priority of the CST-residency pass. Deliberately very high so it runs
|
|
16
|
+
* *last* among `Validated` build-phase passes (the registry iterates priority
|
|
17
|
+
* ascending): every other reaction to the build — an adopter's own derived-state
|
|
18
|
+
* pass included — settles while the CST is still guaranteed resident, before the
|
|
19
|
+
* residency policy arms the shed.
|
|
20
|
+
*/
|
|
21
|
+
export declare const CST_RESIDENCY_PASS_PRIORITY = 1000000;
|
|
22
|
+
/**
|
|
23
|
+
* CST residency strategy — a discriminated union so each policy carries its own
|
|
24
|
+
* parameters and illegal states are unrepresentable (`idleMs` exists only on the
|
|
25
|
+
* shedding arm), and a further policy slots in as a new arm without reshaping
|
|
26
|
+
* the options.
|
|
27
|
+
*
|
|
28
|
+
* - `{ kind: 'always-keep' }` (default): never shed — the service is a no-op.
|
|
29
|
+
* The v0 default so wiring the service in is behaviour-neutral, and the runtime
|
|
30
|
+
* "off" toggle.
|
|
31
|
+
* - `{ kind: 'shed-closed-when-idle', idleMs }`: shed a closed document's CST
|
|
32
|
+
* once it has been idle (not in any build) for `idleMs`, keeping the AST
|
|
33
|
+
* resident. Open documents are always kept. `idleMs: 0` sheds as soon as a
|
|
34
|
+
* document is closed (a pure close-triggered threshold of this strategy).
|
|
35
|
+
*/
|
|
36
|
+
export type CstResidencyStrategy = {
|
|
37
|
+
readonly kind: 'always-keep';
|
|
38
|
+
} | {
|
|
39
|
+
readonly kind: 'shed-closed-when-idle';
|
|
40
|
+
readonly idleMs: number;
|
|
41
|
+
};
|
|
42
|
+
/** Construction options for {@link CstResidencyService}. */
|
|
43
|
+
export interface CstResidencyOptions extends LogNameOptions {
|
|
44
|
+
/** Residency strategy. Default `{ kind: 'always-keep' }` (no-op). */
|
|
45
|
+
readonly strategy?: CstResidencyStrategy;
|
|
46
|
+
/** Pass priority. Default {@link CST_RESIDENCY_PASS_PRIORITY} (run last at `Validated`). */
|
|
47
|
+
readonly priority?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Optional bytes-per-node figure used to annotate shed traces with an
|
|
50
|
+
* approximate reclaim. **Default `0`** — the framework traces only the exact,
|
|
51
|
+
* grammar-agnostic node count, because per-node CST size depends entirely on
|
|
52
|
+
* the grammar (token sizes, node fan-out, retained string slices) and cannot
|
|
53
|
+
* be estimated framework-side. An adopter that has measured its own workspace
|
|
54
|
+
* may pass a representative value to enrich the trace; it is used for logging
|
|
55
|
+
* only, never for any decision.
|
|
56
|
+
*/
|
|
57
|
+
readonly estimatedBytesPerShedNode?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The build state a shed document must be reset to so the next build re-parses it
|
|
61
|
+
* and rebuilds its CST — and every `reference.$refNode` — before it is relinked or
|
|
62
|
+
* re-indexed (rehydration). It is `DocumentState.Changed` by necessity: the only
|
|
63
|
+
* state below `Parsed`, hence the only one that forces a re-parse rather than an
|
|
64
|
+
* in-place relink. Exposed as a named landmark of the residency feature (cf.
|
|
65
|
+
* `IntegrityService.SettledState`) so the document builder references the feature's
|
|
66
|
+
* declared recovery contract instead of a bare enum value.
|
|
67
|
+
*/
|
|
68
|
+
export declare const CST_REHYDRATION_RESET_STATE: DocumentState;
|
|
69
|
+
/**
|
|
70
|
+
* Whether `document`'s CST has been shed by a residency policy: the AST root is
|
|
71
|
+
* resident but its `$cstNode` was nulled. The built-state and present-root guards
|
|
72
|
+
* exclude the `fromModel` INVALID placeholder and not-yet-parsed documents, which
|
|
73
|
+
* legitimately have no CST. The single definition of "shed", shared by
|
|
74
|
+
* {@link CstResidencyService} and the document builder's rehydrate-on-re-entry
|
|
75
|
+
* seam so the two cannot drift.
|
|
76
|
+
*/
|
|
77
|
+
export declare function isCstShed(document: LangiumDocument): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Residency policy that reclaims memory by shedding the concrete syntax tree
|
|
80
|
+
* (CST) of closed documents while keeping their AST resident. Each build refreshes
|
|
81
|
+
* the idle window of the documents in its batch; when a closed, sheddable
|
|
82
|
+
* document's window elapses, every AST node's `$cstNode` and every reference's
|
|
83
|
+
* `$refNode` are nulled, and the CST root, `Range`s and `Position`s become
|
|
84
|
+
* unreachable and are collected.
|
|
85
|
+
*
|
|
86
|
+
* **Terminology.** *Residency* is the state axis (is the CST in memory? —
|
|
87
|
+
* `resident` vs `shed`); *shed* is both the act and the policy vocabulary (drop
|
|
88
|
+
* the CST and every `$refNode`, the document itself survives with its AST,
|
|
89
|
+
* links, and identity intact — deliberately NOT "evict", which would suggest the
|
|
90
|
+
* whole document leaves); *rehydrate* is the restore (re-derive the CST from the
|
|
91
|
+
* retained source text and graft it back, identity-preserving — deliberately not
|
|
92
|
+
* "reload", which would suggest bytes coming back unchanged).
|
|
93
|
+
*
|
|
94
|
+
* **Re-entry is safe.** A shed document that later re-enters a build (because it
|
|
95
|
+
* is relinked as an affected dependent, re-validated, or edited) is re-parsed
|
|
96
|
+
* first by `HydraniumDocumentBuilder.resetToState`
|
|
97
|
+
* ("rehydrate-on-re-entry"), which rebuilds the CST and every `$refNode`. That
|
|
98
|
+
* matters because Langium derives the reference index — and thus
|
|
99
|
+
* `IndexManager.isAffected` and the `segment` used by rename / find-references —
|
|
100
|
+
* from `$refNode`; without rehydration a re-index would silently drop the
|
|
101
|
+
* document's cross-references and its dependents would stop being relinked.
|
|
102
|
+
*
|
|
103
|
+
* Constructed with `(services, options)` and self-registers a `Validated`
|
|
104
|
+
* `BuildPhasePass`, which
|
|
105
|
+
* is why the framework constructs it eagerly — the pass must be registered before
|
|
106
|
+
* the first build. Shedding itself is opt-in: the bound default strategy is
|
|
107
|
+
* `always-keep`, so the pass runs and sheds nothing until an adopter rebinds the
|
|
108
|
+
* slot with a shedding strategy.
|
|
109
|
+
*
|
|
110
|
+
* **Read-side navigation under a shedding strategy.** Read-only LSP requests do
|
|
111
|
+
* not run a build, so they do not trigger the build-side rehydrate. Features that
|
|
112
|
+
* only read the document under the cursor (completion, symbols, formatting, …)
|
|
113
|
+
* see an open document, never a shed one, and index-based cross-file features
|
|
114
|
+
* (find-references, rename, workspace symbols) read the reference index — both
|
|
115
|
+
* unaffected. What does reach a shed document is anything reading a cross-file
|
|
116
|
+
* *target*: target-range navigation (go-to-definition / declaration /
|
|
117
|
+
* implementation / type & call hierarchy) reads the target's live CST for its
|
|
118
|
+
* range, and hover/completion documentation reads the target's preceding comment
|
|
119
|
+
* out of the same CST. Into a currently-closed (shed) file the CST is restored on
|
|
120
|
+
* demand by the identity-preserving graft of {@link rehydrateNode} /
|
|
121
|
+
* {@link rehydrate}, driven transparently from the framework
|
|
122
|
+
* `NameProvider.getNameNode` chokepoint, the comment provider, and
|
|
123
|
+
* `AbstractHydraniumLangiumDocuments.getOrCreateDocument`.
|
|
124
|
+
*/
|
|
125
|
+
export declare class CstResidencyService {
|
|
126
|
+
protected readonly services: ServerSharedServicesMinimal;
|
|
127
|
+
protected readonly strategy: CstResidencyStrategy;
|
|
128
|
+
/** Bytes-per-node for the optional reclaim estimate in traces; `0` disables it. */
|
|
129
|
+
protected readonly estimatedBytesPerShedNode: number;
|
|
130
|
+
protected readonly clock: Clock;
|
|
131
|
+
protected readonly tracer: Tracer;
|
|
132
|
+
protected readonly textDocuments: HydraniumTextDocuments;
|
|
133
|
+
protected readonly langiumDocs: LangiumDocuments;
|
|
134
|
+
/**
|
|
135
|
+
* Per-document idle timers (`shed-closed-when-idle` only). Each is a
|
|
136
|
+
* {@link Debouncer}: re-`schedule()`d every time the document is used (rides
|
|
137
|
+
* in a build batch), it fires once the document has been idle for `idleMs` and
|
|
138
|
+
* sheds it. Lazily created, keyed by URI string, reused across shed/rehydrate
|
|
139
|
+
* cycles, and all cancelled by {@link dispose}.
|
|
140
|
+
*/
|
|
141
|
+
protected readonly idleTimers: Map<string, Debouncer>;
|
|
142
|
+
protected shedTotal: number;
|
|
143
|
+
constructor(services: ServerSharedServicesMinimal, options?: CstResidencyOptions);
|
|
144
|
+
/**
|
|
145
|
+
* Restore `document`'s shed CST on demand — the ergonomic entry point over
|
|
146
|
+
* {@link rehydrateCst} (resolves the document factory itself). No-op `true`
|
|
147
|
+
* when the CST is resident, so read-side seams call it unconditionally.
|
|
148
|
+
*
|
|
149
|
+
* **Residency note (deliberate).** Rehydration does NOT count as a "use" for
|
|
150
|
+
* the `shed-closed-when-idle` idle timer (which is refreshed only by build
|
|
151
|
+
* inclusion). Consequence: a browse-heavy but never-rebuilt closed document
|
|
152
|
+
* keeps re-grafting on each navigation rather than staying resident. This is
|
|
153
|
+
* a chosen trade-off — build-recency covers the churn motivation, and a
|
|
154
|
+
* read-side residency hook (refresh the timer / count re-grafts) is deferred
|
|
155
|
+
* until navigation latency on shed files is actually observed to hurt. This
|
|
156
|
+
* method is where that hook goes.
|
|
157
|
+
*/
|
|
158
|
+
rehydrate(document: LangiumDocument): boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Node-level convenience over {@link rehydrate}: a resident node (its
|
|
161
|
+
* `$cstNode` is set — true for every node of a non-shed document) returns
|
|
162
|
+
* `true` without even resolving the document, so hot read paths
|
|
163
|
+
* (`getNameNode`, comment lookup) call this unconditionally.
|
|
164
|
+
*/
|
|
165
|
+
rehydrateNode(node: AstNode): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* After each build, refresh the idle timer of every document in the batch: an
|
|
168
|
+
* open document keeps its CST (its timer is cancelled — formatting, hover and
|
|
169
|
+
* incremental edits need the CST), while a closed, sheddable document (re)arms
|
|
170
|
+
* its idle timer. Being relinked as a hot dependent therefore keeps a document
|
|
171
|
+
* resident, and a genuinely idle one sheds once `idleMs` elapses. No-op under
|
|
172
|
+
* `always-keep`. "Use" is build inclusion only; read-side navigation
|
|
173
|
+
* ({@link rehydrate}) deliberately does not count — see its note.
|
|
174
|
+
*/
|
|
175
|
+
protected onBuild(documents: readonly LangiumDocument[]): void;
|
|
176
|
+
/**
|
|
177
|
+
* The lazily-created idle {@link Debouncer} for `uri`. `idleMs` is read once at
|
|
178
|
+
* creation from the (necessarily `shed-closed-when-idle`) strategy; the fire
|
|
179
|
+
* handler re-resolves the live document so a shed/rehydrate cycle that replaced
|
|
180
|
+
* the document object still sheds the current one.
|
|
181
|
+
*/
|
|
182
|
+
protected idleTimerFor(uri: string): Debouncer;
|
|
183
|
+
/**
|
|
184
|
+
* Idle-timer fire: shed the document's CST if it is still closed and resident.
|
|
185
|
+
* Re-checks open-state (a reopen within the window cancels the timer, but guard
|
|
186
|
+
* anyway) and resolves the current document by URI (it may have been deleted,
|
|
187
|
+
* or its object replaced by a rebuild).
|
|
188
|
+
*/
|
|
189
|
+
protected onIdle(uri: string): void;
|
|
190
|
+
/** Cancel and drop every idle timer — for clean shutdown and deterministic tests. */
|
|
191
|
+
dispose(): void;
|
|
192
|
+
/**
|
|
193
|
+
* Whether a closed document may have its CST shed. Only documents whose text
|
|
194
|
+
* a re-parse on re-entry can recover are sheddable; the default admits
|
|
195
|
+
* `file`-scheme documents (re-read from disk) and excludes synthetic / in-memory
|
|
196
|
+
* documents — e.g. built-in definitions registered under a custom URI scheme —
|
|
197
|
+
* whose text lives only in the CST and would be lost irrecoverably (a later
|
|
198
|
+
* relink would `readFile` a non-existent path). Adopters override to refine.
|
|
199
|
+
*/
|
|
200
|
+
protected isSheddable(document: LangiumDocument): boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Shed one document's CST: null every AST node's `$cstNode` and every
|
|
203
|
+
* reference's `$refNode`. Returns the number of `$cstNode`s cleared (0 if the
|
|
204
|
+
* document is unparsed or already shed).
|
|
205
|
+
*/
|
|
206
|
+
protected shed(document: LangiumDocument): number;
|
|
207
|
+
/**
|
|
208
|
+
* ` (~<bytes> reclaimed est.)` when {@link estimatedBytesPerShedNode} is set,
|
|
209
|
+
* else the empty string — so the exact node count is always logged and the
|
|
210
|
+
* (grammar-specific, opt-in) byte estimate is appended only when configured.
|
|
211
|
+
*/
|
|
212
|
+
protected estimateSuffix(nodeCount: number): string;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=cst-residency-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cst-residency-service.d.ts","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAa,KAAK,KAAK,EAAE,SAAS,EAAU,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACJ,KAAK,OAAO,EAEZ,aAAa,EACb,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,UAAY,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1I,4DAA4D;AAC5D,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACxD,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,aAAqC,CAAC;AAEhF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAM5D;AA2FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,mBAAmB;IAmB1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B;IAlB3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IAClD,mFAAmF;IACnF,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACjD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,yBAAgC;IAC7D,SAAS,CAAC,SAAS,SAAK;gBAGF,QAAQ,EAAE,2BAA2B,EACxD,OAAO,GAAE,mBAAwB;IAgBpC;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO;IAI7C;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAOrC;;;;;;;;OAQG;IACH,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;IAiB9D;;;;;OAKG;IACH,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAU9C;;;;;OAKG;IACH,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAWnC,qFAAqF;IACrF,OAAO,IAAI,IAAI;IAOf;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO;IAIzD;;;;OAIG;IACH,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAuBjD;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGrD"}
|