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
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import * as dntShim from "../../../../_dnt.shims.js";
|
|
2
|
+
import { isBun as IS_BUN, isDeno as IS_DENO } from "../runtime.js";
|
|
3
|
+
import { runtimeProcess } from "./runtime-process.js";
|
|
4
|
+
|
|
5
|
+
/** Get command-line arguments (cross-runtime: Deno.args or process.argv). */
|
|
6
|
+
export function getArgs(): string[] {
|
|
7
|
+
if (IS_DENO) return dntShim.Deno.args;
|
|
8
|
+
if (runtimeProcess) return runtimeProcess.argv.slice(2);
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Exit the process with an optional code (cross-runtime: Deno.exit or process.exit). */
|
|
13
|
+
export function exit(code?: number): never {
|
|
14
|
+
if (IS_DENO) dntShim.Deno.exit(code);
|
|
15
|
+
if (runtimeProcess) runtimeProcess.exit(code);
|
|
16
|
+
throw new Error("exit() is not supported in this runtime");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function cwd(): string {
|
|
20
|
+
if (IS_DENO) return dntShim.Deno.cwd();
|
|
21
|
+
if (runtimeProcess) return runtimeProcess.cwd();
|
|
22
|
+
throw new Error("cwd() is not supported in this runtime");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function chdir(directory: string): void {
|
|
26
|
+
if (IS_DENO) {
|
|
27
|
+
dntShim.Deno.chdir(directory);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (runtimeProcess) {
|
|
31
|
+
runtimeProcess.chdir(directory);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
throw new Error("chdir() is not supported in this runtime");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function pid(): number {
|
|
38
|
+
if (IS_DENO) return dntShim.Deno.pid;
|
|
39
|
+
if (runtimeProcess) return runtimeProcess.pid;
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function memoryUsage(): {
|
|
44
|
+
rss: number;
|
|
45
|
+
heapTotal: number;
|
|
46
|
+
heapUsed: number;
|
|
47
|
+
external: number;
|
|
48
|
+
} {
|
|
49
|
+
if (IS_DENO) {
|
|
50
|
+
const { rss, heapTotal, heapUsed, external } = dntShim.Deno.memoryUsage();
|
|
51
|
+
return { rss, heapTotal, heapUsed, external };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (!runtimeProcess) {
|
|
55
|
+
throw new Error("memoryUsage() is not supported in this runtime");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const { rss, heapTotal, heapUsed, external } = runtimeProcess.memoryUsage();
|
|
59
|
+
return { rss, heapTotal, heapUsed, external: external || 0 };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Check if stdin is a TTY (terminal)
|
|
64
|
+
*/
|
|
65
|
+
export function isInteractive(): boolean {
|
|
66
|
+
if (IS_DENO) return dntShim.Deno.stdin.isTerminal();
|
|
67
|
+
if (runtimeProcess) return runtimeProcess.stdin.isTTY ?? false;
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Check if stdout is a TTY (terminal)
|
|
73
|
+
*/
|
|
74
|
+
export function isStdoutTTY(): boolean {
|
|
75
|
+
if (IS_DENO) return dntShim.Deno.stdout.isTerminal();
|
|
76
|
+
if (runtimeProcess) return runtimeProcess.stdout.isTTY ?? false;
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Get terminal size (columns and rows)
|
|
82
|
+
* Returns default fallback values if terminal size cannot be determined
|
|
83
|
+
*/
|
|
84
|
+
export function getTerminalSize(): { columns: number; rows: number } {
|
|
85
|
+
const defaultSize = { columns: 80, rows: 24 };
|
|
86
|
+
|
|
87
|
+
if (IS_DENO) {
|
|
88
|
+
try {
|
|
89
|
+
const { columns, rows } = dntShim.Deno.consoleSize();
|
|
90
|
+
return { columns, rows };
|
|
91
|
+
} catch (_) {
|
|
92
|
+
/* expected: Deno.consoleSize() fails when not attached to a terminal */
|
|
93
|
+
return defaultSize;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (!runtimeProcess) return defaultSize;
|
|
98
|
+
|
|
99
|
+
const columns = runtimeProcess.stdout?.columns;
|
|
100
|
+
const rows = runtimeProcess.stdout?.rows;
|
|
101
|
+
if (columns && rows) return { columns, rows };
|
|
102
|
+
|
|
103
|
+
return defaultSize;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get runtime version string
|
|
108
|
+
*/
|
|
109
|
+
export function getRuntimeVersion(): string {
|
|
110
|
+
if (IS_DENO) return `Deno ${dntShim.Deno.version.deno}`;
|
|
111
|
+
if ("Bun" in dntShim.dntGlobalThis) {
|
|
112
|
+
return `Bun ${(dntShim.dntGlobalThis as unknown as { Bun: { version: string } }).Bun.version}`;
|
|
113
|
+
}
|
|
114
|
+
if (runtimeProcess) return `Node.js ${runtimeProcess.version}`;
|
|
115
|
+
return "unknown";
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Get the operating system type
|
|
120
|
+
* Returns: "darwin" (macOS), "linux", "windows", or the raw platform string
|
|
121
|
+
*/
|
|
122
|
+
export function getOsType(): string {
|
|
123
|
+
if (IS_DENO) return dntShim.Deno.build.os;
|
|
124
|
+
if (runtimeProcess) {
|
|
125
|
+
// Node/Bun uses process.platform which returns "win32" for Windows
|
|
126
|
+
const platform = runtimeProcess.platform;
|
|
127
|
+
return platform === "win32" ? "windows" : platform;
|
|
128
|
+
}
|
|
129
|
+
return "unknown";
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Register a signal handler (SIGINT, SIGTERM) for graceful shutdown
|
|
134
|
+
*/
|
|
135
|
+
export function onSignal(
|
|
136
|
+
signal: "SIGINT" | "SIGTERM",
|
|
137
|
+
handler: () => void,
|
|
138
|
+
): void {
|
|
139
|
+
if (IS_DENO) {
|
|
140
|
+
dntShim.Deno.addSignalListener(signal, handler);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (runtimeProcess) runtimeProcess.on(signal, handler);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Register global error handlers for uncaught exceptions and unhandled promise rejections.
|
|
148
|
+
* These handlers prevent the process from crashing due to application code errors.
|
|
149
|
+
*
|
|
150
|
+
* IMPORTANT: These handlers should be registered early in the application lifecycle
|
|
151
|
+
* to catch errors that escape try/catch blocks.
|
|
152
|
+
*
|
|
153
|
+
* @param onError - Callback invoked with the error. Return true to prevent process exit.
|
|
154
|
+
*/
|
|
155
|
+
export function onGlobalError(
|
|
156
|
+
onError: (error: Error, type: "uncaughtException" | "unhandledRejection") => boolean | void,
|
|
157
|
+
): void {
|
|
158
|
+
if (IS_DENO) {
|
|
159
|
+
// Intentionally permanent: process-level handlers must persist for the entire runtime
|
|
160
|
+
globalThis.addEventListener("error", (event) => {
|
|
161
|
+
const error = event.error instanceof Error ? event.error : new Error(String(event.error));
|
|
162
|
+
if (onError(error, "uncaughtException")) event.preventDefault();
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
globalThis.addEventListener("unhandledrejection", (event) => {
|
|
166
|
+
const error = event.reason instanceof Error ? event.reason : new Error(String(event.reason));
|
|
167
|
+
if (onError(error, "unhandledRejection")) event.preventDefault();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (!runtimeProcess) return;
|
|
174
|
+
const process = runtimeProcess;
|
|
175
|
+
|
|
176
|
+
const handleNodeGlobalError = (
|
|
177
|
+
error: Error,
|
|
178
|
+
type: "uncaughtException" | "unhandledRejection",
|
|
179
|
+
): void => {
|
|
180
|
+
let shouldPreventExit = false;
|
|
181
|
+
try {
|
|
182
|
+
shouldPreventExit = onError(error, type) === true;
|
|
183
|
+
} catch (handlerError) {
|
|
184
|
+
const handlerException = handlerError instanceof Error
|
|
185
|
+
? handlerError
|
|
186
|
+
: new Error(String(handlerError));
|
|
187
|
+
console.error("Global error handler threw while processing", type, handlerException);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (shouldPreventExit) return;
|
|
191
|
+
|
|
192
|
+
// Node/Bun suppress default fatal behavior when a listener is registered.
|
|
193
|
+
// If the callback did not explicitly handle the error, exit to preserve
|
|
194
|
+
// expected fatal semantics for uncaught exceptions and unhandled rejections.
|
|
195
|
+
process.exit(1);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
runtimeProcess.on("uncaughtException", (error: Error) => {
|
|
199
|
+
handleNodeGlobalError(error, "uncaughtException");
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
runtimeProcess.on("unhandledRejection", (reason: unknown) => {
|
|
203
|
+
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
204
|
+
handleNodeGlobalError(error, "unhandledRejection");
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Unreference a timer to prevent it from keeping the process alive
|
|
210
|
+
*/
|
|
211
|
+
export function unrefTimer(timerId: ReturnType<typeof dntShim.setInterval>): void {
|
|
212
|
+
if (IS_DENO && typeof dntShim.Deno.unrefTimer === "function") {
|
|
213
|
+
dntShim.Deno.unrefTimer(timerId as number);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (timerId && typeof timerId === "object" && "unref" in timerId) {
|
|
218
|
+
(timerId as { unref: () => void }).unref();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Get the executable path of the current runtime
|
|
224
|
+
*/
|
|
225
|
+
export function execPath(): string {
|
|
226
|
+
if (IS_DENO) return dntShim.Deno.execPath();
|
|
227
|
+
if (runtimeProcess) return runtimeProcess.execPath;
|
|
228
|
+
return "";
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Get process uptime in seconds
|
|
233
|
+
* Returns OS uptime on Deno, process uptime on Node.js
|
|
234
|
+
*/
|
|
235
|
+
export function uptime(): number {
|
|
236
|
+
if (IS_DENO) {
|
|
237
|
+
// Deno.osUptime() returns system uptime in seconds
|
|
238
|
+
return dntShim.Deno.osUptime?.() ?? 0;
|
|
239
|
+
}
|
|
240
|
+
if (runtimeProcess) {
|
|
241
|
+
// process.uptime() returns process uptime in seconds
|
|
242
|
+
return runtimeProcess.uptime?.() ?? 0;
|
|
243
|
+
}
|
|
244
|
+
return 0;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Get stdout stream for writing
|
|
249
|
+
* Returns null if not available (e.g., in browser/workers)
|
|
250
|
+
*/
|
|
251
|
+
export function getStdout(): { write: (data: string) => void } | null {
|
|
252
|
+
if (IS_DENO) {
|
|
253
|
+
const encoder = new TextEncoder();
|
|
254
|
+
return { write: (data: string) => dntShim.Deno.stdout.writeSync(encoder.encode(data)) };
|
|
255
|
+
}
|
|
256
|
+
const stdout = runtimeProcess?.stdout;
|
|
257
|
+
if (stdout) {
|
|
258
|
+
return { write: (data: string) => stdout.write(data) };
|
|
259
|
+
}
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Write text directly to stdout (sync)
|
|
265
|
+
* No-op if stdout is not available
|
|
266
|
+
*/
|
|
267
|
+
export function writeStdout(text: string): void {
|
|
268
|
+
getStdout()?.write(text);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Write data to stdout asynchronously
|
|
273
|
+
* Returns a promise that resolves when the write is complete
|
|
274
|
+
*/
|
|
275
|
+
export async function writeStdoutAsync(data: Uint8Array): Promise<number> {
|
|
276
|
+
if (IS_DENO) return await dntShim.Deno.stdout.write(data);
|
|
277
|
+
|
|
278
|
+
const stdout = runtimeProcess?.stdout;
|
|
279
|
+
if (stdout) {
|
|
280
|
+
return await new Promise((resolve, reject) => {
|
|
281
|
+
stdout.write(data, (error) => {
|
|
282
|
+
if (error) reject(error);
|
|
283
|
+
else resolve(data.length);
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return 0;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Synchronous prompt function that works across Deno and Bun.
|
|
293
|
+
* Displays a message and reads user input from stdin.
|
|
294
|
+
*
|
|
295
|
+
* Note: This relies on globalThis.prompt which is available in Deno and Bun.
|
|
296
|
+
* Returns null in environments where prompt is not available (e.g., Node.js ESM).
|
|
297
|
+
*/
|
|
298
|
+
export function promptSync(message?: string): string | null {
|
|
299
|
+
if (typeof globalThis.prompt !== "function") return null;
|
|
300
|
+
return globalThis.prompt(message ?? "") ?? null;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Read a single byte from stdin synchronously.
|
|
305
|
+
* Requires raw mode to be enabled for character-by-character reading.
|
|
306
|
+
* Returns null on EOF or if stdin is not available.
|
|
307
|
+
*/
|
|
308
|
+
export function readStdinByteSync(): number | null {
|
|
309
|
+
const buf = new Uint8Array(1);
|
|
310
|
+
|
|
311
|
+
if (IS_DENO) {
|
|
312
|
+
const n = dntShim.Deno.stdin.readSync(buf);
|
|
313
|
+
return n ? buf[0] ?? null : null;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
if (IS_BUN) {
|
|
317
|
+
// Bun: read one byte from the file descriptor directly
|
|
318
|
+
const BunGlobal =
|
|
319
|
+
(dntShim.dntGlobalThis as { Bun?: { stdin?: { read?: (n: number) => Uint8Array | null } } })
|
|
320
|
+
.Bun;
|
|
321
|
+
const chunk = BunGlobal?.stdin?.read?.(1);
|
|
322
|
+
if (chunk && chunk.length > 0) {
|
|
323
|
+
const first = chunk.at(0);
|
|
324
|
+
return first ?? null;
|
|
325
|
+
}
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as dntShim from "../../../../_dnt.shims.js";
|
|
2
|
+
import { isDeno as IS_DENO } from "../runtime.js";
|
|
3
|
+
|
|
4
|
+
const nodeProcess = (dntShim.dntGlobalThis as { process?: typeof import("node:process") }).process;
|
|
5
|
+
export type RuntimeProcess = typeof import("node:process");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Detect a real Node/Bun process object.
|
|
9
|
+
* Browser bundles may inject `window.process = { env: {} }`, which is not enough
|
|
10
|
+
* to safely call process APIs like cwd(), exit(), or on().
|
|
11
|
+
*/
|
|
12
|
+
export function testHasRuntimeProcess(processLike: unknown): processLike is RuntimeProcess {
|
|
13
|
+
if (!processLike || typeof processLike !== "object") return false;
|
|
14
|
+
const versions = (processLike as { versions?: { node?: string } }).versions;
|
|
15
|
+
return typeof versions?.node === "string" && versions.node.length > 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const runtimeProcess: RuntimeProcess | null = testHasRuntimeProcess(nodeProcess)
|
|
19
|
+
? nodeProcess
|
|
20
|
+
: null;
|
|
21
|
+
|
|
22
|
+
export function isWindowsPlatform(): boolean {
|
|
23
|
+
if (IS_DENO) return dntShim.Deno.build.os === "windows";
|
|
24
|
+
const platform = runtimeProcess?.platform ??
|
|
25
|
+
(dntShim.dntGlobalThis as { process?: { platform?: string } }).process?.platform;
|
|
26
|
+
return platform === "win32";
|
|
27
|
+
}
|