@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,183 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/*
|
|
10
|
+
* The profiling session orchestrator: one run = one timestamped folder holding
|
|
11
|
+
* the captured artefacts and a self-describing `manifest.json`. This is the seam
|
|
12
|
+
* that makes "everything from a single run" true without a god-object — each
|
|
13
|
+
* collector shares only the session directory + manifest. This run drives the
|
|
14
|
+
* server-side sampled-profile capture over one or more named windows and, when
|
|
15
|
+
* given a collector, the latency report; browser-origin collectors append their
|
|
16
|
+
* own manifest entries the same way, from the Playwright side.
|
|
17
|
+
*/
|
|
18
|
+
import { DEFAULT_LOG_FILE_ENV, PROFILING_SCHEMA_VERSION } from '@hydranium/protocol';
|
|
19
|
+
import * as fs from 'node:fs';
|
|
20
|
+
import * as os from 'node:os';
|
|
21
|
+
import * as path from 'node:path';
|
|
22
|
+
import { profileWorkload } from './profile-capture.js';
|
|
23
|
+
import { digestAllocationProfile, digestCpuProfile } from './profile-digest.js';
|
|
24
|
+
// The manifest schema lives in `@hydranium/protocol` so a Playwright-side
|
|
25
|
+
// assembler can share the shape without a Node-only dependency chain;
|
|
26
|
+
// re-export it here so `@hydranium/core/node` consumers keep one import site.
|
|
27
|
+
export { PROFILING_SCHEMA_VERSION };
|
|
28
|
+
/** A cgroup memory controller signals we are inside a container/pod. */
|
|
29
|
+
function detectContainer() {
|
|
30
|
+
return fs.existsSync('/sys/fs/cgroup/memory.current') || fs.existsSync('/sys/fs/cgroup/memory/memory.usage_in_bytes');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A profiling session: create it, run one or more named windows through it, then
|
|
34
|
+
* {@link finish} to write `server-summary.json` + `manifest.json` and get the manifest.
|
|
35
|
+
* Windows run sequentially (the underlying capture is a single inspector session).
|
|
36
|
+
*/
|
|
37
|
+
export class ProfilingRun {
|
|
38
|
+
options;
|
|
39
|
+
directory;
|
|
40
|
+
sessionId;
|
|
41
|
+
reports = {};
|
|
42
|
+
artifacts = [];
|
|
43
|
+
windows = [];
|
|
44
|
+
finished = false;
|
|
45
|
+
/** The `HYDRANIUM_LOG_FILE` value seen before this run pointed it at the session (restored on {@link finish}). */
|
|
46
|
+
previousLogFileEnv;
|
|
47
|
+
/** Absolute path of the session's teed server log. */
|
|
48
|
+
serverLogPath;
|
|
49
|
+
constructor(options, directory, sessionId) {
|
|
50
|
+
this.options = options;
|
|
51
|
+
this.directory = directory;
|
|
52
|
+
this.sessionId = sessionId;
|
|
53
|
+
this.serverLogPath = path.join(directory, 'server.log');
|
|
54
|
+
// Point the log-file tee at the session so the head's structured logs
|
|
55
|
+
// (build phases, warnings, and — in an app run — the interleaved browser
|
|
56
|
+
// console) land in the bundle beside the profiles. Done via the
|
|
57
|
+
// `HYDRANIUM_LOG_FILE` env, which every `@hydranium/core` copy reads when
|
|
58
|
+
// its logger is CONSTRUCTED — so `ProfilingRun.start` must run before the
|
|
59
|
+
// head's services are created (as `measureModelMemory` does). This is the
|
|
60
|
+
// only mechanism that crosses a yalc'd adopter's separate core copy; a
|
|
61
|
+
// process-local `setLogFilePath` would only reach this module's own copy.
|
|
62
|
+
this.previousLogFileEnv = process.env[DEFAULT_LOG_FILE_ENV];
|
|
63
|
+
process.env[DEFAULT_LOG_FILE_ENV] = this.serverLogPath;
|
|
64
|
+
}
|
|
65
|
+
static async start(options = {}) {
|
|
66
|
+
const sessionId = options.sessionId ?? `profiling-${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
|
67
|
+
// Honour an explicitly requested directory (created recursively); only fall
|
|
68
|
+
// back to the OS temp dir when none was given.
|
|
69
|
+
const directory = path.join(options.directory ?? os.tmpdir(), sessionId);
|
|
70
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
71
|
+
return new ProfilingRun(options, directory, sessionId);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Write an already-collected artefact (e.g. `server-ast.json`,
|
|
75
|
+
* `server-memory-report.json`) into the session directory and record it in the
|
|
76
|
+
* manifest. For non-profile inputs a head/harness already has in hand.
|
|
77
|
+
*/
|
|
78
|
+
attach(kind, filename, data) {
|
|
79
|
+
if (this.finished) {
|
|
80
|
+
throw new Error('ProfilingRun.attach called after finish().');
|
|
81
|
+
}
|
|
82
|
+
fs.writeFileSync(path.join(this.directory, filename), JSON.stringify(data, undefined, 2));
|
|
83
|
+
this.artifacts.push({ kind, path: filename });
|
|
84
|
+
}
|
|
85
|
+
/** Capture {@link run} as a named window, recording its artefacts + duration. Returns the block's result. */
|
|
86
|
+
async window(label, run) {
|
|
87
|
+
if (this.finished) {
|
|
88
|
+
throw new Error('ProfilingRun.window called after finish().');
|
|
89
|
+
}
|
|
90
|
+
if (this.reports[label] !== undefined) {
|
|
91
|
+
throw new Error(`ProfilingRun.window called twice with label '${label}'; window labels must be unique.`);
|
|
92
|
+
}
|
|
93
|
+
const { result, report } = await profileWorkload({ ...(this.options.capture ?? {}), directory: this.directory, label }, run);
|
|
94
|
+
this.reports[label] = report;
|
|
95
|
+
this.windows.push({ label, ms: report.durationMs });
|
|
96
|
+
if (report.cpuProfilePath) {
|
|
97
|
+
this.artifacts.push(this.artifactWithDigest('server-cpu', report.cpuProfilePath, label, raw => digestCpuProfile(raw)));
|
|
98
|
+
}
|
|
99
|
+
if (report.allocationProfilePath) {
|
|
100
|
+
this.artifacts.push(this.artifactWithDigest('server-alloc', report.allocationProfilePath, label, raw => digestAllocationProfile(raw)));
|
|
101
|
+
}
|
|
102
|
+
if (report.heapSnapshotPath) {
|
|
103
|
+
// No inline digest: a heap snapshot's digest is the retained-size analyzer's report.
|
|
104
|
+
this.artifacts.push({ kind: 'server-heap', path: path.basename(report.heapSnapshotPath), window: label });
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/** Build the artefact entry, emitting a `<profile>.txt` digest beside the profile; a digest failure is non-fatal. */
|
|
109
|
+
artifactWithDigest(kind, file, window, digest) {
|
|
110
|
+
const artifact = { kind, path: path.basename(file), window };
|
|
111
|
+
try {
|
|
112
|
+
const raw = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
113
|
+
const digestPath = `${file}.txt`;
|
|
114
|
+
fs.writeFileSync(digestPath, digest(raw));
|
|
115
|
+
artifact.digest = path.basename(digestPath);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// The raw profile is still in the bundle; a skill can fall back to it.
|
|
119
|
+
}
|
|
120
|
+
return artifact;
|
|
121
|
+
}
|
|
122
|
+
/** Write `server-summary.json` + `manifest.json` into the session directory and return the manifest. */
|
|
123
|
+
async finish() {
|
|
124
|
+
this.finished = true;
|
|
125
|
+
// Restore the prior log-file env, then record the log as an artefact only
|
|
126
|
+
// if the run actually produced one.
|
|
127
|
+
if (this.previousLogFileEnv === undefined) {
|
|
128
|
+
delete process.env[DEFAULT_LOG_FILE_ENV];
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
process.env[DEFAULT_LOG_FILE_ENV] = this.previousLogFileEnv;
|
|
132
|
+
}
|
|
133
|
+
if (fs.existsSync(this.serverLogPath)) {
|
|
134
|
+
this.artifacts.push({ kind: 'server-log', path: 'server.log' });
|
|
135
|
+
}
|
|
136
|
+
fs.writeFileSync(path.join(this.directory, 'server-summary.json'), JSON.stringify(this.reports, undefined, 2));
|
|
137
|
+
if (this.options.latency) {
|
|
138
|
+
fs.writeFileSync(path.join(this.directory, 'server-latency.json'), JSON.stringify(this.options.latency.report(), undefined, 2));
|
|
139
|
+
this.artifacts.push({ kind: 'server-latency', path: 'server-latency.json' });
|
|
140
|
+
}
|
|
141
|
+
const manifest = {
|
|
142
|
+
schemaVersion: PROFILING_SCHEMA_VERSION,
|
|
143
|
+
sessionId: this.sessionId,
|
|
144
|
+
environment: {
|
|
145
|
+
mode: this.options.mode ?? 'harness',
|
|
146
|
+
container: this.options.container ?? detectContainer(),
|
|
147
|
+
commit: this.options.commit,
|
|
148
|
+
workspace: this.options.workspace,
|
|
149
|
+
node: process.version,
|
|
150
|
+
windows: this.windows
|
|
151
|
+
},
|
|
152
|
+
artifacts: [...this.artifacts, { kind: 'server-summary', path: 'server-summary.json' }]
|
|
153
|
+
};
|
|
154
|
+
fs.writeFileSync(path.join(this.directory, 'manifest.json'), JSON.stringify(manifest, undefined, 2));
|
|
155
|
+
return manifest;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Merge one window's {@link ProfileReport} into `<directory>/server-summary.json`
|
|
160
|
+
* (read-modify-write, keyed by window label). Lets the interactive / RPC capture path
|
|
161
|
+
* — which stops a single window at a time via the data-server `stopProfiling`, with no
|
|
162
|
+
* {@link ProfilingRun} to collect the reports — accrue the same `server-summary`
|
|
163
|
+
* artefact the headless {@link ProfilingRun.finish} writes in one pass. An empty label
|
|
164
|
+
* is keyed `app`; a malformed or absent existing file is treated as empty. Creates the
|
|
165
|
+
* directory if needed, so a caller-supplied path that does not yet exist does not throw.
|
|
166
|
+
*/
|
|
167
|
+
export function recordServerSummaryEntry(directory, label, report) {
|
|
168
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
169
|
+
const file = path.join(directory, 'server-summary.json');
|
|
170
|
+
let summary = {};
|
|
171
|
+
try {
|
|
172
|
+
const parsed = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
173
|
+
if (parsed && typeof parsed === 'object') {
|
|
174
|
+
summary = parsed;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// No existing summary (or unreadable) — start fresh.
|
|
179
|
+
}
|
|
180
|
+
summary[label || 'app'] = report;
|
|
181
|
+
fs.writeFileSync(file, JSON.stringify(summary, undefined, 2));
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=profiling-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiling-run.js","sourceRoot":"","sources":["../../src/node/profiling-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
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 AstReflection, type Grammar, type LanguageMetaData } from '@hydranium/langium';
|
|
10
|
+
import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
11
|
+
/** One terminal rule of a language's grammar, flattened for the reflection dump. */
|
|
12
|
+
export interface TerminalReflection {
|
|
13
|
+
/** The terminal rule name. */
|
|
14
|
+
name: string;
|
|
15
|
+
/** The compiled pattern source, when it could be resolved to a `RegExp`. */
|
|
16
|
+
pattern?: string;
|
|
17
|
+
/** Hidden terminals (e.g. whitespace, comments) are lexed but not parsed. */
|
|
18
|
+
hidden: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** A single registered language's grammar surface. */
|
|
21
|
+
export interface LanguageReflection {
|
|
22
|
+
/** The language id from `LanguageMetaData` (matches the LSP `languageId`). */
|
|
23
|
+
languageId: string;
|
|
24
|
+
/** File extensions the language claims, each with a leading dot. */
|
|
25
|
+
fileExtensions: string[];
|
|
26
|
+
/** The grammar's entry parser rule name, when one is marked `entry`. */
|
|
27
|
+
entryRule?: string;
|
|
28
|
+
/** Terminal rules, in grammar declaration order. */
|
|
29
|
+
terminals: TerminalReflection[];
|
|
30
|
+
}
|
|
31
|
+
/** A property of an AST node type, as the runtime reflection exposes it. */
|
|
32
|
+
export interface PropertyReflection {
|
|
33
|
+
/** The property name on the AST node. */
|
|
34
|
+
name: string;
|
|
35
|
+
/** For a cross-reference property, the target type name; absent for containment/values. */
|
|
36
|
+
referenceType?: string;
|
|
37
|
+
/** True when the property is a (possibly-empty) array — reflection defaults it to `[]`. */
|
|
38
|
+
array: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* True when the reflection carries a default value for the property (arrays default to
|
|
41
|
+
* `[]`, some scalars to a literal). Reflection cannot distinguish optional from
|
|
42
|
+
* mandatory beyond this, so the dump reports only what it can prove.
|
|
43
|
+
*/
|
|
44
|
+
hasDefault: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** One AST node type from the shared reflection (the superset across all languages). */
|
|
47
|
+
export interface TypeReflection {
|
|
48
|
+
/** The `$type` value / grammar rule or interface name. */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Declared super types (grammar `returns` / interface `extends`). */
|
|
51
|
+
superTypes: string[];
|
|
52
|
+
/** Types whose `superTypes` list this type directly (inverted, so a hierarchy tree is buildable). */
|
|
53
|
+
directSubTypes: string[];
|
|
54
|
+
/** Properties with their reflection meta data, sorted by name. */
|
|
55
|
+
properties: PropertyReflection[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The full grammar/AST reflection of a head — a serialisable snapshot of the
|
|
59
|
+
* type system and per-language grammar surface. This is the JSON contract
|
|
60
|
+
* `hydranium-cli reflect --json` emits; it is independent of the Langium runtime
|
|
61
|
+
* types so tooling reads a stable schema and the CLI needs no runtime
|
|
62
|
+
* `@hydranium/core` dependency.
|
|
63
|
+
*/
|
|
64
|
+
export interface GrammarReflection {
|
|
65
|
+
/** Every registered language's grammar surface, in registration order. */
|
|
66
|
+
languages: LanguageReflection[];
|
|
67
|
+
/** Every AST node type (the shared reflection superset), sorted by name. */
|
|
68
|
+
types: TypeReflection[];
|
|
69
|
+
}
|
|
70
|
+
/** Options for {@link reflectGrammar}. */
|
|
71
|
+
export interface ReflectGrammarOptions {
|
|
72
|
+
/**
|
|
73
|
+
* Create the language's shared services in-process. This is the only
|
|
74
|
+
* language-specific input — a head passes its own `create<Lang>Services(fileSystem)`.
|
|
75
|
+
*/
|
|
76
|
+
createServices: () => {
|
|
77
|
+
shared: ServerSharedServicesMinimal;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** The language-service shape {@link collectGrammarReflection} reads (grammar + meta data). */
|
|
81
|
+
export interface ReflectableLanguageServices {
|
|
82
|
+
Grammar: Grammar;
|
|
83
|
+
LanguageMetaData: LanguageMetaData;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Flatten a head's runtime reflection + registered languages into a serialisable
|
|
87
|
+
* {@link GrammarReflection}. Pure over its inputs (the shared {@link AstReflection}
|
|
88
|
+
* and the per-language grammar/meta-data services) so it unit-tests without booting
|
|
89
|
+
* a grammar; {@link reflectGrammar} is the thin boot wrapper.
|
|
90
|
+
*
|
|
91
|
+
* `directSubTypes` is derived by inverting every type's `superTypes` — the runtime
|
|
92
|
+
* reflection only exposes the transitive `getAllSubTypes`, and direct edges make a
|
|
93
|
+
* hierarchy tree buildable without re-deriving it.
|
|
94
|
+
*/
|
|
95
|
+
export declare function collectGrammarReflection(reflection: AstReflection, languages: readonly ReflectableLanguageServices[]): GrammarReflection;
|
|
96
|
+
/**
|
|
97
|
+
* Headless grammar/AST reflection — a static snapshot of a head's type system and
|
|
98
|
+
* grammar surface, no workspace build required (the reflection and grammar are
|
|
99
|
+
* available as soon as {@link ReflectGrammarOptions.createServices} registers the
|
|
100
|
+
* language). Boots a head's Langium services in-process, then flattens the shared
|
|
101
|
+
* {@link AstReflection} and every registered language's grammar into a serialisable
|
|
102
|
+
* {@link GrammarReflection}.
|
|
103
|
+
*
|
|
104
|
+
* Backs `hydranium-cli reflect`. Like the other headless harnesses the only
|
|
105
|
+
* language-specific input is the service factory, so the framework code stays
|
|
106
|
+
* head-neutral.
|
|
107
|
+
*/
|
|
108
|
+
export declare function reflectGrammar(options: ReflectGrammarOptions): GrammarReflection;
|
|
109
|
+
//# sourceMappingURL=reflect-grammar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect-grammar.d.ts","sourceRoot":"","sources":["../../src/node/reflect-grammar.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IAChC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,MAAM,EAAE,OAAO,CAAC;CAClB;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IAChC,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IAChC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACtB;AAED,wFAAwF;AACxF,MAAM,WAAW,cAAc;IAC5B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qGAAqG;IACrG,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kEAAkE;IAClE,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC/B,0EAA0E;IAC1E,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,4EAA4E;IAC5E,KAAK,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACnC;;;OAGG;IACH,cAAc,EAAE,MAAM;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC;CAChE;AAED,+FAA+F;AAC/F,MAAM,WAAW,2BAA2B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,gBAAgB,CAAC;CACrC;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,2BAA2B,EAAE,GAAG,iBAAiB,CAmCxI;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAGhF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
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 { GrammarAST, GrammarUtils } from '@hydranium/langium';
|
|
10
|
+
/** Resolve a terminal rule's pattern source, tolerating rules `terminalRegex` cannot compile. */
|
|
11
|
+
function terminalPattern(rule) {
|
|
12
|
+
try {
|
|
13
|
+
return GrammarUtils.terminalRegex(rule).source;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// Some terminal rules (e.g. those referencing not-yet-resolvable fragments) can't be
|
|
17
|
+
// compiled to a standalone RegExp; the dump still lists the terminal, just pattern-less.
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Flatten one language's grammar to its {@link LanguageReflection}. */
|
|
22
|
+
function reflectLanguage(services) {
|
|
23
|
+
const { Grammar: grammar, LanguageMetaData: meta } = services;
|
|
24
|
+
const terminals = grammar.rules.filter(GrammarAST.isTerminalRule).map(rule => ({
|
|
25
|
+
name: rule.name,
|
|
26
|
+
pattern: terminalPattern(rule),
|
|
27
|
+
hidden: rule.hidden === true
|
|
28
|
+
}));
|
|
29
|
+
const entryRule = grammar.rules.find((rule) => GrammarAST.isParserRule(rule) && rule.entry === true);
|
|
30
|
+
return {
|
|
31
|
+
languageId: meta.languageId,
|
|
32
|
+
fileExtensions: [...meta.fileExtensions],
|
|
33
|
+
entryRule: entryRule?.name,
|
|
34
|
+
terminals
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Flatten a head's runtime reflection + registered languages into a serialisable
|
|
39
|
+
* {@link GrammarReflection}. Pure over its inputs (the shared {@link AstReflection}
|
|
40
|
+
* and the per-language grammar/meta-data services) so it unit-tests without booting
|
|
41
|
+
* a grammar; {@link reflectGrammar} is the thin boot wrapper.
|
|
42
|
+
*
|
|
43
|
+
* `directSubTypes` is derived by inverting every type's `superTypes` — the runtime
|
|
44
|
+
* reflection only exposes the transitive `getAllSubTypes`, and direct edges make a
|
|
45
|
+
* hierarchy tree buildable without re-deriving it.
|
|
46
|
+
*/
|
|
47
|
+
export function collectGrammarReflection(reflection, languages) {
|
|
48
|
+
const typeNames = [...reflection.getAllTypes()].sort((left, right) => left.localeCompare(right));
|
|
49
|
+
// Invert superTypes → direct subtypes in one pass.
|
|
50
|
+
const directSubTypes = new Map();
|
|
51
|
+
for (const name of typeNames) {
|
|
52
|
+
for (const superType of reflection.getTypeMetaData(name).superTypes) {
|
|
53
|
+
const children = directSubTypes.get(superType) ?? [];
|
|
54
|
+
children.push(name);
|
|
55
|
+
directSubTypes.set(superType, children);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const types = typeNames.map(name => {
|
|
59
|
+
const meta = reflection.getTypeMetaData(name);
|
|
60
|
+
const properties = Object.values(meta.properties)
|
|
61
|
+
.map(property => ({
|
|
62
|
+
name: property.name,
|
|
63
|
+
referenceType: property.referenceType,
|
|
64
|
+
array: Array.isArray(property.defaultValue),
|
|
65
|
+
hasDefault: property.defaultValue !== undefined
|
|
66
|
+
}))
|
|
67
|
+
.sort((left, right) => left.name.localeCompare(right.name));
|
|
68
|
+
return {
|
|
69
|
+
name,
|
|
70
|
+
superTypes: [...meta.superTypes],
|
|
71
|
+
directSubTypes: (directSubTypes.get(name) ?? []).sort((left, right) => left.localeCompare(right)),
|
|
72
|
+
properties
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
languages: languages.map(reflectLanguage),
|
|
77
|
+
types
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Headless grammar/AST reflection — a static snapshot of a head's type system and
|
|
82
|
+
* grammar surface, no workspace build required (the reflection and grammar are
|
|
83
|
+
* available as soon as {@link ReflectGrammarOptions.createServices} registers the
|
|
84
|
+
* language). Boots a head's Langium services in-process, then flattens the shared
|
|
85
|
+
* {@link AstReflection} and every registered language's grammar into a serialisable
|
|
86
|
+
* {@link GrammarReflection}.
|
|
87
|
+
*
|
|
88
|
+
* Backs `hydranium-cli reflect`. Like the other headless harnesses the only
|
|
89
|
+
* language-specific input is the service factory, so the framework code stays
|
|
90
|
+
* head-neutral.
|
|
91
|
+
*/
|
|
92
|
+
export function reflectGrammar(options) {
|
|
93
|
+
const { shared } = options.createServices();
|
|
94
|
+
return collectGrammarReflection(shared.AstReflection, shared.ServiceRegistry.all);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=reflect-grammar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect-grammar.js","sourceRoot":"","sources":["../../src/node/reflect-grammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type LogPreambleOptions } from '../langium/diagnostics/log-preamble.js';
|
|
10
|
+
import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
11
|
+
import { type EventLoopMonitorOptions } from './event-loop-monitor.js';
|
|
12
|
+
import { type MemoryMonitorOptions } from './memory-monitor.js';
|
|
13
|
+
export interface ServerDiagnosticsOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Session-preamble branding + thresholds. The Node runtime/host lines and
|
|
16
|
+
* monitor conventions are added automatically (see {@link nodeLogPreambleSections}),
|
|
17
|
+
* so adopters supply only their branding.
|
|
18
|
+
*/
|
|
19
|
+
preamble: Pick<LogPreambleOptions, 'productName' | 'version' | 'phaseDetailThresholdMs'>;
|
|
20
|
+
/** Emit a one-shot `Initial Memory` line at startup. Default `true`. */
|
|
21
|
+
logInitialMemory?: boolean;
|
|
22
|
+
/** Overrides forwarded verbatim to {@link startEventLoopMonitor}. */
|
|
23
|
+
eventLoop?: EventLoopMonitorOptions;
|
|
24
|
+
/** Overrides forwarded verbatim to {@link startMemoryMonitor}. */
|
|
25
|
+
memory?: MemoryMonitorOptions;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The standard **Node** server-observability bringup: logs the session preamble
|
|
29
|
+
* (with Node runtime lines), an initial memory line, and starts the event-loop +
|
|
30
|
+
* heap monitors. Returns a teardown that stops both monitors.
|
|
31
|
+
*
|
|
32
|
+
* Node-only by nature — it owns the `perf_hooks` / `v8` monitors. A browser
|
|
33
|
+
* server has no such monitors; it just calls the portable
|
|
34
|
+
* {@link logPreamble} directly (no Node sections), so there is no browser
|
|
35
|
+
* counterpart to wrap.
|
|
36
|
+
*
|
|
37
|
+
* Option groups are nested (`preamble` / `eventLoop` / `memory`) and forwarded
|
|
38
|
+
* untouched to each primitive — the primitives stay usable standalone, and the
|
|
39
|
+
* groups avoid colliding on shared field names (e.g. both monitors take an
|
|
40
|
+
* `intervalMs`).
|
|
41
|
+
*/
|
|
42
|
+
export declare function startServerDiagnostics(shared: ServerSharedServicesMinimal, options: ServerDiagnosticsOptions): () => void;
|
|
43
|
+
//# sourceMappingURL=server-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-diagnostics.d.ts","sourceRoot":"","sources":["../../src/node/server-diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,kBAAkB,EAAe,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,KAAK,uBAAuB,EAAyB,MAAM,yBAAyB,CAAC;AAE9F,OAAO,EAAE,KAAK,oBAAoB,EAAsB,MAAM,qBAAqB,CAAC;AAEpF,MAAM,WAAW,wBAAwB;IACtC;;;;OAIG;IACH,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,SAAS,GAAG,wBAAwB,CAAC,CAAC;IACzF,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,kEAAkE;IAClE,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,IAAI,CAiBzH"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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 { logPreamble } from '../langium/diagnostics/log-preamble.js';
|
|
10
|
+
import { startEventLoopMonitor } from './event-loop-monitor.js';
|
|
11
|
+
import { nodeLogPreambleSections } from './log-preamble-node.js';
|
|
12
|
+
import { startMemoryMonitor } from './memory-monitor.js';
|
|
13
|
+
/**
|
|
14
|
+
* The standard **Node** server-observability bringup: logs the session preamble
|
|
15
|
+
* (with Node runtime lines), an initial memory line, and starts the event-loop +
|
|
16
|
+
* heap monitors. Returns a teardown that stops both monitors.
|
|
17
|
+
*
|
|
18
|
+
* Node-only by nature — it owns the `perf_hooks` / `v8` monitors. A browser
|
|
19
|
+
* server has no such monitors; it just calls the portable
|
|
20
|
+
* {@link logPreamble} directly (no Node sections), so there is no browser
|
|
21
|
+
* counterpart to wrap.
|
|
22
|
+
*
|
|
23
|
+
* Option groups are nested (`preamble` / `eventLoop` / `memory`) and forwarded
|
|
24
|
+
* untouched to each primitive — the primitives stay usable standalone, and the
|
|
25
|
+
* groups avoid colliding on shared field names (e.g. both monitors take an
|
|
26
|
+
* `intervalMs`).
|
|
27
|
+
*/
|
|
28
|
+
export function startServerDiagnostics(shared, options) {
|
|
29
|
+
const { productName, version, phaseDetailThresholdMs } = options.preamble;
|
|
30
|
+
logPreamble(shared.Logger.for('LogFormat'), {
|
|
31
|
+
productName,
|
|
32
|
+
version,
|
|
33
|
+
phaseDetailThresholdMs,
|
|
34
|
+
...nodeLogPreambleSections(phaseDetailThresholdMs)
|
|
35
|
+
});
|
|
36
|
+
if (options.logInitialMemory ?? true) {
|
|
37
|
+
shared.Tracer.for('Process').memory('Initial Memory');
|
|
38
|
+
}
|
|
39
|
+
const stopEventLoop = startEventLoopMonitor(shared, options.eventLoop);
|
|
40
|
+
const stopMemory = startMemoryMonitor(shared, options.memory);
|
|
41
|
+
return () => {
|
|
42
|
+
stopEventLoop();
|
|
43
|
+
stopMemory();
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=server-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-diagnostics.js","sourceRoot":"","sources":["../../src/node/server-diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA2B,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAAgC,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAA6B,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAiBpF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmC,EAAE,OAAiC;IAC1G,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC1E,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACzC,WAAW;QACX,OAAO;QACP,sBAAsB;QACtB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC;KACpD,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,GAAG,EAAE;QACT,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;IAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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 LangiumDocuments } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* A document held open by one or more clients, as reported by
|
|
12
|
+
* `HydraniumTextDocuments.openDocuments()` (whose `OpenDocument` entries are
|
|
13
|
+
* structurally assignable). The `uri` is pre-formatted by the caller (canonical
|
|
14
|
+
* URI or a shortened form — the snapshot prints it as given).
|
|
15
|
+
*/
|
|
16
|
+
export interface OpenDocumentEntry {
|
|
17
|
+
readonly uri: string;
|
|
18
|
+
readonly clients: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
/** Default for {@link ServerStateSnapshotOptions.openDocumentsListCap}. */
|
|
21
|
+
export declare const DEFAULT_OPEN_DOCUMENTS_LIST_CAP = 25;
|
|
22
|
+
/** Optional snapshot sections and their tuning knobs. */
|
|
23
|
+
export interface ServerStateSnapshotOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Documents currently held open with the client ids holding them (from
|
|
26
|
+
* `HydraniumTextDocuments.openDocuments()`). When set, the snapshot lists
|
|
27
|
+
* them — the observable for client-release bugs: a document that lingers
|
|
28
|
+
* here after its editor closed names the client that failed to close it,
|
|
29
|
+
* and under a shedding policy it is exactly the set excluded from CST
|
|
30
|
+
* shedding.
|
|
31
|
+
*/
|
|
32
|
+
readonly openDocuments?: readonly OpenDocumentEntry[];
|
|
33
|
+
/**
|
|
34
|
+
* Open-document entries printed individually before the list is elided to
|
|
35
|
+
* `… and N more`. Default {@link DEFAULT_OPEN_DOCUMENTS_LIST_CAP}.
|
|
36
|
+
*/
|
|
37
|
+
readonly openDocumentsListCap?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format a multi-line server-state snapshot — heap, rss, V8 stats, event-loop
|
|
41
|
+
* utilisation, CPU usage, and document counts — and return it. Pure (the caller
|
|
42
|
+
* logs the result, e.g. `tracer.info(formatServerState(...))`), matching
|
|
43
|
+
* `formatProcessMemory` / `formatPodMemory`. Tracks deltas across calls so
|
|
44
|
+
* subsequent snapshots show "since last snapshot" rates. Optional sections are
|
|
45
|
+
* requested via `options` ({@link ServerStateSnapshotOptions}).
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatServerState(documents?: LangiumDocuments, label?: string, options?: ServerStateSnapshotOptions): string;
|
|
48
|
+
//# sourceMappingURL=server-state-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-state-snapshot.d.ts","sourceRoot":"","sources":["../../src/node/server-state-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAa1E;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAElD,yDAAyD;AACzD,MAAM,WAAW,0BAA0B;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,MAAM,CA+E5H"}
|