@hydranium/core 1.0.0-next.37 → 1.0.0-next.371
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 -127
- 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 +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 +340 -39
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +550 -81
- 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 +39 -23
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +7 -4
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +17 -8
- package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-rule.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +95 -27
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +303 -63
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/containment.d.ts +3 -2
- package/lib/langium/keys/containment.d.ts.map +1 -1
- package/lib/langium/keys/containment.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +17 -10
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +24 -12
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +21 -5
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +383 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +455 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +2 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +2 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-events.d.ts +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 +440 -323
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +601 -397
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +89 -30
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +39 -27
- 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 +15 -11
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +15 -3
- 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 +1164 -0
- package/lib/langium/trivia/comment-preserver.js.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +62 -0
- package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
- package/lib/langium/trivia/index.d.ts +14 -0
- package/lib/langium/trivia/index.d.ts.map +1 -0
- package/lib/langium/trivia/index.js +14 -0
- package/lib/langium/trivia/index.js.map +1 -0
- package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
- package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-contribution.js +10 -0
- package/lib/langium/trivia/trivia-contribution.js.map +1 -0
- package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
- package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-preserver.js +10 -0
- package/lib/langium/trivia/trivia-preserver.js.map +1 -0
- package/lib/langium/trivia/trivia-service.d.ts +70 -0
- package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-service.js +56 -0
- package/lib/langium/trivia/trivia-service.js.map +1 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/validation/document-validator.d.ts +168 -23
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +264 -26
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.js +1 -1
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
- package/lib/langium/workspace/ast-node-locator.d.ts +24 -0
- package/lib/langium/workspace/ast-node-locator.d.ts.map +1 -0
- package/lib/langium/workspace/ast-node-locator.js +32 -0
- package/lib/langium/workspace/ast-node-locator.js.map +1 -0
- package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +22 -13
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-not-found.d.ts +23 -0
- package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
- package/lib/langium/workspace/file-not-found.js +31 -0
- package/lib/langium/workspace/file-not-found.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +167 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +115 -13
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +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 +2 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +2 -0
- package/lib/langium/workspace/index.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +40 -3
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +68 -3
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +7 -0
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +18 -1
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/{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/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 +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.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 +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 -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 +33 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +110 -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 +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 -249
- 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 +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 +679 -83
- package/src/langium/integration-services.ts +58 -27
- package/src/langium/integrity/integrity-rule.ts +17 -8
- package/src/langium/integrity/integrity-service.ts +332 -69
- package/src/langium/keys/containment.ts +3 -2
- package/src/langium/keys/name-based-key-provider.ts +24 -12
- package/src/langium/language-module.ts +52 -9
- package/src/langium/model-service/client-session.ts +726 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +82 -0
- package/src/langium/model-service/model-service.ts +887 -522
- package/src/langium/module.ts +132 -56
- 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 +30 -14
- 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 +1409 -0
- package/src/langium/trivia/document-ending-preserver.ts +71 -0
- package/src/langium/trivia/index.ts +14 -0
- package/src/langium/trivia/trivia-contribution.ts +39 -0
- package/src/langium/trivia/trivia-preserver.ts +56 -0
- package/src/langium/trivia/trivia-service.ts +99 -0
- package/src/langium/update-rewrite/update-rewrite-service.ts +1 -1
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +312 -31
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/ast-node-locator.ts +33 -0
- package/src/langium/workspace/document-uri-policy.ts +32 -18
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +258 -16
- package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +214 -35
- package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
- package/src/langium/workspace/index.ts +2 -0
- package/src/langium/workspace/initialize-workspace.ts +96 -4
- package/src/langium/workspace/langium-documents.ts +19 -1
- package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
- package/src/{documents → langium/workspace}/self-save-registry.ts +12 -14
- 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 +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-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 +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 -123
- package/src/testing/stub-document-builder.ts +155 -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 +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 -101
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -156
- package/lib/documents/language-client-text-shadow.js.map +0 -1
- package/lib/documents/self-save-registry.d.ts.map +0 -1
- package/lib/documents/self-save-registry.js.map +0 -1
- package/lib/lsp/instrument-connection.d.ts +0 -36
- package/lib/lsp/instrument-connection.d.ts.map +0 -1
- package/lib/lsp/instrument-connection.js +0 -62
- package/lib/lsp/instrument-connection.js.map +0 -1
- package/lib/node/process-memory.d.ts +0 -66
- package/lib/node/process-memory.d.ts.map +0 -1
- package/lib/node/process-memory.js +0 -252
- package/lib/node/process-memory.js.map +0 -1
- package/src/documents/language-client-text-shadow.ts +0 -175
- package/src/lsp/instrument-connection.ts +0 -66
- package/src/node/process-memory.ts +0 -299
|
@@ -11,7 +11,7 @@ import { type AstNode, type LangiumDocuments, type URI } from '@hydranium/langiu
|
|
|
11
11
|
import { Disposable } from 'vscode-languageserver';
|
|
12
12
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
13
13
|
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
14
|
-
import type { ProjectChangeListener } from './project-change-event.js';
|
|
14
|
+
import type { MemberRelinkFinishedListener, MemberRelinkStartedListener, ProjectChangeListener } from './project-change-event.js';
|
|
15
15
|
import type { ProjectManager } from './project-manager.js';
|
|
16
16
|
/**
|
|
17
17
|
* Framework default {@link ProjectManager}. Exposes a single synthetic
|
|
@@ -44,6 +44,12 @@ export declare class SingleProjectManager implements ProjectManager {
|
|
|
44
44
|
discoverProjects(): Promise<void>;
|
|
45
45
|
/** Never fires — `SingleProjectManager` exposes a fixed registry. The returned disposable is a safe no-op. */
|
|
46
46
|
onProjectsChanged(_listener: ProjectChangeListener): Disposable;
|
|
47
|
+
/** Never fires: a fixed registry has no member relink to defer. */
|
|
48
|
+
onMemberRelinkStarted(_listener: MemberRelinkStartedListener): Disposable;
|
|
49
|
+
/** Never fires, as {@link onMemberRelinkStarted} does not. */
|
|
50
|
+
onMemberRelinkFinished(_listener: MemberRelinkFinishedListener): Disposable;
|
|
51
|
+
/** Resolved at once: nothing is ever deferred. */
|
|
52
|
+
memberRelinkSettled(): Promise<void>;
|
|
47
53
|
isProjectDescriptor(_uri: URI | string): boolean;
|
|
48
54
|
/** Always `true` — single-project by definition. */
|
|
49
55
|
isSingleProject(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"single-project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAkBrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B;IAjB3D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,gBAAgB;IAEpD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAGjC;IACF,QAAQ,CAAC,KAAK,gBAAqB;IAEnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,2BAA2B,EACxD,OAAO,GAAE,cAAmB,EAI9B;IAED,mDAAmD;IAC7C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEtC;IAED,8GAA8G;IAC9G,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,UAAU,CAE9D;IAED,mEAAmE;IACnE,qBAAqB,CAAC,SAAS,EAAE,2BAA2B,GAAG,UAAU,CAExE;IAED,8DAA8D;IAC9D,sBAAsB,CAAC,SAAS,EAAE,4BAA4B,GAAG,UAAU,CAE1E;IAED,kDAAkD;IAClD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnC;IAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAE/C;IAED,oDAAoD;IACpD,eAAe,IAAI,OAAO,CAEzB;IAED;;;;OAIG;IACH,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAEzD;IAED,4DAA4D;IAC5D,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAElD;IAED,6DAA6D;IAC7D,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAErD;IAED,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE9C;IAED,WAAW,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED,oFAAoF;IACpF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE,CAKhD;IAED,mGAAmG;IACnG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEvD;IAED,2FAA2F;IAC3F,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAQxF;CACH"}
|
|
@@ -50,6 +50,18 @@ export class SingleProjectManager {
|
|
|
50
50
|
onProjectsChanged(_listener) {
|
|
51
51
|
return Disposable.create(() => undefined);
|
|
52
52
|
}
|
|
53
|
+
/** Never fires: a fixed registry has no member relink to defer. */
|
|
54
|
+
onMemberRelinkStarted(_listener) {
|
|
55
|
+
return Disposable.create(() => undefined);
|
|
56
|
+
}
|
|
57
|
+
/** Never fires, as {@link onMemberRelinkStarted} does not. */
|
|
58
|
+
onMemberRelinkFinished(_listener) {
|
|
59
|
+
return Disposable.create(() => undefined);
|
|
60
|
+
}
|
|
61
|
+
/** Resolved at once: nothing is ever deferred. */
|
|
62
|
+
memberRelinkSettled() {
|
|
63
|
+
return Promise.resolve();
|
|
64
|
+
}
|
|
53
65
|
isProjectDescriptor(_uri) {
|
|
54
66
|
return false;
|
|
55
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-project-manager.js","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA6B,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAoB;IAkBR;
|
|
1
|
+
{"version":3,"file":"single-project-manager.js","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,8 +34,11 @@ export declare const CST_RESIDENCY_PASS_PRIORITY = 1000000;
|
|
|
34
34
|
* "off" toggle.
|
|
35
35
|
* - `{ kind: 'shed-closed-when-idle', idleMs }`: shed a closed document's CST
|
|
36
36
|
* once it has been idle (not in any build) for `idleMs`, keeping the AST
|
|
37
|
-
* resident. Open documents are always kept.
|
|
38
|
-
* document
|
|
37
|
+
* resident. Open documents are always kept. The timer starts when a build
|
|
38
|
+
* includes the document, so `idleMs: 0` sheds a closed document on the tick
|
|
39
|
+
* after each such build. A shed document that re-enters a build is re-parsed
|
|
40
|
+
* in full, so a window shorter than the gap between a document's builds
|
|
41
|
+
* re-parses a closed document on every build it rides in.
|
|
39
42
|
*/
|
|
40
43
|
export type CstResidencyStrategy = {
|
|
41
44
|
readonly kind: 'always-keep';
|
|
@@ -80,12 +83,16 @@ export declare const CST_REHYDRATION_RESET_STATE: DocumentState;
|
|
|
80
83
|
*/
|
|
81
84
|
export declare function isCstShed(document: LangiumDocument): boolean;
|
|
82
85
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
86
|
+
* Keeps a document's CST available to the readers that need one, shedding it
|
|
87
|
+
* for documents that have gone idle and re-grafting on demand.
|
|
88
|
+
*
|
|
89
|
+
* Each build refreshes
|
|
85
90
|
* the idle window of the documents in its batch; when a closed, sheddable
|
|
86
91
|
* document's window elapses, every AST node's `$cstNode` and every reference's
|
|
87
|
-
* `$refNode` are nulled, and the CST
|
|
88
|
-
*
|
|
92
|
+
* `$refNode` are nulled, and the CST becomes unreachable with the `Range`s
|
|
93
|
+
* and `Position`s only it holds. The reference index's segments, and a
|
|
94
|
+
* description's segments once read, share the CST's `Range` objects, so
|
|
95
|
+
* those stay.
|
|
89
96
|
*
|
|
90
97
|
* **Terminology.** *Residency* is the state axis (is the CST in memory? —
|
|
91
98
|
* `resident` vs `shed`); *shed* is both the act and the policy vocabulary (drop
|
|
@@ -126,10 +133,6 @@ export declare function isCstShed(document: LangiumDocument): boolean;
|
|
|
126
133
|
* `NameProvider.getNameNode` chokepoint, the comment provider, and
|
|
127
134
|
* `HydraniumLangiumDocuments.getOrCreateDocument`.
|
|
128
135
|
*/
|
|
129
|
-
/**
|
|
130
|
-
* Keeps a document's CST available to the readers that need one, shedding it
|
|
131
|
-
* for documents that have gone idle and re-grafting on demand.
|
|
132
|
-
*/
|
|
133
136
|
export interface CstResidencyService {
|
|
134
137
|
/**
|
|
135
138
|
* Ensure `document` has a CST, re-parsing its retained text if it was shed.
|
|
@@ -140,7 +143,8 @@ export interface CstResidencyService {
|
|
|
140
143
|
/**
|
|
141
144
|
* Node-level convenience over {@link rehydrate}, cheap enough for an
|
|
142
145
|
* unconditional call: a node whose `$cstNode` is already set returns
|
|
143
|
-
* without resolving its document
|
|
146
|
+
* without resolving its document, and a node outside any document, such as
|
|
147
|
+
* a detached synthetic node, has nothing to restore and returns too.
|
|
144
148
|
*/
|
|
145
149
|
rehydrateNode(node: AstNode): void;
|
|
146
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cst-residency-service.d.ts","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAa,KAAK,KAAK,EAAE,SAAS,EAAU,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"cst-residency-service.d.ts","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { asMutable, Debouncer, Format } from '@hydranium/protocol';
|
|
9
|
+
import { asMutable, Debouncer, Format, UNRECORDED_VERSION } from '@hydranium/protocol';
|
|
10
10
|
import { AstUtils, DocumentState, URI } from '@hydranium/langium';
|
|
11
11
|
/**
|
|
12
12
|
* Default priority of the CST-residency pass. Deliberately very high so it runs
|
|
@@ -159,7 +159,7 @@ export class DefaultCstResidencyService {
|
|
|
159
159
|
this.langiumDocs = services.workspace.LangiumDocuments;
|
|
160
160
|
services.workspace.BuildPhasePassService.register({
|
|
161
161
|
id: 'framework:cst-residency:shed',
|
|
162
|
-
|
|
162
|
+
phase: DocumentState.Validated,
|
|
163
163
|
priority: options.priority ?? CST_RESIDENCY_PASS_PRIORITY,
|
|
164
164
|
run: documents => this.onBuild(documents)
|
|
165
165
|
});
|
|
@@ -191,7 +191,10 @@ export class DefaultCstResidencyService {
|
|
|
191
191
|
if (node.$cstNode !== undefined) {
|
|
192
192
|
return;
|
|
193
193
|
}
|
|
194
|
-
|
|
194
|
+
const document = AstUtils.findRootNode(node).$document;
|
|
195
|
+
if (document) {
|
|
196
|
+
this.rehydrate(document);
|
|
197
|
+
}
|
|
195
198
|
}
|
|
196
199
|
/**
|
|
197
200
|
* After each build, refresh the idle timer of every document in the batch: an
|
|
@@ -277,6 +280,15 @@ export class DefaultCstResidencyService {
|
|
|
277
280
|
if (root === undefined || root.$cstNode === undefined) {
|
|
278
281
|
return 0;
|
|
279
282
|
}
|
|
283
|
+
// Readers of the parsed text, the `'text-diagnostics'` fingerprint among
|
|
284
|
+
// them, otherwise see none once the CST is gone. Recorded in the ledger
|
|
285
|
+
// directly: no root is produced, and reconciling it with the store would
|
|
286
|
+
// step a closed document's sequence for a root behind its text.
|
|
287
|
+
const ledger = this.services.workspace.ModelLedger;
|
|
288
|
+
const version = ledger.versionOf(root);
|
|
289
|
+
if (version !== UNRECORDED_VERSION) {
|
|
290
|
+
ledger.record(root, version, ledger.textOf(root));
|
|
291
|
+
}
|
|
280
292
|
let cleared = 0;
|
|
281
293
|
for (const node of AstUtils.streamAst(root)) {
|
|
282
294
|
if (node.$cstNode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cst-residency-service.js","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,SAAS,EAAc,SAAS,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cst-residency-service.js","sourceRoot":"","sources":["../../../src/langium/residency/cst-residency-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Tracer } from '@hydranium/protocol';
|
|
10
|
-
import { type AstNode, type
|
|
10
|
+
import { type AstNode, DefaultAstNodeDescriptionProvider, type DocumentSegment, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
11
11
|
import type { LogNameOptions } from '../diagnostics/logger.js';
|
|
12
12
|
import type { HydraniumLanguageServices } from '../language-module.js';
|
|
13
13
|
import { type DescriptionTier, type TieredAstNodeDescription } from './scoped-ast-node-description.js';
|
|
@@ -30,6 +30,7 @@ import { type DescriptionTier, type TieredAstNodeDescription } from './scoped-as
|
|
|
30
30
|
*/
|
|
31
31
|
export declare class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescriptionProvider {
|
|
32
32
|
protected readonly tracer: Tracer;
|
|
33
|
+
protected readonly services: HydraniumLanguageServices;
|
|
33
34
|
constructor(services: HydraniumLanguageServices, options?: LogNameOptions);
|
|
34
35
|
/**
|
|
35
36
|
* Overrides the Langium base to stamp `tier: 'local'` on every plain
|
|
@@ -37,11 +38,10 @@ export declare class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeD
|
|
|
37
38
|
* filter pipeline. Callers that need a different tier must use
|
|
38
39
|
* {@link createProject}, {@link createPublic}, or {@link createUniversal}.
|
|
39
40
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* correct tier — so there is no create-then-overwrite cost.
|
|
41
|
+
* Langium's own `createDescription` is not called: every factory builds
|
|
42
|
+
* through {@link createTiered}.
|
|
43
43
|
*/
|
|
44
|
-
createDescription(node: AstNode, name: string, document
|
|
44
|
+
createDescription(node: AstNode, name: string | undefined, document?: LangiumDocument): TieredAstNodeDescription;
|
|
45
45
|
/**
|
|
46
46
|
* Build a {@link TieredAstNodeDescription} for a symbol visible only
|
|
47
47
|
* inside its document. Goes into the per-document local-symbols map
|
|
@@ -112,11 +112,47 @@ export declare class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeD
|
|
|
112
112
|
readonly document: LangiumDocument;
|
|
113
113
|
}): TieredAstNodeDescription;
|
|
114
114
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* just-constructed and not aliased elsewhere.
|
|
115
|
+
* Resolve the fields of the description every factory returns and build it
|
|
116
|
+
* through {@link newDescription}. Mirrors Langium's `createDescription`:
|
|
117
|
+
* the name defaults to the name provider's, and a node without one throws.
|
|
119
118
|
*/
|
|
120
|
-
protected
|
|
119
|
+
protected createTiered(node: AstNode, name: string | undefined, document: LangiumDocument | undefined, tier: DescriptionTier, projectId?: string): TieredAstNodeDescription;
|
|
120
|
+
/** Construct the description from resolved fields; override to build a subclass of {@link DefaultTieredAstNodeDescription}. */
|
|
121
|
+
protected newDescription(node: AstNode, name: string, documentUri: URI, path: string, tier: DescriptionTier, projectId: string | undefined): TieredAstNodeDescription;
|
|
122
|
+
/**
|
|
123
|
+
* The segment of `node`'s name, or of the whole node when the name
|
|
124
|
+
* provider finds no name node, restoring a shed CST first: a name provider
|
|
125
|
+
* need not restore it, and an absent segment is not computed again.
|
|
126
|
+
*/
|
|
127
|
+
nameSegmentOf(node: AstNode): DocumentSegment | undefined;
|
|
128
|
+
/** The segment of the whole node, restoring a shed CST first. */
|
|
129
|
+
selectionSegmentOf(node: AstNode): DocumentSegment | undefined;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The description {@link HydraniumAstNodeDescriptionProvider} builds. Every
|
|
133
|
+
* field is set in the constructor, so all descriptions share one V8 hidden
|
|
134
|
+
* class; Langium's object literal with a `nameSegment` accessor is kept in
|
|
135
|
+
* dictionary mode and carries two closures, several times the bytes.
|
|
136
|
+
*
|
|
137
|
+
* `nameSegment` and `selectionSegment` are prototype getters, not own
|
|
138
|
+
* properties: a spread, `Object.keys`, a JSON round trip or `structuredClone`
|
|
139
|
+
* of a description drops them. Each is computed on its first read, from the
|
|
140
|
+
* node the description was built for, restoring a shed CST first; an eager
|
|
141
|
+
* `selectionSegment` would keep a segment per description that nothing reads.
|
|
142
|
+
*/
|
|
143
|
+
export declare class DefaultTieredAstNodeDescription implements TieredAstNodeDescription {
|
|
144
|
+
protected readonly provider: HydraniumAstNodeDescriptionProvider;
|
|
145
|
+
readonly node: AstNode;
|
|
146
|
+
readonly name: string;
|
|
147
|
+
readonly documentUri: URI;
|
|
148
|
+
readonly path: string;
|
|
149
|
+
readonly tier: DescriptionTier;
|
|
150
|
+
readonly projectId: string | undefined;
|
|
151
|
+
readonly type: string;
|
|
152
|
+
protected nameSegmentCache: DocumentSegment | null | undefined;
|
|
153
|
+
protected selectionSegmentCache: DocumentSegment | null | undefined;
|
|
154
|
+
constructor(provider: HydraniumAstNodeDescriptionProvider, node: AstNode, name: string, documentUri: URI, path: string, tier: DescriptionTier, projectId: string | undefined);
|
|
155
|
+
get nameSegment(): DocumentSegment | undefined;
|
|
156
|
+
get selectionSegment(): DocumentSegment | undefined;
|
|
121
157
|
}
|
|
122
158
|
//# sourceMappingURL=ast-node-description-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-node-description-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/scope/ast-node-description-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"ast-node-description-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/scope/ast-node-description-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { DefaultAstNodeDescriptionProvider } from '@hydranium/langium';
|
|
9
|
+
import { AstUtils, CstUtils, DefaultAstNodeDescriptionProvider } from '@hydranium/langium';
|
|
10
10
|
/**
|
|
11
11
|
* Framework `AstNodeDescriptionProvider` extension. Adds four typed
|
|
12
12
|
* factory methods aligned with the {@link TieredAstNodeDescription} four-
|
|
@@ -26,8 +26,10 @@ import { DefaultAstNodeDescriptionProvider } from '@hydranium/langium';
|
|
|
26
26
|
*/
|
|
27
27
|
export class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescriptionProvider {
|
|
28
28
|
tracer;
|
|
29
|
+
services;
|
|
29
30
|
constructor(services, options = {}) {
|
|
30
31
|
super(services);
|
|
32
|
+
this.services = services;
|
|
31
33
|
this.tracer = services.shared.Tracer.for(options.logName ?? 'AstNodeDescriptionProvider').trace('instantiated');
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
@@ -36,12 +38,11 @@ export class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescripti
|
|
|
36
38
|
* filter pipeline. Callers that need a different tier must use
|
|
37
39
|
* {@link createProject}, {@link createPublic}, or {@link createUniversal}.
|
|
38
40
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* correct tier — so there is no create-then-overwrite cost.
|
|
41
|
+
* Langium's own `createDescription` is not called: every factory builds
|
|
42
|
+
* through {@link createTiered}.
|
|
42
43
|
*/
|
|
43
44
|
createDescription(node, name, document) {
|
|
44
|
-
return this.
|
|
45
|
+
return this.createTiered(node, name, document, 'local');
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
48
|
* Build a {@link TieredAstNodeDescription} for a symbol visible only
|
|
@@ -53,7 +54,7 @@ export class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescripti
|
|
|
53
54
|
* never sees them, so a project tag would be unused.
|
|
54
55
|
*/
|
|
55
56
|
createLocal(options) {
|
|
56
|
-
return this.
|
|
57
|
+
return this.createTiered(options.node, options.name, options.document, 'local');
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
60
|
* Build a {@link TieredAstNodeDescription} for a symbol visible inside
|
|
@@ -69,7 +70,7 @@ export class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescripti
|
|
|
69
70
|
* `ProjectManager.getProject(document.uri)?.id` once per document.
|
|
70
71
|
*/
|
|
71
72
|
createProject(options) {
|
|
72
|
-
return this.
|
|
73
|
+
return this.createTiered(options.node, options.name, options.document, 'project', options.projectId);
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
75
76
|
* Build a {@link TieredAstNodeDescription} at `tier: 'public'` — the
|
|
@@ -87,7 +88,7 @@ export class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescripti
|
|
|
87
88
|
* one and a workspace-qualified one.
|
|
88
89
|
*/
|
|
89
90
|
createPublic(options) {
|
|
90
|
-
return this.
|
|
91
|
+
return this.createTiered(options.node, options.name, options.document, 'public', options.projectId);
|
|
91
92
|
}
|
|
92
93
|
/**
|
|
93
94
|
* Build a {@link TieredAstNodeDescription} at `tier: 'universal'` —
|
|
@@ -100,16 +101,88 @@ export class HydraniumAstNodeDescriptionProvider extends DefaultAstNodeDescripti
|
|
|
100
101
|
* {@link createPublic} instead.
|
|
101
102
|
*/
|
|
102
103
|
createUniversal(options) {
|
|
103
|
-
return this.
|
|
104
|
+
return this.createTiered(options.node, options.name, options.document, 'universal');
|
|
104
105
|
}
|
|
105
106
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* just-constructed and not aliased elsewhere.
|
|
107
|
+
* Resolve the fields of the description every factory returns and build it
|
|
108
|
+
* through {@link newDescription}. Mirrors Langium's `createDescription`:
|
|
109
|
+
* the name defaults to the name provider's, and a node without one throws.
|
|
110
110
|
*/
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
createTiered(node, name, document, tier, projectId) {
|
|
112
|
+
const path = this.astNodeLocator.getAstNodePath(node);
|
|
113
|
+
const resolvedName = name ?? this.nameProvider.getName(node);
|
|
114
|
+
if (!resolvedName) {
|
|
115
|
+
throw new Error(`Node at path ${path} has no name.`);
|
|
116
|
+
}
|
|
117
|
+
const documentUri = (document ?? AstUtils.getDocument(node)).uri;
|
|
118
|
+
return this.newDescription(node, resolvedName, documentUri, path, tier, projectId);
|
|
119
|
+
}
|
|
120
|
+
/** Construct the description from resolved fields; override to build a subclass of {@link DefaultTieredAstNodeDescription}. */
|
|
121
|
+
newDescription(node, name, documentUri, path, tier, projectId) {
|
|
122
|
+
return new DefaultTieredAstNodeDescription(this, node, name, documentUri, path, tier, projectId);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The segment of `node`'s name, or of the whole node when the name
|
|
126
|
+
* provider finds no name node, restoring a shed CST first: a name provider
|
|
127
|
+
* need not restore it, and an absent segment is not computed again.
|
|
128
|
+
*/
|
|
129
|
+
nameSegmentOf(node) {
|
|
130
|
+
this.services.shared.workspace.CstResidencyService.rehydrateNode(node);
|
|
131
|
+
return CstUtils.toDocumentSegment(this.nameProvider.getNameNode(node) ?? node.$cstNode);
|
|
132
|
+
}
|
|
133
|
+
/** The segment of the whole node, restoring a shed CST first. */
|
|
134
|
+
selectionSegmentOf(node) {
|
|
135
|
+
this.services.shared.workspace.CstResidencyService.rehydrateNode(node);
|
|
136
|
+
return CstUtils.toDocumentSegment(node.$cstNode);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The description {@link HydraniumAstNodeDescriptionProvider} builds. Every
|
|
141
|
+
* field is set in the constructor, so all descriptions share one V8 hidden
|
|
142
|
+
* class; Langium's object literal with a `nameSegment` accessor is kept in
|
|
143
|
+
* dictionary mode and carries two closures, several times the bytes.
|
|
144
|
+
*
|
|
145
|
+
* `nameSegment` and `selectionSegment` are prototype getters, not own
|
|
146
|
+
* properties: a spread, `Object.keys`, a JSON round trip or `structuredClone`
|
|
147
|
+
* of a description drops them. Each is computed on its first read, from the
|
|
148
|
+
* node the description was built for, restoring a shed CST first; an eager
|
|
149
|
+
* `selectionSegment` would keep a segment per description that nothing reads.
|
|
150
|
+
*/
|
|
151
|
+
export class DefaultTieredAstNodeDescription {
|
|
152
|
+
provider;
|
|
153
|
+
node;
|
|
154
|
+
name;
|
|
155
|
+
documentUri;
|
|
156
|
+
path;
|
|
157
|
+
tier;
|
|
158
|
+
projectId;
|
|
159
|
+
type;
|
|
160
|
+
// `null` records a segment computed while the node had no CST. It is
|
|
161
|
+
// recomputed only once the node has one again: retrying without one would
|
|
162
|
+
// attempt a restore, a re-parse, on every read.
|
|
163
|
+
nameSegmentCache;
|
|
164
|
+
selectionSegmentCache;
|
|
165
|
+
constructor(provider, node, name, documentUri, path, tier, projectId) {
|
|
166
|
+
this.provider = provider;
|
|
167
|
+
this.node = node;
|
|
168
|
+
this.name = name;
|
|
169
|
+
this.documentUri = documentUri;
|
|
170
|
+
this.path = path;
|
|
171
|
+
this.tier = tier;
|
|
172
|
+
this.projectId = projectId;
|
|
173
|
+
this.type = node.$type;
|
|
174
|
+
}
|
|
175
|
+
get nameSegment() {
|
|
176
|
+
if (this.nameSegmentCache === undefined || (this.nameSegmentCache === null && this.node.$cstNode !== undefined)) {
|
|
177
|
+
this.nameSegmentCache = this.provider.nameSegmentOf(this.node) ?? null;
|
|
178
|
+
}
|
|
179
|
+
return this.nameSegmentCache ?? undefined;
|
|
180
|
+
}
|
|
181
|
+
get selectionSegment() {
|
|
182
|
+
if (this.selectionSegmentCache === undefined || (this.selectionSegmentCache === null && this.node.$cstNode !== undefined)) {
|
|
183
|
+
this.selectionSegmentCache = this.provider.selectionSegmentOf(this.node) ?? null;
|
|
184
|
+
}
|
|
185
|
+
return this.selectionSegmentCache ?? undefined;
|
|
113
186
|
}
|
|
114
187
|
}
|
|
115
188
|
//# sourceMappingURL=ast-node-description-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-node-description-provider.js","sourceRoot":"","sources":["../../../src/langium/scope/ast-node-description-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,
|
|
1
|
+
{"version":3,"file":"ast-node-description-provider.js","sourceRoot":"","sources":["../../../src/langium/scope/ast-node-description-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import type { AstNode, LocalSymbols } from '@hydranium/langium';
|
|
10
|
+
/** The local symbols each build computed, by the root it computed them for. */
|
|
11
|
+
export declare const builtLocalSymbols: WeakMap<AstNode, LocalSymbols>;
|
|
12
|
+
//# sourceMappingURL=built-local-symbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-local-symbols.d.ts","sourceRoot":"","sources":["../../../src/langium/scope/built-local-symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,gCAAuC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/** The local symbols each build computed, by the root it computed them for. */
|
|
10
|
+
export const builtLocalSymbols = new WeakMap();
|
|
11
|
+
//# sourceMappingURL=built-local-symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-local-symbols.js","sourceRoot":"","sources":["../../../src/langium/scope/built-local-symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAyB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type AstNodeDescription, type Scope, type Stream } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* A scope that answers from `primary`, and from `fallback` only for a name
|
|
12
|
+
* `primary` does not hold.
|
|
13
|
+
*
|
|
14
|
+
* Langium fixes a scope's outer scope when the scope is built, so a tier cannot
|
|
15
|
+
* be put below a scope that already exists, such as a cached one. Re-wrapping
|
|
16
|
+
* that scope's elements instead would turn its keyed lookup into a scan of
|
|
17
|
+
* every element; chaining keeps each scope's own lookup.
|
|
18
|
+
*/
|
|
19
|
+
export declare class FallbackScope implements Scope {
|
|
20
|
+
protected readonly primary: Scope;
|
|
21
|
+
protected readonly fallback: Scope;
|
|
22
|
+
constructor(primary: Scope, fallback: Scope);
|
|
23
|
+
getElement(name: string): AstNodeDescription | undefined;
|
|
24
|
+
getElements(name: string): Stream<AstNodeDescription>;
|
|
25
|
+
getAllElements(): Stream<AstNodeDescription>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=fallback-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback-scope.d.ts","sourceRoot":"","sources":["../../../src/langium/scope/fallback-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEtF;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,KAAK;IAErC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK;IACjC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK;IAFrC,YACsB,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,KAAK,EACjC;IAEJ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEvD;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAEpD;IAED,cAAc,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAE3C;CACH"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* A scope that answers from `primary`, and from `fallback` only for a name
|
|
11
|
+
* `primary` does not hold.
|
|
12
|
+
*
|
|
13
|
+
* Langium fixes a scope's outer scope when the scope is built, so a tier cannot
|
|
14
|
+
* be put below a scope that already exists, such as a cached one. Re-wrapping
|
|
15
|
+
* that scope's elements instead would turn its keyed lookup into a scan of
|
|
16
|
+
* every element; chaining keeps each scope's own lookup.
|
|
17
|
+
*/
|
|
18
|
+
export class FallbackScope {
|
|
19
|
+
primary;
|
|
20
|
+
fallback;
|
|
21
|
+
constructor(primary, fallback) {
|
|
22
|
+
this.primary = primary;
|
|
23
|
+
this.fallback = fallback;
|
|
24
|
+
}
|
|
25
|
+
getElement(name) {
|
|
26
|
+
return this.primary.getElement(name) ?? this.fallback.getElement(name);
|
|
27
|
+
}
|
|
28
|
+
getElements(name) {
|
|
29
|
+
return this.primary.getElements(name).concat(this.fallback.getElements(name));
|
|
30
|
+
}
|
|
31
|
+
getAllElements() {
|
|
32
|
+
return this.primary.getAllElements().concat(this.fallback.getAllElements());
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=fallback-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback-scope.js","sourceRoot":"","sources":["../../../src/langium/scope/fallback-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAa;IAED,OAAO;IACP,QAAQ;IAF9B,YACsB,OAAc,EACd,QAAe;uBADf,OAAO;wBACP,QAAQ;IAC3B,CAAC;IAEJ,UAAU,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,cAAc;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC;CACH"}
|