veryfront 0.1.215 → 0.1.217
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 +1 -1
- package/esm/cli/commands/extension/command-help.d.ts +3 -0
- package/esm/cli/commands/extension/command-help.d.ts.map +1 -0
- package/esm/cli/commands/extension/command-help.js +16 -0
- package/esm/cli/commands/extension/handler.d.ts +3 -0
- package/esm/cli/commands/extension/handler.d.ts.map +1 -0
- package/esm/cli/commands/extension/handler.js +36 -0
- package/esm/cli/commands/extension/init-command.d.ts +19 -0
- package/esm/cli/commands/extension/init-command.d.ts.map +1 -0
- package/esm/cli/commands/extension/init-command.js +122 -0
- package/esm/cli/commands/extension/validate-command.d.ts +13 -0
- package/esm/cli/commands/extension/validate-command.d.ts.map +1 -0
- package/esm/cli/commands/extension/validate-command.js +62 -0
- package/esm/cli/commands/generate/integration-generator-helpers.d.ts +35 -0
- package/esm/cli/commands/generate/integration-generator-helpers.d.ts.map +1 -0
- package/esm/cli/commands/generate/integration-generator-helpers.js +123 -0
- package/esm/cli/commands/generate/integration-generator.d.ts +1 -2
- package/esm/cli/commands/generate/integration-generator.d.ts.map +1 -1
- package/esm/cli/commands/generate/integration-generator.js +1 -123
- package/esm/cli/commands/knowledge/command-helpers.d.ts +48 -0
- package/esm/cli/commands/knowledge/command-helpers.d.ts.map +1 -0
- package/esm/cli/commands/knowledge/command-helpers.js +216 -0
- package/esm/cli/commands/knowledge/command.d.ts +12 -17
- package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/command.js +26 -214
- package/esm/cli/help/command-definitions.d.ts.map +1 -1
- package/esm/cli/help/command-definitions.js +2 -0
- package/esm/cli/mcp/remote-file-tool-helpers.d.ts +5 -0
- package/esm/cli/mcp/remote-file-tool-helpers.d.ts.map +1 -0
- package/esm/cli/mcp/remote-file-tool-helpers.js +22 -0
- package/esm/cli/mcp/remote-file-tools.d.ts.map +1 -1
- package/esm/cli/mcp/remote-file-tools.js +1 -22
- package/esm/cli/router.d.ts.map +1 -1
- package/esm/cli/router.js +2 -0
- package/esm/cli/templates/integration-loader-helpers.d.ts +8 -0
- package/esm/cli/templates/integration-loader-helpers.d.ts.map +1 -0
- package/esm/cli/templates/integration-loader-helpers.js +29 -0
- package/esm/cli/templates/integration-loader.d.ts.map +1 -1
- package/esm/cli/templates/integration-loader.js +5 -21
- package/esm/cli/templates/manifest.d.ts +1 -0
- package/esm/cli/templates/manifest.js +2 -1
- package/esm/deno.d.ts +3 -0
- package/esm/deno.js +5 -2
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +48 -90
- package/esm/src/chat/ag-ui-helpers.d.ts +17 -0
- package/esm/src/chat/ag-ui-helpers.d.ts.map +1 -0
- package/esm/src/chat/ag-ui-helpers.js +111 -0
- package/esm/src/chat/ag-ui.d.ts.map +1 -1
- package/esm/src/chat/ag-ui.js +1 -111
- package/esm/src/config/schemas/config.schema.d.ts +1 -0
- package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
- package/esm/src/config/schemas/config.schema.js +11 -0
- package/esm/src/config/schemas/index.d.ts +11 -1
- package/esm/src/config/schemas/index.d.ts.map +1 -1
- package/esm/src/errors/error-registry-helpers.d.ts +6 -0
- package/esm/src/errors/error-registry-helpers.d.ts.map +1 -0
- package/esm/src/errors/error-registry-helpers.js +9 -0
- package/esm/src/errors/error-registry.d.ts.map +1 -1
- package/esm/src/errors/error-registry.js +4 -3
- package/esm/src/extensions/capabilities.d.ts +20 -0
- package/esm/src/extensions/capabilities.d.ts.map +1 -0
- package/esm/src/extensions/capabilities.js +77 -0
- package/esm/src/extensions/contracts.d.ts +10 -0
- package/esm/src/extensions/contracts.d.ts.map +1 -0
- package/esm/src/extensions/contracts.js +28 -0
- package/esm/src/extensions/discovery.d.ts +48 -0
- package/esm/src/extensions/discovery.d.ts.map +1 -0
- package/esm/src/extensions/discovery.js +179 -0
- package/esm/src/extensions/errors.d.ts +10 -0
- package/esm/src/extensions/errors.d.ts.map +1 -0
- package/esm/src/extensions/errors.js +34 -0
- package/esm/src/extensions/factory-loader.d.ts +29 -0
- package/esm/src/extensions/factory-loader.d.ts.map +1 -0
- package/esm/src/extensions/factory-loader.js +63 -0
- package/esm/src/extensions/index.d.ts +37 -0
- package/esm/src/extensions/index.d.ts.map +1 -0
- package/esm/src/extensions/index.js +41 -0
- package/esm/src/extensions/interfaces/ai-model-provider.d.ts +94 -0
- package/esm/src/extensions/interfaces/ai-model-provider.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/ai-model-provider.js +8 -0
- package/esm/src/extensions/interfaces/auth-provider.d.ts +49 -0
- package/esm/src/extensions/interfaces/auth-provider.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/auth-provider.js +8 -0
- package/esm/src/extensions/interfaces/bundler.d.ts +118 -0
- package/esm/src/extensions/interfaces/bundler.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/bundler.js +8 -0
- package/esm/src/extensions/interfaces/cache-store.d.ts +27 -0
- package/esm/src/extensions/interfaces/cache-store.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/cache-store.js +8 -0
- package/esm/src/extensions/interfaces/code-parser.d.ts +76 -0
- package/esm/src/extensions/interfaces/code-parser.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/code-parser.js +8 -0
- package/esm/src/extensions/interfaces/content-transformer.d.ts +40 -0
- package/esm/src/extensions/interfaces/content-transformer.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/content-transformer.js +8 -0
- package/esm/src/extensions/interfaces/css-processor.d.ts +38 -0
- package/esm/src/extensions/interfaces/css-processor.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/css-processor.js +8 -0
- package/esm/src/extensions/interfaces/database-client.d.ts +31 -0
- package/esm/src/extensions/interfaces/database-client.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/database-client.js +8 -0
- package/esm/src/extensions/interfaces/embedding-provider.d.ts +37 -0
- package/esm/src/extensions/interfaces/embedding-provider.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/embedding-provider.js +8 -0
- package/esm/src/extensions/interfaces/index.d.ts +21 -0
- package/esm/src/extensions/interfaces/index.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/index.js +9 -0
- package/esm/src/extensions/interfaces/node-compat.d.ts +25 -0
- package/esm/src/extensions/interfaces/node-compat.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/node-compat.js +8 -0
- package/esm/src/extensions/interfaces/schema-validator.d.ts +46 -0
- package/esm/src/extensions/interfaces/schema-validator.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/schema-validator.js +8 -0
- package/esm/src/extensions/interfaces/tracing-exporter.d.ts +44 -0
- package/esm/src/extensions/interfaces/tracing-exporter.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/tracing-exporter.js +8 -0
- package/esm/src/extensions/loader.d.ts +33 -0
- package/esm/src/extensions/loader.d.ts.map +1 -0
- package/esm/src/extensions/loader.js +209 -0
- package/esm/src/extensions/orchestrate.d.ts +54 -0
- package/esm/src/extensions/orchestrate.d.ts.map +1 -0
- package/esm/src/extensions/orchestrate.js +116 -0
- package/esm/src/extensions/recommendations.d.ts +7 -0
- package/esm/src/extensions/recommendations.d.ts.map +1 -0
- package/esm/src/extensions/recommendations.js +22 -0
- package/esm/src/extensions/types.d.ts +47 -0
- package/esm/src/extensions/types.d.ts.map +1 -0
- package/esm/src/extensions/types.js +6 -0
- package/esm/src/extensions/validation.d.ts +44 -0
- package/esm/src/extensions/validation.d.ts.map +1 -0
- package/esm/src/extensions/validation.js +115 -0
- package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
- package/esm/src/html/styles-builder/plugin-loader.js +23 -0
- package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts +29 -0
- package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts.map +1 -0
- package/esm/src/html/styles-builder/tailwind-plugin-allowlist.js +48 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts +15 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts.map +1 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.js +22 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +0 -2
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/loader.js +4 -24
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts +19 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts.map +1 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.js +26 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/adapter.js +4 -20
- package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts +1 -0
- package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.js +3 -0
- package/esm/src/platform/adapters/fs/veryfront/read-operations.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/read-operations.js +4 -7
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts +28 -0
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts.map +1 -0
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.js +41 -0
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts +1 -4
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager.js +7 -40
- package/esm/src/platform/compat/process/command.d.ts +31 -0
- package/esm/src/platform/compat/process/command.d.ts.map +1 -0
- package/esm/src/platform/compat/process/command.js +193 -0
- package/esm/src/platform/compat/process/env.d.ts +31 -0
- package/esm/src/platform/compat/process/env.d.ts.map +1 -0
- package/esm/src/platform/compat/process/env.js +175 -0
- package/esm/src/platform/compat/process/lifecycle.d.ts +98 -0
- package/esm/src/platform/compat/process/lifecycle.d.ts.map +1 -0
- package/esm/src/platform/compat/process/lifecycle.js +305 -0
- package/esm/src/platform/compat/process/runtime-process.d.ts +10 -0
- package/esm/src/platform/compat/process/runtime-process.d.ts.map +1 -0
- package/esm/src/platform/compat/process/runtime-process.js +24 -0
- package/esm/src/platform/compat/process.d.ts +4 -165
- package/esm/src/platform/compat/process.d.ts.map +1 -1
- package/esm/src/platform/compat/process.js +4 -682
- package/esm/src/platform/index.d.ts +1 -1
- package/esm/src/platform/index.d.ts.map +1 -1
- package/esm/src/provider/runtime-loader/provider-endpoints.d.ts +8 -0
- package/esm/src/provider/runtime-loader/provider-endpoints.d.ts.map +1 -0
- package/esm/src/provider/runtime-loader/provider-endpoints.js +27 -0
- package/esm/src/provider/runtime-loader/provider-request-init.d.ts +32 -0
- package/esm/src/provider/runtime-loader/provider-request-init.d.ts.map +1 -0
- package/esm/src/provider/runtime-loader/provider-request-init.js +67 -0
- package/esm/src/provider/runtime-loader/tool-input-status.d.ts +17 -0
- package/esm/src/provider/runtime-loader/tool-input-status.d.ts.map +1 -0
- package/esm/src/provider/runtime-loader/tool-input-status.js +155 -0
- package/esm/src/provider/runtime-loader.d.ts +2 -3
- package/esm/src/provider/runtime-loader.d.ts.map +1 -1
- package/esm/src/provider/runtime-loader.js +92 -291
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +14 -0
- package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts +8 -0
- package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts.map +1 -0
- package/esm/src/rendering/orchestrator/pipeline-helpers.js +20 -0
- package/esm/src/rendering/orchestrator/pipeline.d.ts +0 -3
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +4 -22
- package/esm/src/routing/api/module-loader/loader-helpers.d.ts +10 -0
- package/esm/src/routing/api/module-loader/loader-helpers.d.ts.map +1 -0
- package/esm/src/routing/api/module-loader/loader-helpers.js +62 -0
- package/esm/src/routing/api/module-loader/loader.d.ts +1 -1
- package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/loader.js +2 -60
- package/esm/src/server/bootstrap.d.ts +22 -2
- package/esm/src/server/bootstrap.d.ts.map +1 -1
- package/esm/src/server/bootstrap.js +67 -5
- package/esm/src/server/dev-ui/manifest.d.ts +2 -0
- package/esm/src/server/dev-ui/manifest.js +3 -1
- package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/project-discovery.js +14 -8
- package/esm/src/server/production-server.js +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +2 -2
- package/esm/src/server/utils/domain-parser.d.ts.map +1 -1
- package/esm/src/server/utils/domain-parser.js +4 -0
- package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
- package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
- package/esm/src/tool/index.d.ts +1 -1
- package/esm/src/tool/index.d.ts.map +1 -1
- package/esm/src/tool/types.d.ts +20 -0
- package/esm/src/tool/types.d.ts.map +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +7 -1
- package/src/cli/commands/extension/command-help.ts +18 -0
- package/src/cli/commands/extension/handler.ts +41 -0
- package/src/cli/commands/extension/init-command.ts +140 -0
- package/src/cli/commands/extension/validate-command.ts +78 -0
- package/src/cli/commands/generate/integration-generator-helpers.ts +185 -0
- package/src/cli/commands/generate/integration-generator.ts +12 -168
- package/src/cli/commands/knowledge/command-helpers.ts +295 -0
- package/src/cli/commands/knowledge/command.ts +34 -261
- package/src/cli/help/command-definitions.ts +2 -0
- package/src/cli/mcp/remote-file-tool-helpers.ts +27 -0
- package/src/cli/mcp/remote-file-tools.ts +6 -28
- package/src/cli/router.ts +2 -0
- package/src/cli/templates/integration-loader-helpers.ts +49 -0
- package/src/cli/templates/integration-loader.ts +10 -28
- package/src/cli/templates/manifest.js +2 -1
- package/src/deno.js +5 -2
- package/src/src/agent/runtime/index.ts +77 -94
- package/src/src/chat/ag-ui-helpers.ts +139 -0
- package/src/src/chat/ag-ui.ts +11 -139
- package/src/src/config/schemas/config.schema.ts +11 -0
- package/src/src/config/schemas/index.ts +15 -1
- package/src/src/errors/error-registry-helpers.ts +23 -0
- package/src/src/errors/error-registry.ts +8 -3
- package/src/src/extensions/capabilities.ts +97 -0
- package/src/src/extensions/contracts.ts +36 -0
- package/src/src/extensions/discovery.ts +221 -0
- package/src/src/extensions/errors.ts +39 -0
- package/src/src/extensions/factory-loader.ts +76 -0
- package/src/src/extensions/index.ts +79 -0
- package/src/src/extensions/interfaces/ai-model-provider.ts +100 -0
- package/src/src/extensions/interfaces/auth-provider.ts +52 -0
- package/src/src/extensions/interfaces/bundler.ts +116 -0
- package/src/src/extensions/interfaces/cache-store.ts +27 -0
- package/src/src/extensions/interfaces/code-parser.ts +84 -0
- package/src/src/extensions/interfaces/content-transformer.ts +38 -0
- package/src/src/extensions/interfaces/css-processor.ts +40 -0
- package/src/src/extensions/interfaces/database-client.ts +35 -0
- package/src/src/extensions/interfaces/embedding-provider.ts +39 -0
- package/src/src/extensions/interfaces/index.ts +81 -0
- package/src/src/extensions/interfaces/node-compat.ts +25 -0
- package/src/src/extensions/interfaces/schema-validator.ts +51 -0
- package/src/src/extensions/interfaces/tracing-exporter.ts +42 -0
- package/src/src/extensions/loader.ts +245 -0
- package/src/src/extensions/orchestrate.ts +184 -0
- package/src/src/extensions/recommendations.ts +24 -0
- package/src/src/extensions/types.ts +57 -0
- package/src/src/extensions/validation.ts +147 -0
- package/src/src/html/styles-builder/plugin-loader.ts +32 -0
- package/src/src/html/styles-builder/tailwind-plugin-allowlist.ts +51 -0
- package/src/src/modules/react-loader/ssr-module-loader/loader-helpers.ts +37 -0
- package/src/src/modules/react-loader/ssr-module-loader/loader.ts +8 -39
- package/src/src/platform/adapters/fs/veryfront/adapter-helpers.ts +43 -0
- package/src/src/platform/adapters/fs/veryfront/adapter.ts +8 -22
- package/src/src/platform/adapters/fs/veryfront/read-operations-helpers.ts +4 -0
- package/src/src/platform/adapters/fs/veryfront/read-operations.ts +4 -7
- package/src/src/platform/adapters/fs/veryfront/websocket-manager-helpers.ts +73 -0
- package/src/src/platform/adapters/fs/veryfront/websocket-manager.ts +29 -44
- package/src/src/platform/compat/process/command.ts +297 -0
- package/src/src/platform/compat/process/env.ts +227 -0
- package/src/src/platform/compat/process/lifecycle.ts +330 -0
- package/src/src/platform/compat/process/runtime-process.ts +27 -0
- package/src/src/platform/compat/process.ts +37 -870
- package/src/src/platform/index.ts +1 -0
- package/src/src/provider/runtime-loader/provider-endpoints.ts +50 -0
- package/src/src/provider/runtime-loader/provider-request-init.ts +101 -0
- package/src/src/provider/runtime-loader/tool-input-status.ts +210 -0
- package/src/src/provider/runtime-loader.ts +113 -368
- package/src/src/proxy/handler.ts +16 -0
- package/src/src/rendering/orchestrator/pipeline-helpers.ts +35 -0
- package/src/src/rendering/orchestrator/pipeline.ts +8 -35
- package/src/src/routing/api/module-loader/loader-helpers.ts +68 -0
- package/src/src/routing/api/module-loader/loader.ts +8 -65
- package/src/src/server/bootstrap.ts +88 -7
- package/src/src/server/dev-ui/manifest.js +3 -1
- package/src/src/server/handlers/request/api/project-discovery.ts +19 -8
- package/src/src/server/production-server.ts +1 -1
- package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +2 -2
- package/src/src/server/utils/domain-parser.ts +4 -0
- package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
- package/src/src/tool/index.ts +1 -0
- package/src/src/tool/types.ts +21 -0
- package/src/src/utils/version-constant.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-operations.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/read-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-operations.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/read-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAcpE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAQ9B,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAfpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI9B;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA6B;gBAGnD,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,sBAAsB,YAAA,EACxC,kBAAkB,CAAC,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,aAAA,EAC7C,gBAAgB,CAAC,GAAE,MAAM,OAAO,CAC/C,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CACtD,aAAA;IAKH,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIrD,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAY3C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY3C,OAAO,CAAC,mBAAmB;YAsBb,+BAA+B;YA0C/B,mBAAmB;IA0CjC,OAAO,CAAC,kBAAkB;YAoFZ,2BAA2B;YAmD3B,uCAAuC;IAiCrD,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,qBAAqB;YAYf,YAAY;YA6JZ,qBAAqB;YAwDrB,qBAAqB;YA8CrB,+BAA+B;YAwD/B,iBAAiB;CAuBhC"}
|
|
@@ -4,15 +4,12 @@ import { logContentMetric } from "./content-metrics.js";
|
|
|
4
4
|
import { FileListIndex } from "./file-list-index.js";
|
|
5
5
|
import { InFlightRequestDeduper } from "./in-flight-dedupe.js";
|
|
6
6
|
import { getRequestScopedFile, setRequestScopedFile } from "./multi-project-adapter.js";
|
|
7
|
-
import { assertProjectSourcePath, buildExtensionCandidatePaths, buildReadFetchState, createNotFoundLikeError, getResolvedCacheKey, isNotFoundLikeError, READ_OPERATION_EXTENSION_PRIORITY as EXTENSION_PRIORITY, splitKnownFileExtension, } from "./read-operations-helpers.js";
|
|
7
|
+
import { assertProjectSourcePath, buildContentPreview, buildExtensionCandidatePaths, buildReadFetchState, createNotFoundLikeError, getResolvedCacheKey, isNotFoundLikeError, READ_OPERATION_EXTENSION_PRIORITY as EXTENSION_PRIORITY, splitKnownFileExtension, } from "./read-operations-helpers.js";
|
|
8
8
|
export { endRequestMetrics, getContentMetricsSnapshot, resetContentMetrics, startRequestMetrics, } from "./content-metrics.js";
|
|
9
9
|
const logger = baseLogger.component("read-operations");
|
|
10
10
|
const IN_FLIGHT_REQUEST_TIMEOUT_MS = 15_000;
|
|
11
11
|
const MAX_IN_FLIGHT_REQUESTS = 100;
|
|
12
12
|
const IN_FLIGHT_CLEANUP_INTERVAL_MS = 1_000;
|
|
13
|
-
function previewText(content, max = 80) {
|
|
14
|
-
return content.length > max ? `${content.slice(0, max)}...` : content;
|
|
15
|
-
}
|
|
16
13
|
export class ReadOperations {
|
|
17
14
|
client;
|
|
18
15
|
cache;
|
|
@@ -71,7 +68,7 @@ export class ReadOperations {
|
|
|
71
68
|
path: normalizedPath,
|
|
72
69
|
cacheKey,
|
|
73
70
|
contentLength: requestCached.length,
|
|
74
|
-
preview:
|
|
71
|
+
preview: buildContentPreview(requestCached).replace(/\n/g, "\\n"),
|
|
75
72
|
});
|
|
76
73
|
return requestCached;
|
|
77
74
|
}
|
|
@@ -101,7 +98,7 @@ export class ReadOperations {
|
|
|
101
98
|
path: normalizedPath,
|
|
102
99
|
cacheKey,
|
|
103
100
|
contentLength: cached.length,
|
|
104
|
-
preview:
|
|
101
|
+
preview: buildContentPreview(cached).replace(/\n/g, "\\n"),
|
|
105
102
|
});
|
|
106
103
|
setRequestScopedFile(cacheKey, cached);
|
|
107
104
|
return cached;
|
|
@@ -481,7 +478,7 @@ export class ReadOperations {
|
|
|
481
478
|
logger.debug("API_FETCH_DONE - got content from API", {
|
|
482
479
|
path: normalizedPath,
|
|
483
480
|
contentLength: content.length,
|
|
484
|
-
preview:
|
|
481
|
+
preview: buildContentPreview(content).replace(/\n/g, "\\n"),
|
|
485
482
|
willCache: shouldCache,
|
|
486
483
|
});
|
|
487
484
|
return this.storeFetchedContent(cacheKey, content, shouldCache);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ContentSource, ResolvedContentContext } from "./types.js";
|
|
2
|
+
export declare const INVALIDATION_DEBOUNCE_MS = 100;
|
|
3
|
+
export declare const WS_RECONNECT_DELAY_MS = 5000;
|
|
4
|
+
export declare const WS_RECONNECT_MAX_DELAY_MS = 120000;
|
|
5
|
+
export declare const WS_RECONNECT_MAX_FAILURES = 10;
|
|
6
|
+
export declare const WS_HEARTBEAT_INTERVAL_MS = 60000;
|
|
7
|
+
export declare const WS_HEARTBEAT_TIMEOUT_MS = 300000;
|
|
8
|
+
export interface PreviewStyleArtifactInfo {
|
|
9
|
+
hash: string;
|
|
10
|
+
assetPath: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function getConnectionLogContext(projectSlug: string | undefined, context?: Record<string, unknown>): Record<string, unknown>;
|
|
13
|
+
export declare function getPreviewInvalidationPrefixes(contentContext: ResolvedContentContext | null): string[];
|
|
14
|
+
export declare function getReconnectDelay(consecutiveFailures: number): number;
|
|
15
|
+
export declare function buildReloadProjectContext(contentContext: ResolvedContentContext | null, projectSlug: string, projectId: string, preparedStyleArtifact?: PreviewStyleArtifactInfo): {
|
|
16
|
+
projectSlug: string;
|
|
17
|
+
projectId: string;
|
|
18
|
+
environment: "preview" | "production";
|
|
19
|
+
branch: string | null;
|
|
20
|
+
releaseId: string | null;
|
|
21
|
+
styleArtifactHash: string | undefined;
|
|
22
|
+
styleAssetPath: string | undefined;
|
|
23
|
+
};
|
|
24
|
+
export declare function buildContentSourceLabel(getContentSource: () => ContentSource, getContentContext: () => ResolvedContentContext | null): {
|
|
25
|
+
contentSource: ContentSource;
|
|
26
|
+
branch: string | null;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=websocket-manager-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-manager-helpers.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/websocket-manager-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGxE,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,sBAAsB,GAAG,IAAI,GAC5C,MAAM,EAAE,CAGV;AAED,wBAAgB,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,sBAAsB,GAAG,IAAI,EAC7C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,qBAAqB,CAAC,EAAE,wBAAwB,GAC/C;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAcA;AAED,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,MAAM,aAAa,EACrC,iBAAiB,EAAE,MAAM,sBAAsB,GAAG,IAAI,GACrD;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAKzD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { buildFileCacheKeyPrefix } from "./cache-keys.js";
|
|
2
|
+
export const INVALIDATION_DEBOUNCE_MS = 100;
|
|
3
|
+
export const WS_RECONNECT_DELAY_MS = 5000;
|
|
4
|
+
export const WS_RECONNECT_MAX_DELAY_MS = 120000;
|
|
5
|
+
export const WS_RECONNECT_MAX_FAILURES = 10;
|
|
6
|
+
export const WS_HEARTBEAT_INTERVAL_MS = 60000;
|
|
7
|
+
export const WS_HEARTBEAT_TIMEOUT_MS = 300000;
|
|
8
|
+
export function getConnectionLogContext(projectSlug, context = {}) {
|
|
9
|
+
if (!projectSlug)
|
|
10
|
+
return context;
|
|
11
|
+
return { projectSlug, ...context };
|
|
12
|
+
}
|
|
13
|
+
export function getPreviewInvalidationPrefixes(contentContext) {
|
|
14
|
+
if (contentContext?.sourceType !== "branch")
|
|
15
|
+
return [];
|
|
16
|
+
return [buildFileCacheKeyPrefix(contentContext)];
|
|
17
|
+
}
|
|
18
|
+
export function getReconnectDelay(consecutiveFailures) {
|
|
19
|
+
const delay = WS_RECONNECT_DELAY_MS * Math.pow(2, consecutiveFailures - 1);
|
|
20
|
+
return Math.min(delay, WS_RECONNECT_MAX_DELAY_MS);
|
|
21
|
+
}
|
|
22
|
+
export function buildReloadProjectContext(contentContext, projectSlug, projectId, preparedStyleArtifact) {
|
|
23
|
+
const environment = contentContext?.sourceType === "branch"
|
|
24
|
+
? "preview"
|
|
25
|
+
: "production";
|
|
26
|
+
return {
|
|
27
|
+
projectSlug,
|
|
28
|
+
projectId,
|
|
29
|
+
environment,
|
|
30
|
+
branch: contentContext?.branch ?? null,
|
|
31
|
+
releaseId: contentContext?.releaseId ?? null,
|
|
32
|
+
styleArtifactHash: preparedStyleArtifact?.hash,
|
|
33
|
+
styleAssetPath: preparedStyleArtifact?.assetPath,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function buildContentSourceLabel(getContentSource, getContentContext) {
|
|
37
|
+
return {
|
|
38
|
+
contentSource: getContentSource(),
|
|
39
|
+
branch: getContentContext()?.branch ?? null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import type { FileCache } from "../cache/file-cache.js";
|
|
2
2
|
import type { VeryfrontApiClient } from "../../veryfront-api-client/index.js";
|
|
3
3
|
import type { ContentSource, InvalidationCallbacks, ResolvedContentContext } from "./types.js";
|
|
4
|
-
|
|
5
|
-
hash: string;
|
|
6
|
-
assetPath: string;
|
|
7
|
-
}
|
|
4
|
+
import { type PreviewStyleArtifactInfo } from "./websocket-manager-helpers.js";
|
|
8
5
|
interface WebSocketDeps {
|
|
9
6
|
apiBaseUrl: string;
|
|
10
7
|
apiToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-manager.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/websocket-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket-manager.d.ts","sourceRoot":"","sources":["../../../../../../src/src/platform/adapters/fs/veryfront/websocket-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAY/F,OAAO,EAOL,KAAK,wBAAwB,EAK9B,MAAM,gCAAgC,CAAC;AAMxC,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,qBAAqB,EAAE,qBAAqB,CAAC;IAE7C,iBAAiB,EAAE,MAAM,sBAAsB,GAAG,IAAI,CAAC;IACvD,gBAAgB,EAAE,MAAM,aAAa,CAAC;IACtC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACxC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,CAAC,EAAE,CAClB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAC7C,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;CACpD;AAED,qBAAa,gBAAgB;IAqBf,OAAO,CAAC,QAAQ,CAAC,IAAI;IApBjC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,OAAO,CAAC,gBAAgB,CAAuD;IAC/E,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,iBAAiB,CAAsD;IAC/E,OAAO,CAAC,0BAA0B,CAAsD;IACxF,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,0BAA0B,CAAK;IACvC,OAAO,CAAC,iCAAiC,CAAqB;IAC9D,OAAO,CAAC,WAAW,CAIjB;gBAE2B,IAAI,EAAE,aAAa;IAEhD,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,8BAA8B;IAMtC,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,2BAA2B;IAUnC,cAAc,IAAI;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B;IAID,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA8GhC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,IAAI,IAAI;IA8Bf,OAAO,CAAC,iBAAiB;IAyJzB,OAAO,CAAC,8BAA8B;IA0GtC,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,6BAA6B;YAiBvB,4BAA4B;YAwI5B,mBAAmB;IA2IjC,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,WAAW;CAyBpB"}
|
|
@@ -2,13 +2,8 @@ import * as dntShim from "../../../../../_dnt.shims.js";
|
|
|
2
2
|
import { getBaseLogger } from "../../../../utils/logger/logger.js";
|
|
3
3
|
import { buildDirCacheKeyPrefix, buildFileCacheKeyPrefix, buildFileListCacheKey, buildStatCacheKeyPrefix, } from "./cache-keys.js";
|
|
4
4
|
import { addPendingInvalidation, getPendingInvalidationsCount, removePendingInvalidation, } from "./invalidation-state.js";
|
|
5
|
+
import { buildContentSourceLabel, buildReloadProjectContext, getConnectionLogContext as getConnectionLogContextHelper, getPreviewInvalidationPrefixes as getPreviewInvalidationPrefixesHelper, getReconnectDelay as getReconnectDelayHelper, INVALIDATION_DEBOUNCE_MS, WS_HEARTBEAT_INTERVAL_MS, WS_HEARTBEAT_TIMEOUT_MS, WS_RECONNECT_MAX_DELAY_MS, WS_RECONNECT_MAX_FAILURES, } from "./websocket-manager-helpers.js";
|
|
5
6
|
const logger = getBaseLogger("SERVER", { injectTraceContext: false }).component("web-socket-manager");
|
|
6
|
-
const INVALIDATION_DEBOUNCE_MS = 100;
|
|
7
|
-
const WS_RECONNECT_DELAY_MS = 5000;
|
|
8
|
-
const WS_RECONNECT_MAX_DELAY_MS = 120000;
|
|
9
|
-
const WS_RECONNECT_MAX_FAILURES = 10;
|
|
10
|
-
const WS_HEARTBEAT_INTERVAL_MS = 60000;
|
|
11
|
-
const WS_HEARTBEAT_TIMEOUT_MS = 300000;
|
|
12
7
|
export class WebSocketManager {
|
|
13
8
|
deps;
|
|
14
9
|
ws = null;
|
|
@@ -33,14 +28,10 @@ export class WebSocketManager {
|
|
|
33
28
|
this.deps = deps;
|
|
34
29
|
}
|
|
35
30
|
getConnectionLogContext(context = {}) {
|
|
36
|
-
|
|
37
|
-
return context;
|
|
38
|
-
return { projectSlug: this.deps.projectSlug, ...context };
|
|
31
|
+
return getConnectionLogContextHelper(this.deps.projectSlug, context);
|
|
39
32
|
}
|
|
40
33
|
getPreviewInvalidationPrefixes(contentContext) {
|
|
41
|
-
|
|
42
|
-
return [];
|
|
43
|
-
return [buildFileCacheKeyPrefix(contentContext)];
|
|
34
|
+
return getPreviewInvalidationPrefixesHelper(contentContext);
|
|
44
35
|
}
|
|
45
36
|
beginPreviewInvalidation(contentContext) {
|
|
46
37
|
const prefixes = this.getPreviewInvalidationPrefixes(contentContext);
|
|
@@ -105,8 +96,7 @@ export class WebSocketManager {
|
|
|
105
96
|
logger.debug("WebSocket connected to events channel", this.getConnectionLogContext({
|
|
106
97
|
projectId,
|
|
107
98
|
connectionId: this.wsConnectionId,
|
|
108
|
-
|
|
109
|
-
branch: this.deps.getContentContext()?.branch,
|
|
99
|
+
...buildContentSourceLabel(this.deps.getContentSource, this.deps.getContentContext),
|
|
110
100
|
}));
|
|
111
101
|
this.wsLastPong = Date.now();
|
|
112
102
|
this.startHeartbeat(projectId);
|
|
@@ -155,8 +145,7 @@ export class WebSocketManager {
|
|
|
155
145
|
}
|
|
156
146
|
getReconnectDelay() {
|
|
157
147
|
// Exponential backoff: 5s, 10s, 20s, 40s, 80s, capped at 120s
|
|
158
|
-
|
|
159
|
-
return Math.min(delay, WS_RECONNECT_MAX_DELAY_MS);
|
|
148
|
+
return getReconnectDelayHelper(this.wsConsecutiveFailures);
|
|
160
149
|
}
|
|
161
150
|
dispose() {
|
|
162
151
|
this.disposed = true;
|
|
@@ -502,18 +491,7 @@ export class WebSocketManager {
|
|
|
502
491
|
projectId: this.deps.client.getProjectId(),
|
|
503
492
|
hasTriggerReloadCallback: !!this.deps.invalidationCallbacks.triggerReload,
|
|
504
493
|
});
|
|
505
|
-
const
|
|
506
|
-
? "preview"
|
|
507
|
-
: "production";
|
|
508
|
-
const projectContext = {
|
|
509
|
-
projectSlug: this.deps.projectSlug,
|
|
510
|
-
projectId: this.deps.client.getProjectId(),
|
|
511
|
-
environment,
|
|
512
|
-
branch: contentContext?.branch ?? null,
|
|
513
|
-
releaseId: contentContext?.releaseId ?? null,
|
|
514
|
-
styleArtifactHash: preparedStyleArtifact?.hash,
|
|
515
|
-
styleAssetPath: preparedStyleArtifact?.assetPath,
|
|
516
|
-
};
|
|
494
|
+
const projectContext = buildReloadProjectContext(contentContext, this.deps.projectSlug, this.deps.client.getProjectId(), preparedStyleArtifact);
|
|
517
495
|
this.deps.invalidationCallbacks.triggerReload?.(changedPaths, projectContext);
|
|
518
496
|
logger.info("Selective invalidation complete - HMR triggered", {
|
|
519
497
|
changedPaths,
|
|
@@ -610,18 +588,7 @@ export class WebSocketManager {
|
|
|
610
588
|
projectId: this.deps.client.getProjectId(),
|
|
611
589
|
hasTriggerReloadCallback: !!this.deps.invalidationCallbacks.triggerReload,
|
|
612
590
|
});
|
|
613
|
-
const
|
|
614
|
-
? "preview"
|
|
615
|
-
: "production";
|
|
616
|
-
const projectContext = {
|
|
617
|
-
projectSlug: this.deps.projectSlug,
|
|
618
|
-
projectId: this.deps.client.getProjectId(),
|
|
619
|
-
environment,
|
|
620
|
-
branch: contentContext?.branch ?? null,
|
|
621
|
-
releaseId: contentContext?.releaseId ?? null,
|
|
622
|
-
styleArtifactHash: preparedStyleArtifact?.hash,
|
|
623
|
-
styleAssetPath: preparedStyleArtifact?.assetPath,
|
|
624
|
-
};
|
|
591
|
+
const projectContext = buildReloadProjectContext(contentContext, this.deps.projectSlug, this.deps.client.getProjectId(), preparedStyleArtifact);
|
|
625
592
|
this.deps.invalidationCallbacks.triggerReload?.(undefined, projectContext);
|
|
626
593
|
logger.debug("CACHE INVALIDATION COMPLETE", {
|
|
627
594
|
fileCacheCleared: totalFileCount,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface CommandResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
code: number;
|
|
4
|
+
stdout?: string;
|
|
5
|
+
stderr?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CommandOptions {
|
|
8
|
+
args?: string[];
|
|
9
|
+
cwd?: string;
|
|
10
|
+
env?: Record<string, string>;
|
|
11
|
+
/** Capture stdout/stderr to return in result */
|
|
12
|
+
capture?: boolean;
|
|
13
|
+
/** Inherit stdio from parent process (shows output in terminal) */
|
|
14
|
+
inherit?: boolean;
|
|
15
|
+
/** Use shell to run the command (needed for .cmd files on Windows) */
|
|
16
|
+
shell?: boolean;
|
|
17
|
+
/** Kill the command if it exceeds this duration (milliseconds) */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run a command and return the result.
|
|
22
|
+
* Works across Deno, Node.js, and Bun.
|
|
23
|
+
*
|
|
24
|
+
* @param cmd - Command to run
|
|
25
|
+
* @param options - Command options
|
|
26
|
+
* @param options.capture - Capture stdout/stderr to return in result
|
|
27
|
+
* @param options.inherit - Inherit stdio from parent (shows output in terminal)
|
|
28
|
+
* @param options.shell - Use shell to run command (needed for .cmd on Windows)
|
|
29
|
+
*/
|
|
30
|
+
export declare function runCommand(cmd: string, options?: CommandOptions): Promise<CommandResult>;
|
|
31
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/compat/process/command.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6ED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAsLxB"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import * as dntShim from "../../../../_dnt.shims.js";
|
|
2
|
+
import { dynamicImport } from "../dynamic-import.js";
|
|
3
|
+
import { isBun as IS_BUN, isDeno as IS_DENO } from "../runtime.js";
|
|
4
|
+
import { isWindowsPlatform, runtimeProcess } from "./runtime-process.js";
|
|
5
|
+
const COMMAND_TIMEOUT_EXIT_CODE = 124;
|
|
6
|
+
const FORCE_KILL_GRACE_MS = 250;
|
|
7
|
+
function createTimeoutResult(timeoutMs, stdout, stderr) {
|
|
8
|
+
return {
|
|
9
|
+
success: false,
|
|
10
|
+
code: COMMAND_TIMEOUT_EXIT_CODE,
|
|
11
|
+
stdout,
|
|
12
|
+
stderr: `${stderr ?? ""}\nCommand timed out after ${timeoutMs}ms`.trim(),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function createProcessTimeout(timeoutMs, terminate, forceTerminate) {
|
|
16
|
+
let timedOut = false;
|
|
17
|
+
let timeoutId;
|
|
18
|
+
let forceKillId;
|
|
19
|
+
if (timeoutMs && timeoutMs > 0) {
|
|
20
|
+
timeoutId = dntShim.setTimeout(() => {
|
|
21
|
+
timedOut = true;
|
|
22
|
+
try {
|
|
23
|
+
terminate();
|
|
24
|
+
}
|
|
25
|
+
catch (_) {
|
|
26
|
+
/* expected: best-effort terminate may fail if process already exited */
|
|
27
|
+
}
|
|
28
|
+
forceKillId = dntShim.setTimeout(() => {
|
|
29
|
+
try {
|
|
30
|
+
forceTerminate();
|
|
31
|
+
}
|
|
32
|
+
catch (_) {
|
|
33
|
+
/* expected: best-effort force terminate may fail if process already exited */
|
|
34
|
+
}
|
|
35
|
+
}, FORCE_KILL_GRACE_MS);
|
|
36
|
+
}, timeoutMs);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
hasTimedOut: () => timedOut,
|
|
40
|
+
clear: () => {
|
|
41
|
+
if (timeoutId)
|
|
42
|
+
clearTimeout(timeoutId);
|
|
43
|
+
if (forceKillId)
|
|
44
|
+
clearTimeout(forceKillId);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function readStreamToString(stream) {
|
|
49
|
+
const reader = stream.getReader();
|
|
50
|
+
const chunks = [];
|
|
51
|
+
while (true) {
|
|
52
|
+
const { done, value } = await reader.read();
|
|
53
|
+
if (done)
|
|
54
|
+
break;
|
|
55
|
+
if (value)
|
|
56
|
+
chunks.push(value);
|
|
57
|
+
}
|
|
58
|
+
const total = chunks.reduce((acc, c) => acc + c.length, 0);
|
|
59
|
+
const merged = new Uint8Array(total);
|
|
60
|
+
let offset = 0;
|
|
61
|
+
for (const chunk of chunks) {
|
|
62
|
+
merged.set(chunk, offset);
|
|
63
|
+
offset += chunk.length;
|
|
64
|
+
}
|
|
65
|
+
return new TextDecoder().decode(merged);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Run a command and return the result.
|
|
69
|
+
* Works across Deno, Node.js, and Bun.
|
|
70
|
+
*
|
|
71
|
+
* @param cmd - Command to run
|
|
72
|
+
* @param options - Command options
|
|
73
|
+
* @param options.capture - Capture stdout/stderr to return in result
|
|
74
|
+
* @param options.inherit - Inherit stdio from parent (shows output in terminal)
|
|
75
|
+
* @param options.shell - Use shell to run command (needed for .cmd on Windows)
|
|
76
|
+
*/
|
|
77
|
+
export async function runCommand(cmd, options = {}) {
|
|
78
|
+
const { args = [], cwd: cmdCwd, env: cmdEnv, capture = false, inherit = false, shell = false, timeoutMs, } = options;
|
|
79
|
+
const effectiveTimeoutMs = timeoutMs && timeoutMs > 0 ? Math.floor(timeoutMs) : undefined;
|
|
80
|
+
// Determine stdio mode: inherit > capture > null
|
|
81
|
+
const stdioMode = inherit ? "inherit" : capture ? "piped" : "null";
|
|
82
|
+
if (IS_DENO) {
|
|
83
|
+
const command = new dntShim.Deno.Command(cmd, {
|
|
84
|
+
args,
|
|
85
|
+
cwd: cmdCwd,
|
|
86
|
+
env: cmdEnv,
|
|
87
|
+
stdin: inherit ? "inherit" : "null",
|
|
88
|
+
stdout: stdioMode,
|
|
89
|
+
stderr: stdioMode,
|
|
90
|
+
});
|
|
91
|
+
const child = command.spawn();
|
|
92
|
+
const timeout = createProcessTimeout(effectiveTimeoutMs, () => child.kill("SIGTERM"), () => child.kill("SIGKILL"));
|
|
93
|
+
try {
|
|
94
|
+
const [status, stdout, stderr] = await Promise.all([
|
|
95
|
+
child.status,
|
|
96
|
+
capture && child.stdout ? readStreamToString(child.stdout) : Promise.resolve(undefined),
|
|
97
|
+
capture && child.stderr ? readStreamToString(child.stderr) : Promise.resolve(undefined),
|
|
98
|
+
]);
|
|
99
|
+
if (timeout.hasTimedOut()) {
|
|
100
|
+
return createTimeoutResult(effectiveTimeoutMs ?? 0, stdout, stderr);
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
success: status.success,
|
|
104
|
+
code: status.code,
|
|
105
|
+
stdout,
|
|
106
|
+
stderr,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
timeout.clear();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (IS_BUN) {
|
|
114
|
+
const bunGlobal = dntShim.dntGlobalThis;
|
|
115
|
+
const bunStdio = inherit ? "inherit" : capture ? "pipe" : "ignore";
|
|
116
|
+
const isWindows = isWindowsPlatform();
|
|
117
|
+
const bunCmd = shell
|
|
118
|
+
? args.length === 0
|
|
119
|
+
? isWindows ? ["cmd", "/c", cmd] : ["sh", "-c", cmd]
|
|
120
|
+
: isWindows
|
|
121
|
+
? ["cmd", "/c", cmd, ...args]
|
|
122
|
+
: ["sh", "-c", 'exec "$@"', "sh", cmd, ...args]
|
|
123
|
+
: [cmd, ...args];
|
|
124
|
+
const proc = bunGlobal.Bun.spawn({
|
|
125
|
+
cmd: bunCmd,
|
|
126
|
+
cwd: cmdCwd,
|
|
127
|
+
env: cmdEnv,
|
|
128
|
+
stdout: bunStdio,
|
|
129
|
+
stderr: bunStdio,
|
|
130
|
+
});
|
|
131
|
+
const timeout = createProcessTimeout(effectiveTimeoutMs, () => proc.kill?.("SIGTERM"), () => proc.kill?.("SIGKILL"));
|
|
132
|
+
try {
|
|
133
|
+
const [code, stdout, stderr] = await Promise.all([
|
|
134
|
+
proc.exited,
|
|
135
|
+
capture && proc.stdout ? readStreamToString(proc.stdout) : Promise.resolve(undefined),
|
|
136
|
+
capture && proc.stderr ? readStreamToString(proc.stderr) : Promise.resolve(undefined),
|
|
137
|
+
]);
|
|
138
|
+
if (timeout.hasTimedOut()) {
|
|
139
|
+
return createTimeoutResult(effectiveTimeoutMs ?? 0, stdout, stderr);
|
|
140
|
+
}
|
|
141
|
+
return { success: code === 0, code, stdout, stderr };
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
timeout.clear();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (!runtimeProcess)
|
|
148
|
+
return { success: false, code: 1 };
|
|
149
|
+
const process = runtimeProcess;
|
|
150
|
+
const { spawn } = await dynamicImport("node:child_process");
|
|
151
|
+
const nodeStdio = inherit
|
|
152
|
+
? ["inherit", "inherit", "inherit"]
|
|
153
|
+
: capture
|
|
154
|
+
? ["ignore", "pipe", "pipe"]
|
|
155
|
+
: ["ignore", "ignore", "ignore"];
|
|
156
|
+
return await new Promise((resolve) => {
|
|
157
|
+
const child = spawn(cmd, args, {
|
|
158
|
+
cwd: cmdCwd,
|
|
159
|
+
env: cmdEnv ? { ...process.env, ...cmdEnv } : undefined,
|
|
160
|
+
stdio: nodeStdio,
|
|
161
|
+
shell,
|
|
162
|
+
});
|
|
163
|
+
let stdout = "";
|
|
164
|
+
let stderr = "";
|
|
165
|
+
const decoder = new TextDecoder();
|
|
166
|
+
const timeout = createProcessTimeout(effectiveTimeoutMs, () => child.kill("SIGTERM"), () => child.kill("SIGKILL"));
|
|
167
|
+
if (capture) {
|
|
168
|
+
child.stdout?.on("data", (data) => {
|
|
169
|
+
stdout += decoder.decode(data);
|
|
170
|
+
});
|
|
171
|
+
child.stderr?.on("data", (data) => {
|
|
172
|
+
stderr += decoder.decode(data);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
child.on("close", (code) => {
|
|
176
|
+
timeout.clear();
|
|
177
|
+
if (timeout.hasTimedOut()) {
|
|
178
|
+
resolve(createTimeoutResult(effectiveTimeoutMs ?? 0, capture ? stdout : undefined, capture ? stderr : undefined));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
resolve({
|
|
182
|
+
success: code === 0,
|
|
183
|
+
code: code ?? 1,
|
|
184
|
+
stdout: capture ? stdout : undefined,
|
|
185
|
+
stderr: capture ? stderr : undefined,
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
child.on("error", () => {
|
|
189
|
+
timeout.clear();
|
|
190
|
+
resolve({ success: false, code: 1 });
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type EnvOverlayStorage = {
|
|
2
|
+
getStore: () => unknown;
|
|
3
|
+
run?: <T>(store: unknown, fn: () => T) => T;
|
|
4
|
+
enterWith?: (store: unknown) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function env(): Record<string, string>;
|
|
7
|
+
/**
|
|
8
|
+
* Read a host-level environment variable without consulting any project env overlay.
|
|
9
|
+
* Use this for framework-owned runtime configuration that should not be shadowed by tenant env.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getHostEnv(key: string): string | undefined;
|
|
12
|
+
export declare function getEnv(key: string): string | undefined;
|
|
13
|
+
export interface EnvBooleanOptions {
|
|
14
|
+
trueValues?: readonly string[];
|
|
15
|
+
falseValues?: readonly string[];
|
|
16
|
+
trim?: boolean;
|
|
17
|
+
caseSensitive?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare function getEnvString(key: string): string | undefined;
|
|
20
|
+
export declare function getEnvString(key: string, fallback: string): string;
|
|
21
|
+
export declare function getEnvNumber(key: string): number | undefined;
|
|
22
|
+
export declare function getEnvNumber(key: string, fallback: number): number;
|
|
23
|
+
export declare function getEnvBoolean(key: string, fallback?: boolean, options?: EnvBooleanOptions): boolean;
|
|
24
|
+
export declare function setEnv(key: string, value: string): void;
|
|
25
|
+
export declare function deleteEnv(key: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get an AsyncLocalStorage-based env overlay storage if installed.
|
|
28
|
+
* This enables per-async-context env isolation (e.g., in tests).
|
|
29
|
+
*/
|
|
30
|
+
export declare function getEnvOverlayStorage(): EnvOverlayStorage | null;
|
|
31
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/compat/process/env.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC,CAAC;AAoBF,wBAAgB,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB5C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS1D;AAqCD,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWtD;AAKD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAUD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;AAOpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;AAUpE,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,UAAQ,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAmBT;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAgBvD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAgB3C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAS/D"}
|