@hydranium/core 1.0.0-next.29 → 1.0.0-next.298
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 +65 -82
- package/lib/browser/index.d.ts +10 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +14 -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/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/index.ts +14 -0
- package/src/browser/indexeddb-file-system-store.ts +192 -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
package/README.md
CHANGED
|
@@ -1,40 +1,19 @@
|
|
|
1
1
|
# `@hydranium/core`
|
|
2
2
|
|
|
3
|
-
The
|
|
4
|
-
workspace
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`@hydranium/glsp-server`).
|
|
3
|
+
The runtime of [Hydranium](https://github.com/eclipse-emfcloud/hydranium): the
|
|
4
|
+
shared Langium workspace your language server is built from, plus the LSP head.
|
|
5
|
+
Every Hydranium server installs it, and `@hydranium/data-server` and
|
|
6
|
+
`@hydranium/glsp-server` build on it.
|
|
8
7
|
|
|
9
8
|
## What it gives you
|
|
10
9
|
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
`ReferenceCandidateProvider`), qualified naming (`NameProvider`), computed and
|
|
19
|
-
synthetic properties (`AstExtensionService`), AST-integrity rules
|
|
20
|
-
(`IntegrityRule`, `IntegrityRuleRegistry`), batch build passes
|
|
21
|
-
(`BuildPhasePassService`), and a CST-residency memory policy
|
|
22
|
-
(`CstResidencyService`).
|
|
23
|
-
- **A build pipeline you can hook by phase.** `HydraniumDocumentBuilder` and
|
|
24
|
-
`BuildPipelineIntegration` dispatch work at Langium `DocumentState` phases,
|
|
25
|
-
while the project tier (`ProjectManager`) discovers and groups documents.
|
|
26
|
-
- **Multi-client document coordination.** `AstDocumentManager`,
|
|
27
|
-
`HydraniumTextDocuments`, `WritableFileSystemProvider` and `SelfSaveRegistry`
|
|
28
|
-
generalise the LSP document lifecycle to several co-editing heads, so an edit
|
|
29
|
-
made on one surface is observable on the others without a head-to-head
|
|
30
|
-
synchronisation protocol.
|
|
31
|
-
- **The projection the non-LSP heads build on:** `ModelService` (the in-process
|
|
32
|
-
workspace facade), `TransferEncoder` (AST → transfer model), and the
|
|
33
|
-
`Serializer` slot.
|
|
34
|
-
- **The LSP head at `./lsp`:** `startLanguageServer`,
|
|
35
|
-
`createLspServerSharedModule` / `createLspServerLanguageModule`,
|
|
36
|
-
`HydraniumCompletionProvider`, `HydraniumDocumentUpdateHandler`, and
|
|
37
|
-
`AbstractHydraniumSemanticTokenProvider`.
|
|
10
|
+
- One call, `createIntegrationServices`, that composes your language's services
|
|
11
|
+
with Langium's defaults and the framework's.
|
|
12
|
+
- Scoping, naming, validation and build hooks you extend per language, rather
|
|
13
|
+
than rewrite.
|
|
14
|
+
- One workspace every head works on: an edit made through one head is seen by
|
|
15
|
+
the others.
|
|
16
|
+
- The LSP head, and launchers that serve another head over stdio or a socket.
|
|
38
17
|
|
|
39
18
|
## Install
|
|
40
19
|
|
|
@@ -42,59 +21,63 @@ and so does every other head package (`@hydranium/data-server`,
|
|
|
42
21
|
npm install @hydranium/core
|
|
43
22
|
```
|
|
44
23
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
24
|
+
| Peer | Range |
|
|
25
|
+
| ------------------------------------ | ------------- |
|
|
26
|
+
| `@hydranium/langium` | `^1.0.0-next` |
|
|
27
|
+
| `@hydranium/protocol` | `^1.0.0-next` |
|
|
28
|
+
| `@playwright/test` | `^1.40.0` |
|
|
29
|
+
| `vscode-jsonrpc` | `^9.0.0` |
|
|
30
|
+
| `vscode-languageserver` | `~10.0.1` |
|
|
31
|
+
| `vscode-languageserver-protocol` | `~3.18.1` |
|
|
32
|
+
| `vscode-languageserver-textdocument` | `^1.0.12` |
|
|
33
|
+
| `vscode-languageserver-types` | `^3.17.5` |
|
|
34
|
+
|
|
35
|
+
Import Langium through `@hydranium/langium`, so your project uses the same copy
|
|
36
|
+
as the framework. `@playwright/test` is optional; only `./testing/playwright`
|
|
37
|
+
needs it.
|
|
38
|
+
|
|
39
|
+
## Wiring
|
|
40
|
+
|
|
41
|
+
`hydranium-cli init` scaffolds a starter grammar and all of this wiring.
|
|
42
|
+
|
|
43
|
+
1. Compose the services with `createIntegrationServices`, passing
|
|
44
|
+
`createLspServerSharedModule` and `createLspServerLanguageModule` as the
|
|
45
|
+
extra modules. Your language module binds a `Serializer`.
|
|
46
|
+
2. Create the LSP connection with `withHydraniumLspFeatures`, and start it with
|
|
47
|
+
`startLanguageServer` from `./lsp`, not Langium's: it fails the start when
|
|
48
|
+
the LSP shared module is missing.
|
|
49
|
+
3. Start other heads on the same shared services, with `startSocketServer` and
|
|
50
|
+
`publishPortOnLspConnection` beside the LSP head, or `startStdioServer`
|
|
51
|
+
alone.
|
|
52
|
+
|
|
53
|
+
See *Compose a server by hand* and *Add a validation check* in
|
|
54
|
+
[Adopting Hydranium](https://github.com/eclipse-emfcloud/hydranium/blob/main/docs/ADOPTING.md).
|
|
55
|
+
|
|
56
|
+
## Entry points
|
|
57
|
+
|
|
58
|
+
| Subpath | Use it for | Runs in |
|
|
59
|
+
| ---------------------- | ---------------------------------------------------------------------------- | --------------- |
|
|
60
|
+
| `.` | Composing services and extending the language's semantics | browser-neutral |
|
|
61
|
+
| `./lsp` | The LSP head and its modules | browser-neutral |
|
|
62
|
+
| `./browser` | The IndexedDB store behind a persistent filesystem in a web worker | browser-only |
|
|
63
|
+
| `./node` | The Node filesystem, the stdio and socket launchers, the headless tools | Node-only |
|
|
64
|
+
| `./messages` | Validation messages with stable codes, and the codes this package raises | browser-neutral |
|
|
65
|
+
| `./testing` | Parsing and service doubles for unit tests | browser-neutral |
|
|
66
|
+
| `./testing/node` | Scratch workspaces, the LSP harness, a spawned server | Node-only |
|
|
67
|
+
| `./testing/playwright` | Playwright fixtures that capture the server log | Node-only |
|
|
68
|
+
|
|
69
|
+
The subpaths need a TypeScript `moduleResolution` that reads `exports`
|
|
70
|
+
(`NodeNext` or `Bundler`); see *Requirements* in
|
|
71
|
+
[Adopting Hydranium](https://github.com/eclipse-emfcloud/hydranium/blob/main/docs/ADOPTING.md).
|
|
90
72
|
|
|
91
73
|
## Status
|
|
92
74
|
|
|
93
|
-
Alpha
|
|
94
|
-
|
|
95
|
-
|
|
75
|
+
Alpha: every release is a prerelease that may break the API, so pin an exact
|
|
76
|
+
version. Guides and known limitations:
|
|
77
|
+
[Adopting Hydranium](https://github.com/eclipse-emfcloud/hydranium/blob/main/docs/ADOPTING.md).
|
|
96
78
|
|
|
97
79
|
## License
|
|
98
80
|
|
|
99
|
-
`MIT` — see this package's [`LICENSE`](./LICENSE)
|
|
100
|
-
|
|
81
|
+
`MIT` — see this package's [`LICENSE`](./LICENSE), and the repository
|
|
82
|
+
[`NOTICE.md`](https://github.com/eclipse-emfcloud/hydranium/blob/main/NOTICE.md)
|
|
83
|
+
for third-party notices.
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
export * from './indexeddb-file-system-store.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAMlF,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
// Worker-only entry (`@hydranium/core/browser`). Compiled as its own project
|
|
10
|
+
// against `lib.webworker`, so a worker global such as `indexedDB` resolves here
|
|
11
|
+
// and nowhere else in the package: the portable `.` barrel must stay free of
|
|
12
|
+
// DOM and worker globals, since it also loads in a plain Node consumer.
|
|
13
|
+
export * from './indexeddb-file-system-store.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,wEAAwE;AACxE,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
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 { FileSystemSeed } from '../langium/workspace/in-memory-file-system-provider.js';
|
|
10
|
+
import type { FileSystemStore } from '../langium/workspace/persistent-file-system-provider.js';
|
|
11
|
+
/**
|
|
12
|
+
* A {@link FileSystemStore} in `IndexedDB`, so an edit survives a reload.
|
|
13
|
+
*
|
|
14
|
+
* # Why IndexedDB and not OPFS
|
|
15
|
+
*
|
|
16
|
+
* OPFS is the tempting answer, because `createSyncAccessHandle` gives
|
|
17
|
+
* SYNCHRONOUS file reads in a worker, which is what Langium's
|
|
18
|
+
* `FileSystemProvider` needs. It buys nothing here: directory enumeration
|
|
19
|
+
* (`FileSystemDirectoryHandle.entries()`) is async-only, so a directory index
|
|
20
|
+
* still has to live in memory, and once it does the file reads are being served
|
|
21
|
+
* from memory too. IndexedDB is the smaller dependency for the same shape.
|
|
22
|
+
*
|
|
23
|
+
* # It holds the DELTA, not the workspace
|
|
24
|
+
*
|
|
25
|
+
* Only what has been written lands here, and `PersistentFileSystemProvider` lays
|
|
26
|
+
* it over the host's seed. So a fixture edited in the host's bundle still
|
|
27
|
+
* reaches a returning visitor, and this database stays a few kilobytes rather
|
|
28
|
+
* than a copy of the workspace.
|
|
29
|
+
*
|
|
30
|
+
* # A failure is loud, deliberately
|
|
31
|
+
*
|
|
32
|
+
* Nothing here degrades to non-persistent operation. A refused open, a blocked
|
|
33
|
+
* upgrade or an aborted transaction, which is what a quota overrun looks like,
|
|
34
|
+
* rejects the call, which fails the worker's bootstrap or the save that asked.
|
|
35
|
+
* The alternative, carrying on without a store, would report a saved workspace
|
|
36
|
+
* and lose it on the next load. An origin EVICTED between visits is not a
|
|
37
|
+
* failure this class can see: its database opens empty, which is a first visit,
|
|
38
|
+
* and the provider is correct in that state. Evicted mid-session, the next
|
|
39
|
+
* transaction rejects like any other failure.
|
|
40
|
+
*
|
|
41
|
+
* # The database is origin-scoped
|
|
42
|
+
*
|
|
43
|
+
* Every page on the origin shares a database of the same name, and the user
|
|
44
|
+
* agent may evict it. The name is the one per-app value and is REQUIRED for
|
|
45
|
+
* that reason: a default would let two apps on one origin overwrite each
|
|
46
|
+
* other's edits with nothing reporting it.
|
|
47
|
+
*/
|
|
48
|
+
export declare class IndexedDbFileSystemStore implements FileSystemStore {
|
|
49
|
+
protected readonly databaseName: string;
|
|
50
|
+
/**
|
|
51
|
+
* Opened once and shared, and NOT kept when it fails: a refused or blocked
|
|
52
|
+
* open rejects the call that needed it and the next call opens again, so a
|
|
53
|
+
* cause that has cleared, such as the other tab closing, does not fail every
|
|
54
|
+
* later save with the first error.
|
|
55
|
+
*/
|
|
56
|
+
protected connection?: Promise<IDBDatabase>;
|
|
57
|
+
constructor(databaseName: string);
|
|
58
|
+
load(): Promise<FileSystemSeed>;
|
|
59
|
+
write(path: string, content: string): Promise<void>;
|
|
60
|
+
remove(path: string): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Drop everything, returning the next load to the seed.
|
|
63
|
+
*
|
|
64
|
+
* The escape hatch a persistent host needs and a seeded one does not: a saved
|
|
65
|
+
* document that no longer parses is otherwise restored on every load, and
|
|
66
|
+
* clearing site data is the only other way out. Not on {@link FileSystemStore},
|
|
67
|
+
* which the provider never clears.
|
|
68
|
+
*/
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Run one write transaction and settle on its COMPLETION.
|
|
72
|
+
*
|
|
73
|
+
* Not on the request's `success`: a request can succeed inside a transaction
|
|
74
|
+
* that then aborts, which is exactly what a quota overrun looks like, so
|
|
75
|
+
* resolving early would report a save the database never kept.
|
|
76
|
+
*/
|
|
77
|
+
protected mutate(operation: string, act: (files: IDBObjectStore) => void): Promise<void>;
|
|
78
|
+
protected open(): Promise<IDBDatabase>;
|
|
79
|
+
protected openDatabase(): Promise<IDBDatabase>;
|
|
80
|
+
protected failure(transaction: IDBTransaction, operation: string): Error;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=indexeddb-file-system-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb-file-system-store.d.ts","sourceRoot":"","sources":["../../src/browser/indexeddb-file-system-store.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAW/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IASjD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM;IARnD;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5C,YAA+B,YAAY,EAAE,MAAM,EAAI;IAEjD,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CA2BpC;IAEK,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;IAED;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED;;;;;;OAMG;IACH,UAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ7F;IAED,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAMrC;IAED,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAwC7C;IAED,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAKvE;CACH"}
|
|
@@ -0,0 +1,181 @@
|
|
|
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
|
+
/** Out-of-line keys, so a key is the store path and the value is the content. */
|
|
10
|
+
const OBJECT_STORE_NAME = 'files';
|
|
11
|
+
/**
|
|
12
|
+
* The schema version. A bump needs a migration in `onupgradeneeded`, or every
|
|
13
|
+
* returning visitor's rows are left in a store the new code never reads.
|
|
14
|
+
*/
|
|
15
|
+
const DATABASE_VERSION = 1;
|
|
16
|
+
/**
|
|
17
|
+
* A {@link FileSystemStore} in `IndexedDB`, so an edit survives a reload.
|
|
18
|
+
*
|
|
19
|
+
* # Why IndexedDB and not OPFS
|
|
20
|
+
*
|
|
21
|
+
* OPFS is the tempting answer, because `createSyncAccessHandle` gives
|
|
22
|
+
* SYNCHRONOUS file reads in a worker, which is what Langium's
|
|
23
|
+
* `FileSystemProvider` needs. It buys nothing here: directory enumeration
|
|
24
|
+
* (`FileSystemDirectoryHandle.entries()`) is async-only, so a directory index
|
|
25
|
+
* still has to live in memory, and once it does the file reads are being served
|
|
26
|
+
* from memory too. IndexedDB is the smaller dependency for the same shape.
|
|
27
|
+
*
|
|
28
|
+
* # It holds the DELTA, not the workspace
|
|
29
|
+
*
|
|
30
|
+
* Only what has been written lands here, and `PersistentFileSystemProvider` lays
|
|
31
|
+
* it over the host's seed. So a fixture edited in the host's bundle still
|
|
32
|
+
* reaches a returning visitor, and this database stays a few kilobytes rather
|
|
33
|
+
* than a copy of the workspace.
|
|
34
|
+
*
|
|
35
|
+
* # A failure is loud, deliberately
|
|
36
|
+
*
|
|
37
|
+
* Nothing here degrades to non-persistent operation. A refused open, a blocked
|
|
38
|
+
* upgrade or an aborted transaction, which is what a quota overrun looks like,
|
|
39
|
+
* rejects the call, which fails the worker's bootstrap or the save that asked.
|
|
40
|
+
* The alternative, carrying on without a store, would report a saved workspace
|
|
41
|
+
* and lose it on the next load. An origin EVICTED between visits is not a
|
|
42
|
+
* failure this class can see: its database opens empty, which is a first visit,
|
|
43
|
+
* and the provider is correct in that state. Evicted mid-session, the next
|
|
44
|
+
* transaction rejects like any other failure.
|
|
45
|
+
*
|
|
46
|
+
* # The database is origin-scoped
|
|
47
|
+
*
|
|
48
|
+
* Every page on the origin shares a database of the same name, and the user
|
|
49
|
+
* agent may evict it. The name is the one per-app value and is REQUIRED for
|
|
50
|
+
* that reason: a default would let two apps on one origin overwrite each
|
|
51
|
+
* other's edits with nothing reporting it.
|
|
52
|
+
*/
|
|
53
|
+
export class IndexedDbFileSystemStore {
|
|
54
|
+
databaseName;
|
|
55
|
+
/**
|
|
56
|
+
* Opened once and shared, and NOT kept when it fails: a refused or blocked
|
|
57
|
+
* open rejects the call that needed it and the next call opens again, so a
|
|
58
|
+
* cause that has cleared, such as the other tab closing, does not fail every
|
|
59
|
+
* later save with the first error.
|
|
60
|
+
*/
|
|
61
|
+
connection;
|
|
62
|
+
constructor(databaseName) {
|
|
63
|
+
this.databaseName = databaseName;
|
|
64
|
+
}
|
|
65
|
+
async load() {
|
|
66
|
+
const database = await this.open();
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
const transaction = database.transaction(OBJECT_STORE_NAME, 'readonly');
|
|
69
|
+
const files = transaction.objectStore(OBJECT_STORE_NAME);
|
|
70
|
+
const keyRequest = files.getAllKeys();
|
|
71
|
+
const valueRequest = files.getAll();
|
|
72
|
+
// Resolved on the TRANSACTION rather than on either request, which is
|
|
73
|
+
// what guarantees both have landed, and `getAllKeys` and `getAll`
|
|
74
|
+
// enumerate in the same key order, so they zip.
|
|
75
|
+
transaction.oncomplete = () => {
|
|
76
|
+
const keys = keyRequest.result;
|
|
77
|
+
const values = valueRequest.result;
|
|
78
|
+
const seed = {};
|
|
79
|
+
keys.forEach((key, index) => {
|
|
80
|
+
const value = values[index];
|
|
81
|
+
// Guarded rather than cast: this database outlives the code that
|
|
82
|
+
// wrote it, so a row from an older shape must be skipped instead
|
|
83
|
+
// of reaching the filesystem as non-string content.
|
|
84
|
+
if (typeof key === 'string' && typeof value === 'string') {
|
|
85
|
+
seed[key] = value;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
resolve(seed);
|
|
89
|
+
};
|
|
90
|
+
transaction.onabort = () => reject(this.failure(transaction, 'read the stored workspace'));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async write(path, content) {
|
|
94
|
+
await this.mutate('store', files => files.put(content, path));
|
|
95
|
+
}
|
|
96
|
+
async remove(path) {
|
|
97
|
+
await this.mutate('drop', files => files.delete(path));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Drop everything, returning the next load to the seed.
|
|
101
|
+
*
|
|
102
|
+
* The escape hatch a persistent host needs and a seeded one does not: a saved
|
|
103
|
+
* document that no longer parses is otherwise restored on every load, and
|
|
104
|
+
* clearing site data is the only other way out. Not on {@link FileSystemStore},
|
|
105
|
+
* which the provider never clears.
|
|
106
|
+
*/
|
|
107
|
+
async clear() {
|
|
108
|
+
await this.mutate('clear', files => files.clear());
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Run one write transaction and settle on its COMPLETION.
|
|
112
|
+
*
|
|
113
|
+
* Not on the request's `success`: a request can succeed inside a transaction
|
|
114
|
+
* that then aborts, which is exactly what a quota overrun looks like, so
|
|
115
|
+
* resolving early would report a save the database never kept.
|
|
116
|
+
*/
|
|
117
|
+
async mutate(operation, act) {
|
|
118
|
+
const database = await this.open();
|
|
119
|
+
return new Promise((resolve, reject) => {
|
|
120
|
+
const transaction = database.transaction(OBJECT_STORE_NAME, 'readwrite');
|
|
121
|
+
transaction.oncomplete = () => resolve();
|
|
122
|
+
transaction.onabort = () => reject(this.failure(transaction, operation));
|
|
123
|
+
act(transaction.objectStore(OBJECT_STORE_NAME));
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
open() {
|
|
127
|
+
this.connection ??= this.openDatabase().catch((error) => {
|
|
128
|
+
this.connection = undefined;
|
|
129
|
+
throw error;
|
|
130
|
+
});
|
|
131
|
+
return this.connection;
|
|
132
|
+
}
|
|
133
|
+
openDatabase() {
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
const request = indexedDB.open(this.databaseName, DATABASE_VERSION);
|
|
136
|
+
let blocked = false;
|
|
137
|
+
request.onupgradeneeded = () => {
|
|
138
|
+
// Runs on a first visit and on a version bump. `createObjectStore`
|
|
139
|
+
// throws if it already exists, so the guard is not defensive: a page
|
|
140
|
+
// opened twice with the store created once gets here only when the
|
|
141
|
+
// version moved.
|
|
142
|
+
if (!request.result.objectStoreNames.contains(OBJECT_STORE_NAME)) {
|
|
143
|
+
request.result.createObjectStore(OBJECT_STORE_NAME);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
request.onsuccess = () => {
|
|
147
|
+
const database = request.result;
|
|
148
|
+
if (blocked) {
|
|
149
|
+
// Went through once the other tab closed, after this call had
|
|
150
|
+
// rejected. Nobody holds it, so it is closed rather than left
|
|
151
|
+
// open to block the NEXT upgrade.
|
|
152
|
+
database.close();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// A newer version opening in another tab asks this one to let go,
|
|
156
|
+
// and holding on would block that upgrade for as long as this tab
|
|
157
|
+
// lives. Dropped, so every later call here rejects, which is loud.
|
|
158
|
+
database.onversionchange = () => {
|
|
159
|
+
database.close();
|
|
160
|
+
this.connection = undefined;
|
|
161
|
+
};
|
|
162
|
+
resolve(database);
|
|
163
|
+
};
|
|
164
|
+
request.onerror = () => reject(request.error ?? new Error(`Cannot open ${this.databaseName}`));
|
|
165
|
+
// A tab at an older version that lacks the close above holds the
|
|
166
|
+
// upgrade indefinitely. Reported rather than waited on: the host can say
|
|
167
|
+
// so, where a hung open looks like a worker that never started.
|
|
168
|
+
request.onblocked = () => {
|
|
169
|
+
blocked = true;
|
|
170
|
+
reject(new Error(`${this.databaseName} is open in another tab at an older version`));
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
failure(transaction, operation) {
|
|
175
|
+
// `transaction.error` names the real cause (`QuotaExceededError` above
|
|
176
|
+
// all); an abort with no error is a caller-side abort, which nothing here
|
|
177
|
+
// does.
|
|
178
|
+
return transaction.error ?? new Error(`Failed to ${operation} in ${this.databaseName}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=indexeddb-file-system-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb-file-system-store.js","sourceRoot":"","sources":["../../src/browser/indexeddb-file-system-store.ts"],"names":[],"mappings":"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"}
|