padrone 1.4.0 → 1.6.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.
Files changed (141) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +108 -283
  3. package/dist/args-Cnq0nwSM.mjs +272 -0
  4. package/dist/args-Cnq0nwSM.mjs.map +1 -0
  5. package/dist/codegen/index.d.mts +28 -3
  6. package/dist/codegen/index.d.mts.map +1 -1
  7. package/dist/codegen/index.mjs +169 -19
  8. package/dist/codegen/index.mjs.map +1 -1
  9. package/dist/commands-B_gufyR9.mjs +514 -0
  10. package/dist/commands-B_gufyR9.mjs.map +1 -0
  11. package/dist/{completion.mjs → completion-BEuflbDO.mjs} +86 -108
  12. package/dist/completion-BEuflbDO.mjs.map +1 -0
  13. package/dist/docs/index.d.mts +22 -2
  14. package/dist/docs/index.d.mts.map +1 -1
  15. package/dist/docs/index.mjs +92 -7
  16. package/dist/docs/index.mjs.map +1 -1
  17. package/dist/errors-CL63UOzt.mjs +137 -0
  18. package/dist/errors-CL63UOzt.mjs.map +1 -0
  19. package/dist/{formatter-ClUK5hcQ.d.mts → formatter-DrvhDMrq.d.mts} +35 -6
  20. package/dist/formatter-DrvhDMrq.d.mts.map +1 -0
  21. package/dist/help-B5Kk83of.mjs +849 -0
  22. package/dist/help-B5Kk83of.mjs.map +1 -0
  23. package/dist/index-BaU3X6dY.d.mts +1178 -0
  24. package/dist/index-BaU3X6dY.d.mts.map +1 -0
  25. package/dist/index.d.mts +763 -36
  26. package/dist/index.d.mts.map +1 -1
  27. package/dist/index.mjs +3608 -1534
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/mcp-BM-d0nZi.mjs +377 -0
  30. package/dist/mcp-BM-d0nZi.mjs.map +1 -0
  31. package/dist/serve-Bk0JUlCj.mjs +402 -0
  32. package/dist/serve-Bk0JUlCj.mjs.map +1 -0
  33. package/dist/stream-DC4H8YTx.mjs +77 -0
  34. package/dist/stream-DC4H8YTx.mjs.map +1 -0
  35. package/dist/test.d.mts +5 -8
  36. package/dist/test.d.mts.map +1 -1
  37. package/dist/test.mjs +5 -27
  38. package/dist/test.mjs.map +1 -1
  39. package/dist/{update-check-EbNDkzyV.mjs → update-check-CZ2VqjnV.mjs} +16 -17
  40. package/dist/update-check-CZ2VqjnV.mjs.map +1 -0
  41. package/dist/zod.d.mts +32 -0
  42. package/dist/zod.d.mts.map +1 -0
  43. package/dist/zod.mjs +50 -0
  44. package/dist/zod.mjs.map +1 -0
  45. package/package.json +20 -9
  46. package/src/cli/completions.ts +14 -11
  47. package/src/cli/docs.ts +13 -16
  48. package/src/cli/doctor.ts +213 -24
  49. package/src/cli/index.ts +28 -82
  50. package/src/cli/init.ts +12 -10
  51. package/src/cli/link.ts +22 -18
  52. package/src/cli/wrap.ts +14 -11
  53. package/src/codegen/discovery.ts +80 -28
  54. package/src/codegen/index.ts +2 -1
  55. package/src/codegen/parsers/bash.ts +179 -0
  56. package/src/codegen/schema-to-code.ts +2 -1
  57. package/src/core/args.ts +296 -0
  58. package/src/core/commands.ts +373 -0
  59. package/src/core/create.ts +268 -0
  60. package/src/{runtime.ts → core/default-runtime.ts} +70 -135
  61. package/src/{errors.ts → core/errors.ts} +22 -0
  62. package/src/core/exec.ts +259 -0
  63. package/src/core/interceptors.ts +302 -0
  64. package/src/{parse.ts → core/parse.ts} +36 -89
  65. package/src/core/program-methods.ts +301 -0
  66. package/src/core/results.ts +229 -0
  67. package/src/core/runtime.ts +246 -0
  68. package/src/core/validate.ts +247 -0
  69. package/src/docs/index.ts +124 -11
  70. package/src/extension/auto-output.ts +95 -0
  71. package/src/extension/color.ts +38 -0
  72. package/src/extension/completion.ts +49 -0
  73. package/src/extension/config.ts +262 -0
  74. package/src/extension/env.ts +101 -0
  75. package/src/extension/help.ts +192 -0
  76. package/src/extension/index.ts +43 -0
  77. package/src/extension/ink.ts +93 -0
  78. package/src/extension/interactive.ts +106 -0
  79. package/src/extension/logger.ts +214 -0
  80. package/src/extension/man.ts +51 -0
  81. package/src/extension/mcp.ts +52 -0
  82. package/src/extension/progress-renderer.ts +338 -0
  83. package/src/extension/progress.ts +299 -0
  84. package/src/extension/repl.ts +94 -0
  85. package/src/extension/serve.ts +48 -0
  86. package/src/extension/signal.ts +87 -0
  87. package/src/extension/stdin.ts +62 -0
  88. package/src/extension/suggestions.ts +114 -0
  89. package/src/extension/timing.ts +81 -0
  90. package/src/extension/tracing.ts +175 -0
  91. package/src/extension/update-check.ts +77 -0
  92. package/src/extension/utils.ts +51 -0
  93. package/src/extension/version.ts +63 -0
  94. package/src/{completion.ts → feature/completion.ts} +130 -57
  95. package/src/{interactive.ts → feature/interactive.ts} +47 -6
  96. package/src/feature/mcp.ts +387 -0
  97. package/src/{repl-loop.ts → feature/repl-loop.ts} +26 -16
  98. package/src/feature/serve.ts +438 -0
  99. package/src/feature/test.ts +262 -0
  100. package/src/{update-check.ts → feature/update-check.ts} +16 -16
  101. package/src/{wrap.ts → feature/wrap.ts} +27 -27
  102. package/src/index.ts +120 -11
  103. package/src/output/colorizer.ts +154 -0
  104. package/src/{formatter.ts → output/formatter.ts} +281 -135
  105. package/src/{help.ts → output/help.ts} +62 -15
  106. package/src/{zod.d.ts → schema/zod.d.ts} +1 -1
  107. package/src/schema/zod.ts +50 -0
  108. package/src/test.ts +2 -285
  109. package/src/types/args-meta.ts +151 -0
  110. package/src/types/builder.ts +697 -0
  111. package/src/types/command.ts +157 -0
  112. package/src/types/index.ts +59 -0
  113. package/src/types/interceptor.ts +296 -0
  114. package/src/types/preferences.ts +83 -0
  115. package/src/types/result.ts +71 -0
  116. package/src/types/schema.ts +19 -0
  117. package/src/util/dotenv.ts +244 -0
  118. package/src/{shell-utils.ts → util/shell-utils.ts} +26 -9
  119. package/src/util/stream.ts +101 -0
  120. package/src/{type-helpers.ts → util/type-helpers.ts} +23 -16
  121. package/src/{type-utils.ts → util/type-utils.ts} +99 -37
  122. package/src/util/utils.ts +51 -0
  123. package/src/zod.ts +1 -0
  124. package/dist/args-CVDbyyzG.mjs +0 -199
  125. package/dist/args-CVDbyyzG.mjs.map +0 -1
  126. package/dist/chunk-y_GBKt04.mjs +0 -5
  127. package/dist/completion.d.mts +0 -64
  128. package/dist/completion.d.mts.map +0 -1
  129. package/dist/completion.mjs.map +0 -1
  130. package/dist/formatter-ClUK5hcQ.d.mts.map +0 -1
  131. package/dist/help-CcBe91bV.mjs +0 -1254
  132. package/dist/help-CcBe91bV.mjs.map +0 -1
  133. package/dist/types-DjIdJN5G.d.mts +0 -1059
  134. package/dist/types-DjIdJN5G.d.mts.map +0 -1
  135. package/dist/update-check-EbNDkzyV.mjs.map +0 -1
  136. package/src/args.ts +0 -461
  137. package/src/colorizer.ts +0 -41
  138. package/src/command-utils.ts +0 -532
  139. package/src/create.ts +0 -1477
  140. package/src/types.ts +0 -1109
  141. package/src/utils.ts +0 -140
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-DjIdJN5G.d.mts","names":[],"sources":["../src/args.ts","../src/help.ts","../src/runtime.ts","../src/type-utils.ts","../src/update-check.ts","../src/wrap.ts","../src/types.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-check-EbNDkzyV.mjs","names":[],"sources":["../src/update-check.ts"],"sourcesContent":["import type { ResolvedPadroneRuntime } from './runtime.ts';\n\n/**\n * Configuration for the update check feature.\n */\nexport type UpdateCheckConfig = {\n /**\n * The npm package name to check. Defaults to the program name.\n */\n packageName?: string;\n /**\n * Registry to check for updates.\n * - `'npm'` — checks the npm registry (default)\n * - A URL string — custom registry endpoint that returns JSON with a `version` or `dist-tags.latest` field\n */\n registry?: 'npm' | string;\n /**\n * How often to check for updates. Accepts shorthand like `'1d'`, `'12h'`, `'30m'`.\n * Defaults to `'1d'` (once per day).\n */\n interval?: string;\n /**\n * Path to the cache file for storing the last check timestamp and latest version.\n * Defaults to `~/.config/<programName>-update-check.json`.\n */\n cache?: string;\n /**\n * Environment variable name to disable update checks (e.g. `'MYAPP_NO_UPDATE_CHECK'`).\n * When set to a truthy value, update checks are skipped.\n * Defaults to `'<PROGRAM_NAME>_NO_UPDATE_CHECK'` (uppercased, hyphens to underscores).\n */\n disableEnvVar?: string;\n};\n\ntype CacheData = {\n lastCheck: number;\n latestVersion: string;\n};\n\n/**\n * Parses an interval string like '1d', '12h', '30m', '1w' into milliseconds.\n */\nexport function parseInterval(interval: string): number {\n const match = interval.match(/^(\\d+)\\s*(ms|s|m|h|d|w)$/);\n if (!match) return 86_400_000; // default 1d\n\n const value = parseInt(match[1]!, 10);\n const unit = match[2]!;\n\n switch (unit) {\n case 'ms':\n return value;\n case 's':\n return value * 1000;\n case 'm':\n return value * 60_000;\n case 'h':\n return value * 3_600_000;\n case 'd':\n return value * 86_400_000;\n case 'w':\n return value * 604_800_000;\n default:\n return 86_400_000;\n }\n}\n\n/**\n * Compares two semver version strings.\n * Returns true if `latest` is newer than `current`.\n */\nexport function isNewerVersion(current: string, latest: string): boolean {\n const parse = (v: string) => {\n const cleaned = v.replace(/^v/, '');\n const parts = cleaned.split('-');\n const nums = parts[0]!.split('.').map(Number);\n return { major: nums[0] ?? 0, minor: nums[1] ?? 0, patch: nums[2] ?? 0, prerelease: parts[1] };\n };\n\n const c = parse(current);\n const l = parse(latest);\n\n // Don't notify about pre-release versions unless user is already on a pre-release\n if (l.prerelease && !c.prerelease) return false;\n\n if (l.major !== c.major) return l.major > c.major;\n if (l.minor !== c.minor) return l.minor > c.minor;\n if (l.patch !== c.patch) return l.patch > c.patch;\n return false;\n}\n\n/**\n * Reads the update check cache file.\n */\nfunction readCache(cachePath: string): CacheData | undefined {\n try {\n const { existsSync, readFileSync } = require('node:fs') as typeof import('node:fs');\n if (!existsSync(cachePath)) return undefined;\n const data = JSON.parse(readFileSync(cachePath, 'utf-8'));\n if (typeof data.lastCheck === 'number' && typeof data.latestVersion === 'string') {\n return data as CacheData;\n }\n } catch {\n // Ignore errors\n }\n return undefined;\n}\n\n/**\n * Writes the update check cache file.\n */\nfunction writeCache(cachePath: string, data: CacheData): void {\n try {\n const { existsSync, mkdirSync, writeFileSync } = require('node:fs') as typeof import('node:fs');\n const { dirname } = require('node:path') as typeof import('node:path');\n const dir = dirname(cachePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(cachePath, JSON.stringify(data), 'utf-8');\n } catch {\n // Ignore errors — cache is best-effort\n }\n}\n\n/**\n * Resolves the cache path, expanding `~` to the home directory.\n */\nfunction resolveCachePath(cachePath: string): string {\n const { homedir } = require('node:os') as typeof import('node:os');\n const { resolve } = require('node:path') as typeof import('node:path');\n if (cachePath.startsWith('~')) {\n return cachePath.replace('~', homedir());\n }\n return resolve(cachePath);\n}\n\n/**\n * Fetches the latest version from the registry.\n */\nasync function fetchLatestVersion(packageName: string, registry: string): Promise<string | undefined> {\n const url = registry === 'npm' ? `https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest` : registry;\n\n try {\n const response = await fetch(url);\n if (!response.ok) return undefined;\n const data = (await response.json()) as Record<string, unknown>;\n\n // npm registry returns { version: \"x.y.z\" }\n if (typeof data.version === 'string') return data.version;\n\n // Custom endpoint may return { \"dist-tags\": { latest: \"x.y.z\" } }\n const distTags = data['dist-tags'] as Record<string, string> | undefined;\n if (distTags?.latest) return distTags.latest;\n } catch {\n // Network errors are expected (offline, firewall, etc.)\n }\n return undefined;\n}\n\n/**\n * Formats the update notification message.\n */\nexport function formatUpdateMessage(currentVersion: string, latestVersion: string, packageName: string): string {\n const updateCommand = `npm update -g ${packageName}`;\n return `\\n Update available: ${currentVersion} \\u2192 ${latestVersion}\\n Run \"${updateCommand}\" to update\\n`;\n}\n\n/**\n * Checks for updates in the background. Returns a function that, when called,\n * prints the update notification if a newer version was found.\n *\n * This is designed to be non-blocking: the check starts immediately but the\n * result is only consumed after command execution completes.\n */\nexport function createUpdateChecker(\n programName: string,\n currentVersion: string,\n config: UpdateCheckConfig,\n runtime: ResolvedPadroneRuntime,\n): () => void {\n const packageName = config.packageName ?? programName;\n const registry = config.registry ?? 'npm';\n const intervalMs = parseInterval(config.interval ?? '1d');\n const disableEnvVar = config.disableEnvVar ?? `${programName.toUpperCase().replace(/-/g, '_')}_NO_UPDATE_CHECK`;\n\n const defaultCachePath = `~/.config/${programName}-update-check.json`;\n const cachePath = resolveCachePath(config.cache ?? defaultCachePath);\n\n // Check if disabled\n const env = runtime.env();\n if (env.CI || env.CONTINUOUS_INTEGRATION) return noop;\n if (env[disableEnvVar]) return noop;\n if (typeof process !== 'undefined' && !process.stdout?.isTTY) return noop;\n\n // Check cache — if we checked recently, use cached result\n const cached = readCache(cachePath);\n if (cached && Date.now() - cached.lastCheck < intervalMs) {\n // Use cached version for display\n if (isNewerVersion(currentVersion, cached.latestVersion)) {\n return () => {\n runtime.error(formatUpdateMessage(currentVersion, cached.latestVersion, packageName));\n };\n }\n return noop;\n }\n\n // Start background fetch\n const fetchPromise = fetchLatestVersion(packageName, registry).then((latestVersion) => {\n if (latestVersion) {\n writeCache(cachePath, { lastCheck: Date.now(), latestVersion });\n if (isNewerVersion(currentVersion, latestVersion)) {\n return latestVersion;\n }\n }\n return undefined;\n });\n\n // Return a function that blocks on the result (briefly — the fetch should be done by now)\n let resolved: string | undefined | null = null; // null = not yet resolved\n fetchPromise.then(\n (v) => {\n resolved = v;\n },\n () => {\n resolved = undefined;\n },\n );\n\n return () => {\n // If the fetch already resolved, use the result synchronously\n if (resolved !== null) {\n if (resolved) {\n runtime.error(formatUpdateMessage(currentVersion, resolved, packageName));\n }\n return;\n }\n\n // Otherwise, we can't block — just skip this time.\n // The cache will be written when the promise resolves, so next invocation will show the message.\n };\n}\n\nfunction noop() {}\n"],"mappings":"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"}
package/src/args.ts DELETED
@@ -1,461 +0,0 @@
1
- import type { StandardJSONSchemaV1 } from '@standard-schema/spec';
2
-
3
- type Letter =
4
- | 'a'
5
- | 'b'
6
- | 'c'
7
- | 'd'
8
- | 'e'
9
- | 'f'
10
- | 'g'
11
- | 'h'
12
- | 'i'
13
- | 'j'
14
- | 'k'
15
- | 'l'
16
- | 'm'
17
- | 'n'
18
- | 'o'
19
- | 'p'
20
- | 'q'
21
- | 'r'
22
- | 's'
23
- | 't'
24
- | 'u'
25
- | 'v'
26
- | 'w'
27
- | 'x'
28
- | 'y'
29
- | 'z';
30
-
31
- /** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
32
- export type SingleChar = Letter | Uppercase<Letter>;
33
-
34
- export interface PadroneFieldMeta {
35
- description?: string;
36
- /** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
37
- flags?: SingleChar[] | SingleChar;
38
- /** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
39
- alias?: string[] | string;
40
- deprecated?: boolean | string;
41
- hidden?: boolean;
42
- examples?: unknown[];
43
- }
44
-
45
- type PositionalArgs<TObj> =
46
- TObj extends Record<string, any>
47
- ? {
48
- [K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string;
49
- }[keyof TObj]
50
- : string;
51
-
52
- /**
53
- * Meta configuration for arguments, including positional arguments.
54
- * The `positional` array defines which arguments are positional and their order.
55
- * Use '...name' prefix to indicate variadic (rest) arguments, matching JS/TS rest syntax.
56
- *
57
- * @example
58
- * ```ts
59
- * .arguments(schema, {
60
- * positional: ['source', '...files', 'dest'], // '...files' is variadic
61
- * })
62
- * ```
63
- */
64
- /**
65
- * Configuration for reading from stdin and mapping it to an argument field.
66
- */
67
- export type StdinConfig<TObj = Record<string, any>> =
68
- | (keyof TObj & string)
69
- | {
70
- /** The argument field to populate with stdin data. */
71
- field: keyof TObj & string;
72
- /**
73
- * How to consume stdin:
74
- * - `'text'` (default): read all stdin as a single string.
75
- * - `'lines'`: read stdin as an array of lines (string[]).
76
- */
77
- as?: 'text' | 'lines';
78
- };
79
-
80
- export interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
81
- /**
82
- * Array of argument names that should be treated as positional arguments.
83
- * Order in array determines position. Use '...name' prefix for variadic args.
84
- * @example ['source', '...files', 'dest'] - 'files' captures multiple values
85
- */
86
- positional?: PositionalArgs<TObj>[];
87
- /**
88
- * Per-argument metadata.
89
- */
90
- fields?: { [K in keyof TObj]?: PadroneFieldMeta };
91
- /**
92
- * Automatically generate kebab-case aliases for camelCase option names.
93
- * For example, `dryRun` automatically gets `--dry-run` as an alias.
94
- * Defaults to `true`. Set to `false` to disable.
95
- *
96
- * @default true
97
- * @example
98
- * ```ts
99
- * // Auto-aliases enabled (default): --dry-run → dryRun
100
- * .arguments(z.object({ dryRun: z.boolean() }))
101
- *
102
- * // Disable auto-aliases
103
- * .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
104
- * ```
105
- */
106
- autoAlias?: boolean;
107
- /**
108
- * Read from stdin and inject the data into the specified argument field.
109
- * Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
110
- *
111
- * - `string`: shorthand for `{ field: name, as: 'text' }` — read all stdin as a string.
112
- * - `{ field, as }`: explicit form. `as: 'text'` reads all stdin as a string,
113
- * `as: 'lines'` reads stdin as an array of line strings.
114
- *
115
- * Precedence: CLI flags > stdin > env vars > config file > schema defaults.
116
- *
117
- * @example
118
- * ```ts
119
- * // Shorthand: read all stdin as text into 'data' field
120
- * .arguments(z.object({ data: z.string() }), { stdin: 'data' })
121
- *
122
- * // Explicit: read stdin lines into 'lines' field
123
- * .arguments(z.object({ lines: z.string().array() }), {
124
- * stdin: { field: 'lines', as: 'lines' },
125
- * })
126
- * ```
127
- */
128
- stdin?: StdinConfig<TObj>;
129
- /**
130
- * Fields to interactively prompt for when their values are missing after CLI/env/config resolution.
131
- * - `true`: prompt for all required fields that are missing.
132
- * - `string[]`: prompt for these specific fields if missing.
133
- *
134
- * Interactive prompting only occurs in `cli()` when the runtime has `interactive: true`.
135
- * Setting this makes `parse()` and `cli()` return Promises.
136
- *
137
- * @example
138
- * ```ts
139
- * .arguments(schema, {
140
- * interactive: true, // prompt all missing required fields
141
- * interactive: ['name', 'template'], // prompt only these fields
142
- * })
143
- * ```
144
- */
145
- interactive?: true | (keyof TObj & string)[];
146
- /**
147
- * Optional fields offered after required interactive prompts.
148
- * Users are shown a multi-select to choose which of these fields to configure.
149
- * - `true`: offer all optional fields that are missing.
150
- * - `string[]`: offer these specific fields.
151
- *
152
- * @example
153
- * ```ts
154
- * .arguments(schema, {
155
- * interactive: ['name'],
156
- * optionalInteractive: ['typescript', 'eslint', 'prettier'],
157
- * })
158
- * ```
159
- */
160
- optionalInteractive?: true | (keyof TObj & string)[];
161
- }
162
-
163
- /**
164
- * Convert a camelCase string to kebab-case.
165
- * Returns null if the string has no uppercase letters (no conversion needed).
166
- */
167
- export function camelToKebab(str: string): string | null {
168
- if (!/[A-Z]/.test(str)) return null;
169
- return str.replace(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`);
170
- }
171
-
172
- /**
173
- * Normalizes stdin config into its explicit form.
174
- */
175
- export function parseStdinConfig(stdin: StdinConfig): { field: string; as: 'text' | 'lines' } {
176
- if (typeof stdin === 'string') return { field: stdin, as: 'text' };
177
- return { field: stdin.field as string, as: stdin.as ?? 'text' };
178
- }
179
-
180
- /**
181
- * Parse positional configuration to extract names and variadic info.
182
- */
183
- export function parsePositionalConfig(positional: string[]): { name: string; variadic: boolean }[] {
184
- return positional.map((p) => {
185
- const isVariadic = p.startsWith('...');
186
- const name = isVariadic ? p.slice(3) : p;
187
- return { name, variadic: isVariadic };
188
- });
189
- }
190
-
191
- /**
192
- * Result type for extractSchemaMetadata function.
193
- */
194
- interface SchemaMetadataResult {
195
- /** Single-char flags: maps flag char → full arg name (e.g. `{ v: 'verbose' }`) */
196
- flags: Record<string, string>;
197
- /** Multi-char aliases: maps alias → full arg name (e.g. `{ 'dry-run': 'dryRun' }`) */
198
- aliases: Record<string, string>;
199
- }
200
-
201
- function addEntries(target: Record<string, string>, key: string, items: string | string[], filter?: (item: string) => boolean) {
202
- const list = typeof items === 'string' ? [items] : items;
203
- for (const item of list) {
204
- if (typeof item === 'string' && item && item !== key && !(item in target) && (!filter || filter(item))) {
205
- target[item] = key;
206
- }
207
- }
208
- }
209
-
210
- /**
211
- * Extract all arg metadata from schema and meta in a single pass.
212
- * Returns flags (single-char, stackable) and aliases (multi-char, long names) separately.
213
- * When `autoAlias` is true (default), camelCase property names automatically get kebab-case aliases.
214
- */
215
- export function extractSchemaMetadata(
216
- schema: StandardJSONSchemaV1,
217
- meta?: Record<string, PadroneFieldMeta | undefined>,
218
- autoAlias?: boolean,
219
- ): SchemaMetadataResult {
220
- const flags: Record<string, string> = {};
221
- const aliases: Record<string, string> = {};
222
-
223
- // Extract from meta object
224
- if (meta) {
225
- for (const [key, value] of Object.entries(meta)) {
226
- if (!value) continue;
227
-
228
- if (value.flags) {
229
- addEntries(flags, key, value.flags, (item) => item.length === 1);
230
- }
231
- if (value.alias) {
232
- addEntries(aliases, key, value.alias, (item) => item.length > 1);
233
- }
234
- }
235
- }
236
-
237
- // Extract from JSON schema properties
238
- try {
239
- const jsonSchema = schema['~standard'].jsonSchema.input({ target: 'draft-2020-12' }) as Record<string, any>;
240
- if (jsonSchema.type === 'object' && jsonSchema.properties) {
241
- for (const [propertyName, propertySchema] of Object.entries(jsonSchema.properties as Record<string, any>)) {
242
- if (!propertySchema) continue;
243
-
244
- // Extract flags from schema `.meta({ flags: ... })`
245
- const propFlags = propertySchema.flags;
246
- if (propFlags) {
247
- addEntries(flags, propertyName, propFlags, (item) => item.length === 1);
248
- }
249
-
250
- // Extract aliases from schema `.meta({ alias: ... })`
251
- const propAlias = propertySchema.alias;
252
- if (propAlias) {
253
- const list = typeof propAlias === 'string' ? [propAlias] : propAlias;
254
- if (Array.isArray(list)) {
255
- addEntries(aliases, propertyName, list, (item) => item.length > 1);
256
- }
257
- }
258
-
259
- // Auto-generate kebab-case alias for camelCase property names
260
- if (autoAlias !== false) {
261
- const kebab = camelToKebab(propertyName);
262
- if (kebab && !(kebab in aliases)) {
263
- aliases[kebab] = propertyName;
264
- }
265
- }
266
- }
267
- }
268
- } catch {
269
- // Ignore errors from JSON schema generation
270
- }
271
-
272
- return { flags, aliases };
273
- }
274
-
275
- function preprocessMappings(data: Record<string, unknown>, mappings: Record<string, string>): Record<string, unknown> {
276
- const result = { ...data };
277
-
278
- for (const [mappedKey, fullArgName] of Object.entries(mappings)) {
279
- if (mappedKey in data && mappedKey !== fullArgName) {
280
- const mappedValue = data[mappedKey];
281
- // Prefer full arg name if it exists
282
- if (!(fullArgName in result)) result[fullArgName] = mappedValue;
283
- delete result[mappedKey];
284
- }
285
- }
286
-
287
- return result;
288
- }
289
-
290
- interface ParseArgsContext {
291
- flags?: Record<string, string>;
292
- aliases?: Record<string, string>;
293
- stdinData?: Record<string, unknown>;
294
- envData?: Record<string, unknown>;
295
- configData?: Record<string, unknown>;
296
- }
297
-
298
- /**
299
- * Apply values directly to arguments.
300
- * CLI values take precedence over the provided values.
301
- */
302
- function applyValues(data: Record<string, unknown>, values: Record<string, unknown>): Record<string, unknown> {
303
- const result = { ...data };
304
-
305
- for (const [key, value] of Object.entries(values)) {
306
- // Only apply value if arg wasn't already set
307
- if (key in result && result[key] !== undefined) continue;
308
- if (value !== undefined) {
309
- result[key] = value;
310
- }
311
- }
312
-
313
- return result;
314
- }
315
-
316
- /**
317
- * Combined preprocessing of arguments with all features.
318
- * Precedence order (highest to lowest): CLI args > stdin > env vars > config file
319
- */
320
- export function preprocessArgs(data: Record<string, unknown>, ctx: ParseArgsContext): Record<string, unknown> {
321
- let result = { ...data };
322
-
323
- // 1. Apply flags and aliases first
324
- if (ctx.flags && Object.keys(ctx.flags).length > 0) {
325
- result = preprocessMappings(result, ctx.flags);
326
- }
327
- if (ctx.aliases && Object.keys(ctx.aliases).length > 0) {
328
- result = preprocessMappings(result, ctx.aliases);
329
- }
330
-
331
- // 2. Apply stdin data (higher precedence than env)
332
- // Only applies if CLI didn't set the arg
333
- if (ctx.stdinData) {
334
- result = applyValues(result, ctx.stdinData);
335
- }
336
-
337
- // 3. Apply environment variables (higher precedence than config)
338
- // These only apply if CLI/stdin didn't set the arg
339
- if (ctx.envData) {
340
- result = applyValues(result, ctx.envData);
341
- }
342
-
343
- // 4. Apply config file values (lowest precedence)
344
- // These only apply if neither CLI, stdin, nor env set the arg
345
- if (ctx.configData) {
346
- result = applyValues(result, ctx.configData);
347
- }
348
-
349
- return result;
350
- }
351
-
352
- /**
353
- * Auto-coerce CLI string values to match the expected schema types.
354
- * Handles: string → number, string → boolean for primitive schema fields.
355
- * Arrays of primitives are also coerced element-wise.
356
- */
357
- export function coerceArgs(data: Record<string, unknown>, schema: StandardJSONSchemaV1): Record<string, unknown> {
358
- let properties: Record<string, any>;
359
- try {
360
- const jsonSchema = schema['~standard'].jsonSchema.input({ target: 'draft-2020-12' }) as Record<string, any>;
361
- if (jsonSchema.type !== 'object' || !jsonSchema.properties) return data;
362
- properties = jsonSchema.properties;
363
- } catch {
364
- return data;
365
- }
366
-
367
- const result = { ...data };
368
-
369
- for (const [key, value] of Object.entries(result)) {
370
- const prop = properties[key];
371
- if (!prop) continue;
372
-
373
- const targetType = prop.type as string | undefined;
374
-
375
- if (targetType === 'number' || targetType === 'integer') {
376
- if (typeof value === 'string') {
377
- const num = Number(value);
378
- if (!Number.isNaN(num)) result[key] = num;
379
- }
380
- } else if (targetType === 'boolean') {
381
- if (typeof value === 'string') {
382
- if (value === 'true' || value === '1') result[key] = true;
383
- else if (value === 'false' || value === '0') result[key] = false;
384
- }
385
- } else if (targetType === 'array') {
386
- // Coerce single items to array
387
- const arr = Array.isArray(value) ? value : [value];
388
- const itemType = prop.items?.type as string | undefined;
389
- if (itemType === 'number' || itemType === 'integer') {
390
- result[key] = arr.map((v) => {
391
- if (typeof v === 'string') {
392
- const num = Number(v);
393
- return Number.isNaN(num) ? v : num;
394
- }
395
- return v;
396
- });
397
- } else if (itemType === 'boolean') {
398
- result[key] = arr.map((v) => {
399
- if (typeof v === 'string') {
400
- if (v === 'true' || v === '1') return true;
401
- if (v === 'false' || v === '0') return false;
402
- }
403
- return v;
404
- });
405
- } else if (!Array.isArray(value)) {
406
- result[key] = arr;
407
- }
408
- }
409
- }
410
-
411
- return result;
412
- }
413
-
414
- /** Keys consumed by the CLI framework that are not user-defined args. */
415
- const frameworkReservedKeys = new Set(['config', 'c']);
416
-
417
- /**
418
- * Detect unknown keys in the args that don't match any schema property.
419
- * Returns an array of { key, suggestion? } for each unknown key.
420
- * Framework-reserved keys (--config, -c) are always allowed.
421
- */
422
- export function detectUnknownArgs(
423
- data: Record<string, unknown>,
424
- schema: StandardJSONSchemaV1,
425
- flags: Record<string, string>,
426
- aliases: Record<string, string>,
427
- suggestFn: (input: string, candidates: string[]) => string,
428
- ): { key: string; suggestion: string }[] {
429
- let properties: Record<string, any>;
430
- let isLoose = false;
431
- try {
432
- const jsonSchema = schema['~standard'].jsonSchema.input({ target: 'draft-2020-12' }) as Record<string, any>;
433
- if (jsonSchema.type !== 'object' || !jsonSchema.properties) return [];
434
- properties = jsonSchema.properties;
435
- // If additionalProperties is set (true, {}, or a schema), the schema allows extra keys
436
- if (jsonSchema.additionalProperties !== undefined && jsonSchema.additionalProperties !== false) isLoose = true;
437
- } catch {
438
- return [];
439
- }
440
-
441
- if (isLoose) return [];
442
-
443
- const knownKeys = new Set<string>([
444
- ...Object.keys(properties),
445
- ...Object.keys(flags),
446
- ...Object.values(flags),
447
- ...Object.keys(aliases),
448
- ...Object.values(aliases),
449
- ]);
450
- const propertyNames = Object.keys(properties);
451
- const unknowns: { key: string; suggestion: string }[] = [];
452
-
453
- for (const key of Object.keys(data)) {
454
- if (!knownKeys.has(key) && !frameworkReservedKeys.has(key)) {
455
- const suggestion = suggestFn(key, propertyNames);
456
- unknowns.push({ key, suggestion });
457
- }
458
- }
459
-
460
- return unknowns;
461
- }
package/src/colorizer.ts DELETED
@@ -1,41 +0,0 @@
1
- // ANSI color codes
2
- const colors = {
3
- reset: '\x1b[0m',
4
- bold: '\x1b[1m',
5
- dim: '\x1b[2m',
6
- italic: '\x1b[3m',
7
- underline: '\x1b[4m',
8
- strikethrough: '\x1b[9m',
9
- cyan: '\x1b[36m',
10
- green: '\x1b[32m',
11
- yellow: '\x1b[33m',
12
- blue: '\x1b[34m',
13
- magenta: '\x1b[35m',
14
- gray: '\x1b[90m',
15
- };
16
-
17
- export type Colorizer = {
18
- command: (text: string) => string;
19
- arg: (text: string) => string;
20
- type: (text: string) => string;
21
- description: (text: string) => string;
22
- label: (text: string) => string;
23
- meta: (text: string) => string;
24
- example: (text: string) => string;
25
- exampleValue: (text: string) => string;
26
- deprecated: (text: string) => string;
27
- };
28
-
29
- export function createColorizer(): Colorizer {
30
- return {
31
- command: (text: string) => `${colors.cyan}${colors.bold}${text}${colors.reset}`,
32
- arg: (text: string) => `${colors.green}${text}${colors.reset}`,
33
- type: (text: string) => `${colors.yellow}${text}${colors.reset}`,
34
- description: (text: string) => `${colors.dim}${text}${colors.reset}`,
35
- label: (text: string) => `${colors.bold}${text}${colors.reset}`,
36
- meta: (text: string) => `${colors.gray}${text}${colors.reset}`,
37
- example: (text: string) => `${colors.underline}${text}${colors.reset}`,
38
- exampleValue: (text: string) => `${colors.italic}${text}${colors.reset}`,
39
- deprecated: (text: string) => `${colors.strikethrough}${colors.gray}${text}${colors.reset}`,
40
- };
41
- }