@politty/zod 0.2.1 → 0.2.3

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.
@@ -0,0 +1 @@
1
+ import{t as e}from"./cli-main-DYdp1fLi.js";export{e as runPolittyCli};
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./schema-extractor-DU0Vuhbd.js";import{n}from"./command-Mbdt0bmN.js";import{n as r}from"./runner-BIdcntiz.js";import{chmodSync as i,existsSync as a,mkdirSync as o,readFileSync as s,writeFileSync as c}from"node:fs";import{basename as l,dirname as u,extname as d,isAbsolute as f,join as p,relative as m,resolve as h}from"node:path";import{fileURLToPath as g}from"node:url";const _=`Generated by politty: compile-cache bin shim`,v=[`./cli.js`,`./cli.mjs`,`./index.js`,`./index.mjs`];function y(e){let t=h(e);for(;;){let e=p(t,`package.json`);if(a(e))return{pkg:JSON.parse(s(e,`utf8`)),dir:t};let n=u(t);if(n===t)return;t=n}}function b(e){if(!e)return[];if(typeof e.bin==`string`&&e.bin){let t=x(e);return t?[[t,e.bin]]:[]}return typeof e.bin==`object`&&e.bin!==null?Object.entries(e.bin).filter(e=>typeof e[1]==`string`&&e[1]!==``):[]}function x(e){if(e){if(typeof e.bin==`object`&&e.bin!==null){let[t]=Object.keys(e.bin);if(t)return t}if(typeof e.name==`string`&&e.name){let t=e.name;return t.startsWith(`@`)?t.split(`/`)[1]??t:t}}}function S(e){let t=u(e),n=l(e);for(let e of v)if(l(e)!==n&&a(p(t,e)))return e}function C(e,t,n){return[`#!/usr/bin/env node`,``,`// ${_}.`,`// Enables the Node.js on-disk compile cache (V8 code cache) before the`,`// CLI module graph is compiled, so warm starts skip recompilation`,`// (Node >= 22.8.0; silent no-op otherwise).`,`try {`,` const { enableCompileCache } = await import(${JSON.stringify(n)});`,` enableCompileCache(${JSON.stringify(e)});`,`} catch {`,` // ${n} is not resolvable from here (e.g. a fully`,` // bundled CLI) — start without the compile cache rather than failing`,` // the CLI.`,`}`,`await import(${JSON.stringify(t)});`,``].join(`
1
+ import{a as e,i as t}from"./schema-extractor-DU0Vuhbd.js";import{n}from"./command-Mbdt0bmN.js";import{n as r}from"./runner-BBzVbri9.js";import{chmodSync as i,existsSync as a,mkdirSync as o,readFileSync as s,writeFileSync as c}from"node:fs";import{basename as l,dirname as u,extname as d,isAbsolute as f,join as p,relative as m,resolve as h}from"node:path";import{fileURLToPath as g}from"node:url";const _=`Generated by politty: compile-cache bin shim`,v=[`./cli.js`,`./cli.mjs`,`./index.js`,`./index.mjs`];function y(e){let t=h(e);for(;;){let e=p(t,`package.json`);if(a(e))return{pkg:JSON.parse(s(e,`utf8`)),dir:t};let n=u(t);if(n===t)return;t=n}}function b(e){if(!e)return[];if(typeof e.bin==`string`&&e.bin){let t=x(e);return t?[[t,e.bin]]:[]}return typeof e.bin==`object`&&e.bin!==null?Object.entries(e.bin).filter(e=>typeof e[1]==`string`&&e[1]!==``):[]}function x(e){if(e){if(typeof e.bin==`object`&&e.bin!==null){let[t]=Object.keys(e.bin);if(t)return t}if(typeof e.name==`string`&&e.name){let t=e.name;return t.startsWith(`@`)?t.split(`/`)[1]??t:t}}}function S(e){let t=u(e),n=l(e);for(let e of v)if(l(e)!==n&&a(p(t,e)))return e}function C(e,t,n){return[`#!/usr/bin/env node`,``,`// ${_}.`,`// Enables the Node.js on-disk compile cache (V8 code cache) before the`,`// CLI module graph is compiled, so warm starts skip recompilation`,`// (Node >= 22.8.0; silent no-op otherwise).`,`try {`,` const { enableCompileCache } = await import(${JSON.stringify(n)});`,` enableCompileCache(${JSON.stringify(e)});`,`} catch {`,` // ${n} is not resolvable from here (e.g. a fully`,` // bundled CLI) — start without the compile cache rather than failing`,` // the CLI.`,`}`,`await import(${JSON.stringify(t)});`,``].join(`
2
2
  `)}function w(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function T(e){return(t={})=>E(`${e}/compile-cache`,t)}function E(e,t){let n=t.cwd??process.cwd(),r=y(n),l=r?.pkg,p=w(t.entry),m=w(t.out),T=b(l),E;if(m.length>0){if(p.length>0&&p.length!==m.length)throw Error(`--entry count (${p.length}) does not match --out count (${m.length}); pass one --out per --entry or omit --out entirely.`);E=m.map(e=>f(e)?e:h(n,e))}else{if(T.length===0||r===void 0)throw Error(`Cannot derive the output path: no bin entry in package.json. Pass --out explicitly.`);if(p.length>0&&p.length!==T.length)throw Error(`--entry count (${p.length}) does not match the package's bin entries (${T.length}); pass one --entry per bin (in declaration order) or matching --out paths.`);E=T.map(([,e])=>h(r.dir,e))}if(new Set(E).size!==E.length)throw Error(`Duplicate output paths; each shim needs a distinct output file. Check the --out values (or the bin paths in package.json when --out is omitted).`);let O=new Map;if(r)for(let[e,t]of T)O.set(h(r.dir,t),e);let k=[],A=t.compileCacheSpecifier??e;if(/[\r\n\u2028\u2029]/.test(A))throw Error(`Invalid compile-cache specifier ${JSON.stringify(A)}: a module specifier cannot contain a line terminator.`);let j=E.map((e,r)=>{let i=O.get(e),o=t.program??i??x(l);if(!o)throw Error(`Cannot derive a program name: no bin or name in package.json. Pass --program explicitly.`);if(t.program===void 0&&i===void 0&&m.length>0&&k.push(`Warning: ${D(e,n)} does not match any bin path in package.json, so its cache directory uses the program name ${JSON.stringify(o)}. Pass --program to override.`),e.endsWith(`.cjs`))throw Error(`The generated shim is an ES module and cannot be written to a .cjs file. Use a .mjs (or .js in a "type": "module" package) output path.`);if(d(e)===``)throw Error(`The generated shim is an ES module and cannot be written to an extensionless file (it would not load on every supported Node.js version). Use a .mjs (or .js in a "type": "module" package) output path.`);if(e.endsWith(`.js`)&&l?.type!==`module`)throw Error(l===void 0?`The generated shim is an ES module, and no package.json was found to confirm .js files are treated as ESM. Write it to a .mjs file instead (e.g. --out dist/bin.mjs).`:`The generated shim is an ES module, but the package is not "type": "module". Write it to a .mjs file instead (e.g. --out dist/bin.mjs).`);let c=p[r]??S(e);if(c===void 0)throw Error(`Cannot derive an entry: none of ${v.join(`, `)} exist next to ${e}. Pass --entry explicitly.`);if(!c.startsWith(`./`)&&!c.startsWith(`../`)&&!c.startsWith(`file:`))throw Error(`Invalid entry ${c}: pass a specifier relative to the shim file ("./..." or "../...") or a file: URL.`);let f;if(c.startsWith(`file:`))try{f=g(c)}catch{f=void 0}else f=h(u(e),c);if(f===e)throw Error(`The shim at ${e} would import itself (entry ${c}). Point bin at a separate shim path (e.g. dist/bin.js) or pass a different --entry.`);if(a(e)&&!s(e,`utf8`).includes(_))throw Error(`Refusing to overwrite ${e}: it exists and was not generated by politty. If bin currently points at your real CLI entry, point it at a separate shim path (e.g. dist/bin.js) or pass --out explicitly.`);return{outputPath:e,program:o,entry:c,compileCacheSpecifier:A}});for(let e of k)console.warn(e);for(let{outputPath:e,program:t,entry:n}of j)o(u(e),{recursive:!0}),c(e,C(t,n,A)),i(e,493);return j}function D(e,t){let n=m(t,e);return n&&!n.startsWith(`..`)?n:e}const O=t({bin:e.string({description:`CLI binary or built JS entry file to invoke`,placeholder:`PATH`}),program:e.string({description:`Program name embedded in worker metadata`,placeholder:`NAME`}),shell:e.enum([`bash`,`zsh`,`fish`],{description:`Shell worker to generate`,placeholder:`SHELL`}),out:e.optionalString({description:`Output worker path (defaults to dist/completion/<shell>-worker.<ext>)`,placeholder:`PATH`}),verify:e.boolean({description:`Verify __completion-worker-path resolves to the generated worker`})}),k=n({name:`generate-worker`,description:`Generate and verify a bundled shell completion worker`,args:O,async run(e){let{generateBundledCompletionWorker:t}=await import(`./completion-DUMcvXkT.js`);await t({bin:e.bin,programName:e.program,shell:e.shell,...e.out!==void 0&&{outputPath:e.out},verify:e.verify})}}),A=t({entry:e.optionalStringArray({description:`Module specifier the shim imports, relative to the shim file; repeatable, one per bin/--out (defaults to ./cli.js, ./cli.mjs, ./index.js, or ./index.mjs next to each shim)`,placeholder:`SPECIFIER`}),out:e.optionalStringArray({description:`Output path for the generated shim; repeatable, one per --entry (defaults to the bin paths in package.json)`,placeholder:`PATH`}),program:e.optionalString({description:`Program name for the cache directory, applied to all shims (defaults per shim to its bin name)`,placeholder:`NAME`}),compileCacheSpecifier:e.optionalString({description:`Module specifier the shim imports enableCompileCache from (defaults to the compile-cache subpath of the politty package running this command)`,placeholder:`SPECIFIER`})});function j(e){let t=T(e),i=n({name:`generate-shim`,description:`Generate a compile-cache bin shim that loads the real CLI via dynamic import`,args:A,run(e){let n=process.cwd(),r=t({...e.entry!==void 0&&{entry:e.entry},...e.out!==void 0&&{out:e.out},...e.program!==void 0&&{program:e.program},...e.compileCacheSpecifier!==void 0&&{compileCacheSpecifier:e.compileCacheSpecifier},cwd:n});for(let e of r)console.log(`Generated compile-cache shim: ${D(e.outputPath,n)} (program: ${e.program}, entry: ${e.entry}, compile-cache: ${e.compileCacheSpecifier})`)}}),a=n({name:`politty`,description:`politty development utilities`,subCommands:{"generate-shim":i,"generate-worker":k}});return r(a).catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})}export{T as n,j as t};
