zod-args-parser 1.2.5 → 1.2.7
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 +6 -6
- package/lib/commonjs/help-message/format-cli.js +1 -1
- package/lib/commonjs/help-message/format-cli.js.map +1 -1
- package/lib/commonjs/markdown/generate-markdown.js +1 -1
- package/lib/commonjs/markdown/generate-markdown.js.map +1 -1
- package/lib/commonjs/zod-utils.js +1 -1
- package/lib/commonjs/zod-utils.js.map +1 -1
- package/lib/module/help-message/format-cli.js +1 -1
- package/lib/module/help-message/format-cli.js.map +1 -1
- package/lib/module/markdown/generate-markdown.js +1 -1
- package/lib/module/markdown/generate-markdown.js.map +1 -1
- package/lib/module/zod-utils.js +1 -1
- package/lib/module/zod-utils.js.map +1 -1
- package/lib/typescript/markdown/generate-markdown.d.ts.map +1 -1
- package/lib/typescript/zod-utils.d.ts +6 -6
- package/lib/typescript/zod-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/help-message/format-cli.ts +1 -1
- package/src/markdown/generate-markdown.ts +36 -3
- package/src/zod-utils.ts +12 -21
package/README.md
CHANGED
|
@@ -221,16 +221,16 @@ z.union([z.coerce.number(), z.literal("development")]);
|
|
|
221
221
|
import { stringToArray, stringToSet } from "zod-args-parser";
|
|
222
222
|
|
|
223
223
|
// Array -> string[]
|
|
224
|
-
z.preprocess(
|
|
224
|
+
z.preprocess((value: string) => stringToArray(value), z.string().array());
|
|
225
225
|
|
|
226
226
|
// Tuple -> [string, number, boolean]
|
|
227
227
|
z.preprocess(
|
|
228
|
-
|
|
228
|
+
(value: string) => stringToArray(value, ";"), // second arg is the separator (default: ",")
|
|
229
229
|
z.tuple([z.string(), z.coerce.number(), z.coerce.boolean()]),
|
|
230
230
|
);
|
|
231
231
|
|
|
232
232
|
// Set -> Set<string>
|
|
233
|
-
z.preprocess(
|
|
233
|
+
z.preprocess((value: string) => stringToSet(value), z.set(z.string()));
|
|
234
234
|
```
|
|
235
235
|
|
|
236
236
|
### Options
|
|
@@ -473,10 +473,10 @@ console.log(`<pre style="background-color: #1e1e2e">${subcommandHelp}</pre>`);
|
|
|
473
473
|
- `schemaDefaultValue(schema: ZodTypeAny): unknown | undefined`
|
|
474
474
|
Get the default value of a schema if it has one.
|
|
475
475
|
|
|
476
|
-
- `stringToArray(value:
|
|
476
|
+
- `stringToArray(value: string, separator?: string = ","): string[]`
|
|
477
477
|
A preprocessing handle to convert a string to an array.
|
|
478
478
|
|
|
479
|
-
- `stringToSet(value:
|
|
479
|
+
- `stringToSet(value: string, separator?: string = ","): Set<string>`
|
|
480
480
|
A preprocessing handle to convert a string to a set.
|
|
481
481
|
|
|
482
482
|
```ts
|
|
@@ -492,7 +492,7 @@ const cliSchema = createCli({
|
|
|
492
492
|
placeholder: "<list>",
|
|
493
493
|
description: "tags separated by semicolon (;)",
|
|
494
494
|
example: "--tags tag1;tag2;tag3",
|
|
495
|
-
type: z.preprocess(
|
|
495
|
+
type: z.preprocess((value: string) => stringToArray(value, ";"), z.array(z.string())),
|
|
496
496
|
},
|
|
497
497
|
{
|
|
498
498
|
name: "verbose",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.formatCliHelpMsg=formatCliHelpMsg;exports.formatSubcommandHelpMsg=formatSubcommandHelpMsg;exports.printCliHelp=printCliHelp;exports.printSubcommandHelp=printSubcommandHelp;var _getCliMetadata=require("../metadata/get-cli-metadata.js");var _utils=require("../utils.js");var _formatArguments=require("./format-arguments.js");var _formatOptions=require("./format-options.js");var _formatSubcommands=require("./format-subcommands.js");var _styles=require("./styles.js");function formatCliHelpMsg(params,style){const c=_styles.helpMsgStyles.default;if(style)Object.assign(c,style);const metadata=(0,_getCliMetadata.getCliMetadata)(params);const formatTitle=title=>c.title(` ${title.toUpperCase()}`);let msg="";const usage=metadata.usage||(0,_utils.concat)(c.punctuation("$"),c.description(metadata.name),metadata.subcommands.length?c.command("[command]"):"",metadata.options.length?c.option("[options]"):"",metadata.arguments.length?c.argument("<arguments>"):"",metadata.allowPositional?c.argument("<positionals>"):"");msg+=formatTitle("Usage")+(0,_utils.ln)(1);msg+=(0,_utils.indent)(2)+usage+(0,_utils.ln)(2);if(metadata.description){msg+=formatTitle("Description")+(0,_utils.ln)(1);msg+=(0,_utils.indent)(2)+c.description(metadata.description)+(0,_utils.ln)(2);}let longest=0;const optionsMetadata=metadata.options;const longestOptionTitle=optionsMetadata.reduce((acc,metadata)=>{const names=metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(", ");const optLength=names.length+metadata.placeholder.length;return optLength>acc?optLength:acc;},0);if(longestOptionTitle>longest){longest=longestOptionTitle;}const subcommandsMetadata=metadata.subcommands;const longestSubcommandTitle=subcommandsMetadata.reduce((acc,metadata)=>{const names=metadata.aliases.concat([metadata.name]).join(", ");const placeholder=(0,_utils.subcommandPlaceholder)(metadata);const optLength=names.length+placeholder.length;return optLength>acc?optLength:acc;},0);if(longestSubcommandTitle>longest){longest=longestSubcommandTitle;}const argsMetadata=metadata.arguments;const longestArgTitle=argsMetadata.reduce((acc,arg)=>arg.name.length>acc?arg.name.length:acc,0);if(longestArgTitle>longest){longest=longestArgTitle;}msg+=(0,_formatOptions.formatHelpMsgOptions)(optionsMetadata,c,longest);msg+=(0,_formatSubcommands.formatHelpMsgCommands)(subcommandsMetadata,c,longest);msg+=(0,_formatArguments.formatHelpMsgArguments)(argsMetadata,c,longest);if(metadata.example){msg+=formatTitle("Example");msg+=(0,_utils.ln)(1);const normalizeExample=metadata.example.replace(/\n+/g,"\n"+(0,_utils.indent)(3));msg+=(0,_utils.concat)((0,_utils.indent)(2),c.example(normalizeExample),(0,_utils.ln)(2));}return msg;}function formatSubcommandHelpMsg(subcommand,printStyle,cliName=""){const c=_styles.helpMsgStyles.default;if(printStyle)Object.assign(c,printStyle);const usage=subcommand.usage||(0,_utils.concat)(c.punctuation("$"),cliName,c.command(subcommand.name),subcommand.options?.length?c.option("[options]"):"",subcommand.arguments?.length||subcommand.allowPositional?c.argument("<arguments>"):"");const asCli={cliName,usage,...subcommand};return formatCliHelpMsg([asCli],c);}function printCliHelp(params,style){console.log(formatCliHelpMsg(params,style));}function printSubcommandHelp(subcommand,style,cliName=""){console.log(formatSubcommandHelpMsg(subcommand,style,cliName));}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.formatCliHelpMsg=formatCliHelpMsg;exports.formatSubcommandHelpMsg=formatSubcommandHelpMsg;exports.printCliHelp=printCliHelp;exports.printSubcommandHelp=printSubcommandHelp;var _getCliMetadata=require("../metadata/get-cli-metadata.js");var _utils=require("../utils.js");var _formatArguments=require("./format-arguments.js");var _formatOptions=require("./format-options.js");var _formatSubcommands=require("./format-subcommands.js");var _styles=require("./styles.js");function formatCliHelpMsg(params,style){const c=_styles.helpMsgStyles.default;if(style)Object.assign(c,style);const metadata=(0,_getCliMetadata.getCliMetadata)(params);const formatTitle=title=>c.title(` ${title.toUpperCase()}`);let msg="";const usage=metadata.usage||(0,_utils.concat)(c.punctuation("$"),c.description(metadata.name),metadata.subcommands.length?c.command("[command]"):"",metadata.options.length?c.option("[options]"):"",metadata.arguments.length?c.argument("<arguments>"):"",metadata.allowPositional?c.argument("<positionals>"):"");msg+=formatTitle("Usage")+(0,_utils.ln)(1);msg+=(0,_utils.indent)(2)+usage+(0,_utils.ln)(2);if(metadata.description){msg+=formatTitle("Description")+(0,_utils.ln)(1);msg+=(0,_utils.indent)(2)+c.description(metadata.description).replace(/\n+/g,"\n"+(0,_utils.indent)(2))+(0,_utils.ln)(2);}let longest=0;const optionsMetadata=metadata.options;const longestOptionTitle=optionsMetadata.reduce((acc,metadata)=>{const names=metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(", ");const optLength=names.length+metadata.placeholder.length;return optLength>acc?optLength:acc;},0);if(longestOptionTitle>longest){longest=longestOptionTitle;}const subcommandsMetadata=metadata.subcommands;const longestSubcommandTitle=subcommandsMetadata.reduce((acc,metadata)=>{const names=metadata.aliases.concat([metadata.name]).join(", ");const placeholder=(0,_utils.subcommandPlaceholder)(metadata);const optLength=names.length+placeholder.length;return optLength>acc?optLength:acc;},0);if(longestSubcommandTitle>longest){longest=longestSubcommandTitle;}const argsMetadata=metadata.arguments;const longestArgTitle=argsMetadata.reduce((acc,arg)=>arg.name.length>acc?arg.name.length:acc,0);if(longestArgTitle>longest){longest=longestArgTitle;}msg+=(0,_formatOptions.formatHelpMsgOptions)(optionsMetadata,c,longest);msg+=(0,_formatSubcommands.formatHelpMsgCommands)(subcommandsMetadata,c,longest);msg+=(0,_formatArguments.formatHelpMsgArguments)(argsMetadata,c,longest);if(metadata.example){msg+=formatTitle("Example");msg+=(0,_utils.ln)(1);const normalizeExample=metadata.example.replace(/\n+/g,"\n"+(0,_utils.indent)(3));msg+=(0,_utils.concat)((0,_utils.indent)(2),c.example(normalizeExample),(0,_utils.ln)(2));}return msg;}function formatSubcommandHelpMsg(subcommand,printStyle,cliName=""){const c=_styles.helpMsgStyles.default;if(printStyle)Object.assign(c,printStyle);const usage=subcommand.usage||(0,_utils.concat)(c.punctuation("$"),cliName,c.command(subcommand.name),subcommand.options?.length?c.option("[options]"):"",subcommand.arguments?.length||subcommand.allowPositional?c.argument("<arguments>"):"");const asCli={cliName,usage,...subcommand};return formatCliHelpMsg([asCli],c);}function printCliHelp(params,style){console.log(formatCliHelpMsg(params,style));}function printSubcommandHelp(subcommand,style,cliName=""){console.log(formatSubcommandHelpMsg(subcommand,style,cliName));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_getCliMetadata","require","_utils","_formatArguments","_formatOptions","_formatSubcommands","_styles","formatCliHelpMsg","params","style","c","helpMsgStyles","default","Object","assign","metadata","getCliMetadata","formatTitle","title","toUpperCase","msg","usage","concat","punctuation","description","name","subcommands","length","command","options","option","arguments","argument","allowPositional","ln","indent","longest","optionsMetadata","longestOptionTitle","reduce","acc","names","aliasesAsArgs","nameAsArg","join","optLength","placeholder","subcommandsMetadata","longestSubcommandTitle","aliases","subcommandPlaceholder","argsMetadata","longestArgTitle","arg","formatHelpMsgOptions","formatHelpMsgCommands","formatHelpMsgArguments","example","normalizeExample","
|
|
1
|
+
{"version":3,"names":["_getCliMetadata","require","_utils","_formatArguments","_formatOptions","_formatSubcommands","_styles","formatCliHelpMsg","params","style","c","helpMsgStyles","default","Object","assign","metadata","getCliMetadata","formatTitle","title","toUpperCase","msg","usage","concat","punctuation","description","name","subcommands","length","command","options","option","arguments","argument","allowPositional","ln","indent","replace","longest","optionsMetadata","longestOptionTitle","reduce","acc","names","aliasesAsArgs","nameAsArg","join","optLength","placeholder","subcommandsMetadata","longestSubcommandTitle","aliases","subcommandPlaceholder","argsMetadata","longestArgTitle","arg","formatHelpMsgOptions","formatHelpMsgCommands","formatHelpMsgArguments","example","normalizeExample","formatSubcommandHelpMsg","subcommand","printStyle","cliName","asCli","printCliHelp","console","log","printSubcommandHelp"],"sourceRoot":"../../../src/help-message","sources":["format-cli.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/get-cli-metadata.js\";\nimport { concat, indent, ln, subcommandPlaceholder } from \"../utils.js\";\nimport { formatHelpMsgArguments } from \"./format-arguments.js\";\nimport { formatHelpMsgOptions } from \"./format-options.js\";\nimport { formatHelpMsgCommands } from \"./format-subcommands.js\";\nimport { helpMsgStyles } from \"./styles.js\";\n\nimport type { Cli, HelpMsgStyle, Subcommand } from \"../types.js\";\n\nexport function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>): string {\n const c = helpMsgStyles.default;\n if (style) Object.assign(c, style);\n\n const metadata = getCliMetadata(params);\n\n const formatTitle = (title: string) => c.title(` ${title.toUpperCase()}`);\n\n let msg = \"\";\n\n // CLI usage\n const usage =\n metadata.usage ||\n concat(\n c.punctuation(\"$\"),\n c.description(metadata.name),\n metadata.subcommands.length ? c.command(\"[command]\") : \"\",\n metadata.options.length ? c.option(\"[options]\") : \"\",\n metadata.arguments.length ? c.argument(\"<arguments>\") : \"\",\n metadata.allowPositional ? c.argument(\"<positionals>\") : \"\",\n );\n msg += formatTitle(\"Usage\") + ln(1);\n msg += indent(2) + usage + ln(2);\n\n // CLI description\n if (metadata.description) {\n msg += formatTitle(\"Description\") + ln(1);\n msg += indent(2) + c.description(metadata.description).replace(/\\n+/g, \"\\n\" + indent(2)) + ln(2);\n }\n\n let longest = 0;\n\n // Prepare CLI options\n const optionsMetadata = metadata.options;\n\n const longestOptionTitle = optionsMetadata.reduce((acc, metadata) => {\n const names = metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(\", \");\n const optLength = names.length + metadata.placeholder.length;\n return optLength > acc ? optLength : acc;\n }, 0);\n\n if (longestOptionTitle > longest) {\n longest = longestOptionTitle;\n }\n\n // Prepare CLI commands\n const subcommandsMetadata = metadata.subcommands;\n\n const longestSubcommandTitle = subcommandsMetadata.reduce((acc, metadata) => {\n const names = metadata.aliases.concat([metadata.name]).join(\", \");\n const placeholder = subcommandPlaceholder(metadata);\n const optLength = names.length + placeholder.length;\n return optLength > acc ? optLength : acc;\n }, 0);\n\n if (longestSubcommandTitle > longest) {\n longest = longestSubcommandTitle;\n }\n\n // Prepare CLI arguments\n const argsMetadata = metadata.arguments;\n const longestArgTitle = argsMetadata.reduce((acc, arg) => (arg.name.length > acc ? arg.name.length : acc), 0);\n if (longestArgTitle > longest) {\n longest = longestArgTitle;\n }\n\n // CLI options\n msg += formatHelpMsgOptions(optionsMetadata, c, longest);\n\n // CLI commands\n msg += formatHelpMsgCommands(subcommandsMetadata, c, longest);\n\n // CLI arguments\n msg += formatHelpMsgArguments(argsMetadata, c, longest);\n\n // CLI example\n if (metadata.example) {\n msg += formatTitle(\"Example\");\n msg += ln(1);\n const normalizeExample = metadata.example.replace(/\\n+/g, \"\\n\" + indent(3));\n msg += concat(indent(2), c.example(normalizeExample), ln(2));\n }\n\n return msg;\n}\n\nexport function formatSubcommandHelpMsg(subcommand: Subcommand, printStyle?: Partial<HelpMsgStyle>, cliName = \"\") {\n const c = helpMsgStyles.default;\n if (printStyle) Object.assign(c, printStyle);\n\n const usage =\n subcommand.usage ||\n concat(\n c.punctuation(\"$\"),\n cliName,\n c.command(subcommand.name),\n subcommand.options?.length ? c.option(\"[options]\") : \"\",\n subcommand.arguments?.length || subcommand.allowPositional ? c.argument(\"<arguments>\") : \"\",\n );\n\n const asCli: Cli = { cliName, usage, ...subcommand };\n\n return formatCliHelpMsg([asCli], c);\n}\n\nexport function printCliHelp(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>) {\n console.log(formatCliHelpMsg(params, style));\n}\n\nexport function printSubcommandHelp(subcommand: Subcommand, style?: Partial<HelpMsgStyle>, cliName = \"\") {\n console.log(formatSubcommandHelpMsg(subcommand, style, cliName));\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.generateMarkdown=generateMarkdown;var _getCliMetadata=require("../metadata/get-cli-metadata.js");function generateMarkdown(...params){const metadata=(0,_getCliMetadata.getCliMetadata)(params);let md="<!-- Auto-generated by zod-args-parser -->\n\n";md+=`# ${metadata.name}\n\n`;if(metadata.description){md+=`${metadata.description}\n`;}if(metadata.example){md+=renderExamples(metadata.example);}if(metadata.options.length){md+="\n## Options:\n\n";md+=renderOptions(metadata.options,3);}if(metadata.arguments.length){md+="\n## Arguments:\n\n";md+=renderArguments(metadata.arguments,3);}if(metadata.subcommands.length){md+="\n## Subcommands:\n\n";md+=renderSubcommands(metadata.subcommands);}return md;}function renderExamples(examples,list=false){let outStr="";const lang="bash";const listIndent=" ".repeat(list?2:0);outStr+="\n"+(list?"- ":"");outStr+="```"+lang+"\n";outStr+=listIndent+examples.replace(/\n/g,"\n"+listIndent);outStr+="\n"+listIndent+"```\n";return outStr;}function renderOptions(optionsMetadata=[],h){let outStr="";for(let i=0;i<optionsMetadata.length;i++){const metadata=optionsMetadata[i];const aliases=[metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outStr+=`${"#".repeat(h)} \`${aliases+placeholder}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example,true);}if(i<optionsMetadata.length-1){outStr+="\n";}}return outStr;}function renderArguments(argsMetadata=[],h){let outStr="";for(let i=0;i<argsMetadata.length;i++){const metadata=argsMetadata[i];outStr+=`${"#".repeat(h)} \`${metadata.name}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example);}if(i<argsMetadata.length-1){outStr+="\n";}}return outStr;}function renderSubcommands(subcommandsMetadata){let outStr="";for(let i=0;i<subcommandsMetadata.length;i++){const metadata=subcommandsMetadata[i];const aliases=[metadata.name].concat(metadata.aliases).join(", ");const placeholder=metadata.placeholder&&` ${
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.generateMarkdown=generateMarkdown;var _getCliMetadata=require("../metadata/get-cli-metadata.js");function generateMarkdown(...params){const metadata=(0,_getCliMetadata.getCliMetadata)(params);let md="<!-- Auto-generated by zod-args-parser -->\n\n";md+=`# ${metadata.name}\n\n`;if(metadata.description){md+=`${metadata.description}\n`;}if(metadata.example){md+=renderExamples(metadata.example);}if(metadata.options.length){md+="\n## Options:\n\n";md+=renderOptions(metadata.options,3);}if(metadata.arguments.length){md+="\n## Arguments:\n\n";md+=renderArguments(metadata.arguments,3);}if(metadata.subcommands.length){md+="\n## Subcommands:\n\n";md+=renderSubcommands(metadata.subcommands);}md=stripAnsi(md);md=escapeHtmlTags(md);return md;}function renderExamples(examples,list=false){let outStr="";const lang="bash";const listIndent=" ".repeat(list?2:0);outStr+="\n"+(list?"- ":"");outStr+="```"+lang+"\n";outStr+=listIndent+examples.replace(/\n/g,"\n"+listIndent);outStr+="\n"+listIndent+"```\n";return outStr;}function renderOptions(optionsMetadata=[],h){let outStr="";for(let i=0;i<optionsMetadata.length;i++){const metadata=optionsMetadata[i];const aliases=[metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outStr+=`${"#".repeat(h)} \`${aliases+placeholder}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example,true);}if(i<optionsMetadata.length-1){outStr+="\n";}}return outStr;}function renderArguments(argsMetadata=[],h){let outStr="";for(let i=0;i<argsMetadata.length;i++){const metadata=argsMetadata[i];outStr+=`${"#".repeat(h)} \`${metadata.name}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example);}if(i<argsMetadata.length-1){outStr+="\n";}}return outStr;}function renderSubcommands(subcommandsMetadata){let outStr="";for(let i=0;i<subcommandsMetadata.length;i++){const metadata=subcommandsMetadata[i];const aliases=[metadata.name].concat(metadata.aliases).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outStr+=`### ${aliases+placeholder}\n\n`;if(metadata.description){outStr+=`${metadata.description}\n`;}if(metadata.example){outStr+=renderExamples(metadata.example);}if(metadata.options.length){outStr+="\n#### Options:\n\n";outStr+=renderOptions(metadata.options,4);}if(metadata.arguments.length){outStr+="\n#### Arguments:\n\n";outStr+=renderArguments(metadata.arguments,4);}if(i<subcommandsMetadata.length-1){outStr+="\n---\n\n";}}return outStr;}function escapeHtmlTags(markdown){return markdown.replace(/(```[\s\S]*?```|`[^`]*`)|(<[^>]+>)/g,(_,code,html)=>{if(code){return code;}return html.replace(/[&<>]/g,match=>{return{"&":"&","<":"<",">":">"}[match];});});}function ansiRegex({onlyFirst=false}={}){const ST="(?:\\u0007|\\u001B\\u005C|\\u009C)";const osc=`(?:\\u001B\\][\\s\\S]*?${ST})`;const csi="[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";const pattern=`${osc}|${csi}`;return new RegExp(pattern,onlyFirst?undefined:"g");}const regex=ansiRegex();function stripAnsi(string){return string.replace(regex,"");}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_getCliMetadata","require","generateMarkdown","params","metadata","getCliMetadata","md","name","description","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","examples","list","outStr","lang","listIndent","repeat","replace","optionsMetadata","h","i","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","optional","defaultValue","defaultValueAsString","argsMetadata","subcommandsMetadata","escapeTags","str"],"sourceRoot":"../../../src/markdown","sources":["generate-markdown.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/get-cli-metadata.js\";\n\nimport type { ArgumentMetadata, OptionMetadata, SubcommandMetadata } from \"../metadata/metadata-types.js\";\nimport type { Cli, Subcommand } from \"../types.js\";\n\nexport function generateMarkdown(...params: [Cli, ...Subcommand[]]): string {\n const metadata = getCliMetadata(params);\n\n let md = \"<!-- Auto-generated by zod-args-parser -->\\n\\n\";\n\n // Title\n md += `# ${metadata.name}\\n\\n`;\n\n // Description\n if (metadata.description) {\n md += `${metadata.description}\\n`;\n }\n\n // Examples\n if (metadata.example) {\n md += renderExamples(metadata.example);\n }\n\n // Options\n if (metadata.options.length) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length) {\n md += \"\\n## Subcommands:\\n\\n\";\n md += renderSubcommands(metadata.subcommands);\n }\n\n return md;\n}\n\nfunction renderExamples(examples: string, list = false) {\n let outStr = \"\";\n\n const lang = \"bash\";\n\n const listIndent = \" \".repeat(list ? 2 : 0);\n\n outStr += \"\\n\" + (list ? \"- \" : \"\");\n\n outStr += \"```\" + lang + \"\\n\";\n outStr += listIndent + examples.replace(/\\n/g, \"\\n\" + listIndent);\n outStr += \"\\n\" + listIndent + \"```\\n\";\n\n return outStr;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < optionsMetadata.length; i++) {\n const metadata = optionsMetadata[i];\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outStr += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example, true);\n }\n\n if (i < optionsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderArguments(argsMetadata: ArgumentMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < argsMetadata.length; i++) {\n const metadata = argsMetadata[i];\n\n outStr += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (i < argsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outStr = \"\";\n\n for (let i = 0; i < subcommandsMetadata.length; i++) {\n const metadata = subcommandsMetadata[i];\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${escapeTags(metadata.placeholder)}`;\n\n outStr += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description) {\n outStr += `${metadata.description}\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (metadata.options.length) {\n outStr += \"\\n#### Options:\\n\\n\";\n outStr += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length) {\n outStr += \"\\n#### Arguments:\\n\\n\";\n outStr += renderArguments(metadata.arguments, 4);\n }\n\n if (i < subcommandsMetadata.length - 1) {\n outStr += \"\\n---\\n\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction escapeTags(str: string) {\n return str.replace(/</g, \"<\").replace(/>/g, \">\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_getCliMetadata","require","generateMarkdown","params","metadata","getCliMetadata","md","name","description","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","stripAnsi","escapeHtmlTags","examples","list","outStr","lang","listIndent","repeat","replace","optionsMetadata","h","i","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","optional","defaultValue","defaultValueAsString","argsMetadata","subcommandsMetadata","markdown","_","code","html","match","ansiRegex","onlyFirst","ST","osc","csi","pattern","RegExp","undefined","regex","string"],"sourceRoot":"../../../src/markdown","sources":["generate-markdown.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/get-cli-metadata.js\";\n\nimport type { ArgumentMetadata, OptionMetadata, SubcommandMetadata } from \"../metadata/metadata-types.js\";\nimport type { Cli, Subcommand } from \"../types.js\";\n\nexport function generateMarkdown(...params: [Cli, ...Subcommand[]]): string {\n const metadata = getCliMetadata(params);\n\n let md = \"<!-- Auto-generated by zod-args-parser -->\\n\\n\";\n\n // Title\n md += `# ${metadata.name}\\n\\n`;\n\n // Description\n if (metadata.description) {\n md += `${metadata.description}\\n`;\n }\n\n // Examples\n if (metadata.example) {\n md += renderExamples(metadata.example);\n }\n\n // Options\n if (metadata.options.length) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length) {\n md += \"\\n## Subcommands:\\n\\n\";\n md += renderSubcommands(metadata.subcommands);\n }\n\n md = stripAnsi(md);\n md = escapeHtmlTags(md);\n\n return md;\n}\n\nfunction renderExamples(examples: string, list = false) {\n let outStr = \"\";\n\n const lang = \"bash\";\n\n const listIndent = \" \".repeat(list ? 2 : 0);\n\n outStr += \"\\n\" + (list ? \"- \" : \"\");\n\n outStr += \"```\" + lang + \"\\n\";\n outStr += listIndent + examples.replace(/\\n/g, \"\\n\" + listIndent);\n outStr += \"\\n\" + listIndent + \"```\\n\";\n\n return outStr;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < optionsMetadata.length; i++) {\n const metadata = optionsMetadata[i];\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outStr += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example, true);\n }\n\n if (i < optionsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderArguments(argsMetadata: ArgumentMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < argsMetadata.length; i++) {\n const metadata = argsMetadata[i];\n\n outStr += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (i < argsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outStr = \"\";\n\n for (let i = 0; i < subcommandsMetadata.length; i++) {\n const metadata = subcommandsMetadata[i];\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outStr += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description) {\n outStr += `${metadata.description}\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (metadata.options.length) {\n outStr += \"\\n#### Options:\\n\\n\";\n outStr += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length) {\n outStr += \"\\n#### Arguments:\\n\\n\";\n outStr += renderArguments(metadata.arguments, 4);\n }\n\n if (i < subcommandsMetadata.length - 1) {\n outStr += \"\\n---\\n\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction escapeHtmlTags(markdown: string) {\n return markdown.replace(/(```[\\s\\S]*?```|`[^`]*`)|(<[^>]+>)/g, (_: string, code: string, html: string) => {\n if (code) {\n return code;\n }\n\n return html.replace(/[&<>]/g, match => {\n return { \"&\": \"&\", \"<\": \"<\", \">\": \">\" }[match as \"&\" | \"<\" | \">\"];\n });\n });\n}\n\n/** Credits: https://github.com/chalk/ansi-regex */\nfunction ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = \"(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)\";\n\n // OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n const osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n // CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n const csi = \"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\n\n const pattern = `${osc}|${csi}`;\n\n return new RegExp(pattern, onlyFirst ? undefined : \"g\");\n}\n\nconst regex = ansiRegex();\n\nfunction stripAnsi(string: string): string {\n return string.replace(regex, \"\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.isBooleanSchema=isBooleanSchema;exports.isOptionalSchema=isOptionalSchema;exports.safeParseSchema=safeParseSchema;exports.schemaDefaultValue=schemaDefaultValue;exports.schemaDescription=schemaDescription;exports.stringToArray=stringToArray;exports.stringToSet=stringToSet;var _v=require("zod/v3");var _core=require("zod/v4/core");function isV4Schema(schema){return"_zod"in schema;}function safeParseSchema(schema,value){if(isV4Schema(schema)){return(0,_core.safeParse)(schema,value);}return schema.safeParse(value);}function isBooleanSchema(schema){if(isV4Schema(schema)){return isBooleanV4Schema(schema);}return isBooleanV3Schema(schema);}function isBooleanV4Schema(schema){let def=schema._zod.def;while(def){if(def.type==="boolean"){return true;}if(isV4DefPipe(def)){return isBooleanV4Schema(def.out);}if(!isV4DefWithInnerType(def)){return false;}def=def.innerType._zod.def;}return false;}function isBooleanV3Schema(schema){let type=schema;while(type){if(type instanceof _v.ZodBoolean){return true;}if(type instanceof _v.ZodEffects){return isBooleanV3Schema(type._def.schema);}type=type._def.innerType;}return false;}function schemaDefaultValue(schema){if(isV4Schema(schema)){return schemaV4DefaultValue(schema);}return schemaV3DefaultValue(schema);}function schemaV4DefaultValue(schema){let def=schema._zod.def;while(def){if(isDefaultV4Def(def)){return def.defaultValue;}if(isV4DefPipe(def)){return schemaV4DefaultValue(def.out);}if(!isV4DefWithInnerType(def)){return undefined;}def=def.innerType._zod.def;}return undefined;}function schemaV3DefaultValue(schema){let type=schema;while(type){if(type instanceof _v.ZodDefault){return type._def.defaultValue();}if(type instanceof _v.ZodEffects){return schemaV3DefaultValue(type._def.schema);}type=type._def.innerType;}return undefined;}function schemaDescription(schema){if(isV4Schema(schema)){if(!("meta"in schema)||typeof schema.meta!=="function")return;return schema.meta()?.description;}return schema.description;}function isOptionalSchema(schema){if(isV4Schema(schema)){return schema._zod.def.type==="optional"||schema._zod.def.type==="default";}return schema.isOptional();}function isDefaultV4Def(def){return def.type==="default";}function isV4DefWithInnerType(def){return new Set(["default","prefault","optional","nonoptional","nullable","success","catch","readonly","promise"]).has(def.type);}function isV4DefPipe(def){return def.type==="pipe";}function stringToArray(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.isBooleanSchema=isBooleanSchema;exports.isOptionalSchema=isOptionalSchema;exports.safeParseSchema=safeParseSchema;exports.schemaDefaultValue=schemaDefaultValue;exports.schemaDescription=schemaDescription;exports.stringToArray=stringToArray;exports.stringToSet=stringToSet;var _v=require("zod/v3");var _core=require("zod/v4/core");function isV4Schema(schema){return"_zod"in schema;}function safeParseSchema(schema,value){if(isV4Schema(schema)){return(0,_core.safeParse)(schema,value);}return schema.safeParse(value);}function isBooleanSchema(schema){if(isV4Schema(schema)){return isBooleanV4Schema(schema);}return isBooleanV3Schema(schema);}function isBooleanV4Schema(schema){let def=schema._zod.def;while(def){if(def.type==="boolean"){return true;}if(isV4DefPipe(def)){return isBooleanV4Schema(def.out);}if(!isV4DefWithInnerType(def)){return false;}def=def.innerType._zod.def;}return false;}function isBooleanV3Schema(schema){let type=schema;while(type){if(type instanceof _v.ZodBoolean){return true;}if(type instanceof _v.ZodEffects){return isBooleanV3Schema(type._def.schema);}type=type._def.innerType;}return false;}function schemaDefaultValue(schema){if(isV4Schema(schema)){return schemaV4DefaultValue(schema);}return schemaV3DefaultValue(schema);}function schemaV4DefaultValue(schema){let def=schema._zod.def;while(def){if(isDefaultV4Def(def)){return def.defaultValue;}if(isV4DefPipe(def)){return schemaV4DefaultValue(def.out);}if(!isV4DefWithInnerType(def)){return undefined;}def=def.innerType._zod.def;}return undefined;}function schemaV3DefaultValue(schema){let type=schema;while(type){if(type instanceof _v.ZodDefault){return type._def.defaultValue();}if(type instanceof _v.ZodEffects){return schemaV3DefaultValue(type._def.schema);}type=type._def.innerType;}return undefined;}function schemaDescription(schema){if(isV4Schema(schema)){if(!("meta"in schema)||typeof schema.meta!=="function")return;return schema.meta()?.description;}return schema.description;}function isOptionalSchema(schema){if(isV4Schema(schema)){return schema._zod.def.type==="optional"||schema._zod.def.type==="default";}return schema.isOptional();}function isDefaultV4Def(def){return def.type==="default";}function isV4DefWithInnerType(def){return new Set(["default","prefault","optional","nonoptional","nullable","success","catch","readonly","promise"]).has(def.type);}function isV4DefPipe(def){return def.type==="pipe";}function stringToArray(stringValue,separator=","){return stringValue.split(separator).map(s=>s.trim()).filter(Boolean);}function stringToSet(stringValue,separator=","){const maybeArray=stringToArray(stringValue,separator);return new Set(maybeArray);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_v","require","_core","isV4Schema","schema","safeParseSchema","value","safeParse","isBooleanSchema","isBooleanV4Schema","isBooleanV3Schema","def","_zod","type","isV4DefPipe","out","isV4DefWithInnerType","innerType","ZodBoolean","ZodEffects","_def","schemaDefaultValue","schemaV4DefaultValue","schemaV3DefaultValue","isDefaultV4Def","defaultValue","undefined","ZodDefault","schemaDescription","meta","description","isOptionalSchema","isOptional","Set","has","stringToArray","
|
|
1
|
+
{"version":3,"names":["_v","require","_core","isV4Schema","schema","safeParseSchema","value","safeParse","isBooleanSchema","isBooleanV4Schema","isBooleanV3Schema","def","_zod","type","isV4DefPipe","out","isV4DefWithInnerType","innerType","ZodBoolean","ZodEffects","_def","schemaDefaultValue","schemaV4DefaultValue","schemaV3DefaultValue","isDefaultV4Def","defaultValue","undefined","ZodDefault","schemaDescription","meta","description","isOptionalSchema","isOptional","Set","has","stringToArray","stringValue","separator","split","map","s","trim","filter","Boolean","stringToSet","maybeArray"],"sourceRoot":"../../src","sources":["zod-utils.ts"],"sourcesContent":["import { ZodBoolean, ZodDefault, ZodEffects } from \"zod/v3\";\nimport { safeParse } from \"zod/v4/core\";\n\nimport type * as Z4 from \"zod/v4/core\";\nimport type { Schema, SchemaV3, SchemaV4 } from \"./types.js\";\n\nfunction isV4Schema(schema: Schema): schema is SchemaV4 {\n return \"_zod\" in schema;\n}\n\n/** - Safe parse a value against a schema */\nexport function safeParseSchema(schema: Schema, value: unknown) {\n if (isV4Schema(schema)) {\n return safeParse(schema, value);\n }\n\n return schema.safeParse(value);\n}\n\n/** - Check if a schema is a boolean */\nexport function isBooleanSchema(schema: Schema): boolean {\n if (isV4Schema(schema)) {\n return isBooleanV4Schema(schema);\n }\n\n return isBooleanV3Schema(schema);\n}\n\nfunction isBooleanV4Schema(schema: SchemaV4): boolean {\n let def = schema._zod.def;\n\n while (def) {\n if (def.type === \"boolean\") {\n return true;\n }\n\n if (isV4DefPipe(def)) {\n return isBooleanV4Schema(def.out);\n }\n\n if (!isV4DefWithInnerType(def)) {\n return false;\n }\n\n def = def.innerType._zod.def;\n }\n\n return false;\n}\n\nfunction isBooleanV3Schema(schema: SchemaV3): boolean {\n let type = schema;\n while (type) {\n if (type instanceof ZodBoolean) {\n return true;\n }\n\n if (type instanceof ZodEffects) {\n return isBooleanV3Schema(type._def.schema);\n }\n\n type = type._def.innerType;\n }\n\n return false;\n}\n\n/** - Get the default value of a schema */\nexport function schemaDefaultValue(schema: Schema): unknown | undefined {\n if (isV4Schema(schema)) {\n return schemaV4DefaultValue(schema);\n }\n\n return schemaV3DefaultValue(schema);\n}\n\nfunction schemaV4DefaultValue(schema: SchemaV4): unknown | undefined {\n let def = schema._zod.def;\n\n while (def) {\n if (isDefaultV4Def(def)) {\n return def.defaultValue;\n }\n\n if (isV4DefPipe(def)) {\n return schemaV4DefaultValue(def.out);\n }\n\n if (!isV4DefWithInnerType(def)) {\n return undefined;\n }\n\n def = def.innerType._zod.def;\n }\n\n return undefined;\n}\n\nfunction schemaV3DefaultValue(schema: SchemaV3): unknown | undefined {\n let type = schema;\n while (type) {\n if (type instanceof ZodDefault) {\n return type._def.defaultValue();\n }\n\n if (type instanceof ZodEffects) {\n return schemaV3DefaultValue(type._def.schema);\n }\n\n type = type._def.innerType;\n }\n\n return undefined;\n}\n\n/** - Get the description of a schema */\nexport function schemaDescription(schema: Schema): string | undefined {\n if (isV4Schema(schema)) {\n if (!(\"meta\" in schema) || typeof schema.meta !== \"function\") return;\n return schema.meta()?.description;\n }\n\n return schema.description;\n}\n\n/** - Check if a schema is optional */\nexport function isOptionalSchema(schema: Schema): schema is Z4.$ZodOptional {\n if (isV4Schema(schema)) {\n return schema._zod.def.type === \"optional\" || schema._zod.def.type === \"default\";\n }\n\n return schema.isOptional();\n}\n\nfunction isDefaultV4Def(def: Z4.$ZodTypeDef): def is Z4.$ZodDefaultDef {\n return def.type === \"default\";\n}\n\ntype SchemaWithInnerType =\n | Z4.$ZodDefaultDef\n | Z4.$ZodPrefaultDef\n | Z4.$ZodOptionalDef\n | Z4.$ZodNonOptionalDef\n | Z4.$ZodNullableDef\n | Z4.$ZodSuccessDef\n | Z4.$ZodCatchDef\n | Z4.$ZodReadonlyDef\n | Z4.$ZodPromiseDef;\n\nfunction isV4DefWithInnerType(def: Z4.$ZodTypeDef): def is SchemaWithInnerType {\n return new Set([\n \"default\",\n \"prefault\",\n \"optional\",\n \"nonoptional\",\n \"nullable\",\n \"success\",\n \"catch\",\n \"readonly\",\n \"promise\",\n ]).has(def.type);\n}\n\nfunction isV4DefPipe(def: Z4.$ZodTypeDef): def is Z4.$ZodPipeDef {\n return def.type === \"pipe\";\n}\n\n/**\n * A preprocessing function for Zod that converts a string to an array of strings.\n *\n * @param stringValue - The string value given by zod.\n * @param separator - The separator to use when splitting the string. Defaults to \",\".\n */\nexport function stringToArray(stringValue: string, separator: string = \",\"): string[] {\n return stringValue\n .split(separator)\n .map(s => s.trim())\n .filter(Boolean);\n}\n\n/**\n * A preprocessing function for Zod that converts a string to a `Set` of strings.\n *\n * @param stringValue - The string value given by zod.\n * @param separator - The separator to use when splitting the string. Defaults to \",\".\n */\nexport function stringToSet(stringValue: string, separator: string = \",\"): Set<string> {\n const maybeArray = stringToArray(stringValue, separator);\n return new Set(maybeArray);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getCliMetadata}from"../metadata/get-cli-metadata.js";import{concat,indent,ln,subcommandPlaceholder}from"../utils.js";import{formatHelpMsgArguments}from"./format-arguments.js";import{formatHelpMsgOptions}from"./format-options.js";import{formatHelpMsgCommands}from"./format-subcommands.js";import{helpMsgStyles}from"./styles.js";export function formatCliHelpMsg(params,style){const c=helpMsgStyles.default;if(style)Object.assign(c,style);const metadata=getCliMetadata(params);const formatTitle=title=>c.title(` ${title.toUpperCase()}`);let msg="";const usage=metadata.usage||concat(c.punctuation("$"),c.description(metadata.name),metadata.subcommands.length?c.command("[command]"):"",metadata.options.length?c.option("[options]"):"",metadata.arguments.length?c.argument("<arguments>"):"",metadata.allowPositional?c.argument("<positionals>"):"");msg+=formatTitle("Usage")+ln(1);msg+=indent(2)+usage+ln(2);if(metadata.description){msg+=formatTitle("Description")+ln(1);msg+=indent(2)+c.description(metadata.description)+ln(2);}let longest=0;const optionsMetadata=metadata.options;const longestOptionTitle=optionsMetadata.reduce((acc,metadata)=>{const names=metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(", ");const optLength=names.length+metadata.placeholder.length;return optLength>acc?optLength:acc;},0);if(longestOptionTitle>longest){longest=longestOptionTitle;}const subcommandsMetadata=metadata.subcommands;const longestSubcommandTitle=subcommandsMetadata.reduce((acc,metadata)=>{const names=metadata.aliases.concat([metadata.name]).join(", ");const placeholder=subcommandPlaceholder(metadata);const optLength=names.length+placeholder.length;return optLength>acc?optLength:acc;},0);if(longestSubcommandTitle>longest){longest=longestSubcommandTitle;}const argsMetadata=metadata.arguments;const longestArgTitle=argsMetadata.reduce((acc,arg)=>arg.name.length>acc?arg.name.length:acc,0);if(longestArgTitle>longest){longest=longestArgTitle;}msg+=formatHelpMsgOptions(optionsMetadata,c,longest);msg+=formatHelpMsgCommands(subcommandsMetadata,c,longest);msg+=formatHelpMsgArguments(argsMetadata,c,longest);if(metadata.example){msg+=formatTitle("Example");msg+=ln(1);const normalizeExample=metadata.example.replace(/\n+/g,"\n"+indent(3));msg+=concat(indent(2),c.example(normalizeExample),ln(2));}return msg;}export function formatSubcommandHelpMsg(subcommand,printStyle,cliName=""){const c=helpMsgStyles.default;if(printStyle)Object.assign(c,printStyle);const usage=subcommand.usage||concat(c.punctuation("$"),cliName,c.command(subcommand.name),subcommand.options?.length?c.option("[options]"):"",subcommand.arguments?.length||subcommand.allowPositional?c.argument("<arguments>"):"");const asCli={cliName,usage,...subcommand};return formatCliHelpMsg([asCli],c);}export function printCliHelp(params,style){console.log(formatCliHelpMsg(params,style));}export function printSubcommandHelp(subcommand,style,cliName=""){console.log(formatSubcommandHelpMsg(subcommand,style,cliName));}
|
|
1
|
+
import{getCliMetadata}from"../metadata/get-cli-metadata.js";import{concat,indent,ln,subcommandPlaceholder}from"../utils.js";import{formatHelpMsgArguments}from"./format-arguments.js";import{formatHelpMsgOptions}from"./format-options.js";import{formatHelpMsgCommands}from"./format-subcommands.js";import{helpMsgStyles}from"./styles.js";export function formatCliHelpMsg(params,style){const c=helpMsgStyles.default;if(style)Object.assign(c,style);const metadata=getCliMetadata(params);const formatTitle=title=>c.title(` ${title.toUpperCase()}`);let msg="";const usage=metadata.usage||concat(c.punctuation("$"),c.description(metadata.name),metadata.subcommands.length?c.command("[command]"):"",metadata.options.length?c.option("[options]"):"",metadata.arguments.length?c.argument("<arguments>"):"",metadata.allowPositional?c.argument("<positionals>"):"");msg+=formatTitle("Usage")+ln(1);msg+=indent(2)+usage+ln(2);if(metadata.description){msg+=formatTitle("Description")+ln(1);msg+=indent(2)+c.description(metadata.description).replace(/\n+/g,"\n"+indent(2))+ln(2);}let longest=0;const optionsMetadata=metadata.options;const longestOptionTitle=optionsMetadata.reduce((acc,metadata)=>{const names=metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(", ");const optLength=names.length+metadata.placeholder.length;return optLength>acc?optLength:acc;},0);if(longestOptionTitle>longest){longest=longestOptionTitle;}const subcommandsMetadata=metadata.subcommands;const longestSubcommandTitle=subcommandsMetadata.reduce((acc,metadata)=>{const names=metadata.aliases.concat([metadata.name]).join(", ");const placeholder=subcommandPlaceholder(metadata);const optLength=names.length+placeholder.length;return optLength>acc?optLength:acc;},0);if(longestSubcommandTitle>longest){longest=longestSubcommandTitle;}const argsMetadata=metadata.arguments;const longestArgTitle=argsMetadata.reduce((acc,arg)=>arg.name.length>acc?arg.name.length:acc,0);if(longestArgTitle>longest){longest=longestArgTitle;}msg+=formatHelpMsgOptions(optionsMetadata,c,longest);msg+=formatHelpMsgCommands(subcommandsMetadata,c,longest);msg+=formatHelpMsgArguments(argsMetadata,c,longest);if(metadata.example){msg+=formatTitle("Example");msg+=ln(1);const normalizeExample=metadata.example.replace(/\n+/g,"\n"+indent(3));msg+=concat(indent(2),c.example(normalizeExample),ln(2));}return msg;}export function formatSubcommandHelpMsg(subcommand,printStyle,cliName=""){const c=helpMsgStyles.default;if(printStyle)Object.assign(c,printStyle);const usage=subcommand.usage||concat(c.punctuation("$"),cliName,c.command(subcommand.name),subcommand.options?.length?c.option("[options]"):"",subcommand.arguments?.length||subcommand.allowPositional?c.argument("<arguments>"):"");const asCli={cliName,usage,...subcommand};return formatCliHelpMsg([asCli],c);}export function printCliHelp(params,style){console.log(formatCliHelpMsg(params,style));}export function printSubcommandHelp(subcommand,style,cliName=""){console.log(formatSubcommandHelpMsg(subcommand,style,cliName));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCliMetadata","concat","indent","ln","subcommandPlaceholder","formatHelpMsgArguments","formatHelpMsgOptions","formatHelpMsgCommands","helpMsgStyles","formatCliHelpMsg","params","style","c","default","Object","assign","metadata","formatTitle","title","toUpperCase","msg","usage","punctuation","description","name","subcommands","length","command","options","option","arguments","argument","allowPositional","longest","optionsMetadata","longestOptionTitle","reduce","acc","names","aliasesAsArgs","nameAsArg","join","optLength","placeholder","subcommandsMetadata","longestSubcommandTitle","aliases","argsMetadata","longestArgTitle","arg","example","normalizeExample","
|
|
1
|
+
{"version":3,"names":["getCliMetadata","concat","indent","ln","subcommandPlaceholder","formatHelpMsgArguments","formatHelpMsgOptions","formatHelpMsgCommands","helpMsgStyles","formatCliHelpMsg","params","style","c","default","Object","assign","metadata","formatTitle","title","toUpperCase","msg","usage","punctuation","description","name","subcommands","length","command","options","option","arguments","argument","allowPositional","replace","longest","optionsMetadata","longestOptionTitle","reduce","acc","names","aliasesAsArgs","nameAsArg","join","optLength","placeholder","subcommandsMetadata","longestSubcommandTitle","aliases","argsMetadata","longestArgTitle","arg","example","normalizeExample","formatSubcommandHelpMsg","subcommand","printStyle","cliName","asCli","printCliHelp","console","log","printSubcommandHelp"],"sourceRoot":"../../../src/help-message","sources":["format-cli.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/get-cli-metadata.js\";\nimport { concat, indent, ln, subcommandPlaceholder } from \"../utils.js\";\nimport { formatHelpMsgArguments } from \"./format-arguments.js\";\nimport { formatHelpMsgOptions } from \"./format-options.js\";\nimport { formatHelpMsgCommands } from \"./format-subcommands.js\";\nimport { helpMsgStyles } from \"./styles.js\";\n\nimport type { Cli, HelpMsgStyle, Subcommand } from \"../types.js\";\n\nexport function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>): string {\n const c = helpMsgStyles.default;\n if (style) Object.assign(c, style);\n\n const metadata = getCliMetadata(params);\n\n const formatTitle = (title: string) => c.title(` ${title.toUpperCase()}`);\n\n let msg = \"\";\n\n // CLI usage\n const usage =\n metadata.usage ||\n concat(\n c.punctuation(\"$\"),\n c.description(metadata.name),\n metadata.subcommands.length ? c.command(\"[command]\") : \"\",\n metadata.options.length ? c.option(\"[options]\") : \"\",\n metadata.arguments.length ? c.argument(\"<arguments>\") : \"\",\n metadata.allowPositional ? c.argument(\"<positionals>\") : \"\",\n );\n msg += formatTitle(\"Usage\") + ln(1);\n msg += indent(2) + usage + ln(2);\n\n // CLI description\n if (metadata.description) {\n msg += formatTitle(\"Description\") + ln(1);\n msg += indent(2) + c.description(metadata.description).replace(/\\n+/g, \"\\n\" + indent(2)) + ln(2);\n }\n\n let longest = 0;\n\n // Prepare CLI options\n const optionsMetadata = metadata.options;\n\n const longestOptionTitle = optionsMetadata.reduce((acc, metadata) => {\n const names = metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(\", \");\n const optLength = names.length + metadata.placeholder.length;\n return optLength > acc ? optLength : acc;\n }, 0);\n\n if (longestOptionTitle > longest) {\n longest = longestOptionTitle;\n }\n\n // Prepare CLI commands\n const subcommandsMetadata = metadata.subcommands;\n\n const longestSubcommandTitle = subcommandsMetadata.reduce((acc, metadata) => {\n const names = metadata.aliases.concat([metadata.name]).join(\", \");\n const placeholder = subcommandPlaceholder(metadata);\n const optLength = names.length + placeholder.length;\n return optLength > acc ? optLength : acc;\n }, 0);\n\n if (longestSubcommandTitle > longest) {\n longest = longestSubcommandTitle;\n }\n\n // Prepare CLI arguments\n const argsMetadata = metadata.arguments;\n const longestArgTitle = argsMetadata.reduce((acc, arg) => (arg.name.length > acc ? arg.name.length : acc), 0);\n if (longestArgTitle > longest) {\n longest = longestArgTitle;\n }\n\n // CLI options\n msg += formatHelpMsgOptions(optionsMetadata, c, longest);\n\n // CLI commands\n msg += formatHelpMsgCommands(subcommandsMetadata, c, longest);\n\n // CLI arguments\n msg += formatHelpMsgArguments(argsMetadata, c, longest);\n\n // CLI example\n if (metadata.example) {\n msg += formatTitle(\"Example\");\n msg += ln(1);\n const normalizeExample = metadata.example.replace(/\\n+/g, \"\\n\" + indent(3));\n msg += concat(indent(2), c.example(normalizeExample), ln(2));\n }\n\n return msg;\n}\n\nexport function formatSubcommandHelpMsg(subcommand: Subcommand, printStyle?: Partial<HelpMsgStyle>, cliName = \"\") {\n const c = helpMsgStyles.default;\n if (printStyle) Object.assign(c, printStyle);\n\n const usage =\n subcommand.usage ||\n concat(\n c.punctuation(\"$\"),\n cliName,\n c.command(subcommand.name),\n subcommand.options?.length ? c.option(\"[options]\") : \"\",\n subcommand.arguments?.length || subcommand.allowPositional ? c.argument(\"<arguments>\") : \"\",\n );\n\n const asCli: Cli = { cliName, usage, ...subcommand };\n\n return formatCliHelpMsg([asCli], c);\n}\n\nexport function printCliHelp(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>) {\n console.log(formatCliHelpMsg(params, style));\n}\n\nexport function printSubcommandHelp(subcommand: Subcommand, style?: Partial<HelpMsgStyle>, cliName = \"\") {\n console.log(formatSubcommandHelpMsg(subcommand, style, cliName));\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getCliMetadata}from"../metadata/get-cli-metadata.js";export function generateMarkdown(...params){const metadata=getCliMetadata(params);let md="<!-- Auto-generated by zod-args-parser -->\n\n";md+=`# ${metadata.name}\n\n`;if(metadata.description){md+=`${metadata.description}\n`;}if(metadata.example){md+=renderExamples(metadata.example);}if(metadata.options.length){md+="\n## Options:\n\n";md+=renderOptions(metadata.options,3);}if(metadata.arguments.length){md+="\n## Arguments:\n\n";md+=renderArguments(metadata.arguments,3);}if(metadata.subcommands.length){md+="\n## Subcommands:\n\n";md+=renderSubcommands(metadata.subcommands);}return md;}function renderExamples(examples,list=false){let outStr="";const lang="bash";const listIndent=" ".repeat(list?2:0);outStr+="\n"+(list?"- ":"");outStr+="```"+lang+"\n";outStr+=listIndent+examples.replace(/\n/g,"\n"+listIndent);outStr+="\n"+listIndent+"```\n";return outStr;}function renderOptions(optionsMetadata=[],h){let outStr="";for(let i=0;i<optionsMetadata.length;i++){const metadata=optionsMetadata[i];const aliases=[metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outStr+=`${"#".repeat(h)} \`${aliases+placeholder}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example,true);}if(i<optionsMetadata.length-1){outStr+="\n";}}return outStr;}function renderArguments(argsMetadata=[],h){let outStr="";for(let i=0;i<argsMetadata.length;i++){const metadata=argsMetadata[i];outStr+=`${"#".repeat(h)} \`${metadata.name}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example);}if(i<argsMetadata.length-1){outStr+="\n";}}return outStr;}function renderSubcommands(subcommandsMetadata){let outStr="";for(let i=0;i<subcommandsMetadata.length;i++){const metadata=subcommandsMetadata[i];const aliases=[metadata.name].concat(metadata.aliases).join(", ");const placeholder=metadata.placeholder&&` ${
|
|
1
|
+
import{getCliMetadata}from"../metadata/get-cli-metadata.js";export function generateMarkdown(...params){const metadata=getCliMetadata(params);let md="<!-- Auto-generated by zod-args-parser -->\n\n";md+=`# ${metadata.name}\n\n`;if(metadata.description){md+=`${metadata.description}\n`;}if(metadata.example){md+=renderExamples(metadata.example);}if(metadata.options.length){md+="\n## Options:\n\n";md+=renderOptions(metadata.options,3);}if(metadata.arguments.length){md+="\n## Arguments:\n\n";md+=renderArguments(metadata.arguments,3);}if(metadata.subcommands.length){md+="\n## Subcommands:\n\n";md+=renderSubcommands(metadata.subcommands);}md=stripAnsi(md);md=escapeHtmlTags(md);return md;}function renderExamples(examples,list=false){let outStr="";const lang="bash";const listIndent=" ".repeat(list?2:0);outStr+="\n"+(list?"- ":"");outStr+="```"+lang+"\n";outStr+=listIndent+examples.replace(/\n/g,"\n"+listIndent);outStr+="\n"+listIndent+"```\n";return outStr;}function renderOptions(optionsMetadata=[],h){let outStr="";for(let i=0;i<optionsMetadata.length;i++){const metadata=optionsMetadata[i];const aliases=[metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outStr+=`${"#".repeat(h)} \`${aliases+placeholder}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example,true);}if(i<optionsMetadata.length-1){outStr+="\n";}}return outStr;}function renderArguments(argsMetadata=[],h){let outStr="";for(let i=0;i<argsMetadata.length;i++){const metadata=argsMetadata[i];outStr+=`${"#".repeat(h)} \`${metadata.name}\``;if(metadata.optional){outStr+=" **[optional]**";}outStr+="\n\n";if(metadata.description){outStr+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`;}if(typeof metadata.defaultValue!=="undefined"){outStr+=`- **default:** \`${metadata.defaultValueAsString}\`\n`;}if(metadata.example){outStr+=renderExamples(metadata.example);}if(i<argsMetadata.length-1){outStr+="\n";}}return outStr;}function renderSubcommands(subcommandsMetadata){let outStr="";for(let i=0;i<subcommandsMetadata.length;i++){const metadata=subcommandsMetadata[i];const aliases=[metadata.name].concat(metadata.aliases).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outStr+=`### ${aliases+placeholder}\n\n`;if(metadata.description){outStr+=`${metadata.description}\n`;}if(metadata.example){outStr+=renderExamples(metadata.example);}if(metadata.options.length){outStr+="\n#### Options:\n\n";outStr+=renderOptions(metadata.options,4);}if(metadata.arguments.length){outStr+="\n#### Arguments:\n\n";outStr+=renderArguments(metadata.arguments,4);}if(i<subcommandsMetadata.length-1){outStr+="\n---\n\n";}}return outStr;}function escapeHtmlTags(markdown){return markdown.replace(/(```[\s\S]*?```|`[^`]*`)|(<[^>]+>)/g,(_,code,html)=>{if(code){return code;}return html.replace(/[&<>]/g,match=>{return{"&":"&","<":"<",">":">"}[match];});});}function ansiRegex({onlyFirst=false}={}){const ST="(?:\\u0007|\\u001B\\u005C|\\u009C)";const osc=`(?:\\u001B\\][\\s\\S]*?${ST})`;const csi="[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";const pattern=`${osc}|${csi}`;return new RegExp(pattern,onlyFirst?undefined:"g");}const regex=ansiRegex();function stripAnsi(string){return string.replace(regex,"");}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCliMetadata","generateMarkdown","params","metadata","md","name","description","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","examples","list","outStr","lang","listIndent","repeat","replace","optionsMetadata","h","i","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","optional","defaultValue","defaultValueAsString","argsMetadata","subcommandsMetadata","escapeTags","str"],"sourceRoot":"../../../src/markdown","sources":["generate-markdown.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/get-cli-metadata.js\";\n\nimport type { ArgumentMetadata, OptionMetadata, SubcommandMetadata } from \"../metadata/metadata-types.js\";\nimport type { Cli, Subcommand } from \"../types.js\";\n\nexport function generateMarkdown(...params: [Cli, ...Subcommand[]]): string {\n const metadata = getCliMetadata(params);\n\n let md = \"<!-- Auto-generated by zod-args-parser -->\\n\\n\";\n\n // Title\n md += `# ${metadata.name}\\n\\n`;\n\n // Description\n if (metadata.description) {\n md += `${metadata.description}\\n`;\n }\n\n // Examples\n if (metadata.example) {\n md += renderExamples(metadata.example);\n }\n\n // Options\n if (metadata.options.length) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length) {\n md += \"\\n## Subcommands:\\n\\n\";\n md += renderSubcommands(metadata.subcommands);\n }\n\n return md;\n}\n\nfunction renderExamples(examples: string, list = false) {\n let outStr = \"\";\n\n const lang = \"bash\";\n\n const listIndent = \" \".repeat(list ? 2 : 0);\n\n outStr += \"\\n\" + (list ? \"- \" : \"\");\n\n outStr += \"```\" + lang + \"\\n\";\n outStr += listIndent + examples.replace(/\\n/g, \"\\n\" + listIndent);\n outStr += \"\\n\" + listIndent + \"```\\n\";\n\n return outStr;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < optionsMetadata.length; i++) {\n const metadata = optionsMetadata[i];\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outStr += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example, true);\n }\n\n if (i < optionsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderArguments(argsMetadata: ArgumentMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < argsMetadata.length; i++) {\n const metadata = argsMetadata[i];\n\n outStr += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (i < argsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outStr = \"\";\n\n for (let i = 0; i < subcommandsMetadata.length; i++) {\n const metadata = subcommandsMetadata[i];\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${escapeTags(metadata.placeholder)}`;\n\n outStr += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description) {\n outStr += `${metadata.description}\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (metadata.options.length) {\n outStr += \"\\n#### Options:\\n\\n\";\n outStr += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length) {\n outStr += \"\\n#### Arguments:\\n\\n\";\n outStr += renderArguments(metadata.arguments, 4);\n }\n\n if (i < subcommandsMetadata.length - 1) {\n outStr += \"\\n---\\n\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction escapeTags(str: string) {\n return str.replace(/</g, \"<\").replace(/>/g, \">\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getCliMetadata","generateMarkdown","params","metadata","md","name","description","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","stripAnsi","escapeHtmlTags","examples","list","outStr","lang","listIndent","repeat","replace","optionsMetadata","h","i","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","optional","defaultValue","defaultValueAsString","argsMetadata","subcommandsMetadata","markdown","_","code","html","match","ansiRegex","onlyFirst","ST","osc","csi","pattern","RegExp","undefined","regex","string"],"sourceRoot":"../../../src/markdown","sources":["generate-markdown.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/get-cli-metadata.js\";\n\nimport type { ArgumentMetadata, OptionMetadata, SubcommandMetadata } from \"../metadata/metadata-types.js\";\nimport type { Cli, Subcommand } from \"../types.js\";\n\nexport function generateMarkdown(...params: [Cli, ...Subcommand[]]): string {\n const metadata = getCliMetadata(params);\n\n let md = \"<!-- Auto-generated by zod-args-parser -->\\n\\n\";\n\n // Title\n md += `# ${metadata.name}\\n\\n`;\n\n // Description\n if (metadata.description) {\n md += `${metadata.description}\\n`;\n }\n\n // Examples\n if (metadata.example) {\n md += renderExamples(metadata.example);\n }\n\n // Options\n if (metadata.options.length) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length) {\n md += \"\\n## Subcommands:\\n\\n\";\n md += renderSubcommands(metadata.subcommands);\n }\n\n md = stripAnsi(md);\n md = escapeHtmlTags(md);\n\n return md;\n}\n\nfunction renderExamples(examples: string, list = false) {\n let outStr = \"\";\n\n const lang = \"bash\";\n\n const listIndent = \" \".repeat(list ? 2 : 0);\n\n outStr += \"\\n\" + (list ? \"- \" : \"\");\n\n outStr += \"```\" + lang + \"\\n\";\n outStr += listIndent + examples.replace(/\\n/g, \"\\n\" + listIndent);\n outStr += \"\\n\" + listIndent + \"```\\n\";\n\n return outStr;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < optionsMetadata.length; i++) {\n const metadata = optionsMetadata[i];\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outStr += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example, true);\n }\n\n if (i < optionsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderArguments(argsMetadata: ArgumentMetadata[] = [], h: number) {\n let outStr = \"\";\n\n for (let i = 0; i < argsMetadata.length; i++) {\n const metadata = argsMetadata[i];\n\n outStr += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outStr += \" **[optional]**\";\n }\n\n outStr += \"\\n\\n\";\n\n if (metadata.description) {\n outStr += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (typeof metadata.defaultValue !== \"undefined\") {\n outStr += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (i < argsMetadata.length - 1) {\n outStr += \"\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outStr = \"\";\n\n for (let i = 0; i < subcommandsMetadata.length; i++) {\n const metadata = subcommandsMetadata[i];\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outStr += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description) {\n outStr += `${metadata.description}\\n`;\n }\n\n if (metadata.example) {\n outStr += renderExamples(metadata.example);\n }\n\n if (metadata.options.length) {\n outStr += \"\\n#### Options:\\n\\n\";\n outStr += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length) {\n outStr += \"\\n#### Arguments:\\n\\n\";\n outStr += renderArguments(metadata.arguments, 4);\n }\n\n if (i < subcommandsMetadata.length - 1) {\n outStr += \"\\n---\\n\\n\";\n }\n }\n\n return outStr;\n}\n\nfunction escapeHtmlTags(markdown: string) {\n return markdown.replace(/(```[\\s\\S]*?```|`[^`]*`)|(<[^>]+>)/g, (_: string, code: string, html: string) => {\n if (code) {\n return code;\n }\n\n return html.replace(/[&<>]/g, match => {\n return { \"&\": \"&\", \"<\": \"<\", \">\": \">\" }[match as \"&\" | \"<\" | \">\"];\n });\n });\n}\n\n/** Credits: https://github.com/chalk/ansi-regex */\nfunction ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = \"(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)\";\n\n // OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n const osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n // CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n const csi = \"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\n\n const pattern = `${osc}|${csi}`;\n\n return new RegExp(pattern, onlyFirst ? undefined : \"g\");\n}\n\nconst regex = ansiRegex();\n\nfunction stripAnsi(string: string): string {\n return string.replace(regex, \"\");\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/module/zod-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ZodBoolean,ZodDefault,ZodEffects}from"zod/v3";import{safeParse}from"zod/v4/core";function isV4Schema(schema){return"_zod"in schema;}export function safeParseSchema(schema,value){if(isV4Schema(schema)){return safeParse(schema,value);}return schema.safeParse(value);}export function isBooleanSchema(schema){if(isV4Schema(schema)){return isBooleanV4Schema(schema);}return isBooleanV3Schema(schema);}function isBooleanV4Schema(schema){let def=schema._zod.def;while(def){if(def.type==="boolean"){return true;}if(isV4DefPipe(def)){return isBooleanV4Schema(def.out);}if(!isV4DefWithInnerType(def)){return false;}def=def.innerType._zod.def;}return false;}function isBooleanV3Schema(schema){let type=schema;while(type){if(type instanceof ZodBoolean){return true;}if(type instanceof ZodEffects){return isBooleanV3Schema(type._def.schema);}type=type._def.innerType;}return false;}export function schemaDefaultValue(schema){if(isV4Schema(schema)){return schemaV4DefaultValue(schema);}return schemaV3DefaultValue(schema);}function schemaV4DefaultValue(schema){let def=schema._zod.def;while(def){if(isDefaultV4Def(def)){return def.defaultValue;}if(isV4DefPipe(def)){return schemaV4DefaultValue(def.out);}if(!isV4DefWithInnerType(def)){return undefined;}def=def.innerType._zod.def;}return undefined;}function schemaV3DefaultValue(schema){let type=schema;while(type){if(type instanceof ZodDefault){return type._def.defaultValue();}if(type instanceof ZodEffects){return schemaV3DefaultValue(type._def.schema);}type=type._def.innerType;}return undefined;}export function schemaDescription(schema){if(isV4Schema(schema)){if(!("meta"in schema)||typeof schema.meta!=="function")return;return schema.meta()?.description;}return schema.description;}export function isOptionalSchema(schema){if(isV4Schema(schema)){return schema._zod.def.type==="optional"||schema._zod.def.type==="default";}return schema.isOptional();}function isDefaultV4Def(def){return def.type==="default";}function isV4DefWithInnerType(def){return new Set(["default","prefault","optional","nonoptional","nullable","success","catch","readonly","promise"]).has(def.type);}function isV4DefPipe(def){return def.type==="pipe";}export function stringToArray(
|
|
1
|
+
import{ZodBoolean,ZodDefault,ZodEffects}from"zod/v3";import{safeParse}from"zod/v4/core";function isV4Schema(schema){return"_zod"in schema;}export function safeParseSchema(schema,value){if(isV4Schema(schema)){return safeParse(schema,value);}return schema.safeParse(value);}export function isBooleanSchema(schema){if(isV4Schema(schema)){return isBooleanV4Schema(schema);}return isBooleanV3Schema(schema);}function isBooleanV4Schema(schema){let def=schema._zod.def;while(def){if(def.type==="boolean"){return true;}if(isV4DefPipe(def)){return isBooleanV4Schema(def.out);}if(!isV4DefWithInnerType(def)){return false;}def=def.innerType._zod.def;}return false;}function isBooleanV3Schema(schema){let type=schema;while(type){if(type instanceof ZodBoolean){return true;}if(type instanceof ZodEffects){return isBooleanV3Schema(type._def.schema);}type=type._def.innerType;}return false;}export function schemaDefaultValue(schema){if(isV4Schema(schema)){return schemaV4DefaultValue(schema);}return schemaV3DefaultValue(schema);}function schemaV4DefaultValue(schema){let def=schema._zod.def;while(def){if(isDefaultV4Def(def)){return def.defaultValue;}if(isV4DefPipe(def)){return schemaV4DefaultValue(def.out);}if(!isV4DefWithInnerType(def)){return undefined;}def=def.innerType._zod.def;}return undefined;}function schemaV3DefaultValue(schema){let type=schema;while(type){if(type instanceof ZodDefault){return type._def.defaultValue();}if(type instanceof ZodEffects){return schemaV3DefaultValue(type._def.schema);}type=type._def.innerType;}return undefined;}export function schemaDescription(schema){if(isV4Schema(schema)){if(!("meta"in schema)||typeof schema.meta!=="function")return;return schema.meta()?.description;}return schema.description;}export function isOptionalSchema(schema){if(isV4Schema(schema)){return schema._zod.def.type==="optional"||schema._zod.def.type==="default";}return schema.isOptional();}function isDefaultV4Def(def){return def.type==="default";}function isV4DefWithInnerType(def){return new Set(["default","prefault","optional","nonoptional","nullable","success","catch","readonly","promise"]).has(def.type);}function isV4DefPipe(def){return def.type==="pipe";}export function stringToArray(stringValue,separator=","){return stringValue.split(separator).map(s=>s.trim()).filter(Boolean);}export function stringToSet(stringValue,separator=","){const maybeArray=stringToArray(stringValue,separator);return new Set(maybeArray);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ZodBoolean","ZodDefault","ZodEffects","safeParse","isV4Schema","schema","safeParseSchema","value","isBooleanSchema","isBooleanV4Schema","isBooleanV3Schema","def","_zod","type","isV4DefPipe","out","isV4DefWithInnerType","innerType","_def","schemaDefaultValue","schemaV4DefaultValue","schemaV3DefaultValue","isDefaultV4Def","defaultValue","undefined","schemaDescription","meta","description","isOptionalSchema","isOptional","Set","has","stringToArray","
|
|
1
|
+
{"version":3,"names":["ZodBoolean","ZodDefault","ZodEffects","safeParse","isV4Schema","schema","safeParseSchema","value","isBooleanSchema","isBooleanV4Schema","isBooleanV3Schema","def","_zod","type","isV4DefPipe","out","isV4DefWithInnerType","innerType","_def","schemaDefaultValue","schemaV4DefaultValue","schemaV3DefaultValue","isDefaultV4Def","defaultValue","undefined","schemaDescription","meta","description","isOptionalSchema","isOptional","Set","has","stringToArray","stringValue","separator","split","map","s","trim","filter","Boolean","stringToSet","maybeArray"],"sourceRoot":"../../src","sources":["zod-utils.ts"],"sourcesContent":["import { ZodBoolean, ZodDefault, ZodEffects } from \"zod/v3\";\nimport { safeParse } from \"zod/v4/core\";\n\nimport type * as Z4 from \"zod/v4/core\";\nimport type { Schema, SchemaV3, SchemaV4 } from \"./types.js\";\n\nfunction isV4Schema(schema: Schema): schema is SchemaV4 {\n return \"_zod\" in schema;\n}\n\n/** - Safe parse a value against a schema */\nexport function safeParseSchema(schema: Schema, value: unknown) {\n if (isV4Schema(schema)) {\n return safeParse(schema, value);\n }\n\n return schema.safeParse(value);\n}\n\n/** - Check if a schema is a boolean */\nexport function isBooleanSchema(schema: Schema): boolean {\n if (isV4Schema(schema)) {\n return isBooleanV4Schema(schema);\n }\n\n return isBooleanV3Schema(schema);\n}\n\nfunction isBooleanV4Schema(schema: SchemaV4): boolean {\n let def = schema._zod.def;\n\n while (def) {\n if (def.type === \"boolean\") {\n return true;\n }\n\n if (isV4DefPipe(def)) {\n return isBooleanV4Schema(def.out);\n }\n\n if (!isV4DefWithInnerType(def)) {\n return false;\n }\n\n def = def.innerType._zod.def;\n }\n\n return false;\n}\n\nfunction isBooleanV3Schema(schema: SchemaV3): boolean {\n let type = schema;\n while (type) {\n if (type instanceof ZodBoolean) {\n return true;\n }\n\n if (type instanceof ZodEffects) {\n return isBooleanV3Schema(type._def.schema);\n }\n\n type = type._def.innerType;\n }\n\n return false;\n}\n\n/** - Get the default value of a schema */\nexport function schemaDefaultValue(schema: Schema): unknown | undefined {\n if (isV4Schema(schema)) {\n return schemaV4DefaultValue(schema);\n }\n\n return schemaV3DefaultValue(schema);\n}\n\nfunction schemaV4DefaultValue(schema: SchemaV4): unknown | undefined {\n let def = schema._zod.def;\n\n while (def) {\n if (isDefaultV4Def(def)) {\n return def.defaultValue;\n }\n\n if (isV4DefPipe(def)) {\n return schemaV4DefaultValue(def.out);\n }\n\n if (!isV4DefWithInnerType(def)) {\n return undefined;\n }\n\n def = def.innerType._zod.def;\n }\n\n return undefined;\n}\n\nfunction schemaV3DefaultValue(schema: SchemaV3): unknown | undefined {\n let type = schema;\n while (type) {\n if (type instanceof ZodDefault) {\n return type._def.defaultValue();\n }\n\n if (type instanceof ZodEffects) {\n return schemaV3DefaultValue(type._def.schema);\n }\n\n type = type._def.innerType;\n }\n\n return undefined;\n}\n\n/** - Get the description of a schema */\nexport function schemaDescription(schema: Schema): string | undefined {\n if (isV4Schema(schema)) {\n if (!(\"meta\" in schema) || typeof schema.meta !== \"function\") return;\n return schema.meta()?.description;\n }\n\n return schema.description;\n}\n\n/** - Check if a schema is optional */\nexport function isOptionalSchema(schema: Schema): schema is Z4.$ZodOptional {\n if (isV4Schema(schema)) {\n return schema._zod.def.type === \"optional\" || schema._zod.def.type === \"default\";\n }\n\n return schema.isOptional();\n}\n\nfunction isDefaultV4Def(def: Z4.$ZodTypeDef): def is Z4.$ZodDefaultDef {\n return def.type === \"default\";\n}\n\ntype SchemaWithInnerType =\n | Z4.$ZodDefaultDef\n | Z4.$ZodPrefaultDef\n | Z4.$ZodOptionalDef\n | Z4.$ZodNonOptionalDef\n | Z4.$ZodNullableDef\n | Z4.$ZodSuccessDef\n | Z4.$ZodCatchDef\n | Z4.$ZodReadonlyDef\n | Z4.$ZodPromiseDef;\n\nfunction isV4DefWithInnerType(def: Z4.$ZodTypeDef): def is SchemaWithInnerType {\n return new Set([\n \"default\",\n \"prefault\",\n \"optional\",\n \"nonoptional\",\n \"nullable\",\n \"success\",\n \"catch\",\n \"readonly\",\n \"promise\",\n ]).has(def.type);\n}\n\nfunction isV4DefPipe(def: Z4.$ZodTypeDef): def is Z4.$ZodPipeDef {\n return def.type === \"pipe\";\n}\n\n/**\n * A preprocessing function for Zod that converts a string to an array of strings.\n *\n * @param stringValue - The string value given by zod.\n * @param separator - The separator to use when splitting the string. Defaults to \",\".\n */\nexport function stringToArray(stringValue: string, separator: string = \",\"): string[] {\n return stringValue\n .split(separator)\n .map(s => s.trim())\n .filter(Boolean);\n}\n\n/**\n * A preprocessing function for Zod that converts a string to a `Set` of strings.\n *\n * @param stringValue - The string value given by zod.\n * @param separator - The separator to use when splitting the string. Defaults to \",\".\n */\nexport function stringToSet(stringValue: string, separator: string = \",\"): Set<string> {\n const maybeArray = stringToArray(stringValue, separator);\n return new Set(maybeArray);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-markdown.d.ts","sourceRoot":"","sources":["../../../src/markdown/generate-markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"generate-markdown.d.ts","sourceRoot":"","sources":["../../../src/markdown/generate-markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,CAwC1E"}
|
|
@@ -13,15 +13,15 @@ export declare function isOptionalSchema(schema: Schema): schema is Z4.$ZodOptio
|
|
|
13
13
|
/**
|
|
14
14
|
* A preprocessing function for Zod that converts a string to an array of strings.
|
|
15
15
|
*
|
|
16
|
-
* @param
|
|
17
|
-
* @param
|
|
16
|
+
* @param stringValue - The string value given by zod.
|
|
17
|
+
* @param separator - The separator to use when splitting the string. Defaults to ",".
|
|
18
18
|
*/
|
|
19
|
-
export declare function stringToArray(
|
|
19
|
+
export declare function stringToArray(stringValue: string, separator?: string): string[];
|
|
20
20
|
/**
|
|
21
21
|
* A preprocessing function for Zod that converts a string to a `Set` of strings.
|
|
22
22
|
*
|
|
23
|
-
* @param
|
|
24
|
-
* @param
|
|
23
|
+
* @param stringValue - The string value given by zod.
|
|
24
|
+
* @param separator - The separator to use when splitting the string. Defaults to ",".
|
|
25
25
|
*/
|
|
26
|
-
export declare function stringToSet(
|
|
26
|
+
export declare function stringToSet(stringValue: string, separator?: string): Set<string>;
|
|
27
27
|
//# sourceMappingURL=zod-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-utils.d.ts","sourceRoot":"","sources":["../../src/zod-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,YAAY,CAAC;AAM7D,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,mHAM7D;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMvD;AAyCD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAMtE;AAyCD,wCAAwC;AACxC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC,YAAY,CAM1E;AAmCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"zod-utils.d.ts","sourceRoot":"","sources":["../../src/zod-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,YAAY,CAAC;AAM7D,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,mHAM7D;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMvD;AAyCD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAMtE;AAyCD,wCAAwC;AACxC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC,YAAY,CAM1E;AAmCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,EAAE,CAKpF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAGrF"}
|
package/package.json
CHANGED
|
@@ -34,7 +34,7 @@ export function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?
|
|
|
34
34
|
// CLI description
|
|
35
35
|
if (metadata.description) {
|
|
36
36
|
msg += formatTitle("Description") + ln(1);
|
|
37
|
-
msg += indent(2) + c.description(metadata.description) + ln(2);
|
|
37
|
+
msg += indent(2) + c.description(metadata.description).replace(/\n+/g, "\n" + indent(2)) + ln(2);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
let longest = 0;
|
|
@@ -39,6 +39,9 @@ export function generateMarkdown(...params: [Cli, ...Subcommand[]]): string {
|
|
|
39
39
|
md += renderSubcommands(metadata.subcommands);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
md = stripAnsi(md);
|
|
43
|
+
md = escapeHtmlTags(md);
|
|
44
|
+
|
|
42
45
|
return md;
|
|
43
46
|
}
|
|
44
47
|
|
|
@@ -138,7 +141,7 @@ function renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {
|
|
|
138
141
|
|
|
139
142
|
const aliases = [metadata.name].concat(metadata.aliases).join(", ");
|
|
140
143
|
|
|
141
|
-
const placeholder = metadata.placeholder && ` ${
|
|
144
|
+
const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;
|
|
142
145
|
|
|
143
146
|
outStr += `### ${aliases + placeholder}\n\n`;
|
|
144
147
|
|
|
@@ -168,6 +171,36 @@ function renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {
|
|
|
168
171
|
return outStr;
|
|
169
172
|
}
|
|
170
173
|
|
|
171
|
-
function
|
|
172
|
-
return
|
|
174
|
+
function escapeHtmlTags(markdown: string) {
|
|
175
|
+
return markdown.replace(/(```[\s\S]*?```|`[^`]*`)|(<[^>]+>)/g, (_: string, code: string, html: string) => {
|
|
176
|
+
if (code) {
|
|
177
|
+
return code;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return html.replace(/[&<>]/g, match => {
|
|
181
|
+
return { "&": "&", "<": "<", ">": ">" }[match as "&" | "<" | ">"];
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** Credits: https://github.com/chalk/ansi-regex */
|
|
187
|
+
function ansiRegex({ onlyFirst = false } = {}) {
|
|
188
|
+
// Valid string terminator sequences are BEL, ESC\, and 0x9c
|
|
189
|
+
const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
|
|
190
|
+
|
|
191
|
+
// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)
|
|
192
|
+
const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
|
|
193
|
+
|
|
194
|
+
// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte
|
|
195
|
+
const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
|
|
196
|
+
|
|
197
|
+
const pattern = `${osc}|${csi}`;
|
|
198
|
+
|
|
199
|
+
return new RegExp(pattern, onlyFirst ? undefined : "g");
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const regex = ansiRegex();
|
|
203
|
+
|
|
204
|
+
function stripAnsi(string: string): string {
|
|
205
|
+
return string.replace(regex, "");
|
|
173
206
|
}
|
package/src/zod-utils.ts
CHANGED
|
@@ -168,32 +168,23 @@ function isV4DefPipe(def: Z4.$ZodTypeDef): def is Z4.$ZodPipeDef {
|
|
|
168
168
|
/**
|
|
169
169
|
* A preprocessing function for Zod that converts a string to an array of strings.
|
|
170
170
|
*
|
|
171
|
-
* @param
|
|
172
|
-
* @param
|
|
171
|
+
* @param stringValue - The string value given by zod.
|
|
172
|
+
* @param separator - The separator to use when splitting the string. Defaults to ",".
|
|
173
173
|
*/
|
|
174
|
-
export function stringToArray(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
.filter(Boolean);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return val;
|
|
174
|
+
export function stringToArray(stringValue: string, separator: string = ","): string[] {
|
|
175
|
+
return stringValue
|
|
176
|
+
.split(separator)
|
|
177
|
+
.map(s => s.trim())
|
|
178
|
+
.filter(Boolean);
|
|
183
179
|
}
|
|
184
180
|
|
|
185
181
|
/**
|
|
186
182
|
* A preprocessing function for Zod that converts a string to a `Set` of strings.
|
|
187
183
|
*
|
|
188
|
-
* @param
|
|
189
|
-
* @param
|
|
184
|
+
* @param stringValue - The string value given by zod.
|
|
185
|
+
* @param separator - The separator to use when splitting the string. Defaults to ",".
|
|
190
186
|
*/
|
|
191
|
-
export function stringToSet(
|
|
192
|
-
const maybeArray = stringToArray(
|
|
193
|
-
|
|
194
|
-
if (Array.isArray(maybeArray)) {
|
|
195
|
-
return new Set(maybeArray);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return val;
|
|
187
|
+
export function stringToSet(stringValue: string, separator: string = ","): Set<string> {
|
|
188
|
+
const maybeArray = stringToArray(stringValue, separator);
|
|
189
|
+
return new Set(maybeArray);
|
|
199
190
|
}
|