padrone 1.9.0 → 2.0.0
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/CHANGELOG.md +13 -0
- package/README.md +2 -2
- package/dist/codegen/code-builder.d.mts +10 -0
- package/dist/codegen/code-builder.d.mts.map +1 -0
- package/dist/codegen/code-builder.mjs +185 -0
- package/dist/codegen/code-builder.mjs.map +1 -0
- package/dist/codegen/discovery.d.mts +44 -0
- package/dist/codegen/discovery.d.mts.map +1 -0
- package/dist/codegen/discovery.mjs +179 -0
- package/dist/codegen/discovery.mjs.map +1 -0
- package/dist/codegen/file-emitter.d.mts +10 -0
- package/dist/codegen/file-emitter.d.mts.map +1 -0
- package/dist/codegen/file-emitter.mjs +58 -0
- package/dist/codegen/file-emitter.mjs.map +1 -0
- package/dist/codegen/generators/barrel-file.d.mts +10 -0
- package/dist/codegen/generators/barrel-file.d.mts.map +1 -0
- package/dist/codegen/generators/barrel-file.mjs +16 -0
- package/dist/codegen/generators/barrel-file.mjs.map +1 -0
- package/dist/codegen/generators/command-file.d.mts +25 -0
- package/dist/codegen/generators/command-file.d.mts.map +1 -0
- package/dist/codegen/generators/command-file.mjs +130 -0
- package/dist/codegen/generators/command-file.mjs.map +1 -0
- package/dist/codegen/generators/command-tree.d.mts +17 -0
- package/dist/codegen/generators/command-tree.d.mts.map +1 -0
- package/dist/codegen/generators/command-tree.mjs +72 -0
- package/dist/codegen/generators/command-tree.mjs.map +1 -0
- package/dist/codegen/index.d.mts +15 -330
- package/dist/codegen/index.mjs +13 -1507
- package/dist/codegen/parsers/bash.d.mts +19 -0
- package/dist/codegen/parsers/bash.d.mts.map +1 -0
- package/dist/codegen/parsers/bash.mjs +112 -0
- package/dist/codegen/parsers/bash.mjs.map +1 -0
- package/dist/codegen/parsers/fish.d.mts +13 -0
- package/dist/codegen/parsers/fish.d.mts.map +1 -0
- package/dist/codegen/parsers/fish.mjs +108 -0
- package/dist/codegen/parsers/fish.mjs.map +1 -0
- package/dist/codegen/parsers/help.d.mts +15 -0
- package/dist/codegen/parsers/help.d.mts.map +1 -0
- package/dist/codegen/parsers/help.mjs +271 -0
- package/dist/codegen/parsers/help.mjs.map +1 -0
- package/dist/codegen/parsers/merge.d.mts +14 -0
- package/dist/codegen/parsers/merge.d.mts.map +1 -0
- package/dist/codegen/parsers/merge.mjs +76 -0
- package/dist/codegen/parsers/merge.mjs.map +1 -0
- package/dist/codegen/parsers/zsh.d.mts +16 -0
- package/dist/codegen/parsers/zsh.d.mts.map +1 -0
- package/dist/codegen/parsers/zsh.mjs +161 -0
- package/dist/codegen/parsers/zsh.mjs.map +1 -0
- package/dist/codegen/schema-to-code.d.mts +24 -0
- package/dist/codegen/schema-to-code.d.mts.map +1 -0
- package/dist/codegen/schema-to-code.mjs +147 -0
- package/dist/codegen/schema-to-code.mjs.map +1 -0
- package/dist/codegen/template.d.mts +18 -0
- package/dist/codegen/template.d.mts.map +1 -0
- package/dist/codegen/template.mjs +37 -0
- package/dist/codegen/template.mjs.map +1 -0
- package/dist/codegen/types.d.mts +144 -0
- package/dist/codegen/types.d.mts.map +1 -0
- package/dist/completion.d.mts +2 -0
- package/dist/completion.mjs +2 -0
- package/dist/core/args.d.mts +3 -0
- package/dist/{args-WmyGc59s.mjs → core/args.mjs} +5 -81
- package/dist/core/args.mjs.map +1 -0
- package/dist/core/commands.d.mts +13 -0
- package/dist/core/commands.d.mts.map +1 -0
- package/dist/{commands-ohEApqIw.mjs → core/commands.mjs} +4 -232
- package/dist/core/commands.mjs.map +1 -0
- package/dist/core/create.d.mts +63 -0
- package/dist/core/create.d.mts.map +1 -0
- package/dist/core/create.mjs +230 -0
- package/dist/core/create.mjs.map +1 -0
- package/dist/core/default-runtime.mjs +198 -0
- package/dist/core/default-runtime.mjs.map +1 -0
- package/dist/core/errors.d.mts +107 -0
- package/dist/core/errors.d.mts.map +1 -0
- package/dist/{errors-DA4KzK1M.mjs → core/errors.mjs} +2 -2
- package/dist/core/errors.mjs.map +1 -0
- package/dist/core/exec.mjs +191 -0
- package/dist/core/exec.mjs.map +1 -0
- package/dist/core/interceptors.d.mts +33 -0
- package/dist/core/interceptors.d.mts.map +1 -0
- package/dist/core/interceptors.mjs +253 -0
- package/dist/core/interceptors.mjs.map +1 -0
- package/dist/core/parse.mjs +181 -0
- package/dist/core/parse.mjs.map +1 -0
- package/dist/core/program-methods.mjs +256 -0
- package/dist/core/program-methods.mjs.map +1 -0
- package/dist/core/results.d.mts +13 -0
- package/dist/core/results.d.mts.map +1 -0
- package/dist/core/results.mjs +150 -0
- package/dist/core/results.mjs.map +1 -0
- package/dist/core/runtime.d.mts +213 -0
- package/dist/core/runtime.d.mts.map +1 -0
- package/dist/core/runtime.mjs +10 -0
- package/dist/core/runtime.mjs.map +1 -0
- package/dist/core/validate.mjs +220 -0
- package/dist/core/validate.mjs.map +1 -0
- package/dist/docs/index.d.mts +1 -1
- package/dist/docs/index.d.mts.map +1 -1
- package/dist/docs/index.mjs +2 -2
- package/dist/docs/index.mjs.map +1 -1
- package/dist/extension/auto-output.d.mts +53 -0
- package/dist/extension/auto-output.d.mts.map +1 -0
- package/dist/extension/auto-output.mjs +116 -0
- package/dist/extension/auto-output.mjs.map +1 -0
- package/dist/extension/color.d.mts +19 -0
- package/dist/extension/color.d.mts.map +1 -0
- package/dist/extension/color.mjs +37 -0
- package/dist/extension/color.mjs.map +1 -0
- package/dist/extension/completion.d.mts +25 -0
- package/dist/extension/completion.d.mts.map +1 -0
- package/dist/extension/completion.mjs +40 -0
- package/dist/extension/completion.mjs.map +1 -0
- package/dist/extension/config.d.mts +55 -0
- package/dist/extension/config.d.mts.map +1 -0
- package/dist/extension/config.mjs +162 -0
- package/dist/extension/config.mjs.map +1 -0
- package/dist/extension/env.d.mts +42 -0
- package/dist/extension/env.d.mts.map +1 -0
- package/dist/extension/env.mjs +44 -0
- package/dist/extension/env.mjs.map +1 -0
- package/dist/extension/help.d.mts +29 -0
- package/dist/extension/help.d.mts.map +1 -0
- package/dist/extension/help.mjs +161 -0
- package/dist/extension/help.mjs.map +1 -0
- package/dist/extension/index.d.mts +18 -0
- package/dist/extension/ink.d.mts +31 -0
- package/dist/extension/ink.d.mts.map +1 -0
- package/dist/extension/ink.mjs +69 -0
- package/dist/extension/ink.mjs.map +1 -0
- package/dist/extension/interactive.d.mts +16 -0
- package/dist/extension/interactive.d.mts.map +1 -0
- package/dist/extension/interactive.mjs +89 -0
- package/dist/extension/interactive.mjs.map +1 -0
- package/dist/extension/logger.d.mts +67 -0
- package/dist/extension/logger.d.mts.map +1 -0
- package/dist/extension/logger.mjs +188 -0
- package/dist/extension/logger.mjs.map +1 -0
- package/dist/extension/man.d.mts +25 -0
- package/dist/extension/man.d.mts.map +1 -0
- package/dist/extension/man.mjs +41 -0
- package/dist/extension/man.mjs.map +1 -0
- package/dist/extension/mcp.d.mts +28 -0
- package/dist/extension/mcp.d.mts.map +1 -0
- package/dist/extension/mcp.mjs +44 -0
- package/dist/extension/mcp.mjs.map +1 -0
- package/dist/extension/progress-renderer.d.mts +13 -0
- package/dist/extension/progress-renderer.d.mts.map +1 -0
- package/dist/extension/progress-renderer.mjs +351 -0
- package/dist/extension/progress-renderer.mjs.map +1 -0
- package/dist/extension/progress.d.mts +76 -0
- package/dist/extension/progress.d.mts.map +1 -0
- package/dist/extension/progress.mjs +225 -0
- package/dist/extension/progress.mjs.map +1 -0
- package/dist/extension/repl.d.mts +26 -0
- package/dist/extension/repl.d.mts.map +1 -0
- package/dist/extension/repl.mjs +67 -0
- package/dist/extension/repl.mjs.map +1 -0
- package/dist/extension/serve.d.mts +27 -0
- package/dist/extension/serve.d.mts.map +1 -0
- package/dist/extension/serve.mjs +41 -0
- package/dist/extension/serve.mjs.map +1 -0
- package/dist/extension/signal.d.mts +19 -0
- package/dist/extension/signal.d.mts.map +1 -0
- package/dist/extension/signal.mjs +81 -0
- package/dist/extension/signal.mjs.map +1 -0
- package/dist/extension/stdin.d.mts +19 -0
- package/dist/extension/stdin.d.mts.map +1 -0
- package/dist/extension/stdin.mjs +52 -0
- package/dist/extension/stdin.mjs.map +1 -0
- package/dist/extension/suggestions.d.mts +6 -0
- package/dist/extension/suggestions.d.mts.map +1 -0
- package/dist/extension/suggestions.mjs +113 -0
- package/dist/extension/suggestions.mjs.map +1 -0
- package/dist/extension/timing.d.mts +27 -0
- package/dist/extension/timing.d.mts.map +1 -0
- package/dist/extension/timing.mjs +71 -0
- package/dist/extension/timing.mjs.map +1 -0
- package/dist/extension/tracing.d.mts +85 -0
- package/dist/extension/tracing.d.mts.map +1 -0
- package/dist/extension/tracing.mjs +107 -0
- package/dist/extension/tracing.mjs.map +1 -0
- package/dist/extension/update-check.d.mts +20 -0
- package/dist/extension/update-check.d.mts.map +1 -0
- package/dist/extension/update-check.mjs +62 -0
- package/dist/extension/update-check.mjs.map +1 -0
- package/dist/extension/utils.mjs +43 -0
- package/dist/extension/utils.mjs.map +1 -0
- package/dist/extension/version.d.mts +20 -0
- package/dist/extension/version.d.mts.map +1 -0
- package/dist/extension/version.mjs +51 -0
- package/dist/extension/version.mjs.map +1 -0
- package/dist/{completion-D8qkAinX.mjs → feature/completion.mjs} +4 -3
- package/dist/feature/completion.mjs.map +1 -0
- package/dist/feature/interactive.mjs +145 -0
- package/dist/feature/interactive.mjs.map +1 -0
- package/dist/feature/mcp.d.mts +18 -0
- package/dist/feature/mcp.d.mts.map +1 -0
- package/dist/{mcp-wCoVFTXz.mjs → feature/mcp.mjs} +6 -6
- package/dist/feature/mcp.mjs.map +1 -0
- package/dist/feature/repl-loop.mjs +217 -0
- package/dist/feature/repl-loop.mjs.map +1 -0
- package/dist/feature/serve.d.mts +18 -0
- package/dist/feature/serve.d.mts.map +1 -0
- package/dist/{serve-ICZFl3xr.mjs → feature/serve.mjs} +7 -7
- package/dist/feature/serve.mjs.map +1 -0
- package/dist/feature/test.d.mts +109 -0
- package/dist/feature/test.d.mts.map +1 -0
- package/dist/feature/test.mjs +116 -0
- package/dist/feature/test.mjs.map +1 -0
- package/dist/feature/update-check.d.mts +35 -0
- package/dist/feature/update-check.d.mts.map +1 -0
- package/dist/{update-check-CZ2VqjnV.mjs → feature/update-check.mjs} +2 -2
- package/dist/feature/update-check.mjs.map +1 -0
- package/dist/feature/wrap.d.mts +58 -0
- package/dist/feature/wrap.d.mts.map +1 -0
- package/dist/feature/wrap.mjs +77 -0
- package/dist/feature/wrap.mjs.map +1 -0
- package/dist/index.d.mts +38 -902
- package/dist/index.mjs +25 -4377
- package/dist/ink.d.mts +2 -0
- package/dist/ink.mjs +2 -0
- package/dist/man.d.mts +2 -0
- package/dist/man.mjs +2 -0
- package/dist/mcp.d.mts +3 -0
- package/dist/mcp.mjs +2 -0
- package/dist/output/colorizer.d.mts +28 -0
- package/dist/output/colorizer.d.mts.map +1 -0
- package/dist/output/colorizer.mjs +94 -0
- package/dist/output/colorizer.mjs.map +1 -0
- package/dist/{formatter-CY3KrOEd.d.mts → output/formatter.d.mts} +2 -28
- package/dist/output/formatter.d.mts.map +1 -0
- package/dist/output/formatter.mjs +360 -0
- package/dist/output/formatter.mjs.map +1 -0
- package/dist/output/help.d.mts +18 -0
- package/dist/output/help.d.mts.map +1 -0
- package/dist/output/help.mjs +267 -0
- package/dist/output/help.mjs.map +1 -0
- package/dist/output/output-indicator.d.mts +27 -0
- package/dist/output/output-indicator.d.mts.map +1 -0
- package/dist/output/output-indicator.mjs +54 -0
- package/dist/output/output-indicator.mjs.map +1 -0
- package/dist/output/primitives.d.mts +33 -0
- package/dist/output/primitives.d.mts.map +1 -0
- package/dist/output/primitives.mjs +206 -0
- package/dist/output/primitives.mjs.map +1 -0
- package/dist/output/styling.d.mts +38 -0
- package/dist/output/styling.d.mts.map +1 -0
- package/dist/output/styling.mjs +146 -0
- package/dist/output/styling.mjs.map +1 -0
- package/dist/schema/zod.d.mts +6 -0
- package/dist/schema/zod.d.mts.map +1 -0
- package/dist/schema/zod.mjs +50 -0
- package/dist/schema/zod.mjs.map +1 -0
- package/dist/serve.d.mts +2 -0
- package/dist/serve.mjs +2 -0
- package/dist/test.d.mts +2 -109
- package/dist/test.mjs +1 -115
- package/dist/tracing.d.mts +2 -0
- package/dist/tracing.mjs +2 -0
- package/dist/types/args-meta.d.mts +129 -0
- package/dist/types/args-meta.d.mts.map +1 -0
- package/dist/types/builder.d.mts +212 -0
- package/dist/types/builder.d.mts.map +1 -0
- package/dist/types/command.d.mts +112 -0
- package/dist/types/command.d.mts.map +1 -0
- package/dist/types/index.d.mts +8 -0
- package/dist/types/interceptor.d.mts +232 -0
- package/dist/types/interceptor.d.mts.map +1 -0
- package/dist/types/preferences.d.mts +79 -0
- package/dist/types/preferences.d.mts.map +1 -0
- package/dist/types/result.d.mts +61 -0
- package/dist/types/result.d.mts.map +1 -0
- package/dist/types/schema.d.mts +24 -0
- package/dist/types/schema.d.mts.map +1 -0
- package/dist/util/dotenv.mjs +174 -0
- package/dist/util/dotenv.mjs.map +1 -0
- package/dist/util/shell-utils.mjs +80 -0
- package/dist/util/shell-utils.mjs.map +1 -0
- package/dist/util/stream.d.mts +33 -0
- package/dist/util/stream.d.mts.map +1 -0
- package/dist/{stream-DC4H8YTx.mjs → util/stream.mjs} +2 -2
- package/dist/util/stream.mjs.map +1 -0
- package/dist/util/type-helpers.d.mts +74 -0
- package/dist/util/type-helpers.d.mts.map +1 -0
- package/dist/util/type-utils.d.mts +186 -0
- package/dist/util/type-utils.d.mts.map +1 -0
- package/dist/util/utils.mjs +43 -0
- package/dist/util/utils.mjs.map +1 -0
- package/dist/zod.d.mts +1 -32
- package/dist/zod.mjs +1 -49
- package/package.json +65 -17
- package/src/completion.ts +2 -0
- package/src/extension/completion.ts +3 -0
- package/src/extension/index.ts +0 -12
- package/src/extension/ink.ts +2 -1
- package/src/extension/man.ts +3 -0
- package/src/extension/mcp.ts +3 -0
- package/src/extension/serve.ts +3 -0
- package/src/extension/tracing.ts +2 -0
- package/src/index.ts +0 -19
- package/src/ink.ts +2 -0
- package/src/man.ts +2 -0
- package/src/mcp.ts +3 -0
- package/src/serve.ts +2 -0
- package/src/tracing.ts +9 -0
- package/src/zod.ts +1 -1
- package/dist/args-WmyGc59s.mjs.map +0 -1
- package/dist/codegen/index.d.mts.map +0 -1
- package/dist/codegen/index.mjs.map +0 -1
- package/dist/commands-ohEApqIw.mjs.map +0 -1
- package/dist/completion-D8qkAinX.mjs.map +0 -1
- package/dist/errors-DA4KzK1M.mjs.map +0 -1
- package/dist/formatter-CY3KrOEd.d.mts.map +0 -1
- package/dist/help-CeI45CJx.mjs +0 -892
- package/dist/help-CeI45CJx.mjs.map +0 -1
- package/dist/index-C3Ed1LYN.d.mts +0 -1432
- package/dist/index-C3Ed1LYN.d.mts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/mcp-wCoVFTXz.mjs.map +0 -1
- package/dist/serve-ICZFl3xr.mjs.map +0 -1
- package/dist/stream-DC4H8YTx.mjs.map +0 -1
- package/dist/test.d.mts.map +0 -1
- package/dist/test.mjs.map +0 -1
- package/dist/update-check-CZ2VqjnV.mjs.map +0 -1
- package/dist/zod.d.mts.map +0 -1
- package/dist/zod.mjs.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/util/utils.ts
|
|
2
|
+
function getRootCommand(cmd) {
|
|
3
|
+
let current = cmd;
|
|
4
|
+
while (current.parent) current = current.parent;
|
|
5
|
+
return current;
|
|
6
|
+
}
|
|
7
|
+
async function readVersionFromPackageJson() {
|
|
8
|
+
try {
|
|
9
|
+
const fs = await import("node:fs");
|
|
10
|
+
const path = await import("node:path");
|
|
11
|
+
let dir = process.cwd();
|
|
12
|
+
for (let i = 0; i < 10; i++) {
|
|
13
|
+
const pkgPath = path.join(dir, "package.json");
|
|
14
|
+
if (fs.existsSync(pkgPath)) {
|
|
15
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
16
|
+
if (pkg.version) return pkg.version;
|
|
17
|
+
}
|
|
18
|
+
const parentDir = path.dirname(dir);
|
|
19
|
+
if (parentDir === dir) break;
|
|
20
|
+
dir = parentDir;
|
|
21
|
+
}
|
|
22
|
+
} catch {}
|
|
23
|
+
return "0.0.0";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Attempts to get the version from various sources:
|
|
27
|
+
* 1. Explicit version set on the command
|
|
28
|
+
* 2. npm_package_version environment variable (set by npm/yarn/pnpm when running scripts)
|
|
29
|
+
* 3. package.json in current or parent directories
|
|
30
|
+
*
|
|
31
|
+
* Returns synchronously when an explicit version or env var is available.
|
|
32
|
+
* Falls back to async package.json discovery otherwise.
|
|
33
|
+
*/
|
|
34
|
+
function getVersion(explicitVersion) {
|
|
35
|
+
if (explicitVersion) return explicitVersion;
|
|
36
|
+
if (typeof process !== "undefined" && process.env?.npm_package_version) return process.env.npm_package_version;
|
|
37
|
+
if (typeof process !== "undefined") return readVersionFromPackageJson();
|
|
38
|
+
return "0.0.0";
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { getRootCommand, getVersion };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/util/utils.ts"],"sourcesContent":["import type { AnyPadroneCommand } from '../types/index.ts';\n\nexport function getRootCommand(cmd: AnyPadroneCommand): AnyPadroneCommand {\n let current = cmd;\n while (current.parent) current = current.parent;\n return current;\n}\n\nasync function readVersionFromPackageJson(): Promise<string> {\n try {\n const fs = await import('node:fs');\n const path = await import('node:path');\n let dir = process.cwd();\n\n // Walk up the directory tree looking for package.json\n for (let i = 0; i < 10; i++) {\n const pkgPath = path.join(dir, 'package.json');\n if (fs.existsSync(pkgPath)) {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n if (pkg.version) return pkg.version;\n }\n const parentDir = path.dirname(dir);\n if (parentDir === dir) break; // Reached root\n dir = parentDir;\n }\n } catch {\n // Ignore errors (e.g., fs not available in browser)\n }\n return '0.0.0';\n}\n\n/**\n * Attempts to get the version from various sources:\n * 1. Explicit version set on the command\n * 2. npm_package_version environment variable (set by npm/yarn/pnpm when running scripts)\n * 3. package.json in current or parent directories\n *\n * Returns synchronously when an explicit version or env var is available.\n * Falls back to async package.json discovery otherwise.\n */\nexport function getVersion(explicitVersion?: string): string | Promise<string> {\n if (explicitVersion) return explicitVersion;\n\n if (typeof process !== 'undefined' && process.env?.npm_package_version) {\n return process.env.npm_package_version;\n }\n\n if (typeof process !== 'undefined') return readVersionFromPackageJson();\n\n return '0.0.0';\n}\n"],"mappings":";AAEA,SAAgB,eAAe,KAA2C;CACxE,IAAI,UAAU;CACd,OAAO,QAAQ,QAAQ,UAAU,QAAQ;CACzC,OAAO;AACT;AAEA,eAAe,6BAA8C;CAC3D,IAAI;EACF,MAAM,KAAK,MAAM,OAAO;EACxB,MAAM,OAAO,MAAM,OAAO;EAC1B,IAAI,MAAM,QAAQ,IAAI;EAGtB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;GAC3B,MAAM,UAAU,KAAK,KAAK,KAAK,cAAc;GAC7C,IAAI,GAAG,WAAW,OAAO,GAAG;IAC1B,MAAM,MAAM,KAAK,MAAM,GAAG,aAAa,SAAS,OAAO,CAAC;IACxD,IAAI,IAAI,SAAS,OAAO,IAAI;GAC9B;GACA,MAAM,YAAY,KAAK,QAAQ,GAAG;GAClC,IAAI,cAAc,KAAK;GACvB,MAAM;EACR;CACF,QAAQ,CAER;CACA,OAAO;AACT;;;;;;;;;;AAWA,SAAgB,WAAW,iBAAoD;CAC7E,IAAI,iBAAiB,OAAO;CAE5B,IAAI,OAAO,YAAY,eAAe,QAAQ,KAAK,qBACjD,OAAO,QAAQ,IAAI;CAGrB,IAAI,OAAO,YAAY,aAAa,OAAO,2BAA2B;CAEtE,OAAO;AACT"}
|
package/dist/zod.d.mts
CHANGED
|
@@ -1,32 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import * as z from "zod/v4";
|
|
3
|
-
|
|
4
|
-
//#region src/schema/zod.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Creates a Zod schema for an async stream field, ready to use in `.arguments()`.
|
|
7
|
-
* Wraps `z.custom<AsyncIterable<T>>()` with the `asyncStream()` metadata automatically.
|
|
8
|
-
*
|
|
9
|
-
* @param itemSchema - Optional item schema for per-item validation.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { zodAsyncStream } from 'padrone/zod';
|
|
14
|
-
*
|
|
15
|
-
* // String lines
|
|
16
|
-
* z.object({ lines: zodAsyncStream() })
|
|
17
|
-
*
|
|
18
|
-
* // Typed items — each line JSON.parse'd and validated
|
|
19
|
-
* const recordSchema = z.object({ name: z.string(), age: z.number() });
|
|
20
|
-
* z.object({ records: zodAsyncStream(jsonCodec(recordSchema)) })
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
declare function zodAsyncStream<T = string>(itemSchema?: PadroneSchema<unknown, T>): z.ZodCustom<AsyncIterable<T>, AsyncIterable<T>>;
|
|
24
|
-
/**
|
|
25
|
-
* JSON codec for Zod schemas
|
|
26
|
-
* @see https://zod.dev/codecs?id=jsonschema
|
|
27
|
-
* Unlike the example in the docs, this codec also handles the case where the input is already an object
|
|
28
|
-
*/
|
|
29
|
-
declare const jsonCodec: <T extends z.ZodType>(schema: T) => z.ZodCodec<z.ZodUnion<readonly [z.ZodString, z.ZodUnknown]>, T>;
|
|
30
|
-
//#endregion
|
|
31
|
-
export { jsonCodec, zodAsyncStream };
|
|
32
|
-
//# sourceMappingURL=zod.d.mts.map
|
|
1
|
+
export { };
|
package/dist/zod.mjs
CHANGED
|
@@ -1,50 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as z from "zod/v4";
|
|
3
|
-
//#region src/schema/zod.ts
|
|
4
|
-
/**
|
|
5
|
-
* Creates a Zod schema for an async stream field, ready to use in `.arguments()`.
|
|
6
|
-
* Wraps `z.custom<AsyncIterable<T>>()` with the `asyncStream()` metadata automatically.
|
|
7
|
-
*
|
|
8
|
-
* @param itemSchema - Optional item schema for per-item validation.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* import { zodAsyncStream } from 'padrone/zod';
|
|
13
|
-
*
|
|
14
|
-
* // String lines
|
|
15
|
-
* z.object({ lines: zodAsyncStream() })
|
|
16
|
-
*
|
|
17
|
-
* // Typed items — each line JSON.parse'd and validated
|
|
18
|
-
* const recordSchema = z.object({ name: z.string(), age: z.number() });
|
|
19
|
-
* z.object({ records: zodAsyncStream(jsonCodec(recordSchema)) })
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
function zodAsyncStream(itemSchema) {
|
|
23
|
-
return z.custom().meta(asyncStream(itemSchema));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* JSON codec for Zod schemas
|
|
27
|
-
* @see https://zod.dev/codecs?id=jsonschema
|
|
28
|
-
* Unlike the example in the docs, this codec also handles the case where the input is already an object
|
|
29
|
-
*/
|
|
30
|
-
const jsonCodec = (schema) => z.codec(z.union([z.string(), z.unknown()]), schema, {
|
|
31
|
-
decode: (jsonString, ctx) => {
|
|
32
|
-
try {
|
|
33
|
-
if (typeof jsonString !== "string") return jsonString;
|
|
34
|
-
return JSON.parse(jsonString);
|
|
35
|
-
} catch (err) {
|
|
36
|
-
ctx.issues.push({
|
|
37
|
-
code: "invalid_format",
|
|
38
|
-
format: "json",
|
|
39
|
-
input: typeof jsonString === "string" ? jsonString : JSON.stringify(jsonString),
|
|
40
|
-
message: err.message
|
|
41
|
-
});
|
|
42
|
-
return z.NEVER;
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
encode: (value) => JSON.stringify(value)
|
|
46
|
-
});
|
|
47
|
-
//#endregion
|
|
1
|
+
import { jsonCodec, zodAsyncStream } from "./schema/zod.mjs";
|
|
48
2
|
export { jsonCodec, zodAsyncStream };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=zod.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "padrone",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Create type-safe, interactive CLI apps with Zod schemas",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"vercel-ai",
|
|
22
22
|
"standard-schema"
|
|
23
23
|
],
|
|
24
|
-
"homepage": "https://github.com/
|
|
24
|
+
"homepage": "https://github.com/gkurt/padrone",
|
|
25
25
|
"bugs": {
|
|
26
|
-
"url": "https://github.com/
|
|
26
|
+
"url": "https://github.com/gkurt/padrone/issues"
|
|
27
27
|
},
|
|
28
28
|
"repository": {
|
|
29
29
|
"type": "git",
|
|
30
|
-
"url": "git+https://github.com/
|
|
30
|
+
"url": "git+https://github.com/gkurt/padrone.git"
|
|
31
31
|
},
|
|
32
32
|
"author": {
|
|
33
33
|
"name": "Gokhan Kurt",
|
|
@@ -68,16 +68,16 @@
|
|
|
68
68
|
"./codegen": {
|
|
69
69
|
"padrone@dev": "./src/codegen/index.ts",
|
|
70
70
|
"import": {
|
|
71
|
-
"types": "./dist/codegen.d.mts",
|
|
72
|
-
"default": "./dist/codegen.mjs"
|
|
71
|
+
"types": "./dist/codegen/index.d.mts",
|
|
72
|
+
"default": "./dist/codegen/index.mjs"
|
|
73
73
|
},
|
|
74
74
|
"source": "./src/codegen/index.ts"
|
|
75
75
|
},
|
|
76
76
|
"./docs": {
|
|
77
77
|
"padrone@dev": "./src/docs/index.ts",
|
|
78
78
|
"import": {
|
|
79
|
-
"types": "./dist/docs.d.mts",
|
|
80
|
-
"default": "./dist/docs.mjs"
|
|
79
|
+
"types": "./dist/docs/index.d.mts",
|
|
80
|
+
"default": "./dist/docs/index.mjs"
|
|
81
81
|
},
|
|
82
82
|
"source": "./src/docs/index.ts"
|
|
83
83
|
},
|
|
@@ -89,10 +89,58 @@
|
|
|
89
89
|
},
|
|
90
90
|
"source": "./src/zod.ts"
|
|
91
91
|
},
|
|
92
|
+
"./ink": {
|
|
93
|
+
"padrone@dev": "./src/ink.ts",
|
|
94
|
+
"import": {
|
|
95
|
+
"types": "./dist/ink.d.mts",
|
|
96
|
+
"default": "./dist/ink.mjs"
|
|
97
|
+
},
|
|
98
|
+
"source": "./src/ink.ts"
|
|
99
|
+
},
|
|
100
|
+
"./mcp": {
|
|
101
|
+
"padrone@dev": "./src/mcp.ts",
|
|
102
|
+
"import": {
|
|
103
|
+
"types": "./dist/mcp.d.mts",
|
|
104
|
+
"default": "./dist/mcp.mjs"
|
|
105
|
+
},
|
|
106
|
+
"source": "./src/mcp.ts"
|
|
107
|
+
},
|
|
108
|
+
"./serve": {
|
|
109
|
+
"padrone@dev": "./src/serve.ts",
|
|
110
|
+
"import": {
|
|
111
|
+
"types": "./dist/serve.d.mts",
|
|
112
|
+
"default": "./dist/serve.mjs"
|
|
113
|
+
},
|
|
114
|
+
"source": "./src/serve.ts"
|
|
115
|
+
},
|
|
116
|
+
"./tracing": {
|
|
117
|
+
"padrone@dev": "./src/tracing.ts",
|
|
118
|
+
"import": {
|
|
119
|
+
"types": "./dist/tracing.d.mts",
|
|
120
|
+
"default": "./dist/tracing.mjs"
|
|
121
|
+
},
|
|
122
|
+
"source": "./src/tracing.ts"
|
|
123
|
+
},
|
|
124
|
+
"./completion": {
|
|
125
|
+
"padrone@dev": "./src/completion.ts",
|
|
126
|
+
"import": {
|
|
127
|
+
"types": "./dist/completion.d.mts",
|
|
128
|
+
"default": "./dist/completion.mjs"
|
|
129
|
+
},
|
|
130
|
+
"source": "./src/completion.ts"
|
|
131
|
+
},
|
|
132
|
+
"./man": {
|
|
133
|
+
"padrone@dev": "./src/man.ts",
|
|
134
|
+
"import": {
|
|
135
|
+
"types": "./dist/man.d.mts",
|
|
136
|
+
"default": "./dist/man.mjs"
|
|
137
|
+
},
|
|
138
|
+
"source": "./src/man.ts"
|
|
139
|
+
},
|
|
92
140
|
"./package.json": "./package.json"
|
|
93
141
|
},
|
|
94
142
|
"scripts": {
|
|
95
|
-
"build": "tsdown src/index.ts src/test.ts src/zod.ts src/codegen/index.ts src/docs/index.ts --dts --sourcemap",
|
|
143
|
+
"build": "tsdown src/index.ts src/test.ts src/zod.ts src/ink.ts src/mcp.ts src/serve.ts src/tracing.ts src/completion.ts src/man.ts src/codegen/index.ts src/docs/index.ts --dts --sourcemap --unbundle",
|
|
96
144
|
"start": "bun --conditions=padrone@dev src/cli/index.ts",
|
|
97
145
|
"dev": "bun --conditions=padrone@dev --watch src/cli/index.ts",
|
|
98
146
|
"test": "bun test --conditions=padrone@dev",
|
|
@@ -105,16 +153,16 @@
|
|
|
105
153
|
"enquirer": "^2.4.1"
|
|
106
154
|
},
|
|
107
155
|
"devDependencies": {
|
|
108
|
-
"@types/react": "^19.2.
|
|
109
|
-
"ai": "^
|
|
110
|
-
"ink": "^
|
|
111
|
-
"react": "^19.2.
|
|
112
|
-
"tsdown": "^0.
|
|
113
|
-
"zod": "^4.3
|
|
156
|
+
"@types/react": "^19.2.17",
|
|
157
|
+
"ai": "^7.0.8",
|
|
158
|
+
"ink": "^7.1.0",
|
|
159
|
+
"react": "^19.2.7",
|
|
160
|
+
"tsdown": "^0.22.3",
|
|
161
|
+
"zod": "^4.4.3"
|
|
114
162
|
},
|
|
115
163
|
"peerDependencies": {
|
|
116
|
-
"ai": "5 || 6",
|
|
117
|
-
"ink": "^6.0.0",
|
|
164
|
+
"ai": "5 || 6 || 7",
|
|
165
|
+
"ink": "^6.0.0 || ^7.0.0",
|
|
118
166
|
"react": ">=18.0.0",
|
|
119
167
|
"zod": "^3.25.0 || ^4.0.0"
|
|
120
168
|
},
|
|
@@ -21,6 +21,9 @@ export type WithCompletion<T> = WithCommand<T, 'completion', CompletionCommand>;
|
|
|
21
21
|
*
|
|
22
22
|
* Usage:
|
|
23
23
|
* ```ts
|
|
24
|
+
* import { createPadrone } from 'padrone';
|
|
25
|
+
* import { padroneCompletion } from 'padrone/completion';
|
|
26
|
+
*
|
|
24
27
|
* createPadrone('my-cli').extend(padroneCompletion())
|
|
25
28
|
* ```
|
|
26
29
|
*/
|
package/src/extension/index.ts
CHANGED
|
@@ -2,23 +2,15 @@ export type { WithAsync } from '../util/type-utils.ts';
|
|
|
2
2
|
export type { PadroneAutoOutputOptions } from './auto-output.ts';
|
|
3
3
|
export { padroneAutoOutput } from './auto-output.ts';
|
|
4
4
|
export { padroneColor } from './color.ts';
|
|
5
|
-
export type { WithCompletion } from './completion.ts';
|
|
6
|
-
export { padroneCompletion } from './completion.ts';
|
|
7
5
|
export type { PadroneConfigOptions } from './config.ts';
|
|
8
6
|
export { padroneConfig } from './config.ts';
|
|
9
7
|
export type { PadroneEnvOptions } from './env.ts';
|
|
10
8
|
export { padroneEnv } from './env.ts';
|
|
11
9
|
export type { HelpCommand, WithHelp } from './help.ts';
|
|
12
10
|
export { padroneHelp } from './help.ts';
|
|
13
|
-
export type { InkOptions } from './ink.ts';
|
|
14
|
-
export { isReactElement, padroneInk } from './ink.ts';
|
|
15
11
|
export { padroneInteractive } from './interactive.ts';
|
|
16
12
|
export type { PadroneLogger, PadroneLoggerConfig, PadroneLogLevel, WithLogger } from './logger.ts';
|
|
17
13
|
export { padroneLogger } from './logger.ts';
|
|
18
|
-
export type { WithMan } from './man.ts';
|
|
19
|
-
export { padroneMan } from './man.ts';
|
|
20
|
-
export type { WithMcp } from './mcp.ts';
|
|
21
|
-
export { padroneMcp } from './mcp.ts';
|
|
22
14
|
export type {
|
|
23
15
|
PadroneProgressConfig,
|
|
24
16
|
PadroneProgressDefaults,
|
|
@@ -31,15 +23,11 @@ export type { PadroneProgressRenderer } from './progress-renderer.ts';
|
|
|
31
23
|
export { createTerminalProgress } from './progress-renderer.ts';
|
|
32
24
|
export type { WithRepl } from './repl.ts';
|
|
33
25
|
export { padroneRepl } from './repl.ts';
|
|
34
|
-
export type { WithServe } from './serve.ts';
|
|
35
|
-
export { padroneServe } from './serve.ts';
|
|
36
26
|
export { padroneSignalHandling } from './signal.ts';
|
|
37
27
|
export { padroneStdin } from './stdin.ts';
|
|
38
28
|
export { padroneSuggestions } from './suggestions.ts';
|
|
39
29
|
export type { PadroneTimingOptions } from './timing.ts';
|
|
40
30
|
export { padroneTiming } from './timing.ts';
|
|
41
|
-
export type { OtelSpan, OtelTracer, OtelTracerProvider, PadroneTracer, PadroneTracingConfig, WithTracing } from './tracing.ts';
|
|
42
|
-
export { padroneTracing } from './tracing.ts';
|
|
43
31
|
export { padroneUpdateCheck } from './update-check.ts';
|
|
44
32
|
export type { VersionCommand, WithVersion } from './version.ts';
|
|
45
33
|
export { padroneVersion } from './version.ts';
|
package/src/extension/ink.ts
CHANGED
|
@@ -78,7 +78,8 @@ function createInkInterceptor(rawOptions?: InkOptions) {
|
|
|
78
78
|
* Requires `ink` and `react` as peer dependencies.
|
|
79
79
|
*
|
|
80
80
|
* ```ts
|
|
81
|
-
* import { createPadrone
|
|
81
|
+
* import { createPadrone } from 'padrone';
|
|
82
|
+
* import { padroneInk } from 'padrone/ink';
|
|
82
83
|
*
|
|
83
84
|
* const program = createPadrone('my-tui')
|
|
84
85
|
* .extend(padroneInk())
|
package/src/extension/man.ts
CHANGED
package/src/extension/mcp.ts
CHANGED
package/src/extension/serve.ts
CHANGED
|
@@ -21,6 +21,9 @@ export type WithServe<T> = WithCommand<T, 'serve', ServeCommand>;
|
|
|
21
21
|
*
|
|
22
22
|
* Usage:
|
|
23
23
|
* ```ts
|
|
24
|
+
* import { createPadrone } from 'padrone';
|
|
25
|
+
* import { padroneServe } from 'padrone/serve';
|
|
26
|
+
*
|
|
24
27
|
* createPadrone('my-cli').extend(padroneServe())
|
|
25
28
|
* ```
|
|
26
29
|
*/
|
package/src/extension/tracing.ts
CHANGED
|
@@ -152,6 +152,8 @@ function tracingInterceptor(config: ResolvedTracingConfig) {
|
|
|
152
152
|
* Usage:
|
|
153
153
|
* ```ts
|
|
154
154
|
* import { trace } from '@opentelemetry/api';
|
|
155
|
+
* import { createPadrone, padroneLogger } from 'padrone';
|
|
156
|
+
* import { padroneTracing } from 'padrone/tracing';
|
|
155
157
|
*
|
|
156
158
|
* createPadrone('my-cli')
|
|
157
159
|
* .extend(padroneTracing({ provider: trace.getTracerProvider() }))
|
package/src/index.ts
CHANGED
|
@@ -23,10 +23,6 @@ export type {
|
|
|
23
23
|
export { REPL_SIGINT } from './core/runtime.ts';
|
|
24
24
|
export type {
|
|
25
25
|
HelpCommand,
|
|
26
|
-
InkOptions,
|
|
27
|
-
OtelSpan,
|
|
28
|
-
OtelTracer,
|
|
29
|
-
OtelTracerProvider,
|
|
30
26
|
PadroneLogger,
|
|
31
27
|
PadroneLoggerConfig,
|
|
32
28
|
PadroneLogLevel,
|
|
@@ -35,47 +31,32 @@ export type {
|
|
|
35
31
|
PadroneProgressMessage,
|
|
36
32
|
PadroneProgressMessages,
|
|
37
33
|
PadroneProgressRenderer,
|
|
38
|
-
PadroneTracer,
|
|
39
|
-
PadroneTracingConfig,
|
|
40
34
|
VersionCommand,
|
|
41
35
|
WithAsync,
|
|
42
|
-
WithCompletion,
|
|
43
36
|
WithHelp,
|
|
44
37
|
WithLogger,
|
|
45
|
-
WithMan,
|
|
46
|
-
WithMcp,
|
|
47
38
|
WithProgress,
|
|
48
39
|
WithRepl,
|
|
49
|
-
WithServe,
|
|
50
|
-
WithTracing,
|
|
51
40
|
WithVersion,
|
|
52
41
|
} from './extension/index.ts';
|
|
53
42
|
export {
|
|
54
43
|
createTerminalProgress,
|
|
55
|
-
isReactElement,
|
|
56
44
|
padroneAutoOutput,
|
|
57
45
|
padroneColor,
|
|
58
|
-
padroneCompletion,
|
|
59
46
|
padroneConfig,
|
|
60
47
|
padroneEnv,
|
|
61
48
|
padroneHelp,
|
|
62
|
-
padroneInk,
|
|
63
49
|
padroneInteractive,
|
|
64
50
|
padroneLogger,
|
|
65
|
-
padroneMan,
|
|
66
|
-
padroneMcp,
|
|
67
51
|
padroneProgress,
|
|
68
52
|
padroneRepl,
|
|
69
|
-
padroneServe,
|
|
70
53
|
padroneSignalHandling,
|
|
71
54
|
padroneStdin,
|
|
72
55
|
padroneSuggestions,
|
|
73
56
|
padroneTiming,
|
|
74
|
-
padroneTracing,
|
|
75
57
|
padroneUpdateCheck,
|
|
76
58
|
padroneVersion,
|
|
77
59
|
} from './extension/index.ts';
|
|
78
|
-
export type { PadroneMcpPreferences } from './feature/mcp.ts';
|
|
79
60
|
export type { UpdateCheckConfig } from './feature/update-check.ts';
|
|
80
61
|
export type { WrapConfig, WrapResult } from './feature/wrap.ts';
|
|
81
62
|
export type { AnsiStyle, ColorConfig, ColorTheme } from './output/colorizer.ts';
|
package/src/ink.ts
ADDED
package/src/man.ts
ADDED
package/src/mcp.ts
ADDED
package/src/serve.ts
ADDED
package/src/tracing.ts
ADDED
package/src/zod.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './schema/zod.ts';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"args-WmyGc59s.mjs","names":[],"sources":["../src/util/shell-utils.ts","../src/core/args.ts"],"sourcesContent":["/**\n * Convert a camelCase string to kebab-case.\n * Returns null if the string has no uppercase letters (no conversion needed).\n */\nexport function camelToKebab(str: string): string | null {\n if (!/[A-Z]/.test(str)) return null;\n return str.replace(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`);\n}\n\nexport type ShellType = 'bash' | 'zsh' | 'fish' | 'powershell';\n\n/**\n * Detects the current shell from environment variables and process info.\n * @returns The detected shell type, or undefined if unknown\n */\nexport async function detectShell(): Promise<ShellType | undefined> {\n if (typeof process === 'undefined') return undefined;\n\n // Method 1: Check SHELL environment variable (most common)\n const shellEnv = process.env.SHELL || '';\n if (shellEnv.includes('zsh')) return 'zsh';\n if (shellEnv.includes('bash')) return 'bash';\n if (shellEnv.includes('fish')) return 'fish';\n\n // Method 2: Check Windows-specific shells\n if (process.env.PSModulePath || process.env.POWERSHELL_DISTRIBUTION_CHANNEL) {\n return 'powershell';\n }\n\n // Method 3: Check parent process on Unix-like systems\n try {\n const ppid = process.ppid;\n if (ppid) {\n const { execSync } = (await import('node:child_process')) as typeof import('node:child_process');\n const processName = execSync(`ps -p ${ppid} -o comm=`, {\n encoding: 'utf-8',\n stdio: ['pipe', 'pipe', 'ignore'],\n }).trim();\n\n if (processName.includes('zsh')) return 'zsh';\n if (processName.includes('bash')) return 'bash';\n if (processName.includes('fish')) return 'fish';\n }\n } catch {\n // Ignore errors (e.g., ps not available)\n }\n\n return undefined;\n}\n\nexport async function getRcFile(shell: ShellType, home?: string): Promise<string | null> {\n const { homedir } = await import('node:os');\n const { join } = await import('node:path');\n const h = home ?? homedir();\n switch (shell) {\n case 'bash':\n return join(h, '.bashrc');\n case 'zsh':\n return join(h, '.zshrc');\n case 'fish':\n return join(h, '.config', 'fish', 'config.fish');\n case 'powershell':\n return (\n (typeof process !== 'undefined' ? process.env.PROFILE : undefined) ||\n join(h, 'Documents', 'PowerShell', 'Microsoft.PowerShell_profile.ps1')\n );\n default:\n return null;\n }\n}\n\nexport function escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Writes a snippet to a shell config file using begin/end markers for idempotency.\n * If a block with the same begin marker exists, it is replaced. Otherwise the snippet is appended.\n */\nexport async function writeToRcFile(\n rcFile: string,\n snippet: string,\n beginMarker: string,\n endMarker: string,\n): Promise<{ file: string; updated: boolean }> {\n const { existsSync, mkdirSync, readFileSync, writeFileSync } = await import('node:fs');\n const { dirname } = await import('node:path');\n const existing = existsSync(rcFile) ? readFileSync(rcFile, 'utf-8') : '';\n\n if (existing.includes(beginMarker)) {\n const pattern = new RegExp(`${escapeRegExp(beginMarker)}[\\\\s\\\\S]*?${escapeRegExp(endMarker)}`);\n writeFileSync(rcFile, existing.replace(pattern, snippet));\n return { file: rcFile, updated: true };\n }\n\n mkdirSync(dirname(rcFile), { recursive: true });\n const separator = existing.length > 0 && !existing.endsWith('\\n') ? '\\n' : '';\n writeFileSync(rcFile, `${existing}${separator}\\n${snippet}\\n`);\n return { file: rcFile, updated: false };\n}\n","import type { StandardJSONSchemaV1, StandardSchemaV1 } from '@standard-schema/spec';\nimport type { PadroneFieldMeta } from '../types/args-meta.ts';\nimport { camelToKebab } from '../util/shell-utils.ts';\nimport { asyncStreamRegistry } from '../util/stream.ts';\n\nexport type { PadroneArgsSchemaMeta, PadroneFieldMeta, SingleChar, StdinConfig } from '../types/args-meta.ts';\n\n/** Extract the JSON schema from a Standard Schema, returning it as a plain record. */\nexport function getJsonSchema(schema: StandardJSONSchemaV1): Record<string, any> {\n return schema['~standard'].jsonSchema.input({\n target: 'draft-2020-12',\n libraryOptions: { unrepresentable: 'any' },\n }) as Record<string, any>;\n}\n\nfunction getFieldJsonSchema(schema: StandardJSONSchemaV1 | undefined, field: string): Record<string, any> | undefined {\n if (!schema) return undefined;\n try {\n const jsonSchema = getJsonSchema(schema);\n if (jsonSchema.type === 'object' && jsonSchema.properties) return jsonSchema.properties[field];\n } catch {}\n return undefined;\n}\n\n/**\n * Checks if a field in the schema is an array type (e.g. `z.string().array()`).\n */\nexport function isArrayField(schema: StandardJSONSchemaV1 | undefined, field: string): boolean {\n return getFieldJsonSchema(schema, field)?.type === 'array';\n}\n\n/**\n * Checks if a field is an async stream (marked with `asyncStream()` metadata).\n * Returns the item schema if provided, or `true` if it's a plain string stream.\n */\nexport function isAsyncStreamField(schema: StandardJSONSchemaV1 | undefined, field: string): { itemSchema?: StandardSchemaV1 } | false {\n const prop = getFieldJsonSchema(schema, field);\n const asyncStreamId = prop?.asyncStream;\n if (asyncStreamId && asyncStreamRegistry.has(asyncStreamId)) {\n const meta = asyncStreamRegistry.get(asyncStreamId);\n return { itemSchema: meta?.itemSchema };\n }\n\n return false;\n}\n\n/**\n * Parse positional configuration to extract names and variadic info.\n */\nexport function parsePositionalConfig(positional: readonly string[]): { name: string; variadic: boolean }[] {\n return positional.map((p) => {\n const variadic = p.startsWith('...');\n const name = variadic ? p.slice(3) : p;\n return { name, variadic };\n });\n}\n\n/**\n * Result type for extractSchemaMetadata function.\n */\ninterface SchemaMetadataResult {\n /** Single-char flags: maps flag char → full arg name (e.g. `{ v: 'verbose' }`) */\n flags: Record<string, string>;\n /** Multi-char aliases: maps alias → full arg name (e.g. `{ 'dry-run': 'dryRun' }`) */\n aliases: Record<string, string>;\n /** Negative keywords: maps keyword → target arg name (e.g. `{ remote: 'local' }`) */\n negatives: Record<string, string>;\n /** Args that have custom negation set (even if empty), disabling the `--no-` prefix */\n customNegation: Set<string>;\n}\n\nfunction addEntries(target: Record<string, string>, key: string, items: string | readonly string[], filter?: (item: string) => boolean) {\n const list = typeof items === 'string' ? [items] : items;\n for (const item of list) {\n if (typeof item === 'string' && item && item !== key && !(item in target) && (!filter || filter(item))) {\n target[item] = key;\n }\n }\n}\n\n/**\n * Extract all arg metadata from schema and meta in a single pass.\n * Returns flags (single-char, stackable) and aliases (multi-char, long names) separately.\n * When `autoAlias` is true (default), camelCase property names automatically get kebab-case aliases.\n */\nexport function extractSchemaMetadata(\n schema: StandardJSONSchemaV1,\n meta?: Record<string, PadroneFieldMeta | undefined>,\n autoAlias?: boolean,\n): SchemaMetadataResult {\n const flags: Record<string, string> = {};\n const aliases: Record<string, string> = {};\n const negatives: Record<string, string> = {};\n const customNegation = new Set<string>();\n\n // Extract from meta object\n if (meta) {\n for (const [key, value] of Object.entries(meta)) {\n if (!value) continue;\n\n if (value.flags) {\n addEntries(flags, key, value.flags, (item) => item.length === 1);\n }\n if (value.alias) {\n addEntries(aliases, key, value.alias, (item) => item.length > 1);\n }\n if (value.negative !== undefined) {\n customNegation.add(key);\n addEntries(negatives, key, value.negative);\n }\n }\n }\n\n // Extract from JSON schema properties\n try {\n const jsonSchema = getJsonSchema(schema) as Record<string, any>;\n if (jsonSchema.type === 'object' && jsonSchema.properties) {\n for (const [propertyName, propertySchema] of Object.entries(jsonSchema.properties as Record<string, any>)) {\n if (!propertySchema) continue;\n\n // Extract flags from schema `.meta({ flags: ... })`\n const propFlags = propertySchema.flags;\n if (propFlags) {\n addEntries(flags, propertyName, propFlags, (item) => item.length === 1);\n }\n\n // Extract aliases from schema `.meta({ alias: ... })`\n const propAlias = propertySchema.alias;\n if (propAlias) {\n const list = typeof propAlias === 'string' ? [propAlias] : propAlias;\n if (Array.isArray(list)) {\n addEntries(aliases, propertyName, list, (item) => item.length > 1);\n }\n }\n\n // Extract negative keywords from schema `.meta({ negative: ... })`\n const propNegative = propertySchema.negative;\n if (propNegative !== undefined && !customNegation.has(propertyName)) {\n customNegation.add(propertyName);\n const list = typeof propNegative === 'string' ? [propNegative] : propNegative;\n if (Array.isArray(list)) {\n addEntries(negatives, propertyName, list);\n }\n }\n\n // Auto-generate kebab-case alias for camelCase property names\n if (autoAlias !== false) {\n const kebab = camelToKebab(propertyName);\n if (kebab && !(kebab in aliases)) {\n aliases[kebab] = propertyName;\n }\n }\n }\n }\n } catch {\n // Ignore errors from JSON schema generation\n }\n\n return { flags, aliases, negatives, customNegation };\n}\n\nfunction preprocessMappings(data: Record<string, unknown>, mappings: Record<string, string>): Record<string, unknown> {\n const result = { ...data };\n\n for (const [mappedKey, fullArgName] of Object.entries(mappings)) {\n if (mappedKey in data && mappedKey !== fullArgName) {\n const mappedValue = data[mappedKey];\n // Prefer full arg name if it exists\n if (!(fullArgName in result)) result[fullArgName] = mappedValue;\n delete result[mappedKey];\n }\n }\n\n return result;\n}\n\n/**\n * Apply values to arguments using \"set if not present\" semantics.\n * Existing values take precedence — only fills in undefined or missing keys.\n */\nexport function applyValues(data: Record<string, unknown>, values: Record<string, unknown>): Record<string, unknown> {\n const result = { ...data };\n\n for (const [key, value] of Object.entries(values)) {\n if (key in result && result[key] !== undefined) continue;\n if (value !== undefined) {\n result[key] = value;\n }\n }\n\n return result;\n}\n\n/** Applies flag and alias mappings to raw arguments. */\nexport function preprocessArgs(\n data: Record<string, unknown>,\n ctx: { flags?: Record<string, string>; aliases?: Record<string, string> },\n): Record<string, unknown> {\n let result = { ...data };\n\n if (ctx.flags && Object.keys(ctx.flags).length > 0) {\n result = preprocessMappings(result, ctx.flags);\n }\n if (ctx.aliases && Object.keys(ctx.aliases).length > 0) {\n result = preprocessMappings(result, ctx.aliases);\n }\n\n return result;\n}\n\n/**\n * Walk a JSON schema fragment and collect the set of allowed primitive types,\n * descending into `anyOf` / `oneOf` (used for unions). For variants whose type\n * is `array`, item types are collected separately into `itemTypes`.\n */\nfunction collectAllowedTypes(prop: Record<string, any> | undefined, types: Set<string>, itemTypes: Set<string>): void {\n if (!prop) return;\n\n if (prop.type !== undefined) {\n const list = Array.isArray(prop.type) ? prop.type : [prop.type];\n for (const t of list) {\n if (typeof t === 'string') types.add(t);\n }\n if (list.includes('array') && prop.items) {\n collectAllowedTypes(prop.items, itemTypes, new Set());\n }\n }\n\n const variants = prop.anyOf ?? prop.oneOf;\n if (Array.isArray(variants)) {\n for (const variant of variants) collectAllowedTypes(variant, types, itemTypes);\n }\n}\n\n/** Coerce a single CLI string to a primitive based on the set of allowed types. */\nfunction coerceScalar(value: unknown, allowedTypes: Set<string>): unknown {\n if (typeof value !== 'string') return value;\n\n if (allowedTypes.has('boolean')) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') return true;\n if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off') return false;\n }\n\n if (allowedTypes.has('number') || allowedTypes.has('integer')) {\n const trimmed = value.trim();\n if (trimmed !== '') {\n const num = Number(trimmed);\n if (!Number.isNaN(num)) return num;\n }\n }\n\n return value;\n}\n\n/**\n * Auto-coerce CLI string values to match the expected schema types.\n * Handles: string → number, string → boolean for primitive schema fields.\n * Arrays of primitives are also coerced element-wise.\n * Union types (`anyOf` / `oneOf`) are coerced to the most specific matching\n * primitive — e.g. `--test true` for `z.union([z.boolean(), z.string()])`\n * becomes the boolean `true` rather than the string \"true\".\n */\nexport function coerceArgs(data: Record<string, unknown>, schema: StandardJSONSchemaV1): Record<string, unknown> {\n let properties: Record<string, any>;\n try {\n const jsonSchema = getJsonSchema(schema) as Record<string, any>;\n if (jsonSchema.type !== 'object' || !jsonSchema.properties) return data;\n properties = jsonSchema.properties;\n } catch {\n return data;\n }\n\n const result = { ...data };\n\n for (const [key, value] of Object.entries(result)) {\n const prop = properties[key];\n if (!prop) continue;\n\n const types = new Set<string>();\n const itemTypes = new Set<string>();\n collectAllowedTypes(prop, types, itemTypes);\n\n const isArrayValue = Array.isArray(value);\n const allowsArray = types.has('array');\n const allowsScalar = types.has('string') || types.has('boolean') || types.has('number') || types.has('integer');\n\n if (isArrayValue && allowsArray) {\n result[key] = value.map((v) => coerceScalar(v, itemTypes));\n } else if (!isArrayValue && allowsArray && !allowsScalar) {\n // Wrap single value into an array when only array shapes are allowed\n result[key] = [coerceScalar(value, itemTypes)];\n } else if (!isArrayValue) {\n result[key] = coerceScalar(value, types);\n }\n }\n\n return result;\n}\n\n/**\n * Detect unknown keys in the args that don't match any schema property.\n * Returns an array of { key } for each unknown key.\n * Framework-reserved keys (--config, -c) are always allowed.\n */\nexport function detectUnknownArgs(\n data: Record<string, unknown>,\n schema: StandardJSONSchemaV1,\n flags: Record<string, string>,\n aliases: Record<string, string>,\n negatives?: Record<string, string>,\n): { key: string }[] {\n let properties: Record<string, any>;\n let isLoose = false;\n try {\n const jsonSchema = getJsonSchema(schema) as Record<string, any>;\n if (jsonSchema.type !== 'object' || !jsonSchema.properties) return [];\n properties = jsonSchema.properties;\n // If additionalProperties is set (true, {}, or a schema), the schema allows extra keys\n if (jsonSchema.additionalProperties !== undefined && jsonSchema.additionalProperties !== false) isLoose = true;\n } catch {\n return [];\n }\n\n if (isLoose) return [];\n\n const knownKeys = new Set<string>([\n ...Object.keys(properties),\n ...Object.keys(flags),\n ...Object.values(flags),\n ...Object.keys(aliases),\n ...Object.values(aliases),\n ...(negatives ? Object.keys(negatives) : []),\n ...(negatives ? Object.values(negatives) : []),\n ]);\n const unknowns: { key: string }[] = [];\n\n for (const key of Object.keys(data)) {\n if (!knownKeys.has(key)) {\n unknowns.push({ key });\n }\n }\n\n return unknowns;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/codegen/types.ts","../../src/codegen/code-builder.ts","../../src/codegen/discovery.ts","../../src/codegen/file-emitter.ts","../../src/codegen/generators/barrel-file.ts","../../src/codegen/generators/command-file.ts","../../src/codegen/generators/command-tree.ts","../../src/codegen/parsers/bash.ts","../../src/codegen/parsers/fish.ts","../../src/codegen/parsers/help.ts","../../src/codegen/parsers/merge.ts","../../src/codegen/parsers/zsh.ts","../../src/codegen/schema-to-code.ts","../../src/codegen/template.ts"],"mappings":";;;;;;UAGiB,SAAA;EACf,IAAA;EACA,IAAA;EAFwB;EAIxB,KAAA;EAFA;EAIA,UAAA;EACA,WAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,UAAA;EAAA;EAEA,SAAA;AAAA;;AAOF;;;UAAiB,WAAA;EACf,IAAA;EACA,WAAA;EACA,OAAA;EAMyB;EAJzB,SAAA,GAAY,SAAA;EAHZ;EAKA,WAAA,GAAc,SAAA;EAFd;EAIA,WAAA,GAAc,WAAA;EACd,QAAA;EACA,UAAA;AAAA;;;;UAMe,eAAA;EACf,IAAA,CAAK,OAAA;EACL,IAAA,CAAK,OAAA;EACL,KAAA,CAAM,OAAA;EACN,OAAA,CAAQ,OAAA;AAAA;;;;UAMO,gBAAA;EAPf;EASA,MAAA;EARA;EAUA,iBAAA,QAAyB,WAAA;EAVF;EAYvB,OAAA,EAAS,WAAA;EANM;EAQf,QAAA,EAAU,gBAAA;;EAEV,GAAA,EAAK,eAAA;AAAA;;;;UAMU,eAAA;EAdf;EAgBA,IAAA;EAdyB;EAgBzB,OAAA,EAAS,GAAA;IAAc,UAAA,EAAY,GAAA;IAAa,QAAA;EAAA;AAAA;;;;UAMjC,WAAA;EAVe;EAY9B,MAAA,CAAO,SAAA,qBAA8B,MAAA,WAAiB,WAAA;EAR1C;EAUZ,aAAA,CAAc,IAAA,UAAc,MAAA,WAAiB,WAAA;EAV7C;EAYA,UAAA,CAAW,SAAA,qBAA8B,MAAA,WAAiB,WAAA;EAZnC;EAcvB,IAAA,CAAK,IAAA,YAAgB,WAAA;EAd2B;EAgBhD,KAAA,CAAM,OAAA,GAAU,CAAA,EAAG,WAAA,KAAgB,WAAA,GAAc,WAAA;EAhBO;EAkBxD,KAAA,CAAM,IAAA,UAAc,OAAA,GAAU,CAAA,EAAG,WAAA,KAAgB,WAAA,EAAa,KAAA,YAAiB,WAAA;EAZrD;EAc1B,KAAA,CAAM,IAAA,UAAc,KAAA,UAAe,OAAA,GAAU,CAAA,EAAG,WAAA,KAAgB,WAAA,GAAc,WAAA;EAZxB;EActD,OAAA,CAAQ,IAAA,WAAe,WAAA;EAVmC;EAY1D,UAAA,CAAW,IAAA,WAAe,WAAA;EARP;EAUnB,WAAA,CAAY,IAAA,WAAe,WAAA;EAVsB;EAYjD,GAAA,CAAI,IAAA,WAAe,WAAA;EAV8B;EAYjD,KAAA,IAAS,eAAA;AAAA;;;;UAMM,UAAA;EAVY;EAY3B,OAAA;EARS;EAUT,OAAA;EAVwB;EAYxB,MAAA;IAAU,IAAA;IAAc,KAAA,EAAO,KAAA;EAAA;AAAA;;;;UAMhB,kBAAA;EApCJ;EAsCX,MAAA;EAtC0D;EAwC1D,MAAA;EAtCK;EAwCL,SAAA;EAtCA;EAwCA,MAAA;AAAA;;;;UAMe,WAAA;EA5CT;EA8CN,OAAA,CAAQ,IAAA,UAAc,OAAA,WAAkB,eAAA;EA9CV;EAgD9B,IAAA,IAAQ,OAAA,CAAQ,UAAA;AAAA;;;;KAMN,gBAAA,IAAoB,IAAA,cAAkB,IAAA,EAAM,MAAA;;;;;AA3IxD;iBC4NgB,iBAAA,CAAA,GAAqB,WAAA;;;KCrNzB,eAAA;AAAA,UAEK,gBAAA;EFTA;EEWf,OAAA;;;;;;EAMA,OAAA,GAAU,eAAA;EFVV;EEYA,KAAA;EFVA;EEYA,KAAA;EFVA;EEYA,GAAA,GAAM,eAAA;EFVG;EEYT,OAAA;AAAA;AAAA,UAGe,eAAA;;EAEf,OAAA,EAAS,WAAA;EFHK;EEKd,WAAA;EFHyB;EEKzB,QAAA;AAAA;;;;;iBAOoB,WAAA,CAAY,OAAA,EAAS,gBAAA,GAAmB,OAAA,CAAQ,eAAA;;;;;;iBA2MhD,qBAAA,CAAsB,OAAA,UAAiB,OAAA,YAAiB,OAAA;;;;;AFpP9E;iBGmEgB,iBAAA,CAAkB,OAAA,EAAS,kBAAA,GAAqB,WAAA;;;;;AHnEhE;iBIEgB,kBAAA,CAAmB,KAAA,YAAiB,GAAA,EAAK,gBAAA,GAAmB,WAAA;;;UC0D3D,kBAAA;EL5DS;EK8DxB,IAAA;IL5DA,gDK8DE,OAAA,UL1DF;IK4DE,IAAA;EAAA;ELzDF;EK4DA,WAAA;IAAgB,IAAA;IAAc,OAAA;IAAiB,UAAA;IAAoB,OAAA;EAAA;AAAA;;;;;iBAOrD,mBAAA,CAAoB,OAAA,EAAS,WAAA,EAAa,GAAA,EAAK,gBAAA,EAAkB,OAAA,GAAU,kBAAA,GAAqB,WAAA;;;UC1E/F,kBAAA;;EAEf,IAAA;INJwB,sDMMtB,OAAA;EAAA;AAAA;;;;;iBAQY,mBAAA,CAAoB,IAAA,EAAM,WAAA,EAAa,GAAA,EAAK,gBAAA,EAAkB,OAAA,GAAU,kBAAA;;;;;ANdxF;;;;;;;;;;iBOWgB,oBAAA,CAAqB,IAAA,WAAe,WAAA;;;;;APXpD;;;;iBQKgB,oBAAA,CAAqB,IAAA,WAAe,WAAA;;;UCN1C,gBAAA;;EAER,IAAA;AAAA;;;;;iBASc,eAAA,CAAgB,IAAA,UAAc,OAAA,GAAU,gBAAA,GAAmB,WAAA;;;;;ATV3E;;;;;iBUMgB,gBAAA,CAAA,GAAoB,OAAA,EAAS,WAAA,KAAgB,WAAA;;;;;AVN7D;;;;;;;iBWQgB,mBAAA,CAAoB,IAAA,WAAe,WAAA;;;UCPzC,kBAAA;EZDO;EYGf,IAAA;;EAEA,OAAA;AAAA;;;;;iBAkDc,YAAA,CAAa,MAAA,EAAQ,gBAAA,GAAmB,kBAAA;;;;;;iBAkCxC,eAAA,CAAgB,MAAA,EAAQ,SAAA,KAAc,kBAAA;;;;;;AZzFtD;;;;;;KaOK,gBAAA,IAAoB,IAAA,EAAM,MAAA,mBAAyB,QAAA,GAAW,MAAA;;;;iBAKnD,QAAA,CAAS,IAAA,WAAe,gBAAA"}
|