@@ -1 +1 @@
1
- import"./register-C1WbbeYH.js";const{runPolittyCli:e}=await import(`./cli-main-B4FX3h4J.js`);await e(`@politty/zod`);export{};
1
+ import"./register-C1WbbeYH.js";const{runPolittyCli:e}=await import(`./cli-main-BzHcRGOO.js`);await e(`@politty/zod`);export{};
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{n as e}from"./compile-cache-VuUbFWIo.js";e(`politty`),await import(`./cli-run-DN55A0JZ.js`);export{};
2
+ import{n as e}from"./compile-cache-VuUbFWIo.js";e(`politty`),await import(`./cli-run-BqCOn4Ag.js`);export{};
package/dist/docs.js CHANGED
@@ -18,7 +18,7 @@ import{a as e}from"./field-meta-COGya7xp.js";import"./register-C1WbbeYH.js";impo
18
18
  `}}const ve={command:e=>W(e),tableStyle:W({optionStyle:`table`}),listStyle:W({optionStyle:`list`})};function ye(e,t){let n=o.resolve(t);if(!a.existsSync(n))return{match:!1,fileExists:!1};let r=a.readFileSync(n,`utf-8`);return e===r?{match:!0,fileExists:!0}:{match:!1,diff:G(r,e),fileExists:!0}}function G(e,t){let n=e.split(`
19
19
  `),r=t.split(`
20
20
  `),i=[];i.push(`--- existing`),i.push(`+++ generated`),i.push(``);let a=Math.max(n.length,r.length),o=!1,s=0,c=[],l=()=>{c.length>0&&(i.push(`@@ -${s+1},${c.length} @@`),i.push(...c),c.length=0),o=!1};for(let e=0;e<a;e++){let t=n[e],i=r[e];if(t===i){if(o){c.push(` ${t??``}`);let e=c.findIndex((e,t)=>(e.startsWith(`-`)||e.startsWith(`+`))&&c.slice(t+1).every(e=>e.startsWith(` `)));e!==-1&&c.length-e>3&&l()}}else{if(!o){o=!0,s=e;let t=Math.max(0,e-3);for(let r=t;r<e;r++)c.push(` ${n[r]??``}`)}t!==void 0&&(i===void 0||t!==i)&&c.push(`-${t}`),i!==void 0&&(t===void 0||t!==i)&&c.push(`+${i}`)}}return l(),i.join(`
21
- `)}function K(e,t){let n=o.resolve(e),r=o.dirname(n);a.existsSync(r)||a.mkdirSync(r,{recursive:!0}),a.writeFileSync(n,t,`utf-8`)}function be(e){let t=o.resolve(e);return a.existsSync(t)?a.readFileSync(t,`utf-8`):null}function xe(e,t=a){let n=o.resolve(e);t.existsSync(n)&&t.unlinkSync(n)}async function Se(e,n,r=[]){let a=t(e),o=a?.fields.filter(e=>e.positional)??[],s=a?.fields.filter(e=>!e.positional)??[],c=[];if(e.subCommands)for(let[t,n]of Object.entries(e.subCommands)){let e=await i(n),a=[...r,t];c.push({name:t,description:e.description,aliases:e.aliases,fullPath:a})}return{name:e.name??``,description:e.description,aliases:e.aliases,fullCommandPath:r.length>0?`${n} ${r.join(` `)}`:n,commandPath:r.join(` `),depth:r.length+1,positionalArgs:o,options:s,subCommands:c,extracted:a,command:e,notes:e.notes,examples:e.examples}}async function Ce(e,t){let n=t??e.name??`command`,r=new Map;async function a(e,t){let o=await Se(e,n,t),s=t.join(` `);if(r.set(s,o),e.subCommands)for(let[n,r]of Object.entries(e.subCommands))await a(await i(r),[...t,n])}return await a(e,[]),r}async function we(e,t,n,r=[]){let i=[];t.mock&&await t.mock();try{for(let t of e){let e=await Te(t,n,r);i.push(e)}}finally{t.cleanup&&await t.cleanup()}return i}async function Te(e,t,n){let i=Ee(e.cmd),a=[...n,...i],o=r({passthrough:!1});o.start();let s=!0;try{let{runCommand:e}=await import(`./runner-Chaf_5lK.js`),n=await e(t,a);s=n.success,!n.success&&n.error&&console.error(n.error.message)}catch(e){s=!1,console.error(e instanceof Error?e.message:String(e))}finally{o.stop()}let c=o.getLogs(),l=c.entries.filter(e=>e.stream===`stdout`).map(e=>e.message).join(`
21
+ `)}function K(e,t){let n=o.resolve(e),r=o.dirname(n);a.existsSync(r)||a.mkdirSync(r,{recursive:!0}),a.writeFileSync(n,t,`utf-8`)}function be(e){let t=o.resolve(e);return a.existsSync(t)?a.readFileSync(t,`utf-8`):null}function xe(e,t=a){let n=o.resolve(e);t.existsSync(n)&&t.unlinkSync(n)}async function Se(e,n,r=[]){let a=t(e),o=a?.fields.filter(e=>e.positional)??[],s=a?.fields.filter(e=>!e.positional)??[],c=[];if(e.subCommands)for(let[t,n]of Object.entries(e.subCommands)){let e=await i(n),a=[...r,t];c.push({name:t,description:e.description,aliases:e.aliases,fullPath:a})}return{name:e.name??``,description:e.description,aliases:e.aliases,fullCommandPath:r.length>0?`${n} ${r.join(` `)}`:n,commandPath:r.join(` `),depth:r.length+1,positionalArgs:o,options:s,subCommands:c,extracted:a,command:e,notes:e.notes,examples:e.examples}}async function Ce(e,t){let n=t??e.name??`command`,r=new Map;async function a(e,t){let o=await Se(e,n,t),s=t.join(` `);if(r.set(s,o),e.subCommands)for(let[n,r]of Object.entries(e.subCommands))await a(await i(r),[...t,n])}return await a(e,[]),r}async function we(e,t,n,r=[]){let i=[];t.mock&&await t.mock();try{for(let t of e){let e=await Te(t,n,r);i.push(e)}}finally{t.cleanup&&await t.cleanup()}return i}async function Te(e,t,n){let i=Ee(e.cmd),a=[...n,...i],o=r({passthrough:!1});o.start();let s=!0;try{let{runCommand:e}=await import(`./runner-DFyBvEfq.js`),n=await e(t,a);s=n.success,!n.success&&n.error&&console.error(n.error.message)}catch(e){s=!1,console.error(e instanceof Error?e.message:String(e))}finally{o.stop()}let c=o.getLogs(),l=c.entries.filter(e=>e.stream===`stdout`).map(e=>e.message).join(`
22
22
  `),u=c.entries.filter(e=>e.stream===`stderr`).map(e=>e.message).join(`
23
23
  `);return{cmd:e.cmd,desc:e.desc,expectedOutput:e.output,stdout:l,stderr:u,success:s}}function Ee(e){let t=[],n=``,r=!1,i=``;for(let a=0;a<e.length;a++){let o=e[a];(o===`"`||o===`'`)&&!r?(r=!0,i=o):o===i&&r?(r=!1,i=``):o===` `&&!r?n&&=(t.push(n),``):n+=o}return n&&t.push(n),t}function De(t){let n=e();return Object.entries(t).map(([e,t])=>n.resolveFieldMeta(e,t))}function Oe(e,t){let n=De(e).filter(e=>!e.positional);return n.length===0?``:C(p(n),t?.columns)}function ke(e){return e.replace(/\|/g,`\\|`).replace(/\n/g,` `)}function Ae(e){return e.replace(/\s+/g,`-`).toLowerCase()}function je(e){return e.subCommands.length===0}function Me(e,t){return e===t?!0:t===``?e!==``:e.startsWith(t+` `)}function Ne(e,t,n){let r=[];for(let i of e){let e=t.get(i);if(e){if(je(e))r.push(i);else for(let[e,a]of t)(i===``?e.length>0:e.startsWith(i+` `)||e===i)&&(je(a)||!n)&&r.push(e)}}return r}function Pe(e,t,n,r){let i=`#`.repeat(n),a=[];a.push(`${i} [${e.title}](${e.docPath})`),a.push(``),a.push(e.description),a.push(``);let o=e.noExpand?e.commands:Ne(e.commands,t,r),s=o,c=new Set;if(e.allowedCommands){let t=new Set(e.allowedCommands);s=o.filter(e=>t.has(e));for(let n of e.commands)t.has(n)&&!s.some(e=>Me(e,n))&&(s.push(n),c.add(n))}a.push(`| Command | Description |`),a.push(`|---------|-------------|`);for(let n of s){let i=t.get(n);if(!i||!e.noExpand&&r&&!c.has(n)&&!je(i))continue;let o=n||i.name,s=Ae(o),l=ke(i.description??``);a.push(`| [${o}](${e.docPath}#${s}) | ${l} |`)}return a.join(`
