@hydranium/core 1.0.0-next.39 → 1.0.0-next.390
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 +254 -140
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +311 -128
- 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 +40 -0
- package/lib/documents/file-system-task-queue.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +453 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +918 -504
- 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 +153 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +186 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -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 +75 -36
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
- package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
- package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
- package/lib/langium/composite-ast-reflection.d.ts +46 -0
- package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
- package/lib/langium/composite-ast-reflection.js +97 -0
- package/lib/langium/composite-ast-reflection.js.map +1 -0
- package/lib/langium/config/configuration-provider.d.ts +81 -0
- package/lib/langium/config/configuration-provider.d.ts.map +1 -0
- package/lib/langium/config/configuration-provider.js +112 -0
- package/lib/langium/config/configuration-provider.js.map +1 -0
- package/lib/langium/config/index.d.ts +1 -0
- package/lib/langium/config/index.d.ts.map +1 -1
- package/lib/langium/config/index.js +1 -0
- package/lib/langium/config/index.js.map +1 -1
- package/lib/langium/config/settings.js.map +1 -1
- package/lib/langium/diagnostics/console-tee.d.ts +27 -0
- package/lib/langium/diagnostics/console-tee.d.ts.map +1 -0
- package/lib/langium/diagnostics/console-tee.js +141 -0
- package/lib/langium/diagnostics/console-tee.js.map +1 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/log-preamble.js +1 -1
- package/lib/langium/diagnostics/log-preamble.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +25 -6
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +49 -17
- package/lib/langium/diagnostics/logger.js.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.d.ts +25 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +81 -46
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
- package/lib/langium/diagnostics/server-tracer.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +43 -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 +390 -40
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +635 -102
- 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 +20 -23
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +22 -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 +217 -29
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +588 -84
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/containment.d.ts +3 -2
- package/lib/langium/keys/containment.d.ts.map +1 -1
- package/lib/langium/keys/containment.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +17 -10
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +24 -12
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +21 -5
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +405 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +479 -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 +68 -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 +441 -323
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +602 -407
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +96 -37
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +41 -29
- 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 +184 -13
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +336 -16
- package/lib/langium/project/abstract-project-manager.js.map +1 -1
- package/lib/langium/project/project-change-event.d.ts +22 -3
- package/lib/langium/project/project-change-event.d.ts.map +1 -1
- package/lib/langium/project/project-manager.d.ts +28 -2
- package/lib/langium/project/project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.d.ts +7 -1
- package/lib/langium/project/single-project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.js +12 -0
- package/lib/langium/project/single-project-manager.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts +92 -52
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +154 -58
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.d.ts +46 -10
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.js +88 -15
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
- package/lib/langium/scope/built-local-symbols.d.ts +12 -0
- package/lib/langium/scope/built-local-symbols.d.ts.map +1 -0
- package/lib/langium/scope/built-local-symbols.js +11 -0
- package/lib/langium/scope/built-local-symbols.js.map +1 -0
- package/lib/langium/scope/fallback-scope.d.ts +27 -0
- package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
- package/lib/langium/scope/fallback-scope.js +35 -0
- package/lib/langium/scope/fallback-scope.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js +38 -39
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +122 -32
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +217 -39
- package/lib/langium/scope/hydranium-scope-provider.js.map +1 -1
- package/lib/langium/scope/index.d.ts +1 -0
- package/lib/langium/scope/index.d.ts.map +1 -1
- package/lib/langium/scope/index.js +1 -0
- package/lib/langium/scope/index.js.map +1 -1
- package/lib/langium/scope/reference-builder.d.ts.map +1 -1
- package/lib/langium/scope/reference-builder.js.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.d.ts +6 -5
- package/lib/langium/scope/reference-candidate-provider.d.ts.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.js +3 -2
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
- package/lib/langium/scope/scope-extension-service.d.ts +69 -37
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js +102 -29
- package/lib/langium/scope/scope-extension-service.js.map +1 -1
- package/lib/langium/scope/scoped-ast-node-description.d.ts +1 -3
- package/lib/langium/scope/scoped-ast-node-description.d.ts.map +1 -1
- package/lib/langium/scope/scoped-ast-node-description.js +1 -3
- package/lib/langium/scope/scoped-ast-node-description.js.map +1 -1
- package/lib/langium/serialization/abstract-serializer.d.ts +38 -27
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/abstract-serializer.js +54 -30
- package/lib/langium/serialization/abstract-serializer.js.map +1 -1
- package/lib/langium/serialization/json-serializer.d.ts +8 -1
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/json-serializer.js +13 -3
- package/lib/langium/serialization/json-serializer.js.map +1 -1
- package/lib/langium/serialization/serializer.d.ts +1 -1
- package/lib/langium/serialization/yaml-serializer.d.ts +12 -0
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/yaml-serializer.js +24 -4
- package/lib/langium/serialization/yaml-serializer.js.map +1 -1
- package/lib/langium/service-registry.d.ts +29 -1
- package/lib/langium/service-registry.d.ts.map +1 -1
- package/lib/langium/service-registry.js +37 -0
- package/lib/langium/service-registry.js.map +1 -1
- package/lib/langium/shared-services.d.ts +10 -4
- 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 +60 -39
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +35 -24
- 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 +1165 -0
- package/lib/langium/trivia/comment-preserver.js.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +62 -0
- package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
- package/lib/langium/trivia/index.d.ts +14 -0
- package/lib/langium/trivia/index.d.ts.map +1 -0
- package/lib/langium/trivia/index.js +14 -0
- package/lib/langium/trivia/index.js.map +1 -0
- package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
- package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-contribution.js +10 -0
- package/lib/langium/trivia/trivia-contribution.js.map +1 -0
- package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
- package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-preserver.js +10 -0
- package/lib/langium/trivia/trivia-preserver.js.map +1 -0
- package/lib/langium/trivia/trivia-service.d.ts +70 -0
- package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-service.js +56 -0
- package/lib/langium/trivia/trivia-service.js.map +1 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/validation/document-validator.d.ts +168 -23
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +264 -26
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.js +1 -1
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
- package/lib/langium/workspace/ast-node-locator.d.ts +24 -0
- package/lib/langium/workspace/ast-node-locator.d.ts.map +1 -0
- package/lib/langium/workspace/ast-node-locator.js +32 -0
- package/lib/langium/workspace/ast-node-locator.js.map +1 -0
- package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +22 -13
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-not-found.d.ts +23 -0
- package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
- package/lib/langium/workspace/file-not-found.js +31 -0
- package/lib/langium/workspace/file-not-found.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +167 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +115 -13
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +78 -4
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +188 -5
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +50 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +73 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +105 -21
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +186 -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 +3 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +3 -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/{documents → langium/workspace}/self-save-registry.d.ts +7 -9
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +9 -11
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/syntax-errors.d.ts +23 -0
- package/lib/langium/workspace/syntax-errors.d.ts.map +1 -0
- package/lib/langium/workspace/syntax-errors.js +29 -0
- package/lib/langium/workspace/syntax-errors.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 +6 -6
- package/lib/locale/server-locale.d.ts.map +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 +234 -101
- 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 +10 -4
- package/lib/messages/renderer.d.ts.map +1 -1
- package/lib/messages/renderer.js +6 -0
- 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 +3 -2
- 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.d.ts +6 -5
- package/lib/node/server-state-snapshot.d.ts.map +1 -1
- package/lib/node/server-state-snapshot.js +20 -17
- 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.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +45 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +23 -7
- 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 +4 -1
- package/lib/testing/node/index.d.ts.map +1 -1
- package/lib/testing/node/index.js +4 -1
- 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 +2 -1
- package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
- package/lib/testing/node/scratch-workspace.js +12 -6
- package/lib/testing/node/scratch-workspace.js.map +1 -1
- package/lib/testing/node/settle-server.d.ts +33 -0
- package/lib/testing/node/settle-server.d.ts.map +1 -0
- package/lib/testing/node/settle-server.js +84 -0
- package/lib/testing/node/settle-server.js.map +1 -0
- 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/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 -51
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +31 -59
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +25 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +91 -2
- 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 +8 -7
- 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.d.ts.map +1 -1
- package/lib/testing/stub-project-manager.js +10 -0
- 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 +75 -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 +477 -250
- package/src/documents/client-ids.ts +5 -22
- package/src/documents/client-session-errors.ts +26 -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 +77 -0
- package/src/documents/hydranium-text-documents.ts +1044 -615
- 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 +304 -0
- package/src/index.ts +3 -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 +79 -43
- package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
- package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
- package/src/langium/composite-ast-reflection.ts +112 -0
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/console-tee.ts +150 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +51 -17
- package/src/langium/diagnostics/lsp-logger.ts +83 -45
- package/src/langium/document-builder/build-pipeline-integration.ts +57 -32
- package/src/langium/document-builder/build-session.ts +4 -3
- package/src/langium/document-builder/document-builder.ts +773 -106
- package/src/langium/integration-services.ts +20 -23
- package/src/langium/integrity/integrity-rule.ts +22 -8
- package/src/langium/integrity/integrity-service.ts +656 -90
- package/src/langium/keys/containment.ts +3 -2
- package/src/langium/keys/name-based-key-provider.ts +24 -12
- package/src/langium/language-module.ts +52 -9
- package/src/langium/model-service/client-session.ts +769 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +82 -0
- package/src/langium/model-service/model-service.ts +885 -532
- package/src/langium/module.ts +141 -65
- package/src/langium/naming/name-provider.ts +34 -8
- package/src/langium/project/abstract-project-manager.ts +409 -20
- package/src/langium/project/project-change-event.ts +25 -3
- package/src/langium/project/project-manager.ts +31 -2
- package/src/langium/project/single-project-manager.ts +16 -1
- package/src/langium/residency/cst-residency-service.ts +210 -87
- package/src/langium/scope/ast-node-description-provider.ts +111 -16
- package/src/langium/scope/built-local-symbols.ts +13 -0
- package/src/langium/scope/fallback-scope.ts +38 -0
- package/src/langium/scope/hydranium-scope-computation.ts +45 -44
- package/src/langium/scope/hydranium-scope-provider.ts +245 -41
- package/src/langium/scope/index.ts +1 -0
- package/src/langium/scope/reference-candidate-provider.ts +6 -5
- package/src/langium/scope/scope-extension-service.ts +148 -56
- package/src/langium/scope/scoped-ast-node-description.ts +1 -3
- package/src/langium/serialization/abstract-serializer.ts +57 -41
- package/src/langium/serialization/json-serializer.ts +14 -3
- package/src/langium/serialization/serializer.ts +1 -1
- package/src/langium/serialization/yaml-serializer.ts +26 -4
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +13 -4
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +76 -50
- package/src/langium/trivia/comment-preserver.ts +1410 -0
- package/src/langium/trivia/document-ending-preserver.ts +71 -0
- package/src/langium/trivia/index.ts +14 -0
- package/src/langium/trivia/trivia-contribution.ts +39 -0
- package/src/langium/trivia/trivia-preserver.ts +56 -0
- package/src/langium/trivia/trivia-service.ts +99 -0
- package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +312 -31
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/ast-node-locator.ts +33 -0
- package/src/langium/workspace/document-uri-policy.ts +32 -18
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +258 -16
- package/src/langium/workspace/hydranium-langium-document-factory.ts +239 -4
- package/src/langium/workspace/hydranium-workspace-lock.ts +101 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +214 -35
- package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
- package/src/langium/workspace/index.ts +3 -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/{documents → langium/workspace}/self-save-registry.ts +12 -14
- package/src/langium/workspace/syntax-errors.ts +34 -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 +6 -6
- package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
- package/src/lsp/connection-features.ts +67 -0
- package/src/lsp/diagnostics-connection.ts +56 -0
- package/src/lsp/edit-requests-guard.ts +152 -0
- package/src/lsp/hydranium-document-update-handler.ts +284 -110
- 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 +11 -3
- package/src/node/event-loop-monitor.ts +3 -4
- 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 +28 -20
- 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-test-services.ts +83 -31
- 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 +4 -1
- 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 +12 -6
- package/src/testing/node/settle-server.ts +89 -0
- package/src/testing/node/spawned-server.ts +57 -3
- 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 -123
- package/src/testing/stub-document-builder.ts +128 -15
- 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 +9 -8
- package/src/testing/stub-project-manager.ts +10 -0
- 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 +81 -15
- package/src/util/environment.ts +24 -2
- package/lib/documents/language-client-text-shadow.d.ts +0 -124
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -190
- 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 -211
- 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,10 @@ 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 { builtLocalSymbols } from './built-local-symbols.js';
|
|
44
|
+
import { FallbackScope } from './fallback-scope.js';
|
|
45
|
+
import { type ScopeExtensionDescriptions, type ScopeExtensionService } from './scope-extension-service.js';
|
|
46
|
+
import { type TieredAstNodeDescription, isTieredDescription } from './scoped-ast-node-description.js';
|
|
44
47
|
|
|
45
48
|
/**
|
|
46
49
|
* Construction-time options for {@link HydraniumScopeProvider}. Extends
|
|
@@ -95,7 +98,7 @@ export interface ScopeContext {
|
|
|
95
98
|
/**
|
|
96
99
|
* Per-language scope provider that owns the full scope chain in ONE
|
|
97
100
|
* class. Bridges the protocol-layer {@link ReferenceContext} to
|
|
98
|
-
* Langium's {@link ReferenceInfo}, layers
|
|
101
|
+
* Langium's {@link ReferenceInfo}, layers scope-extension
|
|
99
102
|
* contributions ({@link ScopeExtensionService}) at their declared tier,
|
|
100
103
|
* and composes the cached project-tier chain (own-project → dependency
|
|
101
104
|
* → universal) on top of Langium's unfiltered global index.
|
|
@@ -103,16 +106,16 @@ export interface ScopeContext {
|
|
|
103
106
|
* ## Scope chain (high → low, inner shadows outer)
|
|
104
107
|
*
|
|
105
108
|
* ```
|
|
106
|
-
* document-local (Langium precomputed) [
|
|
107
|
-
* extension:local [layerLocalExtension, per
|
|
109
|
+
* document-local (Langium precomputed) [getScope, CACHED per build in localScope]
|
|
110
|
+
* extension:local [layerLocalExtension, CACHED per descriptions]
|
|
108
111
|
* own-project → dependency → universal-index [createGlobalScope default, CACHED per ${project}::${refType}]
|
|
109
|
-
* extension:universal [layerUniversalExtension, per
|
|
112
|
+
* extension:universal [layerUniversalExtension, CACHED per descriptions, outermost]
|
|
110
113
|
* ```
|
|
111
114
|
*
|
|
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.
|
|
115
|
+
* Implementation: {@link getScope} layers document-local on top of
|
|
116
|
+
* whatever `getGlobalScope` returns, as Langium's does. The framework owns
|
|
117
|
+
* `getGlobalScope` and uses it to assemble everything *below* document-local,
|
|
118
|
+
* with the adopter-overridable {@link createGlobalScope} in the middle.
|
|
116
119
|
*
|
|
117
120
|
* ## Adopter override surface
|
|
118
121
|
*
|
|
@@ -132,7 +135,8 @@ export interface ScopeContext {
|
|
|
132
135
|
* - **{@link createScopeForNodes}** — inherited from Langium and re-keyed by
|
|
133
136
|
* the framework to bare own-names, so it is the helper a `getScope`
|
|
134
137
|
* override uses to resolve a dotted member reference against a container
|
|
135
|
-
* the reference chain cannot reach.
|
|
138
|
+
* the reference chain cannot reach. Override {@link createNodeScope} to
|
|
139
|
+
* change the scope it builds.
|
|
136
140
|
*
|
|
137
141
|
* **Do NOT override `getGlobalScope` itself** — that is the framework's
|
|
138
142
|
* extension-assembly seam. Overriding it would hide the scope-extension
|
|
@@ -161,6 +165,24 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
161
165
|
* the workspace-global `DocumentBuilder.onUpdate`.
|
|
162
166
|
*/
|
|
163
167
|
protected readonly scopeCache: WorkspaceCache<string, Scope>;
|
|
168
|
+
/**
|
|
169
|
+
* Each container's local scope per reference type, keyed by the local
|
|
170
|
+
* symbols it was built from. A build replaces a document's local symbols
|
|
171
|
+
* when it recomputes them, so a rebuilt document never reads a stale entry.
|
|
172
|
+
*/
|
|
173
|
+
protected readonly localScopes = new WeakMap<LocalSymbols, Map<AstNode, Map<string, Scope>>>();
|
|
174
|
+
/**
|
|
175
|
+
* {@link createScopeForNodes}' scope per list of nodes, keyed by the local
|
|
176
|
+
* symbols of the document the nodes belong to, which a rebuild of that
|
|
177
|
+
* document replaces.
|
|
178
|
+
*/
|
|
179
|
+
protected readonly nodeScopes = new WeakMap<LocalSymbols, WeakMap<readonly AstNode[], Scope>>();
|
|
180
|
+
/**
|
|
181
|
+
* The scope of each scope extension's descriptions of one tier, keyed by
|
|
182
|
+
* the array: an extension with a cache key answers every reference of that
|
|
183
|
+
* key with the same one.
|
|
184
|
+
*/
|
|
185
|
+
protected readonly extensionScopes = new WeakMap<readonly TieredAstNodeDescription[], Scope>();
|
|
164
186
|
protected readonly tracer: Tracer;
|
|
165
187
|
/**
|
|
166
188
|
* Narrows the inherited Langium {@link NameProvider} field to the framework's
|
|
@@ -183,19 +205,115 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
183
205
|
this.tracer = services.shared.Tracer.for(options.logName ?? 'ScopeProvider').trace('instantiated');
|
|
184
206
|
}
|
|
185
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Drop every cached scope — the framework's project-tier chain and the
|
|
210
|
+
* inherited global scope it is filtered from.
|
|
211
|
+
*
|
|
212
|
+
* **Called from outside the class**, by the build pipeline once the batch is
|
|
213
|
+
* re-indexed. The caches' own eviction does not cover this:
|
|
214
|
+
* `DocumentBuilder.onUpdate` fires after the build has taken every changed
|
|
215
|
+
* document's symbols out of the index and before it puts them back, so a
|
|
216
|
+
* scope built in that gap denies those symbols exist and every document the
|
|
217
|
+
* same build links afterwards resolves against it.
|
|
218
|
+
*
|
|
219
|
+
* Both go together because the second is derived from the first: clearing
|
|
220
|
+
* only {@link scopeCache} refills it from a stale `globalScopeCache`, and
|
|
221
|
+
* clearing only `globalScopeCache` leaves the filtered copy standing.
|
|
222
|
+
*/
|
|
223
|
+
clearScopeCaches(): void {
|
|
224
|
+
this.scopeCache.clear();
|
|
225
|
+
this.globalScopeCache.clear();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Langium's, with each container's local scope built once per build through
|
|
230
|
+
* {@link localScope} rather than once per reference. Linking a document then
|
|
231
|
+
* costs its references plus its declarations, not their product.
|
|
232
|
+
*/
|
|
233
|
+
override getScope(context: ReferenceInfo): Scope {
|
|
234
|
+
const referenceType = this.reflection.getReferenceType(context);
|
|
235
|
+
const localSymbols = this.localSymbolsOf(context.container);
|
|
236
|
+
let result = this.getGlobalScope(referenceType, context);
|
|
237
|
+
if (localSymbols === undefined) {
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
const containers: AstNode[] = [];
|
|
241
|
+
for (let container: AstNode | undefined = context.container; container; container = container.$container) {
|
|
242
|
+
if (localSymbols.has(container)) {
|
|
243
|
+
containers.push(container);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Outermost first, so the innermost container's symbols shadow the rest.
|
|
247
|
+
for (let i = containers.length - 1; i >= 0; i--) {
|
|
248
|
+
result = new FallbackScope(this.localScope(localSymbols, containers[i], referenceType), result);
|
|
249
|
+
}
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* The local symbols of the build that `node`'s root came from: the
|
|
255
|
+
* document's while they are set for that root, else the ones the build
|
|
256
|
+
* pipeline recorded for it when its document computed scopes. A rebuild
|
|
257
|
+
* clears the document's, then keys them by the new root's nodes.
|
|
258
|
+
*/
|
|
259
|
+
protected localSymbolsOf(node: AstNode): LocalSymbols | undefined {
|
|
260
|
+
const root = AstUtils.findRootNode(node);
|
|
261
|
+
const document = AstUtils.getDocument(root);
|
|
262
|
+
const recorded = builtLocalSymbols.get(root);
|
|
263
|
+
if (recorded === undefined || (document.parseResult.value === root && document.localSymbols !== undefined)) {
|
|
264
|
+
return document.localSymbols;
|
|
265
|
+
}
|
|
266
|
+
return recorded;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* The symbols `container` declares that a `referenceType` reference can
|
|
271
|
+
* reach, through {@link createScope}, built once per `localSymbols`.
|
|
272
|
+
*/
|
|
273
|
+
protected localScope(localSymbols: LocalSymbols, container: AstNode, referenceType: string): Scope {
|
|
274
|
+
let byContainer = this.localScopes.get(localSymbols);
|
|
275
|
+
if (byContainer === undefined) {
|
|
276
|
+
byContainer = new Map();
|
|
277
|
+
this.localScopes.set(localSymbols, byContainer);
|
|
278
|
+
}
|
|
279
|
+
let byType = byContainer.get(container);
|
|
280
|
+
if (byType === undefined) {
|
|
281
|
+
byType = new Map();
|
|
282
|
+
byContainer.set(container, byType);
|
|
283
|
+
}
|
|
284
|
+
let scope = byType.get(referenceType);
|
|
285
|
+
if (scope === undefined) {
|
|
286
|
+
scope = this.createScope(
|
|
287
|
+
localSymbols.getStream(container).filter(description => this.reflection.isSubtype(description.type, referenceType))
|
|
288
|
+
);
|
|
289
|
+
byType.set(referenceType, scope);
|
|
290
|
+
}
|
|
291
|
+
return scope;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Keyed by name, where Langium's walks every element on each lookup. Every
|
|
296
|
+
* description of a name is kept and the first answers, as in Langium's;
|
|
297
|
+
* `getAllElements` lists them in order, but with a description following
|
|
298
|
+
* the first of its name.
|
|
299
|
+
*/
|
|
300
|
+
protected override createScope(elements: Iterable<AstNodeDescription>, outerScope?: Scope, options?: ScopeOptions): Scope {
|
|
301
|
+
return new MultiMapScope(elements, outerScope, options);
|
|
302
|
+
}
|
|
303
|
+
|
|
186
304
|
/**
|
|
187
305
|
* Framework-owned assembly seam. **Adopters do NOT override this** —
|
|
188
306
|
* override {@link createGlobalScope} instead. This method layers the
|
|
189
307
|
* scope-extension tiers around the adopter-overridable global scope.
|
|
190
308
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* class.
|
|
309
|
+
* {@link getScope} then layers document-local on top of this result,
|
|
310
|
+
* yielding the full chain documented on the class.
|
|
194
311
|
*/
|
|
195
312
|
protected override getGlobalScope(referenceType: string, context: ReferenceInfo): Scope {
|
|
196
313
|
const projectChain = this.createGlobalScope(referenceType, context);
|
|
197
|
-
const
|
|
198
|
-
|
|
314
|
+
const extensions = this.scopeExtensionService.getDescriptions(referenceType, context.container);
|
|
315
|
+
const withUniversal = this.layerUniversalExtension(extensions, projectChain, referenceType, context);
|
|
316
|
+
return this.layerLocalExtension(extensions, withUniversal, referenceType, context);
|
|
199
317
|
}
|
|
200
318
|
|
|
201
319
|
/**
|
|
@@ -230,22 +348,66 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
230
348
|
}
|
|
231
349
|
|
|
232
350
|
/**
|
|
233
|
-
* Layer scope
|
|
234
|
-
*
|
|
235
|
-
*
|
|
351
|
+
* Layer each scope extension's `local`-tier descriptions on top of `inner`,
|
|
352
|
+
* an earlier extension's above a later one's, through {@link extensionScope}.
|
|
353
|
+
* Returns `inner` unchanged when there are none.
|
|
236
354
|
*/
|
|
237
|
-
protected layerLocalExtension(
|
|
238
|
-
|
|
355
|
+
protected layerLocalExtension(
|
|
356
|
+
extensions: readonly ScopeExtensionDescriptions[],
|
|
357
|
+
inner: Scope,
|
|
358
|
+
_referenceType: string,
|
|
359
|
+
_context: ReferenceInfo
|
|
360
|
+
): Scope {
|
|
361
|
+
return (
|
|
362
|
+
this.chainExtensionScopes(
|
|
363
|
+
extensions.map(extension => extension.local),
|
|
364
|
+
inner
|
|
365
|
+
) ?? inner
|
|
366
|
+
);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Layer each scope extension's `universal`-tier descriptions below `inner`,
|
|
371
|
+
* which shadows them, an earlier extension's above a later one's, through
|
|
372
|
+
* {@link extensionScope}. Returns `inner` unchanged when there are none.
|
|
373
|
+
*/
|
|
374
|
+
protected layerUniversalExtension(
|
|
375
|
+
extensions: readonly ScopeExtensionDescriptions[],
|
|
376
|
+
inner: Scope,
|
|
377
|
+
_referenceType: string,
|
|
378
|
+
_context: ReferenceInfo
|
|
379
|
+
): Scope {
|
|
380
|
+
const below = this.chainExtensionScopes(extensions.map(extension => extension.universal));
|
|
381
|
+
return below ? new FallbackScope(inner, below) : inner;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Chain the scope of each non-empty array above `outer`, an earlier array's
|
|
386
|
+
* above a later one's; `undefined` when there is neither.
|
|
387
|
+
*/
|
|
388
|
+
protected chainExtensionScopes(tiers: ReadonlyArray<readonly TieredAstNodeDescription[]>, outer?: Scope): Scope | undefined {
|
|
389
|
+
let result = outer;
|
|
390
|
+
for (let i = tiers.length - 1; i >= 0; i--) {
|
|
391
|
+
if (tiers[i].length > 0) {
|
|
392
|
+
const scope = this.extensionScope(tiers[i]);
|
|
393
|
+
result = result ? new FallbackScope(scope, result) : scope;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return result;
|
|
239
397
|
}
|
|
240
398
|
|
|
241
399
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
* type.
|
|
400
|
+
* The scope of one extension's descriptions of one tier, through
|
|
401
|
+
* {@link createScope}, built once per array and shared by every reference
|
|
402
|
+
* it answers, so an override of `createScope` sees no reference context.
|
|
246
403
|
*/
|
|
247
|
-
protected
|
|
248
|
-
|
|
404
|
+
protected extensionScope(descriptions: readonly TieredAstNodeDescription[]): Scope {
|
|
405
|
+
let scope = this.extensionScopes.get(descriptions);
|
|
406
|
+
if (scope === undefined) {
|
|
407
|
+
scope = this.createScope(descriptions);
|
|
408
|
+
this.extensionScopes.set(descriptions, scope);
|
|
409
|
+
}
|
|
410
|
+
return scope;
|
|
249
411
|
}
|
|
250
412
|
|
|
251
413
|
/**
|
|
@@ -286,7 +448,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
286
448
|
* closure).
|
|
287
449
|
*
|
|
288
450
|
* Contrast {@link getGlobalScope}, which applies the framework's
|
|
289
|
-
* tier filter to this set, and
|
|
451
|
+
* tier filter to this set, and {@link getScope}, which
|
|
290
452
|
* additionally merges in the local scope.
|
|
291
453
|
*/
|
|
292
454
|
protected getAllElementsGlobalScope(referenceType: string, context: ReferenceInfo): Scope {
|
|
@@ -344,11 +506,11 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
344
506
|
* Includes own-project `'public'`-tier descriptions when
|
|
345
507
|
* {@link HydraniumScopeProviderOptions.includeOwnProjectPublic} is set
|
|
346
508
|
* (routed to the own-project bucket by {@link bucketFor}). Returns a
|
|
347
|
-
* {@link
|
|
509
|
+
* {@link MultiMapScope} (not {@link MapScope}) so same-name siblings are
|
|
348
510
|
* preserved rather than collapsed.
|
|
349
511
|
*/
|
|
350
512
|
protected createOwnProjectScope(context: ScopeContext): Scope {
|
|
351
|
-
return new
|
|
513
|
+
return new MultiMapScope(context.ownProjectEntries);
|
|
352
514
|
}
|
|
353
515
|
|
|
354
516
|
/**
|
|
@@ -357,7 +519,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
357
519
|
* (own-project canonical filter applied by {@link bucketFor}).
|
|
358
520
|
*/
|
|
359
521
|
protected createDependencyScope(context: ScopeContext): Scope {
|
|
360
|
-
return new
|
|
522
|
+
return new MultiMapScope(context.dependencyEntries);
|
|
361
523
|
}
|
|
362
524
|
|
|
363
525
|
/**
|
|
@@ -369,13 +531,13 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
369
531
|
}
|
|
370
532
|
|
|
371
533
|
/**
|
|
372
|
-
* Chain three tier sub-scopes inner-first
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
534
|
+
* Chain three tier sub-scopes inner-first through {@link FallbackScope},
|
|
535
|
+
* which consults an outer tier only when the inner one has no match, so a
|
|
536
|
+
* more specific tier shadows a less specific one of the same name, and each
|
|
537
|
+
* tier keeps its own lookup.
|
|
376
538
|
*/
|
|
377
539
|
protected chainScopes(ownScope: Scope, dependencyScope: Scope, universalScope: Scope): Scope {
|
|
378
|
-
return new
|
|
540
|
+
return new FallbackScope(ownScope, new FallbackScope(dependencyScope, universalScope));
|
|
379
541
|
}
|
|
380
542
|
|
|
381
543
|
/**
|
|
@@ -442,9 +604,51 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
442
604
|
}
|
|
443
605
|
|
|
444
606
|
/**
|
|
607
|
+
* Langium's, with the scope cached: a member scope is asked for once per
|
|
608
|
+
* reference, and building it each time makes linking cost references times
|
|
609
|
+
* members.
|
|
610
|
+
*
|
|
611
|
+
* - Cached: the scope for a list of a built document's nodes, passed with
|
|
612
|
+
* no `outerScope` or `options`, built once through {@link createNodeScope}.
|
|
613
|
+
* - Dropped: when that document's local symbols are replaced; a build that
|
|
614
|
+
* leaves its nodes in place keeps it.
|
|
615
|
+
* - Any other list gets a scope per call.
|
|
616
|
+
*
|
|
617
|
+
* Override {@link createNodeScope} to change the scope; an override of this
|
|
618
|
+
* method keeps the cache only by calling `super`. The list must hold nodes
|
|
619
|
+
* of one document, which it is keyed by; a list changed in place between
|
|
620
|
+
* builds is answered as it was.
|
|
621
|
+
*/
|
|
622
|
+
protected override createScopeForNodes(elements: Iterable<AstNode>, outerScope?: Scope, options?: ScopeOptions): Scope {
|
|
623
|
+
if (!Array.isArray(elements) || elements.length === 0 || outerScope !== undefined || options !== undefined) {
|
|
624
|
+
return this.createNodeScope(elements, outerScope, options);
|
|
625
|
+
}
|
|
626
|
+
const nodes: readonly AstNode[] = elements;
|
|
627
|
+
const root = AstUtils.findRootNode(nodes[0]);
|
|
628
|
+
const localSymbols = root.$document?.parseResult.value === root ? root.$document.localSymbols : undefined;
|
|
629
|
+
if (localSymbols === undefined) {
|
|
630
|
+
return this.createNodeScope(nodes);
|
|
631
|
+
}
|
|
632
|
+
let byList = this.nodeScopes.get(localSymbols);
|
|
633
|
+
if (byList === undefined) {
|
|
634
|
+
byList = new WeakMap();
|
|
635
|
+
this.nodeScopes.set(localSymbols, byList);
|
|
636
|
+
}
|
|
637
|
+
let scope = byList.get(nodes);
|
|
638
|
+
if (scope === undefined) {
|
|
639
|
+
scope = this.createNodeScope(nodes);
|
|
640
|
+
byList.set(nodes, scope);
|
|
641
|
+
}
|
|
642
|
+
return scope;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* The scope {@link createScopeForNodes} answers with, keyed by name.
|
|
647
|
+
*
|
|
445
648
|
* Keys the scope by {@link NameProvider.getOwnName} instead of Langium's
|
|
446
|
-
* `getName`. Same correction
|
|
447
|
-
* makes to the
|
|
649
|
+
* `getName`. Same correction
|
|
650
|
+
* `HydraniumScopeComputation.addLocalSymbolByOwnName` makes to the
|
|
651
|
+
* local-symbols pass, for the same reason: `getName` defaults
|
|
448
652
|
* to the project-qualified form here, so the base would key a member scope
|
|
449
653
|
* by the fully qualified `Container.member` while the reference text after
|
|
450
654
|
* the dot is the bare `member` — and nothing reports the mismatch, because
|
|
@@ -454,7 +658,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
454
658
|
* reference to a member the container does not have must fail rather than
|
|
455
659
|
* fall through to a same-named member on an unrelated type.
|
|
456
660
|
*/
|
|
457
|
-
protected
|
|
661
|
+
protected createNodeScope(elements: Iterable<AstNode>, outerScope?: Scope, options?: ScopeOptions): Scope {
|
|
458
662
|
const descriptions = stream(elements)
|
|
459
663
|
.map(node => {
|
|
460
664
|
const name = this.nameProvider.getOwnName(node);
|
|
@@ -463,7 +667,7 @@ export class HydraniumScopeProvider extends DefaultScopeProvider {
|
|
|
463
667
|
return name ? this.descriptions.createDescription(node, name, AstUtils.getDocument(node)) : undefined;
|
|
464
668
|
})
|
|
465
669
|
.nonNullable();
|
|
466
|
-
return new
|
|
670
|
+
return new MultiMapScope(descriptions, outerScope, options);
|
|
467
671
|
}
|
|
468
672
|
|
|
469
673
|
/**
|
|
@@ -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()
|