@hydranium/core 1.0.0-next.35 → 1.0.0-next.351
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 +142 -0
- package/lib/langium/diagnostics/console-tee.js.map +1 -0
- package/lib/langium/diagnostics/format-log-arg.d.ts +18 -0
- package/lib/langium/diagnostics/format-log-arg.d.ts.map +1 -0
- package/lib/langium/diagnostics/format-log-arg.js +36 -0
- package/lib/langium/diagnostics/format-log-arg.js.map +1 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/log-preamble.js +1 -1
- package/lib/langium/diagnostics/log-preamble.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +25 -6
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +49 -17
- package/lib/langium/diagnostics/logger.js.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.d.ts +25 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +81 -45
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
- package/lib/langium/diagnostics/server-tracer.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/build-session.d.ts +6 -5
- package/lib/langium/document-builder/build-session.d.ts.map +1 -1
- package/lib/langium/document-builder/build-session.js +5 -5
- package/lib/langium/document-builder/build-session.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +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/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +18 -4
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +383 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +455 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +2 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +2 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-events.d.ts +66 -0
- package/lib/langium/model-service/model-events.d.ts.map +1 -0
- package/lib/langium/model-service/model-events.js +10 -0
- package/lib/langium/model-service/model-events.js.map +1 -0
- package/lib/langium/model-service/model-service.d.ts +456 -300
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +571 -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 +38 -14
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +24 -58
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
- package/lib/langium/scope/fallback-scope.d.ts +27 -0
- package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
- package/lib/langium/scope/fallback-scope.js +35 -0
- package/lib/langium/scope/fallback-scope.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js +38 -39
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +115 -32
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +201 -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/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 +1 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +1 -0
- package/lib/langium/workspace/index.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +68 -3
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +7 -0
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +18 -1
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/self-save-registry.d.ts +84 -0
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +55 -21
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +87 -24
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +15 -5
- package/lib/langium/workspace/write-lock-scope.js.map +1 -1
- package/lib/launcher/integrated-server.d.ts +3 -1
- package/lib/launcher/integrated-server.d.ts.map +1 -1
- package/lib/locale/server-locale.d.ts +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 +151 -0
- package/src/langium/diagnostics/format-log-arg.ts +36 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +51 -17
- package/src/langium/diagnostics/lsp-logger.ts +83 -44
- package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
- package/src/langium/document-builder/build-session.ts +4 -3
- package/src/langium/document-builder/document-builder.ts +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/language-module.ts +49 -8
- 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 +878 -494
- package/src/langium/module.ts +195 -72
- package/src/langium/naming/name-provider.ts +34 -8
- package/src/langium/project/abstract-project-manager.ts +13 -5
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +54 -19
- package/src/langium/scope/fallback-scope.ts +38 -0
- package/src/langium/scope/hydranium-scope-computation.ts +45 -44
- package/src/langium/scope/hydranium-scope-provider.ts +228 -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/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 +1 -0
- package/src/langium/workspace/initialize-workspace.ts +96 -4
- package/src/langium/workspace/langium-documents.ts +19 -1
- package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
- package/src/langium/workspace/self-save-registry.ts +118 -0
- package/src/langium/workspace/virtual-document.ts +106 -25
- package/src/langium/workspace/write-lock-scope.ts +27 -12
- package/src/launcher/integrated-server.ts +3 -1
- package/src/locale/server-locale.ts +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
|
@@ -24,11 +24,12 @@ import {
|
|
|
24
24
|
type AstNodeLocator,
|
|
25
25
|
AstUtils,
|
|
26
26
|
DefaultScopeProvider,
|
|
27
|
+
type LocalSymbols,
|
|
27
28
|
MapScope,
|
|
29
|
+
MultiMapScope,
|
|
28
30
|
type ReferenceInfo,
|
|
29
31
|
type Scope,
|
|
30
32
|
type ScopeOptions,
|
|
31
|
-
StreamScope,
|
|
32
33
|
type URI,
|
|
33
34
|
UriUtils,
|
|
34
35
|
WorkspaceCache,
|
|
@@ -39,8 +40,9 @@ import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
|
39
40
|
import { type HydraniumLanguageServices } from '../language-module.js';
|
|
40
41
|
import { type NameProvider } from '../naming/name-provider.js';
|
|
41
42
|
import { type HydraniumDocumentRegistry } from '../workspace/langium-documents.js';
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
43
|
+
import { FallbackScope } from './fallback-scope.js';
|
|
44
|
+
import { type ScopeExtensionDescriptions, type ScopeExtensionService } from './scope-extension-service.js';
|
|
45
|
+
import { type TieredAstNodeDescription, isTieredDescription } from './scoped-ast-node-description.js';
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
48
|
* Construction-time options for {@link HydraniumScopeProvider}. Extends
|
|
@@ -95,7 +97,7 @@ export interface ScopeContext {
|
|
|
95
97
|
/**
|
|
96
98
|
* Per-language scope provider that owns the full scope chain in ONE
|
|
97
99
|
* class. Bridges the protocol-layer {@link ReferenceContext} to
|
|
98
|
-
* Langium's {@link ReferenceInfo}, layers
|
|
100
|
+
* Langium's {@link ReferenceInfo}, layers scope-extension
|
|
99
101
|
* contributions ({@link ScopeExtensionService}) at their declared tier,
|
|
100
102
|
* and composes the cached project-tier chain (own-project → dependency
|
|
101
103
|
* → universal) on top of Langium's unfiltered global index.
|
|
@@ -103,16 +105,16 @@ export interface ScopeContext {
|
|
|
103
105
|
* ## Scope chain (high → low, inner shadows outer)
|
|
104
106
|
*
|
|
105
107
|
* ```
|
|
106
|
-
* document-local (Langium precomputed) [
|
|
107
|
-
* extension:local [layerLocalExtension, per
|
|
108
|
+
* document-local (Langium precomputed) [getScope, CACHED per build in localScope]
|
|
109
|
+
* extension:local [layerLocalExtension, CACHED per descriptions]
|
|
108
110
|
* own-project → dependency → universal-index [createGlobalScope default, CACHED per ${project}::${refType}]
|
|
109
|
-
* extension:universal [layerUniversalExtension, per
|
|
111
|
+
* extension:universal [layerUniversalExtension, CACHED per descriptions, outermost]
|
|
110
112
|
* ```
|
|
111
113
|
*
|
|
112
|
-
* Implementation:
|
|
113
|
-
* whatever `getGlobalScope` returns. The framework owns
|
|
114
|
-
* and uses it to assemble everything *below* document-local,
|
|
115
|
-
* adopter-overridable {@link createGlobalScope} in the middle.
|
|
114
|
+
* Implementation: {@link getScope} layers document-local on top of
|
|
115
|
+
* whatever `getGlobalScope` returns, as Langium's does. The framework owns
|
|
116
|
+
* `getGlobalScope` and uses it to assemble everything *below* document-local,
|
|
117
|
+
* with the adopter-overridable {@link createGlobalScope} in the middle.
|
|
116
118
|
*
|
|
117
119
|
* ## Adopter override surface
|
|
118
120
|
*
|
|
@@ -132,7 +134,8 @@ export interface ScopeContext {
|
|
|
132
134
|
* - **{@link createScopeForNodes}** — inherited from Langium and re-keyed by
|
|
133
135
|
* the framework to bare own-names, so it is the helper a `getScope`
|
|
134
136
|
* override uses to resolve a dotted member reference against a container
|
|
135
|
-
* the reference chain cannot reach.
|
|
137
|
+
* the reference chain cannot reach. Override {@link createNodeScope} to
|
|
138
|
+
* change the scope it builds.
|
|
136
139
|
*
|
|
137
140
|
* **Do NOT override `getGlobalScope` itself** — that is the framework's
|
|
138
141
|
* extension-assembly seam. Overriding it would hide the scope-extension
|
|
@@ -161,6 +164,24 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
161
164
|
* the workspace-global `DocumentBuilder.onUpdate`.
|
|
162
165
|
*/
|
|
163
166
|
protected readonly scopeCache: WorkspaceCache<string, Scope>;
|
|
167
|
+
/**
|
|
168
|
+
* Each container's local scope per reference type, keyed by the local
|
|
169
|
+
* symbols it was built from. A build replaces a document's local symbols
|
|
170
|
+
* when it recomputes them, so a rebuilt document never reads a stale entry.
|
|
171
|
+
*/
|
|
172
|
+
protected readonly localScopes = new WeakMap<LocalSymbols, Map<AstNode, Map<string, Scope>>>();
|
|
173
|
+
/**
|
|
174
|
+
* {@link createScopeForNodes}' scope per list of nodes, keyed by the local
|
|
175
|
+
* symbols of the document the nodes belong to, which a rebuild of that
|
|
176
|
+
* document replaces.
|
|
177
|
+
*/
|
|
178
|
+
protected readonly nodeScopes = new WeakMap<LocalSymbols, WeakMap<readonly AstNode[], Scope>>();
|
|
179
|
+
/**
|
|
180
|
+
* The scope of each scope extension's descriptions of one tier, keyed by
|
|
181
|
+
* the array: an extension with a cache key answers every reference of that
|
|
182
|
+
* key with the same one.
|
|
183
|
+
*/
|
|
184
|
+
protected readonly extensionScopes = new WeakMap<readonly TieredAstNodeDescription[], Scope>();
|
|
164
185
|
protected readonly tracer: Tracer;
|
|
165
186
|
/**
|
|
166
187
|
* Narrows the inherited Langium {@link NameProvider} field to the framework's
|
|
@@ -183,19 +204,99 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
183
204
|
this.tracer = services.shared.Tracer.for(options.logName ?? 'ScopeProvider').trace('instantiated');
|
|
184
205
|
}
|
|
185
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Drop every cached scope — the framework's project-tier chain and the
|
|
209
|
+
* inherited global scope it is filtered from.
|
|
210
|
+
*
|
|
211
|
+
* **Called from outside the class**, by the build pipeline once the batch is
|
|
212
|
+
* re-indexed. The caches' own eviction does not cover this:
|
|
213
|
+
* `DocumentBuilder.onUpdate` fires after the build has taken every changed
|
|
214
|
+
* document's symbols out of the index and before it puts them back, so a
|
|
215
|
+
* scope built in that gap denies those symbols exist and every document the
|
|
216
|
+
* same build links afterwards resolves against it.
|
|
217
|
+
*
|
|
218
|
+
* Both go together because the second is derived from the first: clearing
|
|
219
|
+
* only {@link scopeCache} refills it from a stale `globalScopeCache`, and
|
|
220
|
+
* clearing only `globalScopeCache` leaves the filtered copy standing.
|
|
221
|
+
*/
|
|
222
|
+
clearScopeCaches(): void {
|
|
223
|
+
this.scopeCache.clear();
|
|
224
|
+
this.globalScopeCache.clear();
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Langium's, with each container's local scope built once per build through
|
|
229
|
+
* {@link localScope} rather than once per reference. Linking a document then
|
|
230
|
+
* costs its references plus its declarations, not their product.
|
|
231
|
+
*/
|
|
232
|
+
override getScope(context: ReferenceInfo): Scope {
|
|
233
|
+
const referenceType = this.reflection.getReferenceType(context);
|
|
234
|
+
const localSymbols = AstUtils.getDocument(context.container).localSymbols;
|
|
235
|
+
let result = this.getGlobalScope(referenceType, context);
|
|
236
|
+
if (localSymbols === undefined) {
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
const containers: AstNode[] = [];
|
|
240
|
+
for (let container: AstNode | undefined = context.container; container; container = container.$container) {
|
|
241
|
+
if (localSymbols.has(container)) {
|
|
242
|
+
containers.push(container);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Outermost first, so the innermost container's symbols shadow the rest.
|
|
246
|
+
for (let i = containers.length - 1; i >= 0; i--) {
|
|
247
|
+
result = new FallbackScope(this.localScope(localSymbols, containers[i], referenceType), result);
|
|
248
|
+
}
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* The symbols `container` declares that a `referenceType` reference can
|
|
254
|
+
* reach, through {@link createScope}, built once per `localSymbols`.
|
|
255
|
+
*/
|
|
256
|
+
protected localScope(localSymbols: LocalSymbols, container: AstNode, referenceType: string): Scope {
|
|
257
|
+
let byContainer = this.localScopes.get(localSymbols);
|
|
258
|
+
if (byContainer === undefined) {
|
|
259
|
+
byContainer = new Map();
|
|
260
|
+
this.localScopes.set(localSymbols, byContainer);
|
|
261
|
+
}
|
|
262
|
+
let byType = byContainer.get(container);
|
|
263
|
+
if (byType === undefined) {
|
|
264
|
+
byType = new Map();
|
|
265
|
+
byContainer.set(container, byType);
|
|
266
|
+
}
|
|
267
|
+
let scope = byType.get(referenceType);
|
|
268
|
+
if (scope === undefined) {
|
|
269
|
+
scope = this.createScope(
|
|
270
|
+
localSymbols.getStream(container).filter(description => this.reflection.isSubtype(description.type, referenceType))
|
|
271
|
+
);
|
|
272
|
+
byType.set(referenceType, scope);
|
|
273
|
+
}
|
|
274
|
+
return scope;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Keyed by name, where Langium's walks every element on each lookup. Every
|
|
279
|
+
* description of a name is kept and the first answers, as in Langium's;
|
|
280
|
+
* `getAllElements` lists them in order, but with a description following
|
|
281
|
+
* the first of its name.
|
|
282
|
+
*/
|
|
283
|
+
protected override createScope(elements: Iterable<AstNodeDescription>, outerScope?: Scope, options?: ScopeOptions): Scope {
|
|
284
|
+
return new MultiMapScope(elements, outerScope, options);
|
|
285
|
+
}
|
|
286
|
+
|
|
186
287
|
/**
|
|
187
288
|
* Framework-owned assembly seam. **Adopters do NOT override this** —
|
|
188
289
|
* override {@link createGlobalScope} instead. This method layers the
|
|
189
290
|
* scope-extension tiers around the adopter-overridable global scope.
|
|
190
291
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* class.
|
|
292
|
+
* {@link getScope} then layers document-local on top of this result,
|
|
293
|
+
* yielding the full chain documented on the class.
|
|
194
294
|
*/
|
|
195
295
|
protected override getGlobalScope(referenceType: string, context: ReferenceInfo): Scope {
|
|
196
296
|
const projectChain = this.createGlobalScope(referenceType, context);
|
|
197
|
-
const
|
|
198
|
-
|
|
297
|
+
const extensions = this.scopeExtensionService.getDescriptions(referenceType, context.container);
|
|
298
|
+
const withUniversal = this.layerUniversalExtension(extensions, projectChain, referenceType, context);
|
|
299
|
+
return this.layerLocalExtension(extensions, withUniversal, referenceType, context);
|
|
199
300
|
}
|
|
200
301
|
|
|
201
302
|
/**
|
|
@@ -230,22 +331,66 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
230
331
|
}
|
|
231
332
|
|
|
232
333
|
/**
|
|
233
|
-
* Layer scope
|
|
234
|
-
*
|
|
235
|
-
*
|
|
334
|
+
* Layer each scope extension's `local`-tier descriptions on top of `inner`,
|
|
335
|
+
* an earlier extension's above a later one's, through {@link extensionScope}.
|
|
336
|
+
* Returns `inner` unchanged when there are none.
|
|
337
|
+
*/
|
|
338
|
+
protected layerLocalExtension(
|
|
339
|
+
extensions: readonly ScopeExtensionDescriptions[],
|
|
340
|
+
inner: Scope,
|
|
341
|
+
_referenceType: string,
|
|
342
|
+
_context: ReferenceInfo
|
|
343
|
+
): Scope {
|
|
344
|
+
return (
|
|
345
|
+
this.chainExtensionScopes(
|
|
346
|
+
extensions.map(extension => extension.local),
|
|
347
|
+
inner
|
|
348
|
+
) ?? inner
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Layer each scope extension's `universal`-tier descriptions below `inner`,
|
|
354
|
+
* which shadows them, an earlier extension's above a later one's, through
|
|
355
|
+
* {@link extensionScope}. Returns `inner` unchanged when there are none.
|
|
236
356
|
*/
|
|
237
|
-
protected
|
|
238
|
-
|
|
357
|
+
protected layerUniversalExtension(
|
|
358
|
+
extensions: readonly ScopeExtensionDescriptions[],
|
|
359
|
+
inner: Scope,
|
|
360
|
+
_referenceType: string,
|
|
361
|
+
_context: ReferenceInfo
|
|
362
|
+
): Scope {
|
|
363
|
+
const below = this.chainExtensionScopes(extensions.map(extension => extension.universal));
|
|
364
|
+
return below ? new FallbackScope(inner, below) : inner;
|
|
239
365
|
}
|
|
240
366
|
|
|
241
367
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* `inner` unchanged when no extension contributes for the reference
|
|
245
|
-
* type.
|
|
368
|
+
* Chain the scope of each non-empty array above `outer`, an earlier array's
|
|
369
|
+
* above a later one's; `undefined` when there is neither.
|
|
246
370
|
*/
|
|
247
|
-
protected
|
|
248
|
-
|
|
371
|
+
protected chainExtensionScopes(tiers: ReadonlyArray<readonly TieredAstNodeDescription[]>, outer?: Scope): Scope | undefined {
|
|
372
|
+
let result = outer;
|
|
373
|
+
for (let i = tiers.length - 1; i >= 0; i--) {
|
|
374
|
+
if (tiers[i].length > 0) {
|
|
375
|
+
const scope = this.extensionScope(tiers[i]);
|
|
376
|
+
result = result ? new FallbackScope(scope, result) : scope;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return result;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* The scope of one extension's descriptions of one tier, through
|
|
384
|
+
* {@link createScope}, built once per array and shared by every reference
|
|
385
|
+
* it answers, so an override of `createScope` sees no reference context.
|
|
386
|
+
*/
|
|
387
|
+
protected extensionScope(descriptions: readonly TieredAstNodeDescription[]): Scope {
|
|
388
|
+
let scope = this.extensionScopes.get(descriptions);
|
|
389
|
+
if (scope === undefined) {
|
|
390
|
+
scope = this.createScope(descriptions);
|
|
391
|
+
this.extensionScopes.set(descriptions, scope);
|
|
392
|
+
}
|
|
393
|
+
return scope;
|
|
249
394
|
}
|
|
250
395
|
|
|
251
396
|
/**
|
|
@@ -286,7 +431,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
286
431
|
* closure).
|
|
287
432
|
*
|
|
288
433
|
* Contrast {@link getGlobalScope}, which applies the framework's
|
|
289
|
-
* tier filter to this set, and
|
|
434
|
+
* tier filter to this set, and {@link getScope}, which
|
|
290
435
|
* additionally merges in the local scope.
|
|
291
436
|
*/
|
|
292
437
|
protected getAllElementsGlobalScope(referenceType: string, context: ReferenceInfo): Scope {
|
|
@@ -344,11 +489,11 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
344
489
|
* Includes own-project `'public'`-tier descriptions when
|
|
345
490
|
* {@link HydraniumScopeProviderOptions.includeOwnProjectPublic} is set
|
|
346
491
|
* (routed to the own-project bucket by {@link bucketFor}). Returns a
|
|
347
|
-
* {@link
|
|
492
|
+
* {@link MultiMapScope} (not {@link MapScope}) so same-name siblings are
|
|
348
493
|
* preserved rather than collapsed.
|
|
349
494
|
*/
|
|
350
495
|
protected createOwnProjectScope(context: ScopeContext): Scope {
|
|
351
|
-
return new
|
|
496
|
+
return new MultiMapScope(context.ownProjectEntries);
|
|
352
497
|
}
|
|
353
498
|
|
|
354
499
|
/**
|
|
@@ -357,7 +502,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
357
502
|
* (own-project canonical filter applied by {@link bucketFor}).
|
|
358
503
|
*/
|
|
359
504
|
protected createDependencyScope(context: ScopeContext): Scope {
|
|
360
|
-
return new
|
|
505
|
+
return new MultiMapScope(context.dependencyEntries);
|
|
361
506
|
}
|
|
362
507
|
|
|
363
508
|
/**
|
|
@@ -369,13 +514,13 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
369
514
|
}
|
|
370
515
|
|
|
371
516
|
/**
|
|
372
|
-
* Chain three tier sub-scopes inner-first
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
517
|
+
* Chain three tier sub-scopes inner-first through {@link FallbackScope},
|
|
518
|
+
* which consults an outer tier only when the inner one has no match, so a
|
|
519
|
+
* more specific tier shadows a less specific one of the same name, and each
|
|
520
|
+
* tier keeps its own lookup.
|
|
376
521
|
*/
|
|
377
522
|
protected chainScopes(ownScope: Scope, dependencyScope: Scope, universalScope: Scope): Scope {
|
|
378
|
-
return new
|
|
523
|
+
return new FallbackScope(ownScope, new FallbackScope(dependencyScope, universalScope));
|
|
379
524
|
}
|
|
380
525
|
|
|
381
526
|
/**
|
|
@@ -442,9 +587,51 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
442
587
|
}
|
|
443
588
|
|
|
444
589
|
/**
|
|
590
|
+
* Langium's, with the scope cached: a member scope is asked for once per
|
|
591
|
+
* reference, and building it each time makes linking cost references times
|
|
592
|
+
* members.
|
|
593
|
+
*
|
|
594
|
+
* - Cached: the scope for a list of a built document's nodes, passed with
|
|
595
|
+
* no `outerScope` or `options`, built once through {@link createNodeScope}.
|
|
596
|
+
* - Dropped: when that document's local symbols are replaced; a build that
|
|
597
|
+
* leaves its nodes in place keeps it.
|
|
598
|
+
* - Any other list gets a scope per call.
|
|
599
|
+
*
|
|
600
|
+
* Override {@link createNodeScope} to change the scope; an override of this
|
|
601
|
+
* method keeps the cache only by calling `super`. The list must hold nodes
|
|
602
|
+
* of one document, which it is keyed by; a list changed in place between
|
|
603
|
+
* builds is answered as it was.
|
|
604
|
+
*/
|
|
605
|
+
protected override createScopeForNodes(elements: Iterable<AstNode>, outerScope?: Scope, options?: ScopeOptions): Scope {
|
|
606
|
+
if (!Array.isArray(elements) || elements.length === 0 || outerScope !== undefined || options !== undefined) {
|
|
607
|
+
return this.createNodeScope(elements, outerScope, options);
|
|
608
|
+
}
|
|
609
|
+
const nodes: readonly AstNode[] = elements;
|
|
610
|
+
const root = AstUtils.findRootNode(nodes[0]);
|
|
611
|
+
const localSymbols = root.$document?.parseResult.value === root ? root.$document.localSymbols : undefined;
|
|
612
|
+
if (localSymbols === undefined) {
|
|
613
|
+
return this.createNodeScope(nodes);
|
|
614
|
+
}
|
|
615
|
+
let byList = this.nodeScopes.get(localSymbols);
|
|
616
|
+
if (byList === undefined) {
|
|
617
|
+
byList = new WeakMap();
|
|
618
|
+
this.nodeScopes.set(localSymbols, byList);
|
|
619
|
+
}
|
|
620
|
+
let scope = byList.get(nodes);
|
|
621
|
+
if (scope === undefined) {
|
|
622
|
+
scope = this.createNodeScope(nodes);
|
|
623
|
+
byList.set(nodes, scope);
|
|
624
|
+
}
|
|
625
|
+
return scope;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* The scope {@link createScopeForNodes} answers with, keyed by name.
|
|
630
|
+
*
|
|
445
631
|
* Keys the scope by {@link NameProvider.getOwnName} instead of Langium's
|
|
446
|
-
* `getName`. Same correction
|
|
447
|
-
* makes to the
|
|
632
|
+
* `getName`. Same correction
|
|
633
|
+
* `HydraniumScopeComputation.addLocalSymbolByOwnName` makes to the
|
|
634
|
+
* local-symbols pass, for the same reason: `getName` defaults
|
|
448
635
|
* to the project-qualified form here, so the base would key a member scope
|
|
449
636
|
* by the fully qualified `Container.member` while the reference text after
|
|
450
637
|
* the dot is the bare `member` — and nothing reports the mismatch, because
|
|
@@ -454,7 +641,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
454
641
|
* reference to a member the container does not have must fail rather than
|
|
455
642
|
* fall through to a same-named member on an unrelated type.
|
|
456
643
|
*/
|
|
457
|
-
protected
|
|
644
|
+
protected createNodeScope(elements: Iterable<AstNode>, outerScope?: Scope, options?: ScopeOptions): Scope {
|
|
458
645
|
const descriptions = stream(elements)
|
|
459
646
|
.map(node => {
|
|
460
647
|
const name = this.nameProvider.getOwnName(node);
|
|
@@ -463,7 +650,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
463
650
|
return name ? this.descriptions.createDescription(node, name, AstUtils.getDocument(node)) : undefined;
|
|
464
651
|
})
|
|
465
652
|
.nonNullable();
|
|
466
|
-
return new
|
|
653
|
+
return new MultiMapScope(descriptions, outerScope, options);
|
|
467
654
|
}
|
|
468
655
|
|
|
469
656
|
/**
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
|
|
10
10
|
export * from './ast-node-description-provider.js';
|
|
11
|
+
export * from './fallback-scope.js';
|
|
11
12
|
export * from './reference-builder.js';
|
|
12
13
|
export * from './reference-candidate-provider.js';
|
|
13
14
|
export * from './hydranium-scope-computation.js';
|
|
@@ -102,9 +102,9 @@ export interface ResolvedCandidate {
|
|
|
102
102
|
export interface ReferenceCandidateProvider {
|
|
103
103
|
/**
|
|
104
104
|
* UI-facing entry point: returns the candidate scope's elements as
|
|
105
|
-
* {@link ReferenceCandidate}s.
|
|
105
|
+
* {@link ReferenceCandidate}s. Accepts what {@link getCandidateScope} does.
|
|
106
106
|
*/
|
|
107
|
-
find(ctx: ReferenceContext): ReferenceCandidate[];
|
|
107
|
+
find(ctx: ReferenceContext | ReferenceInfo): ReferenceCandidate[];
|
|
108
108
|
|
|
109
109
|
/**
|
|
110
110
|
* Build a ranked + deduped scope for candidate selection at the
|
|
@@ -195,14 +195,15 @@ export class DefaultReferenceCandidateProvider implements ReferenceCandidateProv
|
|
|
195
195
|
* and never matches: a self-reference filter silently stops excluding, and
|
|
196
196
|
* the element offers itself as its own target.
|
|
197
197
|
*
|
|
198
|
-
* The mirror of `
|
|
199
|
-
* reasoning: an unroutable target has no better answer than the
|
|
198
|
+
* The mirror of `DefaultReferenceBuilder.nameProviderFor`, and the same
|
|
199
|
+
* fallback reasoning: an unroutable target has no better answer than the
|
|
200
|
+
* source's.
|
|
200
201
|
*/
|
|
201
202
|
protected nameProviderFor(target: AstNode): NameProvider {
|
|
202
203
|
return this.services.shared.ServiceRegistry?.getServicesFor(target)?.references.NameProvider ?? this.nameProvider;
|
|
203
204
|
}
|
|
204
205
|
|
|
205
|
-
find(ctx: ReferenceContext): ReferenceCandidate[] {
|
|
206
|
+
find(ctx: ReferenceContext | ReferenceInfo): ReferenceCandidate[] {
|
|
206
207
|
const scope = this.getCandidateScope(ctx);
|
|
207
208
|
return scope.elementScope
|
|
208
209
|
.getAllElements()
|