24
24
  `)}async function Fe(e,t,n){let r=n?.headingLevel??3,i=n?.leafOnly??!0,a=await Ce(e),o=[];for(let e of t){let t=Pe(e,a,r,i);o.push(t)}return o.join(`
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{i as e,r as t}from"./field-meta-COGya7xp.js";import{t as n}from"./register-C1WbbeYH.js";import{r,t as i}from"./schema-extractor-DU0Vuhbd.js";import{n as a,t as o}from"./cli-main-CjYk6tAX.js";import{n as s,t as c}from"./command-Mbdt0bmN.js";import{C as l,E as u,S as d,T as f,_ as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,l as S,m as C,n as w,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P}from"./runner-BIdcntiz.js";import{o as F,s as I}from"./subcommand-router-D8GTMXYL.js";import{a as L,i as R,n as z,r as B,t as V}from"./logger-CJsyJ8sb.js";import{t as H}from"./with-completion-command-DDohm8U6.js";const U=a(`@politty/zod`),W=s,G=c,K=n;export{y as CaseVariantCollisionError,p as DuplicateAliasError,j as DuplicateFieldError,P as DuplicateNegationError,h as FieldTypeConflictError,N as PositionalConfigError,d as ReservedAliasError,l as ReservedFieldNameError,K as arg,a as createCompileCacheShimGenerator,G as createDefineCommand,D as createDualCaseProxy,W as defineCommand,i as extractFields,T as formatCommandValidationErrors,x as formatValidationErrors,U as generateCompileCacheShim,M as generateHelp,r as getUnknownKeysMode,V as isColorEnabled,F as isLazyCommand,I as lazy,z as logger,m as parseArgv,f as renderInline,u as renderMarkdown,k as runCommand,w as runMain,o as runPolittyCli,B as setColorEnabled,R as styles,L as symbols,t as toCamelCase,e as toKebabCase,O as validateCaseVariantCollisions,g as validateCommand,S as validateCrossSchemaCollisions,A as validateDuplicateAliases,_ as validateDuplicateFields,v as validateDuplicateNegations,E as validatePositionalConfig,C as validateReservedAliases,b as validateReservedFieldNames,H as withCompletionCommand};
1
+ import{i as e,r as t}from"./field-meta-COGya7xp.js";import{t as n}from"./register-C1WbbeYH.js";import{r,t as i}from"./schema-extractor-DU0Vuhbd.js";import{n as a,t as o}from"./cli-main-DYdp1fLi.js";import{n as s,t as c}from"./command-Mbdt0bmN.js";import{C as l,E as u,S as d,T as f,_ as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,l as S,m as C,n as w,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P}from"./runner-BBzVbri9.js";import{o as F,s as I}from"./subcommand-router-D8GTMXYL.js";import{a as L,i as R,n as z,r as B,t as V}from"./logger-CJsyJ8sb.js";import{t as H}from"./with-completion-command-DDohm8U6.js";const U=a(`@politty/zod`),W=s,G=c,K=n;export{y as CaseVariantCollisionError,p as DuplicateAliasError,j as DuplicateFieldError,P as DuplicateNegationError,h as FieldTypeConflictError,N as PositionalConfigError,d as ReservedAliasError,l as ReservedFieldNameError,K as arg,a as createCompileCacheShimGenerator,G as createDefineCommand,D as createDualCaseProxy,W as defineCommand,i as extractFields,T as formatCommandValidationErrors,x as formatValidationErrors,U as generateCompileCacheShim,M as generateHelp,r as getUnknownKeysMode,V as isColorEnabled,F as isLazyCommand,I as lazy,z as logger,m as parseArgv,f as renderInline,u as renderMarkdown,k as runCommand,w as runMain,o as runPolittyCli,B as setColorEnabled,R as styles,L as symbols,t as toCamelCase,e as toKebabCase,O as validateCaseVariantCollisions,g as validateCommand,S as validateCrossSchemaCollisions,A as validateDuplicateAliases,_ as validateDuplicateFields,v as validateDuplicateNegations,E as validatePositionalConfig,C as validateReservedAliases,b as validateReservedFieldNames,H as withCompletionCommand};
@@ -25,5 +25,5 @@ import{a as e,i as t,r as n,t as r}from"./field-meta-COGya7xp.js";import{n as i,
25
25
  `)}`),n.push(` ${y.dim(`$`)} ${a}${t.cmd}`),t.output)for(let e of t.output.split(`
26
26
  `))n.push(` ${e}`);n.push(``)}return n.length>0&&n[n.length-1]===``&&n.pop(),n.join(`
27
27
  `)}var we=class extends Error{constructor(e){super(e),this.name=`PositionalConfigError`}},Te=class extends Error{constructor(e){super(e),this.name=`ReservedAliasError`}},Ee=class extends Error{constructor(e){super(e),this.name=`DuplicateFieldError`}},De=class extends Error{constructor(e){super(e),this.name=`DuplicateAliasError`}},H=class extends Error{constructor(e){super(e),this.name=`CaseVariantCollisionError`}},Oe=class extends Error{constructor(e){super(e),this.name=`DuplicateNegationError`}},ke=class extends Error{constructor(e){super(e),this.name=`ReservedFieldNameError`}},Ae=class extends Error{constructor(e){super(e),this.name=`FieldTypeConflictError`}};function je(e,t){let n=[],r=new Map;for(let i of e.fields)r.has(i.name)&&n.push({commandPath:t,type:`duplicate_field`,message:`Duplicate field name "${i.name}" detected.`,field:i.name}),r.set(i.name,i.name);return n}function Me(e,t){let r=[],i=new Map;for(let a of e.fields){let e=n(a.name),o=i.get(e);o&&o!==a.name&&r.push({commandPath:t,type:`case_variant_collision`,message:`Fields "${o}" and "${a.name}" are case variants of each other and would collide.`,field:a.name}),i.set(e,a.name)}return r}function Ne(e,t){let i=[],a=new Map,o=new Set(e.fields.map(e=>e.name)),s=new Set(e.fields.map(e=>e.cliName)),c=(e,n,r)=>{(o.has(e)||s.has(e))&&i.push({commandPath:t,type:`duplicate_alias`,message:`Alias "${e}" for field "${n}" conflicts with existing field name or CLI name "${e}".`,field:n});let c=a.get(e);if(c&&c!==n){let a=r?` (derived camelCase variant)`:``;i.push({commandPath:t,type:`duplicate_alias`,message:`Duplicate alias "${e}"${a} detected. Both "${c}" and "${n}" use the same alias.`,field:n})}a.set(e,n)};for(let t of e.fields){let e=r(t);if(e.length!==0){for(let r of e)if(c(r,t.name,!1),r.length>1&&r.includes(`-`)){let e=n(r);e!==r&&!o.has(e)&&c(e,t.name,!0)}}}return i}function Pe(e,t){let i=[],a=new Map,o=(e,t,n)=>{a.has(e)||a.set(e,{field:t,kind:n})};for(let t of e.fields){if(o(t.name,t.name,`field name`),t.name.includes(`-`)){let e=n(t.name);e!==t.name&&o(e,t.name,`field name`)}if(t.cliName!==t.name&&o(t.cliName,t.name,`CLI name`),t.cliName.includes(`-`)){let e=n(t.cliName);e!==t.cliName&&o(e,t.name,`CLI name`)}for(let e of r(t))if(o(e,t.name,`alias`),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&o(r,t.name,`alias`)}if(t.type===`boolean`&&t.negation===!0){let e=`no-${t.cliName}`;o(e,t.name,`default negation`);let r=n(t.cliName),i=`no${r[0]?.toUpperCase()??``}${r.slice(1)}`;i!==e&&o(i,t.name,`default negation`)}}let s=new Map,c=(e,n,r)=>{let o=a.get(e);if(o){let a=r?` (derived camelCase variant)`:``,s=o.field===n?`the same field's own ${o.kind} "${e}"`:`${o.kind} "${e}" of field "${o.field}"`;i.push({commandPath:t,type:`duplicate_negation`,message:`Negation "${e}"${a} for field "${n}" conflicts with ${s}.`,field:n})}let c=s.get(e);if(c&&c!==n){let a=r?` (derived camelCase variant)`:``;i.push({commandPath:t,type:`duplicate_negation`,message:`Duplicate negation "${e}"${a} detected. Both "${c}" and "${n}" use the same negation name.`,field:n})}s.set(e,n)};for(let t of e.fields)if(typeof t.negation==`string`&&(c(t.negation,t.name,!1),t.negation.includes(`-`))){let e=n(t.negation);e!==t.negation&&c(e,t.name,!0)}return i}function Fe(e,t){let n=[],r=e.fields.filter(e=>e.positional),i=null,a=null;for(let e of r)i!==null&&n.push({commandPath:t,type:`positional_config`,message:`Positional argument "${e.name}" cannot follow array positional argument "${i}".`,field:e.name}),e.type===`array`&&a!==null&&n.push({commandPath:t,type:`positional_config`,message:`Array positional "${e.name}" cannot be used with optional positional "${a}" (ambiguous parsing).`,field:e.name}),a!==null&&e.required&&n.push({commandPath:t,type:`positional_config`,message:`Required positional "${e.name}" cannot follow optional positional "${a}".`,field:e.name}),e.type===`array`&&(i=e.name),e.required||(a=e.name);return n}function Ie(e,t){let n=[];for(let i of e.fields)if(i.overrideBuiltinAlias!==!0)for(let e of r(i))(e===`h`||e===`H`)&&n.push({commandPath:t,type:`reserved_alias`,message:`Alias "${e}" is reserved for --${e===`h`?`help`:`help-all`}.`,field:i.name});return n}function Le(e,t){let n=[];for(let r of e.fields)r.name.startsWith(`$`)&&n.push({commandPath:t,type:`reserved_field_name`,message:`Field "${r.name}" starts with "$", which is reserved for framework-injected helpers (e.g. $source).`,field:r.name});return n}function U(e){let t=je(e,[]);if(t.length>0)throw new Ee(`Duplicate field name "${t[0]?.field??`unknown`}" detected. Each field must have a unique name.`)}function W(e){let t=Ne(e,[]);if(t.length>0){let e=t[0];throw new De(e.message)}}function Re(e){let t=Fe(e,[]);if(t.length>0){let e=t[0];throw new we(e.message)}}function G(e,t){let n=Ie(e,[]);if(n.length>0){let t=n[0].field??`unknown`,i=e.fields.find(e=>e.name===t),a=(i?r(i):[]).find(e=>e===`h`||e===`H`)??`h`;throw new Te(`Alias "${a}" is reserved for --${a===`h`?`help`:`help-all`}. To override this, set { overrideBuiltinAlias: true } for "${t}" and keep the alias where it is currently defined (in alias or hiddenAlias).`)}}function K(e){let t=Le(e,[]);if(t.length>0){let e=t[0];throw new ke(e.message)}}function q(e){let t=Pe(e,[]);if(t.length>0){let e=t[0];throw new Oe(e.message)}}function J(e){let t=Me(e,[]);if(t.length>0){let e=t[0];throw new H(e.message)}}function ze(e,t){if(e.type!==t.type||e.positional!==t.positional)return!1;let n=e.enumValues,r=t.enumValues;if(!n&&!r)return!0;if(!n||!r)return!1;let i=new Set(n),a=new Set(r);if(i.size!==a.size)return!1;for(let e of i)if(!a.has(e))return!1;return!0}function Be(e,t,r){let i=[],a=new Map;for(let t of e.fields)a.set(n(t.name),t);for(let e of t.fields){let t=n(e.name),o=a.get(t);if(o){if(o.name!==e.name){i.push({commandPath:r,type:`case_variant_collision`,message:`Global field "${o.name}" and command field "${e.name}" are case variants of each other and would collide.`,field:e.name});continue}ze(o,e)||i.push({commandPath:r,type:`field_type_conflict`,message:`Global field "${o.name}" and command field "${e.name}" share the same name but have different definitions.`,field:e.name})}}return i}function Ve(e,t){let n=Be(e,t,[])[0];if(n)throw n.type===`case_variant_collision`?new H(n.message):new Ae(n.message)}function He(e,t,n){return[...je(e,n),...Me(e,n),...Ne(e,n),...Pe(e,n),...Fe(e,n),...Ie(e,n),...Le(e,n)]}function Ue(e,t){let n=[];if(!e.subCommands)return n;let r=new Map;for(let[t]of Object.entries(e.subCommands))r.set(t,t);for(let[i,a]of Object.entries(e.subCommands)){let e=h(a)?a.meta:typeof a==`function`?null:a;if(!e?.aliases)continue;let o=[...t,i];for(let t of e.aliases){if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(t)){n.push({commandPath:o,type:`invalid_alias`,message:`Alias "${t}" is invalid. Aliases must start with an alphanumeric character and contain only alphanumeric characters, hyphens, or underscores.`,field:i});continue}if(t===i){n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" conflicts with its own name.`,field:i});continue}let e=r.get(t);e?e===i?n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" is duplicated within the alias list.`,field:i}):n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" conflicts with existing subcommand or alias "${e}".`,field:i}):r.set(t,i)}}return n}function We(e,t,n){return e===t?[]:[{commandPath:[...n,e],type:`subcommand_key_name_mismatch`,message:`Subcommand registered as "${e}" but its own name is "${t}".`,field:e}]}async function Ge(e,t={}){let n=t.commandPath??[e.name],r=[],i=e.subCommands?Object.keys(e.subCommands).length>0:!1,a=t.globalArgs?s(t.globalArgs):void 0;if(e.args){let t=s(e.args);r.push(...He(t,i,n)),a&&r.push(...Be(a,t,n))}if(r.push(...Ue(e,n)),e.subCommands)for(let[i,a]of Object.entries(e.subCommands)){let e=await g(a);r.push(...We(i,e.name,n));let o=await Ge(e,{commandPath:[...n,i],...t.globalArgs?{globalArgs:t.globalArgs}:{}});o.valid||r.push(...o.errors)}return r.length===0?{valid:!0}:{valid:!1,errors:r}}function Ke(e){if(e.length===0)return``;let t=[`Command definition errors:`];for(let n of e){let e=n.commandPath.join(` > `);t.push(` - [${e}] ${n.message}`)}return t.join(`
28
- `)}function qe(e){let t=e.indexOf(`=`);return t>=0?e.slice(2,t):e.slice(2)}function Je(e,t){let n=qe(e);if(!e.includes(`=`)){let e=t.negationMap.get(n);if(e&&t.booleanFlags.has(e))return{resolvedName:e,withoutDashes:n,isNegated:!0,isCustomNegation:!0,isSuppressedNegation:!1}}let r=e.includes(`=`);if(!r&&n.startsWith(`no-`)){let e=n.slice(3);if(e===e.toLowerCase()){let r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}}if(!r&&n.length>2&&n.startsWith(`no`)&&/[A-Z]/.test(n[2])){let e=n[2].toLowerCase()+n.slice(3),r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}return{resolvedName:t.aliasMap.get(n)??n,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!1}}function Ye(e){return e===`true`||e!==`false`&&e}const Xe=/^-\.?\d/;function Ze(e){return Xe.test(e)}function Y(e,t={}){let{aliasMap:n=new Map,booleanFlags:r=new Set,arrayFlags:i=new Set,definedNames:a=new Set,negationMap:o=new Map,defaultNegationDisabledFields:s}=t,c={aliasMap:n,booleanFlags:r,definedNames:a,negationMap:o,defaultNegationDisabledFields:s??new Set(r)},l={options:{},positionals:[],rest:[]},u=0,d=!1,f=(e,t)=>{let r=n.get(e)??e;if(i.has(r)){let e=l.options[r];Array.isArray(e)?e.push(t):e===void 0?l.options[r]=[t]:l.options[r]=[e,t]}else l.options[r]=t};for(;u<e.length;){let t=e[u];if(d){l.rest.push(t),u++;continue}if(t===`--`){d=!0,u++;continue}if(t.startsWith(`--`)){let i=t.slice(2),a=Je(t,c);if(a.isSuppressedNegation){f(a.withoutDashes,!0),u++;continue}if(a.isNegated){f(a.resolvedName,!1),u++;continue}let o=i.indexOf(`=`);if(o!==-1){let e=i.slice(0,o),t=i.slice(o+1),a=n.get(e)??e;f(e,r.has(a)?Ye(t):t),u++}else{let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||Ze(n))?(f(t,n),u+=2):(f(t,!0),u++)}}continue}if(t.startsWith(`-`)&&t.length>1&&!t.startsWith(`--`)){let i=t.slice(1),a=i.indexOf(`=`);if(a!==-1){let e=i.slice(0,a),t=i.slice(a+1),o=n.get(e)??e;f(e,r.has(o)?Ye(t):t),u++}else if(i.length===1){let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||Ze(n))?(f(t,n),u+=2):(f(t,!0),u++)}}else{for(let e of i)f(e,!0);u++}continue}l.positionals.push(t),u++}return l}function X(e){let t=new Map,i=new Set,a=new Set,o=new Set,s=new Map,c=new Set;for(let t of e.fields)o.add(t.name);for(let l of e.fields){l.cliName!==l.name&&t.set(l.cliName,l.name);for(let e of r(l))if(t.set(e,l.name),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&!o.has(r)&&!t.has(r)&&t.set(r,l.name)}let e=n(l.name);if(e!==l.name&&!o.has(e)&&!t.has(e)&&t.set(e,l.name),l.type===`boolean`&&i.add(l.name),l.type===`array`&&a.add(l.name),l.type===`boolean`&&l.negation!==!0&&(c.add(l.name),typeof l.negation==`string`&&(s.set(l.negation,l.name),l.negation.includes(`-`)))){let e=n(l.negation);e!==l.negation&&s.set(e,l.name)}}return{aliasMap:t,booleanFlags:i,arrayFlags:a,definedNames:o,negationMap:s,defaultNegationDisabledFields:c}}function Qe(e,t){let n={...e.options},r=t.fields.filter(e=>e.positional),i=e.rest.length>0?[...e.positionals,...e.rest]:e.positionals,a=0;for(let e of r){if(a>=i.length)break;if(e.type===`array`){n[e.name]=i.slice(a);break}n[e.name]=i[a],a++}return n}function Z(e){let{aliasMap:t=new Map,booleanFlags:n=new Set,definedNames:i=new Set,negationMap:a=new Map,defaultNegationDisabledFields:o=new Set}=X(e),s=new Set;for(let t of e.fields)for(let e of r(t))e.length===1&&s.add(e);return{aliasMap:t,booleanFlags:n,definedNames:i,flagNames:new Set(e.fields.map(e=>e.name)),cliNames:new Set(e.fields.map(e=>e.cliName)),aliases:s,negationMap:a,defaultNegationDisabledFields:o}}function $e(e,t){let{resolvedName:n,withoutDashes:r,isNegated:i,isCustomNegation:a,isSuppressedNegation:o}=Je(e,t);if(o)return{resolvedName:n,withoutDashes:r,isNegated:!1,isGlobal:!1,isSuppressedNegation:o};let s=i&&!a?r.startsWith(`no-`)?r.slice(3):r[2].toLowerCase()+r.slice(3):r;return{resolvedName:n,withoutDashes:r,isNegated:i,isGlobal:t.flagNames.has(n)||t.cliNames.has(r)||t.cliNames.has(s),isSuppressedNegation:!1}}function et(e,t,n,r,i){return!e.includes(`=`)&&!i.has(t)&&!n&&r!==void 0&&!r.startsWith(`-`)}function Q(e,t,n,r,i,a){let o=e[t];return a.push(o),et(o,n,r,e[t+1],i)?(a.push(e[t+1]),2):1}function tt(e,t,n){let r=Z(n),i=new Set(t),a=[],o=[],s=0;for(;s<e.length;){let t=e[s];if(t===`--`||nt.has(t))break;if(!t.startsWith(`-`)&&i.has(t))return{subCommandIndex:s,globalTokensBefore:a,tokensAfterSubcommand:e.slice(s+1),suppressedTokens:o};if(t.startsWith(`--`)){let{resolvedName:n,withoutDashes:i,isNegated:c,isGlobal:l,isSuppressedNegation:u}=$e(t,r);if(l){s+=Q(e,s,n,c,r.booleanFlags,a);continue}if(u){o.push(i),s++;continue}break}if(t.startsWith(`-`)&&t.length>1){let n=t.includes(`=`)?t.slice(1,t.indexOf(`=`)):t.slice(1);if(n.length===1){let t=r.aliasMap.get(n)??n;if(r.aliases.has(n)||r.flagNames.has(t)){s+=Q(e,s,t,!1,r.booleanFlags,a);continue}}break}break}return{subCommandIndex:-1,globalTokensBefore:a,tokensAfterSubcommand:[],suppressedTokens:o}}const nt=new Set([`--help`,`-h`,`--help-all`,`-H`,`--version`]);function rt(e,t,n={}){let r=n.stopOnSuppressedNegation===!0||t?.unknownKeysMode===`strict`,i=t?Z(t):{aliasMap:new Map,booleanFlags:new Set,definedNames:new Set,flagNames:new Set,cliNames:new Set,aliases:new Set,negationMap:new Map,defaultNegationDisabledFields:new Set};for(let t=0;t<e.length;t++){let n=e[t];if(!n.startsWith(`-`))return t;if(n===`--`||nt.has(n))return-1;if(n.startsWith(`--`)){let{resolvedName:a,isNegated:o,isGlobal:s,isSuppressedNegation:c}=$e(n,i);if(s){et(n,a,o,e[t+1],i.booleanFlags)&&t++;continue}if(c){if(r)return-1;continue}return-1}let a=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(a.length===1){let r=i.aliasMap.get(a)??a;if(i.aliases.has(a)||i.flagNames.has(r)){et(n,r,!1,e[t+1],i.booleanFlags)&&t++;continue}}return-1}return-1}function it(e,t){let n=rt(e,t);return n>=0?e[n]:void 0}function at(e,t,n={}){let i=_(t),a=[...i],o=a.length>0;if(o&&e.length>0){if(n.globalExtracted){let t=tt(e,a,n.globalExtracted);if(t.subCommandIndex>=0){let r=ot(t.globalTokensBefore,n.globalExtracted);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:e[t.subCommandIndex],remainingArgs:t.tokensAfterSubcommand,rawArgs:{},positionals:[],rest:[],unknownFlags:t.suppressedTokens,unknownGlobalFlags:t.suppressedTokens,rawGlobalArgs:r}}}else{let t=e[0];if(t&&!t.startsWith(`-`)&&i.has(t))return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:t,remainingArgs:e.slice(1),rawArgs:{},positionals:[],rest:[],unknownFlags:[]}}}let c;t.args&&(c=s(t.args),n.skipValidation||(U(c),J(c),W(c),q(c),Re(c),G(c,o),K(c),n.globalExtracted&&Ve(n.globalExtracted,c)));let l=e,u,d=[];if(n.globalExtracted){let{separated:t,globalParsed:r,suppressedTokens:i}=st(e,n.globalExtracted,c);l=t,u=r,d=i}let f=e.indexOf(`--`),p=f>=0?e.slice(0,f):e,m=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`H`))??!1,h=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`h`))??!1,g=p.includes(`--help-all`)||!m&&p.includes(`-H`),v=!g&&(p.includes(`--help`)||!h&&p.includes(`-h`)),y=p.includes(`--version`);if(v||g||y)return{helpRequested:v,helpAllRequested:g,versionRequested:y,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u};if(!c){let e=l.indexOf(`--`);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:e>=0?l.slice(0,e):l,rest:e>=0?l.slice(e+1):[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u}}let b=X(c),x=Y(l,b),S=Qe(x,c),C=new Set;for(let e of c.fields)if(e.env&&S[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){S[e.name]=t,C.add(e.name);break}}}let w=new Set(c.fields.map(e=>e.name)),T=new Set(c.fields.map(e=>e.cliName)),E=new Set;for(let e of c.fields)for(let t of r(e))E.add(t);if(n.globalExtracted)for(let e of n.globalExtracted.fields){w.add(e.name),T.add(e.cliName);for(let t of r(e))E.add(t)}let D=[];for(let e of Object.keys(x.options))!w.has(e)&&!T.has(e)&&!E.has(e)&&D.push(e);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:S,positionals:x.positionals,rest:x.rest,unknownFlags:D,unknownGlobalFlags:d,extractedFields:c,rawGlobalArgs:u,envFallbackFields:C}}function ot(e,t){return e.length===0?{}:Qe(Y(e,X(t)),t)}function st(e,t,i){let a=Z(t),o=new Set(i?.fields.map(e=>e.name)??[]),s=new Set(i?.fields.map(e=>e.cliName)??[]),c=i?X(i):void 0,l=new Set(c?.aliasMap?.keys()??[]),u=new Set(c?.negationMap?.keys()??[]),d=new Set;for(let e of i?.fields??[])if(e.type===`boolean`&&e.negation===!0)for(let t of[e.cliName,...r(e)]){let e=`no-${t}`;d.add(e),d.add(n(e))}let f=[],p=[],m=[];for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`){p.push(...e.slice(t));break}if(n.startsWith(`--`)){let{resolvedName:r,withoutDashes:i,isNegated:c,isGlobal:p,isSuppressedNegation:h}=$e(n,a),g=r,_=o.has(i)||o.has(g)||s.has(i)||s.has(g)||l.has(i)||l.has(g)||u.has(i)||u.has(g)||d.has(i);if(p&&!_){t+=Q(e,t,r,c,a.booleanFlags,f)-1;continue}if(h&&!_){m.push(i);continue}}else if(n.startsWith(`-`)&&n.length>1){let r=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(r.length===1){let n=a.aliasMap.get(r)??r;if((a.aliases.has(r)||a.flagNames.has(n))&&!l.has(r)){t+=Q(e,t,n,!1,a.booleanFlags,f)-1;continue}}}p.push(n)}return{separated:p,globalParsed:ot(f,t),suppressedTokens:m}}function ct(t,n){return a(n)?o(t,n):e().validate(t,n)}function lt(e){return e.map(e=>`${e.path.length>0?`${e.path.join(`.`)}: `:``}${e.message}`).join(`
29
- `)}function ut(e,t){let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function dt(e,t){let n=Math.max(2,Math.floor(e.length/2));return t.map(t=>({candidate:t,distance:ut(e.toLowerCase(),t.toLowerCase())})).filter(({distance:e})=>e<=n).sort((e,t)=>e.distance-t.distance).map(({candidate:e})=>e).slice(0,3)}function ft(e,t){let n=dt(e.replace(/^-{1,2}/,``),t),r=`${y.warning(`Warning: Unknown option:`)} ${y.bold(e)}`;if(n.length>0){r+=`\n\n${y.info(`Did you mean?`)}`;for(let e of n)r+=`\n ${v.arrow} ${y.option(`--${e}`)}`}return r}function pt(e,t){return t&&e.stack?`${y.error(`Error:`)} ${e.message}\n\n${y.dim(e.stack)}`:`${y.error(`Error:`)} ${e.message}`}function $(e){return new Proxy(e,{get(e,r,i){if(typeof r==`string`){if(r in e)return Reflect.get(e,r,i);let a=n(r);if(a!==r&&a in e)return Reflect.get(e,a,i);let o=t(r);if(o!==r&&o in e)return Reflect.get(e,o,i)}return Reflect.get(e,r,i)},has(e,r){if(typeof r==`string`){if(r in e)return!0;let i=n(r);if(i!==r&&i in e)return!0;let a=t(r);if(a!==r&&a in e)return!0}return Reflect.has(e,r)}})}async function mt(e,t,n){for(let r of t.fields)r.effect&&await r.effect(e[r.name],{name:r.name,args:e,...n!=null&&{globalArgs:n}})}const ht={log:e=>console.log(e),error:e=>console.error(e),warn:e=>console.warn(e)};function gt(e,r){Object.defineProperty(e,"$source",{value:e=>r.get(e)??r.get(n(e))??r.get(t(e))??`default`,enumerable:!1})}function _t(e,t){Object.defineProperty(e,"$invocation",{value:t,enumerable:!1})}function vt(e,t){let n=t.commandPath?.at(-1)??e.name;return t.aliasFor?{name:n,aliasFor:t.aliasFor}:{name:n}}async function yt(e,t,n={}){let r=wt(n),i=n.captureLogs??!1,a=i?d():null;if(n.setup){a?.start();try{await n.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(n.cleanup)try{await n.cleanup({error:t})}catch{}return a?.stop(),{success:!1,error:t,exitCode:1,logs:a?.getLogs()??l()}}a?.stop()}let o=await Ct(e,t,{...n,handleSignals:!1,_globalExtracted:r,_globalCleanup:n.cleanup,_existingLogs:a?.getLogs()});if(n.cleanup){let e=i?d():null;e?.start();let t={error:o.success?void 0:o.error};try{await n.cleanup(t)}catch(t){if(o.success){let n=t instanceof Error?t:Error(String(t));return e?.stop(),{success:!1,error:n,exitCode:1,logs:u(o.logs,e?.getLogs()??l())}}}e?.stop();let r=e?.getLogs()??l();if(r.entries.length>0)return{...o,logs:u(o.logs,r)}}return o}function bt(e,t,n){let r=it(t,n);return!r||!r.startsWith(`__`)?!1:Object.hasOwn(e.subCommands??{},r)}async function xt(e,t={}){if(t.compileCache!==!1&&c(typeof t.compileCache==`string`?{cacheDir:t.compileCache}:{programName:e.name}),e.runMainHook)try{e.runMainHook(process.argv.slice(2))}catch{}let n=process.argv.slice(2),r;if(t.globalArgs)try{r=s(t.globalArgs)}catch{}let i=t;if(bt(e,n,r)){let{setup:e,cleanup:n,prompt:r,globalArgs:a,...o}=t;i=o}let a=wt(i);if(i.onUnknownSubcommand&&!e.run&&!bt(e,n,r)){let t=_(e);if(t.size>0){let e=rt(n,a,{stopOnSuppressedNegation:a?.unknownKeysMode!==`passthrough`}),r=e>=0?n[e]:void 0;if(r&&!t.has(r)){let t=n.slice(e+1),a=await i.onUnknownSubcommand({commandPath:[],name:r,args:t,precedingArgs:n.slice(0,e)});if(typeof a==`number`)return await St(),process.exit(a)}}}if(i.setup)try{await i.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(i.cleanup)try{await i.cleanup({error:t})}catch{}process.exit(1)}let o=await Ct(e,n,{debug:i.debug,captureLogs:i.captureLogs,skipValidation:i.skipValidation,handleSignals:!0,logger:i.logger,globalArgs:i.globalArgs,prompt:i.prompt,onUnknownSubcommand:i.onUnknownSubcommand,_globalExtracted:a,_globalCleanup:i.cleanup,_context:{commandPath:[],rootName:e.name,rootVersion:i.version,globalExtracted:a}});if((i.displayErrors??!0)&&!o.success&&o.error&&(i.logger??ht).error(pt(o.error,i.debug??!1)),i.cleanup){let e={error:o.success?void 0:o.error};try{await i.cleanup(e)}catch{}}await St(),process.exit(o.exitCode)}async function St(){await Promise.all([process.stdout,process.stderr].map(e=>e.writableLength>0?new Promise(t=>e.write(``,()=>t())):Promise.resolve()))}async function Ct(e,t,n={}){let r=n.logger??ht,i=n._context??{commandPath:[],rootName:e.name,globalExtracted:n._globalExtracted},a=n.captureLogs??!1?d():null;a?.start();let o=()=>{let e=n._existingLogs??l(),t=a?.getLogs()??l();return u(e,t)};try{let s=at(t,e,{skipValidation:n.skipValidation,globalExtracted:n._globalExtracted}),c={...n._parsedGlobalArgs,...s.rawGlobalArgs},l=i.commandPath??[];if(n.onUnknownSubcommand&&!e.run&&l.length>0){let r=_(e);if(r.size>0){let e=rt(t,n._globalExtracted,{stopOnSuppressedNegation:n._globalExtracted?.unknownKeysMode!==`passthrough`}),i=e>=0?t[e]:void 0;if(i&&!r.has(i)){let r=t.slice(e+1),s=await n.onUnknownSubcommand({commandPath:l,name:i,args:r,precedingArgs:[...n._precedingArgs??[],...t.slice(0,e)]});if(typeof s==`number`){if(a?.stop(),n.handleSignals){if(n._globalCleanup)try{await n._globalCleanup({error:void 0})}catch{}await St(),process.exit(s)}return s===0?{success:!0,result:void 0,exitCode:0,logs:o()}:{success:!1,error:Error(`Plugin "${[...l,i].join(` `)}" exited with code ${s}`),exitCode:s,logs:o()}}}}}if(s.helpRequested||s.helpAllRequested){let c=!1,l=m(e),u=_(e);if(l.length>0){let e=it(t,i.globalExtracted);e&&!u.has(e)&&(c=!0)}let d=V(e,{showSubcommands:n.showSubcommands??!0,showSubcommandOptions:s.helpAllRequested||n.showSubcommandOptions,context:i});if(r.log(d),a?.stop(),c){let e=it(t,i.globalExtracted)??``,n=dt(e,[...u]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}return{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownGlobalFlags&&s.unknownGlobalFlags.length>0){let e=i.globalExtracted?.unknownKeysMode??`strip`;if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownGlobalFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`){let e=i.globalExtracted?.fields.map(e=>e.name)??[];for(let t of s.unknownGlobalFlags)r.error(ft(t,e))}}if(s.versionRequested){let e=i.rootVersion;return e&&r.log(e),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.subCommand){let r=await f(e,s.subCommand);if(r){let e={commandPath:[...i.commandPath??[],s.subCommand],rootName:i.rootName,rootVersion:i.rootVersion,globalExtracted:i.globalExtracted,aliasFor:r.aliasFor};a?.stop();let l=new Set(n._globalExtracted?.unknownKeysMode===`passthrough`?[]:s.unknownGlobalFlags??[]),u=e=>e.startsWith(`--`)&&l.has(qe(e)),d=t.slice(0,t.length-s.remainingArgs.length-1).filter(e=>!u(e));return Ct(r.command,s.remainingArgs,{...n,_context:e,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...d]})}}let u=s.extractedFields?.fields.filter(e=>e.positional)??[],d=u.some(e=>e.type===`array`),p=[...s.positionals,...s.rest],h=d?[]:p.slice(u.length),g=d?[]:s.positionals.slice(u.length);if(m(e).length>0&&!s.subCommand&&!e.run&&h.length===0){let t=V(e,{showSubcommands:n.showSubcommands??!0,context:i});return r.log(t),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownFlags.length>0){let e=s.extractedFields?.unknownKeysMode??`strip`,t=s.extractedFields?.fields.map(e=>e.name)??[];if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`)for(let e of s.unknownFlags)r.error(ft(e,t))}if(h.length>0){let t=_(e);if(t.size>0){let e=g.find(e=>!e.startsWith(`-`)&&!t.has(e));if(e){let n=dt(e,[...t]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return a?.stop(),{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}}let n=s.extractedFields?.unknownKeysMode??`strip`;if(n===`strict`)return a?.stop(),{success:!1,error:Error(`Unexpected positional argument${h.length>1?`s`:``}: ${h.join(`, `)}`),exitCode:1,logs:o()};if(n===`strip`)for(let e of h)(r.warn??r.error)(`Warning: Unexpected positional argument: ${e}`)}let v={},y=e.name===`__complete`,b=new Set(Object.keys(c)),S=new Set;if(n.globalArgs&&n._globalExtracted&&!y){for(let e of n._globalExtracted.fields)if(e.env&&c[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){c[e.name]=t,S.add(e.name);break}}}if(n.prompt){let e=await n.prompt(c,n._globalExtracted);for(let[t,n]of Object.entries(e))n!==void 0&&(c[t]=n)}let e=ct(c,n.globalArgs);if(!e.success)return a?.stop(),{success:!1,error:Error(lt(e.errors)),exitCode:1,logs:o()};v=e.data}if(!e.args){let t=new Map;for(let e of b)t.set(e,`cli`);for(let e of S)t.set(e,`env`);gt(v,t),_t(v,vt(e,i));let r=$(v);return n._globalExtracted&&!y&&await mt(r,n._globalExtracted,r),a?.stop(),await x(e,r,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}let C=s.rawArgs,w=new Set;if(n.prompt&&s.extractedFields){let e=await n.prompt(C,s.extractedFields),t={...C};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r,w.add(n));C=t}let T=new Set;if(s.extractedFields)for(let e of s.extractedFields.fields)!(Object.hasOwn(s.rawArgs,e.name)||w.has(e.name))&&b.has(e.name)&&Object.hasOwn(v,e.name)&&(C={...C,[e.name]:v[e.name]},T.add(e.name));let E=ct(C,e.args);if(!E.success)return a?.stop(),{success:!1,error:Error(lt(E.errors)),exitCode:1,logs:o()};let D=$(E.data),O=$(v);n._globalExtracted&&!y&&await mt(O,n._globalExtracted,O),s.extractedFields&&!y&&await mt(D,s.extractedFields,O);let k={...O,...D},A=new Map;for(let e of b)A.set(e,`cli`);for(let e of S)A.set(e,`env`);let j=s.envFallbackFields??new Set;for(let e of s.extractedFields?.fields??[]){if(T.has(e.name)){A.set(e.name,`cli`);continue}let t=Object.hasOwn(s.rawArgs,e.name)||j.has(e.name);A.set(e.name,t?j.has(e.name)?`env`:`cli`:`default`)}gt(k,A),_t(k,vt(e,i));let M=$(k);return a?.stop(),await x(e,M,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}catch(e){let t=e instanceof Error?e:Error(String(e));return a?.stop(),{success:!1,error:t,exitCode:1,logs:o()}}}function wt(e){if(!e.globalArgs)return;let t=s(e.globalArgs);if(!e.skipValidation){U(t),J(t),W(t),q(t),G(t,!0),K(t);let e=t.fields.filter(e=>e.positional).map(e=>e.name);if(e.length>0)throw Error(`Global options schema must not contain positional arguments. Found: ${e.join(`, `)}`)}return t}export{ke as C,O as E,Te as S,D as T,De as _,Y as a,Ae as b,Ge as c,U as d,q as f,H as g,K as h,lt as i,Ve as l,G as m,xt as n,Ke as o,Re as p,$ as r,J as s,yt as t,W as u,Ee as v,V as w,we as x,Oe as y};
28
+ `)}const qe=new Set([`1`,`t`,`T`,`TRUE`,`true`,`True`]),Je=new Set([`0`,`f`,`F`,`FALSE`,`false`,`False`]);function Y(e){return qe.has(e)?!0:!Je.has(e)&&e}function Ye(e,t){return t===`boolean`?Y(e):e}function Xe(e){let t=e.indexOf(`=`);return t>=0?e.slice(2,t):e.slice(2)}function Ze(e,t){let n=Xe(e);if(!e.includes(`=`)){let e=t.negationMap.get(n);if(e&&t.booleanFlags.has(e))return{resolvedName:e,withoutDashes:n,isNegated:!0,isCustomNegation:!0,isSuppressedNegation:!1}}let r=e.includes(`=`);if(!r&&n.startsWith(`no-`)){let e=n.slice(3);if(e===e.toLowerCase()){let r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}}if(!r&&n.length>2&&n.startsWith(`no`)&&/[A-Z]/.test(n[2])){let e=n[2].toLowerCase()+n.slice(3),r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}return{resolvedName:t.aliasMap.get(n)??n,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!1}}const Qe=/^-\.?\d/;function $e(e){return Qe.test(e)}function et(e,t={}){let{aliasMap:n=new Map,booleanFlags:r=new Set,arrayFlags:i=new Set,definedNames:a=new Set,negationMap:o=new Map,defaultNegationDisabledFields:s}=t,c={aliasMap:n,booleanFlags:r,definedNames:a,negationMap:o,defaultNegationDisabledFields:s??new Set(r)},l={options:{},positionals:[],rest:[]},u=0,d=!1,f=(e,t)=>{let r=n.get(e)??e;if(i.has(r)){let e=l.options[r];Array.isArray(e)?e.push(t):e===void 0?l.options[r]=[t]:l.options[r]=[e,t]}else l.options[r]=t};for(;u<e.length;){let t=e[u];if(d){l.rest.push(t),u++;continue}if(t===`--`){d=!0,u++;continue}if(t.startsWith(`--`)){let i=t.slice(2),a=Ze(t,c);if(a.isSuppressedNegation){f(a.withoutDashes,!0),u++;continue}if(a.isNegated){f(a.resolvedName,!1),u++;continue}let o=i.indexOf(`=`);if(o!==-1){let e=i.slice(0,o),t=i.slice(o+1),a=n.get(e)??e;f(e,r.has(a)?Y(t):t),u++}else{let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||$e(n))?(f(t,n),u+=2):(f(t,!0),u++)}}continue}if(t.startsWith(`-`)&&t.length>1&&!t.startsWith(`--`)){let i=t.slice(1),a=i.indexOf(`=`);if(a!==-1){let e=i.slice(0,a),t=i.slice(a+1),o=n.get(e)??e;f(e,r.has(o)?Y(t):t),u++}else if(i.length===1){let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||$e(n))?(f(t,n),u+=2):(f(t,!0),u++)}}else{for(let e of i)f(e,!0);u++}continue}l.positionals.push(t),u++}return l}function X(e){let t=new Map,i=new Set,a=new Set,o=new Set,s=new Map,c=new Set;for(let t of e.fields)o.add(t.name);for(let l of e.fields){l.cliName!==l.name&&t.set(l.cliName,l.name);for(let e of r(l))if(t.set(e,l.name),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&!o.has(r)&&!t.has(r)&&t.set(r,l.name)}let e=n(l.name);if(e!==l.name&&!o.has(e)&&!t.has(e)&&t.set(e,l.name),l.type===`boolean`&&i.add(l.name),l.type===`array`&&a.add(l.name),l.type===`boolean`&&l.negation!==!0&&(c.add(l.name),typeof l.negation==`string`&&(s.set(l.negation,l.name),l.negation.includes(`-`)))){let e=n(l.negation);e!==l.negation&&s.set(e,l.name)}}return{aliasMap:t,booleanFlags:i,arrayFlags:a,definedNames:o,negationMap:s,defaultNegationDisabledFields:c}}function tt(e,t){let n={...e.options},r=t.fields.filter(e=>e.positional),i=e.rest.length>0?[...e.positionals,...e.rest]:e.positionals,a=0;for(let e of r){if(a>=i.length)break;if(e.type===`array`){n[e.name]=i.slice(a);break}n[e.name]=i[a],a++}return n}function nt(e){let{aliasMap:t=new Map,booleanFlags:n=new Set,definedNames:i=new Set,negationMap:a=new Map,defaultNegationDisabledFields:o=new Set}=X(e),s=new Set;for(let t of e.fields)for(let e of r(t))e.length===1&&s.add(e);return{aliasMap:t,booleanFlags:n,definedNames:i,flagNames:new Set(e.fields.map(e=>e.name)),cliNames:new Set(e.fields.map(e=>e.cliName)),aliases:s,negationMap:a,defaultNegationDisabledFields:o}}function rt(e,t){let{resolvedName:n,withoutDashes:r,isNegated:i,isCustomNegation:a,isSuppressedNegation:o}=Ze(e,t);if(o)return{resolvedName:n,withoutDashes:r,isNegated:!1,isGlobal:!1,isSuppressedNegation:o};let s=i&&!a?r.startsWith(`no-`)?r.slice(3):r[2].toLowerCase()+r.slice(3):r;return{resolvedName:n,withoutDashes:r,isNegated:i,isGlobal:t.flagNames.has(n)||t.cliNames.has(r)||t.cliNames.has(s),isSuppressedNegation:!1}}function it(e,t,n,r,i){return!e.includes(`=`)&&!i.has(t)&&!n&&r!==void 0&&!r.startsWith(`-`)}function Z(e,t,n,r,i,a){let o=e[t];return a.push(o),it(o,n,r,e[t+1],i)?(a.push(e[t+1]),2):1}function at(e,t,n){let r=nt(n),i=new Set(t),a=[],o=[],s=0;for(;s<e.length;){let t=e[s];if(t===`--`||ot.has(t))break;if(!t.startsWith(`-`)&&i.has(t))return{subCommandIndex:s,globalTokensBefore:a,tokensAfterSubcommand:e.slice(s+1),suppressedTokens:o};if(t.startsWith(`--`)){let{resolvedName:n,withoutDashes:i,isNegated:c,isGlobal:l,isSuppressedNegation:u}=rt(t,r);if(l){s+=Z(e,s,n,c,r.booleanFlags,a);continue}if(u){o.push(i),s++;continue}break}if(t.startsWith(`-`)&&t.length>1){let n=t.includes(`=`)?t.slice(1,t.indexOf(`=`)):t.slice(1);if(n.length===1){let t=r.aliasMap.get(n)??n;if(r.aliases.has(n)||r.flagNames.has(t)){s+=Z(e,s,t,!1,r.booleanFlags,a);continue}}break}break}return{subCommandIndex:-1,globalTokensBefore:a,tokensAfterSubcommand:[],suppressedTokens:o}}const ot=new Set([`--help`,`-h`,`--help-all`,`-H`,`--version`]);function st(e,t,n={}){let r=n.stopOnSuppressedNegation===!0||t?.unknownKeysMode===`strict`,i=t?nt(t):{aliasMap:new Map,booleanFlags:new Set,definedNames:new Set,flagNames:new Set,cliNames:new Set,aliases:new Set,negationMap:new Map,defaultNegationDisabledFields:new Set};for(let t=0;t<e.length;t++){let n=e[t];if(!n.startsWith(`-`))return t;if(n===`--`||ot.has(n))return-1;if(n.startsWith(`--`)){let{resolvedName:a,isNegated:o,isGlobal:s,isSuppressedNegation:c}=rt(n,i);if(s){it(n,a,o,e[t+1],i.booleanFlags)&&t++;continue}if(c){if(r)return-1;continue}return-1}let a=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(a.length===1){let r=i.aliasMap.get(a)??a;if(i.aliases.has(a)||i.flagNames.has(r)){it(n,r,!1,e[t+1],i.booleanFlags)&&t++;continue}}return-1}return-1}function ct(e,t){let n=st(e,t);return n>=0?e[n]:void 0}function lt(e,t,n={}){let i=_(t),a=[...i],o=a.length>0;if(o&&e.length>0){if(n.globalExtracted){let t=at(e,a,n.globalExtracted);if(t.subCommandIndex>=0){let r=ut(t.globalTokensBefore,n.globalExtracted);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:e[t.subCommandIndex],remainingArgs:t.tokensAfterSubcommand,rawArgs:{},positionals:[],rest:[],unknownFlags:t.suppressedTokens,unknownGlobalFlags:t.suppressedTokens,rawGlobalArgs:r}}}else{let t=e[0];if(t&&!t.startsWith(`-`)&&i.has(t))return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:t,remainingArgs:e.slice(1),rawArgs:{},positionals:[],rest:[],unknownFlags:[]}}}let c;t.args&&(c=s(t.args),n.skipValidation||(U(c),J(c),W(c),q(c),Re(c),G(c,o),K(c),n.globalExtracted&&Ve(n.globalExtracted,c)));let l=e,u,d=[];if(n.globalExtracted){let{separated:t,globalParsed:r,suppressedTokens:i}=dt(e,n.globalExtracted,c);l=t,u=r,d=i}let f=e.indexOf(`--`),p=f>=0?e.slice(0,f):e,m=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`H`))??!1,h=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`h`))??!1,g=p.includes(`--help-all`)||!m&&p.includes(`-H`),v=!g&&(p.includes(`--help`)||!h&&p.includes(`-h`)),y=p.includes(`--version`);if(v||g||y)return{helpRequested:v,helpAllRequested:g,versionRequested:y,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u};if(!c){let e=l.indexOf(`--`);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:e>=0?l.slice(0,e):l,rest:e>=0?l.slice(e+1):[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u}}let b=X(c),x=et(l,b),S=tt(x,c),C=new Set;for(let e of c.fields)if(e.env&&S[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){S[e.name]=Ye(t,e.type),C.add(e.name);break}}}let w=new Set(c.fields.map(e=>e.name)),T=new Set(c.fields.map(e=>e.cliName)),E=new Set;for(let e of c.fields)for(let t of r(e))E.add(t);if(n.globalExtracted)for(let e of n.globalExtracted.fields){w.add(e.name),T.add(e.cliName);for(let t of r(e))E.add(t)}let D=[];for(let e of Object.keys(x.options))!w.has(e)&&!T.has(e)&&!E.has(e)&&D.push(e);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:S,positionals:x.positionals,rest:x.rest,unknownFlags:D,unknownGlobalFlags:d,extractedFields:c,rawGlobalArgs:u,envFallbackFields:C}}function ut(e,t){return e.length===0?{}:tt(et(e,X(t)),t)}function dt(e,t,i){let a=nt(t),o=new Set(i?.fields.map(e=>e.name)??[]),s=new Set(i?.fields.map(e=>e.cliName)??[]),c=i?X(i):void 0,l=new Set(c?.aliasMap?.keys()??[]),u=new Set(c?.negationMap?.keys()??[]),d=new Set;for(let e of i?.fields??[])if(e.type===`boolean`&&e.negation===!0)for(let t of[e.cliName,...r(e)]){let e=`no-${t}`;d.add(e),d.add(n(e))}let f=[],p=[],m=[];for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`){p.push(...e.slice(t));break}if(n.startsWith(`--`)){let{resolvedName:r,withoutDashes:i,isNegated:c,isGlobal:p,isSuppressedNegation:h}=rt(n,a),g=r,_=o.has(i)||o.has(g)||s.has(i)||s.has(g)||l.has(i)||l.has(g)||u.has(i)||u.has(g)||d.has(i);if(p&&!_){t+=Z(e,t,r,c,a.booleanFlags,f)-1;continue}if(h&&!_){m.push(i);continue}}else if(n.startsWith(`-`)&&n.length>1){let r=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(r.length===1){let n=a.aliasMap.get(r)??r;if((a.aliases.has(r)||a.flagNames.has(n))&&!l.has(r)){t+=Z(e,t,n,!1,a.booleanFlags,f)-1;continue}}}p.push(n)}return{separated:p,globalParsed:ut(f,t),suppressedTokens:m}}function ft(t,n){return a(n)?o(t,n):e().validate(t,n)}function Q(e){return e.map(e=>`${e.path.length>0?`${e.path.join(`.`)}: `:``}${e.message}`).join(`
29
+ `)}function pt(e,t){let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function mt(e,t){let n=Math.max(2,Math.floor(e.length/2));return t.map(t=>({candidate:t,distance:pt(e.toLowerCase(),t.toLowerCase())})).filter(({distance:e})=>e<=n).sort((e,t)=>e.distance-t.distance).map(({candidate:e})=>e).slice(0,3)}function ht(e,t){let n=mt(e.replace(/^-{1,2}/,``),t),r=`${y.warning(`Warning: Unknown option:`)} ${y.bold(e)}`;if(n.length>0){r+=`\n\n${y.info(`Did you mean?`)}`;for(let e of n)r+=`\n ${v.arrow} ${y.option(`--${e}`)}`}return r}function gt(e,t){return t&&e.stack?`${y.error(`Error:`)} ${e.message}\n\n${y.dim(e.stack)}`:`${y.error(`Error:`)} ${e.message}`}function $(e){return new Proxy(e,{get(e,r,i){if(typeof r==`string`){if(r in e)return Reflect.get(e,r,i);let a=n(r);if(a!==r&&a in e)return Reflect.get(e,a,i);let o=t(r);if(o!==r&&o in e)return Reflect.get(e,o,i)}return Reflect.get(e,r,i)},has(e,r){if(typeof r==`string`){if(r in e)return!0;let i=n(r);if(i!==r&&i in e)return!0;let a=t(r);if(a!==r&&a in e)return!0}return Reflect.has(e,r)}})}async function _t(e,t,n){for(let r of t.fields)r.effect&&await r.effect(e[r.name],{name:r.name,args:e,...n!=null&&{globalArgs:n}})}const vt={log:e=>console.log(e),error:e=>console.error(e),warn:e=>console.warn(e)};function yt(e,r){Object.defineProperty(e,"$source",{value:e=>r.get(e)??r.get(n(e))??r.get(t(e))??`default`,enumerable:!1})}function bt(e,t){Object.defineProperty(e,"$invocation",{value:t,enumerable:!1})}function xt(e,t){let n=t.commandPath?.at(-1)??e.name;return t.aliasFor?{name:n,aliasFor:t.aliasFor}:{name:n}}async function St(e,t,n={}){let r=Dt(n),i=n.captureLogs??!1,a=i?d():null;if(n.setup){a?.start();try{await n.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(n.cleanup)try{await n.cleanup({error:t})}catch{}return a?.stop(),{success:!1,error:t,exitCode:1,logs:a?.getLogs()??l()}}a?.stop()}let o=await Et(e,t,{...n,handleSignals:!1,_globalExtracted:r,_globalCleanup:n.cleanup,_existingLogs:a?.getLogs()});if(n.cleanup){let e=i?d():null;e?.start();let t={error:o.success?void 0:o.error};try{await n.cleanup(t)}catch(t){if(o.success){let n=t instanceof Error?t:Error(String(t));return e?.stop(),{success:!1,error:n,exitCode:1,logs:u(o.logs,e?.getLogs()??l())}}}e?.stop();let r=e?.getLogs()??l();if(r.entries.length>0)return{...o,logs:u(o.logs,r)}}return o}function Ct(e,t,n){let r=ct(t,n);return!r||!r.startsWith(`__`)?!1:Object.hasOwn(e.subCommands??{},r)}async function wt(e,t={}){if(t.compileCache!==!1&&c(typeof t.compileCache==`string`?{cacheDir:t.compileCache}:{programName:e.name}),e.runMainHook)try{e.runMainHook(process.argv.slice(2))}catch{}let n=process.argv.slice(2),r;if(t.globalArgs)try{r=s(t.globalArgs)}catch{}let i=t;if(Ct(e,n,r)){let{setup:e,cleanup:n,prompt:r,globalArgs:a,...o}=t;i=o}let a=Dt(i);if(i.onUnknownSubcommand&&!e.run&&!Ct(e,n,r)){let t=_(e);if(t.size>0){let e=st(n,a,{stopOnSuppressedNegation:a?.unknownKeysMode!==`passthrough`}),r=e>=0?n[e]:void 0;if(r&&!t.has(r)){let t=n.slice(e+1),a=await i.onUnknownSubcommand({commandPath:[],name:r,args:t,precedingArgs:n.slice(0,e)});if(typeof a==`number`)return await Tt(),process.exit(a)}}}if(i.setup)try{await i.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(i.cleanup)try{await i.cleanup({error:t})}catch{}process.exit(1)}let o=await Et(e,n,{debug:i.debug,captureLogs:i.captureLogs,skipValidation:i.skipValidation,handleSignals:!0,logger:i.logger,globalArgs:i.globalArgs,prompt:i.prompt,onUnknownSubcommand:i.onUnknownSubcommand,_globalExtracted:a,_globalCleanup:i.cleanup,_context:{commandPath:[],rootName:e.name,rootVersion:i.version,globalExtracted:a}});if((i.displayErrors??!0)&&!o.success&&o.error&&(i.logger??vt).error(gt(o.error,i.debug??!1)),i.cleanup){let e={error:o.success?void 0:o.error};try{await i.cleanup(e)}catch{}}await Tt(),process.exit(o.exitCode)}async function Tt(){await Promise.all([process.stdout,process.stderr].map(e=>e.writableLength>0?new Promise(t=>e.write(``,()=>t())):Promise.resolve()))}async function Et(e,t,n={}){let r=n.logger??vt,i=n._context??{commandPath:[],rootName:e.name,globalExtracted:n._globalExtracted},a=n.captureLogs??!1?d():null;a?.start();let o=()=>{let e=n._existingLogs??l(),t=a?.getLogs()??l();return u(e,t)};try{let s=lt(t,e,{skipValidation:n.skipValidation,globalExtracted:n._globalExtracted}),c={...n._parsedGlobalArgs,...s.rawGlobalArgs},l=i.commandPath??[];if(n.onUnknownSubcommand&&!e.run&&l.length>0){let r=_(e);if(r.size>0){let e=st(t,n._globalExtracted,{stopOnSuppressedNegation:n._globalExtracted?.unknownKeysMode!==`passthrough`}),i=e>=0?t[e]:void 0;if(i&&!r.has(i)){let r=t.slice(e+1),s=await n.onUnknownSubcommand({commandPath:l,name:i,args:r,precedingArgs:[...n._precedingArgs??[],...t.slice(0,e)]});if(typeof s==`number`){if(a?.stop(),n.handleSignals){if(n._globalCleanup)try{await n._globalCleanup({error:void 0})}catch{}await Tt(),process.exit(s)}return s===0?{success:!0,result:void 0,exitCode:0,logs:o()}:{success:!1,error:Error(`Plugin "${[...l,i].join(` `)}" exited with code ${s}`),exitCode:s,logs:o()}}}}}if(s.helpRequested||s.helpAllRequested){let c=!1,l=m(e),u=_(e);if(l.length>0){let e=ct(t,i.globalExtracted);e&&!u.has(e)&&(c=!0)}let d=V(e,{showSubcommands:n.showSubcommands??!0,showSubcommandOptions:s.helpAllRequested||n.showSubcommandOptions,context:i});if(r.log(d),a?.stop(),c){let e=ct(t,i.globalExtracted)??``,n=mt(e,[...u]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}return{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownGlobalFlags&&s.unknownGlobalFlags.length>0){let e=i.globalExtracted?.unknownKeysMode??`strip`;if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownGlobalFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`){let e=i.globalExtracted?.fields.map(e=>e.name)??[];for(let t of s.unknownGlobalFlags)r.error(ht(t,e))}}if(s.versionRequested){let e=i.rootVersion;return e&&r.log(e),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.subCommand){let r=await f(e,s.subCommand);if(r){let e={commandPath:[...i.commandPath??[],s.subCommand],rootName:i.rootName,rootVersion:i.rootVersion,globalExtracted:i.globalExtracted,aliasFor:r.aliasFor};a?.stop();let l=new Set(n._globalExtracted?.unknownKeysMode===`passthrough`?[]:s.unknownGlobalFlags??[]),u=e=>e.startsWith(`--`)&&l.has(Xe(e)),d=t.slice(0,t.length-s.remainingArgs.length-1).filter(e=>!u(e));return Et(r.command,s.remainingArgs,{...n,_context:e,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...d]})}}let u=s.extractedFields?.fields.filter(e=>e.positional)??[],d=u.some(e=>e.type===`array`),p=[...s.positionals,...s.rest],h=d?[]:p.slice(u.length),g=d?[]:s.positionals.slice(u.length);if(m(e).length>0&&!s.subCommand&&!e.run&&h.length===0){let t=V(e,{showSubcommands:n.showSubcommands??!0,context:i});return r.log(t),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownFlags.length>0){let e=s.extractedFields?.unknownKeysMode??`strip`,t=s.extractedFields?.fields.map(e=>e.name)??[];if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`)for(let e of s.unknownFlags)r.error(ht(e,t))}if(h.length>0){let t=_(e);if(t.size>0){let e=g.find(e=>!e.startsWith(`-`)&&!t.has(e));if(e){let n=mt(e,[...t]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return a?.stop(),{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}}let n=s.extractedFields?.unknownKeysMode??`strip`;if(n===`strict`)return a?.stop(),{success:!1,error:Error(`Unexpected positional argument${h.length>1?`s`:``}: ${h.join(`, `)}`),exitCode:1,logs:o()};if(n===`strip`)for(let e of h)(r.warn??r.error)(`Warning: Unexpected positional argument: ${e}`)}let v={},y=e.name===`__complete`,b=new Set(Object.keys(c)),S=new Set;if(n.globalArgs&&n._globalExtracted&&!y){for(let e of n._globalExtracted.fields)if(e.env&&c[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){c[e.name]=Ye(t,e.type),S.add(e.name);break}}}if(n.prompt){let e=await n.prompt(c,n._globalExtracted);for(let[t,n]of Object.entries(e))n!==void 0&&(c[t]=n)}let e=ft(c,n.globalArgs);if(!e.success)return a?.stop(),{success:!1,error:Error(Q(e.errors)),exitCode:1,logs:o()};v=e.data}if(!e.args){let t=new Map;for(let e of b)t.set(e,`cli`);for(let e of S)t.set(e,`env`);yt(v,t),bt(v,xt(e,i));let r=$(v);return n._globalExtracted&&!y&&await _t(r,n._globalExtracted,r),a?.stop(),await x(e,r,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}let C=s.rawArgs,w=new Set;if(n.prompt&&s.extractedFields){let e=await n.prompt(C,s.extractedFields),t={...C};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r,w.add(n));C=t}let T=new Set;if(s.extractedFields)for(let e of s.extractedFields.fields)!(Object.hasOwn(s.rawArgs,e.name)||w.has(e.name))&&b.has(e.name)&&Object.hasOwn(v,e.name)&&(C={...C,[e.name]:v[e.name]},T.add(e.name));let E=ft(C,e.args);if(!E.success)return a?.stop(),{success:!1,error:Error(Q(E.errors)),exitCode:1,logs:o()};let D=$(E.data),O=$(v);n._globalExtracted&&!y&&await _t(O,n._globalExtracted,O),s.extractedFields&&!y&&await _t(D,s.extractedFields,O);let k={...O,...D},A=new Map;for(let e of b)A.set(e,`cli`);for(let e of S)A.set(e,`env`);let j=s.envFallbackFields??new Set;for(let e of s.extractedFields?.fields??[]){if(T.has(e.name)){A.set(e.name,`cli`);continue}let t=Object.hasOwn(s.rawArgs,e.name)||j.has(e.name);A.set(e.name,t?j.has(e.name)?`env`:`cli`:`default`)}yt(k,A),bt(k,xt(e,i));let M=$(k);return a?.stop(),await x(e,M,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}catch(e){let t=e instanceof Error?e:Error(String(e));return a?.stop(),{success:!1,error:t,exitCode:1,logs:o()}}}function Dt(e){if(!e.globalArgs)return;let t=s(e.globalArgs);if(!e.skipValidation){U(t),J(t),W(t),q(t),G(t,!0),K(t);let e=t.fields.filter(e=>e.positional).map(e=>e.name);if(e.length>0)throw Error(`Global options schema must not contain positional arguments. Found: ${e.join(`, `)}`)}return t}export{ke as C,O as E,Te as S,D as T,De as _,et as a,Ae as b,Ge as c,U as d,q as f,H as g,K as h,Q as i,Ve as l,G as m,wt as n,Ke as o,Re as p,$ as r,J as s,St as t,W as u,Ee as v,V as w,we as x,Oe as y};
@@ -0,0 +1 @@
1
+ import{t as e}from"./runner-BBzVbri9.js";export{e as runCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@politty/zod",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "A lightweight CLI framework inspired by citty with zod v4 registry integration for type-safe metadata management",
5
5
  "keywords": [
6
6
  "argument-parser",
@@ -79,7 +79,7 @@
79
79
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
80
80
  "tsdown": "0.22.14",
81
81
  "typescript": "7.0.2",
82
- "zod": "4.4.3"
82
+ "zod": "4.5.4"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "@clack/prompts": "^0.10.0 || ^0.11.0 || ^1.0.0",
@@ -1 +0,0 @@
1
- import{t as e}from"./cli-main-CjYk6tAX.js";export{e as runPolittyCli};
@@ -1 +0,0 @@
1
- import{t as e}from"./runner-BIdcntiz.js";export{e as runCommand};