@hydranium/core 1.0.0-next.32 → 1.0.0-next.321
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/README.md +78 -82
- package/lib/browser/host-heads-in-worker.d.ts +77 -0
- package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
- package/lib/browser/host-heads-in-worker.js +169 -0
- package/lib/browser/host-heads-in-worker.js.map +1 -0
- package/lib/browser/index.d.ts +12 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +17 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
- package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
- package/lib/browser/indexeddb-file-system-store.js +181 -0
- package/lib/browser/indexeddb-file-system-store.js.map +1 -0
- package/lib/browser/start-language-server-in-worker.d.ts +32 -0
- package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
- package/lib/browser/start-language-server-in-worker.js +40 -0
- package/lib/browser/start-language-server-in-worker.js.map +1 -0
- package/lib/documents/ast-document-manager.d.ts +256 -124
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +293 -132
- package/lib/documents/ast-document-manager.js.map +1 -1
- package/lib/documents/client-ids.d.ts +5 -19
- package/lib/documents/client-ids.d.ts.map +1 -1
- package/lib/documents/client-ids.js +5 -19
- package/lib/documents/client-ids.js.map +1 -1
- package/lib/documents/client-session-errors.d.ts +15 -0
- package/lib/documents/client-session-errors.d.ts.map +1 -0
- package/lib/documents/client-session-errors.js +15 -0
- package/lib/documents/client-session-errors.js.map +1 -0
- package/lib/documents/client-session-registry.d.ts +146 -0
- package/lib/documents/client-session-registry.d.ts.map +1 -0
- package/lib/documents/client-session-registry.js +207 -0
- package/lib/documents/client-session-registry.js.map +1 -0
- package/lib/documents/dirty-state-tracker.d.ts +101 -0
- package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
- package/lib/documents/dirty-state-tracker.js +85 -0
- package/lib/documents/dirty-state-tracker.js.map +1 -0
- package/lib/documents/document-release-handler.d.ts +204 -0
- package/lib/documents/document-release-handler.d.ts.map +1 -0
- package/lib/documents/document-release-handler.js +317 -0
- package/lib/documents/document-release-handler.js.map +1 -0
- package/lib/documents/document-release-scheduler.d.ts +67 -0
- package/lib/documents/document-release-scheduler.d.ts.map +1 -0
- package/lib/documents/document-release-scheduler.js +80 -0
- package/lib/documents/document-release-scheduler.js.map +1 -0
- package/lib/documents/file-system-task-queue.d.ts +52 -0
- package/lib/documents/file-system-task-queue.d.ts.map +1 -0
- package/lib/documents/file-system-task-queue.js +37 -0
- package/lib/documents/file-system-task-queue.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +436 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +886 -483
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +10 -2
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +10 -2
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/language-client-shadow.d.ts +234 -0
- package/lib/documents/language-client-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-shadow.js +306 -0
- package/lib/documents/language-client-shadow.js.map +1 -0
- package/lib/documents/model-ledger.d.ts +47 -0
- package/lib/documents/model-ledger.d.ts.map +1 -0
- package/lib/documents/model-ledger.js +30 -0
- package/lib/documents/model-ledger.js.map +1 -0
- package/lib/documents/text-ledger.d.ts +64 -0
- package/lib/documents/text-ledger.d.ts.map +1 -0
- package/lib/documents/text-ledger.js +63 -0
- package/lib/documents/text-ledger.js.map +1 -0
- package/lib/documents/version-sync-service.d.ts +138 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +173 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
- package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.js +45 -19
- package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
- package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.js +25 -9
- package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
- package/lib/langium/bootstrap.d.ts +49 -36
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +83 -44
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
- package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
- package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
- package/lib/langium/composite-ast-reflection.d.ts +46 -0
- package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
- package/lib/langium/composite-ast-reflection.js +97 -0
- package/lib/langium/composite-ast-reflection.js.map +1 -0
- package/lib/langium/config/configuration-provider.d.ts +81 -0
- package/lib/langium/config/configuration-provider.d.ts.map +1 -0
- package/lib/langium/config/configuration-provider.js +112 -0
- package/lib/langium/config/configuration-provider.js.map +1 -0
- package/lib/langium/config/index.d.ts +1 -0
- package/lib/langium/config/index.d.ts.map +1 -1
- package/lib/langium/config/index.js +1 -0
- package/lib/langium/config/index.js.map +1 -1
- package/lib/langium/config/settings.js.map +1 -1
- package/lib/langium/diagnostics/console-tee.d.ts +27 -0
- package/lib/langium/diagnostics/console-tee.d.ts.map +1 -0
- package/lib/langium/diagnostics/console-tee.js +142 -0
- package/lib/langium/diagnostics/console-tee.js.map +1 -0
- package/lib/langium/diagnostics/format-log-arg.d.ts +18 -0
- package/lib/langium/diagnostics/format-log-arg.d.ts.map +1 -0
- package/lib/langium/diagnostics/format-log-arg.js +36 -0
- package/lib/langium/diagnostics/format-log-arg.js.map +1 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/log-preamble.js +1 -1
- package/lib/langium/diagnostics/log-preamble.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +25 -6
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +49 -17
- package/lib/langium/diagnostics/logger.js.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +68 -45
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
- package/lib/langium/diagnostics/server-tracer.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/build-session.d.ts +6 -5
- package/lib/langium/document-builder/build-session.d.ts.map +1 -1
- package/lib/langium/document-builder/build-session.js +5 -5
- package/lib/langium/document-builder/build-session.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +283 -41
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +448 -78
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
- package/lib/langium/documentation/comment-provider.js.map +1 -1
- package/lib/langium/integration-services.d.ts +40 -24
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +7 -4
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +17 -8
- package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-rule.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +95 -27
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +303 -63
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/containment.d.ts +64 -0
- package/lib/langium/keys/containment.d.ts.map +1 -0
- package/lib/langium/keys/containment.js +53 -0
- package/lib/langium/keys/containment.js.map +1 -0
- package/lib/langium/keys/index.d.ts +1 -0
- package/lib/langium/keys/index.d.ts.map +1 -1
- package/lib/langium/keys/index.js +1 -0
- package/lib/langium/keys/index.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +4 -0
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +18 -4
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +383 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +455 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +2 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +2 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-events.d.ts +66 -0
- package/lib/langium/model-service/model-events.d.ts.map +1 -0
- package/lib/langium/model-service/model-events.js +10 -0
- package/lib/langium/model-service/model-events.js.map +1 -0
- package/lib/langium/model-service/model-service.d.ts +455 -290
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +571 -458
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +141 -40
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +52 -40
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +32 -7
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +10 -4
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +13 -6
- package/lib/langium/project/abstract-project-manager.js.map +1 -1
- package/lib/langium/project/project-change-event.d.ts +2 -2
- package/lib/langium/project/single-project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts +38 -14
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +24 -58
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
- package/lib/langium/scope/fallback-scope.d.ts +27 -0
- package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
- package/lib/langium/scope/fallback-scope.js +35 -0
- package/lib/langium/scope/fallback-scope.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js +38 -39
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +29 -11
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +37 -15
- package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
- package/lib/langium/scope/index.d.ts +1 -0
- package/lib/langium/scope/index.d.ts.map +1 -1
- package/lib/langium/scope/index.js +1 -0
- package/lib/langium/scope/index.js.map +1 -1
- package/lib/langium/scope/reference-builder.d.ts.map +1 -1
- package/lib/langium/scope/reference-builder.js.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
- package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.js +3 -2
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
- package/lib/langium/scope/scope-extension-service.d.ts +41 -37
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js +57 -29
- package/lib/langium/scope/scope-extension-service.js.map +1 -1
- package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
- package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
- package/lib/langium/scope/scoped-ast-node-description.js +1 -3
- package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
- package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/abstract-serializer.js +54 -30
- package/lib/langium/serialization/abstract-serializer.js.map +1 -1
- package/lib/langium/serialization/json-serializer.d.ts +8 -1
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/json-serializer.js +13 -3
- package/lib/langium/serialization/json-serializer.js.map +1 -1
- package/lib/langium/serialization/serializer.d.ts +1 -1
- package/lib/langium/serialization/yaml-serializer.d.ts +4 -0
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/yaml-serializer.js +4 -0
- package/lib/langium/serialization/yaml-serializer.js.map +1 -1
- package/lib/langium/service-registry.d.ts +29 -1
- package/lib/langium/service-registry.d.ts.map +1 -1
- package/lib/langium/service-registry.js +37 -0
- package/lib/langium/service-registry.js.map +1 -1
- package/lib/langium/shared-services.d.ts +13 -7
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/shared-services.js.map +1 -1
- package/lib/langium/single-langium-copy.d.ts +22 -0
- package/lib/langium/single-langium-copy.d.ts.map +1 -0
- package/lib/langium/single-langium-copy.js +36 -0
- package/lib/langium/single-langium-copy.js.map +1 -0
- package/lib/langium/transfer/transfer-encoder.d.ts +86 -37
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +36 -25
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/langium/trivia/comment-preserver.d.ts +423 -0
- package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/comment-preserver.js +906 -0
- package/lib/langium/trivia/comment-preserver.js.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +62 -0
- package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
- package/lib/langium/trivia/index.d.ts +14 -0
- package/lib/langium/trivia/index.d.ts.map +1 -0
- package/lib/langium/trivia/index.js +14 -0
- package/lib/langium/trivia/index.js.map +1 -0
- package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
- package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-contribution.js +10 -0
- package/lib/langium/trivia/trivia-contribution.js.map +1 -0
- package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
- package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-preserver.js +10 -0
- package/lib/langium/trivia/trivia-preserver.js.map +1 -0
- package/lib/langium/trivia/trivia-service.d.ts +70 -0
- package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-service.js +56 -0
- package/lib/langium/trivia/trivia-service.js.map +1 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/validation/document-validator.d.ts +216 -10
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +353 -8
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.js +1 -1
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
- package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +22 -13
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-not-found.d.ts +23 -0
- package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
- package/lib/langium/workspace/file-not-found.js +31 -0
- package/lib/langium/workspace/file-not-found.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +167 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +115 -13
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +113 -21
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +197 -31
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
- package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/index-manager.d.ts.map +1 -1
- package/lib/langium/workspace/index-manager.js.map +1 -1
- package/lib/langium/workspace/index.d.ts +1 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +1 -0
- package/lib/langium/workspace/index.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +68 -3
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +7 -0
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +18 -1
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/self-save-registry.d.ts +84 -0
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +55 -21
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +87 -24
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +15 -5
- package/lib/langium/workspace/write-lock-scope.js.map +1 -1
- package/lib/launcher/integrated-server.d.ts +3 -1
- package/lib/launcher/integrated-server.d.ts.map +1 -1
- package/lib/locale/server-locale.d.ts +29 -5
- package/lib/locale/server-locale.d.ts.map +1 -1
- package/lib/locale/server-locale.js +12 -2
- package/lib/locale/server-locale.js.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
- package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
- package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
- package/lib/lsp/connection-features.d.ts +23 -0
- package/lib/lsp/connection-features.d.ts.map +1 -0
- package/lib/lsp/connection-features.js +60 -0
- package/lib/lsp/connection-features.js.map +1 -0
- package/lib/lsp/diagnostics-connection.d.ts +27 -0
- package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
- package/lib/lsp/diagnostics-connection.js +53 -0
- package/lib/lsp/diagnostics-connection.js.map +1 -0
- package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +235 -102
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/lsp/index.d.ts +4 -1
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +4 -1
- package/lib/lsp/index.js.map +1 -1
- package/lib/lsp/lsp-latency.d.ts +39 -0
- package/lib/lsp/lsp-latency.d.ts.map +1 -0
- package/lib/lsp/lsp-latency.js +58 -0
- package/lib/lsp/lsp-latency.js.map +1 -0
- package/lib/lsp/save-text-document.d.ts +31 -0
- package/lib/lsp/save-text-document.d.ts.map +1 -0
- package/lib/lsp/save-text-document.js +52 -0
- package/lib/lsp/save-text-document.js.map +1 -0
- package/lib/lsp/semantic-token-provider.d.ts +34 -1
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
- package/lib/lsp/semantic-token-provider.js +55 -8
- package/lib/lsp/semantic-token-provider.js.map +1 -1
- package/lib/lsp/shared-module.d.ts +4 -8
- package/lib/lsp/shared-module.d.ts.map +1 -1
- package/lib/lsp/shared-module.js.map +1 -1
- package/lib/lsp/start-language-server.d.ts +11 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +18 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +11 -6
- package/lib/messages/carriers.d.ts.map +1 -1
- package/lib/messages/carriers.js +14 -6
- package/lib/messages/carriers.js.map +1 -1
- package/lib/messages/index.d.ts +2 -2
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +2 -2
- package/lib/messages/index.js.map +1 -1
- package/lib/messages/renderer.d.ts +32 -7
- package/lib/messages/renderer.d.ts.map +1 -1
- package/lib/messages/renderer.js +7 -1
- package/lib/messages/renderer.js.map +1 -1
- package/lib/node/event-loop-monitor.d.ts.map +1 -1
- package/lib/node/event-loop-monitor.js +2 -1
- package/lib/node/event-loop-monitor.js.map +1 -1
- package/lib/node/heap-ceiling.d.ts +61 -0
- package/lib/node/heap-ceiling.d.ts.map +1 -0
- package/lib/node/heap-ceiling.js +72 -0
- package/lib/node/heap-ceiling.js.map +1 -0
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +5 -1
- package/lib/node/index.js.map +1 -1
- package/lib/node/latency-from-env.d.ts +1 -1
- package/lib/node/latency-from-env.js +1 -1
- package/lib/node/lint-grammar.js.map +1 -1
- package/lib/node/log-file-sink.d.ts +3 -2
- package/lib/node/log-file-sink.d.ts.map +1 -1
- package/lib/node/log-file-sink.js +6 -2
- package/lib/node/log-file-sink.js.map +1 -1
- package/lib/node/log-preamble-node.d.ts +5 -3
- package/lib/node/log-preamble-node.d.ts.map +1 -1
- package/lib/node/log-preamble-node.js +13 -10
- package/lib/node/log-preamble-node.js.map +1 -1
- package/lib/node/measure-memory.d.ts.map +1 -1
- package/lib/node/measure-memory.js +5 -4
- package/lib/node/measure-memory.js.map +1 -1
- package/lib/node/memory-monitor.d.ts +2 -2
- package/lib/node/memory-monitor.d.ts.map +1 -1
- package/lib/node/memory-monitor.js +9 -10
- package/lib/node/memory-monitor.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +67 -9
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +198 -53
- package/lib/node/node-file-system-provider.js.map +1 -1
- package/lib/node/profile-capture.d.ts +12 -4
- package/lib/node/profile-capture.d.ts.map +1 -1
- package/lib/node/profile-capture.js +8 -6
- package/lib/node/profile-capture.js.map +1 -1
- package/lib/node/profile-digest.js.map +1 -1
- package/lib/node/profiling-run.d.ts +13 -3
- package/lib/node/profiling-run.d.ts.map +1 -1
- package/lib/node/profiling-run.js +17 -8
- package/lib/node/profiling-run.js.map +1 -1
- package/lib/node/rename-over-open-readers.d.ts +61 -0
- package/lib/node/rename-over-open-readers.d.ts.map +1 -0
- package/lib/node/rename-over-open-readers.js +80 -0
- package/lib/node/rename-over-open-readers.js.map +1 -0
- package/lib/node/server-diagnostics.js +1 -1
- package/lib/node/server-diagnostics.js.map +1 -1
- package/lib/node/server-state-snapshot.js +4 -4
- package/lib/node/server-state-snapshot.js.map +1 -1
- package/lib/node/socket-launcher.d.ts +43 -7
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +42 -7
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/startup-cpu-profile.d.ts +29 -0
- package/lib/node/startup-cpu-profile.d.ts.map +1 -0
- package/lib/node/startup-cpu-profile.js +91 -0
- package/lib/node/startup-cpu-profile.js.map +1 -0
- package/lib/node/stdio-launcher.d.ts +13 -13
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +21 -11
- package/lib/node/stdio-launcher.js.map +1 -1
- package/lib/testing/document-uri-policy-conformance.js +1 -1
- package/lib/testing/document-uri-policy-conformance.js.map +1 -1
- package/lib/testing/fake-description.js.map +1 -1
- package/lib/testing/fake-document.d.ts +2 -1
- package/lib/testing/fake-document.d.ts.map +1 -1
- package/lib/testing/fake-document.js.map +1 -1
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.d.ts.map +1 -1
- package/lib/testing/index.js +2 -1
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/langium-test-helpers.d.ts.map +1 -1
- package/lib/testing/langium-test-helpers.js +1 -0
- package/lib/testing/langium-test-helpers.js.map +1 -1
- package/lib/testing/make-noop-language-services.js.map +1 -1
- package/lib/testing/make-noop-shared-services.d.ts +4 -4
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +4 -4
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +51 -20
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +29 -13
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/make-test-tracer.d.ts +12 -0
- package/lib/testing/make-test-tracer.d.ts.map +1 -1
- package/lib/testing/make-test-tracer.js +13 -0
- package/lib/testing/make-test-tracer.js.map +1 -1
- package/lib/testing/node/applied-edit-capture.d.ts +29 -0
- package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
- package/lib/testing/node/applied-edit-capture.js +117 -0
- package/lib/testing/node/applied-edit-capture.js.map +1 -0
- package/lib/testing/node/golden-corpus.js.map +1 -1
- package/lib/testing/node/index.d.ts +1 -0
- package/lib/testing/node/index.d.ts.map +1 -1
- package/lib/testing/node/index.js +1 -0
- package/lib/testing/node/index.js.map +1 -1
- package/lib/testing/node/lsp-harness.d.ts.map +1 -1
- package/lib/testing/node/lsp-harness.js +2 -0
- package/lib/testing/node/lsp-harness.js.map +1 -1
- package/lib/testing/node/lsp-server-connection.d.ts +21 -6
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +49 -106
- package/lib/testing/node/lsp-server-connection.js.map +1 -1
- package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
- package/lib/testing/node/scratch-workspace.js +10 -5
- package/lib/testing/node/scratch-workspace.js.map +1 -1
- package/lib/testing/node/spawned-server.d.ts +30 -1
- package/lib/testing/node/spawned-server.d.ts.map +1 -1
- package/lib/testing/node/spawned-server.js +39 -2
- package/lib/testing/node/spawned-server.js.map +1 -1
- package/lib/testing/node/unhandled-rejections.d.ts +20 -0
- package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
- package/lib/testing/node/unhandled-rejections.js +32 -0
- package/lib/testing/node/unhandled-rejections.js.map +1 -0
- package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
- package/lib/testing/playwright/e2e-profiling.js.map +1 -1
- package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
- package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
- package/lib/testing/playwright/flaky-network-proxy.js +164 -0
- package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
- package/lib/testing/playwright/index.d.ts +1 -0
- package/lib/testing/playwright/index.d.ts.map +1 -1
- package/lib/testing/playwright/index.js +1 -0
- package/lib/testing/playwright/index.js.map +1 -1
- package/lib/testing/playwright/server-log-capture.d.ts +46 -16
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +111 -40
- package/lib/testing/playwright/server-log-capture.js.map +1 -1
- package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
- package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-fixture.js +25 -6
- package/lib/testing/playwright/server-log-fixture.js.map +1 -1
- package/lib/testing/playwright/server-log-region.d.ts +15 -0
- package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
- package/lib/testing/playwright/server-log-region.js +30 -0
- package/lib/testing/playwright/server-log-region.js.map +1 -0
- package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
- package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
- package/lib/testing/run-update-pipeline.d.ts +8 -5
- package/lib/testing/run-update-pipeline.d.ts.map +1 -1
- package/lib/testing/run-update-pipeline.js.map +1 -1
- package/lib/testing/stub-ast-document-manager.d.ts +11 -52
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +31 -62
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +33 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +103 -5
- package/lib/testing/stub-document-builder.js.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.js +132 -16
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
- package/lib/testing/stub-index-manager.js.map +1 -1
- package/lib/testing/stub-langium-documents.d.ts +3 -2
- package/lib/testing/stub-langium-documents.d.ts.map +1 -1
- package/lib/testing/stub-langium-documents.js.map +1 -1
- package/lib/testing/stub-model-service.d.ts +9 -8
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +6 -6
- package/lib/testing/stub-model-service.js.map +1 -1
- package/lib/testing/stub-project-manager.js.map +1 -1
- package/lib/testing/stub-self-save-registry.d.ts +1 -1
- package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
- package/lib/testing/stub-service-registry.d.ts +1 -1
- package/lib/testing/stub-service-registry.js.map +1 -1
- package/lib/testing/stub-writable-file-system.d.ts +1 -1
- package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
- package/lib/testing/stub-writable-file-system.js +2 -1
- package/lib/testing/stub-writable-file-system.js.map +1 -1
- package/lib/util/connection-liveness.d.ts +22 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +74 -15
- package/lib/util/connection-liveness.js.map +1 -1
- package/lib/util/environment.d.ts +7 -0
- package/lib/util/environment.d.ts.map +1 -1
- package/lib/util/environment.js +15 -1
- package/lib/util/environment.js.map +1 -1
- package/lib/util/registry.d.ts.map +1 -1
- package/package.json +39 -58
- package/src/browser/host-heads-in-worker.ts +218 -0
- package/src/browser/index.ts +17 -0
- package/src/browser/indexeddb-file-system-store.ts +192 -0
- package/src/browser/start-language-server-in-worker.ts +56 -0
- package/src/documents/ast-document-manager.ts +467 -233
- package/src/documents/client-ids.ts +5 -22
- package/src/documents/client-session-errors.ts +24 -0
- package/src/documents/client-session-registry.ts +262 -0
- package/src/documents/dirty-state-tracker.ts +167 -0
- package/src/documents/document-release-handler.ts +404 -0
- package/src/documents/document-release-scheduler.ts +121 -0
- package/src/documents/file-system-task-queue.ts +74 -0
- package/src/documents/hydranium-text-documents.ts +1011 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +501 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/text-ledger.ts +112 -0
- package/src/documents/version-sync-service.ts +275 -0
- package/src/index.ts +7 -0
- package/src/langium/ast-extension/ast-extension-service.ts +77 -41
- package/src/langium/ast-extension/ast-node-builder.ts +35 -13
- package/src/langium/bootstrap.ts +87 -51
- package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
- package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
- package/src/langium/composite-ast-reflection.ts +112 -0
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/console-tee.ts +151 -0
- package/src/langium/diagnostics/format-log-arg.ts +36 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +51 -17
- package/src/langium/diagnostics/lsp-logger.ts +70 -44
- package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
- package/src/langium/document-builder/build-session.ts +4 -3
- package/src/langium/document-builder/document-builder.ts +553 -78
- package/src/langium/integration-services.ts +59 -28
- package/src/langium/integrity/integrity-rule.ts +17 -8
- package/src/langium/integrity/integrity-service.ts +332 -69
- package/src/langium/keys/containment.ts +87 -0
- package/src/langium/keys/index.ts +1 -0
- package/src/langium/keys/name-based-key-provider.ts +4 -0
- package/src/langium/language-module.ts +49 -8
- package/src/langium/model-service/client-session.ts +718 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +80 -0
- package/src/langium/model-service/model-service.ts +878 -486
- package/src/langium/module.ts +195 -72
- package/src/langium/naming/name-provider.ts +34 -8
- package/src/langium/project/abstract-project-manager.ts +13 -5
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +54 -19
- package/src/langium/scope/fallback-scope.ts +38 -0
- package/src/langium/scope/hydranium-scope-computation.ts +45 -44
- package/src/langium/scope/hydranium-scope-provider.ts +49 -16
- package/src/langium/scope/index.ts +1 -0
- package/src/langium/scope/reference-candidate-provider.ts +6 -5
- package/src/langium/scope/scope-extension-service.ts +74 -59
- package/src/langium/scope/scoped-ast-node-description.ts +1 -3
- package/src/langium/serialization/abstract-serializer.ts +57 -41
- package/src/langium/serialization/json-serializer.ts +14 -3
- package/src/langium/serialization/serializer.ts +1 -1
- package/src/langium/serialization/yaml-serializer.ts +4 -0
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +16 -7
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +104 -47
- package/src/langium/trivia/comment-preserver.ts +1100 -0
- package/src/langium/trivia/document-ending-preserver.ts +71 -0
- package/src/langium/trivia/index.ts +14 -0
- package/src/langium/trivia/trivia-contribution.ts +39 -0
- package/src/langium/trivia/trivia-preserver.ts +56 -0
- package/src/langium/trivia/trivia-service.ts +99 -0
- package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +411 -12
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/document-uri-policy.ts +32 -18
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +258 -16
- package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +224 -35
- package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
- package/src/langium/workspace/index.ts +1 -0
- package/src/langium/workspace/initialize-workspace.ts +96 -4
- package/src/langium/workspace/langium-documents.ts +19 -1
- package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
- package/src/langium/workspace/self-save-registry.ts +118 -0
- package/src/langium/workspace/virtual-document.ts +106 -25
- package/src/langium/workspace/write-lock-scope.ts +27 -12
- package/src/launcher/integrated-server.ts +3 -1
- package/src/locale/server-locale.ts +31 -6
- package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
- package/src/lsp/connection-features.ts +67 -0
- package/src/lsp/diagnostics-connection.ts +56 -0
- package/src/lsp/hydranium-document-update-handler.ts +285 -111
- package/src/lsp/index.ts +4 -1
- package/src/lsp/lsp-latency.ts +62 -0
- package/src/lsp/save-text-document.ts +63 -0
- package/src/lsp/semantic-token-provider.ts +74 -7
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +18 -7
- package/src/messages/carriers.ts +15 -7
- package/src/messages/index.ts +11 -2
- package/src/messages/renderer.ts +34 -6
- package/src/node/event-loop-monitor.ts +2 -1
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +5 -1
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/log-file-sink.ts +6 -2
- package/src/node/log-preamble-node.ts +20 -10
- package/src/node/measure-memory.ts +5 -4
- package/src/node/memory-monitor.ts +10 -10
- package/src/node/node-file-system-provider.ts +214 -57
- package/src/node/profile-capture.ts +16 -15
- package/src/node/profiling-run.ts +30 -8
- package/src/node/rename-over-open-readers.ts +94 -0
- package/src/node/server-diagnostics.ts +1 -1
- package/src/node/server-state-snapshot.ts +5 -5
- package/src/node/socket-launcher.ts +78 -14
- package/src/node/startup-cpu-profile.ts +94 -0
- package/src/node/stdio-launcher.ts +29 -19
- package/src/testing/document-uri-policy-conformance.ts +1 -1
- package/src/testing/fake-document.ts +2 -1
- package/src/testing/index.ts +2 -1
- package/src/testing/langium-test-helpers.ts +1 -0
- package/src/testing/make-noop-shared-services.ts +6 -6
- package/src/testing/make-test-services.ts +93 -41
- package/src/testing/make-test-tracer.ts +26 -0
- package/src/testing/node/applied-edit-capture.ts +141 -0
- package/src/testing/node/index.ts +1 -0
- package/src/testing/node/lsp-harness.ts +2 -0
- package/src/testing/node/lsp-server-connection.ts +83 -119
- package/src/testing/node/scratch-workspace.ts +10 -5
- package/src/testing/node/spawned-server.ts +57 -3
- package/src/testing/node/unhandled-rejections.ts +31 -0
- package/src/testing/parse-semantic-root.ts +1 -1
- package/src/testing/playwright/flaky-network-proxy.ts +240 -0
- package/src/testing/playwright/index.ts +1 -0
- package/src/testing/playwright/server-log-capture.ts +137 -47
- package/src/testing/playwright/server-log-fixture.ts +46 -6
- package/src/testing/playwright/server-log-region.ts +32 -0
- package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
- package/src/testing/run-update-pipeline.ts +8 -5
- package/src/testing/stub-ast-document-manager.ts +47 -128
- package/src/testing/stub-document-builder.ts +133 -18
- package/src/testing/stub-hydranium-text-documents.ts +184 -27
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +11 -10
- package/src/testing/stub-self-save-registry.ts +1 -1
- package/src/testing/stub-service-registry.ts +1 -1
- package/src/testing/stub-writable-file-system.ts +3 -2
- package/src/util/connection-liveness.ts +80 -15
- package/src/util/environment.ts +24 -2
- package/lib/documents/language-client-text-shadow.d.ts +0 -101
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -156
- package/lib/documents/language-client-text-shadow.js.map +0 -1
- package/lib/documents/self-save-registry.d.ts +0 -55
- package/lib/documents/self-save-registry.d.ts.map +0 -1
- package/lib/documents/self-save-registry.js.map +0 -1
- package/lib/lsp/instrument-connection.d.ts +0 -36
- package/lib/lsp/instrument-connection.d.ts.map +0 -1
- package/lib/lsp/instrument-connection.js +0 -62
- package/lib/lsp/instrument-connection.js.map +0 -1
- package/lib/node/process-memory.d.ts +0 -66
- package/lib/node/process-memory.d.ts.map +0 -1
- package/lib/node/process-memory.js +0 -252
- package/lib/node/process-memory.js.map +0 -1
- package/src/documents/language-client-text-shadow.ts +0 -175
- package/src/documents/self-save-registry.ts +0 -81
- package/src/lsp/instrument-connection.ts +0 -66
- package/src/node/process-memory.ts +0 -299
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { Deferred } from '@hydranium/langium';
|
|
10
9
|
import * as net from 'node:net';
|
|
10
|
+
import { Deferred, describeError, describeErrorWithStack } from '@hydranium/protocol';
|
|
11
11
|
import { createMessageConnection, SocketMessageReader, SocketMessageWriter } from 'vscode-jsonrpc/node';
|
|
12
|
+
import { initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
|
|
12
13
|
/**
|
|
13
14
|
* Start a socket-based protocol head. Wraps `net.createServer` with the
|
|
14
15
|
* boilerplate adopters used to write per-head: address resolution,
|
|
@@ -22,12 +23,17 @@ import { createMessageConnection, SocketMessageReader, SocketMessageWriter } fro
|
|
|
22
23
|
* close / server shutdown. Adopters keep per-client instance creation
|
|
23
24
|
* (their server objects) but don't re-implement the tracking machinery.
|
|
24
25
|
*
|
|
26
|
+
* **Without an LSP head the launcher brings the workspace up, then
|
|
27
|
+
* listens**, as `startStdioServer` does: a request served before the
|
|
28
|
+
* bring-up starts keeps its cross-file references unresolved for good.
|
|
29
|
+
*
|
|
25
30
|
* The port is only known once {@link StartedSocketServer.started} has
|
|
26
31
|
* resolved, so announcing it — via {@link publishPortOnLspConnection} —
|
|
27
32
|
* belongs after that await, not beside the call.
|
|
28
33
|
*/
|
|
29
34
|
export function startSocketServer(options, onClientConnection) {
|
|
30
35
|
const port = options.port ?? 0;
|
|
36
|
+
const host = options.host ?? '127.0.0.1';
|
|
31
37
|
const logger = options.logger;
|
|
32
38
|
const tag = options.logTag ?? 'SocketServer';
|
|
33
39
|
const started = new Deferred();
|
|
@@ -38,7 +44,7 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
38
44
|
// (so shutdown drains both at once).
|
|
39
45
|
const activeConnections = [];
|
|
40
46
|
const netServer = net.createServer(socket => {
|
|
41
|
-
const connection = createMessageConnection(new SocketMessageReader(socket), new SocketMessageWriter(socket));
|
|
47
|
+
const connection = createMessageConnection(new SocketMessageReader(socket), new SocketMessageWriter(socket), logger?.with(tag));
|
|
42
48
|
const adopterDisposable = onClientConnection(connection);
|
|
43
49
|
const entry = { connection, adopterDisposable };
|
|
44
50
|
activeConnections.push(entry);
|
|
@@ -54,7 +60,7 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
54
60
|
adopterDisposable.dispose();
|
|
55
61
|
}
|
|
56
62
|
catch (err) {
|
|
57
|
-
logger?.warn(`[${tag}] Adopter disposable threw on cleanup: ${err
|
|
63
|
+
logger?.warn(`[${tag}] Adopter disposable threw on cleanup: ${describeErrorWithStack(err)}`);
|
|
58
64
|
}
|
|
59
65
|
connection.dispose();
|
|
60
66
|
const idx = activeConnections.indexOf(entry);
|
|
@@ -66,7 +72,35 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
66
72
|
connection.onClose(() => dispose());
|
|
67
73
|
connection.listen();
|
|
68
74
|
});
|
|
69
|
-
|
|
75
|
+
// The workspace manager logs a failed initialization itself; a refused
|
|
76
|
+
// `workspace` throws before `initializing` is set.
|
|
77
|
+
let initializing = false;
|
|
78
|
+
let closed = false;
|
|
79
|
+
const begin = async () => {
|
|
80
|
+
const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
|
|
81
|
+
initializing = true;
|
|
82
|
+
await initialization;
|
|
83
|
+
initializing = false;
|
|
84
|
+
// A `close` during the bring-up has resolved `stopped` already.
|
|
85
|
+
if (closed) {
|
|
86
|
+
started.reject(new Error(`${tag} was closed before it listened`));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
netServer.listen(port, host);
|
|
90
|
+
};
|
|
91
|
+
begin().catch((err) => {
|
|
92
|
+
if (initializing) {
|
|
93
|
+
logger?.debug(`[${tag}] Startup failed: the workspace did not initialize. ${describeError(err)}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
logger?.error(`[${tag}] Startup failed: ${describeErrorWithStack(err)}`);
|
|
97
|
+
}
|
|
98
|
+
started.reject(err);
|
|
99
|
+
stopped.resolve();
|
|
100
|
+
});
|
|
101
|
+
// `started` is always observed internally, as `startStdioServer`'s is, so a
|
|
102
|
+
// caller that closes early and ignores it cannot crash the process.
|
|
103
|
+
void started.promise.catch(() => undefined);
|
|
70
104
|
netServer.on('listening', () => {
|
|
71
105
|
const addressInfo = netServer.address();
|
|
72
106
|
if (!addressInfo) {
|
|
@@ -82,11 +116,11 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
82
116
|
return;
|
|
83
117
|
}
|
|
84
118
|
handle.port = addressInfo.port;
|
|
85
|
-
logger?.info(`[${tag}] Ready to accept new client requests on port: ${addressInfo.port}`);
|
|
119
|
+
logger?.info(`[${tag}] Ready to accept new client requests on ${addressInfo.address} port: ${addressInfo.port}`);
|
|
86
120
|
started.resolve();
|
|
87
121
|
});
|
|
88
122
|
netServer.on('error', err => {
|
|
89
|
-
logger?.error(`[${tag}] Error: ${err
|
|
123
|
+
logger?.error(`[${tag}] Error: ${describeErrorWithStack(err)}`);
|
|
90
124
|
started.reject(err);
|
|
91
125
|
});
|
|
92
126
|
netServer.on('close', () => {
|
|
@@ -97,7 +131,7 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
97
131
|
entry.adopterDisposable.dispose();
|
|
98
132
|
}
|
|
99
133
|
catch (err) {
|
|
100
|
-
logger?.warn(`[${tag}] Adopter disposable threw on shutdown: ${err
|
|
134
|
+
logger?.warn(`[${tag}] Adopter disposable threw on shutdown: ${describeErrorWithStack(err)}`);
|
|
101
135
|
}
|
|
102
136
|
entry.connection.dispose();
|
|
103
137
|
}
|
|
@@ -111,6 +145,7 @@ export function startSocketServer(options, onClientConnection) {
|
|
|
111
145
|
started: started.promise,
|
|
112
146
|
stopped: stopped.promise,
|
|
113
147
|
close() {
|
|
148
|
+
closed = true;
|
|
114
149
|
netServer.close();
|
|
115
150
|
}
|
|
116
151
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-launcher.js","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,
|
|
1
|
+
{"version":3,"file":"socket-launcher.js","sourceRoot":"","sources":["../../src/node/socket-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 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
|
+
* Start profiling this process when {@link DEFAULT_CPU_PROFILE_FILE_ENV} is
|
|
11
|
+
* set, and write the profile once, on `exit` or on SIGTERM. Called when
|
|
12
|
+
* `@hydranium/core/node` loads, so every Node head is profiled from before its
|
|
13
|
+
* workspace load; a no-op on a second call, from any copy of the package, and
|
|
14
|
+
* in a `worker_threads` worker.
|
|
15
|
+
*
|
|
16
|
+
* `--cpu-prof` is no substitute: it writes only on a normal exit, and SIGTERM
|
|
17
|
+
* ends a process without one. The SIGTERM listener re-raises the signal when it
|
|
18
|
+
* is the only one, so the process still ends by it; another listener keeps
|
|
19
|
+
* control of the ending. Samples accumulate for the life of the process, so
|
|
20
|
+
* this is for test runs, not a production server.
|
|
21
|
+
*
|
|
22
|
+
* A head in a worker is not profiled: a worker's session would write the main
|
|
23
|
+
* thread's file, since threads share the pid, no signal reaches it, and its
|
|
24
|
+
* `exit` listeners run neither when it is terminated nor when the process ends.
|
|
25
|
+
*
|
|
26
|
+
* A `ProfileCapture` window runs beside it in its own inspector session.
|
|
27
|
+
*/
|
|
28
|
+
export declare function startCpuProfileFromEnv(): void;
|
|
29
|
+
//# sourceMappingURL=startup-cpu-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-cpu-profile.d.ts","sourceRoot":"","sources":["../../src/node/startup-cpu-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAiBlF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAkD7C"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 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 { DEFAULT_CPU_PROFILE_FILE_ENV } from '@hydranium/protocol';
|
|
10
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { Session } from 'node:inspector';
|
|
12
|
+
import { dirname } from 'node:path';
|
|
13
|
+
import { isMainThread } from 'node:worker_threads';
|
|
14
|
+
import { expandLogFilePlaceholders } from '../langium/diagnostics/logger.js';
|
|
15
|
+
/**
|
|
16
|
+
* Marks the profile started on `globalThis` rather than in this module, since
|
|
17
|
+
* a second installed copy of the package loads its own module and would start
|
|
18
|
+
* a second session writing a profile of its own.
|
|
19
|
+
*/
|
|
20
|
+
const CPU_PROFILE_STARTED = Symbol.for('@hydranium/core#startupCpuProfileStarted');
|
|
21
|
+
const processGlobal = globalThis;
|
|
22
|
+
/**
|
|
23
|
+
* Start profiling this process when {@link DEFAULT_CPU_PROFILE_FILE_ENV} is
|
|
24
|
+
* set, and write the profile once, on `exit` or on SIGTERM. Called when
|
|
25
|
+
* `@hydranium/core/node` loads, so every Node head is profiled from before its
|
|
26
|
+
* workspace load; a no-op on a second call, from any copy of the package, and
|
|
27
|
+
* in a `worker_threads` worker.
|
|
28
|
+
*
|
|
29
|
+
* `--cpu-prof` is no substitute: it writes only on a normal exit, and SIGTERM
|
|
30
|
+
* ends a process without one. The SIGTERM listener re-raises the signal when it
|
|
31
|
+
* is the only one, so the process still ends by it; another listener keeps
|
|
32
|
+
* control of the ending. Samples accumulate for the life of the process, so
|
|
33
|
+
* this is for test runs, not a production server.
|
|
34
|
+
*
|
|
35
|
+
* A head in a worker is not profiled: a worker's session would write the main
|
|
36
|
+
* thread's file, since threads share the pid, no signal reaches it, and its
|
|
37
|
+
* `exit` listeners run neither when it is terminated nor when the process ends.
|
|
38
|
+
*
|
|
39
|
+
* A `ProfileCapture` window runs beside it in its own inspector session.
|
|
40
|
+
*/
|
|
41
|
+
export function startCpuProfileFromEnv() {
|
|
42
|
+
const template = process.env[DEFAULT_CPU_PROFILE_FILE_ENV];
|
|
43
|
+
if (!template || !isMainThread || processGlobal[CPU_PROFILE_STARTED]) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
processGlobal[CPU_PROFILE_STARTED] = true;
|
|
47
|
+
const session = new Session();
|
|
48
|
+
session.connect();
|
|
49
|
+
session.post('Profiler.enable');
|
|
50
|
+
session.post('Profiler.start');
|
|
51
|
+
let written = false;
|
|
52
|
+
// Synchronous throughout: an in-process session answers `post` before it
|
|
53
|
+
// returns, and nothing asynchronous runs after `exit`. The session is
|
|
54
|
+
// disconnected from the answer, so nothing here depends on that order.
|
|
55
|
+
const write = () => {
|
|
56
|
+
if (written) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
written = true;
|
|
60
|
+
const file = expandLogFilePlaceholders(template);
|
|
61
|
+
session.post('Profiler.stop', (error, result) => {
|
|
62
|
+
try {
|
|
63
|
+
if (error) {
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
67
|
+
writeFileSync(file, JSON.stringify(result.profile));
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
process.stderr.write(`[hydranium] Could not write the CPU profile to ${file}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
71
|
+
}
|
|
72
|
+
session.disconnect();
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
process.once('exit', write);
|
|
76
|
+
// Registered until the write is done, not `once`: a `once` listener is gone
|
|
77
|
+
// before it runs, and with no listener left the default action ends the
|
|
78
|
+
// process on a second SIGTERM, which a host ending its process tree sends
|
|
79
|
+
// while the write is still running. Prepended: a `once` listener ahead of
|
|
80
|
+
// this one has removed itself by the time this counts, which would re-raise
|
|
81
|
+
// into its unfinished shutdown.
|
|
82
|
+
const writeOnSigterm = () => {
|
|
83
|
+
write();
|
|
84
|
+
process.removeListener('SIGTERM', writeOnSigterm);
|
|
85
|
+
if (process.listenerCount('SIGTERM') === 0) {
|
|
86
|
+
process.kill(process.pid, 'SIGTERM');
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
process.prependListener('SIGTERM', writeOnSigterm);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=startup-cpu-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-cpu-profile.js","sourceRoot":"","sources":["../../src/node/startup-cpu-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import type
|
|
9
|
+
import { type Disposable, type Logger } from '@hydranium/protocol';
|
|
10
10
|
import type { MessageConnection } from 'vscode-jsonrpc';
|
|
11
11
|
import type { IntegratedServer } from '../launcher/integrated-server.js';
|
|
12
12
|
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
@@ -20,16 +20,17 @@ export interface StdioServerOptions {
|
|
|
20
20
|
*/
|
|
21
21
|
readonly shared: ServerSharedServicesMinimal;
|
|
22
22
|
/**
|
|
23
|
-
* Workspace root(s) to initialize — a filesystem path or a `URI`.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Workspace root(s) to initialize — a filesystem path or a `URI`. Required
|
|
24
|
+
* when no LSP head is composed, refused beside one: see
|
|
25
|
+
* {@link initializeWorkspaceWithoutLsp}.
|
|
26
26
|
*/
|
|
27
27
|
readonly workspace?: WorkspaceFolderInput | ReadonlyArray<WorkspaceFolderInput>;
|
|
28
28
|
/**
|
|
29
|
-
* Optional logger for lifecycle lines
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
29
|
+
* Optional logger for lifecycle lines and the connection's protocol
|
|
30
|
+
* faults. Omitted means silent — note that a logger writing to **stdout**
|
|
31
|
+
* would corrupt this head's protocol stream, so anything passed here must
|
|
32
|
+
* sink elsewhere. The framework's own `LspLogger` writes to stderr when no
|
|
33
|
+
* LSP connection is bound, which is correct here.
|
|
33
34
|
*/
|
|
34
35
|
readonly logger?: Logger;
|
|
35
36
|
/** Tag included in lifecycle log lines. Default `"StdioServer"`. */
|
|
@@ -60,11 +61,10 @@ export interface StartedStdioServer extends IntegratedServer {
|
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
63
|
* Start a **stdio**-based protocol head — the transport `hydranium-cli` speaks,
|
|
63
|
-
* since
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* a launcher rather than four lines in each adopter's entry.
|
|
64
|
+
* since its data-server subcommands spawn a server command and drive JSON-RPC
|
|
65
|
+
* over its stdin/stdout. The socket counterpart is `startSocketServer`; the two
|
|
66
|
+
* differ more than the transport swap suggests, and the differences are the
|
|
67
|
+
* reason this is a launcher rather than four lines in each adopter's entry.
|
|
68
68
|
*
|
|
69
69
|
* **One client, not N.** A socket head accepts arbitrarily many connections and
|
|
70
70
|
* tracks them; a stdio head has exactly one peer — the process that spawned it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-launcher.d.ts","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;
|
|
1
|
+
{"version":3,"file":"stdio-launcher.d.ts","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,MAAM,EAAyC,MAAM,qBAAqB,CAAC;AACpH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAExH,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACzD,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,YAAY,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,UAAU,GAC3D,kBAAkB,CAiEpB"}
|
|
@@ -6,16 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { Deferred } from '@hydranium/
|
|
9
|
+
import { Deferred, describeError, describeErrorWithStack } from '@hydranium/protocol';
|
|
10
10
|
import { createMessageConnection, StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node';
|
|
11
|
-
import {
|
|
11
|
+
import { initializeWorkspaceWithoutLsp } from '../langium/workspace/initialize-workspace.js';
|
|
12
12
|
/**
|
|
13
13
|
* Start a **stdio**-based protocol head — the transport `hydranium-cli` speaks,
|
|
14
|
-
* since
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* a launcher rather than four lines in each adopter's entry.
|
|
14
|
+
* since its data-server subcommands spawn a server command and drive JSON-RPC
|
|
15
|
+
* over its stdin/stdout. The socket counterpart is `startSocketServer`; the two
|
|
16
|
+
* differ more than the transport swap suggests, and the differences are the
|
|
17
|
+
* reason this is a launcher rather than four lines in each adopter's entry.
|
|
19
18
|
*
|
|
20
19
|
* **One client, not N.** A socket head accepts arbitrarily many connections and
|
|
21
20
|
* tracks them; a stdio head has exactly one peer — the process that spawned it
|
|
@@ -40,7 +39,7 @@ export function startStdioServer(options, onConnection) {
|
|
|
40
39
|
const tag = options.logTag ?? 'StdioServer';
|
|
41
40
|
const started = new Deferred();
|
|
42
41
|
const stopped = new Deferred();
|
|
43
|
-
const connection = createMessageConnection(new StreamMessageReader(options.input ?? process.stdin), new StreamMessageWriter(options.output ?? process.stdout));
|
|
42
|
+
const connection = createMessageConnection(new StreamMessageReader(options.input ?? process.stdin), new StreamMessageWriter(options.output ?? process.stdout), logger?.with(tag));
|
|
44
43
|
const adopterDisposable = onConnection(connection);
|
|
45
44
|
let disposed = false;
|
|
46
45
|
const close = () => {
|
|
@@ -52,17 +51,23 @@ export function startStdioServer(options, onConnection) {
|
|
|
52
51
|
adopterDisposable.dispose();
|
|
53
52
|
}
|
|
54
53
|
catch (err) {
|
|
55
|
-
logger?.warn(`[${tag}] Adopter disposable threw on cleanup: ${
|
|
54
|
+
logger?.warn(`[${tag}] Adopter disposable threw on cleanup: ${describeErrorWithStack(err)}`);
|
|
56
55
|
}
|
|
57
56
|
connection.dispose();
|
|
58
57
|
stopped.resolve();
|
|
59
58
|
};
|
|
60
59
|
connection.onClose(() => close());
|
|
60
|
+
// The workspace manager logs a failed initialization itself; a refused
|
|
61
|
+
// `workspace` throws before `initializing` is set.
|
|
62
|
+
let initializing = false;
|
|
61
63
|
const begin = async () => {
|
|
64
|
+
const initialization = initializeWorkspaceWithoutLsp(options.shared, options.workspace);
|
|
65
|
+
initializing = true;
|
|
62
66
|
if (options.workspace !== undefined) {
|
|
63
67
|
logger?.info(`[${tag}] Initializing workspace`);
|
|
64
|
-
await initializeWorkspaceProgrammatically(options.shared, options.workspace);
|
|
65
68
|
}
|
|
69
|
+
await initialization;
|
|
70
|
+
initializing = false;
|
|
66
71
|
// Only now attach the reader — see the ordering note in the doc above.
|
|
67
72
|
connection.listen();
|
|
68
73
|
logger?.info(`[${tag}] Listening on stdio`);
|
|
@@ -71,7 +76,12 @@ export function startStdioServer(options, onConnection) {
|
|
|
71
76
|
// A failed startup must not leave a half-live head: report it on
|
|
72
77
|
// `started` and tear the connection down rather than listening over an
|
|
73
78
|
// uninitialized workspace.
|
|
74
|
-
|
|
79
|
+
if (initializing) {
|
|
80
|
+
logger?.debug(`[${tag}] Startup failed: the workspace did not initialize. ${describeError(err)}`);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
logger?.error(`[${tag}] Startup failed: ${describeErrorWithStack(err)}`);
|
|
84
|
+
}
|
|
75
85
|
started.reject(err);
|
|
76
86
|
close();
|
|
77
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-launcher.js","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"stdio-launcher.js","sourceRoot":"","sources":["../../src/node/stdio-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ export function documentUriPolicyConformance(hooks, suiteName, makePolicy, optio
|
|
|
60
60
|
// Computed here rather than tallied from the assertions above, so the
|
|
61
61
|
// guard does not depend on the runner executing tests in declaration
|
|
62
62
|
// order (a `--shuffle` run would otherwise read it as zero).
|
|
63
|
-
it(`at least one sample URI is loadable
|
|
63
|
+
it(`at least one sample URI is loadable among ${sampleUris.join(', ')}`, () => {
|
|
64
64
|
const loadable = sampleUris.filter(uri => makePolicy().loadUri(uri) !== undefined);
|
|
65
65
|
expect(loadable.length > 0).toBe(true);
|
|
66
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-uri-policy-conformance.js","sourceRoot":"","sources":["../../src/testing/document-uri-policy-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA2B9C,MAAM,mBAAmB,GAAG,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;AAE/H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,4BAA4B,CACzC,KAAwC,EACxC,SAAiB,EACjB,UAAmC,EACnC,
|
|
1
|
+
{"version":3,"file":"document-uri-policy-conformance.js","sourceRoot":"","sources":["../../src/testing/document-uri-policy-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA2B9C,MAAM,mBAAmB,GAAG,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;AAE/H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,4BAA4B,CACzC,KAAwC,EACxC,SAAiB,EACjB,UAAmC,EACnC,OAAO,GAAwC,EAAE;IAEjD,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAE7D,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACtB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC5B,EAAE,CAAC,kCAAkC,GAAG,EAAE,EAAE,GAAG,EAAE;gBAC9C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yCAAyC,GAAG,cAAc,EAAE,GAAG,EAAE;gBACjE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACxB,OAAO,CAAC,wDAAwD;gBACnE,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;QACN,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,6DAA6D;QAC7D,EAAE,CAAC,6CAA6C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;YAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-description.js","sourceRoot":"","sources":["../../src/testing/fake-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA2B,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAelE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"fake-description.js","sourceRoot":"","sources":["../../src/testing/fake-description.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA2B,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAelE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAI,GAA2B,EAAE;IAChF,MAAM,WAAW,GAAuB;QACrC,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAC3D,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;KACjB,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,WAAiD,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvE,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAiD,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjF,CAAC;IACD,OAAO,WAAW,CAAC;AACtB,CAAC"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { DocumentState, type AstNode, type AstReflection, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
10
|
+
import { type AstDiagnostic } from '../langium/validation/document-validator.js';
|
|
10
11
|
/**
|
|
11
12
|
* Build a typed AST-node fixture for unit tests.
|
|
12
13
|
*
|
|
@@ -78,5 +79,5 @@ export interface FakeDocumentOptions<TAst extends AstNode, TDiagnostic> {
|
|
|
78
79
|
* staging. Override via `options.state` for tests that gate on earlier
|
|
79
80
|
* phases.
|
|
80
81
|
*/
|
|
81
|
-
export declare function makeFakeDocument<TAst extends AstNode = AstNode, TDiagnostic =
|
|
82
|
+
export declare function makeFakeDocument<TAst extends AstNode = AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(uri: string | URI, root: TAst, options?: FakeDocumentOptions<TAst, TDiagnostic>): LangiumDocument<TAst>;
|
|
82
83
|
//# sourceMappingURL=fake-document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-document.d.ts","sourceRoot":"","sources":["../../src/testing/fake-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fake-document.d.ts","sourceRoot":"","sources":["../../src/testing/fake-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE/H,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAC3D,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,UAAU,CAAC,EAAE,aAAa,GAC1B,IAAI,CAKN;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS,OAAO,EAAE,WAAW;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;CACvD;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,WAAW,SAAS,aAAa,GAAG,aAAa,EAC/G,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAM,GACpD,eAAe,CAAC,IAAI,CAAC,CA2BvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-document.js","sourceRoot":"","sources":["../../src/testing/fake-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAA0D,QAAQ,EAAY,MAAM,oBAAoB,CAAC;AAC/H,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"fake-document.js","sourceRoot":"","sources":["../../src/testing/fake-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,aAAa,EAA0D,QAAQ,EAAY,MAAM,oBAAoB,CAAC;AAC/H,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,eAAe,CAC5B,IAAiD,EACjD,UAA0B;IAE1B,IAAI,CAAC,UAAU,EAAE,CAAC;QACf,OAAO,IAAuB,CAAC;IAClC,CAAC;IACD,OAAO,YAAY,CAAO,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AA+BD;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACrC,IAAI,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,IAAwC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC7B,GAAiB,EACjB,IAAU,EACV,OAAO,GAA2C,EAAE;IAEpD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG;QACd,GAAG,EAAE,MAAM;QACX,WAAW,EAAE;YACV,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,GAAG,OAAO,CAAC,WAAW;SACxB;QACD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI;YACnC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE;YACtB,OAAO;YACP,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;SACrB;QACD,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAU;QACjD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,SAAS;KACb,CAAC;IACtC,0EAA0E;IAC1E,qEAAqE;IACrE,sEAAsE;IACtE,iCAAiC;IAChC,IAA8C,CAAC,SAAS,GAAG,QAAQ,CAAC;IACrE,OAAO,QAAQ,CAAC;AACnB,CAAC"}
|
package/lib/testing/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* builders, the snapshot and URI-policy conformance primitives, the
|
|
14
14
|
* structured-write pipeline driver, and a re-export of `langium/test`.
|
|
15
15
|
*
|
|
16
|
-
* Neutrality is gated (`scripts/check-neutral-bundles.
|
|
16
|
+
* Neutrality is gated (`scripts/check-neutral-bundles.mts`). The test support
|
|
17
17
|
* that needs a real filesystem or a Node stream transport — the scratch
|
|
18
18
|
* workspace, the golden corpus, the LSP transport and its harness — lives at
|
|
19
19
|
* `@hydranium/core/testing/node`, on the same rule the package surface uses:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC"}
|
package/lib/testing/index.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* builders, the snapshot and URI-policy conformance primitives, the
|
|
14
14
|
* structured-write pipeline driver, and a re-export of `langium/test`.
|
|
15
15
|
*
|
|
16
|
-
* Neutrality is gated (`scripts/check-neutral-bundles.
|
|
16
|
+
* Neutrality is gated (`scripts/check-neutral-bundles.mts`). The test support
|
|
17
17
|
* that needs a real filesystem or a Node stream transport — the scratch
|
|
18
18
|
* workspace, the golden corpus, the LSP transport and its harness — lives at
|
|
19
19
|
* `@hydranium/core/testing/node`, on the same rule the package surface uses:
|
|
@@ -24,6 +24,7 @@ export * from './document-uri-policy-conformance.js';
|
|
|
24
24
|
export * from './fake-description.js';
|
|
25
25
|
export * from './fake-document.js';
|
|
26
26
|
export * from './fake-reflection.js';
|
|
27
|
+
// oxlint-disable-next-line import/export -- misreads export * from an npm package: https://github.com/oxc-project/oxc/pull/26872
|
|
27
28
|
export * from './langium-test-helpers.js';
|
|
28
29
|
export * from './make-noop-language-services.js';
|
|
29
30
|
export * from './make-noop-shared-services.js';
|
package/lib/testing/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;GAYG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,iIAAiI;AACjI,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langium-test-helpers.d.ts","sourceRoot":"","sources":["../../src/testing/langium-test-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"langium-test-helpers.d.ts","sourceRoot":"","sources":["../../src/testing/langium-test-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;GAeG;AAEH,cAAc,yBAAyB,CAAC"}
|
|
@@ -22,5 +22,6 @@
|
|
|
22
22
|
* contracts stays Langium upstream, so a rename there surfaces here rather than
|
|
23
23
|
* being absorbed by a hand-maintained list.
|
|
24
24
|
*/
|
|
25
|
+
// oxlint-disable-next-line import/export -- misreads export * from an npm package: https://github.com/oxc-project/oxc/pull/26872
|
|
25
26
|
export * from '@hydranium/langium/test';
|
|
26
27
|
//# sourceMappingURL=langium-test-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langium-test-helpers.js","sourceRoot":"","sources":["../../src/testing/langium-test-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;GAeG;AACH,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"langium-test-helpers.js","sourceRoot":"","sources":["../../src/testing/langium-test-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;GAeG;AACH,iIAAiI;AACjI,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-noop-language-services.js","sourceRoot":"","sources":["../../src/testing/make-noop-language-services.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,sBAAsB,EAAoC,MAAM,gCAAgC,CAAC;AAiB1G;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"make-noop-language-services.js","sourceRoot":"","sources":["../../src/testing/make-noop-language-services.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,sBAAsB,EAAoC,MAAM,gCAAgC,CAAC;AAiB1G;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAS,GAAkC,EAAE;IACnF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;IACtC,OAAO;QACJ,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC;QACtC,GAAG,IAAI;KAC4B,CAAC;AAC1C,CAAC"}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Clock, type Logger, type Tracer } from '@hydranium/protocol';
|
|
10
10
|
import type { ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
11
|
-
import { ServerLocale } from '../locale/server-locale.js';
|
|
12
|
-
import {
|
|
11
|
+
import { type ServerLocale } from '../locale/server-locale.js';
|
|
12
|
+
import { type MessageRenderer } from '../messages/renderer.js';
|
|
13
13
|
/**
|
|
14
14
|
* Overrides for {@link makeNoopSharedServices}. The three observability slots
|
|
15
15
|
* are typed (they are the boilerplate this helper exists to default);
|
|
@@ -33,14 +33,14 @@ export interface NoopSharedServicesOverrides {
|
|
|
33
33
|
ServerLocale?: (services: ServerSharedServicesMinimal) => ServerLocale;
|
|
34
34
|
/**
|
|
35
35
|
* Factory for the `MessageRenderer` slot. Default: the real
|
|
36
|
-
* {@link
|
|
36
|
+
* {@link DefaultMessageRenderer}, whose no-catalogue behaviour is a
|
|
37
37
|
* pass-through — so the default is the framework's own behaviour, not a stub.
|
|
38
38
|
*
|
|
39
39
|
* A factory rather than an instance, because a renderer reads the tree it is
|
|
40
40
|
* bound into. Both slots are resolved lazily, so an override is honoured
|
|
41
41
|
* however late the caller reads them.
|
|
42
42
|
*/
|
|
43
|
-
MessageRenderer?: (services: ServerSharedServicesMinimal) =>
|
|
43
|
+
MessageRenderer?: (services: ServerSharedServicesMinimal) => MessageRenderer;
|
|
44
44
|
/** Per-slot `workspace` overrides. Slots left out resolve to `undefined`. */
|
|
45
45
|
workspace?: Record<string, unknown>;
|
|
46
46
|
/** Any other minimal slot (`ServiceRegistry`, `AstReflection`, `additionalDocuments`, …). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-noop-shared-services.d.ts","sourceRoot":"","sources":["../../src/testing/make-noop-shared-services.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAiB,KAAK,MAAM,EAA2B,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"make-noop-shared-services.d.ts","sourceRoot":"","sources":["../../src/testing/make-noop-shared-services.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAiB,KAAK,MAAM,EAA2B,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IACzC,yEAAyE;IACzE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,2BAA2B,KAAK,YAAY,CAAC;IACvE;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,2BAA2B,KAAK,eAAe,CAAC;IAC7E,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,6FAA6F;IAC7F,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,2BAA2B,GAAG,2BAA2B,EACvG,SAAS,GAAE,2BAAgC,GAC3C,CAAC,CA8BH"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { DefaultTracer, NoopLogger, SystemClock } from '@hydranium/protocol';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { DefaultServerLocale } from '../locale/server-locale.js';
|
|
11
|
+
import { DefaultMessageRenderer } from '../messages/renderer.js';
|
|
12
12
|
/**
|
|
13
13
|
* Build a {@link ServerSharedServicesMinimal} tree backed by no-op defaults for
|
|
14
14
|
* the observability slots every framework component reads (`Clock` / `Logger` /
|
|
@@ -52,8 +52,8 @@ export function makeNoopSharedServices(overrides = {}) {
|
|
|
52
52
|
// both services emit an `instantiated` trace, so building them eagerly puts
|
|
53
53
|
// two lines into the capture of every test that passes a capturing logger
|
|
54
54
|
// and asserts on emptiness.
|
|
55
|
-
defineLazySlot(services, 'ServerLocale', () => serverLocale?.(services) ?? new
|
|
56
|
-
defineLazySlot(services, 'MessageRenderer', () => messageRenderer?.(services) ?? new
|
|
55
|
+
defineLazySlot(services, 'ServerLocale', () => serverLocale?.(services) ?? new DefaultServerLocale(services));
|
|
56
|
+
defineLazySlot(services, 'MessageRenderer', () => messageRenderer?.(services) ?? new DefaultMessageRenderer(services));
|
|
57
57
|
return services;
|
|
58
58
|
}
|
|
59
59
|
/** Install `name` as a memoized getter, so nothing is constructed until it is read. */
|