@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,277 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2023-2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
AbstractLogger,
|
|
12
|
+
type Clock,
|
|
13
|
+
DEFAULT_LOG_FILE_ENV,
|
|
14
|
+
DEFAULT_LOG_LEVEL_ENV,
|
|
15
|
+
Logger,
|
|
16
|
+
type LogLevel,
|
|
17
|
+
type LogThreshold,
|
|
18
|
+
ObservableValue,
|
|
19
|
+
type MaybeObservableValue,
|
|
20
|
+
parseLogLevel
|
|
21
|
+
} from '@hydranium/protocol';
|
|
22
|
+
import { type URI } from '@hydranium/langium';
|
|
23
|
+
import type { Connection } from 'vscode-languageserver';
|
|
24
|
+
import { type ServerSharedServices } from '../module.js';
|
|
25
|
+
import { setLogFilePath, teeLogLine } from './logger.js';
|
|
26
|
+
import { processEnv, writeStderr } from '../../util/environment.js';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Guards the one-time env-var log-level and log-file baselines (see the
|
|
30
|
+
* {@link LspLogger} constructor). Applied on the first logger construction and
|
|
31
|
+
* never again, so derived child loggers cannot re-read the env and clobber a
|
|
32
|
+
* live setting.
|
|
33
|
+
*/
|
|
34
|
+
let envBaselineApplied = false;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Options accepted by {@link LspLogger}. Carries the logger's own
|
|
38
|
+
* identity {@link component} (the field on {@link AbstractLogger}
|
|
39
|
+
* prefixed to every log line the logger emits). This is intentionally
|
|
40
|
+
* a separate field from `logName` on
|
|
41
|
+
* `LogNameOptions` — the latter labels a
|
|
42
|
+
* service that DERIVES a logger; this labels the logger itself.
|
|
43
|
+
*/
|
|
44
|
+
export interface LspLoggerOptions {
|
|
45
|
+
/** Component label prefixed to log output. Read by `AbstractLogger.emit`. */
|
|
46
|
+
readonly component?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Process-global log threshold, applied at construction of the ROOT logger
|
|
49
|
+
* (the instance bound in DI). When set, the constructor calls
|
|
50
|
+
* `Logger.setLevel` with the current value (only when truthy, so an unset
|
|
51
|
+
* setting leaves the env-fallback / `'info'` default in place) and
|
|
52
|
+
* re-applies on every `onChange`. Bind to a user setting via
|
|
53
|
+
* `Settings.value`.
|
|
54
|
+
*
|
|
55
|
+
* The threshold is GLOBAL, not per-instance: `derive` / `for` create child
|
|
56
|
+
* loggers passing only `component`, so children never carry or re-apply
|
|
57
|
+
* `logThreshold` — the root owns it. Pass a constant for tests / non-LSP
|
|
58
|
+
* runs. (Named `logThreshold`, not `logLevel`, to avoid colliding with
|
|
59
|
+
* GLSP's per-instance numeric `Logger.logLevel`; it is an
|
|
60
|
+
* `MaybeObservableValue<LogThreshold>`, matching the framework's filter-side type.)
|
|
61
|
+
*/
|
|
62
|
+
readonly logThreshold?: MaybeObservableValue<LogThreshold | undefined>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* LSP-bound implementation of {@link Logger}. Forwards messages to the
|
|
67
|
+
* language client via the connection bound in {@link ServerSharedServices}.
|
|
68
|
+
* Emission only — memory readout and timing live on the server's
|
|
69
|
+
* `ServerTracer`, which composes this
|
|
70
|
+
* logger. Adds URI-aware labelling on top of {@link AbstractLogger}.
|
|
71
|
+
*
|
|
72
|
+
* `withUri` renders workspace-relative paths by default (via the framework
|
|
73
|
+
* `WorkspaceManager.wsRelativePath`); consumers subclass only for a different
|
|
74
|
+
* display convention or extra language-specific helpers.
|
|
75
|
+
*/
|
|
76
|
+
export class LspLogger extends AbstractLogger implements Logger {
|
|
77
|
+
constructor(
|
|
78
|
+
protected readonly services: ServerSharedServices,
|
|
79
|
+
options: LspLoggerOptions = {}
|
|
80
|
+
) {
|
|
81
|
+
super(options.component);
|
|
82
|
+
// Apply the framework env baselines (`HYDRANIUM_LOG_LEVEL` and
|
|
83
|
+
// `HYDRANIUM_LOG_FILE`) exactly once, on the first logger construction,
|
|
84
|
+
// before any setting is read. Unconditional and process-global, so it
|
|
85
|
+
// needs no root detection and is never re-applied by derived children —
|
|
86
|
+
// which would otherwise clobber a live setting. These are the single env
|
|
87
|
+
// vars for level / file-tee (an adopter brands them by renaming the
|
|
88
|
+
// framework env, not by introducing its own).
|
|
89
|
+
if (!envBaselineApplied) {
|
|
90
|
+
envBaselineApplied = true;
|
|
91
|
+
// No `process.env` in a browser — the level/file-tee env baseline is
|
|
92
|
+
// a Node concern; skip it cleanly there.
|
|
93
|
+
const env = processEnv();
|
|
94
|
+
if (env) {
|
|
95
|
+
const envLevel = parseLogLevel(env[DEFAULT_LOG_LEVEL_ENV]);
|
|
96
|
+
if (envLevel) {
|
|
97
|
+
Logger.setLevel(envLevel);
|
|
98
|
+
}
|
|
99
|
+
const envLogFile = env[DEFAULT_LOG_FILE_ENV];
|
|
100
|
+
if (envLogFile) {
|
|
101
|
+
setLogFilePath(envLogFile);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Apply the configured threshold from the root logger only — `derive`
|
|
106
|
+
// passes just `component`, so children never carry `logThreshold`. The
|
|
107
|
+
// setting overrides the env baseline above and re-applies on every change;
|
|
108
|
+
// truthy-guarded so an unset setting leaves the baseline / `'info'` default.
|
|
109
|
+
if (options.logThreshold !== undefined) {
|
|
110
|
+
const level = ObservableValue.from(options.logThreshold);
|
|
111
|
+
if (level.value) {
|
|
112
|
+
Logger.setLevel(level.value);
|
|
113
|
+
}
|
|
114
|
+
level.onChange(next => {
|
|
115
|
+
if (next) {
|
|
116
|
+
Logger.setLevel(next);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Route logger timing and timestamps through the injected framework
|
|
124
|
+
* {@link Clock} (the dedicated `shared.Clock` slot) so server-side log time
|
|
125
|
+
* shares the one fake-clock axis tests drive with `makeFakeClock`, rather
|
|
126
|
+
* than reading the wall clock directly. The logger takes the full
|
|
127
|
+
* {@link ServerSharedServices}, which carries the slot, so the read is
|
|
128
|
+
* direct — no cast or fallback needed.
|
|
129
|
+
*/
|
|
130
|
+
protected override clock(): Clock {
|
|
131
|
+
return this.services.Clock;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* URI labelling rendered as a workspace-relative path via the framework
|
|
136
|
+
* `HydraniumWorkspaceManager.wsRelativePath` (falls back to the URI
|
|
137
|
+
* string when no workspace folder is known). Widens the
|
|
138
|
+
* {@link Logger.withUri} parameter to accept a `URI` object directly —
|
|
139
|
+
* server-side callers typically hold URIs, not strings. Subclasses with a
|
|
140
|
+
* different display convention override their `WorkspaceManager.wsRelativePath`
|
|
141
|
+
* (preferred) or this method.
|
|
142
|
+
*/
|
|
143
|
+
override withUri(uri: URI | string): this {
|
|
144
|
+
return this.with(this.services.workspace.WorkspaceManager.wsRelativePath(uri));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
protected emit(level: LogLevel, label: string, message: string, args: readonly unknown[]): void {
|
|
148
|
+
const component = this.component ? ` [${this.component}]` : '';
|
|
149
|
+
// Pad to the widest label (5 chars — 'Error'/'Debug'/'Trace') so timestamps line up.
|
|
150
|
+
const prefix = `[${label.padEnd(5)} - ${this.timestamp()}]${component}`;
|
|
151
|
+
const combined = args.length === 0 ? message : `${message} ${args.map(formatLogArg).join(' ')}`;
|
|
152
|
+
const formatted = `${prefix} ${combined}`;
|
|
153
|
+
const connection = this.services.lsp.Connection;
|
|
154
|
+
// Route through the LSP `window/logMessage` channel so log lines stay
|
|
155
|
+
// framed as JSON-RPC messages even in `--stdio` mode (where stdout is
|
|
156
|
+
// the LSP transport — any raw `console.*` write before
|
|
157
|
+
// vscode-languageserver's `attachConsole` patches the globals would
|
|
158
|
+
// corrupt the protocol stream). Pre-stringify all args into one
|
|
159
|
+
// message because `RemoteConsole.*` takes a single string.
|
|
160
|
+
//
|
|
161
|
+
// Falls through to the raw sink below when the connection cannot take the
|
|
162
|
+
// line, which is NOT a theoretical case: `RemoteConsole.send` throws
|
|
163
|
+
// `Connection is disposed` once the client has gone, and the log lines
|
|
164
|
+
// most likely to arrive at that moment are the ones that matter most —
|
|
165
|
+
// shutdown diagnostics and the workspace manager's own
|
|
166
|
+
// unhandled-rejection handler. A log sink that throws turns a diagnostic
|
|
167
|
+
// into a crash, so a dead channel degrades to stderr instead.
|
|
168
|
+
if (!connection || !sendViaConnection(connection, level, formatted)) {
|
|
169
|
+
if (!writeStderr(`${formatted}\n`)) {
|
|
170
|
+
// Browser only. In Node every level goes to STDERR, including the
|
|
171
|
+
// three that `console.*` would put on stdout (`info` / `debug` /
|
|
172
|
+
// `log`) — stdout is the JSON-RPC channel for any head launched over
|
|
173
|
+
// stdio, so a log line written there corrupts the protocol stream
|
|
174
|
+
// rather than merely appearing in the wrong place. A browser has no
|
|
175
|
+
// such channel, so it keeps the per-level console methods, which
|
|
176
|
+
// render structured args far better than a pre-joined string.
|
|
177
|
+
const consumer = CONSOLE[level];
|
|
178
|
+
consumer(prefix, message, ...args);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// File-tee fan-out for headless capture (see `setLogFilePath`). Always runs
|
|
182
|
+
// in addition to the LSP/console sink — log sinks fan out, they don't replace.
|
|
183
|
+
teeLogLine(formatted);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
protected derive(component: string): this {
|
|
187
|
+
const Subclass = this.constructor as new (services: ServerSharedServices, options?: LspLoggerOptions) => this;
|
|
188
|
+
return new Subclass(this.services, { component });
|
|
189
|
+
}
|
|
190
|
+
// note: `derive` uses the logger's own `component` field, not the
|
|
191
|
+
// service `logName` option — the field on AbstractLogger IS named `component`.
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Deliver one formatted line over the LSP `window/logMessage` channel,
|
|
196
|
+
* reporting whether the channel took it.
|
|
197
|
+
*
|
|
198
|
+
* Returns `false` — rather than throwing — when the connection is closed or
|
|
199
|
+
* disposed. `RemoteConsole.send` throws `Connection is disposed` in that state,
|
|
200
|
+
* and a logger that propagates it converts a diagnostic into an uncaught
|
|
201
|
+
* exception at exactly the moment things are already going wrong: the framework's
|
|
202
|
+
* own `handleProcessUnhandledRejection` logs through this path, so a late
|
|
203
|
+
* rejection after client teardown would crash the server while *reporting* an
|
|
204
|
+
* error. The caller falls back to the raw sink, so the line is still delivered.
|
|
205
|
+
*/
|
|
206
|
+
function sendViaConnection(connection: Connection, level: LogLevel, formatted: string): boolean {
|
|
207
|
+
try {
|
|
208
|
+
LSP_CONSOLE[level](connection)(formatted);
|
|
209
|
+
return true;
|
|
210
|
+
} catch {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Per-level console adapter, used **only where there is no `process.stderr`**
|
|
217
|
+
* (a browser). In Node the fallback writes to stderr for every level instead —
|
|
218
|
+
* see the `emit` branch. Kept per-level rather than collapsed onto
|
|
219
|
+
* `console.error` because devtools render `info` / `debug` distinctly and
|
|
220
|
+
* colouring every framework log line as an error would be actively misleading.
|
|
221
|
+
*/
|
|
222
|
+
const CONSOLE: Record<LogLevel, (...args: unknown[]) => void> = {
|
|
223
|
+
error: console.error,
|
|
224
|
+
warn: console.warn,
|
|
225
|
+
info: console.info,
|
|
226
|
+
debug: console.debug,
|
|
227
|
+
trace: console.log
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Per-level adapter that resolves the right `RemoteConsole` method on a
|
|
232
|
+
* Langium {@link Connection}. `RemoteConsole` exposes
|
|
233
|
+
* `error / warn / info / log / debug` — `debug` arriving with LSP 3.18's
|
|
234
|
+
* `MessageType.Debug` severity, so a debug line is now tagged as such in
|
|
235
|
+
* the client's log instead of being indistinguishable from `log`. There is
|
|
236
|
+
* still no `trace`, so that one level folds into `log` (severity `Log` in
|
|
237
|
+
* the `window/logMessage` type table). A client predating 3.18 has no
|
|
238
|
+
* `Debug` case and appends the message unlabelled, so the mapping degrades
|
|
239
|
+
* rather than dropping output. The returned function takes a single
|
|
240
|
+
* pre-formatted string since `RemoteConsole.*` accepts only one argument.
|
|
241
|
+
*/
|
|
242
|
+
const LSP_CONSOLE: Record<LogLevel, (connection: Connection) => (message: string) => void> = {
|
|
243
|
+
error: c => c.console.error.bind(c.console),
|
|
244
|
+
warn: c => c.console.warn.bind(c.console),
|
|
245
|
+
info: c => c.console.info.bind(c.console),
|
|
246
|
+
debug: c => c.console.debug.bind(c.console),
|
|
247
|
+
trace: c => c.console.log.bind(c.console)
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Render a logger-argument value into the single combined string the LSP
|
|
252
|
+
* `window/logMessage` channel takes. Mirrors how raw `console.*` would
|
|
253
|
+
* format multiple args, but with explicit handling for Errors (stack) and
|
|
254
|
+
* objects (JSON).
|
|
255
|
+
*/
|
|
256
|
+
function formatLogArg(value: unknown): string {
|
|
257
|
+
if (value === undefined) {
|
|
258
|
+
return 'undefined';
|
|
259
|
+
}
|
|
260
|
+
if (value === null) {
|
|
261
|
+
return 'null';
|
|
262
|
+
}
|
|
263
|
+
if (typeof value === 'string') {
|
|
264
|
+
return value;
|
|
265
|
+
}
|
|
266
|
+
if (value instanceof Error) {
|
|
267
|
+
return value.stack ?? value.message;
|
|
268
|
+
}
|
|
269
|
+
if (typeof value === 'object') {
|
|
270
|
+
try {
|
|
271
|
+
return JSON.stringify(value);
|
|
272
|
+
} catch {
|
|
273
|
+
return String(value);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return String(value);
|
|
277
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import { type Clock, DefaultTracer, type Logger, type LogLevel, type TimeOptions } from '@hydranium/protocol';
|
|
11
|
+
import { isOperationCancelled } from '@hydranium/langium';
|
|
12
|
+
import { currentMemoryUsage } from '../../util/environment.js';
|
|
13
|
+
import { formatMemory, MEMORY_DELTA_BYTES } from './logger.js';
|
|
14
|
+
|
|
15
|
+
/** Last heapUsed at which a memory readout / suffix was logged. Gates the delta suffix. */
|
|
16
|
+
let lastLoggedHeapBytes = 0;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Server-side {@link DefaultTracer}. Adds the Node-specific observability the
|
|
20
|
+
* generic tracer leaves to subclasses:
|
|
21
|
+
* - {@link memory} renders the full `heap used/total, rss N` line via
|
|
22
|
+
* `process.memoryUsage()` (richer than the generic used/total reader);
|
|
23
|
+
* - {@link timingSuffix} appends a memory-delta suffix to `[done]` lines when
|
|
24
|
+
* the heap has moved significantly (or `forceMemoryAboveMs` overrides);
|
|
25
|
+
* - {@link categorizeError} maps `OperationCancelled` to `cancelled` so
|
|
26
|
+
* routine build cancellations stay quiet instead of logging as failures.
|
|
27
|
+
*/
|
|
28
|
+
export class ServerTracer extends DefaultTracer {
|
|
29
|
+
constructor(logger: Logger, clock: Clock) {
|
|
30
|
+
super(logger, clock);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override memory(label?: string, logLevel: LogLevel = 'info'): void {
|
|
34
|
+
const mem = currentMemoryUsage();
|
|
35
|
+
if (!mem) {
|
|
36
|
+
// No process memory stats (browser) — a contentless "Memory:" line is just noise.
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
lastLoggedHeapBytes = mem.heapUsed;
|
|
40
|
+
const prefix = label ? `${label}: ` : 'Memory: ';
|
|
41
|
+
this.logger[logLevel](`${prefix}${formatMemory()}`);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
protected override derive(logger: Logger): this {
|
|
45
|
+
return new ServerTracer(logger, this.clock) as this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
protected override timingSuffix(status: 'done' | 'failed' | 'cancelled', elapsedMs: number, options: TimeOptions): string {
|
|
49
|
+
if (status === 'cancelled') {
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
const force = options.forceMemoryAboveMs !== undefined && elapsedMs >= options.forceMemoryAboveMs;
|
|
53
|
+
return formatMemoryDelta(force);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected override categorizeError(error: unknown): 'failed' | 'cancelled' {
|
|
57
|
+
return isOperationCancelled(error) ? 'cancelled' : 'failed';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Memory suffix, only when heap moved significantly — unless `force` overrides the gate. */
|
|
62
|
+
function formatMemoryDelta(force = false): string {
|
|
63
|
+
const mem = currentMemoryUsage();
|
|
64
|
+
if (!mem) {
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
const heap = mem.heapUsed;
|
|
68
|
+
if (!force && Math.abs(heap - lastLoggedHeapBytes) < MEMORY_DELTA_BYTES) {
|
|
69
|
+
return '';
|
|
70
|
+
}
|
|
71
|
+
lastLoggedHeapBytes = heap;
|
|
72
|
+
return `, ${formatMemory()}`;
|
|
73
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import { type LangiumDocument, DocumentState } from '@hydranium/langium';
|
|
11
|
+
import { type CancellationToken } from 'vscode-languageserver';
|
|
12
|
+
import { IntegrityPhase } from '../integrity/integrity-rule.js';
|
|
13
|
+
import { groupDocumentsByLanguage } from '../build-phase-pass/build-phase-pass.js';
|
|
14
|
+
import { type ServerSharedServices } from '../module.js';
|
|
15
|
+
import { labelPhaseListener } from './labeled-phase-listener.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* AST extension wiring covers every "useful" `DocumentState` an extension can
|
|
19
|
+
* target. `Changed` has no AST yet; `IndexedContent` carries the same
|
|
20
|
+
* per-document information as `Parsed`. No-op fires for documents with no
|
|
21
|
+
* extension at a given state are negligible (`notifyDocumentPhase` is a plain
|
|
22
|
+
* listener loop), so the framework wires the full set unconditionally rather
|
|
23
|
+
* than collecting declared states from per-language registrations.
|
|
24
|
+
*/
|
|
25
|
+
const AST_EXTENSION_PHASES: readonly DocumentState[] = [
|
|
26
|
+
DocumentState.Parsed,
|
|
27
|
+
DocumentState.ComputedScopes,
|
|
28
|
+
DocumentState.Linked,
|
|
29
|
+
DocumentState.IndexedReferences,
|
|
30
|
+
DocumentState.Validated
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Build phases at which the `BuildPhasePassService` is driven. Same useful
|
|
35
|
+
* set as {@link AST_EXTENSION_PHASES}: a pass registered at any other state
|
|
36
|
+
* never fires (the listener is not wired), mirroring the AST-extension contract.
|
|
37
|
+
* `runPasses` no-ops at a phase with no registered pass, so wiring the full set
|
|
38
|
+
* unconditionally costs only an empty-bucket check per phase.
|
|
39
|
+
*/
|
|
40
|
+
const BUILD_PHASE_PASS_STATES: readonly DocumentState[] = AST_EXTENSION_PHASES;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Default priority of the framework integrity passes. Integrity mutates / cleans
|
|
44
|
+
* the AST that every derived-state pass reads, so it is *foundational* and must
|
|
45
|
+
* run before adopter passes. It sits in a NEGATIVE band for that reason: a pass
|
|
46
|
+
* registered with no explicit priority defaults to `0` (see `RegistryItem.priority`),
|
|
47
|
+
* and the framework integrity pass registers AFTER adopter contributions (which
|
|
48
|
+
* register at `BuildPhasePassService` construction), so a `0`-vs-`0` tie would
|
|
49
|
+
* break by registration order and let the adopter run first. The negative band
|
|
50
|
+
* makes integrity precede default-priority adopter passes regardless of
|
|
51
|
+
* registration order. Adopter passes that must run after integrity use `0` or
|
|
52
|
+
* higher. See {@link BuildPipelineIntegrationOptions} to override.
|
|
53
|
+
*/
|
|
54
|
+
export const INTEGRITY_PASS_PRIORITY = -1000;
|
|
55
|
+
|
|
56
|
+
/** Construction options for {@link BuildPipelineIntegration}. */
|
|
57
|
+
export interface BuildPipelineIntegrationOptions {
|
|
58
|
+
/**
|
|
59
|
+
* Priority of the framework integrity passes, applied at every
|
|
60
|
+
* {@link IntegrityPhase}. A single value covers all integrity phases: priority
|
|
61
|
+
* only orders passes WITHIN one phase bucket, and integrity at `Parsed` vs
|
|
62
|
+
* `Linked` lives in different buckets, so per-phase values would never
|
|
63
|
+
* interact. Default {@link INTEGRITY_PASS_PRIORITY}.
|
|
64
|
+
*/
|
|
65
|
+
readonly integrityPriority?: number;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Wires the framework's build-time features (integrity rules, AST
|
|
70
|
+
* enrichment) into Langium's document-build pipeline. The single shared
|
|
71
|
+
* place that subscribes to the document builder's phase notifications and,
|
|
72
|
+
* at each phase, drives the relevant feature service for each document —
|
|
73
|
+
* so the feature services stay pure registries with no lifecycle code.
|
|
74
|
+
*
|
|
75
|
+
* **Build-phase vs document-phase.** The method name carries both the
|
|
76
|
+
* phase and the notification family:
|
|
77
|
+
* - `onDocument<Phase>` — fires per document, as each one reaches the
|
|
78
|
+
* phase (interleaved with the rest of the batch still building). Used
|
|
79
|
+
* for independent, read-only per-document derivation → AST enrichment.
|
|
80
|
+
* - `onBuild<Phase>` — fires once, after the whole batch has reached the
|
|
81
|
+
* phase. Used when work needs the batch settled or mutates/regresses
|
|
82
|
+
* document state → integrity (mutates the AST + reparses).
|
|
83
|
+
*
|
|
84
|
+
* Adopters subclass to change *how* a feature is invoked by overriding one
|
|
85
|
+
* protected per-feature helper — {@link callIntegrity} (integrity enforcement),
|
|
86
|
+
* {@link extendAst} (per-document AST enrichment), or {@link runBuildPhase}
|
|
87
|
+
* (batch-level build-phase pass dispatch) — or to wire an additional phase
|
|
88
|
+
* (override the constructor).
|
|
89
|
+
*
|
|
90
|
+
* Eagerly constructed (via `DEFAULT_EAGER_SERVICES`) so the listeners are
|
|
91
|
+
* attached before the first build cycle.
|
|
92
|
+
*/
|
|
93
|
+
export class BuildPipelineIntegration {
|
|
94
|
+
constructor(
|
|
95
|
+
protected readonly services: ServerSharedServices,
|
|
96
|
+
options: BuildPipelineIntegrationOptions = {}
|
|
97
|
+
) {
|
|
98
|
+
const builder = services.workspace.DocumentBuilder;
|
|
99
|
+
const passes = services.workspace.BuildPhasePassService;
|
|
100
|
+
|
|
101
|
+
// Framework integrity, registered as batch-level passes rather than direct
|
|
102
|
+
// onBuildPhase listeners — so it shares ONE priority space with adopter
|
|
103
|
+
// passes and the ordering between them is declared, not left to DI
|
|
104
|
+
// construction order. One pass per IntegrityPhase (the canonical allowed
|
|
105
|
+
// set, shared with the register guard); `callIntegrity` fans out
|
|
106
|
+
// per-language internally.
|
|
107
|
+
const integrityPriority = options.integrityPriority ?? INTEGRITY_PASS_PRIORITY;
|
|
108
|
+
for (const phase of IntegrityPhase.all()) {
|
|
109
|
+
passes.register({
|
|
110
|
+
id: `framework:integrity:${IntegrityPhase.toString(phase).toLowerCase()}`,
|
|
111
|
+
state: phase,
|
|
112
|
+
priority: integrityPriority,
|
|
113
|
+
run: (documents, cancelToken) => this.callIntegrity(documents, phase, cancelToken)
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// One onBuildPhase listener per pass state, routed through the overridable
|
|
118
|
+
// `runBuildPhase` seam → priority-ordered, sequential, cancel-aware pass
|
|
119
|
+
// dispatch. The returned promise is awaited by the build pipeline, so a
|
|
120
|
+
// mutating pass (integrity) reparses before the build advances.
|
|
121
|
+
for (const phase of BUILD_PHASE_PASS_STATES) {
|
|
122
|
+
builder.onBuildPhase(
|
|
123
|
+
phase,
|
|
124
|
+
labelPhaseListener(
|
|
125
|
+
(documents, cancelToken) => this.runBuildPhase(documents, phase, cancelToken),
|
|
126
|
+
`BuildPipeline.runBuildPhase.${DocumentState[phase]}`
|
|
127
|
+
)
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// AST enrichment stays per-document (onDocumentPhase) and node-granular —
|
|
132
|
+
// unchanged by the build-phase-pass registry, which is batch-granular. The
|
|
133
|
+
// listener calls the `extendAst` seam directly (the document-phase analog of
|
|
134
|
+
// `runBuildPhase`); there is no per-phase handler tier — one parameterized seam.
|
|
135
|
+
for (const phase of AST_EXTENSION_PHASES) {
|
|
136
|
+
builder.onDocumentPhase(
|
|
137
|
+
phase,
|
|
138
|
+
labelPhaseListener(
|
|
139
|
+
(document, cancelToken) => this.extendAst(document, phase, cancelToken),
|
|
140
|
+
`BuildPipeline.extendAst.${DocumentState[phase]}`
|
|
141
|
+
)
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ============================================================
|
|
147
|
+
// Feature seams — one overridable helper per framework feature
|
|
148
|
+
// ============================================================
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Run integrity enforcement for the batch at `phase`. The batch may span
|
|
152
|
+
* grammars, so group documents by their language's `IntegrityService`
|
|
153
|
+
* and enforce each group — preserving the per-language batch timing log.
|
|
154
|
+
*
|
|
155
|
+
* As a side effect of resolving each document's language services tree,
|
|
156
|
+
* this routing helper also forces construction of that language's
|
|
157
|
+
* `ValidationContributionCollector` — so validation checks declared
|
|
158
|
+
* via `validation.checks` contributions are registered into the
|
|
159
|
+
* `ValidationRegistry` before Langium reaches the `Validated` phase.
|
|
160
|
+
*/
|
|
161
|
+
protected async callIntegrity(
|
|
162
|
+
documents: readonly LangiumDocument[],
|
|
163
|
+
phase: DocumentState,
|
|
164
|
+
cancelToken: CancellationToken
|
|
165
|
+
): Promise<void> {
|
|
166
|
+
// The same fan-out `groupDocumentsByLanguage` offers adopter passes —
|
|
167
|
+
// shared rather than parallel, so the exported helper is proven by the
|
|
168
|
+
// framework's own use of it rather than only by its tests.
|
|
169
|
+
for (const [languageServices, group] of groupDocumentsByLanguage(this.services, documents)) {
|
|
170
|
+
// Force construction of the language's ValidationContributionCollector
|
|
171
|
+
// on first touch; cached by Langium's DI proxy after that.
|
|
172
|
+
void languageServices.validation.ValidationContributionCollector;
|
|
173
|
+
await languageServices.integrity.IntegrityService.enforceBatch(group, phase, cancelToken);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** Run AST enrichment for a single document at `phase` via its language service. */
|
|
178
|
+
protected extendAst(document: LangiumDocument, phase: DocumentState, cancelToken: CancellationToken): void {
|
|
179
|
+
this.services.ServiceRegistry.getServices(document.uri).ast.AstExtensionService.extendDocument(document, phase, cancelToken);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Dispatch every build-phase pass registered at `phase`, in priority order. The
|
|
184
|
+
* overridable seam between the `onBuildPhase` listener and the shared
|
|
185
|
+
* `BuildPhasePassService`: adopters subclass to gate, instrument, or wrap
|
|
186
|
+
* the batch-level pass run (the build-phase analog of {@link extendAst} for the
|
|
187
|
+
* document-phase AST run). Returns the dispatch promise so the build pipeline
|
|
188
|
+
* awaits a mutating pass (integrity) before advancing.
|
|
189
|
+
*/
|
|
190
|
+
protected runBuildPhase(documents: readonly LangiumDocument[], phase: DocumentState, cancelToken: CancellationToken): Promise<void> {
|
|
191
|
+
return this.services.workspace.BuildPhasePassService.runPasses(documents, phase, cancelToken);
|
|
192
|
+
}
|
|
193
|
+
}
|