@hydranium/core 1.0.0-next.23 → 1.0.0-next.232
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 +21 -13
- package/lib/documents/ast-document-manager.d.ts +219 -122
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +241 -130
- 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 +79 -0
- package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
- package/lib/documents/dirty-state-tracker.js +69 -0
- package/lib/documents/dirty-state-tracker.js.map +1 -0
- package/lib/documents/document-release-handler.d.ts +179 -0
- package/lib/documents/document-release-handler.d.ts.map +1 -0
- package/lib/documents/document-release-handler.js +283 -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 +49 -0
- package/lib/documents/file-system-task-queue.d.ts.map +1 -0
- package/lib/documents/file-system-task-queue.js +34 -0
- package/lib/documents/file-system-task-queue.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +399 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +816 -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 +218 -0
- package/lib/documents/language-client-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-shadow.js +283 -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 +134 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +171 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.d.ts +32 -9
- package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.js +60 -22
- package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
- package/lib/langium/bootstrap.d.ts +23 -16
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +66 -28
- package/lib/langium/bootstrap.js.map +1 -1
- 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.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/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +10 -3
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +12 -5
- 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 +57 -16
- 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 +32 -5
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/build-session.d.ts +93 -0
- package/lib/langium/document-builder/build-session.d.ts.map +1 -0
- package/lib/langium/document-builder/build-session.js +72 -0
- package/lib/langium/document-builder/build-session.js.map +1 -0
- package/lib/langium/document-builder/document-builder.d.ts +401 -29
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +698 -61
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/document-builder/index.d.ts +1 -0
- package/lib/langium/document-builder/index.d.ts.map +1 -1
- package/lib/langium/document-builder/index.js +1 -0
- package/lib/langium/document-builder/index.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 +61 -19
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +10 -5
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +16 -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 +81 -24
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +264 -57
- 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 +29 -4
- 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 +343 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +411 -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 +61 -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 +432 -282
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +504 -438
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +157 -35
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +52 -35
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +25 -4
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +2 -1
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts +23 -0
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/naming/name-separator-validation.js +30 -1
- package/lib/langium/naming/name-separator-validation.js.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +9 -2
- 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 +31 -11
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +23 -57
- 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/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +56 -20
- package/lib/langium/scope/hydranium-scope-provider.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.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js.map +1 -1
- package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/abstract-serializer.js +12 -21
- package/lib/langium/serialization/abstract-serializer.js.map +1 -1
- package/lib/langium/serialization/json-serializer.d.ts +1 -1
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/json-serializer.js.map +1 -1
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- 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 +23 -6
- 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 +77 -26
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +46 -24
- 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 +43 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +48 -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 +50 -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.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 +294 -10
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +448 -5
- 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 +18 -14
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +10 -9
- 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 +135 -9
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +93 -14
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -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 +82 -9
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -3
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
- 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 +31 -2
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +13 -5
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +86 -17
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +101 -29
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +1 -8
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/{documents → langium/workspace}/self-save-registry.d.ts +38 -7
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +29 -16
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +48 -15
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +78 -18
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +12 -4
- package/lib/langium/workspace/write-lock-scope.js.map +1 -1
- package/lib/locale/index.d.ts +10 -0
- package/lib/locale/index.d.ts.map +1 -0
- package/lib/locale/index.js +10 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/server-locale.d.ts +73 -0
- package/lib/locale/server-locale.d.ts.map +1 -0
- package/lib/locale/server-locale.js +61 -0
- package/lib/locale/server-locale.js.map +1 -0
- 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 +92 -81
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +153 -99
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/lsp/index.d.ts +3 -1
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +3 -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/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 +8 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +13 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +54 -0
- package/lib/messages/carriers.d.ts.map +1 -0
- package/lib/messages/carriers.js +62 -0
- package/lib/messages/carriers.js.map +1 -0
- package/lib/messages/index.d.ts +25 -0
- package/lib/messages/index.d.ts.map +1 -0
- package/lib/messages/index.js +25 -0
- package/lib/messages/index.js.map +1 -0
- package/lib/messages/renderer.d.ts +142 -0
- package/lib/messages/renderer.d.ts.map +1 -0
- package/lib/messages/renderer.js +165 -0
- package/lib/messages/renderer.js.map +1 -0
- 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 +1 -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/measure-memory.d.ts.map +1 -1
- package/lib/node/measure-memory.js +1 -0
- package/lib/node/measure-memory.js.map +1 -1
- package/lib/node/memory-monitor.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +41 -6
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +109 -49
- package/lib/node/node-file-system-provider.js.map +1 -1
- package/lib/node/profile-capture.d.ts +8 -2
- package/lib/node/profile-capture.d.ts.map +1 -1
- package/lib/node/profile-capture.js +1 -1
- 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 +52 -0
- package/lib/node/rename-over-open-readers.d.ts.map +1 -0
- package/lib/node/rename-over-open-readers.js +66 -0
- package/lib/node/rename-over-open-readers.js.map +1 -0
- package/lib/node/socket-launcher.d.ts +20 -4
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +5 -4
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/stdio-launcher.d.ts +6 -5
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +2 -2
- package/lib/node/stdio-launcher.js.map +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 +16 -4
- package/lib/testing/fake-document.d.ts.map +1 -1
- package/lib/testing/fake-document.js +18 -3
- 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 +14 -0
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +28 -2
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +72 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +42 -10
- 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/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 +11 -3
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +43 -10
- 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 +14 -0
- package/lib/testing/node/spawned-server.d.ts.map +1 -1
- package/lib/testing/node/spawned-server.js +34 -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 +24 -8
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +27 -6
- package/lib/testing/playwright/server-log-capture.js.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
- package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
- package/lib/testing/run-update-pipeline.d.ts +4 -4
- package/lib/testing/run-update-pipeline.d.ts.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 +24 -65
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +26 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +78 -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 +115 -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 +7 -6
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +4 -4
- 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/util/connection-liveness.d.ts +7 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +35 -14
- package/lib/util/connection-liveness.js.map +1 -1
- package/lib/util/environment.d.ts.map +1 -1
- package/lib/util/environment.js.map +1 -1
- package/lib/util/registry.d.ts.map +1 -1
- package/package.json +32 -48
- package/src/documents/ast-document-manager.ts +379 -231
- 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 +130 -0
- package/src/documents/document-release-handler.ts +365 -0
- package/src/documents/document-release-scheduler.ts +121 -0
- package/src/documents/file-system-task-queue.ts +68 -0
- package/src/documents/hydranium-text-documents.ts +931 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +451 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/text-ledger.ts +112 -0
- package/src/documents/version-sync-service.ts +267 -0
- package/src/index.ts +8 -0
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +66 -28
- 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/logger.ts +12 -5
- package/src/langium/diagnostics/lsp-logger.ts +59 -15
- package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
- package/src/langium/document-builder/build-session.ts +87 -0
- package/src/langium/document-builder/document-builder.ts +825 -59
- package/src/langium/document-builder/index.ts +1 -0
- package/src/langium/integration-services.ts +83 -24
- package/src/langium/integrity/integrity-rule.ts +16 -8
- package/src/langium/integrity/integrity-service.ts +287 -62
- 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 +48 -7
- package/src/langium/model-service/client-session.ts +644 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +75 -0
- package/src/langium/model-service/model-service.ts +790 -468
- package/src/langium/module.ts +210 -64
- package/src/langium/naming/name-provider.ts +27 -5
- package/src/langium/naming/name-separator-validation.ts +34 -5
- package/src/langium/project/abstract-project-manager.ts +9 -1
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +46 -15
- package/src/langium/scope/hydranium-scope-provider.ts +60 -22
- package/src/langium/serialization/abstract-serializer.ts +13 -32
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +27 -6
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +104 -37
- package/src/langium/trivia/comment-preserver.ts +1100 -0
- package/src/langium/trivia/document-ending-preserver.ts +55 -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 +54 -0
- package/src/langium/trivia/trivia-service.ts +99 -0
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +537 -11
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/document-uri-policy.ts +18 -14
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +205 -17
- package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +154 -14
- package/src/langium/workspace/in-memory-file-system-provider.ts +48 -17
- package/src/langium/workspace/index.ts +1 -0
- package/src/langium/workspace/initialize-workspace.ts +43 -5
- package/src/langium/workspace/langium-documents.ts +124 -33
- package/src/langium/workspace/persistent-file-system-provider.ts +1 -8
- package/src/{documents → langium/workspace}/self-save-registry.ts +54 -15
- package/src/langium/workspace/virtual-document.ts +96 -19
- package/src/langium/workspace/write-lock-scope.ts +24 -11
- package/src/locale/index.ts +10 -0
- package/src/locale/server-locale.ts +86 -0
- 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 +187 -108
- package/src/lsp/index.ts +3 -1
- package/src/lsp/lsp-latency.ts +62 -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 +13 -7
- package/src/messages/carriers.ts +78 -0
- package/src/messages/index.ts +36 -0
- package/src/messages/renderer.ts +212 -0
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +1 -1
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/measure-memory.ts +1 -0
- package/src/node/node-file-system-provider.ts +124 -53
- package/src/node/profile-capture.ts +9 -3
- package/src/node/profiling-run.ts +30 -8
- package/src/node/rename-over-open-readers.ts +78 -0
- package/src/node/socket-launcher.ts +24 -8
- package/src/node/stdio-launcher.ts +8 -7
- package/src/testing/fake-document.ts +24 -5
- package/src/testing/index.ts +2 -1
- package/src/testing/langium-test-helpers.ts +1 -0
- package/src/testing/make-noop-shared-services.ts +50 -2
- package/src/testing/make-test-services.ts +125 -31
- package/src/testing/make-test-tracer.ts +26 -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 +66 -12
- package/src/testing/node/scratch-workspace.ts +10 -5
- package/src/testing/node/spawned-server.ts +36 -2
- 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 +45 -11
- package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
- package/src/testing/run-update-pipeline.ts +4 -4
- package/src/testing/stub-ast-document-manager.ts +36 -138
- package/src/testing/stub-document-builder.ts +102 -18
- package/src/testing/stub-hydranium-text-documents.ts +165 -27
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +9 -8
- 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 +1 -1
- package/src/util/connection-liveness.ts +37 -14
- package/src/util/environment.ts +9 -1
- 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.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/lsp/instrument-connection.ts +0 -66
- package/src/node/process-memory.ts +0 -299
|
@@ -24,6 +24,17 @@ export default class ServerLogRenameReporter {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
onEnd(): void {
|
|
27
|
-
renameServerLogs(this.dir);
|
|
27
|
+
const unattributed = renameServerLogs(this.dir);
|
|
28
|
+
if (unattributed.length > 0) {
|
|
29
|
+
// Loud, because the alternative is a capture run that reads as
|
|
30
|
+
// complete: these logs exist and have content, but are named by an
|
|
31
|
+
// opaque workspace token and carry no test boundaries, so nothing
|
|
32
|
+
// about them says which spec they belong to.
|
|
33
|
+
console.warn(
|
|
34
|
+
`[server-log] ${unattributed.length} captured log(s) belong to no test: ${unattributed.join(', ')}.\n` +
|
|
35
|
+
'[server-log] Those specs never marked a boundary — apply the `serverLog` fixture, ' +
|
|
36
|
+
'or call `markServerLog`/`attachServerLog` from the suite, or their logs cannot be read per test.'
|
|
37
|
+
);
|
|
38
|
+
}
|
|
28
39
|
}
|
|
29
40
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Driver for the structured-write transform chain — the rewrite registry plus
|
|
12
|
-
* the serializer — run the way `
|
|
12
|
+
* the serializer — run the way a session's `update` runs it.
|
|
13
13
|
*
|
|
14
14
|
* # Why a driver and not a documented recipe
|
|
15
15
|
*
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
* This runs rewrite → serialize and stops. It does NOT open the document, push
|
|
39
39
|
* text into the multi-client store, drive a build or return an
|
|
40
40
|
* {@link AstDocument}: those need a live workspace, and a test that wants them
|
|
41
|
-
* should call `
|
|
41
|
+
* should call a session's `update` itself rather than a driver standing in for
|
|
42
42
|
* it. What is left is the part with no observable of its own — the text and the
|
|
43
43
|
* rewritten model — which is why it needed lifting.
|
|
44
44
|
*
|
|
@@ -61,7 +61,7 @@ export interface UpdatePipelineArgs<TTransfer extends TransferElement = Transfer
|
|
|
61
61
|
* rather than merely labelling it.
|
|
62
62
|
*/
|
|
63
63
|
readonly uri: string;
|
|
64
|
-
/** Transfer-model payload, as an adopter caller would hand it to `
|
|
64
|
+
/** Transfer-model payload, as an adopter caller would hand it to a session's `update`. */
|
|
65
65
|
readonly model: TTransfer;
|
|
66
66
|
/**
|
|
67
67
|
* Previous AST root threaded into every rewrite, so a diff-based rewrite can
|
|
@@ -90,7 +90,7 @@ export interface UpdatePipelineResult<TTransfer extends TransferElement = Transf
|
|
|
90
90
|
* surface but it makes the precise assertion unavailable.
|
|
91
91
|
*/
|
|
92
92
|
readonly rewritten: TTransfer;
|
|
93
|
-
/** The serialized text, which is what `
|
|
93
|
+
/** The serialized text, which is what a session's `update` applies to the store. */
|
|
94
94
|
readonly text: string;
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -9,27 +9,21 @@
|
|
|
9
9
|
|
|
10
10
|
import { type AstNode, type LangiumDocument, UriUtils } from '@hydranium/langium';
|
|
11
11
|
import { Disposable } from 'vscode-languageserver';
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from '
|
|
18
|
-
import type { CloseModelArgs, OpenModelArgs } from '@hydranium/protocol';
|
|
12
|
+
import { type AstDiagnostic } from '../langium/validation/document-validator.js';
|
|
13
|
+
import { AstDocument, type AstDocumentManager, type UpdateAttribution } from '../documents/ast-document-manager.js';
|
|
14
|
+
import { type WritableFileSystemProvider } from '../langium/workspace/file-system-provider.js';
|
|
15
|
+
import { UNKNOWN_CLIENT_ID } from '../documents/client-ids.js';
|
|
16
|
+
import { DefaultModelLedger, type ModelLedger } from '../documents/model-ledger.js';
|
|
17
|
+
import { type CloseModelArgs, type OpenModelArgs } from '@hydranium/protocol';
|
|
19
18
|
import type { StubHydraniumTextDocuments } from './stub-hydranium-text-documents.js';
|
|
20
19
|
import type { StubLangiumDocuments } from './stub-langium-documents.js';
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
|
-
* Minimal stub of {@link AstDocumentManager} for use in test
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* through {@link StubAstDocumentManager.emitUpdate} because the stub tree runs
|
|
29
|
-
* no build phases to emit from, and the remaining read helpers
|
|
30
|
-
* (`isDirectChange`, `getAuthor`, `readFile`) throw if invoked — tests that
|
|
31
|
-
* need them should wire a richer stub or use the real
|
|
32
|
-
* {@link AstDocumentManager}.
|
|
22
|
+
* Minimal stub of {@link AstDocumentManager} for use in test harnesses,
|
|
23
|
+
* implementing what the model service and client sessions call. `getAuthor`
|
|
24
|
+
* throws if invoked, and `attributeUpdate` reports every update as its
|
|
25
|
+
* author's change; tests that need either should wire a richer stub or use
|
|
26
|
+
* the real {@link AstDocumentManager}.
|
|
33
27
|
*
|
|
34
28
|
* Open state is tracked per URI as the set of holding client ids, so a
|
|
35
29
|
* document stays open until its last client closes. The stub forwards
|
|
@@ -45,75 +39,20 @@ import type { StubLangiumDocuments } from './stub-langium-documents.js';
|
|
|
45
39
|
* are still picked so signature drift on them produces a compile
|
|
46
40
|
* error rather than silent divergence.
|
|
47
41
|
*/
|
|
48
|
-
export interface StubAstDocumentManager<TAst extends AstNode, TDiagnostic =
|
|
42
|
+
export interface StubAstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic> extends Pick<
|
|
49
43
|
AstDocumentManager<TAst, TDiagnostic>,
|
|
50
|
-
| '
|
|
51
|
-
| 'close'
|
|
52
|
-
| 'isOpen'
|
|
53
|
-
| 'update'
|
|
54
|
-
| 'save'
|
|
55
|
-
| 'onUpdate'
|
|
56
|
-
| 'onSave'
|
|
57
|
-
| 'onClientClosed'
|
|
58
|
-
| 'getAuthor'
|
|
59
|
-
| 'getDocument'
|
|
60
|
-
| 'isDirectChange'
|
|
61
|
-
| 'readFile'
|
|
44
|
+
'open' | 'close' | 'isOpen' | 'update' | 'save' | 'getAuthor' | 'getDocument' | 'toAstDocument' | 'attributeUpdate'
|
|
62
45
|
> {
|
|
63
46
|
readonly openClients: Map<string, Set<string>>;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Deliver an update event to every live {@link StubAstDocumentManager.onUpdate}
|
|
67
|
-
* subscriber for `uri`. Returns how many listeners received it.
|
|
68
|
-
*
|
|
69
|
-
* **This exists because `onUpdate` cannot fire on its own, and that is a
|
|
70
|
-
* trap without a driver.** The real manager emits from a
|
|
71
|
-
* `DocumentBuilder.onDocumentPhase(Validated)` hook; a `makeTestServices`
|
|
72
|
-
* tree has a stub builder that runs no phases, so a subscription made
|
|
73
|
-
* through the stub would never be called. A test written as
|
|
74
|
-
* `onUpdate(uri, …); await tick(); expect(events).toHaveLength(0)` therefore
|
|
75
|
-
* passes for the wrong reason — the listener was never wired to anything —
|
|
76
|
-
* and reads as coverage of a suppression path it never reached. Driving the
|
|
77
|
-
* event explicitly is what lets such a test first prove delivery works, so
|
|
78
|
-
* the negative assertion means something.
|
|
79
|
-
*
|
|
80
|
-
* **The return value is the point, not a convenience.** `0` says no
|
|
81
|
-
* subscriber for that URI was registered, which is the state a negative
|
|
82
|
-
* assertion cannot distinguish from correct suppression. Assert it is
|
|
83
|
-
* non-zero before believing an empty event list.
|
|
84
|
-
*
|
|
85
|
-
* Two alternatives were rejected. Making `onUpdate` THROW would fence the
|
|
86
|
-
* hazard at zero API cost, but this harness ships (`files: ["lib", "src"]`)
|
|
87
|
-
* and an adopter subclass or test that subscribes and legitimately ignores
|
|
88
|
-
* the event would start failing on a stub it never asked to fire. Wiring the
|
|
89
|
-
* stub to the text-document store's change notifications — the way `onSave`
|
|
90
|
-
* is wired — would make it fire on its own, which moves the pass reason of
|
|
91
|
-
* every existing suite on a `makeTestServices` tree and asserts a phase
|
|
92
|
-
* semantics (`Validated`, with the real manager's author lookup and
|
|
93
|
-
* `changed`/`deleted`/`rebuilt` classification) that no stub tree has.
|
|
94
|
-
*/
|
|
95
|
-
emitUpdate(uri: string, event: AstDocumentUpdatedEvent<TAst, TDiagnostic>): number;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* How many live {@link StubAstDocumentManager.onUpdate} subscribers `uri`
|
|
99
|
-
* has, or the total across every URI when called with no argument.
|
|
100
|
-
*
|
|
101
|
-
* Read from outside — it is what a test asserts to show a subscription was
|
|
102
|
-
* actually established, and what makes {@link emitUpdate}'s `0` legible.
|
|
103
|
-
*/
|
|
104
|
-
updateSubscriptions(uri?: string): number;
|
|
105
47
|
}
|
|
106
48
|
|
|
107
|
-
export function makeStubAstDocumentManager<TAst extends AstNode, TDiagnostic =
|
|
49
|
+
export function makeStubAstDocumentManager<TAst extends AstNode, TDiagnostic extends AstDiagnostic = AstDiagnostic>(
|
|
108
50
|
textDocuments: StubHydraniumTextDocuments,
|
|
109
51
|
fileSystem: Pick<WritableFileSystemProvider, 'writeFile'>,
|
|
110
|
-
documents?: StubLangiumDocuments<TAst, TDiagnostic
|
|
52
|
+
documents?: StubLangiumDocuments<TAst, TDiagnostic>,
|
|
53
|
+
ledger: ModelLedger = new DefaultModelLedger()
|
|
111
54
|
): StubAstDocumentManager<TAst, TDiagnostic> {
|
|
112
55
|
const openClients = new Map<string, Set<string>>();
|
|
113
|
-
// Keyed by the URI as given, not canonicalized: the stub has no URI policy,
|
|
114
|
-
// and `getDocument` below looks documents up by their given URI for the same
|
|
115
|
-
// reason, so both halves agree on identity.
|
|
116
|
-
const updateListeners = new Map<string, Set<(event: AstDocumentUpdatedEvent<TAst, TDiagnostic>) => void>>();
|
|
117
56
|
const notSupported = (method: string): never => {
|
|
118
57
|
throw new Error(`StubAstDocumentManager.${method} is not implemented; wire the real AstDocumentManager if your test needs it.`);
|
|
119
58
|
};
|
|
@@ -131,10 +70,13 @@ export function makeStubAstDocumentManager<TAst extends AstNode, TDiagnostic = u
|
|
|
131
70
|
clients.add(args.clientId);
|
|
132
71
|
openClients.set(args.uri, clients);
|
|
133
72
|
// The real `open` materialises the synced document (from the payload
|
|
134
|
-
// text or the filesystem)
|
|
135
|
-
//
|
|
73
|
+
// text or the filesystem), or attaches the client to the one that is
|
|
74
|
+
// there; mirror both so a subsequent `update` finds the document open
|
|
75
|
+
// for this client.
|
|
136
76
|
if (!textDocuments.get(args.uri)) {
|
|
137
77
|
textDocuments.seedOpen(args.uri, args.text ?? '', args.clientId);
|
|
78
|
+
} else {
|
|
79
|
+
textDocuments.attachClient(args.uri, args.clientId);
|
|
138
80
|
}
|
|
139
81
|
return Disposable.create(() => close({ uri: args.uri, clientId: args.clientId }));
|
|
140
82
|
},
|
|
@@ -147,78 +89,34 @@ export function makeStubAstDocumentManager<TAst extends AstNode, TDiagnostic = u
|
|
|
147
89
|
// (step iff the content changed) — no fabricated version numbers.
|
|
148
90
|
return textDocuments.applyContentChange(uri, text, clientId);
|
|
149
91
|
},
|
|
150
|
-
async save(uri: string, clientId: string): Promise<
|
|
92
|
+
async save(uri: string, clientId: string): Promise<number> {
|
|
151
93
|
const text = textDocuments.get(uri)?.getText() ?? '';
|
|
94
|
+
const version = textDocuments.version(uri);
|
|
152
95
|
await fileSystem.writeFile(UriUtils.toUri(uri), text);
|
|
153
96
|
textDocuments.notifyDidSaveTextDocument({ textDocument: { uri }, text }, clientId);
|
|
154
|
-
|
|
155
|
-
// Registers the listener but never calls it by itself — the real manager
|
|
156
|
-
// emits from a `DocumentBuilder.onDocumentPhase(Validated)` hook and the
|
|
157
|
-
// stub tree runs no phases. `emitUpdate` is the only thing that fires it;
|
|
158
|
-
// see its declaration for why that is a driver rather than a throw or an
|
|
159
|
-
// autonomous wiring.
|
|
160
|
-
onUpdate(uri: string, listener: (event: AstDocumentUpdatedEvent<TAst, TDiagnostic>) => void): Disposable {
|
|
161
|
-
const listeners = updateListeners.get(uri) ?? new Set<(event: AstDocumentUpdatedEvent<TAst, TDiagnostic>) => void>();
|
|
162
|
-
listeners.add(listener);
|
|
163
|
-
updateListeners.set(uri, listeners);
|
|
164
|
-
return Disposable.create(() => {
|
|
165
|
-
listeners.delete(listener);
|
|
166
|
-
if (listeners.size === 0) {
|
|
167
|
-
updateListeners.delete(uri);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
},
|
|
171
|
-
emitUpdate(uri: string, event: AstDocumentUpdatedEvent<TAst, TDiagnostic>): number {
|
|
172
|
-
// Snapshot before iterating: a listener that disposes itself on first
|
|
173
|
-
// delivery would otherwise mutate the set mid-iteration.
|
|
174
|
-
const listeners = [...(updateListeners.get(uri) ?? [])];
|
|
175
|
-
for (const listener of listeners) {
|
|
176
|
-
listener(event);
|
|
177
|
-
}
|
|
178
|
-
return listeners.length;
|
|
179
|
-
},
|
|
180
|
-
updateSubscriptions(uri?: string): number {
|
|
181
|
-
if (uri !== undefined) {
|
|
182
|
-
return updateListeners.get(uri)?.size ?? 0;
|
|
183
|
-
}
|
|
184
|
-
let total = 0;
|
|
185
|
-
for (const listeners of updateListeners.values()) {
|
|
186
|
-
total += listeners.size;
|
|
187
|
-
}
|
|
188
|
-
return total;
|
|
189
|
-
},
|
|
190
|
-
onSave(uri: string, listener: (event: { document: AstDocument<TAst, TDiagnostic>; sourceClientId: string }) => void): Disposable {
|
|
191
|
-
return textDocuments.onDidSave(event => {
|
|
192
|
-
if (event.document.uri !== uri) {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
listener({
|
|
196
|
-
document: { uri, version: textDocuments.version(uri), root: undefined as unknown as TAst, diagnostics: [] as TDiagnostic[] },
|
|
197
|
-
sourceClientId: event.clientId
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
},
|
|
201
|
-
onClientClosed(uri: string, clientId: string, listener: () => void): Disposable {
|
|
202
|
-
return textDocuments.onDidClose(event => {
|
|
203
|
-
if (event.clientId === clientId && event.document.uri === uri) {
|
|
204
|
-
listener();
|
|
205
|
-
}
|
|
206
|
-
});
|
|
97
|
+
return version;
|
|
207
98
|
},
|
|
208
99
|
getAuthor(): string {
|
|
209
100
|
return notSupported('getAuthor');
|
|
210
101
|
},
|
|
102
|
+
// Reports every event as a change by the version's author: the stub
|
|
103
|
+
// tree runs no builds, so there is no delivery to tell a rebuild by. A
|
|
104
|
+
// test of the rebuilt branch replaces this method or uses the real
|
|
105
|
+
// manager.
|
|
106
|
+
attributeUpdate(document: LangiumDocument): UpdateAttribution {
|
|
107
|
+
const author = textDocuments.getAuthor(document.textDocument.uri, document.textDocument.version) ?? UNKNOWN_CLIENT_ID;
|
|
108
|
+
return { reason: 'changed', sourceClientId: author, causedBy: author };
|
|
109
|
+
},
|
|
211
110
|
// Canonicalizing document gateway. The stub has no canonicalizer, so it looks
|
|
212
111
|
// the document up in the seeded `StubLangiumDocuments` by its given URI (tests
|
|
213
112
|
// that need real symlink canonicalization wire the real AstDocumentManager).
|
|
214
113
|
getDocument(uri: string): LangiumDocument | undefined {
|
|
215
114
|
return documents?.getDocument(UriUtils.toUri(uri));
|
|
216
115
|
},
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
return notSupported(`readFile(${uri})`);
|
|
116
|
+
toAstDocument(document: LangiumDocument): AstDocument<TAst, TDiagnostic> {
|
|
117
|
+
const uri = document.textDocument.uri;
|
|
118
|
+
const root = document.parseResult.value as TAst;
|
|
119
|
+
return AstDocument.create<TAst, TDiagnostic>(uri, ledger.versionOf(root), root, document.diagnostics as TDiagnostic[] | undefined);
|
|
222
120
|
}
|
|
223
121
|
};
|
|
224
122
|
}
|
|
@@ -9,13 +9,17 @@
|
|
|
9
9
|
|
|
10
10
|
import {
|
|
11
11
|
type DocumentBuilder,
|
|
12
|
+
type DocumentBuildListener,
|
|
12
13
|
type DocumentPhaseListener,
|
|
13
14
|
type DocumentState,
|
|
14
15
|
type DocumentUpdateListener,
|
|
16
|
+
isOperationCancelled,
|
|
15
17
|
type LangiumDocument,
|
|
16
|
-
type URI
|
|
18
|
+
type URI,
|
|
19
|
+
type WorkspaceLock
|
|
17
20
|
} from '@hydranium/langium';
|
|
18
21
|
import { type CancellationToken, Disposable } from 'vscode-languageserver';
|
|
22
|
+
import { HydraniumDocumentBuilder } from '../langium/document-builder/document-builder.js';
|
|
19
23
|
|
|
20
24
|
/** Recorded call to a stubbed {@link DocumentBuilder} method. */
|
|
21
25
|
export interface RecordedBuilderCall<TArgs extends unknown[]> {
|
|
@@ -45,8 +49,7 @@ export interface StubWaitUntilGate {
|
|
|
45
49
|
|
|
46
50
|
/**
|
|
47
51
|
* Stub for Langium's {@link DocumentBuilder}. Implements the slice production
|
|
48
|
-
* code reads
|
|
49
|
-
* `onDocumentPhase` / `onUpdate`) plus test-only helpers:
|
|
52
|
+
* code reads on the framework's test paths, plus test-only helpers:
|
|
50
53
|
*
|
|
51
54
|
* - {@link firePhase} — synchronously dispatch the registered phase
|
|
52
55
|
* listener(s) for a document, simulating a build completing.
|
|
@@ -64,16 +67,17 @@ export interface StubWaitUntilGate {
|
|
|
64
67
|
* Picks the methods the framework reads from {@link DocumentBuilder} on
|
|
65
68
|
* the slot path — the compiler enforces those signatures stay aligned.
|
|
66
69
|
* `update`, `onDocumentPhase`, `onUpdate`, and `waitUntil` carry stubbed
|
|
67
|
-
* implementations
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
+
* implementations, and `scheduleUpdate` calls `update` in one lock write per
|
|
71
|
+
* call (see {@link makeStubDocumentBuilder}); `build`, `onBuildPhase`, and
|
|
72
|
+
* `resetToState` are implemented as loud-failing `notSupported` throwers
|
|
73
|
+
* so production code that goes through the cast at the bind site (i.e. accesses methods the
|
|
70
74
|
* stub claims but doesn't meaningfully implement) fails with a clear
|
|
71
75
|
* message instead of "undefined is not a function".
|
|
72
76
|
*/
|
|
73
|
-
export interface StubDocumentBuilder
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
> {
|
|
77
|
+
export interface StubDocumentBuilder
|
|
78
|
+
extends
|
|
79
|
+
Pick<DocumentBuilder, 'update' | 'onDocumentPhase' | 'onUpdate' | 'build' | 'onBuildPhase' | 'resetToState' | 'updateBuildOptions'>,
|
|
80
|
+
Pick<HydraniumDocumentBuilder, 'onDocumentPhaseDelivered' | 'scheduleUpdate' | 'finalBuildState'> {
|
|
77
81
|
/**
|
|
78
82
|
* Single-overload stub of {@link DocumentBuilder.waitUntil}. Real has
|
|
79
83
|
* two overloads (`(state, cancelToken?): Promise<void>` and
|
|
@@ -87,13 +91,22 @@ export interface StubDocumentBuilder extends Pick<
|
|
|
87
91
|
readonly waitUntilCalls: ReadonlyArray<RecordedBuilderCall<[DocumentState, URI | undefined]>>;
|
|
88
92
|
/**
|
|
89
93
|
* Synchronously fire the phase listener(s) registered for `state` with
|
|
90
|
-
* `document
|
|
91
|
-
*
|
|
92
|
-
*
|
|
94
|
+
* `document`, then, unless a listener was cancelled, the
|
|
95
|
+
* `onDocumentPhaseDelivered` listeners. `cancelToken` defaults to a
|
|
96
|
+
* non-cancelled token; pass a cancelled token to simulate a build preempted
|
|
97
|
+
* by a concurrent write lock.
|
|
93
98
|
*/
|
|
94
99
|
firePhase(state: DocumentState, document: LangiumDocument, cancelToken?: CancellationToken): void;
|
|
95
100
|
/** Synchronously fire every registered `onUpdate` listener. */
|
|
96
101
|
fireOnUpdate(changed: URI[], deleted: URI[]): void;
|
|
102
|
+
/**
|
|
103
|
+
* Synchronously fire the BUILD-phase listener(s) for `state` with the whole
|
|
104
|
+
* batch. The per-build counterpart of {@link firePhase}: a subject that
|
|
105
|
+
* reports once per build rather than once per document subscribes here, and
|
|
106
|
+
* a stub that only fired {@link firePhase} would leave it silent while
|
|
107
|
+
* looking wired.
|
|
108
|
+
*/
|
|
109
|
+
fireBuildPhase(state: DocumentState, built: LangiumDocument[], cancelToken?: CancellationToken): void;
|
|
97
110
|
/**
|
|
98
111
|
* Hold the next {@link waitUntil} call. The returned handle releases it;
|
|
99
112
|
* the call's return value resolves on the next tick after `resolve` runs.
|
|
@@ -128,9 +141,16 @@ function reraise(result: unknown): void {
|
|
|
128
141
|
* want to observe rebuilt state should `set` the new root on the document
|
|
129
142
|
* registry and then call `firePhase` to trigger the framework's post-build
|
|
130
143
|
* read path.
|
|
144
|
+
*
|
|
145
|
+
* `workspaceLock` is the lock `scheduleUpdate` writes under, without the real
|
|
146
|
+
* builder's sharing: pass the services tree's own, so a caller's lock ordering
|
|
147
|
+
* and reentrancy behave as against the real builder. Without one,
|
|
148
|
+
* `scheduleUpdate` records the update unlocked.
|
|
131
149
|
*/
|
|
132
|
-
export function makeStubDocumentBuilder(): StubDocumentBuilder {
|
|
150
|
+
export function makeStubDocumentBuilder(workspaceLock?: WorkspaceLock): StubDocumentBuilder {
|
|
133
151
|
const phaseListeners = new Map<DocumentState, DocumentPhaseListener[]>();
|
|
152
|
+
const deliveredListeners = new Map<DocumentState, Array<(document: LangiumDocument, version: number) => void>>();
|
|
153
|
+
const buildPhaseListeners = new Map<DocumentState, DocumentBuildListener[]>();
|
|
134
154
|
const onUpdateListeners: DocumentUpdateListener[] = [];
|
|
135
155
|
const gates: Array<{ take(release: () => void): void }> = [];
|
|
136
156
|
const updateCalls: RecordedBuilderCall<[URI[], URI[]]>[] = [];
|
|
@@ -140,6 +160,11 @@ export function makeStubDocumentBuilder(): StubDocumentBuilder {
|
|
|
140
160
|
throw new Error(`StubDocumentBuilder.${method} is not implemented; wire a real DocumentBuilder if your test needs it.`);
|
|
141
161
|
};
|
|
142
162
|
const stub: StubDocumentBuilder = {
|
|
163
|
+
// Langium's own default, so a session write waits for `Validated` here
|
|
164
|
+
// as it does against the real builder.
|
|
165
|
+
updateBuildOptions: { validation: { categories: ['built-in', 'fast'] } },
|
|
166
|
+
// The real rule, read off this stub's options, so the two cannot drift.
|
|
167
|
+
finalBuildState: () => HydraniumDocumentBuilder.prototype.finalBuildState.call(stub),
|
|
143
168
|
get updateCalls() {
|
|
144
169
|
return updateCalls;
|
|
145
170
|
},
|
|
@@ -149,6 +174,9 @@ export function makeStubDocumentBuilder(): StubDocumentBuilder {
|
|
|
149
174
|
async update(changed: URI[], deleted: URI[]) {
|
|
150
175
|
updateCalls.push({ args: [changed, deleted] });
|
|
151
176
|
},
|
|
177
|
+
scheduleUpdate(changed: URI[], deleted: URI[]) {
|
|
178
|
+
return workspaceLock ? workspaceLock.write(() => stub.update(changed, deleted)) : stub.update(changed, deleted);
|
|
179
|
+
},
|
|
152
180
|
async waitUntil(state: DocumentState, uri?: URI) {
|
|
153
181
|
waitUntilCalls.push({ args: [state, uri] });
|
|
154
182
|
const gate = gates.shift();
|
|
@@ -185,15 +213,73 @@ export function makeStubDocumentBuilder(): StubDocumentBuilder {
|
|
|
185
213
|
onCancellationRequested: () => Disposable.create(() => undefined)
|
|
186
214
|
} as CancellationToken);
|
|
187
215
|
const listeners = phaseListeners.get(state) ?? [];
|
|
216
|
+
const delivered = deliveredListeners.get(state) ?? [];
|
|
217
|
+
// Taken before the listeners, as the real builder does: one of them
|
|
218
|
+
// may stand in for a write that moves the version on. Read only when
|
|
219
|
+
// someone is told, since many fakes carry no text document.
|
|
220
|
+
const version = delivered.length > 0 ? document.textDocument.version : 0;
|
|
221
|
+
// As the real builder: a listener reached on a cancelled token, or
|
|
222
|
+
// throwing OperationCancelled, counts as cancelled and withholds the
|
|
223
|
+
// delivered listeners.
|
|
224
|
+
let cancelledListeners = 0;
|
|
188
225
|
for (const listener of listeners) {
|
|
189
|
-
|
|
226
|
+
if (token.isCancellationRequested) {
|
|
227
|
+
cancelledListeners++;
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
reraise(listener(document, token));
|
|
232
|
+
} catch (err: unknown) {
|
|
233
|
+
if (!isOperationCancelled(err)) {
|
|
234
|
+
throw err;
|
|
235
|
+
}
|
|
236
|
+
cancelledListeners++;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (cancelledListeners === 0) {
|
|
240
|
+
for (const listener of delivered) {
|
|
241
|
+
listener(document, version);
|
|
242
|
+
}
|
|
190
243
|
}
|
|
191
244
|
},
|
|
245
|
+
onDocumentPhaseDelivered(state: DocumentState, listener: (document: LangiumDocument, version: number) => void) {
|
|
246
|
+
const list = deliveredListeners.get(state) ?? [];
|
|
247
|
+
list.push(listener);
|
|
248
|
+
deliveredListeners.set(state, list);
|
|
249
|
+
return Disposable.create(() => {
|
|
250
|
+
const idx = list.indexOf(listener);
|
|
251
|
+
if (idx >= 0) {
|
|
252
|
+
list.splice(idx, 1);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
},
|
|
192
256
|
fireOnUpdate(changed: URI[], deleted: URI[]) {
|
|
193
257
|
for (const listener of onUpdateListeners.slice()) {
|
|
194
258
|
reraise(listener(changed, deleted));
|
|
195
259
|
}
|
|
196
260
|
},
|
|
261
|
+
onBuildPhase(state: DocumentState, listener: DocumentBuildListener) {
|
|
262
|
+
const list = buildPhaseListeners.get(state) ?? [];
|
|
263
|
+
list.push(listener);
|
|
264
|
+
buildPhaseListeners.set(state, list);
|
|
265
|
+
return Disposable.create(() => {
|
|
266
|
+
const idx = list.indexOf(listener);
|
|
267
|
+
if (idx >= 0) {
|
|
268
|
+
list.splice(idx, 1);
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
},
|
|
272
|
+
fireBuildPhase(state: DocumentState, built: LangiumDocument[], cancelToken?: CancellationToken) {
|
|
273
|
+
const token =
|
|
274
|
+
cancelToken ??
|
|
275
|
+
({
|
|
276
|
+
isCancellationRequested: false,
|
|
277
|
+
onCancellationRequested: () => Disposable.create(() => undefined)
|
|
278
|
+
} as CancellationToken);
|
|
279
|
+
for (const listener of buildPhaseListeners.get(state) ?? []) {
|
|
280
|
+
reraise(listener(built, token));
|
|
281
|
+
}
|
|
282
|
+
},
|
|
197
283
|
gateNextWaitUntil(): StubWaitUntilGate {
|
|
198
284
|
let release: (() => void) | undefined;
|
|
199
285
|
const entry = {
|
|
@@ -224,14 +310,12 @@ export function makeStubDocumentBuilder(): StubDocumentBuilder {
|
|
|
224
310
|
build() {
|
|
225
311
|
return notSupported('build');
|
|
226
312
|
},
|
|
227
|
-
onBuildPhase() {
|
|
228
|
-
return notSupported('onBuildPhase');
|
|
229
|
-
},
|
|
230
313
|
resetToState() {
|
|
231
314
|
return notSupported('resetToState');
|
|
232
315
|
},
|
|
233
316
|
reset() {
|
|
234
317
|
phaseListeners.clear();
|
|
318
|
+
deliveredListeners.clear();
|
|
235
319
|
onUpdateListeners.length = 0;
|
|
236
320
|
gates.length = 0;
|
|
237
321
|
updateCalls.length = 0;
|