@hydranium/core 1.0.0-next.33 → 1.0.0-next.331
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -82
- package/lib/browser/host-heads-in-worker.d.ts +77 -0
- package/lib/browser/host-heads-in-worker.d.ts.map +1 -0
- package/lib/browser/host-heads-in-worker.js +169 -0
- package/lib/browser/host-heads-in-worker.js.map +1 -0
- package/lib/browser/index.d.ts +12 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +17 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/indexeddb-file-system-store.d.ts +82 -0
- package/lib/browser/indexeddb-file-system-store.d.ts.map +1 -0
- package/lib/browser/indexeddb-file-system-store.js +181 -0
- package/lib/browser/indexeddb-file-system-store.js.map +1 -0
- package/lib/browser/start-language-server-in-worker.d.ts +32 -0
- package/lib/browser/start-language-server-in-worker.d.ts.map +1 -0
- package/lib/browser/start-language-server-in-worker.js +40 -0
- package/lib/browser/start-language-server-in-worker.js.map +1 -0
- package/lib/documents/ast-document-manager.d.ts +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 +445 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +903 -483
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +10 -2
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +10 -2
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/language-client-shadow.d.ts +234 -0
- package/lib/documents/language-client-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-shadow.js +306 -0
- package/lib/documents/language-client-shadow.js.map +1 -0
- package/lib/documents/model-ledger.d.ts +47 -0
- package/lib/documents/model-ledger.d.ts.map +1 -0
- package/lib/documents/model-ledger.js +30 -0
- package/lib/documents/model-ledger.js.map +1 -0
- package/lib/documents/text-ledger.d.ts +64 -0
- package/lib/documents/text-ledger.d.ts.map +1 -0
- package/lib/documents/text-ledger.js +63 -0
- package/lib/documents/text-ledger.js.map +1 -0
- package/lib/documents/version-sync-service.d.ts +138 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +173 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.d.ts +42 -31
- package/lib/langium/ast-extension/ast-extension-service.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.js +45 -19
- package/lib/langium/ast-extension/ast-extension-service.js.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.d.ts +12 -7
- package/lib/langium/ast-extension/ast-node-builder.d.ts.map +1 -1
- package/lib/langium/ast-extension/ast-node-builder.js +25 -9
- package/lib/langium/ast-extension/ast-node-builder.js.map +1 -1
- package/lib/langium/bootstrap.d.ts +49 -36
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +83 -44
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +9 -9
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.js +25 -16
- package/lib/langium/build-phase-pass/build-phase-pass-service.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts +20 -8
- package/lib/langium/build-phase-pass/build-phase-pass.d.ts.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass.js +20 -0
- package/lib/langium/build-phase-pass/build-phase-pass.js.map +1 -1
- package/lib/langium/composite-ast-reflection.d.ts +46 -0
- package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
- package/lib/langium/composite-ast-reflection.js +97 -0
- package/lib/langium/composite-ast-reflection.js.map +1 -0
- package/lib/langium/config/configuration-provider.d.ts +81 -0
- package/lib/langium/config/configuration-provider.d.ts.map +1 -0
- package/lib/langium/config/configuration-provider.js +112 -0
- package/lib/langium/config/configuration-provider.js.map +1 -0
- package/lib/langium/config/index.d.ts +1 -0
- package/lib/langium/config/index.d.ts.map +1 -1
- package/lib/langium/config/index.js +1 -0
- package/lib/langium/config/index.js.map +1 -1
- package/lib/langium/config/settings.js.map +1 -1
- package/lib/langium/diagnostics/console-tee.d.ts +27 -0
- package/lib/langium/diagnostics/console-tee.d.ts.map +1 -0
- package/lib/langium/diagnostics/console-tee.js +142 -0
- package/lib/langium/diagnostics/console-tee.js.map +1 -0
- package/lib/langium/diagnostics/format-log-arg.d.ts +18 -0
- package/lib/langium/diagnostics/format-log-arg.d.ts.map +1 -0
- package/lib/langium/diagnostics/format-log-arg.js +36 -0
- package/lib/langium/diagnostics/format-log-arg.js.map +1 -0
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/log-preamble.js +1 -1
- package/lib/langium/diagnostics/log-preamble.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +25 -6
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +49 -17
- package/lib/langium/diagnostics/logger.js.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.d.ts +17 -0
- package/lib/langium/diagnostics/lsp-logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/lsp-logger.js +68 -45
- 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 +283 -41
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +448 -78
- 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 +17 -8
- package/lib/langium/integrity/integrity-rule.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-rule.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +95 -27
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +303 -63
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- 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 +383 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +455 -0
- package/lib/langium/model-service/client-session.js.map +1 -0
- package/lib/langium/model-service/index.d.ts +2 -0
- package/lib/langium/model-service/index.d.ts.map +1 -1
- package/lib/langium/model-service/index.js +2 -0
- package/lib/langium/model-service/index.js.map +1 -1
- package/lib/langium/model-service/model-events.d.ts +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 +456 -300
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +571 -466
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +141 -40
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +52 -40
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +32 -7
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +10 -4
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts.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 +38 -14
- 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 +29 -11
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +37 -15
- 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 +13 -7
- 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 +86 -37
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +36 -25
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/langium/trivia/comment-preserver.d.ts +471 -0
- package/lib/langium/trivia/comment-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/comment-preserver.js +1026 -0
- package/lib/langium/trivia/comment-preserver.js.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts +51 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +62 -0
- package/lib/langium/trivia/document-ending-preserver.js.map +1 -0
- package/lib/langium/trivia/index.d.ts +14 -0
- package/lib/langium/trivia/index.d.ts.map +1 -0
- package/lib/langium/trivia/index.js +14 -0
- package/lib/langium/trivia/index.js.map +1 -0
- package/lib/langium/trivia/trivia-contribution.d.ts +37 -0
- package/lib/langium/trivia/trivia-contribution.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-contribution.js +10 -0
- package/lib/langium/trivia/trivia-contribution.js.map +1 -0
- package/lib/langium/trivia/trivia-preserver.d.ts +52 -0
- package/lib/langium/trivia/trivia-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-preserver.js +10 -0
- package/lib/langium/trivia/trivia-preserver.js.map +1 -0
- package/lib/langium/trivia/trivia-service.d.ts +70 -0
- package/lib/langium/trivia/trivia-service.d.ts.map +1 -0
- package/lib/langium/trivia/trivia-service.js +56 -0
- package/lib/langium/trivia/trivia-service.js.map +1 -0
- package/lib/langium/update-rewrite/normalize-empty-strings.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/validation/document-validator.d.ts +168 -23
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +263 -25
- 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 +167 -8
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +115 -13
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +31 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +54 -0
- package/lib/langium/workspace/hydranium-langium-document-factory.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +43 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +58 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +103 -21
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +184 -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 +40 -3
- package/lib/langium/workspace/initialize-workspace.d.ts.map +1 -1
- package/lib/langium/workspace/initialize-workspace.js +68 -3
- package/lib/langium/workspace/initialize-workspace.js.map +1 -1
- package/lib/langium/workspace/langium-documents.d.ts +7 -0
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +18 -1
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +16 -10
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +25 -13
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/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/server-locale.d.ts +19 -5
- package/lib/locale/server-locale.d.ts.map +1 -1
- package/lib/locale/server-locale.js +1 -1
- package/lib/locale/server-locale.js.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
- package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
- package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
- package/lib/lsp/connection-features.d.ts +23 -0
- package/lib/lsp/connection-features.d.ts.map +1 -0
- package/lib/lsp/connection-features.js +60 -0
- package/lib/lsp/connection-features.js.map +1 -0
- package/lib/lsp/diagnostics-connection.d.ts +27 -0
- package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
- package/lib/lsp/diagnostics-connection.js +53 -0
- package/lib/lsp/diagnostics-connection.js.map +1 -0
- package/lib/lsp/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 +4 -1
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +4 -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/save-text-document.d.ts +31 -0
- package/lib/lsp/save-text-document.d.ts.map +1 -0
- package/lib/lsp/save-text-document.js +52 -0
- package/lib/lsp/save-text-document.js.map +1 -0
- package/lib/lsp/semantic-token-provider.d.ts +58 -2
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
- package/lib/lsp/semantic-token-provider.js +98 -9
- package/lib/lsp/semantic-token-provider.js.map +1 -1
- package/lib/lsp/shared-module.d.ts +4 -8
- package/lib/lsp/shared-module.d.ts.map +1 -1
- package/lib/lsp/shared-module.js.map +1 -1
- package/lib/lsp/start-language-server.d.ts +11 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +18 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +3 -5
- package/lib/messages/carriers.d.ts.map +1 -1
- package/lib/messages/carriers.js +3 -5
- package/lib/messages/carriers.js.map +1 -1
- package/lib/messages/index.d.ts +2 -2
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +2 -2
- package/lib/messages/index.js.map +1 -1
- package/lib/messages/renderer.d.ts +32 -7
- package/lib/messages/renderer.d.ts.map +1 -1
- package/lib/messages/renderer.js +7 -1
- package/lib/messages/renderer.js.map +1 -1
- package/lib/node/event-loop-monitor.d.ts.map +1 -1
- package/lib/node/event-loop-monitor.js +2 -1
- package/lib/node/event-loop-monitor.js.map +1 -1
- package/lib/node/heap-ceiling.d.ts +61 -0
- package/lib/node/heap-ceiling.d.ts.map +1 -0
- package/lib/node/heap-ceiling.js +72 -0
- package/lib/node/heap-ceiling.js.map +1 -0
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +5 -1
- package/lib/node/index.js.map +1 -1
- package/lib/node/latency-from-env.d.ts +1 -1
- package/lib/node/latency-from-env.js +1 -1
- package/lib/node/lint-grammar.js.map +1 -1
- package/lib/node/log-file-sink.d.ts +3 -2
- package/lib/node/log-file-sink.d.ts.map +1 -1
- package/lib/node/log-file-sink.js +6 -2
- package/lib/node/log-file-sink.js.map +1 -1
- package/lib/node/log-preamble-node.d.ts +5 -3
- package/lib/node/log-preamble-node.d.ts.map +1 -1
- package/lib/node/log-preamble-node.js +13 -10
- package/lib/node/log-preamble-node.js.map +1 -1
- package/lib/node/measure-memory.d.ts.map +1 -1
- package/lib/node/measure-memory.js +5 -4
- package/lib/node/measure-memory.js.map +1 -1
- package/lib/node/memory-monitor.d.ts +2 -2
- package/lib/node/memory-monitor.d.ts.map +1 -1
- package/lib/node/memory-monitor.js +9 -10
- package/lib/node/memory-monitor.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +67 -9
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +198 -53
- package/lib/node/node-file-system-provider.js.map +1 -1
- package/lib/node/profile-capture.d.ts +12 -4
- package/lib/node/profile-capture.d.ts.map +1 -1
- package/lib/node/profile-capture.js +8 -6
- package/lib/node/profile-capture.js.map +1 -1
- package/lib/node/profile-digest.js.map +1 -1
- package/lib/node/profiling-run.d.ts +13 -3
- package/lib/node/profiling-run.d.ts.map +1 -1
- package/lib/node/profiling-run.js +17 -8
- package/lib/node/profiling-run.js.map +1 -1
- package/lib/node/rename-over-open-readers.d.ts +61 -0
- package/lib/node/rename-over-open-readers.d.ts.map +1 -0
- package/lib/node/rename-over-open-readers.js +80 -0
- package/lib/node/rename-over-open-readers.js.map +1 -0
- package/lib/node/server-diagnostics.js +1 -1
- package/lib/node/server-diagnostics.js.map +1 -1
- package/lib/node/server-state-snapshot.js +4 -4
- package/lib/node/server-state-snapshot.js.map +1 -1
- package/lib/node/socket-launcher.d.ts +43 -7
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +42 -7
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/startup-cpu-profile.d.ts +29 -0
- package/lib/node/startup-cpu-profile.d.ts.map +1 -0
- package/lib/node/startup-cpu-profile.js +91 -0
- package/lib/node/startup-cpu-profile.js.map +1 -0
- package/lib/node/stdio-launcher.d.ts +13 -13
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +21 -11
- package/lib/node/stdio-launcher.js.map +1 -1
- package/lib/testing/document-uri-policy-conformance.js +1 -1
- package/lib/testing/document-uri-policy-conformance.js.map +1 -1
- package/lib/testing/fake-description.js.map +1 -1
- package/lib/testing/fake-document.d.ts +2 -1
- package/lib/testing/fake-document.d.ts.map +1 -1
- package/lib/testing/fake-document.js.map +1 -1
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.d.ts.map +1 -1
- package/lib/testing/index.js +2 -1
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/langium-test-helpers.d.ts.map +1 -1
- package/lib/testing/langium-test-helpers.js +1 -0
- package/lib/testing/langium-test-helpers.js.map +1 -1
- package/lib/testing/make-noop-language-services.js.map +1 -1
- package/lib/testing/make-noop-shared-services.d.ts +4 -4
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +4 -4
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +51 -20
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +29 -13
- 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 +22 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +74 -15
- package/lib/util/connection-liveness.js.map +1 -1
- package/lib/util/environment.d.ts +7 -0
- package/lib/util/environment.d.ts.map +1 -1
- package/lib/util/environment.js +15 -1
- package/lib/util/environment.js.map +1 -1
- package/lib/util/registry.d.ts.map +1 -1
- package/package.json +39 -58
- package/src/browser/host-heads-in-worker.ts +218 -0
- package/src/browser/index.ts +17 -0
- package/src/browser/indexeddb-file-system-store.ts +192 -0
- package/src/browser/start-language-server-in-worker.ts +56 -0
- package/src/documents/ast-document-manager.ts +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 +1029 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +501 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/text-ledger.ts +112 -0
- package/src/documents/version-sync-service.ts +275 -0
- package/src/index.ts +7 -0
- package/src/langium/ast-extension/ast-extension-service.ts +77 -41
- package/src/langium/ast-extension/ast-node-builder.ts +35 -13
- package/src/langium/bootstrap.ts +87 -51
- package/src/langium/build-phase-pass/build-phase-pass-service.ts +29 -19
- package/src/langium/build-phase-pass/build-phase-pass.ts +37 -8
- package/src/langium/composite-ast-reflection.ts +112 -0
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/console-tee.ts +151 -0
- package/src/langium/diagnostics/format-log-arg.ts +36 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +51 -17
- package/src/langium/diagnostics/lsp-logger.ts +70 -44
- 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 +553 -78
- package/src/langium/integration-services.ts +59 -28
- package/src/langium/integrity/integrity-rule.ts +17 -8
- package/src/langium/integrity/integrity-service.ts +332 -69
- package/src/langium/language-module.ts +49 -8
- package/src/langium/model-service/client-session.ts +718 -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 +878 -494
- package/src/langium/module.ts +195 -72
- package/src/langium/naming/name-provider.ts +34 -8
- 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 +54 -19
- 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 +49 -16
- 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 +16 -7
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +104 -47
- package/src/langium/trivia/comment-preserver.ts +1241 -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 +311 -30
- 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 +258 -16
- package/src/langium/workspace/hydranium-langium-document-factory.ts +83 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +212 -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 +96 -4
- package/src/langium/workspace/langium-documents.ts +19 -1
- package/src/langium/workspace/persistent-file-system-provider.ts +27 -15
- 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/server-locale.ts +20 -5
- 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 +4 -1
- package/src/lsp/lsp-latency.ts +62 -0
- package/src/lsp/save-text-document.ts +63 -0
- package/src/lsp/semantic-token-provider.ts +146 -8
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +18 -7
- package/src/messages/carriers.ts +3 -5
- package/src/messages/index.ts +11 -2
- package/src/messages/renderer.ts +34 -6
- package/src/node/event-loop-monitor.ts +2 -1
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +5 -1
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/log-file-sink.ts +6 -2
- package/src/node/log-preamble-node.ts +20 -10
- package/src/node/measure-memory.ts +5 -4
- package/src/node/memory-monitor.ts +10 -10
- package/src/node/node-file-system-provider.ts +214 -57
- package/src/node/profile-capture.ts +16 -15
- package/src/node/profiling-run.ts +30 -8
- package/src/node/rename-over-open-readers.ts +94 -0
- package/src/node/server-diagnostics.ts +1 -1
- package/src/node/server-state-snapshot.ts +5 -5
- package/src/node/socket-launcher.ts +78 -14
- package/src/node/startup-cpu-profile.ts +94 -0
- package/src/node/stdio-launcher.ts +29 -19
- package/src/testing/document-uri-policy-conformance.ts +1 -1
- package/src/testing/fake-document.ts +2 -1
- package/src/testing/index.ts +2 -1
- package/src/testing/langium-test-helpers.ts +1 -0
- package/src/testing/make-noop-shared-services.ts +6 -6
- package/src/testing/make-test-services.ts +93 -41
- 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 +80 -15
- package/src/util/environment.ts +24 -2
- package/lib/documents/language-client-text-shadow.d.ts +0 -101
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -156
- package/lib/documents/language-client-text-shadow.js.map +0 -1
- package/lib/documents/self-save-registry.d.ts +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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { AbstractAstReflection } from '@hydranium/langium';
|
|
10
|
+
import { assertSingleLangiumCopy } from './single-langium-copy.js';
|
|
11
|
+
/**
|
|
12
|
+
* One `AstReflection` over the reflections of separately generated language
|
|
13
|
+
* packages. The shared `AstReflection` slot holds a single reflection, so
|
|
14
|
+
* binding each package's generated shared module keeps only the last one's
|
|
15
|
+
* types; bind this over all of them instead.
|
|
16
|
+
*
|
|
17
|
+
* A name several reflections share is taken to be one type, reached through a
|
|
18
|
+
* shared imported grammar, and keeps every super type any of them gives it:
|
|
19
|
+
* each grammar may declare its own union over the type. Only properties that
|
|
20
|
+
* differ in name, reference type or default value throw; two unrelated unions,
|
|
21
|
+
* or same-shaped interfaces, that share a name merge silently, so keep other
|
|
22
|
+
* type names distinct across packages.
|
|
23
|
+
*
|
|
24
|
+
* Only each reflection's `types` is read, so behaviour a reflection overrides
|
|
25
|
+
* is lost. Each package's generated `isX` guards keep using that package's own
|
|
26
|
+
* reflection and answer false for subtypes only another package declares.
|
|
27
|
+
*
|
|
28
|
+
* Each reflection is checked with {@link assertSingleLangiumCopy}, because the
|
|
29
|
+
* composite itself extends the framework copy's base whichever copy they use.
|
|
30
|
+
*
|
|
31
|
+
* The protected merge methods run from the constructor, so an override cannot
|
|
32
|
+
* read its own class's fields.
|
|
33
|
+
*/
|
|
34
|
+
export class CompositeAstReflection extends AbstractAstReflection {
|
|
35
|
+
types = {};
|
|
36
|
+
constructor(reflections) {
|
|
37
|
+
super();
|
|
38
|
+
const firstDefinedAt = new Map();
|
|
39
|
+
reflections.forEach((reflection, index) => {
|
|
40
|
+
assertSingleLangiumCopy(reflection, () => this.formatReflection(reflections, index));
|
|
41
|
+
for (const [type, metaData] of Object.entries(reflection.types)) {
|
|
42
|
+
const ownerIndex = firstDefinedAt.get(type);
|
|
43
|
+
if (ownerIndex === undefined) {
|
|
44
|
+
this.types[type] = metaData;
|
|
45
|
+
firstDefinedAt.set(type, index);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.types[type] = this.mergeTypeMetaData(this.types[type], metaData, this.formatReflection(reflections, ownerIndex), this.formatReflection(reflections, index));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
mergeTypeMetaData(known, added, knownFrom, addedFrom) {
|
|
54
|
+
const properties = {};
|
|
55
|
+
const propertyNames = new Set([...Object.keys(known.properties), ...Object.keys(added.properties)]);
|
|
56
|
+
for (const property of propertyNames) {
|
|
57
|
+
const knownProperty = known.properties[property];
|
|
58
|
+
const addedProperty = added.properties[property];
|
|
59
|
+
if (!knownProperty || !addedProperty || !this.sameProperty(knownProperty, addedProperty)) {
|
|
60
|
+
throw new Error(`[hydranium] ${knownFrom} and ${addedFrom} define the type ` +
|
|
61
|
+
`'${known.name}' differently (property '${property}'). A name the composed reflections share must ` +
|
|
62
|
+
'denote one type, so rename one of them, or have every grammar take the type unchanged from one ' +
|
|
63
|
+
'shared imported grammar.');
|
|
64
|
+
}
|
|
65
|
+
properties[property] = addedProperty.optional && !knownProperty.optional ? addedProperty : knownProperty;
|
|
66
|
+
}
|
|
67
|
+
// `Required` so a field Langium adds fails compilation until this merge decides on it.
|
|
68
|
+
const merged = {
|
|
69
|
+
name: known.name,
|
|
70
|
+
properties,
|
|
71
|
+
superTypes: [...new Set([...known.superTypes, ...added.superTypes])]
|
|
72
|
+
};
|
|
73
|
+
return merged;
|
|
74
|
+
}
|
|
75
|
+
sameProperty(left, right) {
|
|
76
|
+
return COMPARED_PROPERTY_FIELDS.every(field => JSON.stringify(left[field]) === JSON.stringify(right[field]));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Names `reflections[index]` for the composite's errors: its position and
|
|
80
|
+
* class name. The position is needed because minified bundles and scaffolds
|
|
81
|
+
* sharing a project name leave class names that do not tell reflections
|
|
82
|
+
* apart. An override can name the package each reflection came from.
|
|
83
|
+
*/
|
|
84
|
+
formatReflection(reflections, index) {
|
|
85
|
+
return `reflections[${index}] (${reflections[index].constructor?.name ?? 'no constructor'})`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** How the merge treats each property field; a field Langium adds fails compilation here until decided. */
|
|
89
|
+
const PROPERTY_FIELDS = {
|
|
90
|
+
name: 'compared',
|
|
91
|
+
referenceType: 'compared',
|
|
92
|
+
defaultValue: 'compared',
|
|
93
|
+
// Older generators emit no `optional`, so its absence proves nothing.
|
|
94
|
+
optional: 'merged'
|
|
95
|
+
};
|
|
96
|
+
const COMPARED_PROPERTY_FIELDS = Object.keys(PROPERTY_FIELDS).filter(field => PROPERTY_FIELDS[field] === 'compared');
|
|
97
|
+
//# sourceMappingURL=composite-ast-reflection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite-ast-reflection.js","sourceRoot":"","sources":["../../src/langium/composite-ast-reflection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type ConfigurationInitializedParams, DefaultConfigurationProvider } from '@hydranium/langium';
|
|
10
|
+
import type { ConfigurationItem, DidChangeConfigurationRegistrationOptions } from 'vscode-languageserver';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration provider that asks the client about a section the first time
|
|
13
|
+
* something reads it.
|
|
14
|
+
*
|
|
15
|
+
* Langium's base requests one section per registered language, named after the
|
|
16
|
+
* language id, and never asks again. A read of any other section — including
|
|
17
|
+
* whatever `lsp.configurationRoot` is bound to — then resolves `undefined` with
|
|
18
|
+
* no request on the wire, which is indistinguishable from a setting the user has
|
|
19
|
+
* not set.
|
|
20
|
+
*
|
|
21
|
+
* Asking on first read rather than from a list collected up front: a reader
|
|
22
|
+
* names its section during DI, after `initialized` has taken its one-shot pass,
|
|
23
|
+
* so a list would have to be complete before the server initialized.
|
|
24
|
+
*/
|
|
25
|
+
export declare class HydraniumConfigurationProvider extends DefaultConfigurationProvider {
|
|
26
|
+
/**
|
|
27
|
+
* The client-facing hooks, captured because they arrive once as arguments to
|
|
28
|
+
* {@link initialized} and are needed on every later read. Absent in a
|
|
29
|
+
* headless composition, which has no connection to ask.
|
|
30
|
+
*/
|
|
31
|
+
protected registerForSection?: (params: DidChangeConfigurationRegistrationOptions) => void;
|
|
32
|
+
protected fetchSections?: (items: ConfigurationItem[]) => Promise<unknown>;
|
|
33
|
+
/**
|
|
34
|
+
* Sections already dealt with, holding the in-flight work so concurrent
|
|
35
|
+
* readers share one round trip. Entries stay after they settle: they record
|
|
36
|
+
* that the section was HANDLED, and without that an unset section is
|
|
37
|
+
* re-requested on every read, "unset" and "not fetched" being the same
|
|
38
|
+
* absence in the store.
|
|
39
|
+
*
|
|
40
|
+
* A section the client's capabilities ruled out counts as handled, having
|
|
41
|
+
* been settled by asking nothing.
|
|
42
|
+
*/
|
|
43
|
+
protected readonly requestedSections: Map<string, Promise<void>>;
|
|
44
|
+
initialized(params: ConfigurationInitializedParams): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* The `ready` await precedes the emptiness check: the base resolves it at the
|
|
47
|
+
* end of its own initial fetch, so testing the store first calls every
|
|
48
|
+
* language section missing and re-requests what is already on its way.
|
|
49
|
+
*/
|
|
50
|
+
getConfiguration(language: string, configuration: string): Promise<unknown>;
|
|
51
|
+
/** Ask about `section` once, sharing the request with any concurrent reader. */
|
|
52
|
+
protected requestSection(section: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* The hooks are gated on the client having declared `workspace.configuration`.
|
|
55
|
+
* A connection binds them whatever the client said, so their presence is not
|
|
56
|
+
* consent: calling them sends a `client/registerCapability` and a
|
|
57
|
+
* `workspace/configuration` to a client that advertised support for neither,
|
|
58
|
+
* which is entitled to answer either with a method-not-found and may drop the
|
|
59
|
+
* connection.
|
|
60
|
+
*
|
|
61
|
+
* That flag is exact for the fetch and KNOWINGLY coarse for the registration,
|
|
62
|
+
* which the spec governs by
|
|
63
|
+
* `workspace.didChangeConfiguration.dynamicRegistration`. The base registers
|
|
64
|
+
* under `workspace.configuration` alone before any of this runs, so gating
|
|
65
|
+
* the registration on the narrower flag here would withhold a request whose
|
|
66
|
+
* twin has already gone out, sparing the client nothing. A client declaring
|
|
67
|
+
* `workspace.configuration` without dynamic registration is still registered
|
|
68
|
+
* for, by the base and by this; closing that means changing the base's pass,
|
|
69
|
+
* not this gate.
|
|
70
|
+
*
|
|
71
|
+
* Registering before fetching, so an edit landing between the two arrives as
|
|
72
|
+
* a notification instead of being lost; the reverse order drops it.
|
|
73
|
+
*
|
|
74
|
+
* A `null` result is left out of the store rather than written, so the
|
|
75
|
+
* section reads as unset, and no `onConfigurationSectionUpdate` fires — the
|
|
76
|
+
* value goes to the caller that asked for it, and an event would announce a
|
|
77
|
+
* change that is only this provider catching up.
|
|
78
|
+
*/
|
|
79
|
+
protected doRequestSection(section: string): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=configuration-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration-provider.d.ts","sourceRoot":"","sources":["../../../src/langium/config/configuration-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,yCAAyC,EAAE,MAAM,uBAAuB,CAAC;AAE1G;;;;;;;;;;;;;GAaG;AACH,qBAAa,8BAA+B,SAAQ,4BAA4B;IAC7E;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,yCAAyC,KAAK,IAAI,CAAC;IAC3F,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3E;;;;;;;;;OASG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,6BAAoC;IAEzD,WAAW,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhF;IAED;;;;OAIG;IACY,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzF;IAED,gFAAgF;IAChF,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,UAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/D;CACH"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { DefaultConfigurationProvider } from '@hydranium/langium';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration provider that asks the client about a section the first time
|
|
12
|
+
* something reads it.
|
|
13
|
+
*
|
|
14
|
+
* Langium's base requests one section per registered language, named after the
|
|
15
|
+
* language id, and never asks again. A read of any other section — including
|
|
16
|
+
* whatever `lsp.configurationRoot` is bound to — then resolves `undefined` with
|
|
17
|
+
* no request on the wire, which is indistinguishable from a setting the user has
|
|
18
|
+
* not set.
|
|
19
|
+
*
|
|
20
|
+
* Asking on first read rather than from a list collected up front: a reader
|
|
21
|
+
* names its section during DI, after `initialized` has taken its one-shot pass,
|
|
22
|
+
* so a list would have to be complete before the server initialized.
|
|
23
|
+
*/
|
|
24
|
+
export class HydraniumConfigurationProvider extends DefaultConfigurationProvider {
|
|
25
|
+
/**
|
|
26
|
+
* The client-facing hooks, captured because they arrive once as arguments to
|
|
27
|
+
* {@link initialized} and are needed on every later read. Absent in a
|
|
28
|
+
* headless composition, which has no connection to ask.
|
|
29
|
+
*/
|
|
30
|
+
registerForSection;
|
|
31
|
+
fetchSections;
|
|
32
|
+
/**
|
|
33
|
+
* Sections already dealt with, holding the in-flight work so concurrent
|
|
34
|
+
* readers share one round trip. Entries stay after they settle: they record
|
|
35
|
+
* that the section was HANDLED, and without that an unset section is
|
|
36
|
+
* re-requested on every read, "unset" and "not fetched" being the same
|
|
37
|
+
* absence in the store.
|
|
38
|
+
*
|
|
39
|
+
* A section the client's capabilities ruled out counts as handled, having
|
|
40
|
+
* been settled by asking nothing.
|
|
41
|
+
*/
|
|
42
|
+
requestedSections = new Map();
|
|
43
|
+
async initialized(params) {
|
|
44
|
+
this.registerForSection = params.register;
|
|
45
|
+
this.fetchSections = params.fetchConfiguration;
|
|
46
|
+
await super.initialized(params);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The `ready` await precedes the emptiness check: the base resolves it at the
|
|
50
|
+
* end of its own initial fetch, so testing the store first calls every
|
|
51
|
+
* language section missing and re-requests what is already on its way.
|
|
52
|
+
*/
|
|
53
|
+
async getConfiguration(language, configuration) {
|
|
54
|
+
await this.ready;
|
|
55
|
+
const section = this.toSectionName(language);
|
|
56
|
+
if (this.settings[section] === undefined) {
|
|
57
|
+
await this.requestSection(section);
|
|
58
|
+
}
|
|
59
|
+
return super.getConfiguration(language, configuration);
|
|
60
|
+
}
|
|
61
|
+
/** Ask about `section` once, sharing the request with any concurrent reader. */
|
|
62
|
+
requestSection(section) {
|
|
63
|
+
const existing = this.requestedSections.get(section);
|
|
64
|
+
if (existing) {
|
|
65
|
+
return existing;
|
|
66
|
+
}
|
|
67
|
+
const request = this.doRequestSection(section);
|
|
68
|
+
this.requestedSections.set(section, request);
|
|
69
|
+
return request;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The hooks are gated on the client having declared `workspace.configuration`.
|
|
73
|
+
* A connection binds them whatever the client said, so their presence is not
|
|
74
|
+
* consent: calling them sends a `client/registerCapability` and a
|
|
75
|
+
* `workspace/configuration` to a client that advertised support for neither,
|
|
76
|
+
* which is entitled to answer either with a method-not-found and may drop the
|
|
77
|
+
* connection.
|
|
78
|
+
*
|
|
79
|
+
* That flag is exact for the fetch and KNOWINGLY coarse for the registration,
|
|
80
|
+
* which the spec governs by
|
|
81
|
+
* `workspace.didChangeConfiguration.dynamicRegistration`. The base registers
|
|
82
|
+
* under `workspace.configuration` alone before any of this runs, so gating
|
|
83
|
+
* the registration on the narrower flag here would withhold a request whose
|
|
84
|
+
* twin has already gone out, sparing the client nothing. A client declaring
|
|
85
|
+
* `workspace.configuration` without dynamic registration is still registered
|
|
86
|
+
* for, by the base and by this; closing that means changing the base's pass,
|
|
87
|
+
* not this gate.
|
|
88
|
+
*
|
|
89
|
+
* Registering before fetching, so an edit landing between the two arrives as
|
|
90
|
+
* a notification instead of being lost; the reverse order drops it.
|
|
91
|
+
*
|
|
92
|
+
* A `null` result is left out of the store rather than written, so the
|
|
93
|
+
* section reads as unset, and no `onConfigurationSectionUpdate` fires — the
|
|
94
|
+
* value goes to the caller that asked for it, and an event would announce a
|
|
95
|
+
* change that is only this provider catching up.
|
|
96
|
+
*/
|
|
97
|
+
async doRequestSection(section) {
|
|
98
|
+
if (!this.workspaceConfig) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
this.registerForSection?.({ section });
|
|
102
|
+
if (!this.fetchSections) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const fetched = await this.fetchSections([{ section }]);
|
|
106
|
+
const value = Array.isArray(fetched) ? fetched[0] : fetched;
|
|
107
|
+
if (value !== null && value !== undefined) {
|
|
108
|
+
this.updateSectionConfiguration(section, value);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=configuration-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration-provider.js","sourceRoot":"","sources":["../../../src/langium/config/configuration-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAuC,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAGvG;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,8BAA+B,SAAQ,4BAA4B;IAC7E;;;;OAIG;IACO,kBAAkB,CAA+D;IACjF,aAAa,CAAoD;IAE3E;;;;;;;;;OASG;IACgB,iBAAiB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE/D,KAAK,CAAC,WAAW,CAAC,MAAsC;QAC9D,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC/C,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACM,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,aAAqB;QACpE,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED,gFAAgF;IACtE,cAAc,CAAC,OAAe;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACZ,OAAO,QAAQ,CAAC;QACnB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACO,KAAK,CAAC,gBAAgB,CAAC,OAAe;QAC7C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;QACV,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACV,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;IACJ,CAAC;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langium/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langium/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/langium/config/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA0ChD;;;;;GAKG;AACH,SAAS,OAAO,CAAC,OAAgB,EAAE,GAA+B;IAC/D,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,IAAI,OAAO,GAAY,OAAO,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,OAAO,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,KAAW,QAAQ,CAgPxB;AAhPD,WAAiB,QAAQ;IAkCtB;;;;;;OAMG;IACH,SAAgB,KAAK,CAAkB,OAAsC;QAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAU,CAAC;QACtC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE9B,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAQ,EAAE;YACtC,IAAI,SAAoC,CAAC;YACzC,IAAI,CAAC;gBACF,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAkB,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACN,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,CAAC;YACD,MAAM,IAAI,GAAW,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACjG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC7B,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACJ,CAAC,CAAC;QAEF,+DAA+D;QAC/D,wEAAwE;QACxE,uEAAuE;QACvE,KAAK,QAAQ,CAAC,KAAK;aACf,IAAI,CAAC,KAAK,IAAI,EAAE;YACd,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7E,KAAK,CAAC,OAAO,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACT,kEAAkE;YAClE,yDAAyD;YACzD,oEAAoE;QACvE,CAAC,CAAC,CAAC;QAEN,QAAQ,CAAC,4BAA4B,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAA+C,EAAE,EAAE;YAC/G,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;YACV,CAAC;YACD,MAAM,OAAO,GACV,aAAa,KAAK,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ;gBACxD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAE,aAAyC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO;YACJ,IAAI,KAAK;gBACN,OAAO,OAAO,CAAC;YAClB,CAAC;YACD,QAAQ,EAAE,OAAO,CAAC,KAAK;SACzB,CAAC;IACL,CAAC;IAnDe,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/langium/config/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/** Render console lines with `render`, as `installNodeLogFileSink` does with Node's `util.format`. */
|
|
10
|
+
export declare function setConsoleFormat(render: (...args: unknown[]) => string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Write each line sent through a {@link CONSOLE_TEE} method, as Langium
|
|
13
|
+
* reports a linker or validator failure, to this copy's log file under a
|
|
14
|
+
* `console` component, then hand it to the method it replaced, even when
|
|
15
|
+
* writing the file fails. The file goes first because the method a stdio
|
|
16
|
+
* connection installs throws once the connection is closed, unless its remote
|
|
17
|
+
* console catches that, as `withHydraniumLspFeatures`'s does.
|
|
18
|
+
*
|
|
19
|
+
* Node only: in a browser no file is written, and a wrapper would only stand
|
|
20
|
+
* between devtools and the call site. Called by the first `LspLogger`, and by
|
|
21
|
+
* `startLanguageServer`, which wraps again where a logger existed before a
|
|
22
|
+
* stdio connection replaced `error`, `warn`, `log` and `debug`. A console
|
|
23
|
+
* replaced after that is not wrapped again, and each copy of this package
|
|
24
|
+
* wraps the console itself, so a file two copies share gets a line twice.
|
|
25
|
+
*/
|
|
26
|
+
export declare function installConsoleTee(): void;
|
|
27
|
+
//# sourceMappingURL=console-tee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-tee.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/console-tee.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAoClF,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,CAE7E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { Format, LEVEL_LABELS, SystemClock } from '@hydranium/protocol';
|
|
10
|
+
import { formatLogArg } from './format-log-arg.js';
|
|
11
|
+
import { teeLogLine } from './logger.js';
|
|
12
|
+
import { hasProcessStderr } from '../../util/environment.js';
|
|
13
|
+
import { isConnectionGoneError } from '../../util/connection-liveness.js';
|
|
14
|
+
/** The `console` methods {@link installConsoleTee} wraps, with the level and label each line is written at. */
|
|
15
|
+
const CONSOLE_TEE = [
|
|
16
|
+
['error', 'error', LEVEL_LABELS.error],
|
|
17
|
+
['warn', 'warn', LEVEL_LABELS.warn],
|
|
18
|
+
['info', 'info', LEVEL_LABELS.info],
|
|
19
|
+
['log', 'info', 'Log'],
|
|
20
|
+
['debug', 'debug', LEVEL_LABELS.debug]
|
|
21
|
+
];
|
|
22
|
+
/** The wrappers this copy installed, so installing again wraps only a method that is none of them. */
|
|
23
|
+
const tees = new WeakSet();
|
|
24
|
+
/**
|
|
25
|
+
* Whether a line is being written or handed on: a console call made meanwhile,
|
|
26
|
+
* by a sink or a library wrapper between two installs, is only handed on.
|
|
27
|
+
*/
|
|
28
|
+
let handling = false;
|
|
29
|
+
/**
|
|
30
|
+
* What a line is stamped with: not a logger's injected clock, whose service a
|
|
31
|
+
* console call made while another service is built could resolve into a cycle.
|
|
32
|
+
*/
|
|
33
|
+
const systemClock = new SystemClock();
|
|
34
|
+
/**
|
|
35
|
+
* How a line's arguments are rendered, Node's `util.format` where the `./node`
|
|
36
|
+
* entry set it: unlike JSON, it runs no ordinary getter and no proxy trap of an
|
|
37
|
+
* argument it inspects, the traps a services container builds a service in.
|
|
38
|
+
*/
|
|
39
|
+
let format;
|
|
40
|
+
/** Render console lines with `render`, as `installNodeLogFileSink` does with Node's `util.format`. */
|
|
41
|
+
export function setConsoleFormat(render) {
|
|
42
|
+
format = render;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Write each line sent through a {@link CONSOLE_TEE} method, as Langium
|
|
46
|
+
* reports a linker or validator failure, to this copy's log file under a
|
|
47
|
+
* `console` component, then hand it to the method it replaced, even when
|
|
48
|
+
* writing the file fails. The file goes first because the method a stdio
|
|
49
|
+
* connection installs throws once the connection is closed, unless its remote
|
|
50
|
+
* console catches that, as `withHydraniumLspFeatures`'s does.
|
|
51
|
+
*
|
|
52
|
+
* Node only: in a browser no file is written, and a wrapper would only stand
|
|
53
|
+
* between devtools and the call site. Called by the first `LspLogger`, and by
|
|
54
|
+
* `startLanguageServer`, which wraps again where a logger existed before a
|
|
55
|
+
* stdio connection replaced `error`, `warn`, `log` and `debug`. A console
|
|
56
|
+
* replaced after that is not wrapped again, and each copy of this package
|
|
57
|
+
* wraps the console itself, so a file two copies share gets a line twice.
|
|
58
|
+
*/
|
|
59
|
+
export function installConsoleTee() {
|
|
60
|
+
if (!hasProcessStderr()) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
for (const [method, level, label] of CONSOLE_TEE) {
|
|
64
|
+
try {
|
|
65
|
+
wrap(method, level, label);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// A host whose console is read-only, or throws when read, keeps its methods, unwritten.
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Replace `console[method]` by a tee writing its lines at `level` under `label`, unless it is already one of this copy's tees. */
|
|
73
|
+
function wrap(method, level, label) {
|
|
74
|
+
const passOn = console[method];
|
|
75
|
+
if (tees.has(passOn)) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const tee = (...args) => {
|
|
79
|
+
if (handling) {
|
|
80
|
+
Reflect.apply(passOn, console, args);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
handling = true;
|
|
84
|
+
try {
|
|
85
|
+
try {
|
|
86
|
+
const [lineLevel, lineLabel] = isDebugLine(args)
|
|
87
|
+
? ['debug', LEVEL_LABELS.debug]
|
|
88
|
+
: level === 'error' && isNodeWarning(args)
|
|
89
|
+
? ['warn', LEVEL_LABELS.warn]
|
|
90
|
+
: [level, label];
|
|
91
|
+
// As `AbstractLogger.formatLinePrefix` starts a line.
|
|
92
|
+
teeLogLine(lineLevel, () => `[${lineLabel.padEnd(5)} - ${Format.timestamp(new Date(systemClock.now()))}] [console] ${formatArgs(args)}`);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// A failing log sink must not propagate, nor keep the line from `passOn`.
|
|
96
|
+
}
|
|
97
|
+
Reflect.apply(passOn, console, args);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
handling = false;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
console[method] = tee;
|
|
104
|
+
tees.add(tee);
|
|
105
|
+
}
|
|
106
|
+
/** `args` as the console prints them, or by {@link formatLogArg} where that throws, as for an error whose stack throws when read. */
|
|
107
|
+
function formatArgs(args) {
|
|
108
|
+
if (format) {
|
|
109
|
+
try {
|
|
110
|
+
return format(...args);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Described below instead.
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return args.map(formatLogArg).join(' ');
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* How Node's default warning handler starts what it prints through
|
|
120
|
+
* `console.error`: the runtime's release name and pid, the warning's code if
|
|
121
|
+
* it has one, and its type, as `(node:42) [DEP0005] DeprecationWarning: `.
|
|
122
|
+
*/
|
|
123
|
+
const NODE_WARNING = /^\([\w-]+:\d+\) (\[\w+\] )?\w*Warning: /;
|
|
124
|
+
/** Whether `args` is a Node process warning, a deprecation say, which is written at `warn`. */
|
|
125
|
+
function isNodeWarning(args) {
|
|
126
|
+
return args.length === 1 && typeof args[0] === 'string' && NODE_WARNING.test(args[0]);
|
|
127
|
+
}
|
|
128
|
+
/** What Langium's `initialized` handler logs when a service's start rejects. */
|
|
129
|
+
const LANGIUM_START_FAILURES = new Set([
|
|
130
|
+
'Error in ConfigurationProvider initialization:',
|
|
131
|
+
'Error in WorkspaceManager initialization:'
|
|
132
|
+
]);
|
|
133
|
+
/**
|
|
134
|
+
* Whether `args` reports routine teardown, which is written at `debug`:
|
|
135
|
+
* Langium's failed configuration or workspace start whose connection has gone.
|
|
136
|
+
* `vscode-languageserver`'s `Sending log message failed` is not, since it
|
|
137
|
+
* carries no reason; `withHydraniumLspFeatures` keeps teardown from printing it.
|
|
138
|
+
*/
|
|
139
|
+
function isDebugLine(args) {
|
|
140
|
+
return args.length === 2 && LANGIUM_START_FAILURES.has(args[0]) && isConnectionGoneError(args[1]);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=console-tee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-tee.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/console-tee.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* Render a log argument for the single string a line carries, to the LSP
|
|
11
|
+
* `window/logMessage` channel and the log file: a string as it is, an error by
|
|
12
|
+
* its stack and causes, another object as JSON, and anything else, what JSON
|
|
13
|
+
* renders as nothing or cannot render included, by its description. Never
|
|
14
|
+
* throws, since a log call that throws loses the line and interrupts its
|
|
15
|
+
* caller. A `%s`-style specifier is not substituted.
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatLogArg(value: unknown): string;
|
|
18
|
+
//# sourceMappingURL=format-log-arg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-log-arg.d.ts","sourceRoot":"","sources":["../../../src/langium/diagnostics/format-log-arg.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAgBnD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { describeErrorWithStack } from '@hydranium/protocol';
|
|
10
|
+
/**
|
|
11
|
+
* Render a log argument for the single string a line carries, to the LSP
|
|
12
|
+
* `window/logMessage` channel and the log file: a string as it is, an error by
|
|
13
|
+
* its stack and causes, another object as JSON, and anything else, what JSON
|
|
14
|
+
* renders as nothing or cannot render included, by its description. Never
|
|
15
|
+
* throws, since a log call that throws loses the line and interrupts its
|
|
16
|
+
* caller. A `%s`-style specifier is not substituted.
|
|
17
|
+
*/
|
|
18
|
+
export function formatLogArg(value) {
|
|
19
|
+
if (typeof value === 'string') {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
if (typeof value === 'object' && value !== null) {
|
|
23
|
+
try {
|
|
24
|
+
// `undefined` where `toJSON` returns nothing.
|
|
25
|
+
const json = value instanceof Error ? undefined : JSON.stringify(value);
|
|
26
|
+
if (json !== undefined) {
|
|
27
|
+
return json;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Cyclic, not serialisable, or a revoked proxy; described below instead.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return describeErrorWithStack(value);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=format-log-arg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-log-arg.js","sourceRoot":"","sources":["../../../src/langium/diagnostics/format-log-arg.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC;YACF,8CAA8C;YAC9C,MAAM,IAAI,GAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACf,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACN,yEAAyE;QAC5E,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
|