@hydranium/core 1.0.0-next.24 → 1.0.0-next.241
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 +22 -17
- package/lib/documents/ast-document-manager.d.ts +219 -122
- package/lib/documents/ast-document-manager.d.ts.map +1 -1
- package/lib/documents/ast-document-manager.js +241 -130
- 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 +79 -0
- package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
- package/lib/documents/dirty-state-tracker.js +69 -0
- package/lib/documents/dirty-state-tracker.js.map +1 -0
- package/lib/documents/document-release-handler.d.ts +179 -0
- package/lib/documents/document-release-handler.d.ts.map +1 -0
- package/lib/documents/document-release-handler.js +283 -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 +49 -0
- package/lib/documents/file-system-task-queue.d.ts.map +1 -0
- package/lib/documents/file-system-task-queue.js +34 -0
- package/lib/documents/file-system-task-queue.js.map +1 -0
- package/lib/documents/hydranium-text-documents.d.ts +399 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +816 -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 +283 -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 +134 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +171 -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.map +1 -1
- 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 +23 -16
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +66 -28
- package/lib/langium/bootstrap.js.map +1 -1
- 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.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.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +10 -3
- package/lib/langium/diagnostics/logger.d.ts.map +1 -1
- package/lib/langium/diagnostics/logger.js +12 -5
- 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 +57 -16
- 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 +32 -5
- package/lib/langium/document-builder/build-pipeline-integration.js.map +1 -1
- package/lib/langium/document-builder/build-session.d.ts.map +1 -1
- package/lib/langium/document-builder/build-session.js.map +1 -1
- package/lib/langium/document-builder/document-builder.d.ts +294 -33
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +477 -61
- 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 +61 -19
- package/lib/langium/integration-services.d.ts.map +1 -1
- package/lib/langium/integration-services.js +10 -5
- 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 +81 -24
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +264 -57
- 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 +29 -4
- 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 +343 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +411 -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 +61 -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 +432 -282
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +504 -438
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +150 -35
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +47 -35
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +25 -4
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +2 -1
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts +23 -0
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/naming/name-separator-validation.js +30 -1
- 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 +9 -2
- 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 +30 -10
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +23 -57
- 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/hydranium-scope-computation.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-computation.js.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.d.ts +48 -13
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +56 -20
- package/lib/langium/scope/hydranium-scope-provider.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.map +1 -1
- package/lib/langium/scope/reference-candidate-provider.js.map +1 -1
- package/lib/langium/scope/scope-extension-service.d.ts.map +1 -1
- package/lib/langium/scope/scope-extension-service.js.map +1 -1
- package/lib/langium/serialization/abstract-serializer.d.ts +11 -20
- package/lib/langium/serialization/abstract-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/abstract-serializer.js +12 -21
- package/lib/langium/serialization/abstract-serializer.js.map +1 -1
- package/lib/langium/serialization/json-serializer.d.ts +1 -1
- package/lib/langium/serialization/json-serializer.d.ts.map +1 -1
- package/lib/langium/serialization/json-serializer.js.map +1 -1
- package/lib/langium/serialization/yaml-serializer.d.ts.map +1 -1
- 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 +21 -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 +77 -26
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +46 -24
- 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 +43 -0
- package/lib/langium/trivia/document-ending-preserver.d.ts.map +1 -0
- package/lib/langium/trivia/document-ending-preserver.js +48 -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 +50 -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.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 +448 -5
- 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 +15 -10
- package/lib/langium/workspace/document-uri-policy.d.ts.map +1 -1
- package/lib/langium/workspace/document-uri-policy.js +7 -5
- 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 +135 -9
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +93 -14
- package/lib/langium/workspace/file-system-provider.js.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts +56 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-langium-document-factory.js +79 -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 +82 -9
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +128 -10
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +26 -3
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +41 -15
- 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 +46 -4
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +60 -5
- package/lib/langium/workspace/langium-documents.js.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.d.ts +1 -8
- package/lib/langium/workspace/persistent-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/persistent-file-system-provider.js +0 -7
- package/lib/langium/workspace/persistent-file-system-provider.js.map +1 -1
- package/lib/{documents → langium/workspace}/self-save-registry.d.ts +38 -7
- package/lib/langium/workspace/self-save-registry.d.ts.map +1 -0
- package/lib/{documents → langium/workspace}/self-save-registry.js +29 -16
- package/lib/langium/workspace/self-save-registry.js.map +1 -0
- package/lib/langium/workspace/virtual-document.d.ts +48 -15
- package/lib/langium/workspace/virtual-document.d.ts.map +1 -1
- package/lib/langium/workspace/virtual-document.js +78 -18
- package/lib/langium/workspace/virtual-document.js.map +1 -1
- package/lib/langium/workspace/write-lock-scope.d.ts +20 -10
- package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
- package/lib/langium/workspace/write-lock-scope.js +12 -4
- package/lib/langium/workspace/write-lock-scope.js.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 +92 -81
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +153 -99
- 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 +54 -0
- package/lib/messages/carriers.d.ts.map +1 -0
- package/lib/messages/carriers.js +62 -0
- package/lib/messages/carriers.js.map +1 -0
- package/lib/messages/index.d.ts +25 -0
- package/lib/messages/index.d.ts.map +1 -0
- package/lib/messages/index.js +25 -0
- package/lib/messages/index.js.map +1 -0
- 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.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 +1 -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/measure-memory.d.ts.map +1 -1
- package/lib/node/measure-memory.js +1 -0
- package/lib/node/measure-memory.js.map +1 -1
- package/lib/node/memory-monitor.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +41 -6
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +109 -49
- package/lib/node/node-file-system-provider.js.map +1 -1
- package/lib/node/profile-capture.d.ts +8 -2
- package/lib/node/profile-capture.d.ts.map +1 -1
- package/lib/node/profile-capture.js +1 -1
- 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 +52 -0
- package/lib/node/rename-over-open-readers.d.ts.map +1 -0
- package/lib/node/rename-over-open-readers.js +66 -0
- package/lib/node/rename-over-open-readers.js.map +1 -0
- 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 +5 -4
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/stdio-launcher.d.ts +6 -5
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +2 -2
- package/lib/node/stdio-launcher.js.map +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/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 +11 -3
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +43 -10
- 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 +14 -0
- package/lib/testing/node/spawned-server.d.ts.map +1 -1
- package/lib/testing/node/spawned-server.js +34 -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 +24 -8
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +27 -6
- package/lib/testing/playwright/server-log-capture.js.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-rename-reporter.js +10 -1
- package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
- package/lib/testing/run-update-pipeline.d.ts +4 -4
- package/lib/testing/run-update-pipeline.d.ts.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 +24 -65
- package/lib/testing/stub-ast-document-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +26 -11
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +78 -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 +115 -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 +7 -6
- package/lib/testing/stub-model-service.d.ts.map +1 -1
- package/lib/testing/stub-model-service.js +4 -4
- package/lib/testing/stub-model-service.js.map +1 -1
- package/lib/testing/stub-project-manager.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/util/connection-liveness.d.ts +7 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +35 -14
- 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 +32 -48
- package/src/documents/ast-document-manager.ts +379 -231
- 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 +130 -0
- package/src/documents/document-release-handler.ts +365 -0
- package/src/documents/document-release-scheduler.ts +121 -0
- package/src/documents/file-system-task-queue.ts +68 -0
- package/src/documents/hydranium-text-documents.ts +931 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +451 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/text-ledger.ts +112 -0
- package/src/documents/version-sync-service.ts +267 -0
- package/src/index.ts +8 -0
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +66 -28
- 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/logger.ts +12 -5
- package/src/langium/diagnostics/lsp-logger.ts +59 -15
- package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
- package/src/langium/document-builder/document-builder.ts +565 -59
- package/src/langium/integration-services.ts +83 -24
- package/src/langium/integrity/integrity-rule.ts +16 -8
- package/src/langium/integrity/integrity-service.ts +287 -62
- 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 +48 -7
- package/src/langium/model-service/client-session.ts +644 -0
- package/src/langium/model-service/index.ts +2 -0
- package/src/langium/model-service/model-events.ts +75 -0
- package/src/langium/model-service/model-service.ts +790 -468
- package/src/langium/module.ts +199 -64
- package/src/langium/naming/name-provider.ts +27 -5
- package/src/langium/naming/name-separator-validation.ts +34 -5
- package/src/langium/project/abstract-project-manager.ts +9 -1
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +45 -14
- package/src/langium/scope/hydranium-scope-provider.ts +60 -22
- package/src/langium/serialization/abstract-serializer.ts +13 -32
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +21 -6
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +104 -37
- package/src/langium/trivia/comment-preserver.ts +1100 -0
- package/src/langium/trivia/document-ending-preserver.ts +55 -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 +54 -0
- package/src/langium/trivia/trivia-service.ts +99 -0
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +523 -10
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/document-uri-policy.ts +15 -10
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +205 -17
- package/src/langium/workspace/hydranium-langium-document-factory.ts +117 -0
- package/src/langium/workspace/hydranium-workspace-lock.ts +86 -2
- package/src/langium/workspace/hydranium-workspace-manager.ts +154 -14
- package/src/langium/workspace/in-memory-file-system-provider.ts +48 -17
- package/src/langium/workspace/index.ts +1 -0
- package/src/langium/workspace/initialize-workspace.ts +43 -5
- package/src/langium/workspace/langium-documents.ts +75 -6
- package/src/langium/workspace/persistent-file-system-provider.ts +1 -8
- package/src/{documents → langium/workspace}/self-save-registry.ts +54 -15
- package/src/langium/workspace/virtual-document.ts +96 -19
- package/src/langium/workspace/write-lock-scope.ts +24 -11
- 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 +187 -108
- 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 +78 -0
- package/src/messages/index.ts +36 -0
- package/src/messages/renderer.ts +212 -0
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +1 -1
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/measure-memory.ts +1 -0
- package/src/node/node-file-system-provider.ts +124 -53
- package/src/node/profile-capture.ts +9 -3
- package/src/node/profiling-run.ts +30 -8
- package/src/node/rename-over-open-readers.ts +78 -0
- package/src/node/socket-launcher.ts +24 -8
- package/src/node/stdio-launcher.ts +8 -7
- 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/index.ts +1 -0
- package/src/testing/node/lsp-harness.ts +2 -0
- package/src/testing/node/lsp-server-connection.ts +66 -12
- package/src/testing/node/scratch-workspace.ts +10 -5
- package/src/testing/node/spawned-server.ts +36 -2
- 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 +45 -11
- package/src/testing/playwright/server-log-rename-reporter.ts +12 -1
- package/src/testing/run-update-pipeline.ts +4 -4
- package/src/testing/stub-ast-document-manager.ts +36 -138
- package/src/testing/stub-document-builder.ts +102 -18
- package/src/testing/stub-hydranium-text-documents.ts +165 -27
- package/src/testing/stub-langium-documents.ts +3 -2
- package/src/testing/stub-model-service.ts +9 -8
- 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 +1 -1
- package/src/util/connection-liveness.ts +37 -14
- 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.map +0 -1
- package/lib/documents/self-save-registry.js.map +0 -1
- package/lib/lsp/instrument-connection.d.ts +0 -36
- package/lib/lsp/instrument-connection.d.ts.map +0 -1
- package/lib/lsp/instrument-connection.js +0 -62
- package/lib/lsp/instrument-connection.js.map +0 -1
- package/lib/node/process-memory.d.ts +0 -66
- package/lib/node/process-memory.d.ts.map +0 -1
- package/lib/node/process-memory.js +0 -252
- package/lib/node/process-memory.js.map +0 -1
- package/src/documents/language-client-text-shadow.ts +0 -175
- package/src/lsp/instrument-connection.ts +0 -66
- package/src/node/process-memory.ts +0 -299
|
@@ -6,17 +6,160 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { ObservableValue, TransferDiagnostic } from '@hydranium/protocol';
|
|
10
|
-
import { DefaultDocumentValidator } from '@hydranium/langium';
|
|
9
|
+
import { defineMessage, describeError, interpolate, messageData, ObservableValue, TransferDiagnostic } from '@hydranium/protocol';
|
|
10
|
+
import { DefaultDocumentValidator, DocumentValidator } from '@hydranium/langium';
|
|
11
|
+
// A VALUE import, for `Diagnostic.getMessageString`: `message` is
|
|
12
|
+
// `string | MarkupContent` in LSP 3.17+, so upstream's own reader is what
|
|
13
|
+
// narrows it rather than a hand-rolled union check here.
|
|
14
|
+
import { Diagnostic } from 'vscode-languageserver-types';
|
|
11
15
|
import { isSyntheticNode } from '../workspace/synthetic.js';
|
|
12
16
|
import { isVirtualUri } from '../workspace/virtual-document.js';
|
|
17
|
+
/**
|
|
18
|
+
* A reference resolved to nothing.
|
|
19
|
+
*
|
|
20
|
+
* **The English is byte-identical to Langium's `DefaultLinker.createLinkingError`
|
|
21
|
+
* sentence, and must stay so.** The identity is attached to a diagnostic Langium
|
|
22
|
+
* already worded, so a divergence here would silently change the text every
|
|
23
|
+
* adopter without a catalogue sees. {@link HydraniumDocumentValidator.processLinkingErrors}
|
|
24
|
+
* attaches it only when the two match exactly, which is also what keeps an
|
|
25
|
+
* adopter's own reworded linking error from being mislabelled as this one.
|
|
26
|
+
*
|
|
27
|
+
* It exists because this is the most-seen validation error in any language built
|
|
28
|
+
* on the framework, and Langium puts its own code in `data.code` rather than on
|
|
29
|
+
* `Diagnostic.code` — so without a framework identity every adopter wanting to
|
|
30
|
+
* render it has to special-case Langium's shape.
|
|
31
|
+
*/
|
|
32
|
+
export const UNRESOLVED_REFERENCE = defineMessage('hydranium/core/unresolved-reference', "Could not resolve reference to {referenceType} named '{refText}'.");
|
|
33
|
+
/**
|
|
34
|
+
* A character no token of the grammar can start with.
|
|
35
|
+
*
|
|
36
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
37
|
+
* `defaultLexerErrorProvider.buildUnexpectedCharactersMessage`, and must stay
|
|
38
|
+
* so** — one layer further out than {@link UNRESOLVED_REFERENCE}, whose sentence
|
|
39
|
+
* is Langium's. Langium words neither: `processLexingErrors` copies
|
|
40
|
+
* `lexerDiagnostic.message` through untouched, so the text an adopter sees today
|
|
41
|
+
* is produced two dependencies down and is the only thing this identity may
|
|
42
|
+
* claim to be. {@link HydraniumDocumentValidator.identifyLexingError} attaches
|
|
43
|
+
* it only when the two match exactly, which is also what keeps a custom lexer's
|
|
44
|
+
* own diagnostics — Langium admits any of them through `lexerReport` — from
|
|
45
|
+
* being mislabelled as this one.
|
|
46
|
+
*
|
|
47
|
+
* It exists because a lexing error is the FIRST message a user of a new language
|
|
48
|
+
* sees and the one an adopter cannot reach: every other diagnostic worth
|
|
49
|
+
* translating either carries an identity already or is raised by adopter code,
|
|
50
|
+
* while this one arrives with a Langium `data.code` naming a KIND and no
|
|
51
|
+
* parameters at all — so a catalogue had nothing to key on and nothing to
|
|
52
|
+
* interpolate.
|
|
53
|
+
*
|
|
54
|
+
* `skipped` rather than `length`, matching what the sentence says the number
|
|
55
|
+
* means: chevrotain reports how many characters the lexer discarded to recover,
|
|
56
|
+
* which for a single stray character is one and for a run of them is the run.
|
|
57
|
+
*/
|
|
58
|
+
export const UNEXPECTED_CHARACTER = defineMessage('hydranium/core/unexpected-character', 'unexpected character: ->{character}<- at offset: {offset}, skipped {skipped} characters.');
|
|
59
|
+
/**
|
|
60
|
+
* A token the grammar does not admit at this position.
|
|
61
|
+
*
|
|
62
|
+
* **The English is byte-identical to Langium's
|
|
63
|
+
* `LangiumParserErrorMessageProvider.buildMismatchTokenMessage`, and must stay
|
|
64
|
+
* so**, on the same rule as {@link UNRESOLVED_REFERENCE}.
|
|
65
|
+
*
|
|
66
|
+
* `expected` is a token type name, which is grammar vocabulary rather than
|
|
67
|
+
* translatable text — only the frame around it is. Promoting it into the code
|
|
68
|
+
* instead would make the catalogue as large as the grammar.
|
|
69
|
+
*/
|
|
70
|
+
export const UNEXPECTED_TOKEN = defineMessage('hydranium/core/unexpected-token', "Expecting token of type '{expected}' but found `{found}`.");
|
|
71
|
+
/**
|
|
72
|
+
* Input left over once the entry rule had matched.
|
|
73
|
+
*
|
|
74
|
+
* **The English is byte-identical to Langium's
|
|
75
|
+
* `LangiumParserErrorMessageProvider.buildNotAllInputParsedMessage`, and must
|
|
76
|
+
* stay so.**
|
|
77
|
+
*/
|
|
78
|
+
export const TRAILING_INPUT = defineMessage('hydranium/core/trailing-input', 'Expecting end of file but found `{found}`.');
|
|
79
|
+
/**
|
|
80
|
+
* A mode-popping token reached with nothing on the lexer's mode stack.
|
|
81
|
+
*
|
|
82
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
83
|
+
* `defaultLexerErrorProvider.buildUnableToPopLexerModeMessage`, and must stay
|
|
84
|
+
* so**, the closing clause running on without punctuation exactly as upstream
|
|
85
|
+
* writes it.
|
|
86
|
+
*
|
|
87
|
+
* Reachable only from a multi-mode lexer, which a grammar opts into through a
|
|
88
|
+
* custom token builder.
|
|
89
|
+
*/
|
|
90
|
+
export const UNPOPPABLE_LEXER_MODE = defineMessage('hydranium/core/unpoppable-lexer-mode', 'Unable to pop Lexer Mode after encountering Token ->{image}<- The Mode Stack is empty');
|
|
91
|
+
/**
|
|
92
|
+
* A dedent that lines up with no enclosing indentation level.
|
|
93
|
+
*
|
|
94
|
+
* **The English is byte-identical to LANGIUM's `IndentationAwareTokenBuilder`,
|
|
95
|
+
* and must stay so** — the one lexing sentence Langium words itself rather than
|
|
96
|
+
* relaying from chevrotain, which is why it renders through no
|
|
97
|
+
* `ILexerErrorMessageProvider` and an adopter cannot reach it by replacing one.
|
|
98
|
+
*
|
|
99
|
+
* `stack` is the indentation stack as the template literal upstream stringifies
|
|
100
|
+
* it, comma-joined: structure would have to survive {@link MessageParams}, which
|
|
101
|
+
* holds scalars, and a translation has nothing to say about the numbers anyway.
|
|
102
|
+
*/
|
|
103
|
+
export const INVALID_DEDENT = defineMessage('hydranium/core/invalid-dedent', 'Invalid dedent level {level} at offset: {offset}. Current indentation stack: {stack}');
|
|
104
|
+
/**
|
|
105
|
+
* A position where none of a rule's alternatives can start.
|
|
106
|
+
*
|
|
107
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
108
|
+
* `defaultParserErrorProvider.buildNoViableAltMessage`, and must stay so** —
|
|
109
|
+
* one layer further out than {@link UNEXPECTED_TOKEN}, because Langium overrides
|
|
110
|
+
* only two of the four parser sentences and passes this one straight through.
|
|
111
|
+
*
|
|
112
|
+
* `sequences` is the token-sequence list chevrotain generated, carried whole
|
|
113
|
+
* rather than as structure: {@link MessageParams} holds scalars, and the list is
|
|
114
|
+
* token names in any case, so only the frame around it is translatable.
|
|
115
|
+
*/
|
|
116
|
+
export const NO_VIABLE_ALTERNATIVE = defineMessage('hydranium/core/no-viable-alternative', "Expecting: one of these possible Token sequences:\n{sequences}\nbut found: '{found}'");
|
|
117
|
+
/**
|
|
118
|
+
* A repetition that had to match at least once and matched nothing.
|
|
119
|
+
*
|
|
120
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
121
|
+
* `defaultParserErrorProvider.buildEarlyExitMessage`, and must stay so**,
|
|
122
|
+
* including the doubled colon after `sequences::`, which is upstream's and not a
|
|
123
|
+
* typo to repair here — a divergence would silently stop the identity attaching.
|
|
124
|
+
*
|
|
125
|
+
* Named for the empty repetition rather than for chevrotain's `EarlyExit`, which
|
|
126
|
+
* describes its own control flow rather than the reader's problem.
|
|
127
|
+
*/
|
|
128
|
+
export const MISSING_ITERATION = defineMessage('hydranium/core/missing-iteration', "Expecting: expecting at least one iteration which starts with one of these possible Token sequences::\n <{sequences}>\nbut found: '{found}'");
|
|
129
|
+
/**
|
|
130
|
+
* The two sentences whose only free parameter is a generated list, in the order
|
|
131
|
+
* {@link HydraniumDocumentValidator.identifyParsingError} tries them. Order is
|
|
132
|
+
* free: their frames share a prefix but diverge before the list begins, so at
|
|
133
|
+
* most one can match.
|
|
134
|
+
*/
|
|
135
|
+
const SEQUENCE_LISTING_MESSAGES = [NO_VIABLE_ALTERNATIVE, MISSING_ITERATION];
|
|
136
|
+
/**
|
|
137
|
+
* Splits a template into alternating frame and placeholder NAME, for
|
|
138
|
+
* {@link HydraniumDocumentValidator.sliceFramed}. The capturing group is what
|
|
139
|
+
* keeps the names in the result rather than discarding them.
|
|
140
|
+
*/
|
|
141
|
+
const PLACEHOLDER_CAPTURE = /\{([^}]+)\}/;
|
|
142
|
+
/**
|
|
143
|
+
* Langium's own `data.code` values for a diagnostic that came out of the lexer.
|
|
144
|
+
*
|
|
145
|
+
* All four severities, not just the error one: `lexerReport` admits warnings and
|
|
146
|
+
* below, and a token builder that downgrades a stray character still produces
|
|
147
|
+
* the same sentence. Gating on the error code alone would leave the identity off
|
|
148
|
+
* a message that is word-for-word the one it names.
|
|
149
|
+
*/
|
|
150
|
+
const LEXING_CODES = new Set([
|
|
151
|
+
DocumentValidator.LexingError,
|
|
152
|
+
DocumentValidator.LexingWarning,
|
|
153
|
+
DocumentValidator.LexingInfo,
|
|
154
|
+
DocumentValidator.LexingHint
|
|
155
|
+
]);
|
|
13
156
|
/**
|
|
14
157
|
* Default validator behaviour for `@hydranium/core` consumers:
|
|
15
158
|
*
|
|
16
159
|
* - **Skip-validation hook** via the virtual {@link shouldSkipValidation}
|
|
17
160
|
* predicate, which adopters override to compose additional skip reasons.
|
|
18
161
|
* - **Diagnostic mapping** to {@link TransferDiagnostic}-shaped
|
|
19
|
-
* {@link
|
|
162
|
+
* {@link AstDiagnostic}: every emitted diagnostic carries the AST
|
|
20
163
|
* node's path (built via Langium's `AstNodeLocator`) plus the optional
|
|
21
164
|
* offending property name.
|
|
22
165
|
* - **Optional timing wrap** on `validateDocument`, on by default.
|
|
@@ -24,6 +167,13 @@ import { isVirtualUri } from '../workspace/virtual-document.js';
|
|
|
24
167
|
export class HydraniumDocumentValidator extends DefaultDocumentValidator {
|
|
25
168
|
tracer;
|
|
26
169
|
astNodeLocator;
|
|
170
|
+
reflection;
|
|
171
|
+
lexer;
|
|
172
|
+
/**
|
|
173
|
+
* {@link tokenTypeNames}' answer. Nothing invalidates it: the vocabulary
|
|
174
|
+
* comes from the grammar, which is fixed once the DI tree is composed.
|
|
175
|
+
*/
|
|
176
|
+
expectedNames;
|
|
27
177
|
logLevel;
|
|
28
178
|
logAfterMs;
|
|
29
179
|
validateVirtualDocuments;
|
|
@@ -32,6 +182,8 @@ export class HydraniumDocumentValidator extends DefaultDocumentValidator {
|
|
|
32
182
|
super(services);
|
|
33
183
|
this.tracer = services.shared.Tracer.for(options.logName ?? 'DocumentValidator').trace('instantiated');
|
|
34
184
|
this.astNodeLocator = services.workspace.AstNodeLocator;
|
|
185
|
+
this.reflection = services.shared.AstReflection;
|
|
186
|
+
this.lexer = services.parser.Lexer;
|
|
35
187
|
this.logLevel = ObservableValue.from(options.logLevel ?? 'debug');
|
|
36
188
|
this.logAfterMs = ObservableValue.from(options.logAfterMs ?? 20);
|
|
37
189
|
this.validateVirtualDocuments = ObservableValue.from(options.validateVirtualDocuments ?? false);
|
|
@@ -48,15 +200,224 @@ export class HydraniumDocumentValidator extends DefaultDocumentValidator {
|
|
|
48
200
|
}
|
|
49
201
|
const level = this.logLevel.value;
|
|
50
202
|
if (level === 'off') {
|
|
51
|
-
return
|
|
203
|
+
return this.validateAndIdentify(document, options, cancelToken);
|
|
52
204
|
}
|
|
53
205
|
// `level` is narrowed to `LogLevel` past the early-return.
|
|
54
206
|
return this.tracer
|
|
55
207
|
.withUri(document.uri.toString())
|
|
56
|
-
.time('validateDocument', () =>
|
|
208
|
+
.time('validateDocument', () => this.validateAndIdentify(document, options, cancelToken), level, {
|
|
57
209
|
logAfterMs: this.logAfterMs.value
|
|
58
210
|
});
|
|
59
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Langium's validation pass, plus the framework identity on the lexing and
|
|
214
|
+
* parsing diagnostics it produced.
|
|
215
|
+
*
|
|
216
|
+
* **Here rather than in an override of `processLexingErrors` /
|
|
217
|
+
* `processParsingErrors`, and the reason is that neither seam can see what
|
|
218
|
+
* the identity needs.** Langium hands them a `ParseResult`, which carries the
|
|
219
|
+
* AST and the error lists but not the source text — and the offending
|
|
220
|
+
* CHARACTER, or the offending TOKEN, is the parameter a translation exists to
|
|
221
|
+
* interpolate. The document does carry it, and this is the innermost point
|
|
222
|
+
* that still holds one.
|
|
223
|
+
*
|
|
224
|
+
* Correlating the finished diagnostics back to the `ParseResult`'s error
|
|
225
|
+
* lists positionally is the alternative, and it is unsound for the parsing
|
|
226
|
+
* half: `processParsingErrors` DROPS an error whose token offsets are `NaN`
|
|
227
|
+
* and whose exception carries no `previousToken`, so the two lists differ in
|
|
228
|
+
* length exactly when recovery has been at work.
|
|
229
|
+
*
|
|
230
|
+
* Inside the timing span rather than around it, so the line accounts for the
|
|
231
|
+
* whole pass.
|
|
232
|
+
*/
|
|
233
|
+
async validateAndIdentify(document, options, cancelToken) {
|
|
234
|
+
const diagnostics = await super.validateDocument(document, options, cancelToken);
|
|
235
|
+
// Mapped in place over the array Langium built, rather than filtered and
|
|
236
|
+
// re-concatenated: the publish order is the diagnostic order and a
|
|
237
|
+
// reordering would move a squiggle's entry in the problems list.
|
|
238
|
+
// Each pass guards on its own `data.code`, so at most one can claim a
|
|
239
|
+
// given diagnostic and the order between them carries no meaning.
|
|
240
|
+
for (let index = 0; index < diagnostics.length; index++) {
|
|
241
|
+
diagnostics[index] = this.identifyLexingError(document, diagnostics[index]);
|
|
242
|
+
diagnostics[index] = this.identifyParsingError(document, diagnostics[index]);
|
|
243
|
+
}
|
|
244
|
+
return diagnostics;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Add whichever lexing identity renders `diagnostic`'s sentence, or return it
|
|
248
|
+
* untouched when none of them does — a custom lexer's own report, which
|
|
249
|
+
* Langium admits through `lexerReport`, being the case that reaches the end.
|
|
250
|
+
*
|
|
251
|
+
* The parameters come from the diagnostic's own RANGE, not from
|
|
252
|
+
* `parseResult.lexerErrors`. Both hold the same numbers, and the range is the
|
|
253
|
+
* one that needs no assumption about upstream: correlating the two lists
|
|
254
|
+
* would depend on Langium appending one diagnostic per lexer error in order,
|
|
255
|
+
* which is true today and is an internal of the method being wrapped.
|
|
256
|
+
*
|
|
257
|
+
* **The format-and-compare is the whole discriminator, and it validates the
|
|
258
|
+
* reconstruction as well as the identity.** A range that did not round-trip
|
|
259
|
+
* to the offset chevrotain reported would produce a different sentence and be
|
|
260
|
+
* declined, so a wrong parameter set can never be attached to a right-looking
|
|
261
|
+
* message.
|
|
262
|
+
*/
|
|
263
|
+
identifyLexingError(document, diagnostic) {
|
|
264
|
+
const data = diagnostic.data;
|
|
265
|
+
if (!LEXING_CODES.has(data?.code)) {
|
|
266
|
+
return diagnostic;
|
|
267
|
+
}
|
|
268
|
+
const text = document.textDocument;
|
|
269
|
+
const message = Diagnostic.getMessageString(diagnostic);
|
|
270
|
+
const offset = text.offsetAt(diagnostic.range.start);
|
|
271
|
+
const stray = {
|
|
272
|
+
character: text.getText().charAt(offset),
|
|
273
|
+
offset,
|
|
274
|
+
skipped: text.offsetAt(diagnostic.range.end) - offset
|
|
275
|
+
};
|
|
276
|
+
if (message === UNEXPECTED_CHARACTER.format(stray)) {
|
|
277
|
+
return this.identified(diagnostic, UNEXPECTED_CHARACTER, stray);
|
|
278
|
+
}
|
|
279
|
+
// The mode-pop error's range spans the offending token exactly, upstream
|
|
280
|
+
// reporting its `startOffset` with the image's own length.
|
|
281
|
+
const image = text.getText(diagnostic.range);
|
|
282
|
+
if (message === UNPOPPABLE_LEXER_MODE.format({ image })) {
|
|
283
|
+
return this.identified(diagnostic, UNPOPPABLE_LEXER_MODE, { image });
|
|
284
|
+
}
|
|
285
|
+
// `level` and `stack` are lexer state that reaches no field here, so they
|
|
286
|
+
// are sliced; `offset` is given, which is what anchors the slice.
|
|
287
|
+
const dedent = this.sliceFramed(message, INVALID_DEDENT, { offset });
|
|
288
|
+
return dedent === undefined ? diagnostic : this.identified(diagnostic, INVALID_DEDENT, dedent);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Add whichever parser identity renders `diagnostic`'s sentence, or return it
|
|
292
|
+
* untouched when none of them does — an adopter that replaced the parser
|
|
293
|
+
* error-message provider being the case that reaches the last branch.
|
|
294
|
+
*
|
|
295
|
+
* `found` comes from the diagnostic's own RANGE, for the same reason
|
|
296
|
+
* {@link identifyLexingError} reads its parameters there. A token whose
|
|
297
|
+
* offsets chevrotain could not report collapses to a zero-width range, which
|
|
298
|
+
* yields the empty string the sentence already renders for it.
|
|
299
|
+
*
|
|
300
|
+
* **`expected` is recovered by SEARCHING the vocabulary, because nothing
|
|
301
|
+
* carries it.** Chevrotain hands the expected token type to the message
|
|
302
|
+
* provider and keeps it on neither the exception nor the diagnostic, so the
|
|
303
|
+
* only structured source left is the grammar's own vocabulary: every token
|
|
304
|
+
* type is offered to the same `format` the identity renders with, and the one
|
|
305
|
+
* that reproduces the message supplies the parameter. Matching it out of the
|
|
306
|
+
* prose instead would derive a parameter from a sentence that a Langium
|
|
307
|
+
* reword can change without warning. Two distinct names cannot render one
|
|
308
|
+
* sentence, so the match is unique where it exists.
|
|
309
|
+
*/
|
|
310
|
+
identifyParsingError(document, diagnostic) {
|
|
311
|
+
const data = diagnostic.data;
|
|
312
|
+
if (data?.code !== DocumentValidator.ParsingError) {
|
|
313
|
+
return diagnostic;
|
|
314
|
+
}
|
|
315
|
+
const message = Diagnostic.getMessageString(diagnostic);
|
|
316
|
+
const found = document.textDocument.getText(diagnostic.range);
|
|
317
|
+
if (message === TRAILING_INPUT.format({ found })) {
|
|
318
|
+
return this.identified(diagnostic, TRAILING_INPUT, { found });
|
|
319
|
+
}
|
|
320
|
+
const expected = this.tokenTypeNames().find(name => UNEXPECTED_TOKEN.format({ expected: name, found }) === message);
|
|
321
|
+
if (expected !== undefined) {
|
|
322
|
+
return this.identified(diagnostic, UNEXPECTED_TOKEN, { expected, found });
|
|
323
|
+
}
|
|
324
|
+
for (const definition of SEQUENCE_LISTING_MESSAGES) {
|
|
325
|
+
const params = this.sliceFramed(message, definition, { found });
|
|
326
|
+
if (params !== undefined) {
|
|
327
|
+
return this.identified(diagnostic, definition, params);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return diagnostic;
|
|
331
|
+
}
|
|
332
|
+
/** `diagnostic` carrying `definition`'s identity, over whatever `data` it already had. */
|
|
333
|
+
identified(diagnostic, definition, ...params) {
|
|
334
|
+
// Merged OVER the existing data, so Langium's `code` survives for the
|
|
335
|
+
// readers that switch on it — `stopAfterParsingErrors` is one, and the
|
|
336
|
+
// GLSP head's read-only decision is another.
|
|
337
|
+
const data = diagnostic.data;
|
|
338
|
+
return { ...diagnostic, code: definition.code, data: { ...data, ...messageData(definition, ...params) } };
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* `definition`'s parameters as they appear in `message`, taking the ones in
|
|
342
|
+
* `known` as given, or `undefined` when `message` is not that sentence.
|
|
343
|
+
*
|
|
344
|
+
* **The only parameters in this file taken OUT of the prose rather than
|
|
345
|
+
* derived and checked against it, and the bound on that is what `known`
|
|
346
|
+
* is for.** A generated token-sequence list, a lexer's indentation stack: for
|
|
347
|
+
* these there is no finite candidate set to offer to `format` the way a token
|
|
348
|
+
* type name can be, and no structured field carries them. What keeps the read
|
|
349
|
+
* honest is that everything else in the sentence is either a fixed literal or
|
|
350
|
+
* a parameter the caller derived independently, so the frame either matches
|
|
351
|
+
* exactly or the sentence is declined.
|
|
352
|
+
*
|
|
353
|
+
* **The trailing format-and-compare is load-bearing once more than one
|
|
354
|
+
* parameter is unknown.** Each is captured up to the NEXT fixed separator, so
|
|
355
|
+
* a separator that also occurs inside a value would cut early — re-rendering
|
|
356
|
+
* catches that, where for a single unknown between two affixes it could not
|
|
357
|
+
* fail. Two adjacent placeholders are declined outright: nothing marks the
|
|
358
|
+
* boundary, so no capture is recoverable.
|
|
359
|
+
*
|
|
360
|
+
* The frame is split off the declaration's own `text`, so it cannot drift
|
|
361
|
+
* from the sentence `format` renders.
|
|
362
|
+
*/
|
|
363
|
+
sliceFramed(message, definition, known) {
|
|
364
|
+
// `split` with a capturing group interleaves literals and placeholder
|
|
365
|
+
// names, so even indices are frame and odd ones are parameters.
|
|
366
|
+
const parts = definition.text.split(PLACEHOLDER_CAPTURE);
|
|
367
|
+
const params = { ...known };
|
|
368
|
+
let cursor = 0;
|
|
369
|
+
for (let index = 0; index < parts.length; index += 2) {
|
|
370
|
+
const literal = parts[index];
|
|
371
|
+
if (!message.startsWith(literal, cursor)) {
|
|
372
|
+
return undefined;
|
|
373
|
+
}
|
|
374
|
+
cursor += literal.length;
|
|
375
|
+
const name = parts[index + 1];
|
|
376
|
+
if (name === undefined) {
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
const given = params[name];
|
|
380
|
+
if (given !== undefined) {
|
|
381
|
+
const rendered = String(given);
|
|
382
|
+
if (!message.startsWith(rendered, cursor)) {
|
|
383
|
+
return undefined;
|
|
384
|
+
}
|
|
385
|
+
cursor += rendered.length;
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
const separator = parts[index + 2];
|
|
389
|
+
const trailing = parts[index + 3] === undefined;
|
|
390
|
+
if (separator === '' && !trailing) {
|
|
391
|
+
return undefined;
|
|
392
|
+
}
|
|
393
|
+
const at = trailing && separator === '' ? message.length : message.indexOf(separator, cursor);
|
|
394
|
+
if (at < cursor) {
|
|
395
|
+
return undefined;
|
|
396
|
+
}
|
|
397
|
+
params[name] = message.slice(cursor, at);
|
|
398
|
+
cursor = at;
|
|
399
|
+
}
|
|
400
|
+
if (cursor !== message.length || interpolate(definition.text, params) !== message) {
|
|
401
|
+
return undefined;
|
|
402
|
+
}
|
|
403
|
+
// Narrowing only: every placeholder the template names was either given or
|
|
404
|
+
// captured above, which is precisely what `ParamsOf` requires.
|
|
405
|
+
return params;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Every token type name the grammar declares, as
|
|
409
|
+
* {@link identifyParsingError} candidates.
|
|
410
|
+
*
|
|
411
|
+
* Read off the lexer, whose `definition` the `Lexer` INTERFACE declares —
|
|
412
|
+
* the parser holds the same vocabulary only behind Langium's default class,
|
|
413
|
+
* where an adopter's replacement need not keep it. A token type the parser
|
|
414
|
+
* expects but the lexer does not declare yields no match, which declines the
|
|
415
|
+
* identity rather than attaching a wrong one.
|
|
416
|
+
*/
|
|
417
|
+
tokenTypeNames() {
|
|
418
|
+
this.expectedNames ??= Object.keys(this.lexer.definition);
|
|
419
|
+
return this.expectedNames;
|
|
420
|
+
}
|
|
60
421
|
/**
|
|
61
422
|
* Skip validation for a node **and its children** when
|
|
62
423
|
* {@link shouldSkipValidation} returns true.
|
|
@@ -78,6 +439,88 @@ export class HydraniumDocumentValidator extends DefaultDocumentValidator {
|
|
|
78
439
|
shouldSkipValidation(node) {
|
|
79
440
|
return !this.validateSyntheticNodes.value && isSyntheticNode(node);
|
|
80
441
|
}
|
|
442
|
+
/**
|
|
443
|
+
* Langium's linking-error pass, plus the framework identity on each
|
|
444
|
+
* diagnostic it produced.
|
|
445
|
+
*
|
|
446
|
+
* Langium puts its own `linking-error` marker in `data.code` and leaves
|
|
447
|
+
* `Diagnostic.code` unset, so nothing identifies the message on a surface
|
|
448
|
+
* that drops `data` — which is every editor surface. This adds the framework
|
|
449
|
+
* identity to both `code` and `data.hydranium` while LEAVING `data.code` in
|
|
450
|
+
* place: `stopAfterLinkingErrors` and Langium's code-action dispatch both
|
|
451
|
+
* read it.
|
|
452
|
+
*
|
|
453
|
+
* **The identity is attached only when the message is the one
|
|
454
|
+
* {@link UNRESOLVED_REFERENCE} renders.** Two other sentences reach this
|
|
455
|
+
* list: the linker's exception form, raised when resolution itself throws,
|
|
456
|
+
* and whatever an adopter overriding `createLinkingError` chose. Labelling
|
|
457
|
+
* either would make a catalogue render the wrong sentence — and for the
|
|
458
|
+
* exception form it would discard the underlying cause. Comparing against
|
|
459
|
+
* the locally rendered English is what discriminates; there is no structural
|
|
460
|
+
* field that does.
|
|
461
|
+
*/
|
|
462
|
+
processLinkingErrors(document, diagnostics, options) {
|
|
463
|
+
const from = diagnostics.length;
|
|
464
|
+
super.processLinkingErrors(document, diagnostics, options);
|
|
465
|
+
for (let index = from; index < diagnostics.length; index++) {
|
|
466
|
+
diagnostics[index] = this.identifyLinkingError(diagnostics[index]);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Add the {@link UNRESOLVED_REFERENCE} identity to one linking diagnostic,
|
|
471
|
+
* or return it untouched when its message is not the sentence that identity
|
|
472
|
+
* renders.
|
|
473
|
+
*
|
|
474
|
+
* `refText` comes from the `data` Langium populated; `referenceType` is not
|
|
475
|
+
* in it, so it is recovered the same way `createLinkingError` produced it —
|
|
476
|
+
* through the reflection, from the container type and property.
|
|
477
|
+
*/
|
|
478
|
+
identifyLinkingError(diagnostic) {
|
|
479
|
+
const data = diagnostic.data;
|
|
480
|
+
if (typeof data?.refText !== 'string' || typeof data.containerType !== 'string' || typeof data.property !== 'string') {
|
|
481
|
+
return diagnostic;
|
|
482
|
+
}
|
|
483
|
+
const referenceType = this.referenceTypeOf(data.containerType, data.property, data.refText);
|
|
484
|
+
if (referenceType === undefined) {
|
|
485
|
+
return diagnostic;
|
|
486
|
+
}
|
|
487
|
+
const params = { referenceType, refText: data.refText };
|
|
488
|
+
if (diagnostic.message !== UNRESOLVED_REFERENCE.format(params)) {
|
|
489
|
+
return diagnostic;
|
|
490
|
+
}
|
|
491
|
+
// Merged OVER Langium's data rather than replacing it, so `data.code`
|
|
492
|
+
// survives for the readers that switch on it.
|
|
493
|
+
return { ...diagnostic, code: UNRESOLVED_REFERENCE.code, data: { ...data, ...messageData(UNRESOLVED_REFERENCE, params) } };
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* The declared target type of the reference this diagnostic came from, or
|
|
497
|
+
* `undefined` when the reflection cannot name one.
|
|
498
|
+
*
|
|
499
|
+
* **The lookup can throw, and that is the reason this is a method rather
|
|
500
|
+
* than an inline call.** `AbstractAstReflection.getReferenceType` raises on
|
|
501
|
+
* an unknown container `$type` and on a property that is not a reference —
|
|
502
|
+
* and the linking error whose type it cannot name is the one most likely to
|
|
503
|
+
* reach here, because `DefaultLinker` catches its OWN failed lookup and
|
|
504
|
+
* turns it into the exception-form message. Rethrowing would take
|
|
505
|
+
* `validateDocument` with it, since Langium wraps `processLinkingErrors` in
|
|
506
|
+
* no try: a diagnostic Langium degraded gracefully would become a failed
|
|
507
|
+
* build. Declining is also the right answer on the merits — a reference
|
|
508
|
+
* whose type cannot be named is not the message
|
|
509
|
+
* {@link UNRESOLVED_REFERENCE} claims.
|
|
510
|
+
*/
|
|
511
|
+
referenceTypeOf(containerType, property, refText) {
|
|
512
|
+
try {
|
|
513
|
+
return this.reflection.getReferenceType({
|
|
514
|
+
container: { $type: containerType },
|
|
515
|
+
property,
|
|
516
|
+
reference: { $refText: refText }
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
catch (err) {
|
|
520
|
+
this.tracer.debug(`cannot name the reference type for ${containerType}.${property}: ${describeError(err)}`);
|
|
521
|
+
return undefined;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
81
524
|
toDiagnostic(severity, message, info) {
|
|
82
525
|
const base = super.toDiagnostic(severity, message, info);
|
|
83
526
|
const node = info.node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-validator.js","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-validator.js","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,14 @@ import { type Tracer } from '@hydranium/protocol';
|
|
|
10
10
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
11
11
|
import { type ServerLanguageServices } from '../language-module.js';
|
|
12
12
|
export type ValidationContributionCollectorOptions = LogNameOptions;
|
|
13
|
+
/**
|
|
14
|
+
* The validation-collector slot. Empty because the service registers checks in
|
|
15
|
+
* its constructor and nothing calls it; typing the slot by the class would stop
|
|
16
|
+
* an adopter's subclass from a second package copy satisfying it. The cost: any
|
|
17
|
+
* non-null value satisfies it, so a mis-bound slot compiles and registers no check.
|
|
18
|
+
*/
|
|
19
|
+
export interface ValidationContributionCollector {
|
|
20
|
+
}
|
|
13
21
|
/**
|
|
14
22
|
* Per-language eager collector that wires `ValidationCheckContribution`s
|
|
15
23
|
* declared under `services.validation.checks` into Langium's native
|
|
@@ -27,7 +35,7 @@ export type ValidationContributionCollectorOptions = LogNameOptions;
|
|
|
27
35
|
* DI proxy. That is what gets the checks into the registry before Langium
|
|
28
36
|
* reaches the `Validated` phase — nothing else constructs this service.
|
|
29
37
|
*/
|
|
30
|
-
export declare class ValidationContributionCollector {
|
|
38
|
+
export declare class DefaultValidationContributionCollector implements ValidationContributionCollector {
|
|
31
39
|
protected readonly tracer: Tracer;
|
|
32
40
|
constructor(services: ServerLanguageServices, options?: ValidationContributionCollectorOptions);
|
|
33
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-contribution-collector.d.ts","sourceRoot":"","sources":["../../../src/langium/validation/validation-contribution-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,MAAM,sCAAsC,GAAG,cAAc,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,+BAA+B;
|
|
1
|
+
{"version":3,"file":"validation-contribution-collector.d.ts","sourceRoot":"","sources":["../../../src/langium/validation/validation-contribution-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,MAAM,sCAAsC,GAAG,cAAc,CAAC;AAEpE;;;;;GAKG;AAEH,MAAM,WAAW,+BAA+B;CAAG;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sCAAuC,YAAW,+BAA+B;IAC3F,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YAAY,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAE,sCAA2C,EASjG;CACH"}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* DI proxy. That is what gets the checks into the registry before Langium
|
|
24
24
|
* reaches the `Validated` phase — nothing else constructs this service.
|
|
25
25
|
*/
|
|
26
|
-
export class
|
|
26
|
+
export class DefaultValidationContributionCollector {
|
|
27
27
|
tracer;
|
|
28
28
|
constructor(services, options = {}) {
|
|
29
29
|
this.tracer = services.shared.Tracer.for(options.logName ?? 'ValidationContributions').trace('instantiated');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-contribution-collector.js","sourceRoot":"","sources":["../../../src/langium/validation/validation-contribution-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;
|
|
1
|
+
{"version":3,"file":"validation-contribution-collector.js","sourceRoot":"","sources":["../../../src/langium/validation/validation-contribution-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAmBlF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sCAAsC;IAC7B,MAAM,CAAS;IAElC,YAAY,QAAgC,EAAE,OAAO,GAA2C,EAAE;QAC/F,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,yBAAyB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,6BAA6B,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACvF,gEAAgE;QAChE,oEAAoE;QACpE,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;QACxD,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,YAAY,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;IACJ,CAAC;CACH;AAED;;;;GAIG;AACH,SAAS,6BAA6B,CAAC,eAAmC;IACvE,OAAO;QACJ,QAAQ,CAAI,MAA2B,EAAE,OAAoC,EAAE,QAA6B;YACzG,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;KACH,CAAC;AACL,CAAC"}
|
|
@@ -43,16 +43,17 @@ export declare function findRealpathDivergence(uri: URI | string, fs: RealpathCa
|
|
|
43
43
|
* - {@link canonicalUri} — TOTAL: maps any URI to the single canonical *string*
|
|
44
44
|
* the framework keys a document by, regardless of whether the file exists.
|
|
45
45
|
* This is the form that MUST match the adopter's `LangiumDocuments` keying so
|
|
46
|
-
* the text store,
|
|
47
|
-
* (`AstDocumentManager.onUpdate` / `onSave` / `onClientClosed`), and
|
|
46
|
+
* the text store, `ModelService`'s event filters, and
|
|
48
47
|
* `LangiumDocuments` lookups all agree on one identity for the same file. Use
|
|
49
48
|
* for keying, comparison, and the text-store ↔ document-store bridges.
|
|
50
49
|
*
|
|
51
50
|
* - {@link loadUri} — EXISTENCE-AWARE: maps a URI to the *load* URI, or
|
|
52
51
|
* `undefined` when there is no loadable on-disk content for it. Use where the
|
|
53
52
|
* next step actually touches the filesystem (loading a document, walking a
|
|
54
|
-
* directory): `undefined` means "skip
|
|
55
|
-
*
|
|
53
|
+
* directory): `undefined` means "skip the read" rather than attempt a doomed
|
|
54
|
+
* one. It does not mean there is no document: one created and not yet saved
|
|
55
|
+
* has no file, and the text store and `LangiumDocuments` hold it under
|
|
56
|
+
* {@link canonicalUri}. The default treats every URI as loadable (returns it
|
|
56
57
|
* unchanged); a real-path policy returns the resolved file URI, or `undefined`
|
|
57
58
|
* for a not-yet-written path.
|
|
58
59
|
*
|
|
@@ -76,7 +77,9 @@ export interface DocumentUriPolicy {
|
|
|
76
77
|
/**
|
|
77
78
|
* Existence-aware resolution to the load URI, or `undefined` when there is
|
|
78
79
|
* no loadable content for `uri` (missing / synthetic). Callers that read the
|
|
79
|
-
* filesystem next use `undefined` to skip rather than attempt a doomed read
|
|
80
|
+
* filesystem next use `undefined` to skip rather than attempt a doomed read,
|
|
81
|
+
* and still look the URI up under {@link canonicalUri}: a document created
|
|
82
|
+
* and not yet saved is held there with no file behind it.
|
|
80
83
|
*/
|
|
81
84
|
loadUri(uri: URI | string): URI | undefined;
|
|
82
85
|
}
|
|
@@ -135,11 +138,13 @@ export declare class DefaultDocumentUriPolicy implements DocumentUriPolicy {
|
|
|
135
138
|
* `loadUri` returns `undefined` for an absent path (honest about existence, so a
|
|
136
139
|
* caller about to read the filesystem skips it).
|
|
137
140
|
*
|
|
138
|
-
* If the
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* `
|
|
141
|
+
* If the provider for a URI's scheme has no `realpath` (in-memory / browser /
|
|
142
|
+
* empty), the framework's `FileSystemProviderRegistry` returns the URI
|
|
143
|
+
* unchanged and both methods answer as {@link DefaultDocumentUriPolicy} does. A
|
|
144
|
+
* slot bound to a provider without `realpath` degrades the same way: the
|
|
145
|
+
* `loadUri` ternary tests the *method's presence*, not its return, so
|
|
146
|
+
* `loadUri` returns `undefined` only when `realpath` is present and reports the
|
|
147
|
+
* path absent.
|
|
143
148
|
*/
|
|
144
149
|
export declare class RealpathDocumentUriPolicy extends DefaultDocumentUriPolicy {
|
|
145
150
|
protected readonly fs: RealpathCapableFileSystem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-uri-policy.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/document-uri-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACvC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,yBAAyB,GAAG,GAAG,GAAG,SAAS,CAIxG;AAED
|
|
1
|
+
{"version":3,"file":"document-uri-policy.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/document-uri-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACvC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,yBAAyB,GAAG,GAAG,GAAG,SAAS,CAIxG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,iBAAiB;IAC/B,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,YAAY,CAAC;IAC9C;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;CAC9C;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAC/D,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,YAAY,CAI5C;IAED;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAE1C;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,yBAA0B,SAAQ,wBAAwB;IACpE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,yBAAyB,CAAC;IAEjD,YAAY,QAAQ,EAAE,2BAA2B,EAGhD;IAEQ,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,YAAY,CAMrD;IAEQ,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAQnD;CACH"}
|