@hydranium/core 1.0.0-next.27 → 1.0.0-next.270
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 +64 -82
- 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 +242 -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 +86 -0
- package/lib/documents/dirty-state-tracker.d.ts.map +1 -0
- package/lib/documents/dirty-state-tracker.js +72 -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 +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 +401 -282
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +827 -483
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/index.d.ts +10 -2
- package/lib/documents/index.d.ts.map +1 -1
- package/lib/documents/index.js +10 -2
- package/lib/documents/index.js.map +1 -1
- package/lib/documents/language-client-shadow.d.ts +218 -0
- package/lib/documents/language-client-shadow.d.ts.map +1 -0
- package/lib/documents/language-client-shadow.js +284 -0
- package/lib/documents/language-client-shadow.js.map +1 -0
- package/lib/documents/model-ledger.d.ts +47 -0
- package/lib/documents/model-ledger.d.ts.map +1 -0
- package/lib/documents/model-ledger.js +30 -0
- package/lib/documents/model-ledger.js.map +1 -0
- package/lib/documents/text-ledger.d.ts +64 -0
- package/lib/documents/text-ledger.d.ts.map +1 -0
- package/lib/documents/text-ledger.js +63 -0
- package/lib/documents/text-ledger.js.map +1 -0
- package/lib/documents/version-sync-service.d.ts +138 -0
- package/lib/documents/version-sync-service.d.ts.map +1 -0
- package/lib/documents/version-sync-service.js +173 -0
- package/lib/documents/version-sync-service.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -1
- package/lib/langium/ast-extension/ast-extension-service.d.ts +3 -0
- 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 +34 -25
- package/lib/langium/bootstrap.d.ts.map +1 -1
- package/lib/langium/bootstrap.js +77 -37
- package/lib/langium/bootstrap.js.map +1 -1
- package/lib/langium/build-phase-pass/build-phase-pass-service.d.ts +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/build-phase-pass/build-phase-pass.d.ts +1 -1
- package/lib/langium/composite-ast-reflection.d.ts +46 -0
- package/lib/langium/composite-ast-reflection.d.ts.map +1 -0
- package/lib/langium/composite-ast-reflection.js +97 -0
- package/lib/langium/composite-ast-reflection.js.map +1 -0
- package/lib/langium/config/configuration-provider.d.ts +81 -0
- package/lib/langium/config/configuration-provider.d.ts.map +1 -0
- package/lib/langium/config/configuration-provider.js +112 -0
- package/lib/langium/config/configuration-provider.js.map +1 -0
- package/lib/langium/config/index.d.ts +1 -0
- package/lib/langium/config/index.d.ts.map +1 -1
- package/lib/langium/config/index.js +1 -0
- package/lib/langium/config/index.js.map +1 -1
- package/lib/langium/config/settings.js.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts +9 -20
- package/lib/langium/diagnostics/hydranium-langium-profiler.d.ts.map +1 -1
- package/lib/langium/diagnostics/hydranium-langium-profiler.js +15 -24
- package/lib/langium/diagnostics/hydranium-langium-profiler.js.map +1 -1
- package/lib/langium/diagnostics/log-preamble.js +1 -1
- package/lib/langium/diagnostics/log-preamble.js.map +1 -1
- package/lib/langium/diagnostics/logger.d.ts +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 +58 -17
- package/lib/langium/diagnostics/lsp-logger.js.map +1 -1
- package/lib/langium/diagnostics/server-tracer.d.ts.map +1 -1
- package/lib/langium/diagnostics/server-tracer.js.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts +21 -1
- package/lib/langium/document-builder/build-pipeline-integration.d.ts.map +1 -1
- package/lib/langium/document-builder/build-pipeline-integration.js +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 +306 -33
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +501 -64
- 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 +83 -27
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +271 -61
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/keys/containment.d.ts +64 -0
- package/lib/langium/keys/containment.d.ts.map +1 -0
- package/lib/langium/keys/containment.js +53 -0
- package/lib/langium/keys/containment.js.map +1 -0
- package/lib/langium/keys/index.d.ts +1 -0
- package/lib/langium/keys/index.d.ts.map +1 -1
- package/lib/langium/keys/index.js +1 -0
- package/lib/langium/keys/index.js.map +1 -1
- package/lib/langium/keys/name-based-key-provider.d.ts +4 -0
- package/lib/langium/keys/name-based-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/name-based-key-provider.js +4 -0
- package/lib/langium/keys/name-based-key-provider.js.map +1 -1
- package/lib/langium/keys/positional-key-provider.d.ts.map +1 -1
- package/lib/langium/keys/positional-key-provider.js.map +1 -1
- package/lib/langium/labeling/label-provider.d.ts.map +1 -1
- package/lib/langium/labeling/label-provider.js.map +1 -1
- package/lib/langium/language-module.d.ts +30 -5
- package/lib/langium/language-module.d.ts.map +1 -1
- package/lib/langium/language-module.js +18 -4
- package/lib/langium/language-module.js.map +1 -1
- package/lib/langium/model-service/client-session.d.ts +343 -0
- package/lib/langium/model-service/client-session.d.ts.map +1 -0
- package/lib/langium/model-service/client-session.js +428 -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 +433 -282
- package/lib/langium/model-service/model-service.d.ts.map +1 -1
- package/lib/langium/model-service/model-service.js +537 -441
- package/lib/langium/model-service/model-service.js.map +1 -1
- package/lib/langium/module.d.ts +151 -36
- package/lib/langium/module.d.ts.map +1 -1
- package/lib/langium/module.js +48 -36
- package/lib/langium/module.js.map +1 -1
- package/lib/langium/naming/name-provider.d.ts +27 -6
- package/lib/langium/naming/name-provider.d.ts.map +1 -1
- package/lib/langium/naming/name-provider.js +4 -3
- package/lib/langium/naming/name-provider.js.map +1 -1
- package/lib/langium/naming/name-separator-validation.d.ts +23 -1
- package/lib/langium/naming/name-separator-validation.d.ts.map +1 -1
- package/lib/langium/naming/name-separator-validation.js +22 -0
- package/lib/langium/naming/name-separator-validation.js.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +13 -6
- package/lib/langium/project/abstract-project-manager.js.map +1 -1
- package/lib/langium/project/project-change-event.d.ts +2 -2
- package/lib/langium/project/single-project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.js.map +1 -1
- package/lib/langium/residency/cst-residency-service.d.ts +35 -12
- package/lib/langium/residency/cst-residency-service.d.ts.map +1 -1
- package/lib/langium/residency/cst-residency-service.js +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/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 +61 -24
- package/lib/langium/scope/hydranium-scope-provider.d.ts.map +1 -1
- package/lib/langium/scope/hydranium-scope-provider.js +74 -35
- 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 +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/serializer.d.ts +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 +23 -6
- package/lib/langium/shared-services.d.ts.map +1 -1
- package/lib/langium/shared-services.js.map +1 -1
- package/lib/langium/single-langium-copy.d.ts +22 -0
- package/lib/langium/single-langium-copy.d.ts.map +1 -0
- package/lib/langium/single-langium-copy.js +36 -0
- package/lib/langium/single-langium-copy.js.map +1 -0
- package/lib/langium/transfer/transfer-encoder.d.ts +88 -36
- 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 +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.d.ts.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite-service.js.map +1 -1
- package/lib/langium/update-rewrite/update-rewrite.d.ts +1 -1
- package/lib/langium/validation/document-validator.d.ts +280 -9
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +453 -8
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts +9 -1
- package/lib/langium/validation/validation-contribution-collector.d.ts.map +1 -1
- package/lib/langium/validation/validation-contribution-collector.js +1 -1
- package/lib/langium/validation/validation-contribution-collector.js.map +1 -1
- package/lib/langium/workspace/document-uri-policy.d.ts +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 +147 -9
- package/lib/langium/workspace/file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/file-system-provider.js +97 -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 +129 -12
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts +22 -7
- package/lib/langium/workspace/in-memory-file-system-provider.d.ts.map +1 -1
- package/lib/langium/workspace/in-memory-file-system-provider.js +36 -19
- 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 +37 -4
- package/lib/langium/workspace/langium-documents.d.ts.map +1 -1
- package/lib/langium/workspace/langium-documents.js +49 -4
- 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 +2 -8
- 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/launcher/integrated-server.d.ts +3 -1
- package/lib/launcher/integrated-server.d.ts.map +1 -1
- package/lib/locale/index.d.ts +10 -0
- package/lib/locale/index.d.ts.map +1 -0
- package/lib/locale/index.js +10 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/server-locale.d.ts +73 -0
- package/lib/locale/server-locale.d.ts.map +1 -0
- package/lib/locale/server-locale.js +61 -0
- package/lib/locale/server-locale.js.map +1 -0
- package/lib/lsp/completion/hydranium-completion-provider.d.ts +44 -2
- package/lib/lsp/completion/hydranium-completion-provider.d.ts.map +1 -1
- package/lib/lsp/completion/hydranium-completion-provider.js +68 -0
- package/lib/lsp/completion/hydranium-completion-provider.js.map +1 -1
- package/lib/lsp/connection-features.d.ts +23 -0
- package/lib/lsp/connection-features.d.ts.map +1 -0
- package/lib/lsp/connection-features.js +60 -0
- package/lib/lsp/connection-features.js.map +1 -0
- package/lib/lsp/diagnostics-connection.d.ts +27 -0
- package/lib/lsp/diagnostics-connection.d.ts.map +1 -0
- package/lib/lsp/diagnostics-connection.js +53 -0
- package/lib/lsp/diagnostics-connection.js.map +1 -0
- package/lib/lsp/hydranium-document-update-handler.d.ts +92 -81
- package/lib/lsp/hydranium-document-update-handler.d.ts.map +1 -1
- package/lib/lsp/hydranium-document-update-handler.js +155 -101
- package/lib/lsp/hydranium-document-update-handler.js.map +1 -1
- package/lib/lsp/index.d.ts +3 -1
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +3 -1
- package/lib/lsp/index.js.map +1 -1
- package/lib/lsp/lsp-latency.d.ts +39 -0
- package/lib/lsp/lsp-latency.d.ts.map +1 -0
- package/lib/lsp/lsp-latency.js +58 -0
- package/lib/lsp/lsp-latency.js.map +1 -0
- package/lib/lsp/semantic-token-provider.d.ts +34 -1
- package/lib/lsp/semantic-token-provider.d.ts.map +1 -1
- package/lib/lsp/semantic-token-provider.js +55 -8
- package/lib/lsp/semantic-token-provider.js.map +1 -1
- package/lib/lsp/shared-module.d.ts +4 -8
- package/lib/lsp/shared-module.d.ts.map +1 -1
- package/lib/lsp/shared-module.js.map +1 -1
- package/lib/lsp/start-language-server.d.ts +8 -7
- package/lib/lsp/start-language-server.d.ts.map +1 -1
- package/lib/lsp/start-language-server.js +13 -7
- package/lib/lsp/start-language-server.js.map +1 -1
- package/lib/messages/carriers.d.ts +18 -12
- package/lib/messages/carriers.d.ts.map +1 -1
- package/lib/messages/carriers.js +22 -13
- package/lib/messages/carriers.js.map +1 -1
- package/lib/messages/index.d.ts +4 -1
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +4 -1
- package/lib/messages/index.js.map +1 -1
- package/lib/messages/renderer.d.ts +142 -0
- package/lib/messages/renderer.d.ts.map +1 -0
- package/lib/messages/renderer.js +165 -0
- package/lib/messages/renderer.js.map +1 -0
- package/lib/node/event-loop-monitor.d.ts.map +1 -1
- package/lib/node/event-loop-monitor.js +2 -1
- package/lib/node/event-loop-monitor.js.map +1 -1
- package/lib/node/heap-ceiling.d.ts +61 -0
- package/lib/node/heap-ceiling.d.ts.map +1 -0
- package/lib/node/heap-ceiling.js +72 -0
- package/lib/node/heap-ceiling.js.map +1 -0
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +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/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 +1 -0
- 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 +3 -5
- package/lib/node/memory-monitor.js.map +1 -1
- package/lib/node/node-file-system-provider.d.ts +54 -9
- package/lib/node/node-file-system-provider.d.ts.map +1 -1
- package/lib/node/node-file-system-provider.js +141 -52
- 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 +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/socket-launcher.d.ts +20 -4
- package/lib/node/socket-launcher.d.ts.map +1 -1
- package/lib/node/socket-launcher.js +8 -7
- package/lib/node/socket-launcher.js.map +1 -1
- package/lib/node/stdio-launcher.d.ts +6 -5
- package/lib/node/stdio-launcher.d.ts.map +1 -1
- package/lib/node/stdio-launcher.js +13 -4
- package/lib/node/stdio-launcher.js.map +1 -1
- package/lib/testing/document-uri-policy-conformance.js +1 -1
- package/lib/testing/document-uri-policy-conformance.js.map +1 -1
- package/lib/testing/fake-description.js.map +1 -1
- package/lib/testing/fake-document.d.ts +16 -4
- package/lib/testing/fake-document.d.ts.map +1 -1
- package/lib/testing/fake-document.js +18 -3
- package/lib/testing/fake-document.js.map +1 -1
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.d.ts.map +1 -1
- package/lib/testing/index.js +2 -1
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/langium-test-helpers.d.ts.map +1 -1
- package/lib/testing/langium-test-helpers.js +1 -0
- package/lib/testing/langium-test-helpers.js.map +1 -1
- package/lib/testing/make-noop-language-services.js.map +1 -1
- package/lib/testing/make-noop-shared-services.d.ts +14 -0
- package/lib/testing/make-noop-shared-services.d.ts.map +1 -1
- package/lib/testing/make-noop-shared-services.js +28 -2
- package/lib/testing/make-noop-shared-services.js.map +1 -1
- package/lib/testing/make-test-services.d.ts +72 -14
- package/lib/testing/make-test-services.d.ts.map +1 -1
- package/lib/testing/make-test-services.js +42 -10
- package/lib/testing/make-test-services.js.map +1 -1
- package/lib/testing/make-test-tracer.d.ts +12 -0
- package/lib/testing/make-test-tracer.d.ts.map +1 -1
- package/lib/testing/make-test-tracer.js +13 -0
- package/lib/testing/make-test-tracer.js.map +1 -1
- package/lib/testing/node/applied-edit-capture.d.ts +29 -0
- package/lib/testing/node/applied-edit-capture.d.ts.map +1 -0
- package/lib/testing/node/applied-edit-capture.js +115 -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 +12 -4
- package/lib/testing/node/lsp-server-connection.d.ts.map +1 -1
- package/lib/testing/node/lsp-server-connection.js +45 -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 +35 -8
- package/lib/testing/playwright/server-log-capture.d.ts.map +1 -1
- package/lib/testing/playwright/server-log-capture.js +39 -6
- 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 +10 -1
- package/lib/testing/playwright/server-log-rename-reporter.js.map +1 -1
- package/lib/testing/run-update-pipeline.d.ts +6 -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 +24 -65
- 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 +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 +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/util/connection-liveness.d.ts +19 -6
- package/lib/util/connection-liveness.d.ts.map +1 -1
- package/lib/util/connection-liveness.js +61 -15
- package/lib/util/connection-liveness.js.map +1 -1
- package/lib/util/environment.d.ts.map +1 -1
- package/lib/util/environment.js.map +1 -1
- package/lib/util/registry.d.ts.map +1 -1
- package/package.json +29 -53
- package/src/documents/ast-document-manager.ts +383 -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 +140 -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 +68 -0
- package/src/documents/hydranium-text-documents.ts +944 -595
- package/src/documents/index.ts +10 -2
- package/src/documents/language-client-shadow.ts +452 -0
- package/src/documents/model-ledger.ts +66 -0
- package/src/documents/text-ledger.ts +112 -0
- package/src/documents/version-sync-service.ts +275 -0
- package/src/index.ts +8 -0
- package/src/langium/ast-extension/ast-extension-service.ts +3 -0
- package/src/langium/ast-extension/ast-node-builder.ts +66 -22
- package/src/langium/bootstrap.ts +77 -37
- package/src/langium/build-phase-pass/build-phase-pass-service.ts +1 -1
- package/src/langium/build-phase-pass/build-phase-pass.ts +1 -1
- package/src/langium/composite-ast-reflection.ts +112 -0
- package/src/langium/config/configuration-provider.ts +119 -0
- package/src/langium/config/index.ts +1 -0
- package/src/langium/diagnostics/hydranium-langium-profiler.ts +15 -39
- package/src/langium/diagnostics/log-preamble.ts +1 -1
- package/src/langium/diagnostics/logger.ts +12 -5
- package/src/langium/diagnostics/lsp-logger.ts +61 -16
- package/src/langium/document-builder/build-pipeline-integration.ts +50 -5
- package/src/langium/document-builder/document-builder.ts +605 -62
- package/src/langium/integration-services.ts +83 -24
- package/src/langium/integrity/integrity-rule.ts +16 -8
- package/src/langium/integrity/integrity-service.ts +294 -67
- package/src/langium/keys/containment.ts +87 -0
- package/src/langium/keys/index.ts +1 -0
- package/src/langium/keys/name-based-key-provider.ts +4 -0
- package/src/langium/language-module.ts +49 -8
- package/src/langium/model-service/client-session.ts +661 -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 +824 -471
- package/src/langium/module.ts +201 -66
- package/src/langium/naming/name-provider.ts +29 -7
- package/src/langium/naming/name-separator-validation.ts +25 -3
- package/src/langium/project/abstract-project-manager.ts +13 -5
- package/src/langium/project/project-change-event.ts +2 -2
- package/src/langium/residency/cst-residency-service.ts +50 -16
- 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 +89 -38
- 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 +13 -32
- package/src/langium/serialization/serializer.ts +1 -1
- package/src/langium/service-registry.ts +41 -2
- package/src/langium/shared-services.ts +26 -6
- package/src/langium/single-langium-copy.ts +42 -0
- package/src/langium/transfer/transfer-encoder.ts +115 -47
- 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-service.ts +1 -1
- package/src/langium/update-rewrite/update-rewrite.ts +1 -1
- package/src/langium/validation/document-validator.ts +528 -13
- package/src/langium/validation/validation-contribution-collector.ts +10 -1
- package/src/langium/workspace/document-uri-policy.ts +15 -10
- package/src/langium/workspace/file-not-found.ts +35 -0
- package/src/langium/workspace/file-system-provider.ts +221 -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 +155 -16
- package/src/langium/workspace/in-memory-file-system-provider.ts +41 -20
- package/src/langium/workspace/index.ts +1 -0
- package/src/langium/workspace/initialize-workspace.ts +43 -5
- package/src/langium/workspace/langium-documents.ts +63 -5
- package/src/langium/workspace/persistent-file-system-provider.ts +3 -9
- 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/launcher/integrated-server.ts +3 -1
- package/src/locale/index.ts +10 -0
- package/src/locale/server-locale.ts +86 -0
- package/src/lsp/completion/hydranium-completion-provider.ts +82 -2
- package/src/lsp/connection-features.ts +67 -0
- package/src/lsp/diagnostics-connection.ts +56 -0
- package/src/lsp/hydranium-document-update-handler.ts +197 -110
- package/src/lsp/index.ts +3 -1
- package/src/lsp/lsp-latency.ts +62 -0
- package/src/lsp/semantic-token-provider.ts +74 -7
- package/src/lsp/shared-module.ts +4 -8
- package/src/lsp/start-language-server.ts +13 -7
- package/src/messages/carriers.ts +23 -15
- package/src/messages/index.ts +13 -1
- package/src/messages/renderer.ts +212 -0
- package/src/node/event-loop-monitor.ts +2 -1
- package/src/node/heap-ceiling.ts +108 -0
- package/src/node/index.ts +1 -1
- package/src/node/latency-from-env.ts +1 -1
- package/src/node/log-preamble-node.ts +20 -10
- package/src/node/measure-memory.ts +1 -0
- package/src/node/memory-monitor.ts +4 -5
- package/src/node/node-file-system-provider.ts +157 -56
- package/src/node/profile-capture.ts +9 -3
- 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/socket-launcher.ts +27 -11
- package/src/node/stdio-launcher.ts +18 -9
- package/src/testing/document-uri-policy-conformance.ts +1 -1
- package/src/testing/fake-document.ts +24 -5
- package/src/testing/index.ts +2 -1
- package/src/testing/langium-test-helpers.ts +1 -0
- package/src/testing/make-noop-shared-services.ts +50 -2
- package/src/testing/make-test-services.ts +125 -31
- package/src/testing/make-test-tracer.ts +26 -0
- package/src/testing/node/applied-edit-capture.ts +139 -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 +74 -117
- 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 +63 -11
- 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 +12 -1
- package/src/testing/run-update-pipeline.ts +6 -5
- package/src/testing/stub-ast-document-manager.ts +36 -138
- package/src/testing/stub-document-builder.ts +133 -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 +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 +1 -1
- package/src/util/connection-liveness.ts +67 -15
- package/src/util/environment.ts +9 -1
- package/lib/documents/language-client-text-shadow.d.ts +0 -101
- package/lib/documents/language-client-text-shadow.d.ts.map +0 -1
- package/lib/documents/language-client-text-shadow.js +0 -156
- package/lib/documents/language-client-text-shadow.js.map +0 -1
- package/lib/documents/self-save-registry.d.ts.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
package/lib/node/index.js
CHANGED
|
@@ -32,11 +32,11 @@ export * from './server-diagnostics.js';
|
|
|
32
32
|
// entry alongside the default policy.
|
|
33
33
|
export * from './ast-ground-truth.js';
|
|
34
34
|
export * from './event-loop-monitor.js';
|
|
35
|
+
export * from './heap-ceiling.js';
|
|
35
36
|
export * from './latency-from-env.js';
|
|
36
37
|
export * from './measure-memory.js';
|
|
37
38
|
export * from './memory-monitor.js';
|
|
38
39
|
export * from './lint-grammar.js';
|
|
39
|
-
export * from './process-memory.js';
|
|
40
40
|
export * from './profile-capture.js';
|
|
41
41
|
export * from './profile-digest.js';
|
|
42
42
|
export * from './profiling-run.js';
|
package/lib/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,iFAAiF;AACjF,6EAA6E;AAC7E,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,mBAAmB;AACnB,iFAAiF;AACjF,iFAAiF;AACjF,8CAA8C;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,sEAAsE;AACtE,6EAA6E;AAC7E,sCAAsC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,iFAAiF;AACjF,6EAA6E;AAC7E,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,mBAAmB;AACnB,iFAAiF;AACjF,iFAAiF;AACjF,8CAA8C;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,sEAAsE;AACtE,6EAA6E;AAC7E,sCAAsC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AAExC,sBAAsB,EAAE,CAAC;AACzB,yBAAyB,EAAE,CAAC"}
|
|
@@ -23,7 +23,7 @@ export declare const DEFAULT_LATENCY_ENV = "HYDRANIUM_LATENCY";
|
|
|
23
23
|
export declare function isLatencyEnabled(): boolean;
|
|
24
24
|
/**
|
|
25
25
|
* A {@link LatencyCollector} when {@link DEFAULT_LATENCY_ENV} is set, otherwise
|
|
26
|
-
* `undefined`. Heads pass the result straight to `
|
|
26
|
+
* `undefined`. Heads pass the result straight to `lspLatencyOptions`, the
|
|
27
27
|
* `DataServer` `latency` option and the RPC binder; all three treat `undefined`
|
|
28
28
|
* as "seam off", so this single factory is the one place a head decides whether
|
|
29
29
|
* timing runs. `clock` is forwarded to the collector so tests stay deterministic.
|
|
@@ -25,7 +25,7 @@ export function isLatencyEnabled() {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* A {@link LatencyCollector} when {@link DEFAULT_LATENCY_ENV} is set, otherwise
|
|
28
|
-
* `undefined`. Heads pass the result straight to `
|
|
28
|
+
* `undefined`. Heads pass the result straight to `lspLatencyOptions`, the
|
|
29
29
|
* `DataServer` `latency` option and the RPC binder; all three treat `undefined`
|
|
30
30
|
* as "seam off", so this single factory is the one place a head decides whether
|
|
31
31
|
* timing runs. `clock` is forwarded to the collector so tests stay deterministic.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-grammar.js","sourceRoot":"","sources":["../../src/node/lint-grammar.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmDpE,4FAA4F;AAC5F,MAAM,uBAAuB,GAAG,CAAC,MAAM,CAAU,CAAC;AAElD,4EAA4E;AAC5E,SAAS,gBAAgB,CAAC,UAAyB;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3C,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACd,CAAC;AAED,qGAAqG;AACrG,SAAS,WAAW,CAAC,IAAY,EAAE,cAAqC;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,SAAS;QACZ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,gFAAgF;AAChF,SAAS,UAAU,CAAC,UAAyB,EAAE,IAAY,EAAE,cAAiC;IAC3F,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAC/B,UAAyB,EACzB,SAAiD,EACjD,
|
|
1
|
+
{"version":3,"file":"lint-grammar.js","sourceRoot":"","sources":["../../src/node/lint-grammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
+
import { type ServerDiagnosticsOptions } from './server-diagnostics.js';
|
|
9
10
|
import { type LogPreambleOptions } from '../langium/diagnostics/log-preamble.js';
|
|
10
11
|
/**
|
|
11
12
|
* Node runtime / host lines for {@link LogPreambleOptions.systemInfoLines}.
|
|
@@ -16,13 +17,14 @@ export declare function nodeSystemInfoLines(): string[];
|
|
|
16
17
|
* Node monitor + memory-suffix convention lines for
|
|
17
18
|
* {@link LogPreambleOptions.conventionLines}. These describe the `[EventLoop]`
|
|
18
19
|
* / `[Memory]` monitors and the heap/rss suffix — all Node-only behaviour, so
|
|
19
|
-
* they're omitted from the portable preamble.
|
|
20
|
+
* they're omitted from the portable preamble. Pass the options the monitors
|
|
21
|
+
* were started with, or the lines state the defaults.
|
|
20
22
|
*/
|
|
21
|
-
export declare function nodeConventionLines(phaseDetailThresholdMs?: number): string[];
|
|
23
|
+
export declare function nodeConventionLines(phaseDetailThresholdMs?: number, monitors?: Pick<ServerDiagnosticsOptions, 'eventLoop' | 'memory'>): string[];
|
|
22
24
|
/**
|
|
23
25
|
* Convenience bundle of the Node `logPreamble` sections — spread into
|
|
24
26
|
* the portable `logPreamble`'s options on a Node host:
|
|
25
27
|
* `logPreamble(logger, { productName, version, ...nodeLogPreambleSections() })`.
|
|
26
28
|
*/
|
|
27
|
-
export declare function nodeLogPreambleSections(phaseDetailThresholdMs?: number): Pick<LogPreambleOptions, 'systemInfoLines' | 'conventionLines'>;
|
|
29
|
+
export declare function nodeLogPreambleSections(phaseDetailThresholdMs?: number, monitors?: Pick<ServerDiagnosticsOptions, 'eventLoop' | 'memory'>): Pick<LogPreambleOptions, 'systemInfoLines' | 'conventionLines'>;
|
|
28
30
|
//# sourceMappingURL=log-preamble-node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-preamble-node.d.ts","sourceRoot":"","sources":["../../src/node/log-preamble-node.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAYlF,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAQ9C;AAED
|
|
1
|
+
{"version":3,"file":"log-preamble-node.d.ts","sourceRoot":"","sources":["../../src/node/log-preamble-node.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAYlF,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAChC,sBAAsB,SAAK,EAC3B,QAAQ,GAAE,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,QAAQ,CAAM,GACrE,MAAM,EAAE,CAcV;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACpC,sBAAsB,SAAK,EAC3B,QAAQ,GAAE,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,QAAQ,CAAM,GACrE,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,CAEjE"}
|
|
@@ -29,19 +29,22 @@ export function nodeSystemInfoLines() {
|
|
|
29
29
|
* Node monitor + memory-suffix convention lines for
|
|
30
30
|
* {@link LogPreambleOptions.conventionLines}. These describe the `[EventLoop]`
|
|
31
31
|
* / `[Memory]` monitors and the heap/rss suffix — all Node-only behaviour, so
|
|
32
|
-
* they're omitted from the portable preamble.
|
|
32
|
+
* they're omitted from the portable preamble. Pass the options the monitors
|
|
33
|
+
* were started with, or the lines state the defaults.
|
|
33
34
|
*/
|
|
34
|
-
export function nodeConventionLines(phaseDetailThresholdMs = 50) {
|
|
35
|
+
export function nodeConventionLines(phaseDetailThresholdMs = 50, monitors = {}) {
|
|
35
36
|
const memoryDeltaMb = MEMORY_DELTA_BYTES / (1024 * 1024);
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
37
|
+
const thresholdMs = monitors.eventLoop?.thresholdMs ?? DEFAULT_EVENT_LOOP_THRESHOLD_MS;
|
|
38
|
+
const intervalSeconds = (monitors.eventLoop?.intervalMs ?? DEFAULT_EVENT_LOOP_INTERVAL_MS) / 1000;
|
|
39
|
+
const snapshotAboveMs = monitors.eventLoop?.snapshotAboveMs ?? DEFAULT_EVENT_LOOP_SNAPSHOT_ABOVE_MS;
|
|
40
|
+
const warnPercent = Math.round((monitors.memory?.warnThreshold ?? DEFAULT_MEMORY_WARN_THRESHOLD) * 100);
|
|
41
|
+
const criticalPercent = Math.round((monitors.memory?.criticalThreshold ?? DEFAULT_MEMORY_CRITICAL_THRESHOLD) * 100);
|
|
39
42
|
return [
|
|
40
43
|
`• Memory suffix: heap/rss included on [done] only when heap moved >${memoryDeltaMb}MB since last log,`,
|
|
41
44
|
` always included on rebuilds >=${phaseDetailThresholdMs}ms and on [EventLoop] stall warnings`,
|
|
42
|
-
`• [EventLoop]: warns when a stall >=${
|
|
43
|
-
` stalls >=${
|
|
44
|
-
`• [Memory]: warns >=${warnPercent}% of V8 heap_size_limit,
|
|
45
|
+
`• [EventLoop]: warns when a stall >=${thresholdMs}ms is observed within a ${intervalSeconds}s window;`,
|
|
46
|
+
` stalls >=${snapshotAboveMs}ms also trigger a [Process] server-state snapshot`,
|
|
47
|
+
`• [Memory]: warns >=${warnPercent}% of V8 heap_size_limit, again as imminent OOM >=${criticalPercent}%, info on recovery`
|
|
45
48
|
];
|
|
46
49
|
}
|
|
47
50
|
/**
|
|
@@ -49,7 +52,7 @@ export function nodeConventionLines(phaseDetailThresholdMs = 50) {
|
|
|
49
52
|
* the portable `logPreamble`'s options on a Node host:
|
|
50
53
|
* `logPreamble(logger, { productName, version, ...nodeLogPreambleSections() })`.
|
|
51
54
|
*/
|
|
52
|
-
export function nodeLogPreambleSections(phaseDetailThresholdMs = 50) {
|
|
53
|
-
return { systemInfoLines: nodeSystemInfoLines(), conventionLines: nodeConventionLines(phaseDetailThresholdMs) };
|
|
55
|
+
export function nodeLogPreambleSections(phaseDetailThresholdMs = 50, monitors = {}) {
|
|
56
|
+
return { systemInfoLines: nodeSystemInfoLines(), conventionLines: nodeConventionLines(phaseDetailThresholdMs, monitors) };
|
|
54
57
|
}
|
|
55
58
|
//# sourceMappingURL=log-preamble-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-preamble-node.js","sourceRoot":"","sources":["../../src/node/log-preamble-node.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACJ,8BAA8B,EAC9B,oCAAoC,EACpC,+BAA+B,EACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"log-preamble-node.js","sourceRoot":"","sources":["../../src/node/log-preamble-node.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACJ,8BAA8B,EAC9B,oCAAoC,EACpC,+BAA+B,EACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAIvG;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAChC,OAAO;QACJ,eAAe,OAAO,CAAC,OAAO,EAAE;QAChC,eAAe,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;QACjD,eAAe,OAAO,CAAC,GAAG,EAAE;QAC5B,eAAe,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC,EAAE;QACrE,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE;KAChC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAChC,sBAAsB,GAAG,EAAE,EAC3B,QAAQ,GAA2D,EAAE;IAErE,MAAM,aAAa,GAAG,kBAAkB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,EAAE,WAAW,IAAI,+BAA+B,CAAC;IACvF,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,IAAI,8BAA8B,CAAC,GAAG,IAAI,CAAC;IAClG,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,EAAE,eAAe,IAAI,oCAAoC,CAAC;IACpG,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,IAAI,6BAA6B,CAAC,GAAG,GAAG,CAAC,CAAC;IACxG,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,IAAI,iCAAiC,CAAC,GAAG,GAAG,CAAC,CAAC;IACpH,OAAO;QACJ,uEAAuE,aAAa,oBAAoB;QACxG,mDAAmD,sBAAsB,sCAAsC;QAC/G,0CAA0C,WAAW,2BAA2B,eAAe,WAAW;QAC1G,8BAA8B,eAAe,mDAAmD;QAChG,6BAA6B,WAAW,oDAAoD,eAAe,qBAAqB;KAClI,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACpC,sBAAsB,GAAG,EAAE,EAC3B,QAAQ,GAA2D,EAAE;IAErE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,eAAe,EAAE,mBAAmB,CAAC,sBAAsB,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC7H,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measure-memory.d.ts","sourceRoot":"","sources":["../../src/node/measure-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAOlF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGjF,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACvC;;;;;OAKG;IACH,cAAc,EAAE,MAAM;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC;IAC9D,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,gHAAgH;IAChH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kHAAkH;IAClH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"measure-memory.d.ts","sourceRoot":"","sources":["../../src/node/measure-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAOlF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGjF,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACvC;;;;;OAKG;IACH,cAAc,EAAE,MAAM;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC;IAC9D,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,gHAAgH;IAChH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kHAAkH;IAClH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4F9G"}
|
|
@@ -107,6 +107,7 @@ export async function measureModelMemory(options) {
|
|
|
107
107
|
result.churnGrowthBytes = growth;
|
|
108
108
|
const verdict = growth > 5 * 1024 * 1024 ? 'POSSIBLE RETENTION' : 'stable (no leak)';
|
|
109
109
|
log(`Rebuild churn growth ${Format.bytes(growth)} over ${editCycles} cycles - ${verdict}`);
|
|
110
|
+
log(`Documents after churn: ${shared.workspace.LangiumDocuments.all.toArray().length}`);
|
|
110
111
|
}
|
|
111
112
|
if (options.writeSnapshot) {
|
|
112
113
|
const snapshotPath = options.snapshotPath ?? path.resolve(process.cwd(), `${path.basename(options.workspace)}.heapsnapshot`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measure-memory.js","sourceRoot":"","sources":["../../src/node/measure-memory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"measure-memory.js","sourceRoot":"","sources":["../../src/node/measure-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
10
10
|
/** Heap usage ratio (heapUsed / heap_size_limit) above which we emit a warning. */
|
|
11
11
|
export declare const DEFAULT_MEMORY_WARN_THRESHOLD = 0.85;
|
|
12
|
-
/** Heap usage ratio above which
|
|
12
|
+
/** Heap usage ratio above which the warning says out-of-memory is imminent. */
|
|
13
13
|
export declare const DEFAULT_MEMORY_CRITICAL_THRESHOLD = 0.95;
|
|
14
14
|
/** Cooldown between repeated warnings at the same level, in ms. */
|
|
15
15
|
export declare const DEFAULT_COOLDOWN_MS = 30000;
|
|
@@ -18,7 +18,7 @@ export declare const DEFAULT_MEMORY_INTERVAL_MS = 5000;
|
|
|
18
18
|
export interface MemoryMonitorOptions {
|
|
19
19
|
/** Heap-usage ratio (0..1) above which a warning is emitted. Default {@link DEFAULT_MEMORY_WARN_THRESHOLD}. */
|
|
20
20
|
warnThreshold?: number;
|
|
21
|
-
/** Heap-usage ratio above which
|
|
21
|
+
/** Heap-usage ratio above which the warning says out-of-memory is imminent. Default {@link DEFAULT_MEMORY_CRITICAL_THRESHOLD}. */
|
|
22
22
|
criticalThreshold?: number;
|
|
23
23
|
/** Sample interval, in ms. Default {@link DEFAULT_MEMORY_INTERVAL_MS}. */
|
|
24
24
|
intervalMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-monitor.d.ts","sourceRoot":"","sources":["../../src/node/memory-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,mFAAmF;AACnF,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD
|
|
1
|
+
{"version":3,"file":"memory-monitor.d.ts","sourceRoot":"","sources":["../../src/node/memory-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAIlF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,mFAAmF;AACnF,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,OAAO,CAAC;AACtD,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAIhD,MAAM,WAAW,oBAAoB;IAClC,+GAA+G;IAC/G,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kIAAkI;IAClI,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,GAAE,oBAAyB,GAAG,MAAM,IAAI,CAqDtH"}
|
|
@@ -10,7 +10,7 @@ import { Format } from '@hydranium/protocol';
|
|
|
10
10
|
import * as v8 from 'node:v8';
|
|
11
11
|
/** Heap usage ratio (heapUsed / heap_size_limit) above which we emit a warning. */
|
|
12
12
|
export const DEFAULT_MEMORY_WARN_THRESHOLD = 0.85;
|
|
13
|
-
/** Heap usage ratio above which
|
|
13
|
+
/** Heap usage ratio above which the warning says out-of-memory is imminent. */
|
|
14
14
|
export const DEFAULT_MEMORY_CRITICAL_THRESHOLD = 0.95;
|
|
15
15
|
/** Cooldown between repeated warnings at the same level, in ms. */
|
|
16
16
|
export const DEFAULT_COOLDOWN_MS = 30_000;
|
|
@@ -64,10 +64,8 @@ export function startMemoryMonitor(shared, options = {}) {
|
|
|
64
64
|
: severity === 'warn'
|
|
65
65
|
? ' - garbage collection pressure may slow operations'
|
|
66
66
|
: ' - recovered below warning threshold');
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
else if (severity === 'warn') {
|
|
67
|
+
// Critical is still a warning: nothing has failed yet.
|
|
68
|
+
if (severity !== 'ok') {
|
|
71
69
|
logger.warn(message);
|
|
72
70
|
}
|
|
73
71
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-monitor.js","sourceRoot":"","sources":["../../src/node/memory-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B,mFAAmF;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAClD
|
|
1
|
+
{"version":3,"file":"memory-monitor.js","sourceRoot":"","sources":["../../src/node/memory-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,32 +7,73 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type Tracer } from '@hydranium/protocol';
|
|
10
|
-
import { URI } from '@hydranium/langium';
|
|
10
|
+
import { type FileSystemNode, URI } from '@hydranium/langium';
|
|
11
11
|
import { NodeFileSystemProvider } from '@hydranium/langium/node';
|
|
12
|
-
import { type WritableFileSystemProvider } from '../
|
|
13
|
-
import { type SelfSaveRegistry } from '../
|
|
12
|
+
import { type WritableFileSystemProvider } from '../langium/workspace/file-system-provider.js';
|
|
13
|
+
import { type SelfSaveRegistry } from '../langium/workspace/self-save-registry.js';
|
|
14
14
|
import { type LogNameOptions } from '../langium/diagnostics/logger.js';
|
|
15
15
|
import { type ServerSharedServicesMinimal } from '../langium/shared-services.js';
|
|
16
16
|
/**
|
|
17
17
|
* Node-based default {@link WritableFileSystemProvider}. Extends Langium's
|
|
18
18
|
* {@link NodeFileSystemProvider} with an async {@link writeFile} that
|
|
19
|
-
* creates parent directories on demand, replaces the target
|
|
19
|
+
* creates parent directories on demand, replaces the target whole unless
|
|
20
20
|
* that would break a hard link, and registers the resulting mtime with the
|
|
21
21
|
* {@link SelfSaveRegistry} bound at `services.workspace.SelfSaveRegistry` — so
|
|
22
22
|
* consumers can suppress the `didChangeWatchedFiles` echo for their own writes.
|
|
23
23
|
*
|
|
24
|
+
* Its read surface refuses to derive a disk path from a URI that names no disk
|
|
25
|
+
* location — see {@link servesFromDisk}, which is the one place that judgement
|
|
26
|
+
* is made. Every method that derives an OS path is held to it, writes most of
|
|
27
|
+
* all: a read that skipped it would only mis-report, while a write would CREATE
|
|
28
|
+
* a file at a path the URI never named. Behind the framework's
|
|
29
|
+
* `FileSystemProviderRegistry`, a `virtual:` URI goes to the framework's own
|
|
30
|
+
* provider for that scheme, not here.
|
|
31
|
+
*
|
|
24
32
|
* Server-only (`@hydranium/core/node`): pulls `node:fs`. The portable `.`
|
|
25
|
-
* entry
|
|
26
|
-
*
|
|
27
|
-
* get real disk I/O.
|
|
33
|
+
* entry falls back to `DefaultEmptyFileSystemProvider`, so a Node host passes
|
|
34
|
+
* this one through `context.fileSystemProvider` (see {@link NodeFileSystem})
|
|
35
|
+
* to get real disk I/O.
|
|
28
36
|
*/
|
|
29
37
|
export declare class DefaultFileSystemProvider extends NodeFileSystemProvider implements WritableFileSystemProvider {
|
|
30
38
|
protected readonly services: ServerSharedServicesMinimal;
|
|
31
39
|
readonly selfSaveRegistry: SelfSaveRegistry;
|
|
32
40
|
protected readonly tracer: Tracer;
|
|
33
41
|
constructor(services: ServerSharedServicesMinimal, options?: LogNameOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Whether `uri` names something this provider can reach on disk.
|
|
44
|
+
*
|
|
45
|
+
* Only a `file:` URI does. `URI.fsPath` yields a path for ANY scheme — for a
|
|
46
|
+
* hierarchical one it is the path component, which for a schemed URI with no
|
|
47
|
+
* authority comes out RELATIVE — so delegating an unrecognised scheme to Node
|
|
48
|
+
* does not fail, it probes `<cwd>/<path>` and answers about whatever
|
|
49
|
+
* unrelated file happens to sit there. A server whose working directory is
|
|
50
|
+
* the workspace root makes that collision ordinary rather than exotic.
|
|
51
|
+
*
|
|
52
|
+
* Note the deliberate disagreement with {@link realpath}, which treats a
|
|
53
|
+
* non-`file:` URI as PRESENT. The two degrade in opposite directions because
|
|
54
|
+
* they answer different questions: identity has to hand back a usable URI, so
|
|
55
|
+
* its safe answer is the one it was given, while occupancy and content must
|
|
56
|
+
* not be invented from an unrelated path, so their safe answer is "nothing
|
|
57
|
+
* here". A subclass adding a second on-disk scheme widens this and nothing
|
|
58
|
+
* else.
|
|
59
|
+
*/
|
|
60
|
+
protected servesFromDisk(uri: URI): boolean;
|
|
34
61
|
readFile(uri: URI): Promise<string>;
|
|
35
62
|
readFileSync(uri: URI): string;
|
|
63
|
+
readBinary(uri: URI): Promise<Uint8Array>;
|
|
64
|
+
readBinarySync(uri: URI): Uint8Array;
|
|
65
|
+
stat(uri: URI): Promise<FileSystemNode>;
|
|
66
|
+
statSync(uri: URI): FileSystemNode;
|
|
67
|
+
exists(uri: URI): Promise<boolean>;
|
|
68
|
+
existsSync(uri: URI): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* On Windows a miss is polled for up to {@link RENAME_GAP_BUDGET_MS}, since a
|
|
71
|
+
* replacing rename there can hide the name from a reader for a while; it
|
|
72
|
+
* answers `true` as soon as the file is back. Elsewhere a miss is final.
|
|
73
|
+
*/
|
|
74
|
+
existsSettled(uri: URI): Promise<boolean>;
|
|
75
|
+
readDirectory(uri: URI): Promise<FileSystemNode[]>;
|
|
76
|
+
readDirectorySync(uri: URI): FileSystemNode[];
|
|
36
77
|
/**
|
|
37
78
|
* Write `content` to `uri` via a staging file and a `rename` — or, onto a
|
|
38
79
|
* destination carrying more than one hard link, in place — then register the
|
|
@@ -43,8 +84,12 @@ export declare class DefaultFileSystemProvider extends NodeFileSystemProvider im
|
|
|
43
84
|
* overwrite cannot offer that, because the target is truncated before the
|
|
44
85
|
* first byte lands, so a reader in that window gets a short or empty file —
|
|
45
86
|
* and a model file that fails to parse is worse than one holding a previous
|
|
46
|
-
* good revision.
|
|
47
|
-
*
|
|
87
|
+
* good revision. On Windows the replacing rename also leaves the name
|
|
88
|
+
* unresolvable for a moment, so a reader there can find the file missing
|
|
89
|
+
* (`ENOENT`) or refused (`EPERM`), never torn, and must not take either for
|
|
90
|
+
* a deletion; {@link existsSettled} waits that moment out. It does NOT
|
|
91
|
+
* serialise writers: two writers still race, and the loser's content is
|
|
92
|
+
* replaced wholesale rather than interleaved.
|
|
48
93
|
*
|
|
49
94
|
* The destination is the RESOLVED path, via {@link realpath}: a `rename`
|
|
50
95
|
* onto a symlink replaces the link itself with a regular file and leaves the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-file-system-provider.d.ts","sourceRoot":"","sources":["../../src/node/node-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAY,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-file-system-provider.d.ts","sourceRoot":"","sources":["../../src/node/node-file-system-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,GAAG,EAAY,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAuB,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGtG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,yBAA0B,SAAQ,sBAAuB,YAAW,0BAA0B;IAKrG,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B;IAJ3D,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,2BAA2B,EACxD,OAAO,GAAE,cAAmB,EAK9B;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAE1C;IAKQ,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3C;IAEQ,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAKtC;IAEQ,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAEjD;IAEQ,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAK5C;IAEQ,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAE/C;IAEQ,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,CAK1C;IAIc,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEhD;IAEQ,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAErC;IAED;;;;OAIG;IACG,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAmB9C;IAKQ,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAE1D;IAEQ,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,EAAE,CAErD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCxD;IAEK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBnD;IAED;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CASlC;CACH;AA4CD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc;IACxB,kBAAkB;CACpB,CAAC"}
|
|
@@ -11,20 +11,29 @@ import { NodeFileSystemProvider } from '@hydranium/langium/node';
|
|
|
11
11
|
import { randomUUID } from 'node:crypto';
|
|
12
12
|
import { realpathSync } from 'node:fs';
|
|
13
13
|
import * as fsp from 'node:fs/promises';
|
|
14
|
+
import { RENAME_GAP_BUDGET_MS, renameOverOpenReaders } from './rename-over-open-readers.js';
|
|
14
15
|
import { serverSharedFactory } from '../langium/shared-services.js';
|
|
15
|
-
import {
|
|
16
|
+
import { NO_SUCH_FILE, NO_SUCH_PATH, UNSUPPORTED_WRITE } from '../langium/workspace/in-memory-file-system-provider.js';
|
|
16
17
|
/**
|
|
17
18
|
* Node-based default {@link WritableFileSystemProvider}. Extends Langium's
|
|
18
19
|
* {@link NodeFileSystemProvider} with an async {@link writeFile} that
|
|
19
|
-
* creates parent directories on demand, replaces the target
|
|
20
|
+
* creates parent directories on demand, replaces the target whole unless
|
|
20
21
|
* that would break a hard link, and registers the resulting mtime with the
|
|
21
22
|
* {@link SelfSaveRegistry} bound at `services.workspace.SelfSaveRegistry` — so
|
|
22
23
|
* consumers can suppress the `didChangeWatchedFiles` echo for their own writes.
|
|
23
24
|
*
|
|
25
|
+
* Its read surface refuses to derive a disk path from a URI that names no disk
|
|
26
|
+
* location — see {@link servesFromDisk}, which is the one place that judgement
|
|
27
|
+
* is made. Every method that derives an OS path is held to it, writes most of
|
|
28
|
+
* all: a read that skipped it would only mis-report, while a write would CREATE
|
|
29
|
+
* a file at a path the URI never named. Behind the framework's
|
|
30
|
+
* `FileSystemProviderRegistry`, a `virtual:` URI goes to the framework's own
|
|
31
|
+
* provider for that scheme, not here.
|
|
32
|
+
*
|
|
24
33
|
* Server-only (`@hydranium/core/node`): pulls `node:fs`. The portable `.`
|
|
25
|
-
* entry
|
|
26
|
-
*
|
|
27
|
-
* get real disk I/O.
|
|
34
|
+
* entry falls back to `DefaultEmptyFileSystemProvider`, so a Node host passes
|
|
35
|
+
* this one through `context.fileSystemProvider` (see {@link NodeFileSystem})
|
|
36
|
+
* to get real disk I/O.
|
|
28
37
|
*/
|
|
29
38
|
export class DefaultFileSystemProvider extends NodeFileSystemProvider {
|
|
30
39
|
services;
|
|
@@ -36,14 +45,98 @@ export class DefaultFileSystemProvider extends NodeFileSystemProvider {
|
|
|
36
45
|
this.selfSaveRegistry = services.workspace.SelfSaveRegistry;
|
|
37
46
|
this.tracer = services.Tracer.for(options.logName ?? this.constructor.name).trace('instantiated');
|
|
38
47
|
}
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Whether `uri` names something this provider can reach on disk.
|
|
50
|
+
*
|
|
51
|
+
* Only a `file:` URI does. `URI.fsPath` yields a path for ANY scheme — for a
|
|
52
|
+
* hierarchical one it is the path component, which for a schemed URI with no
|
|
53
|
+
* authority comes out RELATIVE — so delegating an unrecognised scheme to Node
|
|
54
|
+
* does not fail, it probes `<cwd>/<path>` and answers about whatever
|
|
55
|
+
* unrelated file happens to sit there. A server whose working directory is
|
|
56
|
+
* the workspace root makes that collision ordinary rather than exotic.
|
|
57
|
+
*
|
|
58
|
+
* Note the deliberate disagreement with {@link realpath}, which treats a
|
|
59
|
+
* non-`file:` URI as PRESENT. The two degrade in opposite directions because
|
|
60
|
+
* they answer different questions: identity has to hand back a usable URI, so
|
|
61
|
+
* its safe answer is the one it was given, while occupancy and content must
|
|
62
|
+
* not be invented from an unrelated path, so their safe answer is "nothing
|
|
63
|
+
* here". A subclass adding a second on-disk scheme widens this and nothing
|
|
64
|
+
* else.
|
|
65
|
+
*/
|
|
66
|
+
servesFromDisk(uri) {
|
|
67
|
+
return uri.scheme === 'file';
|
|
68
|
+
}
|
|
69
|
+
// Each read answers from disk for a path this provider can reach, and
|
|
70
|
+
// otherwise with the filesystem's own "nothing here" — never a probe
|
|
71
|
+
// against a path derived from a URI that names no disk location.
|
|
41
72
|
readFile(uri) {
|
|
42
|
-
|
|
43
|
-
return served !== undefined ? Promise.resolve(served) : super.readFile(uri);
|
|
73
|
+
return this.servesFromDisk(uri) ? super.readFile(uri) : Promise.reject(noSuchFile(uri));
|
|
44
74
|
}
|
|
45
75
|
readFileSync(uri) {
|
|
46
|
-
|
|
76
|
+
if (!this.servesFromDisk(uri)) {
|
|
77
|
+
throw noSuchFile(uri);
|
|
78
|
+
}
|
|
79
|
+
return super.readFileSync(uri);
|
|
80
|
+
}
|
|
81
|
+
readBinary(uri) {
|
|
82
|
+
return this.servesFromDisk(uri) ? super.readBinary(uri) : Promise.reject(noSuchFile(uri));
|
|
83
|
+
}
|
|
84
|
+
readBinarySync(uri) {
|
|
85
|
+
if (!this.servesFromDisk(uri)) {
|
|
86
|
+
throw noSuchFile(uri);
|
|
87
|
+
}
|
|
88
|
+
return super.readBinarySync(uri);
|
|
89
|
+
}
|
|
90
|
+
stat(uri) {
|
|
91
|
+
return this.servesFromDisk(uri) ? super.stat(uri) : Promise.reject(noSuchPath(uri));
|
|
92
|
+
}
|
|
93
|
+
statSync(uri) {
|
|
94
|
+
if (!this.servesFromDisk(uri)) {
|
|
95
|
+
throw noSuchPath(uri);
|
|
96
|
+
}
|
|
97
|
+
return super.statSync(uri);
|
|
98
|
+
}
|
|
99
|
+
// Delegating to `existsSync` would be shorter and would put a blocking stat
|
|
100
|
+
// on the async path.
|
|
101
|
+
async exists(uri) {
|
|
102
|
+
return this.servesFromDisk(uri) ? super.exists(uri) : false;
|
|
103
|
+
}
|
|
104
|
+
existsSync(uri) {
|
|
105
|
+
return this.servesFromDisk(uri) ? super.existsSync(uri) : false;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* On Windows a miss is polled for up to {@link RENAME_GAP_BUDGET_MS}, since a
|
|
109
|
+
* replacing rename there can hide the name from a reader for a while; it
|
|
110
|
+
* answers `true` as soon as the file is back. Elsewhere a miss is final.
|
|
111
|
+
*/
|
|
112
|
+
async existsSettled(uri) {
|
|
113
|
+
if (await this.exists(uri)) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
if (!this.servesFromDisk(uri) || process.platform !== 'win32') {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// A stopwatch, not two `now()` readings: a wall-clock jump would end the
|
|
120
|
+
// wait early, removing a file that is only being replaced.
|
|
121
|
+
const waited = this.services.Clock.stopwatch();
|
|
122
|
+
while (waited.elapsedMs < RENAME_GAP_BUDGET_MS) {
|
|
123
|
+
// Not `clock.setTimer`: it unrefs its timer, so a process with only
|
|
124
|
+
// this check pending could exit mid-wait.
|
|
125
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
126
|
+
if (await this.exists(uri)) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
// A URI this provider cannot reach on disk has no children rather than an
|
|
133
|
+
// error: a workspace walk enumerates folders it was handed, and failing one
|
|
134
|
+
// aborts the walk where an empty listing simply contributes nothing.
|
|
135
|
+
readDirectory(uri) {
|
|
136
|
+
return this.servesFromDisk(uri) ? super.readDirectory(uri) : Promise.resolve([]);
|
|
137
|
+
}
|
|
138
|
+
readDirectorySync(uri) {
|
|
139
|
+
return this.servesFromDisk(uri) ? super.readDirectorySync(uri) : [];
|
|
47
140
|
}
|
|
48
141
|
/**
|
|
49
142
|
* Write `content` to `uri` via a staging file and a `rename` — or, onto a
|
|
@@ -55,8 +148,12 @@ export class DefaultFileSystemProvider extends NodeFileSystemProvider {
|
|
|
55
148
|
* overwrite cannot offer that, because the target is truncated before the
|
|
56
149
|
* first byte lands, so a reader in that window gets a short or empty file —
|
|
57
150
|
* and a model file that fails to parse is worse than one holding a previous
|
|
58
|
-
* good revision.
|
|
59
|
-
*
|
|
151
|
+
* good revision. On Windows the replacing rename also leaves the name
|
|
152
|
+
* unresolvable for a moment, so a reader there can find the file missing
|
|
153
|
+
* (`ENOENT`) or refused (`EPERM`), never torn, and must not take either for
|
|
154
|
+
* a deletion; {@link existsSettled} waits that moment out. It does NOT
|
|
155
|
+
* serialise writers: two writers still race, and the loser's content is
|
|
156
|
+
* replaced wholesale rather than interleaved.
|
|
60
157
|
*
|
|
61
158
|
* The destination is the RESOLVED path, via {@link realpath}: a `rename`
|
|
62
159
|
* onto a symlink replaces the link itself with a regular file and leaves the
|
|
@@ -92,6 +189,17 @@ export class DefaultFileSystemProvider extends NodeFileSystemProvider {
|
|
|
92
189
|
* only possible, which is what settles the trade.
|
|
93
190
|
*/
|
|
94
191
|
async writeFile(uri, content) {
|
|
192
|
+
// BEFORE the `mkdir`, and before any other OS path is derived. The read
|
|
193
|
+
// surface degrades to "nothing here" for a URI naming no disk location;
|
|
194
|
+
// a write has no such harmless degradation — `fsPath` would hand it a
|
|
195
|
+
// real path regardless of scheme, so an unguarded write does not fail,
|
|
196
|
+
// it CREATES a file (and the directories above it) somewhere unrelated.
|
|
197
|
+
// Rejecting is the only safe answer: a caller holding a `memory:` or
|
|
198
|
+
// `untitled:` document has nowhere for it to go, and inventing a
|
|
199
|
+
// destination from the path component is never what it meant.
|
|
200
|
+
if (!this.servesFromDisk(uri)) {
|
|
201
|
+
throw unsupportedWrite(uri);
|
|
202
|
+
}
|
|
95
203
|
await fsp.mkdir(UriUtils.dirname(uri).fsPath, { recursive: true });
|
|
96
204
|
const destination = this.realpath(uri)?.fsPath ?? uri.fsPath;
|
|
97
205
|
const replaced = await replacedFile(destination);
|
|
@@ -125,6 +233,15 @@ export class DefaultFileSystemProvider extends NodeFileSystemProvider {
|
|
|
125
233
|
}
|
|
126
234
|
}
|
|
127
235
|
async mtimeMs(uri) {
|
|
236
|
+
// Same rule as the read surface, and "unknown" is already the answer the
|
|
237
|
+
// caller handles — so a URI naming no disk location reports no mtime
|
|
238
|
+
// rather than the modification time of whatever occupies its `fsPath`.
|
|
239
|
+
// A stamp borrowed from an unrelated file is worse than none: the
|
|
240
|
+
// self-save registry keys on it to suppress a watcher echo, so a
|
|
241
|
+
// coincidental match would drop a real external change.
|
|
242
|
+
if (!this.servesFromDisk(uri)) {
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
128
245
|
try {
|
|
129
246
|
const stat = await fsp.stat(uri.fsPath);
|
|
130
247
|
return stat.mtimeMs;
|
|
@@ -158,6 +275,18 @@ export class DefaultFileSystemProvider extends NodeFileSystemProvider {
|
|
|
158
275
|
}
|
|
159
276
|
}
|
|
160
277
|
}
|
|
278
|
+
/** The "no content here" rejection, for a URI naming no readable file. */
|
|
279
|
+
function noSuchFile(uri) {
|
|
280
|
+
return new Error(NO_SUCH_FILE.format({ uri: uri.toString() }));
|
|
281
|
+
}
|
|
282
|
+
/** The "nothing occupies this" rejection, for a URI naming no filesystem node. */
|
|
283
|
+
function noSuchPath(uri) {
|
|
284
|
+
return new Error(NO_SUCH_PATH.format({ uri: uri.toString() }));
|
|
285
|
+
}
|
|
286
|
+
/** The "nowhere to put this" rejection, for a write to a URI with no disk backing. */
|
|
287
|
+
function unsupportedWrite(uri) {
|
|
288
|
+
return new Error(UNSUPPORTED_WRITE.format({ uri: uri.toString() }));
|
|
289
|
+
}
|
|
161
290
|
/**
|
|
162
291
|
* Facts about the regular file `path` replaces, or `undefined` when there is
|
|
163
292
|
* nothing to replace — the path is absent (a create, which takes the process
|
|
@@ -173,46 +302,6 @@ async function replacedFile(path) {
|
|
|
173
302
|
return undefined;
|
|
174
303
|
}
|
|
175
304
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Errno values a rename reports on Windows when another handle holds the
|
|
178
|
-
* destination open. POSIX renames are unaffected by open handles, so this
|
|
179
|
-
* cannot fire there and the retry below costs nothing.
|
|
180
|
-
*/
|
|
181
|
-
const RENAME_CONTENTION_CODES = new Set(['EPERM', 'EACCES', 'EBUSY']);
|
|
182
|
-
/**
|
|
183
|
-
* `rename` the staged content over `destination`, retrying while Windows
|
|
184
|
-
* reports the destination as held open.
|
|
185
|
-
*
|
|
186
|
-
* The staging file exists so a reader never sees a half-written file, and on
|
|
187
|
-
* Windows the very presence of that reader is what makes the replacing rename
|
|
188
|
-
* fail — so the indivisible write breaks under exactly the contention it was
|
|
189
|
-
* built for, and it breaks intermittently, which is worse than never working.
|
|
190
|
-
* A reader's handle is released in milliseconds, so waiting turns a spurious
|
|
191
|
-
* failure into a slightly later success.
|
|
192
|
-
*
|
|
193
|
-
* BOUNDED, not open-ended: a genuine permission fault raises the same errno and
|
|
194
|
-
* is distinguishable from contention only by never clearing, so an unbounded
|
|
195
|
-
* wait would convert a hard error into a hang. Exhausting the budget rethrows
|
|
196
|
-
* the last failure, leaving the caller's cleanup and error contract unchanged.
|
|
197
|
-
*/
|
|
198
|
-
async function renameOverOpenReaders(staging, destination) {
|
|
199
|
-
const deadline = Date.now() + 2_000;
|
|
200
|
-
for (let attempt = 0;; attempt++) {
|
|
201
|
-
try {
|
|
202
|
-
await fsp.rename(staging, destination);
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
catch (err) {
|
|
206
|
-
const code = err instanceof Error && 'code' in err ? String(err.code) : undefined;
|
|
207
|
-
if (code === undefined || !RENAME_CONTENTION_CODES.has(code) || Date.now() >= deadline) {
|
|
208
|
-
throw err;
|
|
209
|
-
}
|
|
210
|
-
// Backs off to keep a long contention window from spinning, capped so
|
|
211
|
-
// a late attempt still lands promptly once the handle is released.
|
|
212
|
-
await new Promise(resolve => setTimeout(resolve, Math.min(2 ** attempt, 50)));
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
305
|
/**
|
|
217
306
|
* Module fragment that binds the writable Node {@link DefaultFileSystemProvider},
|
|
218
307
|
* spread into the services context on a Node host.
|