@hydranium/core 1.0.0-next.30 → 1.0.0-next.300
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 +72 -82
- package/lib/browser/host-heads-in-worker.d.ts +58 -0
- package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
- package/lib/browser/host-heads-in-worker.js +113 -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 +29 -0
- package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
- package/lib/browser/start-language-server-in-worker.js +35 -0
- package/lib/browser/start-language-server-in-worker.js.map +1 -0
- package/lib/documents/ast-document-manager.d.ts +256 -124
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +293 -132
- package/lib/documents/ast-document-manager.js.map +1 -1
- package/lib/documents/client-ids.d.ts +5 -19
- package/lib/documents/client-ids.d.ts.map +1 -1
- package/lib/documents/client-ids.js +5 -19
- package/lib/documents/client-ids.js.map +1 -1
- package/lib/documents/client-session-errors.d.ts +15 -0
- package/lib/documents/client-session-errors.d.ts.map +1 -0
- package/lib/documents/client-session-errors.js +15 -0
- package/lib/documents/client-session-errors.js.map +1 -0
- package/lib/documents/client-session-registry.d.ts +146 -0
- package/lib/documents/client-session-registry.d.ts.map +1 -0
- package/lib/documents/client-session-registry.js +207 -0
- package/lib/documents/client-session-registry.js.map +1 -0
- package/lib/documents/dirty-state-tracker.d.ts +101 -0
- package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
- package/lib/documents/dirty-state-tracker.js +85 -0
- package/lib/documents/dirty-state-tracker.js.map +1 -0
- package/lib/documents/document-release-handler.d.ts +204 -0
- package/lib/documents/document-release-handler.d.ts.map +1 -0
- package/lib/documents/document-release-handler.js +317 -0
- package/lib/documents/document-release-handler.js.map +1 -0
- package/lib/documents/document-release-scheduler.d.ts +67 -0
- package/lib/documents/document-release-scheduler.d.ts.map +1 -0
- package/lib/documents/document-release-scheduler.js +80 -0
- package/lib/documents/document-release-scheduler.js.map +1 -0
- package/lib/documents/file-system-task-queue.d.ts +52 -0
- package/lib/documents/file-system-task-queue.d.ts.map +1 -0
- package/lib/documents/file-system-task-queue.js +37 -0
- package/lib/documents/file-system-task-queue.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +419 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +856 -483
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +10 -2
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +10 -2
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/language-client-shadow.d.ts +218 -0
- package/lib/documents/language-client-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-shadow.js +284 -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 +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.d.ts +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 +32 -9
- package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.js +60 -22
- package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
- package/lib/langium/bootstrap.d.ts +49 -36
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +91 -45
- 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/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 +19 -4
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +36 -11
- package/lib/langium/diagnostics/logger.js.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +58 -17
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
- package/lib/langium/diagnostics/server-tracer.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +28 -30
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/build-session.d.ts +6 -5
- package/lib/langium/document-builder/build-session.d.ts.map +1 -1
- package/lib/langium/document-builder/build-session.js +5 -5
- package/lib/langium/document-builder/build-session.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +309 -35
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +511 -75
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/documentation/comment-provider.d.ts.map +1 -1
- package/lib/langium/documentation/comment-provider.js.map +1 -1
- package/lib/langium/integration-services.d.ts +40 -24
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +7 -4
- package/lib/langium/integration-services.js.map +1 -1
- package/lib/langium/integrity/integrity-rule.d.ts +16 -8
- package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-rule.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +83 -27
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +273 -63
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/containment.d.ts +64 -0
- package/lib/langium/keys/containment.d.ts.map +1 -0
- package/lib/langium/keys/containment.js +53 -0
- package/lib/langium/keys/containment.js.map +1 -0
- package/lib/langium/keys/index.d.ts +1 -0
- package/lib/langium/keys/index.d.ts.map +1 -1
- package/lib/langium/keys/index.js +1 -0
- package/lib/langium/keys/index.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +4 -0
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +18 -4
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +374 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +446 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +2 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +2 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-events.d.ts +66 -0
- package/lib/langium/model-service/model-events.d.ts.map +1 -0
- package/lib/langium/model-service/model-events.js +10 -0
- package/lib/langium/model-service/model-events.js.map +1 -0
- package/lib/langium/model-service/model-service.d.ts +480 -289
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +597 -456
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +158 -37
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +52 -36
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +42 -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 +23 -1
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/naming/name-separator-validation.js +22 -0
- package/lib/langium/naming/name-separator-validation.js.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +13 -6
- package/lib/langium/project/abstract-project-manager.js.map +1 -1
- package/lib/langium/project/project-change-event.d.ts +2 -2
- package/lib/langium/project/single-project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts +35 -12
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +24 -58
- package/lib/langium/residency/cst-residency-service.js.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.d.ts.map +1 -1
- package/lib/langium/scope/ast-node-description-provider.js.map +1 -1
- package/lib/langium/scope/fallback-scope.d.ts +27 -0
- package/lib/langium/scope/fallback-scope.d.ts.map +1 -0
- package/lib/langium/scope/fallback-scope.js +35 -0
- package/lib/langium/scope/fallback-scope.js.map +1 -0
- package/lib/langium/scope/hydranium-scope-computation.d.ts +21 -18
- package/lib/langium/scope/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js +38 -39
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +39 -17
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +52 -26
- 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 +41 -37
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js +57 -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 +4 -0
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/yaml-serializer.js +4 -0
- package/lib/langium/serialization/yaml-serializer.js.map +1 -1
- package/lib/langium/service-registry.d.ts +29 -1
- package/lib/langium/service-registry.d.ts.map +1 -1
- package/lib/langium/service-registry.js +37 -0
- package/lib/langium/service-registry.js.map +1 -1
- package/lib/langium/shared-services.d.ts +23 -6
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/shared-services.js.map +1 -1
- package/lib/langium/single-langium-copy.d.ts +22 -0
- package/lib/langium/single-langium-copy.d.ts.map +1 -0
- package/lib/langium/single-langium-copy.js +36 -0
- package/lib/langium/single-langium-copy.js.map +1 -0
- package/lib/langium/transfer/transfer-encoder.d.ts +84 -35
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +34 -23
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/langium/trivia/comment-preserver.d.ts +423 -0
- package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/comment-preserver.js +906 -0
- package/lib/langium/trivia/comment-preserver.js.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts +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 +280 -9
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +453 -8
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.js +1 -1
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
- package/lib/langium/workspace/document-uri-policy.d.ts +24 -15
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +22 -13
- package/lib/langium/workspace/document-uri-policy.js.map +1 -1
- package/lib/langium/workspace/file-not-found.d.ts +23 -0
- package/lib/langium/workspace/file-not-found.d.ts.map +1 -0
- package/lib/langium/workspace/file-not-found.js +31 -0
- package/lib/langium/workspace/file-not-found.js.map +1 -0
- package/lib/langium/workspace/file-system-provider.d.ts +165 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +111 -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 +124 -22
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +212 -31
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -9
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +45 -22
- package/lib/langium/workspace/in-memory-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/index-manager.d.ts.map +1 -1
- package/lib/langium/workspace/index-manager.js.map +1 -1
- package/lib/langium/workspace/index.d.ts +1 -0
- package/lib/langium/workspace/index.d.ts.map +1 -1
- package/lib/langium/workspace/index.js +1 -0
- package/lib/langium/workspace/index.js.map +1 -1
- package/lib/langium/workspace/initialize-workspace.d.ts +31 -2
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +13 -5
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +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 +15 -9
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/langium/workspace/self-save-registry.d.ts +84 -0
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +33 -22
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +55 -21
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +87 -24
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +22 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +15 -5
- package/lib/langium/workspace/write-lock-scope.js.map +1 -1
- package/lib/launcher/integrated-server.d.ts +3 -1
- package/lib/launcher/integrated-server.d.ts.map +1 -1
- package/lib/locale/index.d.ts +10 -0
- package/lib/locale/index.d.ts.map +1 -0
- package/lib/locale/index.js +10 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/server-locale.d.ts +73 -0
- package/lib/locale/server-locale.d.ts.map +1 -0
- package/lib/locale/server-locale.js +61 -0
- package/lib/locale/server-locale.js.map +1 -0
- package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
- package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
- package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
- package/lib/lsp/connection-features.d.ts +23 -0
- package/lib/lsp/connection-features.d.ts.map +1 -0
- package/lib/lsp/connection-features.js +60 -0
- package/lib/lsp/connection-features.js.map +1 -0
- package/lib/lsp/diagnostics-connection.d.ts +27 -0
- package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
- package/lib/lsp/diagnostics-connection.js +53 -0
- package/lib/lsp/diagnostics-connection.js.map +1 -0
- package/lib/lsp/hydranium-document-update-handler.d.ts +126 -82
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +235 -102
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/lsp/index.d.ts +3 -1
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +3 -1
- package/lib/lsp/index.js.map +1 -1
- package/lib/lsp/lsp-latency.d.ts +39 -0
- package/lib/lsp/lsp-latency.d.ts.map +1 -0
- package/lib/lsp/lsp-latency.js +58 -0
- package/lib/lsp/lsp-latency.js.map +1 -0
- package/lib/lsp/semantic-token-provider.d.ts +34 -1
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
- package/lib/lsp/semantic-token-provider.js +55 -8
- package/lib/lsp/semantic-token-provider.js.map +1 -1
- package/lib/lsp/shared-module.d.ts +4 -8
- package/lib/lsp/shared-module.d.ts.map +1 -1
- package/lib/lsp/shared-module.js.map +1 -1
- package/lib/lsp/start-language-server.d.ts +8 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +13 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +18 -12
- package/lib/messages/carriers.d.ts.map +1 -1
- package/lib/messages/carriers.js +22 -13
- package/lib/messages/carriers.js.map +1 -1
- package/lib/messages/index.d.ts +4 -1
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +4 -1
- package/lib/messages/index.js.map +1 -1
- package/lib/messages/renderer.d.ts +142 -0
- package/lib/messages/renderer.d.ts.map +1 -0
- package/lib/messages/renderer.js +165 -0
- package/lib/messages/renderer.js.map +1 -0
- package/lib/node/event-loop-monitor.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-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 +20 -4
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +8 -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 +10 -10
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +17 -9
- package/lib/node/stdio-launcher.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 +16 -4
- package/lib/testing/fake-document.d.ts.map +1 -1
- package/lib/testing/fake-document.js +18 -3
- package/lib/testing/fake-document.js.map +1 -1
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.d.ts.map +1 -1
- package/lib/testing/index.js +2 -1
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/langium-test-helpers.d.ts.map +1 -1
- package/lib/testing/langium-test-helpers.js +1 -0
- package/lib/testing/langium-test-helpers.js.map +1 -1
- package/lib/testing/make-noop-language-services.js.map +1 -1
- package/lib/testing/make-noop-shared-services.d.ts +14 -0
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +28 -2
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +72 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +42 -10
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/make-test-tracer.d.ts +12 -0
- package/lib/testing/make-test-tracer.d.ts.map +1 -1
- package/lib/testing/make-test-tracer.js +13 -0
- package/lib/testing/make-test-tracer.js.map +1 -1
- package/lib/testing/node/applied-edit-capture.d.ts +29 -0
- package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
- package/lib/testing/node/applied-edit-capture.js +117 -0
- package/lib/testing/node/applied-edit-capture.js.map +1 -0
- package/lib/testing/node/golden-corpus.js.map +1 -1
- package/lib/testing/node/index.d.ts +1 -0
- package/lib/testing/node/index.d.ts.map +1 -1
- package/lib/testing/node/index.js +1 -0
- package/lib/testing/node/index.js.map +1 -1
- package/lib/testing/node/lsp-harness.d.ts.map +1 -1
- package/lib/testing/node/lsp-harness.js +2 -0
- package/lib/testing/node/lsp-harness.js.map +1 -1
- package/lib/testing/node/lsp-server-connection.d.ts +21 -6
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +49 -106
- package/lib/testing/node/lsp-server-connection.js.map +1 -1
- package/lib/testing/node/scratch-workspace.d.ts.map +1 -1
- package/lib/testing/node/scratch-workspace.js +10 -5
- package/lib/testing/node/scratch-workspace.js.map +1 -1
- package/lib/testing/node/spawned-server.d.ts +30 -1
- package/lib/testing/node/spawned-server.d.ts.map +1 -1
- package/lib/testing/node/spawned-server.js +39 -2
- package/lib/testing/node/spawned-server.js.map +1 -1
- package/lib/testing/node/unhandled-rejections.d.ts +20 -0
- package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
- package/lib/testing/node/unhandled-rejections.js +32 -0
- package/lib/testing/node/unhandled-rejections.js.map +1 -0
- package/lib/testing/playwright/browser-capture-bridge.js.map +1 -1
- package/lib/testing/playwright/e2e-profiling.js.map +1 -1
- package/lib/testing/playwright/flaky-network-proxy.d.ts +76 -0
- package/lib/testing/playwright/flaky-network-proxy.d.ts.map +1 -0
- package/lib/testing/playwright/flaky-network-proxy.js +164 -0
- package/lib/testing/playwright/flaky-network-proxy.js.map +1 -0
- package/lib/testing/playwright/index.d.ts +1 -0
- package/lib/testing/playwright/index.d.ts.map +1 -1
- package/lib/testing/playwright/index.js +1 -0
- package/lib/testing/playwright/index.js.map +1 -1
- package/lib/testing/playwright/server-log-capture.d.ts +46 -16
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +111 -40
- package/lib/testing/playwright/server-log-capture.js.map +1 -1
- package/lib/testing/playwright/server-log-fixture.d.ts +16 -0
- package/lib/testing/playwright/server-log-fixture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-fixture.js +25 -6
- package/lib/testing/playwright/server-log-fixture.js.map +1 -1
- package/lib/testing/playwright/server-log-region.d.ts +15 -0
- package/lib/testing/playwright/server-log-region.d.ts.map +1 -0
- package/lib/testing/playwright/server-log-region.js +30 -0
- package/lib/testing/playwright/server-log-region.js.map +1 -0
- package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.js +4 -3
- package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
- package/lib/testing/run-update-pipeline.d.ts +8 -5
- package/lib/testing/run-update-pipeline.d.ts.map +1 -1
- package/lib/testing/run-update-pipeline.js.map +1 -1
- package/lib/testing/stub-ast-document-manager.d.ts +11 -52
- package/lib/testing/stub-ast-document-manager.d.ts.map +1 -1
- package/lib/testing/stub-ast-document-manager.js +31 -62
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +33 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +103 -5
- package/lib/testing/stub-document-builder.js.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.d.ts +33 -10
- package/lib/testing/stub-hydranium-text-documents.d.ts.map +1 -1
- package/lib/testing/stub-hydranium-text-documents.js +132 -16
- package/lib/testing/stub-hydranium-text-documents.js.map +1 -1
- package/lib/testing/stub-index-manager.js.map +1 -1
- package/lib/testing/stub-langium-documents.d.ts +3 -2
- package/lib/testing/stub-langium-documents.d.ts.map +1 -1
- package/lib/testing/stub-langium-documents.js.map +1 -1
- package/lib/testing/stub-model-service.d.ts +9 -8
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +6 -6
- package/lib/testing/stub-model-service.js.map +1 -1
- package/lib/testing/stub-project-manager.js.map +1 -1
- package/lib/testing/stub-self-save-registry.d.ts +1 -1
- package/lib/testing/stub-self-save-registry.d.ts.map +1 -1
- package/lib/testing/stub-service-registry.d.ts +1 -1
- package/lib/testing/stub-service-registry.js.map +1 -1
- package/lib/testing/stub-writable-file-system.d.ts +1 -1
- package/lib/testing/stub-writable-file-system.d.ts.map +1 -1
- package/lib/testing/stub-writable-file-system.js +2 -1
- package/lib/testing/stub-writable-file-system.js.map +1 -1
- package/lib/util/connection-liveness.d.ts +19 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +61 -15
- package/lib/util/connection-liveness.js.map +1 -1
- package/lib/util/environment.d.ts.map +1 -1
- package/lib/util/environment.js.map +1 -1
- package/lib/util/registry.d.ts.map +1 -1
- package/package.json +38 -57
- package/src/browser/host-heads-in-worker.ts +142 -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 +51 -0
- package/src/documents/ast-document-manager.ts +467 -233
- package/src/documents/client-ids.ts +5 -22
- package/src/documents/client-session-errors.ts +24 -0
- package/src/documents/client-session-registry.ts +262 -0
- package/src/documents/dirty-state-tracker.ts +167 -0
- package/src/documents/document-release-handler.ts +404 -0
- package/src/documents/document-release-scheduler.ts +121 -0
- package/src/documents/file-system-task-queue.ts +74 -0
- package/src/documents/hydranium-text-documents.ts +976 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +452 -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 +8 -0
- package/src/langium/ast-extension/ast-extension-service.ts +77 -41
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +95 -52
- 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/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +38 -11
- package/src/langium/diagnostics/lsp-logger.ts +61 -16
- package/src/langium/document-builder/build-pipeline-integration.ts +46 -32
- package/src/langium/document-builder/build-session.ts +4 -3
- package/src/langium/document-builder/document-builder.ts +616 -73
- package/src/langium/integration-services.ts +59 -28
- package/src/langium/integrity/integrity-rule.ts +16 -8
- package/src/langium/integrity/integrity-service.ts +296 -69
- package/src/langium/keys/containment.ts +87 -0
- package/src/langium/keys/index.ts +1 -0
- package/src/langium/keys/name-based-key-provider.ts +4 -0
- package/src/langium/language-module.ts +49 -8
- package/src/langium/model-service/client-session.ts +704 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +80 -0
- package/src/langium/model-service/model-service.ts +908 -485
- package/src/langium/module.ts +212 -67
- package/src/langium/naming/name-provider.ts +44 -8
- package/src/langium/naming/name-separator-validation.ts +25 -3
- package/src/langium/project/abstract-project-manager.ts +13 -5
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +51 -17
- 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 +64 -27
- 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 +74 -59
- 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 +4 -0
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +26 -6
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +102 -45
- package/src/langium/trivia/comment-preserver.ts +1100 -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 +528 -13
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/document-uri-policy.ts +32 -18
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +253 -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 +241 -35
- package/src/langium/workspace/in-memory-file-system-provider.ts +54 -23
- package/src/langium/workspace/index.ts +1 -0
- package/src/langium/workspace/initialize-workspace.ts +43 -5
- package/src/langium/workspace/langium-documents.ts +19 -1
- package/src/langium/workspace/persistent-file-system-provider.ts +26 -14
- package/src/langium/workspace/self-save-registry.ts +118 -0
- package/src/langium/workspace/virtual-document.ts +106 -25
- package/src/langium/workspace/write-lock-scope.ts +27 -12
- package/src/launcher/integrated-server.ts +3 -1
- package/src/locale/index.ts +10 -0
- package/src/locale/server-locale.ts +86 -0
- package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
- package/src/lsp/connection-features.ts +67 -0
- package/src/lsp/diagnostics-connection.ts +56 -0
- package/src/lsp/hydranium-document-update-handler.ts +285 -111
- package/src/lsp/index.ts +3 -1
- package/src/lsp/lsp-latency.ts +62 -0
- package/src/lsp/semantic-token-provider.ts +74 -7
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +13 -7
- package/src/messages/carriers.ts +23 -15
- package/src/messages/index.ts +13 -1
- package/src/messages/renderer.ts +212 -0
- 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-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 +27 -11
- package/src/node/startup-cpu-profile.ts +94 -0
- package/src/node/stdio-launcher.ts +22 -14
- package/src/testing/document-uri-policy-conformance.ts +1 -1
- package/src/testing/fake-document.ts +24 -5
- package/src/testing/index.ts +2 -1
- package/src/testing/langium-test-helpers.ts +1 -0
- package/src/testing/make-noop-shared-services.ts +50 -2
- package/src/testing/make-test-services.ts +125 -31
- package/src/testing/make-test-tracer.ts +26 -0
- package/src/testing/node/applied-edit-capture.ts +141 -0
- package/src/testing/node/index.ts +1 -0
- package/src/testing/node/lsp-harness.ts +2 -0
- package/src/testing/node/lsp-server-connection.ts +83 -119
- package/src/testing/node/scratch-workspace.ts +10 -5
- package/src/testing/node/spawned-server.ts +57 -3
- package/src/testing/node/unhandled-rejections.ts +31 -0
- package/src/testing/parse-semantic-root.ts +1 -1
- package/src/testing/playwright/flaky-network-proxy.ts +240 -0
- package/src/testing/playwright/index.ts +1 -0
- package/src/testing/playwright/server-log-capture.ts +137 -47
- package/src/testing/playwright/server-log-fixture.ts +46 -6
- package/src/testing/playwright/server-log-region.ts +32 -0
- package/src/testing/playwright/server-log-rename-reporter.ts +4 -3
- package/src/testing/run-update-pipeline.ts +8 -5
- package/src/testing/stub-ast-document-manager.ts +47 -128
- package/src/testing/stub-document-builder.ts +133 -18
- package/src/testing/stub-hydranium-text-documents.ts +184 -27
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +11 -10
- package/src/testing/stub-self-save-registry.ts +1 -1
- package/src/testing/stub-service-registry.ts +1 -1
- package/src/testing/stub-writable-file-system.ts +3 -2
- package/src/util/connection-liveness.ts +67 -15
- package/src/util/environment.ts +9 -1
- package/lib/documents/language-client-text-shadow.d.ts +0 -101
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -156
- package/lib/documents/language-client-text-shadow.js.map +0 -1
- package/lib/documents/self-save-registry.d.ts +0 -55
- package/lib/documents/self-save-registry.d.ts.map +0 -1
- package/lib/documents/self-save-registry.js.map +0 -1
- package/lib/lsp/instrument-connection.d.ts +0 -36
- package/lib/lsp/instrument-connection.d.ts.map +0 -1
- package/lib/lsp/instrument-connection.js +0 -62
- package/lib/lsp/instrument-connection.js.map +0 -1
- package/lib/node/process-memory.d.ts +0 -66
- package/lib/node/process-memory.d.ts.map +0 -1
- package/lib/node/process-memory.js +0 -252
- package/lib/node/process-memory.js.map +0 -1
- package/src/documents/language-client-text-shadow.ts +0 -175
- package/src/documents/self-save-registry.ts +0 -81
- package/src/lsp/instrument-connection.ts +0 -66
- package/src/node/process-memory.ts +0 -299
|
@@ -19,6 +19,8 @@ import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
|
19
19
|
*/
|
|
20
20
|
export interface RealpathCapableFileSystem {
|
|
21
21
|
realpath?(uri: URI): URI | undefined;
|
|
22
|
+
/** `uri` with its links followed, those to nothing included; see `WritableFileSystemProvider.resolveLinks`. */
|
|
23
|
+
resolveLinks?(uri: URI): URI;
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* Report whether `uri`'s real on-disk path differs from its syntactic
|
|
@@ -43,16 +45,17 @@ export declare function findRealpathDivergence(uri: URI | string, fs: RealpathCa
|
|
|
43
45
|
* - {@link canonicalUri} — TOTAL: maps any URI to the single canonical *string*
|
|
44
46
|
* the framework keys a document by, regardless of whether the file exists.
|
|
45
47
|
* This is the form that MUST match the adopter's `LangiumDocuments` keying so
|
|
46
|
-
* the text store,
|
|
47
|
-
* (`AstDocumentManager.onUpdate` / `onSave` / `onClientClosed`), and
|
|
48
|
+
* the text store, `ModelService`'s event filters, and
|
|
48
49
|
* `LangiumDocuments` lookups all agree on one identity for the same file. Use
|
|
49
50
|
* for keying, comparison, and the text-store ↔ document-store bridges.
|
|
50
51
|
*
|
|
51
52
|
* - {@link loadUri} — EXISTENCE-AWARE: maps a URI to the *load* URI, or
|
|
52
53
|
* `undefined` when there is no loadable on-disk content for it. Use where the
|
|
53
54
|
* next step actually touches the filesystem (loading a document, walking a
|
|
54
|
-
* directory): `undefined` means "skip
|
|
55
|
-
*
|
|
55
|
+
* directory): `undefined` means "skip the read" rather than attempt a doomed
|
|
56
|
+
* one. It does not mean there is no document: one created and not yet saved
|
|
57
|
+
* has no file, and the text store and `LangiumDocuments` hold it under
|
|
58
|
+
* {@link canonicalUri}. The default treats every URI as loadable (returns it
|
|
56
59
|
* unchanged); a real-path policy returns the resolved file URI, or `undefined`
|
|
57
60
|
* for a not-yet-written path.
|
|
58
61
|
*
|
|
@@ -76,7 +79,9 @@ export interface DocumentUriPolicy {
|
|
|
76
79
|
/**
|
|
77
80
|
* Existence-aware resolution to the load URI, or `undefined` when there is
|
|
78
81
|
* no loadable content for `uri` (missing / synthetic). Callers that read the
|
|
79
|
-
* filesystem next use `undefined` to skip rather than attempt a doomed read
|
|
82
|
+
* filesystem next use `undefined` to skip rather than attempt a doomed read,
|
|
83
|
+
* and still look the URI up under {@link canonicalUri}: a document created
|
|
84
|
+
* and not yet saved is held there with no file behind it.
|
|
80
85
|
*/
|
|
81
86
|
loadUri(uri: URI | string): URI | undefined;
|
|
82
87
|
}
|
|
@@ -129,17 +134,21 @@ export declare class DefaultDocumentUriPolicy implements DocumentUriPolicy {
|
|
|
129
134
|
* The raw `realpath` syscall lives on the `FileSystemProvider`
|
|
130
135
|
* (`@hydranium/core/node`'s `DefaultFileSystemProvider`), not here — this policy
|
|
131
136
|
* is pure routing over that seam, so it carries no `node:fs` import and is
|
|
132
|
-
* browser-neutral. Both methods follow the *same* policy: `canonicalUri`
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
+
* browser-neutral. Both methods follow the *same* policy: `canonicalUri` keys a
|
|
138
|
+
* path that can't be resolved by the links it follows, where the provider has
|
|
139
|
+
* `resolveLinks`, else by its syntactic form (optimistic — a file that appears
|
|
140
|
+
* later canonicalises to the same key once present, also one reached through a
|
|
141
|
+
* link that pointed at nothing), while `loadUri` returns `undefined` for an
|
|
142
|
+
* absent path (honest about existence, so a caller about to read the
|
|
143
|
+
* filesystem skips it).
|
|
137
144
|
*
|
|
138
|
-
* If the
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* `
|
|
145
|
+
* If the provider for a URI's scheme has no `realpath` (in-memory / browser /
|
|
146
|
+
* empty), the framework's `FileSystemProviderRegistry` returns the URI
|
|
147
|
+
* unchanged and both methods answer as {@link DefaultDocumentUriPolicy} does. A
|
|
148
|
+
* slot bound to a provider without `realpath` degrades the same way: the
|
|
149
|
+
* `loadUri` ternary tests the *method's presence*, not its return, so
|
|
150
|
+
* `loadUri` returns `undefined` only when `realpath` is present and reports the
|
|
151
|
+
* path absent.
|
|
143
152
|
*/
|
|
144
153
|
export declare class RealpathDocumentUriPolicy extends DefaultDocumentUriPolicy {
|
|
145
154
|
protected readonly fs: RealpathCapableFileSystem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-uri-policy.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/document-uri-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACvC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"document-uri-policy.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/document-uri-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACvC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IACrC,+GAA+G;IAC/G,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,yBAAyB,GAAG,GAAG,GAAG,SAAS,CAIxG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,iBAAiB;IAC/B,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,YAAY,CAAC;IAC9C;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;CAC9C;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAC/D,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,YAAY,CAI5C;IAED;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAE1C;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,yBAA0B,SAAQ,wBAAwB;IACpE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,yBAAyB,CAAC;IAEjD,YAAY,QAAQ,EAAE,2BAA2B,EAGhD;IAEQ,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,YAAY,CAWrD;IAEQ,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAQnD;CACH"}
|
|
@@ -82,17 +82,21 @@ export class DefaultDocumentUriPolicy {
|
|
|
82
82
|
* The raw `realpath` syscall lives on the `FileSystemProvider`
|
|
83
83
|
* (`@hydranium/core/node`'s `DefaultFileSystemProvider`), not here — this policy
|
|
84
84
|
* is pure routing over that seam, so it carries no `node:fs` import and is
|
|
85
|
-
* browser-neutral. Both methods follow the *same* policy: `canonicalUri`
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
85
|
+
* browser-neutral. Both methods follow the *same* policy: `canonicalUri` keys a
|
|
86
|
+
* path that can't be resolved by the links it follows, where the provider has
|
|
87
|
+
* `resolveLinks`, else by its syntactic form (optimistic — a file that appears
|
|
88
|
+
* later canonicalises to the same key once present, also one reached through a
|
|
89
|
+
* link that pointed at nothing), while `loadUri` returns `undefined` for an
|
|
90
|
+
* absent path (honest about existence, so a caller about to read the
|
|
91
|
+
* filesystem skips it).
|
|
90
92
|
*
|
|
91
|
-
* If the
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* `
|
|
93
|
+
* If the provider for a URI's scheme has no `realpath` (in-memory / browser /
|
|
94
|
+
* empty), the framework's `FileSystemProviderRegistry` returns the URI
|
|
95
|
+
* unchanged and both methods answer as {@link DefaultDocumentUriPolicy} does. A
|
|
96
|
+
* slot bound to a provider without `realpath` degrades the same way: the
|
|
97
|
+
* `loadUri` ternary tests the *method's presence*, not its return, so
|
|
98
|
+
* `loadUri` returns `undefined` only when `realpath` is present and reports the
|
|
99
|
+
* path absent.
|
|
96
100
|
*/
|
|
97
101
|
export class RealpathDocumentUriPolicy extends DefaultDocumentUriPolicy {
|
|
98
102
|
fs;
|
|
@@ -102,9 +106,14 @@ export class RealpathDocumentUriPolicy extends DefaultDocumentUriPolicy {
|
|
|
102
106
|
}
|
|
103
107
|
canonicalUri(uri) {
|
|
104
108
|
const parsed = UriUtils.toUri(uri);
|
|
105
|
-
|
|
106
|
-
//
|
|
107
|
-
//
|
|
109
|
+
// An absent path keys by the links it follows, so a file reached through
|
|
110
|
+
// a link keys the same before it exists and once it does; a provider
|
|
111
|
+
// without `resolveLinks`, or without `realpath`, keys it syntactically.
|
|
112
|
+
// `resolveLinks` alone where it exists: it resolves a present path as
|
|
113
|
+
// `realpath` does, and asking both would cost an absent path a second
|
|
114
|
+
// miss.
|
|
115
|
+
const real = parsed && (this.fs.resolveLinks ? this.fs.resolveLinks(parsed) : this.fs.realpath?.(parsed));
|
|
116
|
+
// Mint via `asCanonicalUri` once normalised.
|
|
108
117
|
return real ? asCanonicalUri(UriUtils.normalize(real)) : super.canonicalUri(uri);
|
|
109
118
|
}
|
|
110
119
|
loadUri(uri) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-uri-policy.js","sourceRoot":"","sources":["../../../src/langium/workspace/document-uri-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAqB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAY,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"document-uri-policy.js","sourceRoot":"","sources":["../../../src/langium/workspace/document-uri-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAqB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAY,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBxD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAiB,EAAE,EAA6B;IACpF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AAmDD;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAClC,YAAY,CAAC,GAAiB;QAC3B,yEAAyE;QACzE,6EAA6E;QAC7E,OAAO,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,GAAiB;QACtB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,yBAA0B,SAAQ,wBAAwB;IACjD,EAAE,CAA4B;IAEjD,YAAY,QAAqC;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC;IACnD,CAAC;IAEQ,YAAY,CAAC,GAAiB;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,yEAAyE;QACzE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,QAAQ;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1G,6CAA6C;QAC7C,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IAEQ,OAAO,CAAC,GAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,kEAAkE;QAClE,yEAAyE;QACzE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACrD,CAAC;CACH"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, 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 URI } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* A missing-file error shaped as a Node file system raises it, with code
|
|
12
|
+
* `ENOENT` and the path: callers tell a missing file from any other failure by
|
|
13
|
+
* those two fields, whichever provider is bound. The release relies on it to
|
|
14
|
+
* tell a document gone meanwhile from any other failed rebuild.
|
|
15
|
+
*/
|
|
16
|
+
export declare function notFound(message: string, uri: URI): Error;
|
|
17
|
+
/**
|
|
18
|
+
* Whether `err` reports that the file of `target` does not exist, as a Node
|
|
19
|
+
* file system and {@link notFound} do: code `ENOENT`, with `target`'s path. A
|
|
20
|
+
* missing file of another document is a different failure.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isFileNotFound(err: unknown, target: URI): boolean;
|
|
23
|
+
//# sourceMappingURL=file-not-found.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-not-found.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-not-found.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAK9C;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAKjE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, 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
|
+
// Not re-exported from the workspace barrel: the framework's providers and
|
|
10
|
+
// the release handler share it, and it is no API of theirs.
|
|
11
|
+
/**
|
|
12
|
+
* A missing-file error shaped as a Node file system raises it, with code
|
|
13
|
+
* `ENOENT` and the path: callers tell a missing file from any other failure by
|
|
14
|
+
* those two fields, whichever provider is bound. The release relies on it to
|
|
15
|
+
* tell a document gone meanwhile from any other failed rebuild.
|
|
16
|
+
*/
|
|
17
|
+
export function notFound(message, uri) {
|
|
18
|
+
return Object.assign(new Error(message), { code: 'ENOENT', path: uri.fsPath });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Whether `err` reports that the file of `target` does not exist, as a Node
|
|
22
|
+
* file system and {@link notFound} do: code `ENOENT`, with `target`'s path. A
|
|
23
|
+
* missing file of another document is a different failure.
|
|
24
|
+
*/
|
|
25
|
+
export function isFileNotFound(err, target) {
|
|
26
|
+
if (typeof err !== 'object' || err === null || !('code' in err) || err.code !== 'ENOENT') {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return !('path' in err) || err.path === target.fsPath;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=file-not-found.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-not-found.js","sourceRoot":"","sources":["../../../src/langium/workspace/file-not-found.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,2EAA2E;AAC3E,4DAA4D;AAE5D;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAQ;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,MAAW;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC;AACzD,CAAC"}
|
|
@@ -8,15 +8,92 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Tracer } from '@hydranium/protocol';
|
|
10
10
|
import { EmptyFileSystemProvider } from '@hydranium/langium';
|
|
11
|
-
import type { URI } from '@hydranium/langium';
|
|
12
|
-
import { type
|
|
11
|
+
import type { FileSystemNode, FileSystemProvider, URI } from '@hydranium/langium';
|
|
12
|
+
import { type SelfSaveRegistry } from './self-save-registry.js';
|
|
13
13
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
14
14
|
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* File-system provider extension that supports writes. Langium's standard
|
|
17
|
+
* {@link FileSystemProvider} is read-only; `AstDocumentManager` needs to persist
|
|
18
|
+
* saves, so consumers wire in a provider that implements this superset.
|
|
19
|
+
*
|
|
20
|
+
* Implementations may optionally hold a reference to a
|
|
21
|
+
* {@link SelfSaveRegistry} so they can record their own write mtimes and
|
|
22
|
+
* help downstream file-watchers suppress echo events for those writes.
|
|
23
|
+
* The framework's `DefaultFileSystemProvider` reads it from
|
|
24
|
+
* `services.workspace.SelfSaveRegistry`; alternative implementations can do
|
|
25
|
+
* the same or leave the field unset.
|
|
26
|
+
*/
|
|
27
|
+
export interface WritableFileSystemProvider extends FileSystemProvider {
|
|
28
|
+
writeFile(uri: URI, content: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Remove the file at `uri`: the name the URI gives, never the file a
|
|
31
|
+
* symlink there points at, leaving a parent directory it empties in place.
|
|
32
|
+
* A no-op when nothing is there; a directory is refused.
|
|
33
|
+
*/
|
|
34
|
+
deleteFile(uri: URI): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Last-modified time (ms) of the file at `uri`, or `undefined` if it can't
|
|
37
|
+
* be determined (missing file, or a provider with no disk — in-memory /
|
|
38
|
+
* browser). Optional: the only consumer is self-save echo suppression
|
|
39
|
+
* (`didChangeWatchedFiles`), which simply lets a change through when the
|
|
40
|
+
* mtime is unavailable. Distinct from Langium's `stat` (whose
|
|
41
|
+
* `FileSystemNode` carries no mtime). Keeping disk access on the provider
|
|
42
|
+
* seam is what lets the LSP update handler avoid a direct `node:fs` import.
|
|
43
|
+
*/
|
|
44
|
+
mtimeMs?(uri: URI): Promise<number | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve `uri` to its real on-disk identity (symlinks collapsed, `..`/`.`
|
|
47
|
+
* walked, case-folded on case-insensitive filesystems), or `undefined` *iff
|
|
48
|
+
* the filesystem knows the path is absent*. The single source of the
|
|
49
|
+
* "nothing loadable here" signal `RealpathDocumentUriPolicy` turns into
|
|
50
|
+
* the synthetic-placeholder branch of `getOrCreateDocument`.
|
|
51
|
+
*
|
|
52
|
+
* Contract for implementers:
|
|
53
|
+
* - A `file:`-backed provider returns the resolved URI when the file exists,
|
|
54
|
+
* and `undefined` when it cannot resolve the path (missing / unreadable).
|
|
55
|
+
* - A non-`file:` URI (or any URI the provider cannot stat) passes through
|
|
56
|
+
* **unchanged** — it is treated as present, never reported absent.
|
|
57
|
+
* - A provider with no disk to check (in-memory / browser / empty) simply
|
|
58
|
+
* omits this method; the framework's `FileSystemProviderRegistry` then
|
|
59
|
+
* returns the URI unchanged, and `RealpathDocumentUriPolicy` answers as
|
|
60
|
+
* the syntactic `DefaultDocumentUriPolicy` does.
|
|
61
|
+
*
|
|
62
|
+
* Synchronous (a `realpath` is a kernel-cached syscall) and optional — the
|
|
63
|
+
* only consumers are the document-identity policy's `canonicalUri`/`loadUri`.
|
|
64
|
+
* Keeping the syscall on the provider seam is what lets the policy stay
|
|
65
|
+
* browser-neutral (no `node:fs` import).
|
|
66
|
+
*/
|
|
67
|
+
realpath?(uri: URI): URI | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* The path `uri` names with every link followed, a link to nothing
|
|
70
|
+
* included, so that `RealpathDocumentUriPolicy.canonicalUri` keys a file
|
|
71
|
+
* reached through a link the same before it exists and once it does.
|
|
72
|
+
* Where {@link realpath} resolves, the same answer; otherwise what is
|
|
73
|
+
* missing joined as spelled under the real path of what exists. Optional,
|
|
74
|
+
* as `realpath` is: without it an absent path keys by its syntactic form.
|
|
75
|
+
*/
|
|
76
|
+
resolveLinks?(uri: URI): URI;
|
|
77
|
+
/**
|
|
78
|
+
* Whether a file is at `uri`, where a miss counts only once it has lasted:
|
|
79
|
+
* on a disk where replacing a file can hide its name for a moment, a single
|
|
80
|
+
* {@link exists} cannot tell that from a deletion. Ask this before acting on
|
|
81
|
+
* a miss as a deletion; a caller expecting a miss, such as a create, asks
|
|
82
|
+
* {@link exists}, since here a real miss costs the whole wait.
|
|
83
|
+
*
|
|
84
|
+
* Optional: a provider whose misses are always final omits it, and a caller
|
|
85
|
+
* takes the answer of {@link exists} as settled.
|
|
86
|
+
*/
|
|
87
|
+
existsSettled?(uri: URI): Promise<boolean>;
|
|
88
|
+
/** Registry the provider records its own writes against. Optional — providers without watcher integration may omit. */
|
|
89
|
+
readonly selfSaveRegistry?: SelfSaveRegistry;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Empty-filesystem {@link WritableFileSystemProvider}. For browser / test / CLI
|
|
93
|
+
* hosts that don't have a real filesystem. All writes and deletes are no-ops.
|
|
94
|
+
* On the portable `.` entry it is the
|
|
95
|
+
* {@link FileSystemProviderRegistry.host} when `context.fileSystemProvider`
|
|
96
|
+
* gives no writable provider; the Node-backed `DefaultFileSystemProvider`
|
|
20
97
|
* lives in `@hydranium/core/node` (it pulls `node:fs`).
|
|
21
98
|
*/
|
|
22
99
|
export declare class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvider implements WritableFileSystemProvider {
|
|
@@ -24,7 +101,87 @@ export declare class DefaultEmptyFileSystemProvider extends EmptyFileSystemProvi
|
|
|
24
101
|
protected readonly tracer: Tracer;
|
|
25
102
|
constructor(services: ServerSharedServicesMinimal, options?: LogNameOptions);
|
|
26
103
|
writeFile(_uri: URI, _content: string): Promise<void>;
|
|
27
|
-
|
|
28
|
-
|
|
104
|
+
deleteFile(_uri: URI): Promise<void>;
|
|
105
|
+
readFile(_uri?: URI): Promise<string>;
|
|
106
|
+
readBinary(_uri?: URI): Promise<Uint8Array>;
|
|
107
|
+
stat(uri: URI): Promise<FileSystemNode>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The provider bound on `workspace.FileSystemProvider`: it dispatches each call
|
|
111
|
+
* by the URI's scheme to the provider registered for it in the shared
|
|
112
|
+
* `fileSystemProviders` group, and to the {@link host} for any scheme without
|
|
113
|
+
* one.
|
|
114
|
+
*
|
|
115
|
+
* So one provider answers for each scheme, and a host's provider needs to know
|
|
116
|
+
* only its own: the framework registers `virtual:` there, and an adopter adds a
|
|
117
|
+
* scheme by contributing to the group. The host takes every unclaimed scheme
|
|
118
|
+
* rather than `file:` alone, which keeps an in-memory workspace under `memory:`
|
|
119
|
+
* or any other scheme on the host's provider.
|
|
120
|
+
*
|
|
121
|
+
* `THost` types the host, so an adopter whose own provider has more members
|
|
122
|
+
* than the base declares the slot as `FileSystemProviderRegistry<MyProvider>`,
|
|
123
|
+
* binds a {@link DefaultFileSystemProviderRegistry} with that host, and reads
|
|
124
|
+
* those members through `services.workspace.FileSystemProvider.host`.
|
|
125
|
+
*/
|
|
126
|
+
export interface FileSystemProviderRegistry<THost extends WritableFileSystemProvider = WritableFileSystemProvider> extends WritableFileSystemProvider {
|
|
127
|
+
/** The provider for every scheme no entry of `fileSystemProviders` claims. */
|
|
128
|
+
readonly host: THost;
|
|
129
|
+
/** The provider that answers for `uri`. */
|
|
130
|
+
providerFor(uri: URI): WritableFileSystemProvider;
|
|
131
|
+
}
|
|
132
|
+
/** Options for {@link DefaultFileSystemProviderRegistry}. */
|
|
133
|
+
export interface FileSystemProviderRegistryOptions<THost extends WritableFileSystemProvider = WritableFileSystemProvider> extends LogNameOptions {
|
|
134
|
+
/**
|
|
135
|
+
* The provider for every scheme no entry of `fileSystemProviders` claims.
|
|
136
|
+
* The framework passes the provider `context.fileSystemProvider` returns,
|
|
137
|
+
* or a {@link DefaultEmptyFileSystemProvider} when that is not writable.
|
|
138
|
+
*/
|
|
139
|
+
host: THost;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The framework's {@link FileSystemProviderRegistry}.
|
|
143
|
+
*
|
|
144
|
+
* A directory is listed by the provider of its own scheme, so a workspace
|
|
145
|
+
* root's tree comes from that provider alone.
|
|
146
|
+
*
|
|
147
|
+
* `realpath`, `resolveLinks`, `mtimeMs` and `existsSettled` are always present
|
|
148
|
+
* and forward to the scheme's provider. Where that provider lacks one,
|
|
149
|
+
* `realpath` and `resolveLinks` return the URI unchanged, `mtimeMs` returns
|
|
150
|
+
* `undefined` and `existsSettled` answers as `exists`: the answers their
|
|
151
|
+
* callers already give a provider without them.
|
|
152
|
+
*/
|
|
153
|
+
export declare class DefaultFileSystemProviderRegistry<THost extends WritableFileSystemProvider = WritableFileSystemProvider> implements FileSystemProviderRegistry<THost> {
|
|
154
|
+
protected readonly services: ServerSharedServicesMinimal & {
|
|
155
|
+
fileSystemProviders: Record<string, WritableFileSystemProvider>;
|
|
156
|
+
};
|
|
157
|
+
readonly host: THost;
|
|
158
|
+
protected readonly tracer: Tracer;
|
|
159
|
+
constructor(services: ServerSharedServicesMinimal & {
|
|
160
|
+
fileSystemProviders: Record<string, WritableFileSystemProvider>;
|
|
161
|
+
}, options: FileSystemProviderRegistryOptions<THost>);
|
|
162
|
+
/**
|
|
163
|
+
* The group is read per call, not in the constructor, so a registered
|
|
164
|
+
* provider is built on first use and may read slots that reach back to this
|
|
165
|
+
* one. Only an OWN key of the group counts: the DI container resolves any
|
|
166
|
+
* key found on the prototype chain, so a scheme such as `constructor` would
|
|
167
|
+
* otherwise dispatch to a function.
|
|
168
|
+
*/
|
|
169
|
+
providerFor(uri: URI): WritableFileSystemProvider;
|
|
170
|
+
writeFile(uri: URI, content: string): Promise<void>;
|
|
171
|
+
deleteFile(uri: URI): Promise<void>;
|
|
172
|
+
mtimeMs(uri: URI): Promise<number | undefined>;
|
|
173
|
+
realpath(uri: URI): URI | undefined;
|
|
174
|
+
resolveLinks(uri: URI): URI;
|
|
175
|
+
existsSettled(uri: URI): Promise<boolean>;
|
|
176
|
+
stat(uri: URI): Promise<FileSystemNode>;
|
|
177
|
+
statSync(uri: URI): FileSystemNode;
|
|
178
|
+
exists(uri: URI): Promise<boolean>;
|
|
179
|
+
existsSync(uri: URI): boolean;
|
|
180
|
+
readBinary(uri: URI): Promise<Uint8Array>;
|
|
181
|
+
readBinarySync(uri: URI): Uint8Array;
|
|
182
|
+
readFile(uri: URI): Promise<string>;
|
|
183
|
+
readFileSync(uri: URI): string;
|
|
184
|
+
readDirectory(uri: URI): Promise<FileSystemNode[]>;
|
|
185
|
+
readDirectorySync(uri: URI): FileSystemNode[];
|
|
29
186
|
}
|
|
30
187
|
//# sourceMappingURL=file-system-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-system-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/file-system-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,114 @@ 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
|
+
/**
|
|
50
|
+
* The framework's {@link FileSystemProviderRegistry}.
|
|
51
|
+
*
|
|
52
|
+
* A directory is listed by the provider of its own scheme, so a workspace
|
|
53
|
+
* root's tree comes from that provider alone.
|
|
54
|
+
*
|
|
55
|
+
* `realpath`, `resolveLinks`, `mtimeMs` and `existsSettled` are always present
|
|
56
|
+
* and forward to the scheme's provider. Where that provider lacks one,
|
|
57
|
+
* `realpath` and `resolveLinks` return the URI unchanged, `mtimeMs` returns
|
|
58
|
+
* `undefined` and `existsSettled` answers as `exists`: the answers their
|
|
59
|
+
* callers already give a provider without them.
|
|
60
|
+
*/
|
|
61
|
+
export class DefaultFileSystemProviderRegistry {
|
|
62
|
+
services;
|
|
63
|
+
host;
|
|
64
|
+
tracer;
|
|
65
|
+
constructor(services, options) {
|
|
66
|
+
this.services = services;
|
|
67
|
+
this.host = options.host;
|
|
68
|
+
this.tracer = services.Tracer.for(options.logName ?? this.constructor.name).trace('instantiated');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The group is read per call, not in the constructor, so a registered
|
|
72
|
+
* provider is built on first use and may read slots that reach back to this
|
|
73
|
+
* one. Only an OWN key of the group counts: the DI container resolves any
|
|
74
|
+
* key found on the prototype chain, so a scheme such as `constructor` would
|
|
75
|
+
* otherwise dispatch to a function.
|
|
76
|
+
*/
|
|
77
|
+
providerFor(uri) {
|
|
78
|
+
const providers = this.services.fileSystemProviders;
|
|
79
|
+
return Object.hasOwn(providers, uri.scheme) ? providers[uri.scheme] : this.host;
|
|
80
|
+
}
|
|
81
|
+
// The async methods are `async` so a provider that throws synchronously from
|
|
82
|
+
// one still rejects, for the reason `DefaultEmptyFileSystemProvider` gives.
|
|
83
|
+
async writeFile(uri, content) {
|
|
84
|
+
return this.providerFor(uri).writeFile(uri, content);
|
|
85
|
+
}
|
|
86
|
+
async deleteFile(uri) {
|
|
87
|
+
return this.providerFor(uri).deleteFile(uri);
|
|
88
|
+
}
|
|
89
|
+
async mtimeMs(uri) {
|
|
90
|
+
return this.providerFor(uri).mtimeMs?.(uri);
|
|
91
|
+
}
|
|
92
|
+
realpath(uri) {
|
|
93
|
+
const provider = this.providerFor(uri);
|
|
94
|
+
return provider.realpath ? provider.realpath(uri) : uri;
|
|
95
|
+
}
|
|
96
|
+
resolveLinks(uri) {
|
|
97
|
+
const provider = this.providerFor(uri);
|
|
98
|
+
if (provider.resolveLinks) {
|
|
99
|
+
return provider.resolveLinks(uri);
|
|
100
|
+
}
|
|
101
|
+
// A provider with `realpath` alone still keys a present path by it.
|
|
102
|
+
return provider.realpath?.(uri) ?? uri;
|
|
103
|
+
}
|
|
104
|
+
async existsSettled(uri) {
|
|
105
|
+
const provider = this.providerFor(uri);
|
|
106
|
+
return provider.existsSettled ? provider.existsSettled(uri) : provider.exists(uri);
|
|
107
|
+
}
|
|
108
|
+
async stat(uri) {
|
|
109
|
+
return this.providerFor(uri).stat(uri);
|
|
110
|
+
}
|
|
111
|
+
statSync(uri) {
|
|
112
|
+
return this.providerFor(uri).statSync(uri);
|
|
113
|
+
}
|
|
114
|
+
async exists(uri) {
|
|
115
|
+
return this.providerFor(uri).exists(uri);
|
|
116
|
+
}
|
|
117
|
+
existsSync(uri) {
|
|
118
|
+
return this.providerFor(uri).existsSync(uri);
|
|
119
|
+
}
|
|
120
|
+
async readBinary(uri) {
|
|
121
|
+
return this.providerFor(uri).readBinary(uri);
|
|
122
|
+
}
|
|
123
|
+
readBinarySync(uri) {
|
|
124
|
+
return this.providerFor(uri).readBinarySync(uri);
|
|
125
|
+
}
|
|
126
|
+
async readFile(uri) {
|
|
127
|
+
return this.providerFor(uri).readFile(uri);
|
|
35
128
|
}
|
|
36
129
|
readFileSync(uri) {
|
|
37
|
-
|
|
38
|
-
|
|
130
|
+
return this.providerFor(uri).readFileSync(uri);
|
|
131
|
+
}
|
|
132
|
+
async readDirectory(uri) {
|
|
133
|
+
return this.providerFor(uri).readDirectory(uri);
|
|
134
|
+
}
|
|
135
|
+
readDirectorySync(uri) {
|
|
136
|
+
return this.providerFor(uri).readDirectorySync(uri);
|
|
39
137
|
}
|
|
40
138
|
}
|
|
41
139
|
//# 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,13 @@
|
|
|
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, DefaultLangiumDocumentFactory, type LangiumDocument, type Mutable, type ParseResult, 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 VersionSyncService } from '../../documents/version-sync-service.js';
|
|
10
14
|
import { type ExtendedServiceRegistry } from '../service-registry.js';
|
|
15
|
+
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
11
16
|
/**
|
|
12
17
|
* Framework `LangiumDocumentFactory` that fills in the one thing Langium
|
|
13
18
|
* leaves empty for a code-built document: its text.
|
|
@@ -41,6 +46,10 @@ export declare class HydraniumLangiumDocumentFactory extends DefaultLangiumDocum
|
|
|
41
46
|
* per-callsite cast. The framework's shared module binds that class.
|
|
42
47
|
*/
|
|
43
48
|
protected readonly serviceRegistry: ExtendedServiceRegistry;
|
|
49
|
+
/** Resolved per call: the sync service reaches the registry, which is built with this factory. */
|
|
50
|
+
protected readonly versionSyncService: () => VersionSyncService;
|
|
51
|
+
protected readonly modelLedger: () => ModelLedger;
|
|
52
|
+
constructor(services: ServerSharedServicesMinimal);
|
|
44
53
|
/**
|
|
45
54
|
* Parse `text` for `uri` under the grammar `languageId` names, instead of
|
|
46
55
|
* the one `uri` routes to.
|
|
@@ -60,6 +69,27 @@ export declare class HydraniumLangiumDocumentFactory extends DefaultLangiumDocum
|
|
|
60
69
|
*/
|
|
61
70
|
fromStringInLanguage<T extends AstNode = AstNode>(text: string, uri: URI, languageId: string): LangiumDocument<T>;
|
|
62
71
|
fromModel<T extends AstNode = AstNode>(model: T, uri: URI): LangiumDocument<T>;
|
|
72
|
+
protected createLangiumDocument<T extends AstNode = AstNode>(parseResult: ParseResult<T>, uri: URI, textDocument?: TextDocument, text?: string): LangiumDocument<T>;
|
|
73
|
+
/**
|
|
74
|
+
* The version is read before the parse, for the same reason as in
|
|
75
|
+
* {@link update}: the text document is the store's, which an edit updates
|
|
76
|
+
* in place while the parse runs.
|
|
77
|
+
*/
|
|
78
|
+
protected createAsync<T extends AstNode = AstNode>(uri: URI, content: string | TextDocument, cancelToken: CancellationToken): Promise<LangiumDocument<T>>;
|
|
79
|
+
/**
|
|
80
|
+
* The store's version is read before Langium's `update`, which reads the
|
|
81
|
+
* store's text before its first await: read after, it can belong to an
|
|
82
|
+
* edit that arrived while the parse ran.
|
|
83
|
+
*
|
|
84
|
+
* Reconciled with the store here rather than in a `Parsed` listener, which
|
|
85
|
+
* a cancel skips, leaving the root on the version of its earlier text.
|
|
86
|
+
*/
|
|
87
|
+
update<T extends AstNode = AstNode>(document: Mutable<LangiumDocument<T>>, cancellationToken: CancellationToken): Promise<LangiumDocument<T>>;
|
|
88
|
+
/**
|
|
89
|
+
* `version`, or {@link STALE_VERSION} when the store holds `uri` open with
|
|
90
|
+
* other text than `parsed`: text read from the file while an open landed.
|
|
91
|
+
*/
|
|
92
|
+
protected versionOfParsedText(uri: URI, parsed: string | undefined, version: number): number;
|
|
63
93
|
/**
|
|
64
94
|
* Serialize `model` via the per-language serializer, or `undefined` if none
|
|
65
95
|
* is bound, it fails, or it is async — `fromModel` is synchronous, so an
|