@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
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { EmptyFileSystemProvider } from '@hydranium/langium';
|
|
10
|
-
import { serveVirtualDocument } from './virtual-document.js';
|
|
11
10
|
/**
|
|
12
|
-
* Empty-filesystem
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* Empty-filesystem {@link WritableFileSystemProvider}. For browser / test / CLI
|
|
12
|
+
* hosts that don't have a real filesystem. All writes and deletes are no-ops.
|
|
13
|
+
* On the portable `.` entry it is the
|
|
14
|
+
* {@link FileSystemProviderRegistry.host} when `context.fileSystemProvider`
|
|
15
|
+
* gives no writable provider; the Node-backed `DefaultFileSystemProvider`
|
|
16
16
|
* lives in `@hydranium/core/node` (it pulls `node:fs`).
|
|
17
17
|
*/
|
|
18
18
|
export class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider {
|
|
@@ -26,16 +26,118 @@ export class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider {
|
|
|
26
26
|
async writeFile(_uri, _content) {
|
|
27
27
|
// no-op
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
async deleteFile(_uri) {
|
|
30
|
+
// no-op
|
|
31
|
+
}
|
|
32
|
+
// `async` so the base's refusal becomes a rejection: it throws
|
|
33
|
+
// SYNCHRONOUSLY from a method declared to return a promise, and a
|
|
34
|
+
// synchronous throw escapes the promise chain — `.catch()` never attaches
|
|
35
|
+
// and `Promise.all` dies while its argument array is still being built, so
|
|
36
|
+
// a caller reading several URIs cannot handle the miss it asked about. The
|
|
37
|
+
// base declares `readFile` and `readBinary` param-less, so the param is
|
|
38
|
+
// optional there.
|
|
39
|
+
async readFile(_uri) {
|
|
40
|
+
return super.readFile();
|
|
41
|
+
}
|
|
42
|
+
async readBinary(_uri) {
|
|
43
|
+
return super.readBinary();
|
|
44
|
+
}
|
|
45
|
+
async stat(uri) {
|
|
46
|
+
return super.stat(uri);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Whether `provider` dispatches by scheme, as the provider bound on `workspace.FileSystemProvider` does. */
|
|
50
|
+
export function isFileSystemProviderRegistry(provider) {
|
|
51
|
+
return 'providerFor' in provider && typeof provider.providerFor === 'function';
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The framework's {@link FileSystemProviderRegistry}.
|
|
55
|
+
*
|
|
56
|
+
* A directory is listed by the provider of its own scheme, so a workspace
|
|
57
|
+
* root's tree comes from that provider alone.
|
|
58
|
+
*
|
|
59
|
+
* `realpath`, `resolveLinks`, `mtimeMs` and `existsSettled` are always present
|
|
60
|
+
* and forward to the scheme's provider. Where that provider lacks one,
|
|
61
|
+
* `realpath` and `resolveLinks` return the URI unchanged, `mtimeMs` returns
|
|
62
|
+
* `undefined` and `existsSettled` answers as `exists`: the answers their
|
|
63
|
+
* callers already give a provider without them.
|
|
64
|
+
*/
|
|
65
|
+
export class DefaultFileSystemProviderRegistry {
|
|
66
|
+
services;
|
|
67
|
+
host;
|
|
68
|
+
tracer;
|
|
69
|
+
constructor(services, options) {
|
|
70
|
+
this.services = services;
|
|
71
|
+
this.host = options.host;
|
|
72
|
+
this.tracer = services.Tracer.for(options.logName ?? this.constructor.name).trace('instantiated');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The group is read per call, not in the constructor, so a registered
|
|
76
|
+
* provider is built on first use and may read slots that reach back to this
|
|
77
|
+
* one. Only an OWN key of the group counts: the DI container resolves any
|
|
78
|
+
* key found on the prototype chain, so a scheme such as `constructor` would
|
|
79
|
+
* otherwise dispatch to a function.
|
|
80
|
+
*/
|
|
81
|
+
providerFor(uri) {
|
|
82
|
+
const providers = this.services.fileSystemProviders;
|
|
83
|
+
return Object.hasOwn(providers, uri.scheme) ? providers[uri.scheme] : this.host;
|
|
84
|
+
}
|
|
85
|
+
// The async methods are `async` so a provider that throws synchronously from
|
|
86
|
+
// one still rejects, for the reason `DefaultEmptyFileSystemProvider` gives.
|
|
87
|
+
async writeFile(uri, content) {
|
|
88
|
+
return this.providerFor(uri).writeFile(uri, content);
|
|
89
|
+
}
|
|
90
|
+
async deleteFile(uri) {
|
|
91
|
+
return this.providerFor(uri).deleteFile(uri);
|
|
92
|
+
}
|
|
93
|
+
async mtimeMs(uri) {
|
|
94
|
+
return this.providerFor(uri).mtimeMs?.(uri);
|
|
95
|
+
}
|
|
96
|
+
realpath(uri) {
|
|
97
|
+
const provider = this.providerFor(uri);
|
|
98
|
+
return provider.realpath ? provider.realpath(uri) : uri;
|
|
99
|
+
}
|
|
100
|
+
resolveLinks(uri) {
|
|
101
|
+
const provider = this.providerFor(uri);
|
|
102
|
+
if (provider.resolveLinks) {
|
|
103
|
+
return provider.resolveLinks(uri);
|
|
104
|
+
}
|
|
105
|
+
// A provider with `realpath` alone still keys a present path by it.
|
|
106
|
+
return provider.realpath?.(uri) ?? uri;
|
|
107
|
+
}
|
|
108
|
+
async existsSettled(uri) {
|
|
109
|
+
const provider = this.providerFor(uri);
|
|
110
|
+
return provider.existsSettled ? provider.existsSettled(uri) : provider.exists(uri);
|
|
111
|
+
}
|
|
112
|
+
async stat(uri) {
|
|
113
|
+
return this.providerFor(uri).stat(uri);
|
|
114
|
+
}
|
|
115
|
+
statSync(uri) {
|
|
116
|
+
return this.providerFor(uri).statSync(uri);
|
|
117
|
+
}
|
|
118
|
+
async exists(uri) {
|
|
119
|
+
return this.providerFor(uri).exists(uri);
|
|
120
|
+
}
|
|
121
|
+
existsSync(uri) {
|
|
122
|
+
return this.providerFor(uri).existsSync(uri);
|
|
123
|
+
}
|
|
124
|
+
async readBinary(uri) {
|
|
125
|
+
return this.providerFor(uri).readBinary(uri);
|
|
126
|
+
}
|
|
127
|
+
readBinarySync(uri) {
|
|
128
|
+
return this.providerFor(uri).readBinarySync(uri);
|
|
129
|
+
}
|
|
130
|
+
async readFile(uri) {
|
|
131
|
+
return this.providerFor(uri).readFile(uri);
|
|
35
132
|
}
|
|
36
133
|
readFileSync(uri) {
|
|
37
|
-
|
|
38
|
-
|
|
134
|
+
return this.providerFor(uri).readFileSync(uri);
|
|
135
|
+
}
|
|
136
|
+
async readDirectory(uri) {
|
|
137
|
+
return this.providerFor(uri).readDirectory(uri);
|
|
138
|
+
}
|
|
139
|
+
readDirectorySync(uri) {
|
|
140
|
+
return this.providerFor(uri).readDirectorySync(uri);
|
|
39
141
|
}
|
|
40
142
|
}
|
|
41
143
|
//# sourceMappingURL=file-system-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-system-provider.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,14 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { type AstNode, DefaultLangiumDocumentFactory, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
9
|
+
import { type AstNode, type AstReflection, DefaultLangiumDocumentFactory, type LangiumDocument, type Linker, type MultiReference, type Mutable, type ParseResult, type Reference, type ReferenceInfo, type URI } from '@hydranium/langium';
|
|
10
|
+
import { type CancellationToken } from 'vscode-languageserver-protocol';
|
|
11
|
+
import { type TextDocument } from 'vscode-languageserver-textdocument';
|
|
12
|
+
import { type ModelLedger } from '../../documents/model-ledger.js';
|
|
13
|
+
import { type CstResidencyService } from '../residency/cst-residency-service.js';
|
|
14
|
+
import { type VersionSyncService } from '../../documents/version-sync-service.js';
|
|
10
15
|
import { type ExtendedServiceRegistry } from '../service-registry.js';
|
|
16
|
+
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
11
17
|
/**
|
|
12
18
|
* Framework `LangiumDocumentFactory` that fills in the one thing Langium
|
|
13
19
|
* leaves empty for a code-built document: its text.
|
|
@@ -21,10 +27,18 @@ import { type ExtendedServiceRegistry } from '../service-registry.js';
|
|
|
21
27
|
* scope descriptions pointing at them, stay valid. A `fromString` document
|
|
22
28
|
* already carries its source, so only `fromModel` needs help.
|
|
23
29
|
*
|
|
30
|
+
* The first build grafts the CST of that text onto the model, as for a shed
|
|
31
|
+
* document, which gives every reference the `$refNode` the reference index
|
|
32
|
+
* needs. A model that does not pair node for node with its serialized text is
|
|
33
|
+
* re-parsed instead, and its nodes are replaced: from its file, or from the
|
|
34
|
+
* text it holds when no file is at its URI, since reading the URI would throw.
|
|
35
|
+
* While the document is open, the store's text wins.
|
|
36
|
+
*
|
|
24
37
|
* Degrades to Langium's text-less `fromModel` when no serializer is bound for
|
|
25
|
-
* the URI's language (the serializer throws or is absent)
|
|
26
|
-
*
|
|
27
|
-
*
|
|
38
|
+
* the URI's language (the serializer throws or is absent). Its first build
|
|
39
|
+
* re-reads it from the store or its file, replacing its nodes, as Langium
|
|
40
|
+
* does. With neither, it keeps its nodes but gets no CST, so its references
|
|
41
|
+
* stay out of the reference index and it is not relinked.
|
|
28
42
|
*
|
|
29
43
|
* Also links the model's container properties (`$container` /
|
|
30
44
|
* `$containerProperty` / `$containerIndex`), which Langium's parser sets via
|
|
@@ -41,6 +55,16 @@ export declare class HydraniumLangiumDocumentFactory extends DefaultLangiumDocum
|
|
|
41
55
|
* per-callsite cast. The framework's shared module binds that class.
|
|
42
56
|
*/
|
|
43
57
|
protected readonly serviceRegistry: ExtendedServiceRegistry;
|
|
58
|
+
/** A thunk: a version-sync service whose constructor reads this factory would otherwise be a cycle. */
|
|
59
|
+
protected readonly versionSyncService: () => VersionSyncService;
|
|
60
|
+
/** A thunk: a ledger whose constructor reads this factory would otherwise be a cycle. */
|
|
61
|
+
protected readonly modelLedger: () => ModelLedger;
|
|
62
|
+
/** A thunk: the residency service resolves `LangiumDocuments`, which is built with this factory. */
|
|
63
|
+
protected readonly cstResidency: () => CstResidencyService;
|
|
64
|
+
/** The code-built documents, which are re-read from the text they hold when no file is at their URI. */
|
|
65
|
+
protected readonly codeBuiltDocuments: WeakSet<LangiumDocument<AstNode>>;
|
|
66
|
+
protected readonly astReflection: AstReflection;
|
|
67
|
+
constructor(services: ServerSharedServicesMinimal);
|
|
44
68
|
/**
|
|
45
69
|
* Parse `text` for `uri` under the grammar `languageId` names, instead of
|
|
46
70
|
* the one `uri` routes to.
|
|
@@ -60,6 +84,56 @@ export declare class HydraniumLangiumDocumentFactory extends DefaultLangiumDocum
|
|
|
60
84
|
*/
|
|
61
85
|
fromStringInLanguage<T extends AstNode = AstNode>(text: string, uri: URI, languageId: string): LangiumDocument<T>;
|
|
62
86
|
fromModel<T extends AstNode = AstNode>(model: T, uri: URI): LangiumDocument<T>;
|
|
87
|
+
/**
|
|
88
|
+
* Replace a code-set reference with one the linker built, holding the same
|
|
89
|
+
* target. A relink resets and the reference index reads only such
|
|
90
|
+
* references, and only those listed in `document.references`. The first
|
|
91
|
+
* build unlinks them before its link phase, which resolves and indexes them.
|
|
92
|
+
* The target is kept in the field Langium's references hold it in, so a
|
|
93
|
+
* linker whose references have no such field resolves it on first read.
|
|
94
|
+
* `undefined` when the reference has no slot to go back in.
|
|
95
|
+
*/
|
|
96
|
+
protected rebuildReference(linker: Linker, { reference, container, property, index }: ReferenceInfo): Reference | MultiReference | undefined;
|
|
97
|
+
protected createLangiumDocument<T extends AstNode = AstNode>(parseResult: ParseResult<T>, uri: URI, textDocument?: TextDocument, text?: string): LangiumDocument<T>;
|
|
98
|
+
/**
|
|
99
|
+
* The version is read before the parse, for the same reason as in
|
|
100
|
+
* {@link update}: the text document is the store's, which an edit updates
|
|
101
|
+
* in place while the parse runs.
|
|
102
|
+
*/
|
|
103
|
+
protected createAsync<T extends AstNode = AstNode>(uri: URI, content: string | TextDocument, cancelToken: CancellationToken): Promise<LangiumDocument<T>>;
|
|
104
|
+
/**
|
|
105
|
+
* The store's version is read before Langium's `update`, which reads the
|
|
106
|
+
* store's text before its first await: read after, it can belong to an
|
|
107
|
+
* edit that arrived while the parse ran.
|
|
108
|
+
*
|
|
109
|
+
* Reconciled with the store here rather than in a `Parsed` listener, which
|
|
110
|
+
* a cancel skips, leaving the root on the version of its earlier text.
|
|
111
|
+
*/
|
|
112
|
+
update<T extends AstNode = AstNode>(document: Mutable<LangiumDocument<T>>, cancellationToken: CancellationToken): Promise<LangiumDocument<T>>;
|
|
113
|
+
/**
|
|
114
|
+
* The text a code-built document is read from when no file is at its URI:
|
|
115
|
+
* the store's while it is open, else the text it holds, serialized at
|
|
116
|
+
* creation or last read, as `VirtualFileSystemProvider` serves it.
|
|
117
|
+
* `undefined` for any other document, which is read as Langium reads it.
|
|
118
|
+
* The store's version is read with its text, since an edit can land
|
|
119
|
+
* before the caller resumes. Held text has no version.
|
|
120
|
+
*/
|
|
121
|
+
protected codeBuiltSource(document: LangiumDocument): Promise<{
|
|
122
|
+
text: string;
|
|
123
|
+
version: number | undefined;
|
|
124
|
+
} | undefined>;
|
|
125
|
+
/**
|
|
126
|
+
* Langium's `update` with `text` in place of the text it reads from the
|
|
127
|
+
* store or the URI. Mirrors `DefaultLangiumDocumentFactory.update` of
|
|
128
|
+
* Langium 4.3.1, so a Langium upgrade has to compare the two. From
|
|
129
|
+
* Langium 4.4, an override of `getUpdatedText` replaces it.
|
|
130
|
+
*/
|
|
131
|
+
protected reparse<T extends AstNode = AstNode>(document: Mutable<LangiumDocument<T>>, text: string, cancellationToken: CancellationToken): Promise<LangiumDocument<T>>;
|
|
132
|
+
/**
|
|
133
|
+
* `version`, or {@link STALE_VERSION} when the store holds `uri` open with
|
|
134
|
+
* other text than `parsed`: text read from the file while an open landed.
|
|
135
|
+
*/
|
|
136
|
+
protected versionOfParsedText(uri: URI, parsed: string | undefined, version: number): number;
|
|
63
137
|
/**
|
|
64
138
|
* Serialize `model` via the per-language serializer, or `undefined` if none
|
|
65
139
|
* is bound, it fails, or it is async — `fromModel` is synchronous, so an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-langium-document-factory.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"hydranium-langium-document-factory.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { AstUtils, DefaultLangiumDocumentFactory } from '@hydranium/langium';
|
|
9
|
+
import { AstUtils, DefaultLangiumDocumentFactory, DocumentState, isAstNode, isMultiReference } from '@hydranium/langium';
|
|
10
|
+
import { STALE_VERSION } from '@hydranium/protocol';
|
|
10
11
|
/**
|
|
11
12
|
* Framework `LangiumDocumentFactory` that fills in the one thing Langium
|
|
12
13
|
* leaves empty for a code-built document: its text.
|
|
@@ -20,10 +21,18 @@ import { AstUtils, DefaultLangiumDocumentFactory } from '@hydranium/langium';
|
|
|
20
21
|
* scope descriptions pointing at them, stay valid. A `fromString` document
|
|
21
22
|
* already carries its source, so only `fromModel` needs help.
|
|
22
23
|
*
|
|
24
|
+
* The first build grafts the CST of that text onto the model, as for a shed
|
|
25
|
+
* document, which gives every reference the `$refNode` the reference index
|
|
26
|
+
* needs. A model that does not pair node for node with its serialized text is
|
|
27
|
+
* re-parsed instead, and its nodes are replaced: from its file, or from the
|
|
28
|
+
* text it holds when no file is at its URI, since reading the URI would throw.
|
|
29
|
+
* While the document is open, the store's text wins.
|
|
30
|
+
*
|
|
23
31
|
* Degrades to Langium's text-less `fromModel` when no serializer is bound for
|
|
24
|
-
* the URI's language (the serializer throws or is absent)
|
|
25
|
-
*
|
|
26
|
-
*
|
|
32
|
+
* the URI's language (the serializer throws or is absent). Its first build
|
|
33
|
+
* re-reads it from the store or its file, replacing its nodes, as Langium
|
|
34
|
+
* does. With neither, it keeps its nodes but gets no CST, so its references
|
|
35
|
+
* stay out of the reference index and it is not relinked.
|
|
27
36
|
*
|
|
28
37
|
* Also links the model's container properties (`$container` /
|
|
29
38
|
* `$containerProperty` / `$containerIndex`), which Langium's parser sets via
|
|
@@ -34,6 +43,22 @@ import { AstUtils, DefaultLangiumDocumentFactory } from '@hydranium/langium';
|
|
|
34
43
|
* node identity is preserved.
|
|
35
44
|
*/
|
|
36
45
|
export class HydraniumLangiumDocumentFactory extends DefaultLangiumDocumentFactory {
|
|
46
|
+
/** A thunk: a version-sync service whose constructor reads this factory would otherwise be a cycle. */
|
|
47
|
+
versionSyncService;
|
|
48
|
+
/** A thunk: a ledger whose constructor reads this factory would otherwise be a cycle. */
|
|
49
|
+
modelLedger;
|
|
50
|
+
/** A thunk: the residency service resolves `LangiumDocuments`, which is built with this factory. */
|
|
51
|
+
cstResidency;
|
|
52
|
+
/** The code-built documents, which are re-read from the text they hold when no file is at their URI. */
|
|
53
|
+
codeBuiltDocuments = new WeakSet();
|
|
54
|
+
astReflection;
|
|
55
|
+
constructor(services) {
|
|
56
|
+
super(services);
|
|
57
|
+
this.astReflection = services.AstReflection;
|
|
58
|
+
this.versionSyncService = () => services.workspace.VersionSyncService;
|
|
59
|
+
this.modelLedger = () => services.workspace.ModelLedger;
|
|
60
|
+
this.cstResidency = () => services.workspace.CstResidencyService;
|
|
61
|
+
}
|
|
37
62
|
/**
|
|
38
63
|
* Parse `text` for `uri` under the grammar `languageId` names, instead of
|
|
39
64
|
* the one `uri` routes to.
|
|
@@ -63,12 +88,170 @@ export class HydraniumLangiumDocumentFactory extends DefaultLangiumDocumentFacto
|
|
|
63
88
|
// Make the code-built AST as structurally complete as a parsed one — the
|
|
64
89
|
// parser links containers, `fromModel` does not. In place (identity kept).
|
|
65
90
|
AstUtils.linkContentToContainer(model, { deep: true });
|
|
91
|
+
// The parser fills in the defaults a model built in code may leave out.
|
|
92
|
+
// Filled before serializing, since a serializer may read them, and
|
|
93
|
+
// without them the model does not pair with the parse of its text.
|
|
94
|
+
for (const node of AstUtils.streamAst(model)) {
|
|
95
|
+
AstUtils.assignMandatoryProperties(this.astReflection, node);
|
|
96
|
+
}
|
|
66
97
|
const text = this.serializeModel(model, uri);
|
|
67
98
|
if (text === undefined) {
|
|
68
99
|
return super.fromModel(model, uri);
|
|
69
100
|
}
|
|
70
101
|
const parseResult = { value: model, parserErrors: [], lexerErrors: [] };
|
|
71
|
-
|
|
102
|
+
const document = this.createLangiumDocument(parseResult, uri, undefined, text);
|
|
103
|
+
this.codeBuiltDocuments.add(document);
|
|
104
|
+
const linker = this.serviceRegistry.getServices(uri).references.Linker;
|
|
105
|
+
document.references = AstUtils.streamAst(model)
|
|
106
|
+
.flatMap(node => AstUtils.streamReferences(node))
|
|
107
|
+
.toArray()
|
|
108
|
+
.flatMap(info => this.rebuildReference(linker, info) ?? []);
|
|
109
|
+
return document;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Replace a code-set reference with one the linker built, holding the same
|
|
113
|
+
* target. A relink resets and the reference index reads only such
|
|
114
|
+
* references, and only those listed in `document.references`. The first
|
|
115
|
+
* build unlinks them before its link phase, which resolves and indexes them.
|
|
116
|
+
* The target is kept in the field Langium's references hold it in, so a
|
|
117
|
+
* linker whose references have no such field resolves it on first read.
|
|
118
|
+
* `undefined` when the reference has no slot to go back in.
|
|
119
|
+
*/
|
|
120
|
+
rebuildReference(linker, { reference, container, property, index }) {
|
|
121
|
+
const owner = Reflect.get(container, property);
|
|
122
|
+
if (index !== undefined && !Array.isArray(owner)) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
let rebuilt;
|
|
126
|
+
if (isMultiReference(reference)) {
|
|
127
|
+
// Read through the field, as `items` would resolve a linker-built reference.
|
|
128
|
+
const items = '_items' in reference ? reference._items : reference.items;
|
|
129
|
+
const multi = linker.buildMultiReference(container, property, reference.$refNode, reference.$refText);
|
|
130
|
+
if ('_items' in multi) {
|
|
131
|
+
multi._items = Array.isArray(items) ? [...items] : undefined;
|
|
132
|
+
}
|
|
133
|
+
rebuilt = multi;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const target = '_ref' in reference ? reference._ref : reference.ref;
|
|
137
|
+
const single = linker.buildReference(container, property, reference.$refNode, reference.$refText);
|
|
138
|
+
if ('_ref' in single) {
|
|
139
|
+
single._ref = isAstNode(target) ? target : undefined;
|
|
140
|
+
}
|
|
141
|
+
rebuilt = single;
|
|
142
|
+
}
|
|
143
|
+
if (Array.isArray(owner) && index !== undefined) {
|
|
144
|
+
owner[index] = rebuilt;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
Reflect.set(container, property, rebuilt);
|
|
148
|
+
}
|
|
149
|
+
return rebuilt;
|
|
150
|
+
}
|
|
151
|
+
createLangiumDocument(parseResult, uri, textDocument, text) {
|
|
152
|
+
const document = super.createLangiumDocument(parseResult, uri, textDocument, text);
|
|
153
|
+
// Without `textDocument` Langium creates one at version 0 on first read,
|
|
154
|
+
// which needs a language for `uri` that a folder URI does not have.
|
|
155
|
+
const parsed = parseResult.value.$cstNode?.root.fullText ?? text ?? textDocument?.getText();
|
|
156
|
+
const version = this.versionOfParsedText(uri, parsed, textDocument?.version ?? 0);
|
|
157
|
+
// A `fromModel` root has no CST to hold its serialized text. Recorded, it
|
|
158
|
+
// is the text a build grafts a CST from, keeping the model's nodes.
|
|
159
|
+
this.versionSyncService().modelProduced(document, { version, text: parseResult.value.$cstNode ? undefined : text });
|
|
160
|
+
return document;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The version is read before the parse, for the same reason as in
|
|
164
|
+
* {@link update}: the text document is the store's, which an edit updates
|
|
165
|
+
* in place while the parse runs.
|
|
166
|
+
*/
|
|
167
|
+
async createAsync(uri, content, cancelToken) {
|
|
168
|
+
const version = typeof content === 'string' ? undefined : content.version;
|
|
169
|
+
const document = await super.createAsync(uri, content, cancelToken);
|
|
170
|
+
if (version !== undefined) {
|
|
171
|
+
this.versionSyncService().modelProduced(document, { version });
|
|
172
|
+
}
|
|
173
|
+
return document;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* The store's version is read before Langium's `update`, which reads the
|
|
177
|
+
* store's text before its first await: read after, it can belong to an
|
|
178
|
+
* edit that arrived while the parse ran.
|
|
179
|
+
*
|
|
180
|
+
* Reconciled with the store here rather than in a `Parsed` listener, which
|
|
181
|
+
* a cancel skips, leaving the root on the version of its earlier text.
|
|
182
|
+
*/
|
|
183
|
+
async update(document, cancellationToken) {
|
|
184
|
+
// Langium keeps the AST when the CST's text equals the new text, but a
|
|
185
|
+
// shed document has no CST and would get new AST nodes, leaving its
|
|
186
|
+
// dependents on the old ones. Grafted only when the new text is the text
|
|
187
|
+
// the AST was parsed from, so an edit on disk or in the store is still
|
|
188
|
+
// re-parsed. Not `isCstShed`: the builder has already reset the document
|
|
189
|
+
// to `Changed`. A refused or diverged graft re-parses, and a build after
|
|
190
|
+
// this one relinks the dependents: this build has prepared its
|
|
191
|
+
// documents, and a reset now would drop their build state.
|
|
192
|
+
const root = document.parseResult.value;
|
|
193
|
+
const parsedFrom = root.$cstNode === undefined ? this.modelLedger().textOf(root) : undefined;
|
|
194
|
+
const codeBuilt = await this.codeBuiltSource(document);
|
|
195
|
+
if (parsedFrom !== undefined) {
|
|
196
|
+
const text = codeBuilt?.text ??
|
|
197
|
+
this.textDocuments?.get(document.uri.toString())?.getText() ??
|
|
198
|
+
(await this.fileSystemProvider.readFile(document.uri));
|
|
199
|
+
if (text === parsedFrom) {
|
|
200
|
+
this.cstResidency().rehydrate(document);
|
|
201
|
+
if (root.$cstNode === undefined) {
|
|
202
|
+
this.versionSyncService().rebuildWhileCurrent(document);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
const stored = codeBuilt === undefined ? this.textDocuments?.get(document.uri.toString())?.version : codeBuilt.version;
|
|
207
|
+
const updated = codeBuilt === undefined
|
|
208
|
+
? await super.update(document, cancellationToken)
|
|
209
|
+
: await this.reparse(document, codeBuilt.text, cancellationToken);
|
|
210
|
+
const version = stored ??
|
|
211
|
+
this.versionOfParsedText(updated.uri, this.modelLedger().textOf(updated.parseResult.value) ?? updated.textDocument.getText(), updated.textDocument.version);
|
|
212
|
+
this.versionSyncService().modelProduced(updated, { version });
|
|
213
|
+
return updated;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* The text a code-built document is read from when no file is at its URI:
|
|
217
|
+
* the store's while it is open, else the text it holds, serialized at
|
|
218
|
+
* creation or last read, as `VirtualFileSystemProvider` serves it.
|
|
219
|
+
* `undefined` for any other document, which is read as Langium reads it.
|
|
220
|
+
* The store's version is read with its text, since an edit can land
|
|
221
|
+
* before the caller resumes. Held text has no version.
|
|
222
|
+
*/
|
|
223
|
+
async codeBuiltSource(document) {
|
|
224
|
+
if (!this.codeBuiltDocuments.has(document) || (await this.fileSystemProvider.exists(document.uri))) {
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
const open = this.textDocuments?.get(document.uri.toString());
|
|
228
|
+
return open === undefined
|
|
229
|
+
? { text: document.textDocument.getText(), version: undefined }
|
|
230
|
+
: { text: open.getText(), version: open.version };
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Langium's `update` with `text` in place of the text it reads from the
|
|
234
|
+
* store or the URI. Mirrors `DefaultLangiumDocumentFactory.update` of
|
|
235
|
+
* Langium 4.3.1, so a Langium upgrade has to compare the two. From
|
|
236
|
+
* Langium 4.4, an override of `getUpdatedText` replaces it.
|
|
237
|
+
*/
|
|
238
|
+
async reparse(document, text, cancellationToken) {
|
|
239
|
+
const textDocument = this.textDocuments?.get(document.uri.toString());
|
|
240
|
+
Object.defineProperty(document, 'textDocument', textDocument ? { value: textDocument } : { get: this.createTextDocumentGetter(document.uri, text) });
|
|
241
|
+
if (document.parseResult.value.$cstNode?.root.fullText !== text) {
|
|
242
|
+
document.parseResult = await this.parseAsync(document.uri, text, cancellationToken);
|
|
243
|
+
document.parseResult.value.$document = document;
|
|
244
|
+
}
|
|
245
|
+
document.state = DocumentState.Parsed;
|
|
246
|
+
return document;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* `version`, or {@link STALE_VERSION} when the store holds `uri` open with
|
|
250
|
+
* other text than `parsed`: text read from the file while an open landed.
|
|
251
|
+
*/
|
|
252
|
+
versionOfParsedText(uri, parsed, version) {
|
|
253
|
+
const open = this.textDocuments?.get(uri.toString());
|
|
254
|
+
return open !== undefined && parsed !== undefined && open.getText() !== parsed ? STALE_VERSION : version;
|
|
72
255
|
}
|
|
73
256
|
/**
|
|
74
257
|
* Serialize `model` via the per-language serializer, or `undefined` if none
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-langium-document-factory.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,
|
|
1
|
+
{"version":3,"file":"hydranium-langium-document-factory.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-langium-document-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,25 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
+
import { type Clock, type Tracer } from '@hydranium/protocol';
|
|
9
10
|
import { DefaultWorkspaceLock, type MaybePromise } from '@hydranium/langium';
|
|
10
|
-
import { type CancellationToken } from 'vscode-languageserver-protocol';
|
|
11
|
+
import { type CancellationToken, type Disposable } from 'vscode-languageserver-protocol';
|
|
12
|
+
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
13
|
+
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
14
|
+
/** Constructor options for {@link HydraniumWorkspaceLock}. */
|
|
15
|
+
export interface HydraniumWorkspaceLockOptions extends LogNameOptions {
|
|
16
|
+
/**
|
|
17
|
+
* How long a write may keep running after a later write cancelled it before
|
|
18
|
+
* the lock logs a warning. Every write and read waits behind it meanwhile, so
|
|
19
|
+
* one that never ends stops the server. Defaults to 10 s; `0` turns the
|
|
20
|
+
* check off.
|
|
21
|
+
*/
|
|
22
|
+
readonly stalledWriteWarnMs?: number;
|
|
23
|
+
}
|
|
24
|
+
/** The write action a {@link HydraniumWorkspaceLock} is running, with the timer its cancellation started. */
|
|
25
|
+
export interface RunningWrite {
|
|
26
|
+
stallTimer?: Disposable;
|
|
27
|
+
}
|
|
11
28
|
/**
|
|
12
29
|
* Langium's {@link DefaultWorkspaceLock} with the write action marked as a
|
|
13
30
|
* write-lock scope, so anything it reaches can be asked whether the lock is
|
|
@@ -26,6 +43,38 @@ import { type CancellationToken } from 'vscode-languageserver-protocol';
|
|
|
26
43
|
* would turn ordinary read-then-write sequences into false positives.
|
|
27
44
|
*/
|
|
28
45
|
export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
46
|
+
/** Backs {@link writeCancellations}. */
|
|
47
|
+
protected cancelledWriteCount: number;
|
|
48
|
+
protected readonly clock: Clock;
|
|
49
|
+
protected readonly tracer: Tracer;
|
|
50
|
+
protected readonly stalledWriteWarnMs: number;
|
|
51
|
+
protected runningWrite?: RunningWrite;
|
|
52
|
+
/** Writes queued and not yet started. */
|
|
53
|
+
protected queuedWrites: number;
|
|
54
|
+
constructor(services: Pick<ServerSharedServicesMinimal, 'Clock' | 'Tracer'>, options?: HydraniumWorkspaceLockOptions);
|
|
55
|
+
/**
|
|
56
|
+
* How many calls to `write` or `cancelWrite` came while a write was still
|
|
57
|
+
* queued or running. A caller that reads this right after queuing a
|
|
58
|
+
* write, and reads the same number later, holds a write nothing has
|
|
59
|
+
* cancelled, whether it is still queued or already running. Its token
|
|
60
|
+
* answers that only once the write runs, since a queued write has not been
|
|
61
|
+
* handed it yet. A different number read after the caller's write ended
|
|
62
|
+
* does not prove that write was cancelled, since a later write that
|
|
63
|
+
* cancels another queued or running write counts too. A caller that
|
|
64
|
+
* retries on it builds once more than it needs to.
|
|
65
|
+
*/
|
|
66
|
+
get writeCancellations(): number;
|
|
29
67
|
write(action: (token: CancellationToken) => MaybePromise<void>): Promise<void>;
|
|
68
|
+
/** Run `action` as {@link runningWrite}, so a cancellation while it runs can time it. */
|
|
69
|
+
protected runWrite(action: (token: CancellationToken) => MaybePromise<void>, token: CancellationToken): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Counted here rather than in {@link write}, because Langium's `write` cancels
|
|
72
|
+
* through this method too. A write that has ended is not counted, so the
|
|
73
|
+
* next write does not count as cancelling it. A write running when this is
|
|
74
|
+
* called has been cancelled, by this call or an earlier one, so its timer
|
|
75
|
+
* starts here.
|
|
76
|
+
*/
|
|
77
|
+
cancelWrite(): void;
|
|
78
|
+
protected reportStalledWrite(): void;
|
|
30
79
|
}
|
|
31
80
|
//# sourceMappingURL=hydranium-workspace-lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,8DAA8D;AAC9D,MAAM,WAAW,6BAA8B,SAAQ,cAAc;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID,6GAA6G;AAC7G,MAAM,WAAW,YAAY;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACtC,yCAAyC;IACzC,SAAS,CAAC,YAAY,SAAK;IAE3B,YAAY,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,OAAO,GAAE,6BAAkC,EAKvH;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAEQ,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtF;IAED,yFAAyF;IACzF,UAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1H;IAED;;;;;;OAMG;IACM,WAAW,IAAI,IAAI,CAS3B;IAED,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAOnC;CACH"}
|