@hydranium/core 1.0.0-next.36 → 1.0.0-next.360
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 +266 -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 +445 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +903 -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 +141 -0
- package/lib/langium/diagnostics/console-tee.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 +25 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +81 -46
- 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 +34 -2
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +44 -31
- 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 +310 -41
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +490 -79
- 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 +3 -2
- package/lib/langium/keys/containment.d.ts.map +1 -1
- package/lib/langium/keys/containment.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +17 -10
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +24 -12
- 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 +21 -5
- 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 +476 -300
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +602 -466
- 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 +40 -14
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +27 -58
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.d.ts +46 -10
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.js +88 -15
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
- package/lib/langium/scope/built-local-symbols.d.ts +12 -0
- package/lib/langium/scope/built-local-symbols.d.ts.map +1 -0
- package/lib/langium/scope/built-local-symbols.js +11 -0
- package/lib/langium/scope/built-local-symbols.js.map +1 -0
- 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 +122 -32
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +217 -39
- 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 +69 -37
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js +102 -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 +12 -0
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/yaml-serializer.js +24 -4
- 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 +543 -0
- package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/comment-preserver.js +1164 -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 +168 -23
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +264 -26
- 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/ast-node-locator.d.ts +24 -0
- package/lib/langium/workspace/ast-node-locator.d.ts.map +1 -0
- package/lib/langium/workspace/ast-node-locator.js +32 -0
- package/lib/langium/workspace/ast-node-locator.js.map +1 -0
- 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 +103 -21
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +184 -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 +2 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +2 -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 +19 -5
- package/lib/locale/server-locale.d.ts.map +1 -1
- package/lib/locale/server-locale.js +1 -1
- 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/edit-requests-guard.d.ts +31 -0
- package/lib/lsp/edit-requests-guard.d.ts.map +1 -0
- package/lib/lsp/edit-requests-guard.js +125 -0
- package/lib/lsp/edit-requests-guard.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 +6 -2
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +6 -2
- 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 +58 -2
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
- package/lib/lsp/semantic-token-provider.js +98 -9
- 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 +12 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +21 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +4 -6
- package/lib/messages/carriers.d.ts.map +1 -1
- package/lib/messages/carriers.js +4 -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/node/validate-workspace.d.ts +1 -1
- package/lib/node/validate-workspace.d.ts.map +1 -1
- package/lib/node/validate-workspace.js +5 -1
- package/lib/node/validate-workspace.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 +41 -60
- 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 +479 -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 +1029 -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 +150 -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 +83 -45
- package/src/langium/document-builder/build-pipeline-integration.ts +71 -33
- package/src/langium/document-builder/build-session.ts +4 -3
- package/src/langium/document-builder/document-builder.ts +615 -79
- 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 +3 -2
- package/src/langium/keys/name-based-key-provider.ts +24 -12
- package/src/langium/language-module.ts +52 -9
- package/src/langium/model-service/client-session.ts +726 -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 +929 -493
- 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 +59 -19
- package/src/langium/scope/ast-node-description-provider.ts +111 -16
- package/src/langium/scope/built-local-symbols.ts +13 -0
- 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 +245 -41
- 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 +148 -56
- 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 +26 -4
- 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 +1409 -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 +312 -31
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/ast-node-locator.ts +33 -0
- 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 +212 -35
- package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
- package/src/langium/workspace/index.ts +2 -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 +20 -5
- 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/edit-requests-guard.ts +152 -0
- package/src/lsp/hydranium-document-update-handler.ts +285 -111
- package/src/lsp/index.ts +6 -2
- package/src/lsp/lsp-latency.ts +62 -0
- package/src/lsp/save-text-document.ts +63 -0
- package/src/lsp/semantic-token-provider.ts +146 -8
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +21 -7
- package/src/messages/carriers.ts +4 -6
- 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/node/validate-workspace.ts +8 -2
- 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 +138 -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
|
@@ -11,7 +11,9 @@ import {
|
|
|
11
11
|
AbstractLogger,
|
|
12
12
|
type Clock,
|
|
13
13
|
DEFAULT_LOG_FILE_ENV,
|
|
14
|
+
DEFAULT_LOG_FILE_LEVEL_ENV,
|
|
14
15
|
DEFAULT_LOG_LEVEL_ENV,
|
|
16
|
+
LEVEL_ORDER,
|
|
15
17
|
Logger,
|
|
16
18
|
type LogLevel,
|
|
17
19
|
type LogThreshold,
|
|
@@ -22,6 +24,7 @@ import {
|
|
|
22
24
|
import { type URI } from '@hydranium/langium';
|
|
23
25
|
import type { Connection } from 'vscode-languageserver';
|
|
24
26
|
import { type ServerSharedServices } from '../module.js';
|
|
27
|
+
import { installConsoleTee } from './console-tee.js';
|
|
25
28
|
import { setLogFilePath, teeLogLine } from './logger.js';
|
|
26
29
|
import { processEnv, writeStderr } from '../../util/environment.js';
|
|
27
30
|
|
|
@@ -32,6 +35,8 @@ import { processEnv, writeStderr } from '../../util/environment.js';
|
|
|
32
35
|
* live setting.
|
|
33
36
|
*/
|
|
34
37
|
let envBaselineApplied = false;
|
|
38
|
+
/** Whether the first logger has run the console tee's install, which does nothing in a browser. */
|
|
39
|
+
let consoleTeeInstalled = false;
|
|
35
40
|
|
|
36
41
|
/**
|
|
37
42
|
* Options accepted by {@link LspLogger}. Carries the logger's own
|
|
@@ -79,9 +84,10 @@ export class LspLogger extends AbstractLogger implements Logger {
|
|
|
79
84
|
options: LspLoggerOptions = {}
|
|
80
85
|
) {
|
|
81
86
|
super(options.component);
|
|
82
|
-
// Apply the framework env baselines (`HYDRANIUM_LOG_LEVEL
|
|
83
|
-
// `HYDRANIUM_LOG_FILE`) exactly once, on
|
|
84
|
-
// before any setting is read.
|
|
87
|
+
// Apply the framework env baselines (`HYDRANIUM_LOG_LEVEL`,
|
|
88
|
+
// `HYDRANIUM_LOG_FILE` and `HYDRANIUM_LOG_FILE_LEVEL`) exactly once, on
|
|
89
|
+
// the first logger construction, before any setting is read.
|
|
90
|
+
// Unconditional and process-global, so it
|
|
85
91
|
// needs no root detection and is never re-applied by derived children —
|
|
86
92
|
// which would otherwise clobber a live setting. These are the single env
|
|
87
93
|
// vars for level / file-tee (an adopter brands them by renaming the
|
|
@@ -92,16 +98,30 @@ export class LspLogger extends AbstractLogger implements Logger {
|
|
|
92
98
|
// a Node concern; skip it cleanly there.
|
|
93
99
|
const env = processEnv();
|
|
94
100
|
if (env) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
101
|
+
// The file-tee target FIRST: the other order writes the level
|
|
102
|
+
// announcement before the sink exists, losing the one line that says
|
|
103
|
+
// which threshold the rest of the file was written at.
|
|
99
104
|
const envLogFile = env[DEFAULT_LOG_FILE_ENV];
|
|
100
105
|
if (envLogFile) {
|
|
101
|
-
|
|
106
|
+
const fileLevel = parseLogLevel(env[DEFAULT_LOG_FILE_LEVEL_ENV]);
|
|
107
|
+
setLogFilePath(envLogFile, fileLevel);
|
|
108
|
+
if (fileLevel) {
|
|
109
|
+
this.logAt(fileLevel, `Log file level ${fileLevel} (${DEFAULT_LOG_FILE_LEVEL_ENV})`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const envLevel = parseLogLevel(env[DEFAULT_LOG_LEVEL_ENV]);
|
|
113
|
+
if (envLevel) {
|
|
114
|
+
this.applyLevel(envLevel, DEFAULT_LOG_LEVEL_ENV, { launch: true });
|
|
102
115
|
}
|
|
103
116
|
}
|
|
104
117
|
}
|
|
118
|
+
// Once, so a server without an LSP head writes console lines to the file
|
|
119
|
+
// too; `startLanguageServer` wraps again where a stdio connection created
|
|
120
|
+
// after this logger replaced them.
|
|
121
|
+
if (!consoleTeeInstalled) {
|
|
122
|
+
consoleTeeInstalled = true;
|
|
123
|
+
installConsoleTee();
|
|
124
|
+
}
|
|
105
125
|
// Apply the configured threshold from the root logger only — `derive`
|
|
106
126
|
// passes just `component`, so children never carry `logThreshold`. The
|
|
107
127
|
// setting overrides the env baseline above and re-applies on every change;
|
|
@@ -109,16 +129,61 @@ export class LspLogger extends AbstractLogger implements Logger {
|
|
|
109
129
|
if (options.logThreshold !== undefined) {
|
|
110
130
|
const level = ObservableValue.from(options.logThreshold);
|
|
111
131
|
if (level.value) {
|
|
112
|
-
|
|
132
|
+
this.applyLevel(level.value, 'setting');
|
|
113
133
|
}
|
|
114
134
|
level.onChange(next => {
|
|
115
135
|
if (next) {
|
|
116
|
-
|
|
136
|
+
this.applyLevel(next, 'setting');
|
|
117
137
|
}
|
|
118
138
|
});
|
|
119
139
|
}
|
|
120
140
|
}
|
|
121
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Set the process-wide threshold and announce the transition under whichever
|
|
144
|
+
* of the two thresholds can carry the notice, so a reader sees every change
|
|
145
|
+
* after launch that one of them can carry.
|
|
146
|
+
*
|
|
147
|
+
* `error` and `off` admit no notice of their own — `off` nothing at all, and
|
|
148
|
+
* an error-severity line is read as a fault, which a client that marks its
|
|
149
|
+
* log as having seen an error keeps for the session. Entering either is
|
|
150
|
+
* therefore announced BEFORE the switch, under the outgoing threshold; every
|
|
151
|
+
* other change is announced after it, at the level being entered. Leaving
|
|
152
|
+
* `error` or `off` for one of those two says nothing, both thresholds being
|
|
153
|
+
* unable to carry it.
|
|
154
|
+
*
|
|
155
|
+
* Only on a real transition: the bound setting re-fires for configuration
|
|
156
|
+
* changes that leave the value alone.
|
|
157
|
+
*
|
|
158
|
+
* A `launch` baseline, the environment's, is announced only after the
|
|
159
|
+
* switch, so a run launched at `error` or `off` carries no notice. The
|
|
160
|
+
* threshold it leaves is a default no reader ran at, so a notice under it
|
|
161
|
+
* would be the one line of a run launched at `off`, and an info line in a
|
|
162
|
+
* run launched at `error`, against the launch's request.
|
|
163
|
+
*/
|
|
164
|
+
protected applyLevel(next: LogThreshold, source: string, options: { launch?: boolean } = {}): void {
|
|
165
|
+
const previous = Logger.getLevel();
|
|
166
|
+
if (previous === next) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const message = `Log level ${previous} → ${next} (${source})`;
|
|
170
|
+
if (options.launch) {
|
|
171
|
+
Logger.setLevel(next);
|
|
172
|
+
if (next !== 'error') {
|
|
173
|
+
this.logAt(next, message);
|
|
174
|
+
}
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const announceFirst = next === 'error' || next === 'off';
|
|
178
|
+
if (announceFirst && previous !== 'error') {
|
|
179
|
+
this.logAt(previous, message);
|
|
180
|
+
}
|
|
181
|
+
Logger.setLevel(next);
|
|
182
|
+
if (!announceFirst) {
|
|
183
|
+
this.logAt(next, message);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
122
187
|
/**
|
|
123
188
|
* Route logger timing and timestamps through the injected framework
|
|
124
189
|
* {@link Clock} (the dedicated `shared.Clock` slot) so server-side log time
|
|
@@ -145,10 +210,8 @@ export class LspLogger extends AbstractLogger implements Logger {
|
|
|
145
210
|
}
|
|
146
211
|
|
|
147
212
|
protected emit(level: LogLevel, label: string, message: string, args: readonly unknown[]): void {
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
const prefix = `[${label.padEnd(5)} - ${this.timestamp()}]${component}`;
|
|
151
|
-
const combined = args.length === 0 ? message : `${message} ${args.map(formatLogArg).join(' ')}`;
|
|
213
|
+
const prefix = this.formatLinePrefix(label);
|
|
214
|
+
const combined = args.length === 0 ? message : `${message} ${args.map(arg => this.formatArg(arg)).join(' ')}`;
|
|
152
215
|
const formatted = `${prefix} ${combined}`;
|
|
153
216
|
const connection = this.services.lsp.Connection;
|
|
154
217
|
// Route through the LSP `window/logMessage` channel so log lines stay
|
|
@@ -165,7 +228,11 @@ export class LspLogger extends AbstractLogger implements Logger {
|
|
|
165
228
|
// shutdown diagnostics and the workspace manager's own
|
|
166
229
|
// unhandled-rejection handler. A log sink that throws turns a diagnostic
|
|
167
230
|
// into a crash, so a dead channel degrades to stderr instead.
|
|
168
|
-
|
|
231
|
+
//
|
|
232
|
+
// `send` admits a line either threshold takes, so the client sink checks
|
|
233
|
+
// its own; the file-tee filters for itself.
|
|
234
|
+
const toClient = LEVEL_ORDER[level] <= LEVEL_ORDER[Logger.getLevel()];
|
|
235
|
+
if (toClient && (!connection || !sendViaConnection(connection, level, formatted))) {
|
|
169
236
|
if (!writeStderr(`${formatted}\n`)) {
|
|
170
237
|
// Browser only. In Node every level goes to STDERR, including the
|
|
171
238
|
// three that `console.*` would put on stdout (`info` / `debug` /
|
|
@@ -180,7 +247,7 @@ export class LspLogger extends AbstractLogger implements Logger {
|
|
|
180
247
|
}
|
|
181
248
|
// File-tee fan-out for headless capture (see `setLogFilePath`). Always runs
|
|
182
249
|
// in addition to the LSP/console sink — log sinks fan out, they don't replace.
|
|
183
|
-
teeLogLine(formatted);
|
|
250
|
+
teeLogLine(level, formatted);
|
|
184
251
|
}
|
|
185
252
|
|
|
186
253
|
protected derive(component: string): this {
|
|
@@ -246,32 +313,3 @@ const LSP_CONSOLE: Record<LogLevel, (connection: Connection) => (message: string
|
|
|
246
313
|
debug: c => c.console.debug.bind(c.console),
|
|
247
314
|
trace: c => c.console.log.bind(c.console)
|
|
248
315
|
};
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Render a logger-argument value into the single combined string the LSP
|
|
252
|
-
* `window/logMessage` channel takes. Mirrors how raw `console.*` would
|
|
253
|
-
* format multiple args, but with explicit handling for Errors (stack) and
|
|
254
|
-
* objects (JSON).
|
|
255
|
-
*/
|
|
256
|
-
function formatLogArg(value: unknown): string {
|
|
257
|
-
if (value === undefined) {
|
|
258
|
-
return 'undefined';
|
|
259
|
-
}
|
|
260
|
-
if (value === null) {
|
|
261
|
-
return 'null';
|
|
262
|
-
}
|
|
263
|
-
if (typeof value === 'string') {
|
|
264
|
-
return value;
|
|
265
|
-
}
|
|
266
|
-
if (value instanceof Error) {
|
|
267
|
-
return value.stack ?? value.message;
|
|
268
|
-
}
|
|
269
|
-
if (typeof value === 'object') {
|
|
270
|
-
try {
|
|
271
|
-
return JSON.stringify(value);
|
|
272
|
-
} catch {
|
|
273
|
-
return String(value);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
return String(value);
|
|
277
|
-
}
|
|
@@ -10,35 +10,12 @@
|
|
|
10
10
|
import { type LangiumDocument, DocumentState } from '@hydranium/langium';
|
|
11
11
|
import { type CancellationToken } from 'vscode-languageserver';
|
|
12
12
|
import { IntegrityPhase } from '../integrity/integrity-rule.js';
|
|
13
|
-
import {
|
|
13
|
+
import { AstExtensionPhase } from '../ast-extension/ast-extension-service.js';
|
|
14
|
+
import { BuildPassPhase, groupDocumentsByLanguage } from '../build-phase-pass/build-phase-pass.js';
|
|
14
15
|
import { type ServerSharedServices } from '../module.js';
|
|
16
|
+
import { builtLocalSymbols } from '../scope/built-local-symbols.js';
|
|
15
17
|
import { labelPhaseListener } from './labeled-phase-listener.js';
|
|
16
18
|
|
|
17
|
-
/**
|
|
18
|
-
* AST extension wiring covers every "useful" `DocumentState` an extension can
|
|
19
|
-
* target. `Changed` has no AST yet; `IndexedContent` carries the same
|
|
20
|
-
* per-document information as `Parsed`. No-op fires for documents with no
|
|
21
|
-
* extension at a given state are negligible (`notifyDocumentPhase` is a plain
|
|
22
|
-
* listener loop), so the framework wires the full set unconditionally rather
|
|
23
|
-
* than collecting declared states from per-language registrations.
|
|
24
|
-
*/
|
|
25
|
-
const AST_EXTENSION_PHASES: readonly DocumentState[] = [
|
|
26
|
-
DocumentState.Parsed,
|
|
27
|
-
DocumentState.ComputedScopes,
|
|
28
|
-
DocumentState.Linked,
|
|
29
|
-
DocumentState.IndexedReferences,
|
|
30
|
-
DocumentState.Validated
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Build phases at which the `BuildPhasePassService` is driven. Same useful
|
|
35
|
-
* set as {@link AST_EXTENSION_PHASES}: a pass registered at any other state
|
|
36
|
-
* never fires (the listener is not wired), mirroring the AST-extension contract.
|
|
37
|
-
* `runPasses` no-ops at a phase with no registered pass, so wiring the full set
|
|
38
|
-
* unconditionally costs only an empty-bucket check per phase.
|
|
39
|
-
*/
|
|
40
|
-
const BUILD_PHASE_PASS_STATES: readonly DocumentState[] = AST_EXTENSION_PHASES;
|
|
41
|
-
|
|
42
19
|
/**
|
|
43
20
|
* Default priority of the framework integrity passes. Integrity mutates / cleans
|
|
44
21
|
* the AST that every derived-state pass reads, so it is *foundational* and must
|
|
@@ -65,6 +42,23 @@ export interface BuildPipelineIntegrationOptions {
|
|
|
65
42
|
readonly integrityPriority?: number;
|
|
66
43
|
}
|
|
67
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The build-pipeline slot. Empty because nothing calls this service — it wires
|
|
47
|
+
* itself in its constructor and every seam it offers is `protected`.
|
|
48
|
+
*
|
|
49
|
+
* Typing the slot by the class instead would stop an adopter's subclass
|
|
50
|
+
* satisfying it, since a class carries its `protected` members into the check
|
|
51
|
+
* and they compare by declaration rather than by shape. The cost of the empty
|
|
52
|
+
* shape is that any non-null value satisfies it, so a mis-bound slot compiles
|
|
53
|
+
* and the framework's phase listeners are then never attached.
|
|
54
|
+
*
|
|
55
|
+
* A replacement that does not subclass {@link DefaultBuildPipelineIntegration}
|
|
56
|
+
* also drops the local symbols it records, so `HydraniumScopeProvider` answers
|
|
57
|
+
* a node of a root a rebuild replaced with index names only.
|
|
58
|
+
*/
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- the slot has no public member to name
|
|
60
|
+
export interface BuildPipelineIntegration {}
|
|
61
|
+
|
|
68
62
|
/**
|
|
69
63
|
* Wires the framework's build-time features (integrity rules, AST
|
|
70
64
|
* enrichment) into Langium's document-build pipeline. The single shared
|
|
@@ -83,14 +77,15 @@ export interface BuildPipelineIntegrationOptions {
|
|
|
83
77
|
*
|
|
84
78
|
* Adopters subclass to change *how* a feature is invoked by overriding one
|
|
85
79
|
* protected per-feature helper — {@link callIntegrity} (integrity enforcement),
|
|
86
|
-
* {@link extendAst} (per-document AST enrichment),
|
|
80
|
+
* {@link extendAst} (per-document AST enrichment), {@link recordLocalSymbols}
|
|
81
|
+
* (local symbols per root), or {@link runBuildPhase}
|
|
87
82
|
* (batch-level build-phase pass dispatch) — or to wire an additional phase
|
|
88
83
|
* (override the constructor).
|
|
89
84
|
*
|
|
90
85
|
* Eagerly constructed (via `DEFAULT_EAGER_SERVICES`) so the listeners are
|
|
91
86
|
* attached before the first build cycle.
|
|
92
87
|
*/
|
|
93
|
-
export class BuildPipelineIntegration {
|
|
88
|
+
export class DefaultBuildPipelineIntegration implements BuildPipelineIntegration {
|
|
94
89
|
constructor(
|
|
95
90
|
protected readonly services: ServerSharedServices,
|
|
96
91
|
options: BuildPipelineIntegrationOptions = {}
|
|
@@ -108,17 +103,19 @@ export class BuildPipelineIntegration {
|
|
|
108
103
|
for (const phase of IntegrityPhase.all()) {
|
|
109
104
|
passes.register({
|
|
110
105
|
id: `framework:integrity:${IntegrityPhase.toString(phase).toLowerCase()}`,
|
|
111
|
-
|
|
106
|
+
phase,
|
|
112
107
|
priority: integrityPriority,
|
|
113
108
|
run: (documents, cancelToken) => this.callIntegrity(documents, phase, cancelToken)
|
|
114
109
|
});
|
|
115
110
|
}
|
|
116
111
|
|
|
117
|
-
// One onBuildPhase listener per pass
|
|
112
|
+
// One onBuildPhase listener per pass phase, routed through the overridable
|
|
118
113
|
// `runBuildPhase` seam → priority-ordered, sequential, cancel-aware pass
|
|
119
114
|
// dispatch. The returned promise is awaited by the build pipeline, so a
|
|
120
|
-
// mutating pass (integrity) reparses before the build advances.
|
|
121
|
-
|
|
115
|
+
// mutating pass (integrity) reparses before the build advances. The full
|
|
116
|
+
// set is wired unconditionally: `runPasses` no-ops at a phase with no
|
|
117
|
+
// pass, so an unused listener costs one empty-bucket check.
|
|
118
|
+
for (const phase of BuildPassPhase.all()) {
|
|
122
119
|
builder.onBuildPhase(
|
|
123
120
|
phase,
|
|
124
121
|
labelPhaseListener(
|
|
@@ -128,11 +125,27 @@ export class BuildPipelineIntegration {
|
|
|
128
125
|
);
|
|
129
126
|
}
|
|
130
127
|
|
|
128
|
+
// Per DOCUMENT as well: `reparseAndRelink` re-indexes one document from
|
|
129
|
+
// inside the `Linked` phase and fires no build-phase notification, so a
|
|
130
|
+
// batch-level listener cannot see the AST it replaced.
|
|
131
|
+
builder.onDocumentPhase(
|
|
132
|
+
DocumentState.IndexedContent,
|
|
133
|
+
labelPhaseListener(() => this.clearScopeCaches(), 'BuildPipeline.clearScopeCaches')
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
// Per document, once the builder assigned the map, whichever computation made it.
|
|
137
|
+
builder.onDocumentPhase(
|
|
138
|
+
DocumentState.ComputedScopes,
|
|
139
|
+
labelPhaseListener((document: LangiumDocument) => this.recordLocalSymbols(document), 'BuildPipeline.recordLocalSymbols')
|
|
140
|
+
);
|
|
141
|
+
|
|
131
142
|
// AST enrichment stays per-document (onDocumentPhase) and node-granular —
|
|
132
143
|
// unchanged by the build-phase-pass registry, which is batch-granular. The
|
|
133
144
|
// listener calls the `extendAst` seam directly (the document-phase analog of
|
|
134
145
|
// `runBuildPhase`); there is no per-phase handler tier — one parameterized seam.
|
|
135
|
-
for
|
|
146
|
+
// Wired for every phase unconditionally rather than for the phases the
|
|
147
|
+
// per-language registrations declare: a no-op fire is a plain listener loop.
|
|
148
|
+
for (const phase of AstExtensionPhase.all()) {
|
|
136
149
|
builder.onDocumentPhase(
|
|
137
150
|
phase,
|
|
138
151
|
labelPhaseListener(
|
|
@@ -174,6 +187,31 @@ export class BuildPipelineIntegration {
|
|
|
174
187
|
}
|
|
175
188
|
}
|
|
176
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Drop the cached scopes of every REGISTERED language, not of those owning a
|
|
192
|
+
* document in the batch. The index a scope is built from is
|
|
193
|
+
* workspace-global, so narrowing to the batch with
|
|
194
|
+
* {@link groupDocumentsByLanguage}, the way {@link callIntegrity} does,
|
|
195
|
+
* leaves a cross-grammar reference resolving against a mid-rebuild scope.
|
|
196
|
+
*/
|
|
197
|
+
protected clearScopeCaches(): void {
|
|
198
|
+
for (const languageServices of this.services.ServiceRegistry.all) {
|
|
199
|
+
languageServices.references.ScopeProvider.clearScopeCaches();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Keep `document`'s local symbols for the root they were computed for. A
|
|
205
|
+
* rebuild clears and re-keys `document.localSymbols`, and
|
|
206
|
+
* `HydraniumScopeProvider.localSymbolsOf` answers a node of the old root
|
|
207
|
+
* from what this kept.
|
|
208
|
+
*/
|
|
209
|
+
protected recordLocalSymbols(document: LangiumDocument): void {
|
|
210
|
+
if (document.localSymbols !== undefined) {
|
|
211
|
+
builtLocalSymbols.set(document.parseResult.value, document.localSymbols);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
177
215
|
/** Run AST enrichment for a single document at `phase` via its language service. */
|
|
178
216
|
protected extendAst(document: LangiumDocument, phase: DocumentState, cancelToken: CancellationToken): void {
|
|
179
217
|
this.services.ServiceRegistry.getServices(document.uri).ast.AstExtensionService.extendDocument(document, phase, cancelToken);
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
|
|
10
10
|
import { type URI } from '@hydranium/langium';
|
|
11
|
+
import { type Stopwatch } from '@hydranium/protocol';
|
|
11
12
|
|
|
12
13
|
/** What a build is about, handed to `HydraniumDocumentBuilder.createBuildSession`. */
|
|
13
14
|
export interface BuildSessionContext {
|
|
@@ -59,14 +60,14 @@ export class BuildSession {
|
|
|
59
60
|
traceId?: number;
|
|
60
61
|
/** Set when the build ended in `OperationCancelled`, so the successor can tag itself "cancels #N". */
|
|
61
62
|
cancelled = false;
|
|
62
|
-
/** Phase-reached lines produced so far; the first one measures from {@link
|
|
63
|
+
/** Phase-reached lines produced so far; the first one measures from {@link sinceStart} rather than from the previous phase. */
|
|
63
64
|
phasesLogged = 0;
|
|
64
65
|
/** Lines held back by {@link detailThresholdMs}; flushed or dropped when the build ends. */
|
|
65
66
|
readonly bufferedLines: string[] = [];
|
|
66
67
|
|
|
67
68
|
constructor(
|
|
68
|
-
/**
|
|
69
|
-
readonly
|
|
69
|
+
/** Running since the build started. */
|
|
70
|
+
readonly sinceStart: Stopwatch,
|
|
70
71
|
/** What caused this build — a formatted URI, a count summary, or an adopter label. */
|
|
71
72
|
readonly trigger: string,
|
|
72
73
|
/** True when {@link trigger} already states the document count, so a phase line must not repeat it. */
|