zod-args-parser 1.2.8 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -85,7 +85,7 @@ const cliSchema = createCli({
85
85
 
86
86
  // Execute this function when the CLI is run (no subcommands)
87
87
  cliSchema.setAction(results => {
88
- const { help, version, verbose } = results;
88
+ const { help, version, verbose } = results.options;
89
89
 
90
90
  if (help) {
91
91
  results.printCliHelp();
@@ -734,14 +734,14 @@ The context object is generated after parsing the CLI arguments and before valid
734
734
 
735
735
  #### Results
736
736
 
737
- | Name | Type | Description |
738
- | ---------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------- |
739
- | subcommand | `string \| undefined` | The name of the executed subcommand. |
740
- | `[optionName: string]` | `unknown` | Validated options for the CLI/subcommand. |
741
- | arguments | `unknown[] \| undefined` | Validated arguments for the CLI/subcommand. |
742
- | positional | `string[] \| undefined` | Positional array for the CLI/subcommand. |
743
- | printCliHelp | `(style?: HelpMessageStyle) => void` | Prints the CLI help message. See [HelpMessageStyle](#helpmsgstyle) |
744
- | printSubcommandHelp | `(subcommand: string, style?: HelpMessageStyle) => void` | Prints the help message for a specified subcommand. See [HelpMessageStyle](#helpmsgstyle) |
737
+ | Name | Type | Description |
738
+ | ------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
739
+ | subcommand | `string \| undefined` | The name of the executed subcommand. |
740
+ | options | `{ [OptionName: string]: unknown }` | Validated options for the CLI/subcommand. |
741
+ | arguments | `unknown[] \| undefined` | Validated arguments for the CLI/subcommand. |
742
+ | positional | `string[] \| undefined` | Positional array for the CLI/subcommand. |
743
+ | printCliHelp | `(style?: HelpMessageStyle) => void` | Prints the CLI help message. See [HelpMessageStyle](#helpmsgstyle) |
744
+ | printSubcommandHelp | `(subcommand: string, style?: HelpMessageStyle) => void` | Prints the help message for a specified subcommand. See [HelpMessageStyle](#helpmsgstyle) |
745
745
 
746
746
  #### HelpMessageStyle
747
747
 
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.parse=parse;var _utilities=require("../../utilities.cjs");var _zodUtilities=require("../../zod-utilities.cjs");var _parserHelpers=require("./parser-helpers.cjs");function parse(argv,...parameters){const subcommandArray=parameters;const allSubcommands=new Set(subcommandArray.flatMap(c=>[c.name,...(c.aliases||[])]));argv=(0,_parserHelpers.decoupleFlags)(argv);const results={subcommand:undefined,options:{}};const getSubcommandObject=()=>(0,_parserHelpers.findSubcommand)(results.subcommand,subcommandArray);for(let index=0;index<argv.length;index++){const argument_=argv[index];if(index===0){results.subcommand=allSubcommands.has(argument_)?argument_:undefined;const subcommandObject=getSubcommandObject();if(subcommandObject&&subcommandObject.allowPositional){results.positional=[]}if(subcommandObject&&subcommandObject.arguments?.length){results.arguments=[]}if(results.subcommand)continue}const argumentAndValue=argument_.split("=").filter(Boolean);const argumentWithEquals=argument_.includes("=");const argument=argumentAndValue[0];const argumentValue=argumentAndValue[1];if((0,_parserHelpers.isOptionArgument)(argument)){if((0,_parserHelpers.isFlagArgument)(argument)&&argumentWithEquals){throw new Error(`Flag arguments cannot be assigned using "=": "${argument_}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(!subcommandObject.options){if(!results.subcommand){throw new Error(`Error: options are not allowed here: "${argument}"`,{cause:"zod-args-parser"})}throw new Error(`Error: subcommand "${results.subcommand}" does not allow options: "${argument}"`,{cause:"zod-args-parser"})}const option=(0,_parserHelpers.findOption)(argument,subcommandObject.options);if(!option){throw new Error(`Unknown option: "${argument}"`,{cause:"zod-args-parser"})}if(option.name in results.options){throw new Error(`Duplicated option: "${argument}"`,{cause:"zod-args-parser"})}const isTypeBoolean=(0,_zodUtilities.isBooleanSchema)(option.type);const nextArgument=argv[index+1];let optionValue=argumentWithEquals?argumentValue:nextArgument;if(isTypeBoolean&&!argumentWithEquals){optionValue="true"}if(optionValue===undefined){throw new Error(`Expected a value for "${argument}" but got nothing`,{cause:"zod-args-parser"})}if(!argumentWithEquals&&(0,_parserHelpers.isOptionArgument)(optionValue)){throw new Error(`Expected a value for "${argument}" but got an argument "${nextArgument}"`,{cause:"zod-args-parser"})}results.options[option.name]={name:option.name,schema:option.type,flag:argument,rawValue:optionValue.toString(),source:"cli"};if(!argumentWithEquals&&!isTypeBoolean){index++}continue}const subcommandObject=getSubcommandObject();if(subcommandObject?.arguments?.length){if(!results.arguments){results.arguments=[]}const currentArgumentCount=results.arguments.length;if(currentArgumentCount<subcommandObject.arguments.length){const argumentType=subcommandObject.arguments[currentArgumentCount].type;results.arguments.push({schema:argumentType,rawValue:argument_,source:"cli"});continue}}if(subcommandObject?.allowPositional){if(!results.positional){results.positional=[]}results.positional.push(argument_);continue}if(!results.subcommand){throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed here`,{cause:"zod-args-parser"})}throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed for subcommand "${results.subcommand}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(subcommandObject.options?.length){for(const option of subcommandObject.options){if(option.name in results.options)continue;const optional=(0,_zodUtilities.isOptionalSchema)(option.type);const defaultValue=(0,_zodUtilities.schemaDefaultValue)(option.type);if(optional){if(defaultValue===undefined){continue}results.options[option.name]={name:option.name,schema:option.type,source:"default"};continue}throw new Error(`Missing required option: ${(0,_parserHelpers.transformOptionToArgument)(option.name)}`,{cause:"zod-args-parser"})}}if(subcommandObject.arguments?.length){const currentArgumentCount=results.arguments?.length??0;const subcommandArgumentCount=subcommandObject.arguments.length;if(currentArgumentCount<subcommandArgumentCount){for(let index=currentArgumentCount;index<subcommandArgumentCount;index++){const argumentType=subcommandObject.arguments[index].type;const optional=(0,_zodUtilities.isOptionalSchema)(argumentType);const defaultValue=(0,_zodUtilities.schemaDefaultValue)(argumentType);if(optional){if(defaultValue===undefined){continue}if(!results.arguments)results.arguments=[];results.arguments.push({schema:argumentType,source:"default"});continue}throw new Error(`the ${(0,_utilities.generateOrdinalSuffix)(index)} argument is required: "${subcommandObject.arguments[index].name}"`,{cause:"zod-args-parser"})}}}return results}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.parse=parse;var _utilities=require("../../utilities.cjs");var _zodUtilities=require("../../zod-utilities.cjs");var _parserHelpers=require("./parser-helpers.cjs");function parse(argv,...parameters){const subcommandArray=parameters;const allSubcommands=new Set(subcommandArray.flatMap(c=>[c.name,...(c.aliases||[])]));argv=(0,_parserHelpers.decoupleFlags)(argv);const results={subcommand:undefined};const getSubcommandObject=()=>(0,_parserHelpers.findSubcommand)(results.subcommand,subcommandArray);for(let index=0;index<argv.length;index++){const argument_=argv[index];if(index===0){results.subcommand=allSubcommands.has(argument_)?argument_:undefined;if(results.subcommand)continue}const argumentAndValue=argument_.split("=").filter(Boolean);const argumentWithEquals=argument_.includes("=");const argument=argumentAndValue[0];const argumentValue=argumentAndValue[1];if((0,_parserHelpers.isOptionArgument)(argument)){if((0,_parserHelpers.isFlagArgument)(argument)&&argumentWithEquals){throw new Error(`Flag arguments cannot be assigned using "=": "${argument_}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(!subcommandObject.options){if(!results.subcommand){throw new Error(`Error: options are not allowed here: "${argument}"`,{cause:"zod-args-parser"})}throw new Error(`Error: subcommand "${results.subcommand}" does not allow options: "${argument}"`,{cause:"zod-args-parser"})}const option=(0,_parserHelpers.findOption)(argument,subcommandObject.options);if(!option){throw new Error(`Unknown option: "${argument}"`,{cause:"zod-args-parser"})}if(results.options&&option.name in results.options){throw new Error(`Duplicated option: "${argument}"`,{cause:"zod-args-parser"})}const isTypeBoolean=(0,_zodUtilities.isBooleanSchema)(option.type);const nextArgument=argv[index+1];let optionValue=argumentWithEquals?argumentValue:nextArgument;if(isTypeBoolean&&!argumentWithEquals){optionValue="true"}if(optionValue===undefined){throw new Error(`Expected a value for "${argument}" but got nothing`,{cause:"zod-args-parser"})}if(!argumentWithEquals&&(0,_parserHelpers.isOptionArgument)(optionValue)){throw new Error(`Expected a value for "${argument}" but got an argument "${nextArgument}"`,{cause:"zod-args-parser"})}if(!results.options){results.options={}}results.options[option.name]={name:option.name,schema:option.type,flag:argument,rawValue:optionValue.toString(),source:"cli"};if(!argumentWithEquals&&!isTypeBoolean){index++}continue}const subcommandObject=getSubcommandObject();if(subcommandObject?.arguments){if(!results.arguments){results.arguments=[]}const currentArgumentCount=results.arguments.length;if(currentArgumentCount<subcommandObject.arguments.length){const argumentType=subcommandObject.arguments[currentArgumentCount].type;results.arguments.push({schema:argumentType,rawValue:argument_,source:"cli"});continue}}if(subcommandObject?.allowPositional){if(!results.positional){results.positional=[]}results.positional.push(argument_);continue}if(!results.subcommand){throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed here`,{cause:"zod-args-parser"})}throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed for subcommand "${results.subcommand}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(subcommandObject.options){if(!results.options){results.options={}}for(const option of subcommandObject.options){if(results.options&&option.name in results.options)continue;const optional=(0,_zodUtilities.isOptionalSchema)(option.type);const defaultValue=(0,_zodUtilities.schemaDefaultValue)(option.type);if(optional){if(defaultValue===undefined){continue}results.options[option.name]={name:option.name,schema:option.type,source:"default"};continue}throw new Error(`Missing required option: ${(0,_parserHelpers.transformOptionToArgument)(option.name)}`,{cause:"zod-args-parser"})}}if(subcommandObject.arguments){if(!results.arguments){results.arguments=[]}const currentArgumentCount=results.arguments.length??0;const subcommandArgumentCount=subcommandObject.arguments.length;if(currentArgumentCount<subcommandArgumentCount){for(let index=currentArgumentCount;index<subcommandArgumentCount;index++){const argumentType=subcommandObject.arguments[index].type;const optional=(0,_zodUtilities.isOptionalSchema)(argumentType);const defaultValue=(0,_zodUtilities.schemaDefaultValue)(argumentType);if(optional){if(defaultValue===undefined){continue}if(!results.arguments)results.arguments=[];results.arguments.push({schema:argumentType,source:"default"});continue}throw new Error(`the ${(0,_utilities.generateOrdinalSuffix)(index)} argument is required: "${subcommandObject.arguments[index].name}"`,{cause:"zod-args-parser"})}}}if(subcommandObject.allowPositional&&!results.positional){results.positional=[]}return results}
@@ -1 +1 @@
1
- {"version":3,"names":["_utilities","require","_zodUtilities","_parserHelpers","parse","argv","parameters","subcommandArray","allSubcommands","Set","flatMap","c","name","aliases","decoupleFlags","results","subcommand","undefined","options","getSubcommandObject","findSubcommand","index","length","argument_","has","subcommandObject","allowPositional","positional","arguments","argumentAndValue","split","filter","Boolean","argumentWithEquals","includes","argument","argumentValue","isOptionArgument","isFlagArgument","Error","cause","option","findOption","isTypeBoolean","isBooleanSchema","type","nextArgument","optionValue","schema","flag","rawValue","toString","source","currentArgumentCount","argumentType","push","optional","isOptionalSchema","defaultValue","schemaDefaultValue","transformOptionToArgument","subcommandArgumentCount","generateOrdinalSuffix"],"sourceRoot":"../../../../src/parser/parse","sources":["parse.ts"],"sourcesContent":["import { generateOrdinalSuffix } from \"../../utilities.js\";\nimport { isBooleanSchema, isOptionalSchema, schemaDefaultValue } from \"../../zod-utilities.js\";\nimport {\n decoupleFlags,\n findOption,\n findSubcommand,\n isFlagArgument,\n isOptionArgument,\n transformOptionToArgument,\n} from \"./parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../../types.js\";\nimport type { ParsedContext } from \"./parse-types.js\";\n\nexport function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {\n const subcommandArray = parameters as Subcommand[];\n const allSubcommands = new Set<string>(subcommandArray.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n argv = decoupleFlags(argv); // decouple flags E.g. `-rf` -> `-r, -f`\n\n const results: ParsedContext = {\n subcommand: undefined,\n options: {},\n };\n\n /** - Get current subcommand object */\n const getSubcommandObject = () => findSubcommand(results.subcommand, subcommandArray);\n\n for (let index = 0; index < argv.length; index++) {\n const argument_ = argv[index];\n\n // * Subcommand check\n if (index === 0) {\n results.subcommand = allSubcommands.has(argument_) ? argument_ : undefined;\n\n // add positional and arguments arrays\n const subcommandObject = getSubcommandObject();\n if (subcommandObject && subcommandObject.allowPositional) {\n results.positional = [];\n }\n\n if (subcommandObject && subcommandObject.arguments?.length) {\n results.arguments = [];\n }\n\n // First argument is a subcommand. Skip to the next argument\n if (results.subcommand) continue;\n }\n\n // * Option check\n\n // Check for `--option=value` or `--option value`\n const argumentAndValue = argument_.split(\"=\").filter(Boolean);\n const argumentWithEquals = argument_.includes(\"=\");\n const argument = argumentAndValue[0];\n const argumentValue: string | undefined = argumentAndValue[1];\n\n if (isOptionArgument(argument)) {\n if (isFlagArgument(argument) && argumentWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${argument_}\"`, { cause: \"zod-args-parser\" });\n }\n\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (!subcommandObject.options) {\n if (!results.subcommand) {\n throw new Error(`Error: options are not allowed here: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n throw new Error(`Error: subcommand \"${results.subcommand}\" does not allow options: \"${argument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n const option = findOption(argument, subcommandObject.options);\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (option.name in results.options) {\n throw new Error(`Duplicated option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArgument = argv[index + 1];\n\n let optionValue: string | boolean = argumentWithEquals ? argumentValue : nextArgument;\n\n // infer value for boolean options\n if (isTypeBoolean && !argumentWithEquals) {\n optionValue = \"true\";\n }\n\n if (optionValue === undefined) {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`, { cause: \"zod-args-parser\" });\n }\n\n if (!argumentWithEquals && isOptionArgument(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArgument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results.options[option.name] = {\n name: option.name,\n schema: option.type,\n flag: argument,\n rawValue: optionValue.toString(),\n source: \"cli\",\n };\n\n // Skip to the next argument if it is the current option’s value.\n if (!argumentWithEquals && !isTypeBoolean) {\n index++;\n }\n\n continue;\n }\n\n const subcommandObject = getSubcommandObject();\n\n // * Arguments check\n if (subcommandObject?.arguments?.length) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgumentCount = results.arguments.length;\n\n // Any extra arguments are possibly positional\n if (currentArgumentCount < subcommandObject.arguments.length) {\n const argumentType = subcommandObject.arguments[currentArgumentCount].type;\n results.arguments.push({\n schema: argumentType,\n rawValue: argument_,\n source: \"cli\",\n });\n continue;\n }\n }\n\n // * Positional check\n if (subcommandObject?.allowPositional) {\n if (!results.positional) {\n results.positional = [];\n }\n\n results.positional.push(argument_);\n continue;\n }\n\n // * Unexpected\n if (!results.subcommand) {\n throw new Error(`Unexpected argument \"${argument_}\": positional arguments are not allowed here`, {\n cause: \"zod-args-parser\",\n });\n }\n\n throw new Error(\n `Unexpected argument \"${argument_}\": positional arguments are not allowed for subcommand \"${results.subcommand}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n // * Check for missing options - set defaults - add `source`\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n // Options\n if (subcommandObject.options?.length) {\n for (const option of subcommandObject.options) {\n // option already exists\n if (option.name in results.options) continue;\n\n const optional = isOptionalSchema(option.type);\n const defaultValue = schemaDefaultValue(option.type);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n results.options[option.name] = { name: option.name, schema: option.type, source: \"default\" };\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArgument(option.name)}`, {\n cause: \"zod-args-parser\",\n });\n }\n }\n\n // Arguments\n if (subcommandObject.arguments?.length) {\n const currentArgumentCount = results.arguments?.length ?? 0;\n const subcommandArgumentCount = subcommandObject.arguments.length;\n\n // missing arguments\n if (currentArgumentCount < subcommandArgumentCount) {\n for (let index = currentArgumentCount; index < subcommandArgumentCount; index++) {\n const argumentType = subcommandObject.arguments[index].type;\n const optional = isOptionalSchema(argumentType);\n const defaultValue = schemaDefaultValue(argumentType);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n if (!results.arguments) results.arguments = [];\n\n results.arguments.push({ schema: argumentType, source: \"default\" });\n continue;\n }\n\n throw new Error(\n `the ${generateOrdinalSuffix(index)} argument is required: \"${subcommandObject.arguments[index].name}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n }\n }\n\n return results;\n}\n"],"mappings":"0FAAA,IAAAA,UAAA,CAAAC,OAAA,wBACA,IAAAC,aAAA,CAAAD,OAAA,4BACA,IAAAE,cAAA,CAAAF,OAAA,yBAYO,QAAS,CAAAG,KAAKA,CAACC,IAAc,CAAE,GAAGC,UAAkC,CAAE,CAC3E,KAAM,CAAAC,eAAe,CAAGD,UAA0B,CAClD,KAAM,CAAAE,cAAc,CAAG,GAAI,CAAAC,GAAG,CAASF,eAAe,CAACG,OAAO,CAACC,CAAC,EAAI,CAACA,CAAC,CAACC,IAAI,CAAE,IAAID,CAAC,CAACE,OAAO,EAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAEpGR,IAAI,CAAG,GAAAS,4BAAa,EAACT,IAAI,CAAC,CAE1B,KAAM,CAAAU,OAAsB,CAAG,CAC7BC,UAAU,CAAEC,SAAS,CACrBC,OAAO,CAAE,CAAC,CACZ,CAAC,CAGD,KAAM,CAAAC,mBAAmB,CAAGA,CAAA,GAAM,GAAAC,6BAAc,EAACL,OAAO,CAACC,UAAU,CAAET,eAAe,CAAC,CAErF,IAAK,GAAI,CAAAc,KAAK,CAAG,CAAC,CAAEA,KAAK,CAAGhB,IAAI,CAACiB,MAAM,CAAED,KAAK,EAAE,CAAE,CAChD,KAAM,CAAAE,SAAS,CAAGlB,IAAI,CAACgB,KAAK,CAAC,CAG7B,GAAIA,KAAK,GAAK,CAAC,CAAE,CACfN,OAAO,CAACC,UAAU,CAAGR,cAAc,CAACgB,GAAG,CAACD,SAAS,CAAC,CAAGA,SAAS,CAAGN,SAAS,CAG1E,KAAM,CAAAQ,gBAAgB,CAAGN,mBAAmB,CAAC,CAAC,CAC9C,GAAIM,gBAAgB,EAAIA,gBAAgB,CAACC,eAAe,CAAE,CACxDX,OAAO,CAACY,UAAU,CAAG,EACvB,CAEA,GAAIF,gBAAgB,EAAIA,gBAAgB,CAACG,SAAS,EAAEN,MAAM,CAAE,CAC1DP,OAAO,CAACa,SAAS,CAAG,EACtB,CAGA,GAAIb,OAAO,CAACC,UAAU,CAAE,QAC1B,CAKA,KAAM,CAAAa,gBAAgB,CAAGN,SAAS,CAACO,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAC7D,KAAM,CAAAC,kBAAkB,CAAGV,SAAS,CAACW,QAAQ,CAAC,GAAG,CAAC,CAClD,KAAM,CAAAC,QAAQ,CAAGN,gBAAgB,CAAC,CAAC,CAAC,CACpC,KAAM,CAAAO,aAAiC,CAAGP,gBAAgB,CAAC,CAAC,CAAC,CAE7D,GAAI,GAAAQ,+BAAgB,EAACF,QAAQ,CAAC,CAAE,CAC9B,GAAI,GAAAG,6BAAc,EAACH,QAAQ,CAAC,EAAIF,kBAAkB,CAAE,CAClD,KAAM,IAAI,CAAAM,KAAK,CAAC,iDAAiDhB,SAAS,GAAG,CAAE,CAAEiB,KAAK,CAAE,iBAAkB,CAAC,CAC7G,CAEA,KAAM,CAAAf,gBAAgB,CAAGN,mBAAmB,CAAC,CAAC,CAC9C,GAAI,CAACM,gBAAgB,CAAE,CACrB,KAAM,IAAI,CAAAc,KAAK,CAAC,wBAAwBxB,OAAO,CAACC,UAAU,GAAG,CAAE,CAAEwB,KAAK,CAAE,iBAAkB,CAAC,CAC7F,CAEA,GAAI,CAACf,gBAAgB,CAACP,OAAO,CAAE,CAC7B,GAAI,CAACH,OAAO,CAACC,UAAU,CAAE,CACvB,KAAM,IAAI,CAAAuB,KAAK,CAAC,yCAAyCJ,QAAQ,GAAG,CAAE,CAAEK,KAAK,CAAE,iBAAkB,CAAC,CACpG,CAEA,KAAM,IAAI,CAAAD,KAAK,CAAC,sBAAsBxB,OAAO,CAACC,UAAU,8BAA8BmB,QAAQ,GAAG,CAAE,CACjGK,KAAK,CAAE,iBACT,CAAC,CACH,CAEA,KAAM,CAAAC,MAAM,CAAG,GAAAC,yBAAU,EAACP,QAAQ,CAAEV,gBAAgB,CAACP,OAAO,CAAC,CAC7D,GAAI,CAACuB,MAAM,CAAE,CACX,KAAM,IAAI,CAAAF,KAAK,CAAC,oBAAoBJ,QAAQ,GAAG,CAAE,CAAEK,KAAK,CAAE,iBAAkB,CAAC,CAC/E,CAEA,GAAIC,MAAM,CAAC7B,IAAI,GAAI,CAAAG,OAAO,CAACG,OAAO,CAAE,CAClC,KAAM,IAAI,CAAAqB,KAAK,CAAC,uBAAuBJ,QAAQ,GAAG,CAAE,CAAEK,KAAK,CAAE,iBAAkB,CAAC,CAClF,CAEA,KAAM,CAAAG,aAAa,CAAG,GAAAC,6BAAe,EAACH,MAAM,CAACI,IAAI,CAAC,CAClD,KAAM,CAAAC,YAAY,CAAGzC,IAAI,CAACgB,KAAK,CAAG,CAAC,CAAC,CAEpC,GAAI,CAAA0B,WAA6B,CAAGd,kBAAkB,CAAGG,aAAa,CAAGU,YAAY,CAGrF,GAAIH,aAAa,EAAI,CAACV,kBAAkB,CAAE,CACxCc,WAAW,CAAG,MAChB,CAEA,GAAIA,WAAW,GAAK9B,SAAS,CAAE,CAC7B,KAAM,IAAI,CAAAsB,KAAK,CAAC,yBAAyBJ,QAAQ,mBAAmB,CAAE,CAAEK,KAAK,CAAE,iBAAkB,CAAC,CACpG,CAEA,GAAI,CAACP,kBAAkB,EAAI,GAAAI,+BAAgB,EAACU,WAAW,CAAC,CAAE,CACxD,KAAM,IAAI,CAAAR,KAAK,CAAC,yBAAyBJ,QAAQ,0BAA0BW,YAAY,GAAG,CAAE,CAC1FN,KAAK,CAAE,iBACT,CAAC,CACH,CAEAzB,OAAO,CAACG,OAAO,CAACuB,MAAM,CAAC7B,IAAI,CAAC,CAAG,CAC7BA,IAAI,CAAE6B,MAAM,CAAC7B,IAAI,CACjBoC,MAAM,CAAEP,MAAM,CAACI,IAAI,CACnBI,IAAI,CAAEd,QAAQ,CACde,QAAQ,CAAEH,WAAW,CAACI,QAAQ,CAAC,CAAC,CAChCC,MAAM,CAAE,KACV,CAAC,CAGD,GAAI,CAACnB,kBAAkB,EAAI,CAACU,aAAa,CAAE,CACzCtB,KAAK,EACP,CAEA,QACF,CAEA,KAAM,CAAAI,gBAAgB,CAAGN,mBAAmB,CAAC,CAAC,CAG9C,GAAIM,gBAAgB,EAAEG,SAAS,EAAEN,MAAM,CAAE,CACvC,GAAI,CAACP,OAAO,CAACa,SAAS,CAAE,CACtBb,OAAO,CAACa,SAAS,CAAG,EACtB,CAEA,KAAM,CAAAyB,oBAAoB,CAAGtC,OAAO,CAACa,SAAS,CAACN,MAAM,CAGrD,GAAI+B,oBAAoB,CAAG5B,gBAAgB,CAACG,SAAS,CAACN,MAAM,CAAE,CAC5D,KAAM,CAAAgC,YAAY,CAAG7B,gBAAgB,CAACG,SAAS,CAACyB,oBAAoB,CAAC,CAACR,IAAI,CAC1E9B,OAAO,CAACa,SAAS,CAAC2B,IAAI,CAAC,CACrBP,MAAM,CAAEM,YAAY,CACpBJ,QAAQ,CAAE3B,SAAS,CACnB6B,MAAM,CAAE,KACV,CAAC,CAAC,CACF,QACF,CACF,CAGA,GAAI3B,gBAAgB,EAAEC,eAAe,CAAE,CACrC,GAAI,CAACX,OAAO,CAACY,UAAU,CAAE,CACvBZ,OAAO,CAACY,UAAU,CAAG,EACvB,CAEAZ,OAAO,CAACY,UAAU,CAAC4B,IAAI,CAAChC,SAAS,CAAC,CAClC,QACF,CAGA,GAAI,CAACR,OAAO,CAACC,UAAU,CAAE,CACvB,KAAM,IAAI,CAAAuB,KAAK,CAAC,wBAAwBhB,SAAS,8CAA8C,CAAE,CAC/FiB,KAAK,CAAE,iBACT,CAAC,CACH,CAEA,KAAM,IAAI,CAAAD,KAAK,CACb,wBAAwBhB,SAAS,2DAA2DR,OAAO,CAACC,UAAU,GAAG,CACjH,CAAEwB,KAAK,CAAE,iBAAkB,CAC7B,CACF,CAGA,KAAM,CAAAf,gBAAgB,CAAGN,mBAAmB,CAAC,CAAC,CAC9C,GAAI,CAACM,gBAAgB,CAAE,CACrB,KAAM,IAAI,CAAAc,KAAK,CAAC,wBAAwBxB,OAAO,CAACC,UAAU,GAAG,CAAE,CAAEwB,KAAK,CAAE,iBAAkB,CAAC,CAC7F,CAGA,GAAIf,gBAAgB,CAACP,OAAO,EAAEI,MAAM,CAAE,CACpC,IAAK,KAAM,CAAAmB,MAAM,GAAI,CAAAhB,gBAAgB,CAACP,OAAO,CAAE,CAE7C,GAAIuB,MAAM,CAAC7B,IAAI,GAAI,CAAAG,OAAO,CAACG,OAAO,CAAE,SAEpC,KAAM,CAAAsC,QAAQ,CAAG,GAAAC,8BAAgB,EAAChB,MAAM,CAACI,IAAI,CAAC,CAC9C,KAAM,CAAAa,YAAY,CAAG,GAAAC,gCAAkB,EAAClB,MAAM,CAACI,IAAI,CAAC,CAEpD,GAAIW,QAAQ,CAAE,CACZ,GAAIE,YAAY,GAAKzC,SAAS,CAAE,CAC9B,QACF,CAEAF,OAAO,CAACG,OAAO,CAACuB,MAAM,CAAC7B,IAAI,CAAC,CAAG,CAAEA,IAAI,CAAE6B,MAAM,CAAC7B,IAAI,CAAEoC,MAAM,CAAEP,MAAM,CAACI,IAAI,CAAEO,MAAM,CAAE,SAAU,CAAC,CAC5F,QACF,CAEA,KAAM,IAAI,CAAAb,KAAK,CAAC,4BAA4B,GAAAqB,wCAAyB,EAACnB,MAAM,CAAC7B,IAAI,CAAC,EAAE,CAAE,CACpF4B,KAAK,CAAE,iBACT,CAAC,CACH,CACF,CAGA,GAAIf,gBAAgB,CAACG,SAAS,EAAEN,MAAM,CAAE,CACtC,KAAM,CAAA+B,oBAAoB,CAAGtC,OAAO,CAACa,SAAS,EAAEN,MAAM,EAAI,CAAC,CAC3D,KAAM,CAAAuC,uBAAuB,CAAGpC,gBAAgB,CAACG,SAAS,CAACN,MAAM,CAGjE,GAAI+B,oBAAoB,CAAGQ,uBAAuB,CAAE,CAClD,IAAK,GAAI,CAAAxC,KAAK,CAAGgC,oBAAoB,CAAEhC,KAAK,CAAGwC,uBAAuB,CAAExC,KAAK,EAAE,CAAE,CAC/E,KAAM,CAAAiC,YAAY,CAAG7B,gBAAgB,CAACG,SAAS,CAACP,KAAK,CAAC,CAACwB,IAAI,CAC3D,KAAM,CAAAW,QAAQ,CAAG,GAAAC,8BAAgB,EAACH,YAAY,CAAC,CAC/C,KAAM,CAAAI,YAAY,CAAG,GAAAC,gCAAkB,EAACL,YAAY,CAAC,CAErD,GAAIE,QAAQ,CAAE,CACZ,GAAIE,YAAY,GAAKzC,SAAS,CAAE,CAC9B,QACF,CAEA,GAAI,CAACF,OAAO,CAACa,SAAS,CAAEb,OAAO,CAACa,SAAS,CAAG,EAAE,CAE9Cb,OAAO,CAACa,SAAS,CAAC2B,IAAI,CAAC,CAAEP,MAAM,CAAEM,YAAY,CAAEF,MAAM,CAAE,SAAU,CAAC,CAAC,CACnE,QACF,CAEA,KAAM,IAAI,CAAAb,KAAK,CACb,OAAO,GAAAuB,gCAAqB,EAACzC,KAAK,CAAC,2BAA2BI,gBAAgB,CAACG,SAAS,CAACP,KAAK,CAAC,CAACT,IAAI,GAAG,CACvG,CAAE4B,KAAK,CAAE,iBAAkB,CAC7B,CACF,CACF,CACF,CAEA,MAAO,CAAAzB,OACT","ignoreList":[]}
1
+ {"version":3,"names":["_utilities","require","_zodUtilities","_parserHelpers","parse","argv","parameters","subcommandArray","allSubcommands","Set","flatMap","c","name","aliases","decoupleFlags","results","subcommand","undefined","getSubcommandObject","findSubcommand","index","length","argument_","has","argumentAndValue","split","filter","Boolean","argumentWithEquals","includes","argument","argumentValue","isOptionArgument","isFlagArgument","Error","cause","subcommandObject","options","option","findOption","isTypeBoolean","isBooleanSchema","type","nextArgument","optionValue","schema","flag","rawValue","toString","source","arguments","currentArgumentCount","argumentType","push","allowPositional","positional","optional","isOptionalSchema","defaultValue","schemaDefaultValue","transformOptionToArgument","subcommandArgumentCount","generateOrdinalSuffix"],"sourceRoot":"../../../../src/parser/parse","sources":["parse.ts"],"sourcesContent":["import { generateOrdinalSuffix } from \"../../utilities.js\";\nimport { isBooleanSchema, isOptionalSchema, schemaDefaultValue } from \"../../zod-utilities.js\";\nimport {\n decoupleFlags,\n findOption,\n findSubcommand,\n isFlagArgument,\n isOptionArgument,\n transformOptionToArgument,\n} from \"./parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../../types.js\";\nimport type { ParsedContext } from \"./parse-types.js\";\n\nexport function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {\n const subcommandArray = parameters as Subcommand[];\n const allSubcommands = new Set<string>(subcommandArray.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n argv = decoupleFlags(argv); // decouple flags E.g. `-rf` -> `-r, -f`\n\n const results: ParsedContext = {\n subcommand: undefined,\n };\n\n /** - Get current subcommand object */\n const getSubcommandObject = () => findSubcommand(results.subcommand, subcommandArray);\n\n for (let index = 0; index < argv.length; index++) {\n const argument_ = argv[index];\n\n // * Subcommand check\n if (index === 0) {\n results.subcommand = allSubcommands.has(argument_) ? argument_ : undefined;\n\n // First argument is a subcommand. Skip to the next argument\n if (results.subcommand) continue;\n }\n\n // * Option check\n\n // Check for `--option=value` or `--option value`\n const argumentAndValue = argument_.split(\"=\").filter(Boolean);\n const argumentWithEquals = argument_.includes(\"=\");\n const argument = argumentAndValue[0];\n const argumentValue: string | undefined = argumentAndValue[1];\n\n if (isOptionArgument(argument)) {\n if (isFlagArgument(argument) && argumentWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${argument_}\"`, { cause: \"zod-args-parser\" });\n }\n\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (!subcommandObject.options) {\n if (!results.subcommand) {\n throw new Error(`Error: options are not allowed here: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n throw new Error(`Error: subcommand \"${results.subcommand}\" does not allow options: \"${argument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n const option = findOption(argument, subcommandObject.options);\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (results.options && option.name in results.options) {\n throw new Error(`Duplicated option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArgument = argv[index + 1];\n\n let optionValue: string | boolean = argumentWithEquals ? argumentValue : nextArgument;\n\n // infer value for boolean options\n if (isTypeBoolean && !argumentWithEquals) {\n optionValue = \"true\";\n }\n\n if (optionValue === undefined) {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`, { cause: \"zod-args-parser\" });\n }\n\n if (!argumentWithEquals && isOptionArgument(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArgument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n if (!results.options) {\n results.options = {};\n }\n\n results.options[option.name] = {\n name: option.name,\n schema: option.type,\n flag: argument,\n rawValue: optionValue.toString(),\n source: \"cli\",\n };\n\n // Skip to the next argument if it is the current option’s value.\n if (!argumentWithEquals && !isTypeBoolean) {\n index++;\n }\n\n continue;\n }\n\n const subcommandObject = getSubcommandObject();\n\n // * Arguments check\n if (subcommandObject?.arguments) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgumentCount = results.arguments.length;\n\n // Any extra arguments are possibly positional\n if (currentArgumentCount < subcommandObject.arguments.length) {\n const argumentType = subcommandObject.arguments[currentArgumentCount].type;\n results.arguments.push({\n schema: argumentType,\n rawValue: argument_,\n source: \"cli\",\n });\n continue;\n }\n }\n\n // * Positional check\n if (subcommandObject?.allowPositional) {\n if (!results.positional) {\n results.positional = [];\n }\n\n results.positional.push(argument_);\n continue;\n }\n\n // * Unexpected\n if (!results.subcommand) {\n throw new Error(`Unexpected argument \"${argument_}\": positional arguments are not allowed here`, {\n cause: \"zod-args-parser\",\n });\n }\n\n throw new Error(\n `Unexpected argument \"${argument_}\": positional arguments are not allowed for subcommand \"${results.subcommand}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n // * Check for missing options - set defaults - add `source`\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n // Options\n if (subcommandObject.options) {\n if (!results.options) {\n results.options = {};\n }\n\n for (const option of subcommandObject.options) {\n // option already exists\n if (results.options && option.name in results.options) continue;\n\n const optional = isOptionalSchema(option.type);\n const defaultValue = schemaDefaultValue(option.type);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n results.options[option.name] = { name: option.name, schema: option.type, source: \"default\" };\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArgument(option.name)}`, {\n cause: \"zod-args-parser\",\n });\n }\n }\n\n // Arguments\n if (subcommandObject.arguments) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgumentCount = results.arguments.length ?? 0;\n const subcommandArgumentCount = subcommandObject.arguments.length;\n\n // missing arguments\n if (currentArgumentCount < subcommandArgumentCount) {\n for (let index = currentArgumentCount; index < subcommandArgumentCount; index++) {\n const argumentType = subcommandObject.arguments[index].type;\n const optional = isOptionalSchema(argumentType);\n const defaultValue = schemaDefaultValue(argumentType);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n if (!results.arguments) results.arguments = [];\n\n results.arguments.push({ schema: argumentType, source: \"default\" });\n continue;\n }\n\n throw new Error(\n `the ${generateOrdinalSuffix(index)} argument is required: \"${subcommandObject.arguments[index].name}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n }\n }\n\n if (subcommandObject.allowPositional && !results.positional) {\n results.positional = [];\n }\n\n return results;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src/parser/validate","sources":["validate-type.ts"],"sourcesContent":["import type { Argument, Option, Prettify, Schema, Subcommand, ToOptional, ZodInferOutput } from \"../../types.js\";\nimport type { ParseResult } from \"../parse/parse-types.js\";\n\ntype OptionsArray2RecordType<T extends Option[] | undefined> = T extends Option[]\n ? ToOptional<{ [K in T[number][\"name\"]]: ZodInferOutput<Extract<T[number], { name: K }>[\"type\"]> }>\n : object;\n\ntype ArgumentsArray2ArrayType<T extends Argument[] | undefined> = T extends Argument[]\n ? { [K in keyof T]: T[K] extends { type: Schema } ? ZodInferOutput<T[K][\"type\"]> : never }\n : never;\n\nexport type ValidateResult<S extends Partial<Subcommand>[]> = {\n [K in keyof S]: Prettify<\n {\n subcommand: S[K][\"name\"] extends string ? S[K][\"name\"] : undefined;\n arguments: ArgumentsArray2ArrayType<S[K][\"arguments\"]>;\n positional: S[K][\"allowPositional\"] extends true ? string[] : never;\n ctx: ParseResult<S>;\n } & OptionsArray2RecordType<S[K][\"options\"]>\n >;\n}[number];\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src/parser/validate","sources":["validate-type.ts"],"sourcesContent":["import type { Argument, Option, Prettify, Schema, Subcommand, ToOptional, ZodInferOutput } from \"../../types.js\";\nimport type { ParseResult } from \"../parse/parse-types.js\";\n\ntype OptionsArray2RecordType<T extends Option[] | undefined> = T extends Option[]\n ? ToOptional<{ [K in T[number][\"name\"]]: ZodInferOutput<Extract<T[number], { name: K }>[\"type\"]> }>\n : object;\n\ntype ArgumentsArray2ArrayType<T extends Argument[] | undefined> = T extends Argument[]\n ? { [K in keyof T]: T[K] extends { type: Schema } ? ZodInferOutput<T[K][\"type\"]> : never }\n : never;\n\nexport type ValidateResult<S extends Partial<Subcommand>[]> = {\n [K in keyof S]: Prettify<{\n subcommand: S[K][\"name\"] extends string ? S[K][\"name\"] : undefined;\n arguments: ArgumentsArray2ArrayType<S[K][\"arguments\"]>;\n positional: S[K][\"allowPositional\"] extends true ? string[] : never;\n options: S[K][\"options\"] extends Option[] ? OptionsArray2RecordType<S[K][\"options\"]> : never;\n ctx: ParseResult<S>;\n }>;\n}[number];\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.validate=validate;var _core=require("zod/v4/core");var _utilities=require("../../utilities.cjs");var _zodUtilities=require("../../zod-utilities.cjs");function validate(parsedData){const results={subcommand:parsedData.subcommand,positional:parsedData.positional,ctx:parsedData};for(const[optionName,{schema,rawValue,flag}]of Object.entries(parsedData.options)){let optionsValue=rawValue;if(flag&&rawValue&&(0,_zodUtilities.isBooleanSchema)(schema)){const booleanValue=(0,_utilities.stringToBoolean)(rawValue);if(typeof booleanValue==="boolean"){const isNegated=flag.startsWith("--no");optionsValue=isNegated?!booleanValue:booleanValue}}const safeParseResult=(0,_zodUtilities.safeParseSchema)(schema,optionsValue);if(!safeParseResult.success){throw new Error(`Invalid value "${rawValue}" for "${flag}": ${(0,_core.prettifyError)(safeParseResult.error)}`,{cause:"zod-args-parser"})}results[optionName]=safeParseResult.data}if(parsedData.arguments){if(!results.arguments)results.arguments=[];for(const{schema,rawValue}of parsedData.arguments){const argumentValue=rawValue&&(0,_zodUtilities.isBooleanSchema)(schema)?(0,_utilities.stringToBoolean)(rawValue):rawValue;const safeParseResult=(0,_zodUtilities.safeParseSchema)(schema,argumentValue);if(!safeParseResult.success){throw new Error(`The ${(0,_utilities.generateOrdinalSuffix)(results.arguments.length)} argument "${rawValue}" is invalid: ${(0,_core.prettifyError)(safeParseResult.error)}`,{cause:"zod-args-parser"})}results.arguments.push(safeParseResult.data)}}return results}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.validate=validate;var _core=require("zod/v4/core");var _utilities=require("../../utilities.cjs");var _zodUtilities=require("../../zod-utilities.cjs");function validate(parsedData){const results={subcommand:parsedData.subcommand,positional:parsedData.positional,ctx:parsedData};if(parsedData.options){if(!results.options)results.options={};for(const[optionName,{schema,rawValue,flag}]of Object.entries(parsedData.options)){let optionsValue=rawValue;if(flag&&rawValue&&(0,_zodUtilities.isBooleanSchema)(schema)){const booleanValue=(0,_utilities.stringToBoolean)(rawValue);if(typeof booleanValue==="boolean"){const isNegated=flag.startsWith("--no");optionsValue=isNegated?!booleanValue:booleanValue}}const safeParseResult=(0,_zodUtilities.safeParseSchema)(schema,optionsValue);if(!safeParseResult.success){throw new Error(`Invalid value "${rawValue}" for "${flag}": ${(0,_core.prettifyError)(safeParseResult.error)}`,{cause:"zod-args-parser"})}results.options[optionName]=safeParseResult.data}}if(parsedData.arguments){if(!results.arguments)results.arguments=[];for(const{schema,rawValue}of parsedData.arguments){const argumentValue=rawValue&&(0,_zodUtilities.isBooleanSchema)(schema)?(0,_utilities.stringToBoolean)(rawValue):rawValue;const safeParseResult=(0,_zodUtilities.safeParseSchema)(schema,argumentValue);if(!safeParseResult.success){throw new Error(`The ${(0,_utilities.generateOrdinalSuffix)(results.arguments.length)} argument "${rawValue}" is invalid: ${(0,_core.prettifyError)(safeParseResult.error)}`,{cause:"zod-args-parser"})}results.arguments.push(safeParseResult.data)}}return results}
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_utilities","_zodUtilities","validate","parsedData","results","subcommand","positional","ctx","optionName","schema","rawValue","flag","Object","entries","options","optionsValue","isBooleanSchema","booleanValue","stringToBoolean","isNegated","startsWith","safeParseResult","safeParseSchema","success","Error","prettifyError","error","cause","data","arguments","argumentValue","generateOrdinalSuffix","length","push"],"sourceRoot":"../../../../src/parser/validate","sources":["validate.ts"],"sourcesContent":["import { prettifyError } from \"zod/v4/core\";\n\nimport { generateOrdinalSuffix, stringToBoolean } from \"../../utilities.js\";\nimport { isBooleanSchema, safeParseSchema } from \"../../zod-utilities.js\";\n\nimport type { ParsedContext } from \"../parse/parse-types.js\";\n\n/** The return result object temporarily type. used inside the `parse` function */\ntype ResultsTemporaryType = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n ctx: ParsedContext;\n};\n\nexport function validate(parsedData: ParsedContext) {\n const results: ResultsTemporaryType = {\n subcommand: parsedData.subcommand,\n positional: parsedData.positional,\n ctx: parsedData,\n };\n\n // validate options\n for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {\n let optionsValue: string | boolean | undefined = rawValue;\n\n // infer boolean value if possible\n if (flag && rawValue && isBooleanSchema(schema)) {\n const booleanValue = stringToBoolean(rawValue);\n if (typeof booleanValue === \"boolean\") {\n const isNegated = flag.startsWith(\"--no\");\n optionsValue = isNegated ? !booleanValue : booleanValue;\n }\n }\n\n const safeParseResult = safeParseSchema(schema, optionsValue);\n if (!safeParseResult.success) {\n throw new Error(`Invalid value \"${rawValue}\" for \"${flag}\": ${prettifyError(safeParseResult.error)}`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results[optionName] = safeParseResult.data;\n }\n\n // validate arguments\n if (parsedData.arguments) {\n if (!results.arguments) results.arguments = [];\n\n for (const { schema, rawValue } of parsedData.arguments) {\n const argumentValue = rawValue && isBooleanSchema(schema) ? stringToBoolean(rawValue) : rawValue;\n\n const safeParseResult = safeParseSchema(schema, argumentValue);\n if (!safeParseResult.success) {\n throw new Error(\n `The ${generateOrdinalSuffix(results.arguments.length)} argument \"${rawValue}\" is invalid: ${prettifyError(safeParseResult.error)}`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n results.arguments.push(safeParseResult.data);\n }\n }\n\n return results;\n}\n"],"mappings":"gGAAA,IAAAA,KAAA,CAAAC,OAAA,gBAEA,IAAAC,UAAA,CAAAD,OAAA,wBACA,IAAAE,aAAA,CAAAF,OAAA,4BAYO,QAAS,CAAAG,QAAQA,CAACC,UAAyB,CAAE,CAClD,KAAM,CAAAC,OAA6B,CAAG,CACpCC,UAAU,CAAEF,UAAU,CAACE,UAAU,CACjCC,UAAU,CAAEH,UAAU,CAACG,UAAU,CACjCC,GAAG,CAAEJ,UACP,CAAC,CAGD,IAAK,KAAM,CAACK,UAAU,CAAE,CAAEC,MAAM,CAAEC,QAAQ,CAAEC,IAAK,CAAC,CAAC,EAAI,CAAAC,MAAM,CAACC,OAAO,CAACV,UAAU,CAACW,OAAO,CAAC,CAAE,CACzF,GAAI,CAAAC,YAA0C,CAAGL,QAAQ,CAGzD,GAAIC,IAAI,EAAID,QAAQ,EAAI,GAAAM,6BAAe,EAACP,MAAM,CAAC,CAAE,CAC/C,KAAM,CAAAQ,YAAY,CAAG,GAAAC,0BAAe,EAACR,QAAQ,CAAC,CAC9C,GAAI,MAAO,CAAAO,YAAY,GAAK,SAAS,CAAE,CACrC,KAAM,CAAAE,SAAS,CAAGR,IAAI,CAACS,UAAU,CAAC,MAAM,CAAC,CACzCL,YAAY,CAAGI,SAAS,CAAG,CAACF,YAAY,CAAGA,YAC7C,CACF,CAEA,KAAM,CAAAI,eAAe,CAAG,GAAAC,6BAAe,EAACb,MAAM,CAAEM,YAAY,CAAC,CAC7D,GAAI,CAACM,eAAe,CAACE,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CAAC,kBAAkBd,QAAQ,UAAUC,IAAI,MAAM,GAAAc,mBAAa,EAACJ,eAAe,CAACK,KAAK,CAAC,EAAE,CAAE,CACpGC,KAAK,CAAE,iBACT,CAAC,CACH,CAEAvB,OAAO,CAACI,UAAU,CAAC,CAAGa,eAAe,CAACO,IACxC,CAGA,GAAIzB,UAAU,CAAC0B,SAAS,CAAE,CACxB,GAAI,CAACzB,OAAO,CAACyB,SAAS,CAAEzB,OAAO,CAACyB,SAAS,CAAG,EAAE,CAE9C,IAAK,KAAM,CAAEpB,MAAM,CAAEC,QAAS,CAAC,EAAI,CAAAP,UAAU,CAAC0B,SAAS,CAAE,CACvD,KAAM,CAAAC,aAAa,CAAGpB,QAAQ,EAAI,GAAAM,6BAAe,EAACP,MAAM,CAAC,CAAG,GAAAS,0BAAe,EAACR,QAAQ,CAAC,CAAGA,QAAQ,CAEhG,KAAM,CAAAW,eAAe,CAAG,GAAAC,6BAAe,EAACb,MAAM,CAAEqB,aAAa,CAAC,CAC9D,GAAI,CAACT,eAAe,CAACE,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CACb,OAAO,GAAAO,gCAAqB,EAAC3B,OAAO,CAACyB,SAAS,CAACG,MAAM,CAAC,cAActB,QAAQ,iBAAiB,GAAAe,mBAAa,EAACJ,eAAe,CAACK,KAAK,CAAC,EAAE,CACnI,CAAEC,KAAK,CAAE,iBAAkB,CAC7B,CACF,CAEAvB,OAAO,CAACyB,SAAS,CAACI,IAAI,CAACZ,eAAe,CAACO,IAAI,CAC7C,CACF,CAEA,MAAO,CAAAxB,OACT","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_utilities","_zodUtilities","validate","parsedData","results","subcommand","positional","ctx","options","optionName","schema","rawValue","flag","Object","entries","optionsValue","isBooleanSchema","booleanValue","stringToBoolean","isNegated","startsWith","safeParseResult","safeParseSchema","success","Error","prettifyError","error","cause","data","arguments","argumentValue","generateOrdinalSuffix","length","push"],"sourceRoot":"../../../../src/parser/validate","sources":["validate.ts"],"sourcesContent":["import { prettifyError } from \"zod/v4/core\";\n\nimport { generateOrdinalSuffix, stringToBoolean } from \"../../utilities.js\";\nimport { isBooleanSchema, safeParseSchema } from \"../../zod-utilities.js\";\n\nimport type { ParsedContext } from \"../parse/parse-types.js\";\n\n/** The return result object temporarily type. used inside the `parse` function */\ntype ResultsTemporaryType = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n options?: Record<string, unknown>;\n ctx: ParsedContext;\n};\n\nexport function validate(parsedData: ParsedContext) {\n const results: ResultsTemporaryType = {\n subcommand: parsedData.subcommand,\n positional: parsedData.positional,\n ctx: parsedData,\n };\n\n // validate options\n if (parsedData.options) {\n if (!results.options) results.options = {};\n\n for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {\n let optionsValue: string | boolean | undefined = rawValue;\n\n // infer boolean value if possible\n if (flag && rawValue && isBooleanSchema(schema)) {\n const booleanValue = stringToBoolean(rawValue);\n if (typeof booleanValue === \"boolean\") {\n const isNegated = flag.startsWith(\"--no\");\n optionsValue = isNegated ? !booleanValue : booleanValue;\n }\n }\n\n const safeParseResult = safeParseSchema(schema, optionsValue);\n if (!safeParseResult.success) {\n throw new Error(`Invalid value \"${rawValue}\" for \"${flag}\": ${prettifyError(safeParseResult.error)}`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results.options[optionName] = safeParseResult.data;\n }\n }\n\n // validate arguments\n if (parsedData.arguments) {\n if (!results.arguments) results.arguments = [];\n\n for (const { schema, rawValue } of parsedData.arguments) {\n const argumentValue = rawValue && isBooleanSchema(schema) ? stringToBoolean(rawValue) : rawValue;\n\n const safeParseResult = safeParseSchema(schema, argumentValue);\n if (!safeParseResult.success) {\n throw new Error(\n `The ${generateOrdinalSuffix(results.arguments.length)} argument \"${rawValue}\" is invalid: ${prettifyError(safeParseResult.error)}`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n results.arguments.push(safeParseResult.data);\n }\n }\n\n return results;\n}\n"],"mappings":"gGAAA,IAAAA,KAAA,CAAAC,OAAA,gBAEA,IAAAC,UAAA,CAAAD,OAAA,wBACA,IAAAE,aAAA,CAAAF,OAAA,4BAaO,QAAS,CAAAG,QAAQA,CAACC,UAAyB,CAAE,CAClD,KAAM,CAAAC,OAA6B,CAAG,CACpCC,UAAU,CAAEF,UAAU,CAACE,UAAU,CACjCC,UAAU,CAAEH,UAAU,CAACG,UAAU,CACjCC,GAAG,CAAEJ,UACP,CAAC,CAGD,GAAIA,UAAU,CAACK,OAAO,CAAE,CACtB,GAAI,CAACJ,OAAO,CAACI,OAAO,CAAEJ,OAAO,CAACI,OAAO,CAAG,CAAC,CAAC,CAE1C,IAAK,KAAM,CAACC,UAAU,CAAE,CAAEC,MAAM,CAAEC,QAAQ,CAAEC,IAAK,CAAC,CAAC,EAAI,CAAAC,MAAM,CAACC,OAAO,CAACX,UAAU,CAACK,OAAO,CAAC,CAAE,CACzF,GAAI,CAAAO,YAA0C,CAAGJ,QAAQ,CAGzD,GAAIC,IAAI,EAAID,QAAQ,EAAI,GAAAK,6BAAe,EAACN,MAAM,CAAC,CAAE,CAC/C,KAAM,CAAAO,YAAY,CAAG,GAAAC,0BAAe,EAACP,QAAQ,CAAC,CAC9C,GAAI,MAAO,CAAAM,YAAY,GAAK,SAAS,CAAE,CACrC,KAAM,CAAAE,SAAS,CAAGP,IAAI,CAACQ,UAAU,CAAC,MAAM,CAAC,CACzCL,YAAY,CAAGI,SAAS,CAAG,CAACF,YAAY,CAAGA,YAC7C,CACF,CAEA,KAAM,CAAAI,eAAe,CAAG,GAAAC,6BAAe,EAACZ,MAAM,CAAEK,YAAY,CAAC,CAC7D,GAAI,CAACM,eAAe,CAACE,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CAAC,kBAAkBb,QAAQ,UAAUC,IAAI,MAAM,GAAAa,mBAAa,EAACJ,eAAe,CAACK,KAAK,CAAC,EAAE,CAAE,CACpGC,KAAK,CAAE,iBACT,CAAC,CACH,CAEAvB,OAAO,CAACI,OAAO,CAACC,UAAU,CAAC,CAAGY,eAAe,CAACO,IAChD,CACF,CAGA,GAAIzB,UAAU,CAAC0B,SAAS,CAAE,CACxB,GAAI,CAACzB,OAAO,CAACyB,SAAS,CAAEzB,OAAO,CAACyB,SAAS,CAAG,EAAE,CAE9C,IAAK,KAAM,CAAEnB,MAAM,CAAEC,QAAS,CAAC,EAAI,CAAAR,UAAU,CAAC0B,SAAS,CAAE,CACvD,KAAM,CAAAC,aAAa,CAAGnB,QAAQ,EAAI,GAAAK,6BAAe,EAACN,MAAM,CAAC,CAAG,GAAAQ,0BAAe,EAACP,QAAQ,CAAC,CAAGA,QAAQ,CAEhG,KAAM,CAAAU,eAAe,CAAG,GAAAC,6BAAe,EAACZ,MAAM,CAAEoB,aAAa,CAAC,CAC9D,GAAI,CAACT,eAAe,CAACE,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CACb,OAAO,GAAAO,gCAAqB,EAAC3B,OAAO,CAACyB,SAAS,CAACG,MAAM,CAAC,cAAcrB,QAAQ,iBAAiB,GAAAc,mBAAa,EAACJ,eAAe,CAACK,KAAK,CAAC,EAAE,CACnI,CAAEC,KAAK,CAAE,iBAAkB,CAC7B,CACF,CAEAvB,OAAO,CAACyB,SAAS,CAACI,IAAI,CAACZ,eAAe,CAACO,IAAI,CAC7C,CACF,CAEA,MAAO,CAAAxB,OACT","ignoreList":[]}
@@ -1 +1 @@
1
- import{generateOrdinalSuffix}from"../../utilities.mjs";import{isBooleanSchema,isOptionalSchema,schemaDefaultValue}from"../../zod-utilities.mjs";import{decoupleFlags,findOption,findSubcommand,isFlagArgument,isOptionArgument,transformOptionToArgument}from"./parser-helpers.mjs";export function parse(argv,...parameters){const subcommandArray=parameters;const allSubcommands=new Set(subcommandArray.flatMap(c=>[c.name,...(c.aliases||[])]));argv=decoupleFlags(argv);const results={subcommand:undefined,options:{}};const getSubcommandObject=()=>findSubcommand(results.subcommand,subcommandArray);for(let index=0;index<argv.length;index++){const argument_=argv[index];if(index===0){results.subcommand=allSubcommands.has(argument_)?argument_:undefined;const subcommandObject=getSubcommandObject();if(subcommandObject&&subcommandObject.allowPositional){results.positional=[]}if(subcommandObject&&subcommandObject.arguments?.length){results.arguments=[]}if(results.subcommand)continue}const argumentAndValue=argument_.split("=").filter(Boolean);const argumentWithEquals=argument_.includes("=");const argument=argumentAndValue[0];const argumentValue=argumentAndValue[1];if(isOptionArgument(argument)){if(isFlagArgument(argument)&&argumentWithEquals){throw new Error(`Flag arguments cannot be assigned using "=": "${argument_}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(!subcommandObject.options){if(!results.subcommand){throw new Error(`Error: options are not allowed here: "${argument}"`,{cause:"zod-args-parser"})}throw new Error(`Error: subcommand "${results.subcommand}" does not allow options: "${argument}"`,{cause:"zod-args-parser"})}const option=findOption(argument,subcommandObject.options);if(!option){throw new Error(`Unknown option: "${argument}"`,{cause:"zod-args-parser"})}if(option.name in results.options){throw new Error(`Duplicated option: "${argument}"`,{cause:"zod-args-parser"})}const isTypeBoolean=isBooleanSchema(option.type);const nextArgument=argv[index+1];let optionValue=argumentWithEquals?argumentValue:nextArgument;if(isTypeBoolean&&!argumentWithEquals){optionValue="true"}if(optionValue===undefined){throw new Error(`Expected a value for "${argument}" but got nothing`,{cause:"zod-args-parser"})}if(!argumentWithEquals&&isOptionArgument(optionValue)){throw new Error(`Expected a value for "${argument}" but got an argument "${nextArgument}"`,{cause:"zod-args-parser"})}results.options[option.name]={name:option.name,schema:option.type,flag:argument,rawValue:optionValue.toString(),source:"cli"};if(!argumentWithEquals&&!isTypeBoolean){index++}continue}const subcommandObject=getSubcommandObject();if(subcommandObject?.arguments?.length){if(!results.arguments){results.arguments=[]}const currentArgumentCount=results.arguments.length;if(currentArgumentCount<subcommandObject.arguments.length){const argumentType=subcommandObject.arguments[currentArgumentCount].type;results.arguments.push({schema:argumentType,rawValue:argument_,source:"cli"});continue}}if(subcommandObject?.allowPositional){if(!results.positional){results.positional=[]}results.positional.push(argument_);continue}if(!results.subcommand){throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed here`,{cause:"zod-args-parser"})}throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed for subcommand "${results.subcommand}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(subcommandObject.options?.length){for(const option of subcommandObject.options){if(option.name in results.options)continue;const optional=isOptionalSchema(option.type);const defaultValue=schemaDefaultValue(option.type);if(optional){if(defaultValue===undefined){continue}results.options[option.name]={name:option.name,schema:option.type,source:"default"};continue}throw new Error(`Missing required option: ${transformOptionToArgument(option.name)}`,{cause:"zod-args-parser"})}}if(subcommandObject.arguments?.length){const currentArgumentCount=results.arguments?.length??0;const subcommandArgumentCount=subcommandObject.arguments.length;if(currentArgumentCount<subcommandArgumentCount){for(let index=currentArgumentCount;index<subcommandArgumentCount;index++){const argumentType=subcommandObject.arguments[index].type;const optional=isOptionalSchema(argumentType);const defaultValue=schemaDefaultValue(argumentType);if(optional){if(defaultValue===undefined){continue}if(!results.arguments)results.arguments=[];results.arguments.push({schema:argumentType,source:"default"});continue}throw new Error(`the ${generateOrdinalSuffix(index)} argument is required: "${subcommandObject.arguments[index].name}"`,{cause:"zod-args-parser"})}}}return results}
1
+ import{generateOrdinalSuffix}from"../../utilities.mjs";import{isBooleanSchema,isOptionalSchema,schemaDefaultValue}from"../../zod-utilities.mjs";import{decoupleFlags,findOption,findSubcommand,isFlagArgument,isOptionArgument,transformOptionToArgument}from"./parser-helpers.mjs";export function parse(argv,...parameters){const subcommandArray=parameters;const allSubcommands=new Set(subcommandArray.flatMap(c=>[c.name,...(c.aliases||[])]));argv=decoupleFlags(argv);const results={subcommand:undefined};const getSubcommandObject=()=>findSubcommand(results.subcommand,subcommandArray);for(let index=0;index<argv.length;index++){const argument_=argv[index];if(index===0){results.subcommand=allSubcommands.has(argument_)?argument_:undefined;if(results.subcommand)continue}const argumentAndValue=argument_.split("=").filter(Boolean);const argumentWithEquals=argument_.includes("=");const argument=argumentAndValue[0];const argumentValue=argumentAndValue[1];if(isOptionArgument(argument)){if(isFlagArgument(argument)&&argumentWithEquals){throw new Error(`Flag arguments cannot be assigned using "=": "${argument_}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(!subcommandObject.options){if(!results.subcommand){throw new Error(`Error: options are not allowed here: "${argument}"`,{cause:"zod-args-parser"})}throw new Error(`Error: subcommand "${results.subcommand}" does not allow options: "${argument}"`,{cause:"zod-args-parser"})}const option=findOption(argument,subcommandObject.options);if(!option){throw new Error(`Unknown option: "${argument}"`,{cause:"zod-args-parser"})}if(results.options&&option.name in results.options){throw new Error(`Duplicated option: "${argument}"`,{cause:"zod-args-parser"})}const isTypeBoolean=isBooleanSchema(option.type);const nextArgument=argv[index+1];let optionValue=argumentWithEquals?argumentValue:nextArgument;if(isTypeBoolean&&!argumentWithEquals){optionValue="true"}if(optionValue===undefined){throw new Error(`Expected a value for "${argument}" but got nothing`,{cause:"zod-args-parser"})}if(!argumentWithEquals&&isOptionArgument(optionValue)){throw new Error(`Expected a value for "${argument}" but got an argument "${nextArgument}"`,{cause:"zod-args-parser"})}if(!results.options){results.options={}}results.options[option.name]={name:option.name,schema:option.type,flag:argument,rawValue:optionValue.toString(),source:"cli"};if(!argumentWithEquals&&!isTypeBoolean){index++}continue}const subcommandObject=getSubcommandObject();if(subcommandObject?.arguments){if(!results.arguments){results.arguments=[]}const currentArgumentCount=results.arguments.length;if(currentArgumentCount<subcommandObject.arguments.length){const argumentType=subcommandObject.arguments[currentArgumentCount].type;results.arguments.push({schema:argumentType,rawValue:argument_,source:"cli"});continue}}if(subcommandObject?.allowPositional){if(!results.positional){results.positional=[]}results.positional.push(argument_);continue}if(!results.subcommand){throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed here`,{cause:"zod-args-parser"})}throw new Error(`Unexpected argument "${argument_}": positional arguments are not allowed for subcommand "${results.subcommand}"`,{cause:"zod-args-parser"})}const subcommandObject=getSubcommandObject();if(!subcommandObject){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"})}if(subcommandObject.options){if(!results.options){results.options={}}for(const option of subcommandObject.options){if(results.options&&option.name in results.options)continue;const optional=isOptionalSchema(option.type);const defaultValue=schemaDefaultValue(option.type);if(optional){if(defaultValue===undefined){continue}results.options[option.name]={name:option.name,schema:option.type,source:"default"};continue}throw new Error(`Missing required option: ${transformOptionToArgument(option.name)}`,{cause:"zod-args-parser"})}}if(subcommandObject.arguments){if(!results.arguments){results.arguments=[]}const currentArgumentCount=results.arguments.length??0;const subcommandArgumentCount=subcommandObject.arguments.length;if(currentArgumentCount<subcommandArgumentCount){for(let index=currentArgumentCount;index<subcommandArgumentCount;index++){const argumentType=subcommandObject.arguments[index].type;const optional=isOptionalSchema(argumentType);const defaultValue=schemaDefaultValue(argumentType);if(optional){if(defaultValue===undefined){continue}if(!results.arguments)results.arguments=[];results.arguments.push({schema:argumentType,source:"default"});continue}throw new Error(`the ${generateOrdinalSuffix(index)} argument is required: "${subcommandObject.arguments[index].name}"`,{cause:"zod-args-parser"})}}}if(subcommandObject.allowPositional&&!results.positional){results.positional=[]}return results}
@@ -1 +1 @@
1
- {"version":3,"names":["generateOrdinalSuffix","isBooleanSchema","isOptionalSchema","schemaDefaultValue","decoupleFlags","findOption","findSubcommand","isFlagArgument","isOptionArgument","transformOptionToArgument","parse","argv","parameters","subcommandArray","allSubcommands","Set","flatMap","c","name","aliases","results","subcommand","undefined","options","getSubcommandObject","index","length","argument_","has","subcommandObject","allowPositional","positional","arguments","argumentAndValue","split","filter","Boolean","argumentWithEquals","includes","argument","argumentValue","Error","cause","option","isTypeBoolean","type","nextArgument","optionValue","schema","flag","rawValue","toString","source","currentArgumentCount","argumentType","push","optional","defaultValue","subcommandArgumentCount"],"sourceRoot":"../../../../src/parser/parse","sources":["parse.ts"],"sourcesContent":["import { generateOrdinalSuffix } from \"../../utilities.js\";\nimport { isBooleanSchema, isOptionalSchema, schemaDefaultValue } from \"../../zod-utilities.js\";\nimport {\n decoupleFlags,\n findOption,\n findSubcommand,\n isFlagArgument,\n isOptionArgument,\n transformOptionToArgument,\n} from \"./parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../../types.js\";\nimport type { ParsedContext } from \"./parse-types.js\";\n\nexport function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {\n const subcommandArray = parameters as Subcommand[];\n const allSubcommands = new Set<string>(subcommandArray.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n argv = decoupleFlags(argv); // decouple flags E.g. `-rf` -> `-r, -f`\n\n const results: ParsedContext = {\n subcommand: undefined,\n options: {},\n };\n\n /** - Get current subcommand object */\n const getSubcommandObject = () => findSubcommand(results.subcommand, subcommandArray);\n\n for (let index = 0; index < argv.length; index++) {\n const argument_ = argv[index];\n\n // * Subcommand check\n if (index === 0) {\n results.subcommand = allSubcommands.has(argument_) ? argument_ : undefined;\n\n // add positional and arguments arrays\n const subcommandObject = getSubcommandObject();\n if (subcommandObject && subcommandObject.allowPositional) {\n results.positional = [];\n }\n\n if (subcommandObject && subcommandObject.arguments?.length) {\n results.arguments = [];\n }\n\n // First argument is a subcommand. Skip to the next argument\n if (results.subcommand) continue;\n }\n\n // * Option check\n\n // Check for `--option=value` or `--option value`\n const argumentAndValue = argument_.split(\"=\").filter(Boolean);\n const argumentWithEquals = argument_.includes(\"=\");\n const argument = argumentAndValue[0];\n const argumentValue: string | undefined = argumentAndValue[1];\n\n if (isOptionArgument(argument)) {\n if (isFlagArgument(argument) && argumentWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${argument_}\"`, { cause: \"zod-args-parser\" });\n }\n\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (!subcommandObject.options) {\n if (!results.subcommand) {\n throw new Error(`Error: options are not allowed here: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n throw new Error(`Error: subcommand \"${results.subcommand}\" does not allow options: \"${argument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n const option = findOption(argument, subcommandObject.options);\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (option.name in results.options) {\n throw new Error(`Duplicated option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArgument = argv[index + 1];\n\n let optionValue: string | boolean = argumentWithEquals ? argumentValue : nextArgument;\n\n // infer value for boolean options\n if (isTypeBoolean && !argumentWithEquals) {\n optionValue = \"true\";\n }\n\n if (optionValue === undefined) {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`, { cause: \"zod-args-parser\" });\n }\n\n if (!argumentWithEquals && isOptionArgument(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArgument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results.options[option.name] = {\n name: option.name,\n schema: option.type,\n flag: argument,\n rawValue: optionValue.toString(),\n source: \"cli\",\n };\n\n // Skip to the next argument if it is the current option’s value.\n if (!argumentWithEquals && !isTypeBoolean) {\n index++;\n }\n\n continue;\n }\n\n const subcommandObject = getSubcommandObject();\n\n // * Arguments check\n if (subcommandObject?.arguments?.length) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgumentCount = results.arguments.length;\n\n // Any extra arguments are possibly positional\n if (currentArgumentCount < subcommandObject.arguments.length) {\n const argumentType = subcommandObject.arguments[currentArgumentCount].type;\n results.arguments.push({\n schema: argumentType,\n rawValue: argument_,\n source: \"cli\",\n });\n continue;\n }\n }\n\n // * Positional check\n if (subcommandObject?.allowPositional) {\n if (!results.positional) {\n results.positional = [];\n }\n\n results.positional.push(argument_);\n continue;\n }\n\n // * Unexpected\n if (!results.subcommand) {\n throw new Error(`Unexpected argument \"${argument_}\": positional arguments are not allowed here`, {\n cause: \"zod-args-parser\",\n });\n }\n\n throw new Error(\n `Unexpected argument \"${argument_}\": positional arguments are not allowed for subcommand \"${results.subcommand}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n // * Check for missing options - set defaults - add `source`\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n // Options\n if (subcommandObject.options?.length) {\n for (const option of subcommandObject.options) {\n // option already exists\n if (option.name in results.options) continue;\n\n const optional = isOptionalSchema(option.type);\n const defaultValue = schemaDefaultValue(option.type);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n results.options[option.name] = { name: option.name, schema: option.type, source: \"default\" };\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArgument(option.name)}`, {\n cause: \"zod-args-parser\",\n });\n }\n }\n\n // Arguments\n if (subcommandObject.arguments?.length) {\n const currentArgumentCount = results.arguments?.length ?? 0;\n const subcommandArgumentCount = subcommandObject.arguments.length;\n\n // missing arguments\n if (currentArgumentCount < subcommandArgumentCount) {\n for (let index = currentArgumentCount; index < subcommandArgumentCount; index++) {\n const argumentType = subcommandObject.arguments[index].type;\n const optional = isOptionalSchema(argumentType);\n const defaultValue = schemaDefaultValue(argumentType);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n if (!results.arguments) results.arguments = [];\n\n results.arguments.push({ schema: argumentType, source: \"default\" });\n continue;\n }\n\n throw new Error(\n `the ${generateOrdinalSuffix(index)} argument is required: \"${subcommandObject.arguments[index].name}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n }\n }\n\n return results;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["generateOrdinalSuffix","isBooleanSchema","isOptionalSchema","schemaDefaultValue","decoupleFlags","findOption","findSubcommand","isFlagArgument","isOptionArgument","transformOptionToArgument","parse","argv","parameters","subcommandArray","allSubcommands","Set","flatMap","c","name","aliases","results","subcommand","undefined","getSubcommandObject","index","length","argument_","has","argumentAndValue","split","filter","Boolean","argumentWithEquals","includes","argument","argumentValue","Error","cause","subcommandObject","options","option","isTypeBoolean","type","nextArgument","optionValue","schema","flag","rawValue","toString","source","arguments","currentArgumentCount","argumentType","push","allowPositional","positional","optional","defaultValue","subcommandArgumentCount"],"sourceRoot":"../../../../src/parser/parse","sources":["parse.ts"],"sourcesContent":["import { generateOrdinalSuffix } from \"../../utilities.js\";\nimport { isBooleanSchema, isOptionalSchema, schemaDefaultValue } from \"../../zod-utilities.js\";\nimport {\n decoupleFlags,\n findOption,\n findSubcommand,\n isFlagArgument,\n isOptionArgument,\n transformOptionToArgument,\n} from \"./parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../../types.js\";\nimport type { ParsedContext } from \"./parse-types.js\";\n\nexport function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {\n const subcommandArray = parameters as Subcommand[];\n const allSubcommands = new Set<string>(subcommandArray.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n argv = decoupleFlags(argv); // decouple flags E.g. `-rf` -> `-r, -f`\n\n const results: ParsedContext = {\n subcommand: undefined,\n };\n\n /** - Get current subcommand object */\n const getSubcommandObject = () => findSubcommand(results.subcommand, subcommandArray);\n\n for (let index = 0; index < argv.length; index++) {\n const argument_ = argv[index];\n\n // * Subcommand check\n if (index === 0) {\n results.subcommand = allSubcommands.has(argument_) ? argument_ : undefined;\n\n // First argument is a subcommand. Skip to the next argument\n if (results.subcommand) continue;\n }\n\n // * Option check\n\n // Check for `--option=value` or `--option value`\n const argumentAndValue = argument_.split(\"=\").filter(Boolean);\n const argumentWithEquals = argument_.includes(\"=\");\n const argument = argumentAndValue[0];\n const argumentValue: string | undefined = argumentAndValue[1];\n\n if (isOptionArgument(argument)) {\n if (isFlagArgument(argument) && argumentWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${argument_}\"`, { cause: \"zod-args-parser\" });\n }\n\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (!subcommandObject.options) {\n if (!results.subcommand) {\n throw new Error(`Error: options are not allowed here: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n throw new Error(`Error: subcommand \"${results.subcommand}\" does not allow options: \"${argument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n const option = findOption(argument, subcommandObject.options);\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (results.options && option.name in results.options) {\n throw new Error(`Duplicated option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArgument = argv[index + 1];\n\n let optionValue: string | boolean = argumentWithEquals ? argumentValue : nextArgument;\n\n // infer value for boolean options\n if (isTypeBoolean && !argumentWithEquals) {\n optionValue = \"true\";\n }\n\n if (optionValue === undefined) {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`, { cause: \"zod-args-parser\" });\n }\n\n if (!argumentWithEquals && isOptionArgument(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArgument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n if (!results.options) {\n results.options = {};\n }\n\n results.options[option.name] = {\n name: option.name,\n schema: option.type,\n flag: argument,\n rawValue: optionValue.toString(),\n source: \"cli\",\n };\n\n // Skip to the next argument if it is the current option’s value.\n if (!argumentWithEquals && !isTypeBoolean) {\n index++;\n }\n\n continue;\n }\n\n const subcommandObject = getSubcommandObject();\n\n // * Arguments check\n if (subcommandObject?.arguments) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgumentCount = results.arguments.length;\n\n // Any extra arguments are possibly positional\n if (currentArgumentCount < subcommandObject.arguments.length) {\n const argumentType = subcommandObject.arguments[currentArgumentCount].type;\n results.arguments.push({\n schema: argumentType,\n rawValue: argument_,\n source: \"cli\",\n });\n continue;\n }\n }\n\n // * Positional check\n if (subcommandObject?.allowPositional) {\n if (!results.positional) {\n results.positional = [];\n }\n\n results.positional.push(argument_);\n continue;\n }\n\n // * Unexpected\n if (!results.subcommand) {\n throw new Error(`Unexpected argument \"${argument_}\": positional arguments are not allowed here`, {\n cause: \"zod-args-parser\",\n });\n }\n\n throw new Error(\n `Unexpected argument \"${argument_}\": positional arguments are not allowed for subcommand \"${results.subcommand}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n // * Check for missing options - set defaults - add `source`\n const subcommandObject = getSubcommandObject();\n if (!subcommandObject) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n // Options\n if (subcommandObject.options) {\n if (!results.options) {\n results.options = {};\n }\n\n for (const option of subcommandObject.options) {\n // option already exists\n if (results.options && option.name in results.options) continue;\n\n const optional = isOptionalSchema(option.type);\n const defaultValue = schemaDefaultValue(option.type);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n results.options[option.name] = { name: option.name, schema: option.type, source: \"default\" };\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArgument(option.name)}`, {\n cause: \"zod-args-parser\",\n });\n }\n }\n\n // Arguments\n if (subcommandObject.arguments) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgumentCount = results.arguments.length ?? 0;\n const subcommandArgumentCount = subcommandObject.arguments.length;\n\n // missing arguments\n if (currentArgumentCount < subcommandArgumentCount) {\n for (let index = currentArgumentCount; index < subcommandArgumentCount; index++) {\n const argumentType = subcommandObject.arguments[index].type;\n const optional = isOptionalSchema(argumentType);\n const defaultValue = schemaDefaultValue(argumentType);\n\n if (optional) {\n if (defaultValue === undefined) {\n continue;\n }\n\n if (!results.arguments) results.arguments = [];\n\n results.arguments.push({ schema: argumentType, source: \"default\" });\n continue;\n }\n\n throw new Error(\n `the ${generateOrdinalSuffix(index)} argument is required: \"${subcommandObject.arguments[index].name}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n }\n }\n\n if (subcommandObject.allowPositional && !results.positional) {\n results.positional = [];\n }\n\n return results;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src/parser/validate","sources":["validate-type.ts"],"sourcesContent":["import type { Argument, Option, Prettify, Schema, Subcommand, ToOptional, ZodInferOutput } from \"../../types.js\";\nimport type { ParseResult } from \"../parse/parse-types.js\";\n\ntype OptionsArray2RecordType<T extends Option[] | undefined> = T extends Option[]\n ? ToOptional<{ [K in T[number][\"name\"]]: ZodInferOutput<Extract<T[number], { name: K }>[\"type\"]> }>\n : object;\n\ntype ArgumentsArray2ArrayType<T extends Argument[] | undefined> = T extends Argument[]\n ? { [K in keyof T]: T[K] extends { type: Schema } ? ZodInferOutput<T[K][\"type\"]> : never }\n : never;\n\nexport type ValidateResult<S extends Partial<Subcommand>[]> = {\n [K in keyof S]: Prettify<\n {\n subcommand: S[K][\"name\"] extends string ? S[K][\"name\"] : undefined;\n arguments: ArgumentsArray2ArrayType<S[K][\"arguments\"]>;\n positional: S[K][\"allowPositional\"] extends true ? string[] : never;\n ctx: ParseResult<S>;\n } & OptionsArray2RecordType<S[K][\"options\"]>\n >;\n}[number];\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src/parser/validate","sources":["validate-type.ts"],"sourcesContent":["import type { Argument, Option, Prettify, Schema, Subcommand, ToOptional, ZodInferOutput } from \"../../types.js\";\nimport type { ParseResult } from \"../parse/parse-types.js\";\n\ntype OptionsArray2RecordType<T extends Option[] | undefined> = T extends Option[]\n ? ToOptional<{ [K in T[number][\"name\"]]: ZodInferOutput<Extract<T[number], { name: K }>[\"type\"]> }>\n : object;\n\ntype ArgumentsArray2ArrayType<T extends Argument[] | undefined> = T extends Argument[]\n ? { [K in keyof T]: T[K] extends { type: Schema } ? ZodInferOutput<T[K][\"type\"]> : never }\n : never;\n\nexport type ValidateResult<S extends Partial<Subcommand>[]> = {\n [K in keyof S]: Prettify<{\n subcommand: S[K][\"name\"] extends string ? S[K][\"name\"] : undefined;\n arguments: ArgumentsArray2ArrayType<S[K][\"arguments\"]>;\n positional: S[K][\"allowPositional\"] extends true ? string[] : never;\n options: S[K][\"options\"] extends Option[] ? OptionsArray2RecordType<S[K][\"options\"]> : never;\n ctx: ParseResult<S>;\n }>;\n}[number];\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- import{prettifyError}from"zod/v4/core";import{generateOrdinalSuffix,stringToBoolean}from"../../utilities.mjs";import{isBooleanSchema,safeParseSchema}from"../../zod-utilities.mjs";export function validate(parsedData){const results={subcommand:parsedData.subcommand,positional:parsedData.positional,ctx:parsedData};for(const[optionName,{schema,rawValue,flag}]of Object.entries(parsedData.options)){let optionsValue=rawValue;if(flag&&rawValue&&isBooleanSchema(schema)){const booleanValue=stringToBoolean(rawValue);if(typeof booleanValue==="boolean"){const isNegated=flag.startsWith("--no");optionsValue=isNegated?!booleanValue:booleanValue}}const safeParseResult=safeParseSchema(schema,optionsValue);if(!safeParseResult.success){throw new Error(`Invalid value "${rawValue}" for "${flag}": ${prettifyError(safeParseResult.error)}`,{cause:"zod-args-parser"})}results[optionName]=safeParseResult.data}if(parsedData.arguments){if(!results.arguments)results.arguments=[];for(const{schema,rawValue}of parsedData.arguments){const argumentValue=rawValue&&isBooleanSchema(schema)?stringToBoolean(rawValue):rawValue;const safeParseResult=safeParseSchema(schema,argumentValue);if(!safeParseResult.success){throw new Error(`The ${generateOrdinalSuffix(results.arguments.length)} argument "${rawValue}" is invalid: ${prettifyError(safeParseResult.error)}`,{cause:"zod-args-parser"})}results.arguments.push(safeParseResult.data)}}return results}
1
+ import{prettifyError}from"zod/v4/core";import{generateOrdinalSuffix,stringToBoolean}from"../../utilities.mjs";import{isBooleanSchema,safeParseSchema}from"../../zod-utilities.mjs";export function validate(parsedData){const results={subcommand:parsedData.subcommand,positional:parsedData.positional,ctx:parsedData};if(parsedData.options){if(!results.options)results.options={};for(const[optionName,{schema,rawValue,flag}]of Object.entries(parsedData.options)){let optionsValue=rawValue;if(flag&&rawValue&&isBooleanSchema(schema)){const booleanValue=stringToBoolean(rawValue);if(typeof booleanValue==="boolean"){const isNegated=flag.startsWith("--no");optionsValue=isNegated?!booleanValue:booleanValue}}const safeParseResult=safeParseSchema(schema,optionsValue);if(!safeParseResult.success){throw new Error(`Invalid value "${rawValue}" for "${flag}": ${prettifyError(safeParseResult.error)}`,{cause:"zod-args-parser"})}results.options[optionName]=safeParseResult.data}}if(parsedData.arguments){if(!results.arguments)results.arguments=[];for(const{schema,rawValue}of parsedData.arguments){const argumentValue=rawValue&&isBooleanSchema(schema)?stringToBoolean(rawValue):rawValue;const safeParseResult=safeParseSchema(schema,argumentValue);if(!safeParseResult.success){throw new Error(`The ${generateOrdinalSuffix(results.arguments.length)} argument "${rawValue}" is invalid: ${prettifyError(safeParseResult.error)}`,{cause:"zod-args-parser"})}results.arguments.push(safeParseResult.data)}}return results}
@@ -1 +1 @@
1
- {"version":3,"names":["prettifyError","generateOrdinalSuffix","stringToBoolean","isBooleanSchema","safeParseSchema","validate","parsedData","results","subcommand","positional","ctx","optionName","schema","rawValue","flag","Object","entries","options","optionsValue","booleanValue","isNegated","startsWith","safeParseResult","success","Error","error","cause","data","arguments","argumentValue","length","push"],"sourceRoot":"../../../../src/parser/validate","sources":["validate.ts"],"sourcesContent":["import { prettifyError } from \"zod/v4/core\";\n\nimport { generateOrdinalSuffix, stringToBoolean } from \"../../utilities.js\";\nimport { isBooleanSchema, safeParseSchema } from \"../../zod-utilities.js\";\n\nimport type { ParsedContext } from \"../parse/parse-types.js\";\n\n/** The return result object temporarily type. used inside the `parse` function */\ntype ResultsTemporaryType = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n ctx: ParsedContext;\n};\n\nexport function validate(parsedData: ParsedContext) {\n const results: ResultsTemporaryType = {\n subcommand: parsedData.subcommand,\n positional: parsedData.positional,\n ctx: parsedData,\n };\n\n // validate options\n for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {\n let optionsValue: string | boolean | undefined = rawValue;\n\n // infer boolean value if possible\n if (flag && rawValue && isBooleanSchema(schema)) {\n const booleanValue = stringToBoolean(rawValue);\n if (typeof booleanValue === \"boolean\") {\n const isNegated = flag.startsWith(\"--no\");\n optionsValue = isNegated ? !booleanValue : booleanValue;\n }\n }\n\n const safeParseResult = safeParseSchema(schema, optionsValue);\n if (!safeParseResult.success) {\n throw new Error(`Invalid value \"${rawValue}\" for \"${flag}\": ${prettifyError(safeParseResult.error)}`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results[optionName] = safeParseResult.data;\n }\n\n // validate arguments\n if (parsedData.arguments) {\n if (!results.arguments) results.arguments = [];\n\n for (const { schema, rawValue } of parsedData.arguments) {\n const argumentValue = rawValue && isBooleanSchema(schema) ? stringToBoolean(rawValue) : rawValue;\n\n const safeParseResult = safeParseSchema(schema, argumentValue);\n if (!safeParseResult.success) {\n throw new Error(\n `The ${generateOrdinalSuffix(results.arguments.length)} argument \"${rawValue}\" is invalid: ${prettifyError(safeParseResult.error)}`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n results.arguments.push(safeParseResult.data);\n }\n }\n\n return results;\n}\n"],"mappings":"AAAA,OAASA,aAAa,KAAQ,aAAa,CAE3C,OAASC,qBAAqB,CAAEC,eAAe,KAAQ,qBAAoB,CAC3E,OAASC,eAAe,CAAEC,eAAe,KAAQ,yBAAwB,CAYzE,MAAO,SAAS,CAAAC,QAAQA,CAACC,UAAyB,CAAE,CAClD,KAAM,CAAAC,OAA6B,CAAG,CACpCC,UAAU,CAAEF,UAAU,CAACE,UAAU,CACjCC,UAAU,CAAEH,UAAU,CAACG,UAAU,CACjCC,GAAG,CAAEJ,UACP,CAAC,CAGD,IAAK,KAAM,CAACK,UAAU,CAAE,CAAEC,MAAM,CAAEC,QAAQ,CAAEC,IAAK,CAAC,CAAC,EAAI,CAAAC,MAAM,CAACC,OAAO,CAACV,UAAU,CAACW,OAAO,CAAC,CAAE,CACzF,GAAI,CAAAC,YAA0C,CAAGL,QAAQ,CAGzD,GAAIC,IAAI,EAAID,QAAQ,EAAIV,eAAe,CAACS,MAAM,CAAC,CAAE,CAC/C,KAAM,CAAAO,YAAY,CAAGjB,eAAe,CAACW,QAAQ,CAAC,CAC9C,GAAI,MAAO,CAAAM,YAAY,GAAK,SAAS,CAAE,CACrC,KAAM,CAAAC,SAAS,CAAGN,IAAI,CAACO,UAAU,CAAC,MAAM,CAAC,CACzCH,YAAY,CAAGE,SAAS,CAAG,CAACD,YAAY,CAAGA,YAC7C,CACF,CAEA,KAAM,CAAAG,eAAe,CAAGlB,eAAe,CAACQ,MAAM,CAAEM,YAAY,CAAC,CAC7D,GAAI,CAACI,eAAe,CAACC,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CAAC,kBAAkBX,QAAQ,UAAUC,IAAI,MAAMd,aAAa,CAACsB,eAAe,CAACG,KAAK,CAAC,EAAE,CAAE,CACpGC,KAAK,CAAE,iBACT,CAAC,CACH,CAEAnB,OAAO,CAACI,UAAU,CAAC,CAAGW,eAAe,CAACK,IACxC,CAGA,GAAIrB,UAAU,CAACsB,SAAS,CAAE,CACxB,GAAI,CAACrB,OAAO,CAACqB,SAAS,CAAErB,OAAO,CAACqB,SAAS,CAAG,EAAE,CAE9C,IAAK,KAAM,CAAEhB,MAAM,CAAEC,QAAS,CAAC,EAAI,CAAAP,UAAU,CAACsB,SAAS,CAAE,CACvD,KAAM,CAAAC,aAAa,CAAGhB,QAAQ,EAAIV,eAAe,CAACS,MAAM,CAAC,CAAGV,eAAe,CAACW,QAAQ,CAAC,CAAGA,QAAQ,CAEhG,KAAM,CAAAS,eAAe,CAAGlB,eAAe,CAACQ,MAAM,CAAEiB,aAAa,CAAC,CAC9D,GAAI,CAACP,eAAe,CAACC,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CACb,OAAOvB,qBAAqB,CAACM,OAAO,CAACqB,SAAS,CAACE,MAAM,CAAC,cAAcjB,QAAQ,iBAAiBb,aAAa,CAACsB,eAAe,CAACG,KAAK,CAAC,EAAE,CACnI,CAAEC,KAAK,CAAE,iBAAkB,CAC7B,CACF,CAEAnB,OAAO,CAACqB,SAAS,CAACG,IAAI,CAACT,eAAe,CAACK,IAAI,CAC7C,CACF,CAEA,MAAO,CAAApB,OACT","ignoreList":[]}
1
+ {"version":3,"names":["prettifyError","generateOrdinalSuffix","stringToBoolean","isBooleanSchema","safeParseSchema","validate","parsedData","results","subcommand","positional","ctx","options","optionName","schema","rawValue","flag","Object","entries","optionsValue","booleanValue","isNegated","startsWith","safeParseResult","success","Error","error","cause","data","arguments","argumentValue","length","push"],"sourceRoot":"../../../../src/parser/validate","sources":["validate.ts"],"sourcesContent":["import { prettifyError } from \"zod/v4/core\";\n\nimport { generateOrdinalSuffix, stringToBoolean } from \"../../utilities.js\";\nimport { isBooleanSchema, safeParseSchema } from \"../../zod-utilities.js\";\n\nimport type { ParsedContext } from \"../parse/parse-types.js\";\n\n/** The return result object temporarily type. used inside the `parse` function */\ntype ResultsTemporaryType = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n options?: Record<string, unknown>;\n ctx: ParsedContext;\n};\n\nexport function validate(parsedData: ParsedContext) {\n const results: ResultsTemporaryType = {\n subcommand: parsedData.subcommand,\n positional: parsedData.positional,\n ctx: parsedData,\n };\n\n // validate options\n if (parsedData.options) {\n if (!results.options) results.options = {};\n\n for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {\n let optionsValue: string | boolean | undefined = rawValue;\n\n // infer boolean value if possible\n if (flag && rawValue && isBooleanSchema(schema)) {\n const booleanValue = stringToBoolean(rawValue);\n if (typeof booleanValue === \"boolean\") {\n const isNegated = flag.startsWith(\"--no\");\n optionsValue = isNegated ? !booleanValue : booleanValue;\n }\n }\n\n const safeParseResult = safeParseSchema(schema, optionsValue);\n if (!safeParseResult.success) {\n throw new Error(`Invalid value \"${rawValue}\" for \"${flag}\": ${prettifyError(safeParseResult.error)}`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results.options[optionName] = safeParseResult.data;\n }\n }\n\n // validate arguments\n if (parsedData.arguments) {\n if (!results.arguments) results.arguments = [];\n\n for (const { schema, rawValue } of parsedData.arguments) {\n const argumentValue = rawValue && isBooleanSchema(schema) ? stringToBoolean(rawValue) : rawValue;\n\n const safeParseResult = safeParseSchema(schema, argumentValue);\n if (!safeParseResult.success) {\n throw new Error(\n `The ${generateOrdinalSuffix(results.arguments.length)} argument \"${rawValue}\" is invalid: ${prettifyError(safeParseResult.error)}`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n results.arguments.push(safeParseResult.data);\n }\n }\n\n return results;\n}\n"],"mappings":"AAAA,OAASA,aAAa,KAAQ,aAAa,CAE3C,OAASC,qBAAqB,CAAEC,eAAe,KAAQ,qBAAoB,CAC3E,OAASC,eAAe,CAAEC,eAAe,KAAQ,yBAAwB,CAazE,MAAO,SAAS,CAAAC,QAAQA,CAACC,UAAyB,CAAE,CAClD,KAAM,CAAAC,OAA6B,CAAG,CACpCC,UAAU,CAAEF,UAAU,CAACE,UAAU,CACjCC,UAAU,CAAEH,UAAU,CAACG,UAAU,CACjCC,GAAG,CAAEJ,UACP,CAAC,CAGD,GAAIA,UAAU,CAACK,OAAO,CAAE,CACtB,GAAI,CAACJ,OAAO,CAACI,OAAO,CAAEJ,OAAO,CAACI,OAAO,CAAG,CAAC,CAAC,CAE1C,IAAK,KAAM,CAACC,UAAU,CAAE,CAAEC,MAAM,CAAEC,QAAQ,CAAEC,IAAK,CAAC,CAAC,EAAI,CAAAC,MAAM,CAACC,OAAO,CAACX,UAAU,CAACK,OAAO,CAAC,CAAE,CACzF,GAAI,CAAAO,YAA0C,CAAGJ,QAAQ,CAGzD,GAAIC,IAAI,EAAID,QAAQ,EAAIX,eAAe,CAACU,MAAM,CAAC,CAAE,CAC/C,KAAM,CAAAM,YAAY,CAAGjB,eAAe,CAACY,QAAQ,CAAC,CAC9C,GAAI,MAAO,CAAAK,YAAY,GAAK,SAAS,CAAE,CACrC,KAAM,CAAAC,SAAS,CAAGL,IAAI,CAACM,UAAU,CAAC,MAAM,CAAC,CACzCH,YAAY,CAAGE,SAAS,CAAG,CAACD,YAAY,CAAGA,YAC7C,CACF,CAEA,KAAM,CAAAG,eAAe,CAAGlB,eAAe,CAACS,MAAM,CAAEK,YAAY,CAAC,CAC7D,GAAI,CAACI,eAAe,CAACC,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CAAC,kBAAkBV,QAAQ,UAAUC,IAAI,MAAMf,aAAa,CAACsB,eAAe,CAACG,KAAK,CAAC,EAAE,CAAE,CACpGC,KAAK,CAAE,iBACT,CAAC,CACH,CAEAnB,OAAO,CAACI,OAAO,CAACC,UAAU,CAAC,CAAGU,eAAe,CAACK,IAChD,CACF,CAGA,GAAIrB,UAAU,CAACsB,SAAS,CAAE,CACxB,GAAI,CAACrB,OAAO,CAACqB,SAAS,CAAErB,OAAO,CAACqB,SAAS,CAAG,EAAE,CAE9C,IAAK,KAAM,CAAEf,MAAM,CAAEC,QAAS,CAAC,EAAI,CAAAR,UAAU,CAACsB,SAAS,CAAE,CACvD,KAAM,CAAAC,aAAa,CAAGf,QAAQ,EAAIX,eAAe,CAACU,MAAM,CAAC,CAAGX,eAAe,CAACY,QAAQ,CAAC,CAAGA,QAAQ,CAEhG,KAAM,CAAAQ,eAAe,CAAGlB,eAAe,CAACS,MAAM,CAAEgB,aAAa,CAAC,CAC9D,GAAI,CAACP,eAAe,CAACC,OAAO,CAAE,CAC5B,KAAM,IAAI,CAAAC,KAAK,CACb,OAAOvB,qBAAqB,CAACM,OAAO,CAACqB,SAAS,CAACE,MAAM,CAAC,cAAchB,QAAQ,iBAAiBd,aAAa,CAACsB,eAAe,CAACG,KAAK,CAAC,EAAE,CACnI,CAAEC,KAAK,CAAE,iBAAkB,CAC7B,CACF,CAEAnB,OAAO,CAACqB,SAAS,CAACG,IAAI,CAACT,eAAe,CAACK,IAAI,CAC7C,CACF,CAEA,MAAO,CAAApB,OACT","ignoreList":[]}
@@ -71,13 +71,13 @@ export type ParseResult<S extends Partial<Subcommand>[]> = {
71
71
  [K in keyof S]: Prettify<{
72
72
  subcommand: S[K]["name"] extends string ? S[K]["name"] : undefined;
73
73
  positional: S[K]["allowPositional"] extends true ? string[] : never;
74
- options: OptionsArray2Record<S[K]["options"]>;
74
+ options: S[K]["options"] extends Option[] ? OptionsArray2Record<S[K]["options"]> : never;
75
75
  arguments: ArgumentsArray2ArrayType<S[K]["arguments"]>;
76
76
  }>;
77
77
  }[number];
78
78
  export type ParsedContext = {
79
79
  subcommand: string | undefined;
80
- options: Record<string, ParsedOption>;
80
+ options?: Record<string, ParsedOption>;
81
81
  arguments?: ParsedArgument[];
82
82
  positional?: string[];
83
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parse-types.d.ts","sourceRoot":"","sources":["../../../../src/parser/parse/parse-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAErF,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAClE;IACE,sDAAsD;IACtD,IAAI,EAAE,CAAC,CAAC;IACR,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,MAAM,EAAE,CAAC,CAAC;IACV,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,MAAM,EAAE,KAAK,CAAC;CACf,GACD;IACE,sDAAsD;IACtD,IAAI,EAAE,CAAC,CAAC;IACR,8CAA8C;IAC9C,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,6CAA6C;IAC7C,MAAM,EAAE,CAAC,CAAC;IACV,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEN,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IACzC;IACE,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC;IACV;;;;;OAKG;IACH,MAAM,EAAE,KAAK,CAAC;CACf,GACD;IACE,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC;IACV;;;;;OAKG;IACH,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEN,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,EAAE,GACzE;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAAE,GACtF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzB,KAAK,wBAAwB,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,QAAQ,EAAE,GAClF;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;CAAE,GACxF,KAAK,CAAC;AAEV,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACnE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;QACpE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KACxD,CAAC;CACH,CAAC,MAAM,CAAC,CAAC;AAEV,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"parse-types.d.ts","sourceRoot":"","sources":["../../../../src/parser/parse/parse-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/parser/parse/parse.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,iBAuN1E"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/parser/parse/parse.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,iBA4N1E"}
@@ -15,8 +15,9 @@ export type ValidateResult<S extends Partial<Subcommand>[]> = {
15
15
  subcommand: S[K]["name"] extends string ? S[K]["name"] : undefined;
16
16
  arguments: ArgumentsArray2ArrayType<S[K]["arguments"]>;
17
17
  positional: S[K]["allowPositional"] extends true ? string[] : never;
18
+ options: S[K]["options"] extends Option[] ? OptionsArray2RecordType<S[K]["options"]> : never;
18
19
  ctx: ParseResult<S>;
19
- } & OptionsArray2RecordType<S[K]["options"]>>;
20
+ }>;
20
21
  }[number];
21
22
  export {};
22
23
  //# sourceMappingURL=validate-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-type.d.ts","sourceRoot":"","sources":["../../../../src/parser/validate/validate-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,EAAE,GAC7E,UAAU,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,GACjG,MAAM,CAAC;AAEX,KAAK,wBAAwB,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,QAAQ,EAAE,GAClF;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;CAAE,GACxF,KAAK,CAAC;AAEV,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CACtB;QACE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACnE,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACvD,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;QACpE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KACrB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAC7C;CACF,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"validate-type.d.ts","sourceRoot":"","sources":["../../../../src/parser/validate/validate-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,EAAE,GAC7E,UAAU,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,GACjG,MAAM,CAAC;AAEX,KAAK,wBAAwB,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,QAAQ,EAAE,GAClF;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;CAAE,GACxF,KAAK,CAAC;AAEV,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACnE,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACvD,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;QACpE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC;QAC7F,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC;CACH,CAAC,MAAM,CAAC,CAAC"}
@@ -4,6 +4,7 @@ type ResultsTemporaryType = Record<string, unknown> & {
4
4
  subcommand: string | undefined;
5
5
  positional?: string[];
6
6
  arguments?: unknown[];
7
+ options?: Record<string, unknown>;
7
8
  ctx: ParsedContext;
8
9
  };
9
10
  export declare function validate(parsedData: ParsedContext): ResultsTemporaryType;
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/parser/validate/validate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,kFAAkF;AAClF,KAAK,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACpD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,UAAU,EAAE,aAAa,wBAkDjD"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/parser/validate/validate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,kFAAkF;AAClF,KAAK,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACpD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,UAAU,EAAE,aAAa,wBAsDjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-args-parser",
3
- "version": "1.2.8",
3
+ "version": "2.0.0-alpha.0",
4
4
  "description": "A strictly typed command-line arguments parser powered by Zod.",
5
5
  "author": "Ahmed ALABSI <alabsi91@gmail.com>",
6
6
  "license": "MIT",
@@ -76,14 +76,14 @@ export type ParseResult<S extends Partial<Subcommand>[]> = {
76
76
  [K in keyof S]: Prettify<{
77
77
  subcommand: S[K]["name"] extends string ? S[K]["name"] : undefined;
78
78
  positional: S[K]["allowPositional"] extends true ? string[] : never;
79
- options: OptionsArray2Record<S[K]["options"]>;
79
+ options: S[K]["options"] extends Option[] ? OptionsArray2Record<S[K]["options"]> : never;
80
80
  arguments: ArgumentsArray2ArrayType<S[K]["arguments"]>;
81
81
  }>;
82
82
  }[number];
83
83
 
84
84
  export type ParsedContext = {
85
85
  subcommand: string | undefined;
86
- options: Record<string, ParsedOption>;
86
+ options?: Record<string, ParsedOption>;
87
87
  arguments?: ParsedArgument[];
88
88
  positional?: string[];
89
89
  };
@@ -20,7 +20,6 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
20
20
 
21
21
  const results: ParsedContext = {
22
22
  subcommand: undefined,
23
- options: {},
24
23
  };
25
24
 
26
25
  /** - Get current subcommand object */
@@ -33,16 +32,6 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
33
32
  if (index === 0) {
34
33
  results.subcommand = allSubcommands.has(argument_) ? argument_ : undefined;
35
34
 
36
- // add positional and arguments arrays
37
- const subcommandObject = getSubcommandObject();
38
- if (subcommandObject && subcommandObject.allowPositional) {
39
- results.positional = [];
40
- }
41
-
42
- if (subcommandObject && subcommandObject.arguments?.length) {
43
- results.arguments = [];
44
- }
45
-
46
35
  // First argument is a subcommand. Skip to the next argument
47
36
  if (results.subcommand) continue;
48
37
  }
@@ -80,7 +69,7 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
80
69
  throw new Error(`Unknown option: "${argument}"`, { cause: "zod-args-parser" });
81
70
  }
82
71
 
83
- if (option.name in results.options) {
72
+ if (results.options && option.name in results.options) {
84
73
  throw new Error(`Duplicated option: "${argument}"`, { cause: "zod-args-parser" });
85
74
  }
86
75
 
@@ -104,6 +93,10 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
104
93
  });
105
94
  }
106
95
 
96
+ if (!results.options) {
97
+ results.options = {};
98
+ }
99
+
107
100
  results.options[option.name] = {
108
101
  name: option.name,
109
102
  schema: option.type,
@@ -123,7 +116,7 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
123
116
  const subcommandObject = getSubcommandObject();
124
117
 
125
118
  // * Arguments check
126
- if (subcommandObject?.arguments?.length) {
119
+ if (subcommandObject?.arguments) {
127
120
  if (!results.arguments) {
128
121
  results.arguments = [];
129
122
  }
@@ -172,10 +165,14 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
172
165
  }
173
166
 
174
167
  // Options
175
- if (subcommandObject.options?.length) {
168
+ if (subcommandObject.options) {
169
+ if (!results.options) {
170
+ results.options = {};
171
+ }
172
+
176
173
  for (const option of subcommandObject.options) {
177
174
  // option already exists
178
- if (option.name in results.options) continue;
175
+ if (results.options && option.name in results.options) continue;
179
176
 
180
177
  const optional = isOptionalSchema(option.type);
181
178
  const defaultValue = schemaDefaultValue(option.type);
@@ -196,8 +193,12 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
196
193
  }
197
194
 
198
195
  // Arguments
199
- if (subcommandObject.arguments?.length) {
200
- const currentArgumentCount = results.arguments?.length ?? 0;
196
+ if (subcommandObject.arguments) {
197
+ if (!results.arguments) {
198
+ results.arguments = [];
199
+ }
200
+
201
+ const currentArgumentCount = results.arguments.length ?? 0;
201
202
  const subcommandArgumentCount = subcommandObject.arguments.length;
202
203
 
203
204
  // missing arguments
@@ -226,5 +227,9 @@ export function parse(argv: string[], ...parameters: [Cli, ...Subcommand[]]) {
226
227
  }
227
228
  }
228
229
 
230
+ if (subcommandObject.allowPositional && !results.positional) {
231
+ results.positional = [];
232
+ }
233
+
229
234
  return results;
230
235
  }
@@ -10,12 +10,11 @@ type ArgumentsArray2ArrayType<T extends Argument[] | undefined> = T extends Argu
10
10
  : never;
11
11
 
12
12
  export type ValidateResult<S extends Partial<Subcommand>[]> = {
13
- [K in keyof S]: Prettify<
14
- {
15
- subcommand: S[K]["name"] extends string ? S[K]["name"] : undefined;
16
- arguments: ArgumentsArray2ArrayType<S[K]["arguments"]>;
17
- positional: S[K]["allowPositional"] extends true ? string[] : never;
18
- ctx: ParseResult<S>;
19
- } & OptionsArray2RecordType<S[K]["options"]>
20
- >;
13
+ [K in keyof S]: Prettify<{
14
+ subcommand: S[K]["name"] extends string ? S[K]["name"] : undefined;
15
+ arguments: ArgumentsArray2ArrayType<S[K]["arguments"]>;
16
+ positional: S[K]["allowPositional"] extends true ? string[] : never;
17
+ options: S[K]["options"] extends Option[] ? OptionsArray2RecordType<S[K]["options"]> : never;
18
+ ctx: ParseResult<S>;
19
+ }>;
21
20
  }[number];
@@ -10,6 +10,7 @@ type ResultsTemporaryType = Record<string, unknown> & {
10
10
  subcommand: string | undefined;
11
11
  positional?: string[];
12
12
  arguments?: unknown[];
13
+ options?: Record<string, unknown>;
13
14
  ctx: ParsedContext;
14
15
  };
15
16
 
@@ -21,26 +22,30 @@ export function validate(parsedData: ParsedContext) {
21
22
  };
22
23
 
23
24
  // validate options
24
- for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {
25
- let optionsValue: string | boolean | undefined = rawValue;
25
+ if (parsedData.options) {
26
+ if (!results.options) results.options = {};
26
27
 
27
- // infer boolean value if possible
28
- if (flag && rawValue && isBooleanSchema(schema)) {
29
- const booleanValue = stringToBoolean(rawValue);
30
- if (typeof booleanValue === "boolean") {
31
- const isNegated = flag.startsWith("--no");
32
- optionsValue = isNegated ? !booleanValue : booleanValue;
28
+ for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {
29
+ let optionsValue: string | boolean | undefined = rawValue;
30
+
31
+ // infer boolean value if possible
32
+ if (flag && rawValue && isBooleanSchema(schema)) {
33
+ const booleanValue = stringToBoolean(rawValue);
34
+ if (typeof booleanValue === "boolean") {
35
+ const isNegated = flag.startsWith("--no");
36
+ optionsValue = isNegated ? !booleanValue : booleanValue;
37
+ }
33
38
  }
34
- }
35
39
 
36
- const safeParseResult = safeParseSchema(schema, optionsValue);
37
- if (!safeParseResult.success) {
38
- throw new Error(`Invalid value "${rawValue}" for "${flag}": ${prettifyError(safeParseResult.error)}`, {
39
- cause: "zod-args-parser",
40
- });
41
- }
40
+ const safeParseResult = safeParseSchema(schema, optionsValue);
41
+ if (!safeParseResult.success) {
42
+ throw new Error(`Invalid value "${rawValue}" for "${flag}": ${prettifyError(safeParseResult.error)}`, {
43
+ cause: "zod-args-parser",
44
+ });
45
+ }
42
46
 
43
- results[optionName] = safeParseResult.data;
47
+ results.options[optionName] = safeParseResult.data;
48
+ }
44
49
  }
45
50
 
46
51
  // validate arguments