zod-args-parser 1.2.6 → 1.2.8
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 +19 -19
- package/lib/commonjs/autocomplete-scripts/{bash-autocomplete-script.js → bash-autocomplete-script.cjs} +2 -2
- package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +1 -0
- package/lib/commonjs/autocomplete-scripts/{powershell-autocomplete-script.js → powershell-autocomplete-script.cjs} +3 -3
- package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +1 -0
- package/lib/commonjs/autocomplete-scripts/{zsh-autocomplete-script.js → zsh-autocomplete-script.cjs} +4 -4
- package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +1 -0
- package/lib/commonjs/help-message/format-arguments.cjs +1 -0
- package/lib/commonjs/help-message/format-arguments.cjs.map +1 -0
- package/lib/commonjs/help-message/format-cli.cjs +1 -0
- package/lib/commonjs/help-message/format-cli.cjs.map +1 -0
- package/lib/commonjs/help-message/format-options.cjs +1 -0
- package/lib/commonjs/help-message/format-options.cjs.map +1 -0
- package/lib/commonjs/help-message/format-subcommands.cjs +1 -0
- package/lib/commonjs/help-message/format-subcommands.cjs.map +1 -0
- package/lib/commonjs/help-message/styles.cjs +1 -0
- package/lib/commonjs/help-message/styles.cjs.map +1 -0
- package/lib/commonjs/index.cjs +1 -0
- package/lib/commonjs/index.cjs.map +1 -0
- package/lib/commonjs/markdown/generate-markdown.cjs +1 -0
- package/lib/commonjs/markdown/generate-markdown.cjs.map +1 -0
- package/lib/commonjs/metadata/get-arguments-metadata.cjs +1 -0
- package/lib/commonjs/metadata/get-arguments-metadata.cjs.map +1 -0
- package/lib/commonjs/metadata/get-cli-metadata.cjs +1 -0
- package/lib/commonjs/metadata/{get-cli-metadata.js.map → get-cli-metadata.cjs.map} +1 -1
- package/lib/commonjs/metadata/get-options-metadata.cjs +1 -0
- package/lib/commonjs/metadata/get-options-metadata.cjs.map +1 -0
- package/lib/commonjs/metadata/get-subcommands-metadata.cjs +1 -0
- package/lib/commonjs/metadata/get-subcommands-metadata.cjs.map +1 -0
- package/lib/commonjs/parser/parse/parse.cjs +1 -0
- package/lib/commonjs/parser/parse/parse.cjs.map +1 -0
- package/lib/commonjs/parser/parse/parser-helpers.cjs +1 -0
- package/lib/commonjs/parser/parse/parser-helpers.cjs.map +1 -0
- package/lib/commonjs/parser/safe-parse.cjs +1 -0
- package/lib/commonjs/parser/safe-parse.cjs.map +1 -0
- package/lib/commonjs/parser/unsafe-parse.cjs +1 -0
- package/lib/commonjs/parser/unsafe-parse.cjs.map +1 -0
- package/lib/commonjs/parser/validate/validate-type.cjs.map +1 -0
- package/lib/commonjs/parser/validate/validate.cjs +1 -0
- package/lib/commonjs/parser/validate/validate.cjs.map +1 -0
- package/lib/commonjs/utilities.cjs +1 -0
- package/lib/commonjs/utilities.cjs.map +1 -0
- package/lib/commonjs/zod-utilities.cjs +1 -0
- package/lib/commonjs/zod-utilities.cjs.map +1 -0
- package/lib/module/autocomplete-scripts/{bash-autocomplete-script.js → bash-autocomplete-script.mjs} +2 -2
- package/lib/module/autocomplete-scripts/bash-autocomplete-script.mjs.map +1 -0
- package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs +31 -0
- package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs.map +1 -0
- package/lib/module/autocomplete-scripts/{zsh-autocomplete-script.js → zsh-autocomplete-script.mjs} +4 -4
- package/lib/module/autocomplete-scripts/zsh-autocomplete-script.mjs.map +1 -0
- package/lib/module/help-message/format-arguments.mjs +1 -0
- package/lib/module/help-message/format-arguments.mjs.map +1 -0
- package/lib/module/help-message/format-cli.mjs +1 -0
- package/lib/module/help-message/format-cli.mjs.map +1 -0
- package/lib/module/help-message/format-options.mjs +1 -0
- package/lib/module/help-message/format-options.mjs.map +1 -0
- package/lib/module/help-message/format-subcommands.mjs +1 -0
- package/lib/module/help-message/format-subcommands.mjs.map +1 -0
- package/lib/module/help-message/styles.mjs +1 -0
- package/lib/module/help-message/styles.mjs.map +1 -0
- package/lib/module/index.mjs +1 -0
- package/lib/module/index.mjs.map +1 -0
- package/lib/module/markdown/generate-markdown.mjs +1 -0
- package/lib/module/markdown/generate-markdown.mjs.map +1 -0
- package/lib/module/metadata/get-arguments-metadata.mjs +1 -0
- package/lib/module/metadata/get-arguments-metadata.mjs.map +1 -0
- package/lib/module/metadata/get-cli-metadata.mjs +1 -0
- package/lib/module/metadata/{get-cli-metadata.js.map → get-cli-metadata.mjs.map} +1 -1
- package/lib/module/metadata/get-options-metadata.mjs +1 -0
- package/lib/module/metadata/get-options-metadata.mjs.map +1 -0
- package/lib/module/metadata/get-subcommands-metadata.mjs +1 -0
- package/lib/module/metadata/get-subcommands-metadata.mjs.map +1 -0
- package/lib/module/parser/parse/parse.mjs +1 -0
- package/lib/module/parser/parse/parse.mjs.map +1 -0
- package/lib/module/parser/parse/parser-helpers.mjs +1 -0
- package/lib/module/parser/parse/parser-helpers.mjs.map +1 -0
- package/lib/module/parser/safe-parse.mjs +1 -0
- package/lib/module/parser/safe-parse.mjs.map +1 -0
- package/lib/module/parser/unsafe-parse.mjs +1 -0
- package/lib/module/parser/unsafe-parse.mjs.map +1 -0
- package/lib/module/parser/validate/validate-type.mjs.map +1 -0
- package/lib/module/parser/validate/validate.mjs +1 -0
- package/lib/module/parser/validate/validate.mjs.map +1 -0
- package/lib/module/utilities.mjs +1 -0
- package/lib/module/utilities.mjs.map +1 -0
- package/lib/module/zod-utilities.mjs +1 -0
- package/lib/module/zod-utilities.mjs.map +1 -0
- package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts +1 -1
- package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts.map +1 -1
- package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts +1 -1
- package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts.map +1 -1
- package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts +1 -1
- package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts.map +1 -1
- package/lib/typescript/help-message/format-arguments.d.ts +2 -2
- package/lib/typescript/help-message/format-arguments.d.ts.map +1 -1
- package/lib/typescript/help-message/format-cli.d.ts +5 -5
- package/lib/typescript/help-message/format-cli.d.ts.map +1 -1
- package/lib/typescript/help-message/format-options.d.ts +2 -2
- package/lib/typescript/help-message/format-options.d.ts.map +1 -1
- package/lib/typescript/help-message/format-subcommands.d.ts +2 -2
- package/lib/typescript/help-message/format-subcommands.d.ts.map +1 -1
- package/lib/typescript/help-message/styles.d.ts +14 -13
- package/lib/typescript/help-message/styles.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +10 -10
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/markdown/generate-markdown.d.ts +1 -1
- package/lib/typescript/markdown/generate-markdown.d.ts.map +1 -1
- package/lib/typescript/metadata/get-arguments-metadata.d.ts +1 -1
- package/lib/typescript/metadata/get-arguments-metadata.d.ts.map +1 -1
- package/lib/typescript/metadata/get-options-metadata.d.ts.map +1 -1
- package/lib/typescript/metadata/get-subcommands-metadata.d.ts.map +1 -1
- package/lib/typescript/parser/parse/parse-types.d.ts +5 -5
- package/lib/typescript/parser/parse/parse-types.d.ts.map +1 -1
- package/lib/typescript/parser/parse/parse.d.ts +2 -2
- package/lib/typescript/parser/parse/parse.d.ts.map +1 -1
- package/lib/typescript/parser/parse/parser-helpers.d.ts +7 -7
- package/lib/typescript/parser/parse/parser-helpers.d.ts.map +1 -1
- package/lib/typescript/parser/safe-parse.d.ts +2 -2
- package/lib/typescript/parser/safe-parse.d.ts.map +1 -1
- package/lib/typescript/parser/unsafe-parse.d.ts +2 -2
- package/lib/typescript/parser/unsafe-parse.d.ts.map +1 -1
- package/lib/typescript/parser/validate/validate-type.d.ts +4 -4
- package/lib/typescript/parser/validate/validate-type.d.ts.map +1 -1
- package/lib/typescript/parser/validate/validate.d.ts +4 -4
- package/lib/typescript/parser/validate/validate.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +19 -15
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/{utils.d.ts → utilities.d.ts} +9 -9
- package/lib/typescript/utilities.d.ts.map +1 -0
- package/lib/typescript/{zod-utils.d.ts → zod-utilities.d.ts} +11 -10
- package/lib/typescript/zod-utilities.d.ts.map +1 -0
- package/package.json +17 -18
- package/src/autocomplete-scripts/bash-autocomplete-script.ts +10 -10
- package/src/autocomplete-scripts/powershell-autocomplete-script.ts +17 -15
- package/src/autocomplete-scripts/zsh-autocomplete-script.ts +8 -5
- package/src/help-message/format-arguments.ts +20 -13
- package/src/help-message/format-cli.ts +65 -45
- package/src/help-message/format-options.ts +19 -12
- package/src/help-message/format-subcommands.ts +9 -9
- package/src/help-message/styles.ts +18 -18
- package/src/index.ts +21 -21
- package/src/markdown/generate-markdown.ts +55 -55
- package/src/metadata/get-arguments-metadata.ts +10 -10
- package/src/metadata/get-options-metadata.ts +8 -6
- package/src/metadata/get-subcommands-metadata.ts +3 -1
- package/src/parser/parse/parse-types.ts +5 -5
- package/src/parser/parse/parse.ts +67 -64
- package/src/parser/parse/parser-helpers.ts +24 -25
- package/src/parser/safe-parse.ts +24 -18
- package/src/parser/unsafe-parse.ts +34 -34
- package/src/parser/validate/validate-type.ts +4 -4
- package/src/parser/validate/validate.ts +17 -17
- package/src/types.ts +21 -17
- package/src/{utils.ts → utilities.ts} +44 -28
- package/src/zod-utilities.ts +214 -0
- package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.js.map +0 -1
- package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.js.map +0 -1
- package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.js.map +0 -1
- package/lib/commonjs/help-message/format-arguments.js +0 -1
- package/lib/commonjs/help-message/format-arguments.js.map +0 -1
- package/lib/commonjs/help-message/format-cli.js +0 -1
- package/lib/commonjs/help-message/format-cli.js.map +0 -1
- package/lib/commonjs/help-message/format-options.js +0 -1
- package/lib/commonjs/help-message/format-options.js.map +0 -1
- package/lib/commonjs/help-message/format-subcommands.js +0 -1
- package/lib/commonjs/help-message/format-subcommands.js.map +0 -1
- package/lib/commonjs/help-message/styles.js +0 -1
- package/lib/commonjs/help-message/styles.js.map +0 -1
- package/lib/commonjs/index.js +0 -1
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/markdown/generate-markdown.js +0 -1
- package/lib/commonjs/markdown/generate-markdown.js.map +0 -1
- package/lib/commonjs/metadata/get-arguments-metadata.js +0 -1
- package/lib/commonjs/metadata/get-arguments-metadata.js.map +0 -1
- package/lib/commonjs/metadata/get-cli-metadata.js +0 -1
- package/lib/commonjs/metadata/get-options-metadata.js +0 -1
- package/lib/commonjs/metadata/get-options-metadata.js.map +0 -1
- package/lib/commonjs/metadata/get-subcommands-metadata.js +0 -1
- package/lib/commonjs/metadata/get-subcommands-metadata.js.map +0 -1
- package/lib/commonjs/parser/parse/parse.js +0 -1
- package/lib/commonjs/parser/parse/parse.js.map +0 -1
- package/lib/commonjs/parser/parse/parser-helpers.js +0 -1
- package/lib/commonjs/parser/parse/parser-helpers.js.map +0 -1
- package/lib/commonjs/parser/safe-parse.js +0 -1
- package/lib/commonjs/parser/safe-parse.js.map +0 -1
- package/lib/commonjs/parser/unsafe-parse.js +0 -1
- package/lib/commonjs/parser/unsafe-parse.js.map +0 -1
- package/lib/commonjs/parser/validate/validate-type.js.map +0 -1
- package/lib/commonjs/parser/validate/validate.js +0 -1
- package/lib/commonjs/parser/validate/validate.js.map +0 -1
- package/lib/commonjs/utils.js +0 -1
- package/lib/commonjs/utils.js.map +0 -1
- package/lib/commonjs/zod-utils.js +0 -1
- package/lib/commonjs/zod-utils.js.map +0 -1
- package/lib/module/autocomplete-scripts/bash-autocomplete-script.js.map +0 -1
- package/lib/module/autocomplete-scripts/powershell-autocomplete-script.js +0 -31
- package/lib/module/autocomplete-scripts/powershell-autocomplete-script.js.map +0 -1
- package/lib/module/autocomplete-scripts/zsh-autocomplete-script.js.map +0 -1
- package/lib/module/help-message/format-arguments.js +0 -1
- package/lib/module/help-message/format-arguments.js.map +0 -1
- package/lib/module/help-message/format-cli.js +0 -1
- package/lib/module/help-message/format-cli.js.map +0 -1
- package/lib/module/help-message/format-options.js +0 -1
- package/lib/module/help-message/format-options.js.map +0 -1
- package/lib/module/help-message/format-subcommands.js +0 -1
- package/lib/module/help-message/format-subcommands.js.map +0 -1
- package/lib/module/help-message/styles.js +0 -1
- package/lib/module/help-message/styles.js.map +0 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +0 -1
- package/lib/module/markdown/generate-markdown.js +0 -1
- package/lib/module/markdown/generate-markdown.js.map +0 -1
- package/lib/module/metadata/get-arguments-metadata.js +0 -1
- package/lib/module/metadata/get-arguments-metadata.js.map +0 -1
- package/lib/module/metadata/get-cli-metadata.js +0 -1
- package/lib/module/metadata/get-options-metadata.js +0 -1
- package/lib/module/metadata/get-options-metadata.js.map +0 -1
- package/lib/module/metadata/get-subcommands-metadata.js +0 -1
- package/lib/module/metadata/get-subcommands-metadata.js.map +0 -1
- package/lib/module/parser/parse/parse.js +0 -1
- package/lib/module/parser/parse/parse.js.map +0 -1
- package/lib/module/parser/parse/parser-helpers.js +0 -1
- package/lib/module/parser/parse/parser-helpers.js.map +0 -1
- package/lib/module/parser/safe-parse.js +0 -1
- package/lib/module/parser/safe-parse.js.map +0 -1
- package/lib/module/parser/unsafe-parse.js +0 -1
- package/lib/module/parser/unsafe-parse.js.map +0 -1
- package/lib/module/parser/validate/validate-type.js.map +0 -1
- package/lib/module/parser/validate/validate.js +0 -1
- package/lib/module/parser/validate/validate.js.map +0 -1
- package/lib/module/utils.js +0 -1
- package/lib/module/utils.js.map +0 -1
- package/lib/module/zod-utils.js +0 -1
- package/lib/module/zod-utils.js.map +0 -1
- package/lib/typescript/utils.d.ts.map +0 -1
- package/lib/typescript/zod-utils.d.ts.map +0 -1
- package/src/zod-utils.ts +0 -199
- /package/lib/commonjs/parser/validate/{validate-type.js → validate-type.cjs} +0 -0
- /package/lib/module/parser/validate/{validate-type.js → validate-type.mjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["findSubcommand","subCmdName","subcommandArray","find","c","name","aliases","includes","findOption","optionArgument","options","validVariableNames","optionArgumentToVariableNames","isNegative","startsWith","option","o","has","negateOption","some","a","map","alias","decoupleFlags","arguments_","flagsRe","result","argument","isCoupled","test","push","decoupledArray","slice","split","Error","cause","toLowerCase","results","Set","camelCase","replace","m","toUpperCase","add","snake_case","g","isFlagArgument","isLongArgument","isOptionArgument","length","transformOptionToArgument","match","index"],"sourceRoot":"../../../../src/parser/parse","sources":["parser-helpers.ts"],"sourcesContent":["import type { Option, Subcommand } from \"../../types.js\";\n\n/**\n * Retrieves a subcommand object from an array of subcommands by matching the provided subcommand name against the\n * subcommand's name or its aliases.\n *\n * @param subCmdName - The name or alias of the subcommand to search for.\n * @param subcommandArr - An array of `Subcommand` objects to search within.\n * @returns The matching `Subcommand` object if found; otherwise, `undefined`.\n */\nexport function findSubcommand(subCmdName: string | undefined, subcommandArray: Subcommand[]): Subcommand | undefined {\n return subcommandArray.find(c => {\n // match for undefined too\n if (c.name === subCmdName) {\n return true;\n }\n\n // match for aliases\n return subCmdName && c.aliases && c.aliases.includes(subCmdName);\n });\n}\n\n/**\n * Finds and returns an `Option` object from the provided list that matches the given argument string.\n *\n * The function supports matching by option name, aliases, and their negated forms (e.g., `--no-` prefix).\n *\n * @param optionArg - The argument string to match (e.g., `--foo`, `--no-bar`, `-f`).\n * @param options - An array of `Option` objects to search through.\n * @returns The matching `Option` object if found; otherwise, `undefined`.\n */\nexport function findOption(optionArgument: string, options: [Option, ...Option[]]): Option | undefined {\n const validVariableNames = optionArgumentToVariableNames(optionArgument);\n const isNegative = optionArgument.startsWith(\"--no-\");\n\n const option = options.find(o => {\n if (validVariableNames.has(o.name)) {\n return true;\n }\n\n if (isNegative && validVariableNames.has(negateOption(o.name))) {\n return true;\n }\n\n if (!o.aliases) {\n return false;\n }\n\n if (o.aliases.some(a => validVariableNames.has(a))) {\n return true;\n }\n\n if (isNegative && o.aliases.map(alias => negateOption(alias)).some(a => validVariableNames.has(a))) {\n return true;\n }\n\n return false;\n });\n\n return option;\n}\n\n/** - Decouple flags E.g. `-rf` -> `-r, -f` */\nexport function decoupleFlags(arguments_: string[]): string[] {\n const flagsRe = /^-[a-z0-9]{2,}$/i;\n\n const result = [];\n for (const argument of arguments_) {\n const isCoupled = flagsRe.test(argument);\n\n if (!isCoupled) {\n result.push(argument);\n continue;\n }\n\n const decoupledArray = argument\n .slice(1)\n .split(\"\")\n .map(c => \"-\" + c);\n\n result.push(...decoupledArray);\n }\n\n return result;\n}\n\n/**\n * - Transforms an option argument name to a valid JavaScript variable name\n *\n * @param name - Should start with `'--'` or `'-'`\n */\nexport function optionArgumentToVariableNames(name: string): Set<string> {\n if (!name.startsWith(\"-\")) {\n throw new Error(`[parseArgOptionName] Invalid arg name: ${name}`, { cause: \"zod-args-parser\" });\n }\n\n name = name.startsWith(\"--\") ? name.slice(2) : name.slice(1); // remove prefix\n name = name.toLowerCase(); // lowercase\n\n const results = new Set<string>();\n\n // camelCase\n const camelCase = name.replace(/-(.)/g, m => m[1].toUpperCase());\n results.add(camelCase);\n\n // PascalCase (UpperCamelCase)\n results.add(camelCase.replace(/^(.)/, m => m.toUpperCase()));\n\n // snake_case\n const snake_case = name.replace(/-(.)/g, g => \"_\" + g[1]);\n results.add(snake_case);\n\n // SCREAMING_SNAKE_CASE\n results.add(snake_case.toUpperCase());\n\n return results;\n}\n\n/** - Check if an arg string is a short arg. E.g. `-i` -> `true` */\nexport function isFlagArgument(name: string): boolean {\n return /^-[A-Za-z]$/.test(name);\n}\n\n/** - Check if an arg string is a long arg. E.g. `--input-dir` -> `true` */\nfunction isLongArgument(name: string): boolean {\n return /^--[A-Za-z-]+[A-Za-z0-9]$/.test(name);\n}\n\n/** - Check if an arg string is an options arg. E.g. `--input-dir` -> `true` , `-i` -> `true` */\nexport function isOptionArgument(name: string | boolean): boolean {\n if (typeof name !== \"string\") {\n return false;\n }\n\n return isFlagArgument(name) || isLongArgument(name);\n}\n\n/**\n * - Transform option name to no name. E.g. `include` -> `noInclude`\n * - For short name like `-i` it will be ignored\n */\nexport function negateOption(name: string): string {\n if (name.length === 1) {\n return name;\n }\n\n return \"no\" + name.replace(/^[a-z]/, g => g.toUpperCase());\n}\n\n/** - Reverse of `transformArg`. E.g. `InputDir` -> `--input-dir` , `i` -> `-i` */\nexport function transformOptionToArgument(name: string): string {\n // single letter option name\n if (name.length === 1) {\n return `-${name.toLowerCase()}`;\n }\n\n // snake_case, SCREAMING_SNAKE_CASE\n if (name.includes(\"_\") || /[A-Z]+$/.test(name)) {\n name = name.replace(/_/g, \"-\");\n return `--${name.toLowerCase()}`;\n }\n\n // camelCase, PascalCase\n name = name.replace(/[A-Z]/g, (match, index: number) => (index > 0 ? \"-\" + match : match)); // add \"-\" before camel case letters except for the first letter\n return `--${name.toLowerCase()}`;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.safeParse=safeParse;exports.safeParseAsync=safeParseAsync;var help=_interopRequireWildcard(require("../help-message/format-cli.cjs"));var _parserHelpers=require("./parse/parser-helpers.cjs");var _unsafeParse=require("./unsafe-parse.cjs");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?o(f,t,i):f[t]=e[t]);return f})(e,t)}function safeParse(argsv,...parameters){const cliOptions="cliName"in parameters[0]?parameters[0]:{};const subcommandArray=parameters;const printCliHelp=style=>help.printCliHelp(parameters,style);const printSubcommandHelp=(subCmdName,style)=>{const subcommand=(0,_parserHelpers.findSubcommand)(subCmdName,subcommandArray);if(!subcommand){return console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`)}help.printSubcommandHelp(subcommand,style,cliOptions.cliName)};try{const data=(0,_unsafeParse.unsafeParse)(argsv,...parameters);delete data.printCliHelp;delete data.printSubcommandHelp;return{success:true,data:data,printCliHelp,printSubcommandHelp}}catch(error){if(!(error instanceof Error)||error.cause!=="zod-args-parser"){throw error}return{success:false,error,printCliHelp,printSubcommandHelp}}}async function safeParseAsync(argsv,...parameters){const cliOptions="cliName"in parameters[0]?parameters[0]:{};const subcommandArray=parameters;const printCliHelp=style=>help.printCliHelp(parameters,style);const printSubcommandHelp=(subCmdName,style)=>{const subcommand=(0,_parserHelpers.findSubcommand)(subCmdName,subcommandArray);if(!subcommand){return console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`)}help.printSubcommandHelp(subcommand,style,cliOptions.cliName)};try{const data=await(0,_unsafeParse.unsafeParseAsync)(argsv,...parameters);delete data.printCliHelp;delete data.printSubcommandHelp;return{success:true,data:data,printCliHelp,printSubcommandHelp}}catch(error){if(!(error instanceof Error)||error.cause!=="zod-args-parser"){throw error}return{success:false,error,printCliHelp,printSubcommandHelp}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["help","_interopRequireWildcard","require","_parserHelpers","_unsafeParse","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","safeParse","argsv","parameters","cliOptions","subcommandArray","printCliHelp","style","printSubcommandHelp","subCmdName","subcommand","findSubcommand","console","error","cliName","data","unsafeParse","success","Error","cause","safeParseAsync","unsafeParseAsync"],"sourceRoot":"../../../src/parser","sources":["safe-parse.ts"],"sourcesContent":["import * as help from \"../help-message/format-cli.js\";\nimport { findSubcommand } from \"./parse/parser-helpers.js\";\nimport { unsafeParse, unsafeParseAsync } from \"./unsafe-parse.js\";\n\nimport type { Cli, NoSubcommand, PrintMethods, SafeParseResult, Subcommand } from \"../types.js\";\n\nexport function safeParse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...parameters: [U, ...T]\n): SafeParseResult<[...T, NoSubcommand & U]> {\n const cliOptions = (\"cliName\" in parameters[0] ? parameters[0] : {}) as U;\n const subcommandArray = parameters as Subcommand[];\n\n type PrintTypes = PrintMethods<T[number][\"name\"]>;\n type PrintCli = PrintTypes[\"printCliHelp\"];\n type PrintSubcommand = PrintTypes[\"printSubcommandHelp\"];\n\n const printCliHelp: PrintCli = style => help.printCliHelp(parameters, style);\n\n const printSubcommandHelp: PrintSubcommand = (subCmdName, style) => {\n const subcommand = findSubcommand(subCmdName, subcommandArray);\n if (!subcommand) {\n return console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n }\n\n help.printSubcommandHelp(subcommand, style, cliOptions.cliName);\n };\n\n try {\n const data = unsafeParse(argsv, ...parameters);\n // @ts-expect-error The operand of a 'delete' operator must be optional.\n delete data.printCliHelp;\n // @ts-expect-errorThe operand of a 'delete' operator must be optional.\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n } catch (error) {\n if (!(error instanceof Error) || error.cause !== \"zod-args-parser\") {\n throw error;\n }\n\n return {\n success: false,\n error,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n }\n}\n\nexport async function safeParseAsync<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...parameters: [U, ...T]\n): Promise<SafeParseResult<[...T, NoSubcommand & U]>> {\n const cliOptions = (\"cliName\" in parameters[0] ? parameters[0] : {}) as U;\n const subcommandArray = parameters as Subcommand[];\n\n type PrintTypes = PrintMethods<T[number][\"name\"]>;\n type PrintCli = PrintTypes[\"printCliHelp\"];\n type PrintSubcommand = PrintTypes[\"printSubcommandHelp\"];\n\n const printCliHelp: PrintCli = style => help.printCliHelp(parameters, style);\n\n const printSubcommandHelp: PrintSubcommand = (subCmdName, style) => {\n const subcommand = findSubcommand(subCmdName, subcommandArray);\n if (!subcommand) {\n return console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n }\n\n help.printSubcommandHelp(subcommand, style, cliOptions.cliName);\n };\n\n try {\n const data = await unsafeParseAsync(argsv, ...parameters);\n // @ts-expect-error The operand of a 'delete' operator must be optional.\n delete data.printCliHelp;\n // @ts-expect-errorThe operand of a 'delete' operator must be optional.\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n } catch (error) {\n if (!(error instanceof Error) || error.cause !== \"zod-args-parser\") {\n throw error;\n }\n\n return {\n success: false,\n error,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.unsafeParse=unsafeParse;exports.unsafeParseAsync=unsafeParseAsync;var help=_interopRequireWildcard(require("../help-message/format-cli.cjs"));var _parse=require("./parse/parse.cjs");var _parserHelpers=require("./parse/parser-helpers.cjs");var _validate=require("./validate/validate.cjs");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?o(f,t,i):f[t]=e[t]);return f})(e,t)}function unsafeParse(argv,...parameters){const cliOptions="cliName"in parameters[0]?parameters[0]:{};const subcommandArray=parameters;const parsedData=(0,_parse.parse)(argv,...parameters);const subcommandObject=(0,_parserHelpers.findSubcommand)(parsedData.subcommand,subcommandArray);if(!subcommandObject){throw new Error(`Subcommand "${parsedData.subcommand}" does not exist`,{cause:"zod-args-parser"})}if(subcommandObject.preValidation){subcommandObject.preValidation(parsedData)}const validateResult=(0,_validate.validate)(parsedData);Object.assign(validateResult,{printCliHelp(style){help.printCliHelp(parameters,style)},printSubcommandHelp(subCmdName,style){const subcommandObject=(0,_parserHelpers.findSubcommand)(subCmdName,subcommandArray);if(!subcommandObject){console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`);return}help.printSubcommandHelp(subcommandObject,style,cliOptions.cliName)}});if(subcommandObject.action){subcommandObject.action(validateResult)}return validateResult}async function unsafeParseAsync(argv,...parameters){const cliOptions="cliName"in parameters[0]?parameters[0]:{};const subcommandArray=parameters;const parsedData=(0,_parse.parse)(argv,...parameters);const subcommandObject=(0,_parserHelpers.findSubcommand)(parsedData.subcommand,subcommandArray);if(!subcommandObject){throw new Error(`Subcommand "${parsedData.subcommand}" does not exist`,{cause:"zod-args-parser"})}if(subcommandObject.preValidation){await subcommandObject.preValidation(parsedData)}const validateResult=(0,_validate.validate)(parsedData);Object.assign(validateResult,{printCliHelp(style){help.printCliHelp(parameters,style)},printSubcommandHelp(subCmdName,style){const subcommandObject=(0,_parserHelpers.findSubcommand)(subCmdName,subcommandArray);if(!subcommandObject){console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`);return}help.printSubcommandHelp(subcommandObject,style,cliOptions.cliName)}});if(subcommandObject.action){await subcommandObject.action(validateResult)}return validateResult}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["help","_interopRequireWildcard","require","_parse","_parserHelpers","_validate","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","unsafeParse","argv","parameters","cliOptions","subcommandArray","parsedData","parse","subcommandObject","findSubcommand","subcommand","Error","cause","preValidation","validateResult","validate","assign","printCliHelp","style","printSubcommandHelp","subCmdName","console","error","cliName","action","unsafeParseAsync"],"sourceRoot":"../../../src/parser","sources":["unsafe-parse.ts"],"sourcesContent":["import * as help from \"../help-message/format-cli.js\";\nimport { parse } from \"./parse/parse.js\";\nimport { findSubcommand } from \"./parse/parser-helpers.js\";\nimport { validate } from \"./validate/validate.js\";\n\nimport type { Cli, HelpMessageStyle, NoSubcommand, Subcommand, UnsafeParseResult } from \"../types.js\";\n\nexport function unsafeParse<T extends Subcommand[], U extends Cli>(\n argv: string[],\n ...parameters: [U, ...T]\n): UnsafeParseResult<[...T, NoSubcommand & U]> {\n const cliOptions = (\"cliName\" in parameters[0] ? parameters[0] : {}) as U;\n const subcommandArray = parameters as unknown as T;\n\n // Parse\n const parsedData = parse(argv, ...parameters);\n\n const subcommandObject = findSubcommand(parsedData.subcommand, subcommandArray);\n if (!subcommandObject) {\n throw new Error(`Subcommand \"${parsedData.subcommand}\" does not exist`, { cause: \"zod-args-parser\" });\n }\n\n // Fire preValidation hook\n if (subcommandObject.preValidation) {\n subcommandObject.preValidation(parsedData);\n }\n\n // Validate\n const validateResult = validate(parsedData);\n\n Object.assign(validateResult, {\n printCliHelp(style?: Partial<HelpMessageStyle>) {\n help.printCliHelp(parameters, style);\n },\n printSubcommandHelp(subCmdName: string, style?: Partial<HelpMessageStyle>) {\n const subcommandObject = findSubcommand(subCmdName, subcommandArray);\n if (!subcommandObject) {\n console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n return;\n }\n\n help.printSubcommandHelp(subcommandObject, style, cliOptions.cliName);\n },\n });\n\n // Fire action\n if (subcommandObject.action) {\n subcommandObject.action(validateResult);\n }\n\n return validateResult as UnsafeParseResult<[...T, NoSubcommand & U]>;\n}\n\nexport async function unsafeParseAsync<T extends Subcommand[], U extends Cli>(\n argv: string[],\n ...parameters: [U, ...T]\n): Promise<UnsafeParseResult<[...T, NoSubcommand & U]>> {\n const cliOptions = (\"cliName\" in parameters[0] ? parameters[0] : {}) as U;\n const subcommandArray = parameters as unknown as T;\n\n // Parse\n const parsedData = parse(argv, ...parameters);\n\n const subcommandObject = findSubcommand(parsedData.subcommand, subcommandArray);\n if (!subcommandObject) {\n throw new Error(`Subcommand \"${parsedData.subcommand}\" does not exist`, { cause: \"zod-args-parser\" });\n }\n\n // Fire preValidation hook\n if (subcommandObject.preValidation) {\n await subcommandObject.preValidation(parsedData);\n }\n\n // Validate\n const validateResult = validate(parsedData);\n\n Object.assign(validateResult, {\n printCliHelp(style?: Partial<HelpMessageStyle>) {\n help.printCliHelp(parameters, style);\n },\n printSubcommandHelp(subCmdName: string, style?: Partial<HelpMessageStyle>) {\n const subcommandObject = findSubcommand(subCmdName, subcommandArray);\n if (!subcommandObject) {\n console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n return;\n }\n\n help.printSubcommandHelp(subcommandObject, style, cliOptions.cliName);\n },\n });\n\n // Fire action\n if (subcommandObject.action) {\n await subcommandObject.action(validateResult);\n }\n\n return validateResult as UnsafeParseResult<[...T, NoSubcommand & U]>;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +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}
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.concat=concat;exports.generateOrdinalSuffix=generateOrdinalSuffix;exports.indent=indent;exports.insertAtEndOfFirstLine=insertAtEndOfFirstLine;exports.ln=ln;exports.stringToBoolean=stringToBoolean;exports.stringifyValue=stringifyValue;exports.subcommandPlaceholder=subcommandPlaceholder;function stringToBoolean(string){if(string.toLowerCase()==="true"){return true}if(string.toLowerCase()==="false"){return false}return string}function generateOrdinalSuffix(index){if(index<0)return"";const number=index+1;const lastDigit=number%10;const lastTwoDigits=number%100;let suffix="th";if(lastTwoDigits<11||lastTwoDigits>13){switch(lastDigit){case 1:{suffix="st";break}case 2:{suffix="nd";break}case 3:{suffix="rd";break}}}return`${number}${suffix}`}function ln(count){return"\n".repeat(count)}function indent(count){if(count<=0)return"";return" ".repeat(count)}function concat(...messages){return messages.join(" ")}function stringifyValue(value){if(value instanceof Set){return"new Set(["+Array.from(value).map(element=>stringifyValue(element)).join(", ")+"])"}return JSON.stringify(value)}function insertAtEndOfFirstLine(string,insert){const lines=string.split("\n");lines[0]+=" "+insert;return lines.join("\n")}function subcommandPlaceholder(metadata){let placeholder=metadata.placeholder;if(!placeholder&&metadata.options.length>0){placeholder="[options]"}if(!placeholder&&metadata.arguments.length>0){placeholder="<arguments>"}if(metadata.allowPositional){placeholder+=(placeholder?" ":"")+"<positionals>"}if(!placeholder){placeholder=" "}return placeholder}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stringToBoolean","string","toLowerCase","generateOrdinalSuffix","index","number","lastDigit","lastTwoDigits","suffix","ln","count","repeat","indent","concat","messages","join","stringifyValue","value","Set","Array","from","map","element","JSON","stringify","insertAtEndOfFirstLine","insert","lines","split","subcommandPlaceholder","metadata","placeholder","options","length","arguments","allowPositional"],"sourceRoot":"../../src","sources":["utilities.ts"],"sourcesContent":["import { SubcommandMetadata } from \"./metadata/metadata-types.js\";\n\n/**\n * Converts a string to its corresponding boolean value if the string is \"true\" or \"false\" (case-insensitive).\n *\n * @param string - The input string to convert.\n * @returns `true` if the input is \"true\", `false` if the input is \"false\", or the original string otherwise.\n */\nexport function stringToBoolean(string: string): boolean | string {\n if (string.toLowerCase() === \"true\") {\n return true;\n }\n\n if (string.toLowerCase() === \"false\") {\n return false;\n }\n\n return string;\n}\n\n/**\n * Converts a zero-based index into its human-readable ordinal form.\n *\n * Examples: 0 → \"1st\" 1 → \"2nd\" 2 → \"3rd\" 3 → \"4th\" 10 → \"11th\"\n *\n * Handles special cases for 11, 12, and 13.\n *\n * @param index - The zero-based index to convert.\n * @returns The ordinal string (e.g., \"1st\", \"2nd\", \"3rd\", \"4th\", ...).\n */\nexport function generateOrdinalSuffix(index: number): string {\n if (index < 0) return \"\";\n\n const number = index + 1;\n const lastDigit = number % 10;\n const lastTwoDigits = number % 100;\n\n let suffix = \"th\";\n\n if (lastTwoDigits < 11 || lastTwoDigits > 13) {\n switch (lastDigit) {\n case 1: {\n suffix = \"st\";\n break;\n }\n case 2: {\n suffix = \"nd\";\n break;\n }\n case 3: {\n suffix = \"rd\";\n break;\n }\n }\n }\n\n return `${number}${suffix}`;\n}\n\n/** New line */\nexport function ln(count: number) {\n return \"\\n\".repeat(count);\n}\n\n/** Space */\nexport function indent(count: number) {\n if (count <= 0) return \"\";\n return \" \".repeat(count);\n}\n\n/** Concat strings */\nexport function concat(...messages: string[]) {\n // messages = messages.filter(Boolean);\n return messages.join(\" \");\n}\n\nexport function stringifyValue(value: unknown): string {\n // Set\n if (value instanceof Set) {\n return (\n \"new Set([\" +\n Array.from(value)\n .map(element => stringifyValue(element))\n .join(\", \") +\n \"])\"\n );\n }\n\n // unknown\n return JSON.stringify(value);\n}\n\n/** Insert text at the end of the first line */\nexport function insertAtEndOfFirstLine(string: string, insert: string) {\n const lines = string.split(\"\\n\");\n lines[0] += \" \" + insert;\n return lines.join(\"\\n\");\n}\n\n/** Get the placeholder for a subcommand */\nexport function subcommandPlaceholder(metadata: SubcommandMetadata): string {\n let placeholder = metadata.placeholder;\n\n if (!placeholder && metadata.options.length > 0) {\n placeholder = \"[options]\";\n }\n\n if (!placeholder && metadata.arguments.length > 0) {\n placeholder = \"<arguments>\";\n }\n\n if (metadata.allowPositional) {\n placeholder += (placeholder ? \" \" : \"\") + \"<positionals>\";\n }\n\n if (!placeholder) {\n placeholder = \" \";\n }\n\n return placeholder;\n}\n"],"mappings":"4WAQO,QAAS,CAAAA,eAAeA,CAACC,MAAc,CAAoB,CAChE,GAAIA,MAAM,CAACC,WAAW,CAAC,CAAC,GAAK,MAAM,CAAE,CACnC,MAAO,KACT,CAEA,GAAID,MAAM,CAACC,WAAW,CAAC,CAAC,GAAK,OAAO,CAAE,CACpC,MAAO,MACT,CAEA,MAAO,CAAAD,MACT,CAYO,QAAS,CAAAE,qBAAqBA,CAACC,KAAa,CAAU,CAC3D,GAAIA,KAAK,CAAG,CAAC,CAAE,MAAO,EAAE,CAExB,KAAM,CAAAC,MAAM,CAAGD,KAAK,CAAG,CAAC,CACxB,KAAM,CAAAE,SAAS,CAAGD,MAAM,CAAG,EAAE,CAC7B,KAAM,CAAAE,aAAa,CAAGF,MAAM,CAAG,GAAG,CAElC,GAAI,CAAAG,MAAM,CAAG,IAAI,CAEjB,GAAID,aAAa,CAAG,EAAE,EAAIA,aAAa,CAAG,EAAE,CAAE,CAC5C,OAAQD,SAAS,EACf,IAAK,EAAC,CAAE,CACNE,MAAM,CAAG,IAAI,CACb,KACF,CACA,IAAK,EAAC,CAAE,CACNA,MAAM,CAAG,IAAI,CACb,KACF,CACA,IAAK,EAAC,CAAE,CACNA,MAAM,CAAG,IAAI,CACb,KACF,CACF,CACF,CAEA,MAAO,GAAGH,MAAM,GAAGG,MAAM,EAC3B,CAGO,QAAS,CAAAC,EAAEA,CAACC,KAAa,CAAE,CAChC,MAAO,IAAI,CAACC,MAAM,CAACD,KAAK,CAC1B,CAGO,QAAS,CAAAE,MAAMA,CAACF,KAAa,CAAE,CACpC,GAAIA,KAAK,EAAI,CAAC,CAAE,MAAO,EAAE,CACzB,MAAO,GAAG,CAACC,MAAM,CAACD,KAAK,CACzB,CAGO,QAAS,CAAAG,MAAMA,CAAC,GAAGC,QAAkB,CAAE,CAE5C,MAAO,CAAAA,QAAQ,CAACC,IAAI,CAAC,GAAG,CAC1B,CAEO,QAAS,CAAAC,cAAcA,CAACC,KAAc,CAAU,CAErD,GAAIA,KAAK,WAAY,CAAAC,GAAG,CAAE,CACxB,MACE,WAAW,CACXC,KAAK,CAACC,IAAI,CAACH,KAAK,CAAC,CACdI,GAAG,CAACC,OAAO,EAAIN,cAAc,CAACM,OAAO,CAAC,CAAC,CACvCP,IAAI,CAAC,IAAI,CAAC,CACb,IAEJ,CAGA,MAAO,CAAAQ,IAAI,CAACC,SAAS,CAACP,KAAK,CAC7B,CAGO,QAAS,CAAAQ,sBAAsBA,CAACxB,MAAc,CAAEyB,MAAc,CAAE,CACrE,KAAM,CAAAC,KAAK,CAAG1B,MAAM,CAAC2B,KAAK,CAAC,IAAI,CAAC,CAChCD,KAAK,CAAC,CAAC,CAAC,EAAI,GAAG,CAAGD,MAAM,CACxB,MAAO,CAAAC,KAAK,CAACZ,IAAI,CAAC,IAAI,CACxB,CAGO,QAAS,CAAAc,qBAAqBA,CAACC,QAA4B,CAAU,CAC1E,GAAI,CAAAC,WAAW,CAAGD,QAAQ,CAACC,WAAW,CAEtC,GAAI,CAACA,WAAW,EAAID,QAAQ,CAACE,OAAO,CAACC,MAAM,CAAG,CAAC,CAAE,CAC/CF,WAAW,CAAG,WAChB,CAEA,GAAI,CAACA,WAAW,EAAID,QAAQ,CAACI,SAAS,CAACD,MAAM,CAAG,CAAC,CAAE,CACjDF,WAAW,CAAG,aAChB,CAEA,GAAID,QAAQ,CAACK,eAAe,CAAE,CAC5BJ,WAAW,EAAI,CAACA,WAAW,CAAG,GAAG,CAAG,EAAE,EAAI,eAC5C,CAEA,GAAI,CAACA,WAAW,CAAE,CAChBA,WAAW,CAAG,GAChB,CAEA,MAAO,CAAAA,WACT","ignoreList":[]}
|
|
@@ -0,0 +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 schemaDefinition=schema._zod.def;while(schemaDefinition){if(schemaDefinition.type==="boolean"){return true}if(isV4SchemaDefinitionPipe(schemaDefinition)){return isBooleanV4Schema(schemaDefinition.out)}if(!isV4SchemaDefinitionHasInnerType(schemaDefinition)){return false}schemaDefinition=schemaDefinition.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)}const definition=type._def;if("innerType"in definition){type=definition.innerType}return false}return false}function schemaDefaultValue(schema){if(isV4Schema(schema)){return schemaV4DefaultValue(schema)}return schemaV3DefaultValue(schema)}function schemaV4DefaultValue(schema){let schemaDefinition=schema._zod.def;while(schemaDefinition){if(isSchemaDefinitionDefaultV4(schemaDefinition)){return schemaDefinition.defaultValue}if(isV4SchemaDefinitionPipe(schemaDefinition)){return schemaV4DefaultValue(schemaDefinition.out)}if(!isV4SchemaDefinitionHasInnerType(schemaDefinition)){return undefined}schemaDefinition=schemaDefinition.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)}const definition=type._def;if("innerType"in definition){type=definition.innerType}return}return}function schemaDescription(schema){if(isV4Schema(schema)){if(!("meta"in schema)||typeof schema.meta!=="function"){return}const metaResult=schema.meta();if(!metaResult||typeof metaResult!=="object"||!("description"in metaResult)){return}return metaResult.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 isSchemaDefinitionDefaultV4(schemaDefinition){return schemaDefinition.type==="default"}function isV4SchemaDefinitionHasInnerType(schemaDefinition){return new Set(["default","prefault","optional","nonoptional","nullable","success","catch","readonly","promise"]).has(schemaDefinition.type)}function isV4SchemaDefinitionPipe(schemaDefinition){return schemaDefinition.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)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_v","require","_core","isV4Schema","schema","safeParseSchema","value","safeParse","isBooleanSchema","isBooleanV4Schema","isBooleanV3Schema","schemaDefinition","_zod","def","type","isV4SchemaDefinitionPipe","out","isV4SchemaDefinitionHasInnerType","innerType","ZodBoolean","ZodEffects","_def","definition","schemaDefaultValue","schemaV4DefaultValue","schemaV3DefaultValue","isSchemaDefinitionDefaultV4","defaultValue","undefined","ZodDefault","schemaDescription","meta","metaResult","description","isOptionalSchema","isOptional","Set","has","stringToArray","stringValue","separator","split","map","s","trim","filter","Boolean","stringToSet","maybeArray"],"sourceRoot":"../../src","sources":["zod-utilities.ts"],"sourcesContent":["import { ZodBoolean, ZodDefault, ZodEffects } from \"zod/v3\";\nimport { safeParse } from \"zod/v4/core\";\n\nimport type * as Z3 from \"zod/v3\";\nimport type * as Z4 from \"zod/v4/core\";\nimport type { Schema, SchemaV3, SchemaV4 } from \"./types.ts\";\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 schemaDefinition = schema._zod.def;\n\n while (schemaDefinition) {\n if (schemaDefinition.type === \"boolean\") {\n return true;\n }\n\n if (isV4SchemaDefinitionPipe(schemaDefinition)) {\n return isBooleanV4Schema(schemaDefinition.out);\n }\n\n if (!isV4SchemaDefinitionHasInnerType(schemaDefinition)) {\n return false;\n }\n\n schemaDefinition = schemaDefinition.innerType._zod.def;\n }\n\n return false;\n}\n\nfunction isBooleanV3Schema(schema: SchemaV3): boolean {\n let type = schema;\n\n while (type) {\n if (type instanceof ZodBoolean) {\n return true;\n }\n\n if (type instanceof ZodEffects) {\n return isBooleanV3Schema(type._def.schema as SchemaV3);\n }\n\n const definition = type._def as Z3.ZodTypeDef;\n\n if (\"innerType\" in definition) {\n type = definition.innerType as Z3.ZodTypeAny;\n }\n\n return false;\n }\n\n return false;\n}\n\n/** - Get the default value of a schema */\nexport function schemaDefaultValue(schema: Schema): unknown {\n if (isV4Schema(schema)) {\n return schemaV4DefaultValue(schema);\n }\n\n return schemaV3DefaultValue(schema);\n}\n\nfunction schemaV4DefaultValue(schema: SchemaV4): unknown {\n let schemaDefinition = schema._zod.def;\n\n while (schemaDefinition) {\n if (isSchemaDefinitionDefaultV4(schemaDefinition)) {\n return schemaDefinition.defaultValue;\n }\n\n if (isV4SchemaDefinitionPipe(schemaDefinition)) {\n return schemaV4DefaultValue(schemaDefinition.out);\n }\n\n if (!isV4SchemaDefinitionHasInnerType(schemaDefinition)) {\n return undefined;\n }\n\n schemaDefinition = schemaDefinition.innerType._zod.def;\n }\n\n return undefined;\n}\n\nfunction schemaV3DefaultValue(schema: SchemaV3): unknown {\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 as SchemaV3);\n }\n\n const definition = type._def as Z3.ZodTypeDef;\n\n if (\"innerType\" in definition) {\n type = definition.innerType as Z3.ZodTypeAny;\n }\n\n return;\n }\n\n return;\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\") {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const metaResult = schema.meta() as { description?: string } | undefined;\n\n if (!metaResult || typeof metaResult !== \"object\" || !(\"description\" in metaResult)) {\n return;\n }\n\n return metaResult.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 isSchemaDefinitionDefaultV4(schemaDefinition: Z4.$ZodTypeDef): schemaDefinition is Z4.$ZodDefaultDef {\n return schemaDefinition.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 isV4SchemaDefinitionHasInnerType(schemaDefinition: Z4.$ZodTypeDef): schemaDefinition 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(schemaDefinition.type);\n}\n\nfunction isV4SchemaDefinitionPipe(schemaDefinition: Z4.$ZodTypeDef): schemaDefinition is Z4.$ZodPipeDef {\n return schemaDefinition.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":[]}
|
package/lib/module/autocomplete-scripts/{bash-autocomplete-script.js → bash-autocomplete-script.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{transformOptionToArgument}from"../parser/parse/parser-helpers.mjs";export function generateBashAutocompleteScript(...parameters){const[cli,...subcommands]=parameters;const mappedCommands={};for(const subcommand of subcommands){mappedCommands[subcommand.name]={options:subcommand.options?.map(option=>transformOptionToArgument(option.name))??[],aliases:subcommand.aliases??[]}}let switchCase="";for(const[key,{options,aliases}]of Object.entries(mappedCommands)){switchCase+=` ${key}${aliases.length>0?"|":""}${aliases.join("|")})\n`;switchCase+=` opts="${options.join(" ")}"\n`;switchCase+=" ;;\n"}if(cli.options?.length){switchCase+=` "-"*)\n`;switchCase+=` opts="${cli.options.map(option=>transformOptionToArgument(option.name)).join(" ")}"\n`;switchCase+=" ;;\n"}return`# Auto-generated by zod-args-parser
|
|
2
2
|
|
|
3
3
|
_${cli.cliName}_autocomplete() {
|
|
4
4
|
local cur prev commands opts subcommand used_opts filtered_opts
|
|
@@ -39,4 +39,4 @@ ${switchCase}
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
complete -F _${cli.cliName}_autocomplete ${cli.cliName}
|
|
42
|
-
|
|
42
|
+
`}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","generateBashAutocompleteScript","parameters","cli","subcommands","mappedCommands","subcommand","name","options","map","option","aliases","switchCase","key","Object","entries","length","join","cliName","keys"],"sourceRoot":"../../../src/autocomplete-scripts","sources":["bash-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parser/parse/parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../types.js\";\n\n/**\n * - Generate bash autocomplete script for your CLI\n * - The generated script should be added to your `.bash_profile` or `.bashrc` file:\n *\n * - Run: `nano $HOME/.bash_profile` or `nano $HOME/.bashrc`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen bash to take effect\n */\nexport function generateBashAutocompleteScript(...parameters: [Cli, ...Subcommand[]]): string {\n const [cli, ...subcommands] = parameters;\n\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n const mappedCommands: MappedCommands = {};\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options?.map(option => transformOptionToArgument(option.name)) ?? [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n let switchCase = \"\";\n for (const [key, { options, aliases }] of Object.entries(mappedCommands)) {\n switchCase += ` ${key}${aliases.length > 0 ? \"|\" : \"\"}${aliases.join(\"|\")})\\n`;\n switchCase += ` opts=\"${options.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n if (cli.options?.length) {\n switchCase += ` \"-\"*)\\n`;\n switchCase += ` opts=\"${cli.options.map(option => transformOptionToArgument(option.name)).join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n return `# Auto-generated by zod-args-parser\n\n_${cli.cliName}_autocomplete() {\n local cur prev commands opts subcommand used_opts filtered_opts\n\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n subcommand=\"\\${COMP_WORDS[1]}\"\n\n commands=\"${Object.keys(mappedCommands).join(\" \")}\"\n\n case \"$subcommand\" in\n${switchCase}\n esac\n\n used_opts=\"\"\n if [[ \" \\${commands[@]} \" =~ \" $subcommand \" ]]; then\n for word in \"\\${COMP_WORDS[@]:2}\"; do\n if [[ \"$word\" =~ ^- ]]; then\n used_opts+=\" $word\"\n fi\n done\n fi\n\n if [[ -n \"$opts\" ]]; then\n filtered_opts=\"\"\n for opt in $opts; do\n if [[ ! \" $used_opts \" =~ \" $opt \" ]]; then\n filtered_opts+=\"$opt \"\n fi\n done\n COMPREPLY=( $(compgen -W \"$filtered_opts\" -- \"$cur\") )\n return\n fi\n\n if [[ \"\\${COMP_CWORD}\" -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"$commands\" -- \"$cur\") )\n fi\n}\n\ncomplete -F _${cli.cliName}_autocomplete ${cli.cliName}\n`;\n}\n"],"mappings":"AAAA,OAASA,yBAAyB,KAAQ,oCAAmC,CAY7E,MAAO,SAAS,CAAAC,8BAA8BA,CAAC,GAAGC,UAAkC,CAAU,CAC5F,KAAM,CAACC,GAAG,CAAE,GAAGC,WAAW,CAAC,CAAGF,UAAU,CAIxC,KAAM,CAAAG,cAA8B,CAAG,CAAC,CAAC,CACzC,IAAK,KAAM,CAAAC,UAAU,GAAI,CAAAF,WAAW,CAAE,CACpCC,cAAc,CAACC,UAAU,CAACC,IAAI,CAAC,CAAG,CAChCC,OAAO,CAAEF,UAAU,CAACE,OAAO,EAAEC,GAAG,CAACC,MAAM,EAAIV,yBAAyB,CAACU,MAAM,CAACH,IAAI,CAAC,CAAC,EAAI,EAAE,CACxFI,OAAO,CAAEL,UAAU,CAACK,OAAO,EAAI,EACjC,CACF,CAEA,GAAI,CAAAC,UAAU,CAAG,EAAE,CACnB,IAAK,KAAM,CAACC,GAAG,CAAE,CAAEL,OAAO,CAAEG,OAAQ,CAAC,CAAC,EAAI,CAAAG,MAAM,CAACC,OAAO,CAACV,cAAc,CAAC,CAAE,CACxEO,UAAU,EAAI,OAAOC,GAAG,GAAGF,OAAO,CAACK,MAAM,CAAG,CAAC,CAAG,GAAG,CAAG,EAAE,GAAGL,OAAO,CAACM,IAAI,CAAC,GAAG,CAAC,KAAK,CACjFL,UAAU,EAAI,eAAeJ,OAAO,CAACS,IAAI,CAAC,GAAG,CAAC,KAAK,CACnDL,UAAU,EAAI,YAChB,CAEA,GAAIT,GAAG,CAACK,OAAO,EAAEQ,MAAM,CAAE,CACvBJ,UAAU,EAAI,aAAa,CAC3BA,UAAU,EAAI,eAAeT,GAAG,CAACK,OAAO,CAACC,GAAG,CAACC,MAAM,EAAIV,yBAAyB,CAACU,MAAM,CAACH,IAAI,CAAC,CAAC,CAACU,IAAI,CAAC,GAAG,CAAC,KAAK,CAC7GL,UAAU,EAAI,YAChB,CAEA,MAAO;AACT;AACA,GAAGT,GAAG,CAACe,OAAO;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAcJ,MAAM,CAACK,IAAI,CAACd,cAAc,CAAC,CAACY,IAAI,CAAC,GAAG,CAAC;AACnD;AACA;AACA,EAAEL,UAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeT,GAAG,CAACe,OAAO,iBAAiBf,GAAG,CAACe,OAAO;AACtD,CACA","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import{transformOptionToArgument}from"../parser/parse/parser-helpers.mjs";export function generatePowerShellAutocompleteScript(...parameters){const[cli,...subcommands]=parameters;const mappedCommands={};for(const subcommand of subcommands){mappedCommands[subcommand.name]={options:subcommand.options?.map(option=>transformOptionToArgument(option.name))??[],aliases:subcommand.aliases??[]}}const subcommandsString=Object.keys(mappedCommands).map(key=>`'${key}'`).join(", ");const cliOptionsString=cli.options?.map(option=>`'${transformOptionToArgument(option.name)}'`).join(", ")||"";let switchCase="switch ($subcommand) {\n";for(const[key,{options,aliases}]of Object.entries(mappedCommands)){const optionsString=options.map(option=>`'${option}'`).join(", ");switchCase+=` '${key}' { @(${optionsString}) }\n`;for(const a of aliases){switchCase+=` '${a}' { @(${optionsString}) }\n`}}switchCase+=` default { @(${cliOptionsString}) }\n }`;let functionInfo="";if(cli.description){functionInfo=`<#\n.DESCRIPTION\n${cli.description}\n${cli.example?`\n.EXAMPLE\n${cli.example}`:""}\n#>`}return`# Auto-generated by zod-args-parser
|
|
2
|
+
|
|
3
|
+
${functionInfo}
|
|
4
|
+
function ${cli.cliName} {
|
|
5
|
+
param(
|
|
6
|
+
[Parameter(Position = 0, Mandatory = $false)]
|
|
7
|
+
[string]$subcommand,
|
|
8
|
+
[Parameter(Position = 1, ValueFromRemainingArguments = $true)]
|
|
9
|
+
[string[]]$arguments
|
|
10
|
+
)
|
|
11
|
+
$scriptPath = (Get-Command '${cli.cliName}.ps1').Source
|
|
12
|
+
if ($scriptPath) {
|
|
13
|
+
$argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }
|
|
14
|
+
& $scriptPath @argumentList
|
|
15
|
+
return
|
|
16
|
+
}
|
|
17
|
+
Write-Error "Could not find '${cli.cliName}.ps1' script"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Register-ArgumentCompleter -CommandName '${cli.cliName}' -ParameterName 'subcommand' -ScriptBlock {
|
|
21
|
+
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
|
|
22
|
+
$subcommands = @(${subcommandsString}${subcommandsString&&cliOptionsString?", ":""}${cliOptionsString})
|
|
23
|
+
$subcommands | Where-Object { $_ -like "$wordToComplete*" }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Register-ArgumentCompleter -CommandName '${cli.cliName}' -ParameterName 'arguments' -ScriptBlock {
|
|
27
|
+
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
|
|
28
|
+
$subcommand = $commandAst.CommandElements[1].Value
|
|
29
|
+
$arguments = ${switchCase}
|
|
30
|
+
$arguments | Where-Object { $_ -like "$wordToComplete*" }
|
|
31
|
+
}`}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","generatePowerShellAutocompleteScript","parameters","cli","subcommands","mappedCommands","subcommand","name","options","map","option","aliases","subcommandsString","Object","keys","key","join","cliOptionsString","switchCase","entries","optionsString","a","functionInfo","description","example","cliName"],"sourceRoot":"../../../src/autocomplete-scripts","sources":["powershell-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parser/parse/parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../types.js\";\n\n/**\n * - Generates a PowerShell autocomplete script for your CLI.\n * - The script assumes that your CLI is available as a `.ps1` file in the environment variable. For example:\n * `cliName.ps1`.\n * - This should return a path to your script: `(Get-Command <cliName>.ps1).Source`\n * - The generated script should be added to your `profile.ps1` file:\n *\n * - Run: `notepad $profile`\n * - Add the following line: `. \"<generated script path>\"`\n * - Save and reopen powershell to take effect\n */\nexport function generatePowerShellAutocompleteScript(...parameters: [Cli, ...Subcommand[]]): string {\n const [cli, ...subcommands] = parameters;\n\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n const mappedCommands: MappedCommands = {};\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options?.map(option => transformOptionToArgument(option.name)) ?? [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n const subcommandsString = Object.keys(mappedCommands)\n .map(key => `'${key}'`)\n .join(\", \");\n const cliOptionsString = cli.options?.map(option => `'${transformOptionToArgument(option.name)}'`).join(\", \") || \"\";\n\n let switchCase = \"switch ($subcommand) {\\n\";\n for (const [key, { options, aliases }] of Object.entries(mappedCommands)) {\n const optionsString = options.map(option => `'${option}'`).join(\", \");\n switchCase += ` '${key}' { @(${optionsString}) }\\n`;\n for (const a of aliases) {\n switchCase += ` '${a}' { @(${optionsString}) }\\n`;\n }\n }\n switchCase += ` default { @(${cliOptionsString}) }\\n }`;\n\n let functionInfo = \"\";\n if (cli.description) {\n functionInfo = `<#\\n.DESCRIPTION\\n${cli.description}\\n${cli.example ? `\\n.EXAMPLE\\n${cli.example}` : \"\"}\\n#>`;\n }\n\n return `# Auto-generated by zod-args-parser\n\n${functionInfo}\nfunction ${cli.cliName} {\n param(\n [Parameter(Position = 0, Mandatory = $false)]\n [string]$subcommand,\n [Parameter(Position = 1, ValueFromRemainingArguments = $true)]\n [string[]]$arguments\n )\n $scriptPath = (Get-Command '${cli.cliName}.ps1').Source\n if ($scriptPath) {\n $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }\n & $scriptPath @argumentList\n return\n }\n Write-Error \"Could not find '${cli.cliName}.ps1' script\"\n}\n\nRegister-ArgumentCompleter -CommandName '${cli.cliName}' -ParameterName 'subcommand' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommands = @(${subcommandsString}${subcommandsString && cliOptionsString ? \", \" : \"\"}${cliOptionsString})\n $subcommands | Where-Object { $_ -like \"$wordToComplete*\" }\n}\n\nRegister-ArgumentCompleter -CommandName '${cli.cliName}' -ParameterName 'arguments' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommand = $commandAst.CommandElements[1].Value\n $arguments = ${switchCase}\n $arguments | Where-Object { $_ -like \"$wordToComplete*\" }\n}`;\n}\n"],"mappings":"AAAA,OAASA,yBAAyB,KAAQ,oCAAmC,CAe7E,MAAO,SAAS,CAAAC,oCAAoCA,CAAC,GAAGC,UAAkC,CAAU,CAClG,KAAM,CAACC,GAAG,CAAE,GAAGC,WAAW,CAAC,CAAGF,UAAU,CAIxC,KAAM,CAAAG,cAA8B,CAAG,CAAC,CAAC,CACzC,IAAK,KAAM,CAAAC,UAAU,GAAI,CAAAF,WAAW,CAAE,CACpCC,cAAc,CAACC,UAAU,CAACC,IAAI,CAAC,CAAG,CAChCC,OAAO,CAAEF,UAAU,CAACE,OAAO,EAAEC,GAAG,CAACC,MAAM,EAAIV,yBAAyB,CAACU,MAAM,CAACH,IAAI,CAAC,CAAC,EAAI,EAAE,CACxFI,OAAO,CAAEL,UAAU,CAACK,OAAO,EAAI,EACjC,CACF,CAEA,KAAM,CAAAC,iBAAiB,CAAGC,MAAM,CAACC,IAAI,CAACT,cAAc,CAAC,CAClDI,GAAG,CAACM,GAAG,EAAI,IAAIA,GAAG,GAAG,CAAC,CACtBC,IAAI,CAAC,IAAI,CAAC,CACb,KAAM,CAAAC,gBAAgB,CAAGd,GAAG,CAACK,OAAO,EAAEC,GAAG,CAACC,MAAM,EAAI,IAAIV,yBAAyB,CAACU,MAAM,CAACH,IAAI,CAAC,GAAG,CAAC,CAACS,IAAI,CAAC,IAAI,CAAC,EAAI,EAAE,CAEnH,GAAI,CAAAE,UAAU,CAAG,0BAA0B,CAC3C,IAAK,KAAM,CAACH,GAAG,CAAE,CAAEP,OAAO,CAAEG,OAAQ,CAAC,CAAC,EAAI,CAAAE,MAAM,CAACM,OAAO,CAACd,cAAc,CAAC,CAAE,CACxE,KAAM,CAAAe,aAAa,CAAGZ,OAAO,CAACC,GAAG,CAACC,MAAM,EAAI,IAAIA,MAAM,GAAG,CAAC,CAACM,IAAI,CAAC,IAAI,CAAC,CACrEE,UAAU,EAAI,YAAYH,GAAG,SAASK,aAAa,OAAO,CAC1D,IAAK,KAAM,CAAAC,CAAC,GAAI,CAAAV,OAAO,CAAE,CACvBO,UAAU,EAAI,YAAYG,CAAC,SAASD,aAAa,OACnD,CACF,CACAF,UAAU,EAAI,uBAAuBD,gBAAgB,YAAY,CAEjE,GAAI,CAAAK,YAAY,CAAG,EAAE,CACrB,GAAInB,GAAG,CAACoB,WAAW,CAAE,CACnBD,YAAY,CAAG,qBAAqBnB,GAAG,CAACoB,WAAW,KAAKpB,GAAG,CAACqB,OAAO,CAAG,eAAerB,GAAG,CAACqB,OAAO,EAAE,CAAG,EAAE,MACzG,CAEA,MAAO;AACT;AACA,EAAEF,YAAY;AACd,WAAWnB,GAAG,CAACsB,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkCtB,GAAG,CAACsB,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA,mCAAmCtB,GAAG,CAACsB,OAAO;AAC9C;AACA;AACA,2CAA2CtB,GAAG,CAACsB,OAAO;AACtD;AACA,uBAAuBb,iBAAiB,GAAGA,iBAAiB,EAAIK,gBAAgB,CAAG,IAAI,CAAG,EAAE,GAAGA,gBAAgB;AAC/G;AACA;AACA;AACA,2CAA2Cd,GAAG,CAACsB,OAAO;AACtD;AACA;AACA,mBAAmBP,UAAU;AAC7B;AACA,EACA","ignoreList":[]}
|
package/lib/module/autocomplete-scripts/{zsh-autocomplete-script.js → zsh-autocomplete-script.mjs}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{transformOptionToArgument}from"../parser/parse/parser-helpers.mjs";export function generateZshAutocompleteScript(...parameters){const[cli,...subcommands]=parameters;const genArguments=options=>{return options?.map(option=>`'${transformOptionToArgument(option.name)}[${option.description??""}]'`).join(" \\\n ")};const genSubCommand=subcommand=>{const options=subcommand.options;if(!options||options.length===0)return"";return`${subcommand.name})
|
|
2
2
|
_arguments \\
|
|
3
3
|
${genArguments(options)} \\
|
|
4
4
|
'*: :_files' \\
|
|
5
5
|
&& ret=0
|
|
6
|
-
|
|
6
|
+
;;`};return`# Auto-generated by zod-args-parser
|
|
7
7
|
|
|
8
8
|
_${cli.cliName}_autocomplete() {
|
|
9
9
|
local ret=1
|
|
@@ -16,7 +16,7 @@ _${cli.cliName}_autocomplete() {
|
|
|
16
16
|
case $state in
|
|
17
17
|
subcmds)
|
|
18
18
|
case "$words[1]" in
|
|
19
|
-
${subcommands.map(genSubCommand).filter(Boolean).join("\n ")}
|
|
19
|
+
${subcommands.map(subCommand=>genSubCommand(subCommand)).filter(Boolean).join("\n ")}
|
|
20
20
|
*)
|
|
21
21
|
_arguments \\
|
|
22
22
|
'*: :_files' \\
|
|
@@ -38,4 +38,4 @@ _${cli.cliName}_commands() {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
compdef _${cli.cliName}_autocomplete ${cli.cliName}
|
|
41
|
-
|
|
41
|
+
`}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","generateZshAutocompleteScript","parameters","cli","subcommands","genArguments","options","map","option","name","description","join","genSubCommand","subcommand","length","cliName","subCommand","filter","Boolean"],"sourceRoot":"../../../src/autocomplete-scripts","sources":["zsh-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parser/parse/parser-helpers.js\";\n\nimport type { Cli, Option, Subcommand } from \"../types.js\";\n\n/**\n * - Generates a ZSH autocomplete script for your CLI.\n * - The generated script should be added to your `~/.zshrc` or `~/.zsh_profile` file:\n *\n * - Run: `nano $HOME/.zshrc` or `nano $HOME/.zsh_profile`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen zsh to take effect\n */\nexport function generateZshAutocompleteScript(...parameters: [Cli, ...Subcommand[]]): string {\n const [cli, ...subcommands] = parameters;\n\n const genArguments = (options: Option[]) => {\n return options\n ?.map(option => `'${transformOptionToArgument(option.name)}[${option.description ?? \"\"}]'`)\n .join(\" \\\\\\n \");\n };\n\n const genSubCommand = (subcommand: Subcommand) => {\n const options = subcommand.options;\n if (!options || options.length === 0) return \"\";\n return `${subcommand.name})\n _arguments \\\\\n ${genArguments(options)} \\\\\n '*: :_files' \\\\\n && ret=0\n ;;`;\n };\n\n return `# Auto-generated by zod-args-parser\n\n_${cli.cliName}_autocomplete() {\n local ret=1\n\n _arguments -C \\\\\n '1: :_${cli.cliName}_commands' \\\\\n '*:: :->subcmds' \\\\\n && ret=0\n\n case $state in\n subcmds)\n case \"$words[1]\" in\n ${subcommands\n .map(subCommand => genSubCommand(subCommand))\n .filter(Boolean)\n .join(\"\\n \")}\n *)\n _arguments \\\\\n '*: :_files' \\\\\n && ret=0\n ;;\n esac\n ;;\n esac\n\n return $ret\n}\n \n_${cli.cliName}_commands() {\n local -a commands=(\n ${subcommands.map(subcommand => `\"${subcommand.name}:${subcommand.description ?? \"\"}\"`).join(\"\\n \")}\n )\n\n _describe -t subcommands 'subcommand' commands\n}\n\ncompdef _${cli.cliName}_autocomplete ${cli.cliName}\n`;\n}\n"],"mappings":"AAAA,OAASA,yBAAyB,KAAQ,oCAAmC,CAY7E,MAAO,SAAS,CAAAC,6BAA6BA,CAAC,GAAGC,UAAkC,CAAU,CAC3F,KAAM,CAACC,GAAG,CAAE,GAAGC,WAAW,CAAC,CAAGF,UAAU,CAExC,KAAM,CAAAG,YAAY,CAAIC,OAAiB,EAAK,CAC1C,MAAO,CAAAA,OAAO,EACVC,GAAG,CAACC,MAAM,EAAI,IAAIR,yBAAyB,CAACQ,MAAM,CAACC,IAAI,CAAC,IAAID,MAAM,CAACE,WAAW,EAAI,EAAE,IAAI,CAAC,CAC1FC,IAAI,CAAC,mBAAmB,CAC7B,CAAC,CAED,KAAM,CAAAC,aAAa,CAAIC,UAAsB,EAAK,CAChD,KAAM,CAAAP,OAAO,CAAGO,UAAU,CAACP,OAAO,CAClC,GAAI,CAACA,OAAO,EAAIA,OAAO,CAACQ,MAAM,GAAK,CAAC,CAAE,MAAO,EAAE,CAC/C,MAAO,GAAGD,UAAU,CAACJ,IAAI;AAC7B;AACA,cAAcJ,YAAY,CAACC,OAAO,CAAC;AACnC;AACA;AACA,aACE,CAAC,CAED,MAAO;AACT;AACA,GAAGH,GAAG,CAACY,OAAO;AACd;AACA;AACA;AACA,YAAYZ,GAAG,CAACY,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,UAAUX,WAAW,CACVG,GAAG,CAACS,UAAU,EAAIJ,aAAa,CAACI,UAAU,CAAC,CAAC,CAC5CC,MAAM,CAACC,OAAO,CAAC,CACfP,IAAI,CAAC,YAAY,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAGR,GAAG,CAACY,OAAO;AACd;AACA,MAAMX,WAAW,CAACG,GAAG,CAACM,UAAU,EAAI,IAAIA,UAAU,CAACJ,IAAI,IAAII,UAAU,CAACH,WAAW,EAAI,EAAE,GAAG,CAAC,CAACC,IAAI,CAAC,QAAQ,CAAC;AAC1G;AACA;AACA;AACA;AACA;AACA,WAAWR,GAAG,CAACY,OAAO,iBAAiBZ,GAAG,CAACY,OAAO;AAClD,CACA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{concat,indent,insertAtEndOfFirstLine,ln}from"../utilities.mjs";export function formatHelpMessageArguments(argumentsMetadata,c,longest){if(argumentsMetadata.length===0)return"";let message=c.title(" ARGUMENTS")+ln(1);for(const metadata of argumentsMetadata){const defaultString=metadata.defaultValue===undefined?"":`(default: ${metadata.defaultValueAsString})`;const spacing=longest+2-metadata.name.length;const normalizeDesc=metadata.description.replace(/\n+/g,"\n"+indent(longest+6)+c.punctuation("\u2514"));const defaultOrOptional=defaultString?c.default(defaultString):metadata.optional?c.optional("(optional)"):"";message+=concat(indent(2)+c.argument(metadata.name),indent(spacing),insertAtEndOfFirstLine(c.description(normalizeDesc),defaultOrOptional),ln(1));if(metadata.example){const normalizeExample=metadata.example.replace(/\n+/g,"\n"+indent(longest+16));message+=concat(indent(longest+5),c.punctuation("\u2514")+c.exampleTitle("Example:"),c.example(normalizeExample)+ln(1))}}message+=ln(1);return message}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["concat","indent","insertAtEndOfFirstLine","ln","formatHelpMessageArguments","argumentsMetadata","c","longest","length","message","title","metadata","defaultString","defaultValue","undefined","defaultValueAsString","spacing","name","normalizeDesc","description","replace","punctuation","defaultOrOptional","default","optional","argument","example","normalizeExample","exampleTitle"],"sourceRoot":"../../../src/help-message","sources":["format-arguments.ts"],"sourcesContent":["import { concat, indent, insertAtEndOfFirstLine, ln } from \"../utilities.js\";\n\nimport type { ArgumentMetadata } from \"../metadata/metadata-types.js\";\nimport type { HelpMessageStyle } from \"../types.js\";\n\nexport function formatHelpMessageArguments(\n argumentsMetadata: ArgumentMetadata[],\n c: HelpMessageStyle,\n longest: number,\n): string {\n if (argumentsMetadata.length === 0) return \"\";\n\n let message = c.title(\" ARGUMENTS\") + ln(1);\n\n for (const metadata of argumentsMetadata) {\n const defaultString = metadata.defaultValue === undefined ? \"\" : `(default: ${metadata.defaultValueAsString})`;\n\n const spacing = longest + 2 - metadata.name.length;\n const normalizeDesc = metadata.description.replace(/\\n+/g, \"\\n\" + indent(longest + 6) + c.punctuation(\"└\"));\n const defaultOrOptional = defaultString\n ? c.default(defaultString)\n : metadata.optional\n ? c.optional(\"(optional)\")\n : \"\";\n\n message += concat(\n indent(2) + c.argument(metadata.name),\n indent(spacing),\n insertAtEndOfFirstLine(c.description(normalizeDesc), defaultOrOptional),\n ln(1),\n );\n\n if (metadata.example) {\n const normalizeExample = metadata.example.replace(/\\n+/g, \"\\n\" + indent(longest + 16));\n message += concat(\n indent(longest + 5),\n c.punctuation(\"└\") + c.exampleTitle(\"Example:\"),\n c.example(normalizeExample) + ln(1),\n );\n }\n }\n\n message += ln(1);\n\n return message;\n}\n"],"mappings":"AAAA,OAASA,MAAM,CAAEC,MAAM,CAAEC,sBAAsB,CAAEC,EAAE,KAAQ,kBAAiB,CAK5E,MAAO,SAAS,CAAAC,0BAA0BA,CACxCC,iBAAqC,CACrCC,CAAmB,CACnBC,OAAe,CACP,CACR,GAAIF,iBAAiB,CAACG,MAAM,GAAK,CAAC,CAAE,MAAO,EAAE,CAE7C,GAAI,CAAAC,OAAO,CAAGH,CAAC,CAACI,KAAK,CAAC,YAAY,CAAC,CAAGP,EAAE,CAAC,CAAC,CAAC,CAE3C,IAAK,KAAM,CAAAQ,QAAQ,GAAI,CAAAN,iBAAiB,CAAE,CACxC,KAAM,CAAAO,aAAa,CAAGD,QAAQ,CAACE,YAAY,GAAKC,SAAS,CAAG,EAAE,CAAG,aAAaH,QAAQ,CAACI,oBAAoB,GAAG,CAE9G,KAAM,CAAAC,OAAO,CAAGT,OAAO,CAAG,CAAC,CAAGI,QAAQ,CAACM,IAAI,CAACT,MAAM,CAClD,KAAM,CAAAU,aAAa,CAAGP,QAAQ,CAACQ,WAAW,CAACC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAGnB,MAAM,CAACM,OAAO,CAAG,CAAC,CAAC,CAAGD,CAAC,CAACe,WAAW,CAAC,QAAG,CAAC,CAAC,CAC3G,KAAM,CAAAC,iBAAiB,CAAGV,aAAa,CACnCN,CAAC,CAACiB,OAAO,CAACX,aAAa,CAAC,CACxBD,QAAQ,CAACa,QAAQ,CACflB,CAAC,CAACkB,QAAQ,CAAC,YAAY,CAAC,CACxB,EAAE,CAERf,OAAO,EAAIT,MAAM,CACfC,MAAM,CAAC,CAAC,CAAC,CAAGK,CAAC,CAACmB,QAAQ,CAACd,QAAQ,CAACM,IAAI,CAAC,CACrChB,MAAM,CAACe,OAAO,CAAC,CACfd,sBAAsB,CAACI,CAAC,CAACa,WAAW,CAACD,aAAa,CAAC,CAAEI,iBAAiB,CAAC,CACvEnB,EAAE,CAAC,CAAC,CACN,CAAC,CAED,GAAIQ,QAAQ,CAACe,OAAO,CAAE,CACpB,KAAM,CAAAC,gBAAgB,CAAGhB,QAAQ,CAACe,OAAO,CAACN,OAAO,CAAC,MAAM,CAAE,IAAI,CAAGnB,MAAM,CAACM,OAAO,CAAG,EAAE,CAAC,CAAC,CACtFE,OAAO,EAAIT,MAAM,CACfC,MAAM,CAACM,OAAO,CAAG,CAAC,CAAC,CACnBD,CAAC,CAACe,WAAW,CAAC,QAAG,CAAC,CAAGf,CAAC,CAACsB,YAAY,CAAC,UAAU,CAAC,CAC/CtB,CAAC,CAACoB,OAAO,CAACC,gBAAgB,CAAC,CAAGxB,EAAE,CAAC,CAAC,CACpC,CACF,CACF,CAEAM,OAAO,EAAIN,EAAE,CAAC,CAAC,CAAC,CAEhB,MAAO,CAAAM,OACT","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getCliMetadata}from"../metadata/get-cli-metadata.mjs";import{concat,indent,ln,subcommandPlaceholder}from"../utilities.mjs";import{formatHelpMessageArguments}from"./format-arguments.mjs";import{formatHelpMessageOptions}from"./format-options.mjs";import{formatHelpMessageCommands}from"./format-subcommands.mjs";import{helpMessageStyles}from"./styles.mjs";export function formatCliHelpMessage(parameters,style){const c=helpMessageStyles.default;if(style)Object.assign(c,style);const metadata=getCliMetadata(parameters);const formatTitle=title=>c.title(` ${title.toUpperCase()}`);let message="";const usage=metadata.usage||concat(c.punctuation("$"),c.description(metadata.name),metadata.subcommands.length>0?c.command("[command]"):"",metadata.options.length>0?c.option("[options]"):"",metadata.arguments.length>0?c.argument("<arguments>"):"",metadata.allowPositional?c.argument("<positionals>"):"");message+=formatTitle("Usage")+ln(1);message+=indent(2)+usage+ln(2);if(metadata.description){message+=formatTitle("Description")+ln(1);message+=indent(2)+c.description(metadata.description).replace(/\n+/g,"\n"+indent(2))+ln(2)}let longest=0;const optionsMetadata=metadata.options;let longestOptionTitle=0;for(const metadata of optionsMetadata){const names=[...metadata.aliasesAsArgs,metadata.nameAsArg].join(", ");const optLength=names.length+metadata.placeholder.length;if(optLength>longestOptionTitle){longestOptionTitle=optLength}}if(longestOptionTitle>longest){longest=longestOptionTitle}const subcommandsMetadata=metadata.subcommands;let longestSubcommandTitle=0;for(const metadata of subcommandsMetadata){const names=[...metadata.aliases,metadata.name].join(", ");const placeholder=subcommandPlaceholder(metadata);const optLength=names.length+placeholder.length;if(optLength>longestSubcommandTitle){longestSubcommandTitle=optLength}}if(longestSubcommandTitle>longest){longest=longestSubcommandTitle}const argumentsMetadata=metadata.arguments;let longestArgumentTitle=0;for(const argument of argumentsMetadata){if(argument.name.length>longestArgumentTitle){longestArgumentTitle=argument.name.length}}if(longestArgumentTitle>longest){longest=longestArgumentTitle}message+=formatHelpMessageOptions(optionsMetadata,c,longest);message+=formatHelpMessageCommands(subcommandsMetadata,c,longest);message+=formatHelpMessageArguments(argumentsMetadata,c,longest);if(metadata.example){message+=formatTitle("Example");message+=ln(1);const normalizeExample=metadata.example.replace(/\n+/g,"\n"+indent(3));message+=concat(indent(2),c.example(normalizeExample),ln(2))}return message}export function formatSubcommandHelpMessage(subcommand,printStyle,cliName=""){const c=helpMessageStyles.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 formatCliHelpMessage([asCli],c)}export function printCliHelp(parameters,style){console.log(formatCliHelpMessage(parameters,style))}export function printSubcommandHelp(subcommand,style,cliName=""){console.log(formatSubcommandHelpMessage(subcommand,style,cliName))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getCliMetadata","concat","indent","ln","subcommandPlaceholder","formatHelpMessageArguments","formatHelpMessageOptions","formatHelpMessageCommands","helpMessageStyles","formatCliHelpMessage","parameters","style","c","default","Object","assign","metadata","formatTitle","title","toUpperCase","message","usage","punctuation","description","name","subcommands","length","command","options","option","arguments","argument","allowPositional","replace","longest","optionsMetadata","longestOptionTitle","names","aliasesAsArgs","nameAsArg","join","optLength","placeholder","subcommandsMetadata","longestSubcommandTitle","aliases","argumentsMetadata","longestArgumentTitle","example","normalizeExample","formatSubcommandHelpMessage","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 \"../utilities.js\";\nimport { formatHelpMessageArguments } from \"./format-arguments.js\";\nimport { formatHelpMessageOptions } from \"./format-options.js\";\nimport { formatHelpMessageCommands } from \"./format-subcommands.js\";\nimport { helpMessageStyles } from \"./styles.js\";\n\nimport type { Cli, HelpMessageStyle, Subcommand } from \"../types.js\";\n\nexport function formatCliHelpMessage(\n parameters: readonly [Cli, ...Subcommand[]],\n style?: Partial<HelpMessageStyle>,\n): string {\n const c = helpMessageStyles.default;\n if (style) Object.assign(c, style);\n\n const metadata = getCliMetadata(parameters);\n\n const formatTitle = (title: string) => c.title(` ${title.toUpperCase()}`);\n\n let message = \"\";\n\n // CLI usage\n const usage =\n metadata.usage ||\n concat(\n c.punctuation(\"$\"),\n c.description(metadata.name),\n metadata.subcommands.length > 0 ? c.command(\"[command]\") : \"\",\n metadata.options.length > 0 ? c.option(\"[options]\") : \"\",\n metadata.arguments.length > 0 ? c.argument(\"<arguments>\") : \"\",\n metadata.allowPositional ? c.argument(\"<positionals>\") : \"\",\n );\n message += formatTitle(\"Usage\") + ln(1);\n message += indent(2) + usage + ln(2);\n\n // CLI description\n if (metadata.description) {\n message += formatTitle(\"Description\") + ln(1);\n message += 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 let longestOptionTitle = 0;\n for (const metadata of optionsMetadata) {\n const names = [...metadata.aliasesAsArgs, metadata.nameAsArg].join(\", \");\n const optLength = names.length + metadata.placeholder.length;\n if (optLength > longestOptionTitle) {\n longestOptionTitle = optLength;\n }\n }\n\n if (longestOptionTitle > longest) {\n longest = longestOptionTitle;\n }\n\n // Prepare CLI commands\n const subcommandsMetadata = metadata.subcommands;\n\n let longestSubcommandTitle = 0;\n for (const metadata of subcommandsMetadata) {\n const names = [...metadata.aliases, metadata.name].join(\", \");\n const placeholder = subcommandPlaceholder(metadata);\n const optLength = names.length + placeholder.length;\n if (optLength > longestSubcommandTitle) {\n longestSubcommandTitle = optLength;\n }\n }\n\n if (longestSubcommandTitle > longest) {\n longest = longestSubcommandTitle;\n }\n\n // Prepare CLI arguments\n const argumentsMetadata = metadata.arguments;\n\n let longestArgumentTitle = 0;\n for (const argument of argumentsMetadata) {\n if (argument.name.length > longestArgumentTitle) {\n longestArgumentTitle = argument.name.length;\n }\n }\n\n if (longestArgumentTitle > longest) {\n longest = longestArgumentTitle;\n }\n\n // CLI options\n message += formatHelpMessageOptions(optionsMetadata, c, longest);\n\n // CLI commands\n message += formatHelpMessageCommands(subcommandsMetadata, c, longest);\n\n // CLI arguments\n message += formatHelpMessageArguments(argumentsMetadata, c, longest);\n\n // CLI example\n if (metadata.example) {\n message += formatTitle(\"Example\");\n message += ln(1);\n const normalizeExample = metadata.example.replace(/\\n+/g, \"\\n\" + indent(3));\n message += concat(indent(2), c.example(normalizeExample), ln(2));\n }\n\n return message;\n}\n\nexport function formatSubcommandHelpMessage(\n subcommand: Subcommand,\n printStyle?: Partial<HelpMessageStyle>,\n cliName = \"\",\n) {\n const c = helpMessageStyles.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 formatCliHelpMessage([asCli], c);\n}\n\nexport function printCliHelp(parameters: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMessageStyle>) {\n console.log(formatCliHelpMessage(parameters, style));\n}\n\nexport function printSubcommandHelp(subcommand: Subcommand, style?: Partial<HelpMessageStyle>, cliName = \"\") {\n console.log(formatSubcommandHelpMessage(subcommand, style, cliName));\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{concat,indent,insertAtEndOfFirstLine,ln}from"../utilities.mjs";export function formatHelpMessageOptions(optionsMetadata,c,longest){if(optionsMetadata.length===0)return"";let message=c.title(" OPTIONS")+ln(1);for(const metadata of optionsMetadata){const names=metadata.aliasesAsArgs.concat([metadata.nameAsArg]);const normalizeDesc=metadata.description.replace(/\n+/g,"\n"+indent(longest+6)+c.punctuation("\u2514"));const defaultString=metadata.defaultValue===undefined?"":`(default: ${metadata.defaultValueAsString})`;const optLength=names.join(", ").length+metadata.placeholder.length;const spacing=longest+1-optLength;const coloredNames=names.map(name=>c.option(name)).join(c.punctuation(", "));const defaultOrOptional=defaultString?c.default(defaultString):metadata.optional?c.optional("(optional)"):"";message+=concat(indent(2)+coloredNames,c.placeholder(metadata.placeholder),indent(spacing),insertAtEndOfFirstLine(c.description(normalizeDesc),defaultOrOptional),ln(1));if(metadata.example){const normalizeExample=metadata.example.replace(/\n+/g,"\n"+indent(longest+16));message+=concat(indent(longest+6)+c.punctuation("\u2514")+c.exampleTitle("Example:"),c.example(normalizeExample)+ln(1))}}message+=ln(1);return message}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["concat","indent","insertAtEndOfFirstLine","ln","formatHelpMessageOptions","optionsMetadata","c","longest","length","message","title","metadata","names","aliasesAsArgs","nameAsArg","normalizeDesc","description","replace","punctuation","defaultString","defaultValue","undefined","defaultValueAsString","optLength","join","placeholder","spacing","coloredNames","map","name","option","defaultOrOptional","default","optional","example","normalizeExample","exampleTitle"],"sourceRoot":"../../../src/help-message","sources":["format-options.ts"],"sourcesContent":["import { concat, indent, insertAtEndOfFirstLine, ln } from \"../utilities.js\";\n\nimport type { OptionMetadata } from \"../metadata/metadata-types.js\";\nimport type { HelpMessageStyle } from \"../types.js\";\n\nexport function formatHelpMessageOptions(\n optionsMetadata: OptionMetadata[],\n c: HelpMessageStyle,\n longest: number,\n): string {\n if (optionsMetadata.length === 0) return \"\";\n\n let message = c.title(\" OPTIONS\") + ln(1);\n\n for (const metadata of optionsMetadata) {\n const names = metadata.aliasesAsArgs.concat([metadata.nameAsArg]);\n const normalizeDesc = metadata.description.replace(/\\n+/g, \"\\n\" + indent(longest + 6) + c.punctuation(\"└\"));\n const defaultString = metadata.defaultValue === undefined ? \"\" : `(default: ${metadata.defaultValueAsString})`;\n\n const optLength = names.join(\", \").length + metadata.placeholder.length;\n const spacing = longest + 1 - optLength;\n\n const coloredNames = names.map(name => c.option(name)).join(c.punctuation(\", \"));\n\n const defaultOrOptional = defaultString\n ? c.default(defaultString)\n : metadata.optional\n ? c.optional(\"(optional)\")\n : \"\";\n\n message += concat(\n indent(2) + coloredNames,\n c.placeholder(metadata.placeholder),\n indent(spacing),\n insertAtEndOfFirstLine(c.description(normalizeDesc), defaultOrOptional),\n ln(1),\n );\n\n if (metadata.example) {\n const normalizeExample = metadata.example.replace(/\\n+/g, \"\\n\" + indent(longest + 16));\n message += concat(\n indent(longest + 6) + c.punctuation(\"└\") + c.exampleTitle(\"Example:\"),\n c.example(normalizeExample) + ln(1),\n );\n }\n }\n\n message += ln(1);\n\n return message;\n}\n"],"mappings":"AAAA,OAASA,MAAM,CAAEC,MAAM,CAAEC,sBAAsB,CAAEC,EAAE,KAAQ,kBAAiB,CAK5E,MAAO,SAAS,CAAAC,wBAAwBA,CACtCC,eAAiC,CACjCC,CAAmB,CACnBC,OAAe,CACP,CACR,GAAIF,eAAe,CAACG,MAAM,GAAK,CAAC,CAAE,MAAO,EAAE,CAE3C,GAAI,CAAAC,OAAO,CAAGH,CAAC,CAACI,KAAK,CAAC,UAAU,CAAC,CAAGP,EAAE,CAAC,CAAC,CAAC,CAEzC,IAAK,KAAM,CAAAQ,QAAQ,GAAI,CAAAN,eAAe,CAAE,CACtC,KAAM,CAAAO,KAAK,CAAGD,QAAQ,CAACE,aAAa,CAACb,MAAM,CAAC,CAACW,QAAQ,CAACG,SAAS,CAAC,CAAC,CACjE,KAAM,CAAAC,aAAa,CAAGJ,QAAQ,CAACK,WAAW,CAACC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAGhB,MAAM,CAACM,OAAO,CAAG,CAAC,CAAC,CAAGD,CAAC,CAACY,WAAW,CAAC,QAAG,CAAC,CAAC,CAC3G,KAAM,CAAAC,aAAa,CAAGR,QAAQ,CAACS,YAAY,GAAKC,SAAS,CAAG,EAAE,CAAG,aAAaV,QAAQ,CAACW,oBAAoB,GAAG,CAE9G,KAAM,CAAAC,SAAS,CAAGX,KAAK,CAACY,IAAI,CAAC,IAAI,CAAC,CAAChB,MAAM,CAAGG,QAAQ,CAACc,WAAW,CAACjB,MAAM,CACvE,KAAM,CAAAkB,OAAO,CAAGnB,OAAO,CAAG,CAAC,CAAGgB,SAAS,CAEvC,KAAM,CAAAI,YAAY,CAAGf,KAAK,CAACgB,GAAG,CAACC,IAAI,EAAIvB,CAAC,CAACwB,MAAM,CAACD,IAAI,CAAC,CAAC,CAACL,IAAI,CAAClB,CAAC,CAACY,WAAW,CAAC,IAAI,CAAC,CAAC,CAEhF,KAAM,CAAAa,iBAAiB,CAAGZ,aAAa,CACnCb,CAAC,CAAC0B,OAAO,CAACb,aAAa,CAAC,CACxBR,QAAQ,CAACsB,QAAQ,CACf3B,CAAC,CAAC2B,QAAQ,CAAC,YAAY,CAAC,CACxB,EAAE,CAERxB,OAAO,EAAIT,MAAM,CACfC,MAAM,CAAC,CAAC,CAAC,CAAG0B,YAAY,CACxBrB,CAAC,CAACmB,WAAW,CAACd,QAAQ,CAACc,WAAW,CAAC,CACnCxB,MAAM,CAACyB,OAAO,CAAC,CACfxB,sBAAsB,CAACI,CAAC,CAACU,WAAW,CAACD,aAAa,CAAC,CAAEgB,iBAAiB,CAAC,CACvE5B,EAAE,CAAC,CAAC,CACN,CAAC,CAED,GAAIQ,QAAQ,CAACuB,OAAO,CAAE,CACpB,KAAM,CAAAC,gBAAgB,CAAGxB,QAAQ,CAACuB,OAAO,CAACjB,OAAO,CAAC,MAAM,CAAE,IAAI,CAAGhB,MAAM,CAACM,OAAO,CAAG,EAAE,CAAC,CAAC,CACtFE,OAAO,EAAIT,MAAM,CACfC,MAAM,CAACM,OAAO,CAAG,CAAC,CAAC,CAAGD,CAAC,CAACY,WAAW,CAAC,QAAG,CAAC,CAAGZ,CAAC,CAAC8B,YAAY,CAAC,UAAU,CAAC,CACrE9B,CAAC,CAAC4B,OAAO,CAACC,gBAAgB,CAAC,CAAGhC,EAAE,CAAC,CAAC,CACpC,CACF,CACF,CAEAM,OAAO,EAAIN,EAAE,CAAC,CAAC,CAAC,CAEhB,MAAO,CAAAM,OACT","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{concat,indent,ln,subcommandPlaceholder}from"../utilities.mjs";export function formatHelpMessageCommands(subcommandsMetadata,c,longest){if(subcommandsMetadata.length===0)return"";let message=c.title(" COMMANDS")+ln(1);for(const metadata of subcommandsMetadata){const names=metadata.aliases.concat([metadata.name]);const placeholder=subcommandPlaceholder(metadata);const normalizeDesc=metadata.description.replace(/\n+/g,"\n"+indent(longest+6)+c.punctuation("\u2514"));const optLength=names.join(", ").length+placeholder.length;const spacing=longest+1-optLength;const coloredNames=names.map(name=>c.command(name)).join(c.punctuation(", "));message+=concat(indent(2)+coloredNames,c.placeholder(placeholder),indent(spacing),c.description(normalizeDesc)+ln(1))}message+=ln(1);return message}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["concat","indent","ln","subcommandPlaceholder","formatHelpMessageCommands","subcommandsMetadata","c","longest","length","message","title","metadata","names","aliases","name","placeholder","normalizeDesc","description","replace","punctuation","optLength","join","spacing","coloredNames","map","command"],"sourceRoot":"../../../src/help-message","sources":["format-subcommands.ts"],"sourcesContent":["import { concat, indent, ln, subcommandPlaceholder } from \"../utilities.js\";\n\nimport type { SubcommandMetadata } from \"../metadata/metadata-types.js\";\nimport type { HelpMessageStyle } from \"../types.js\";\n\nexport function formatHelpMessageCommands(\n subcommandsMetadata: SubcommandMetadata[],\n c: HelpMessageStyle,\n longest: number,\n): string {\n if (subcommandsMetadata.length === 0) return \"\";\n\n let message = c.title(\" COMMANDS\") + ln(1);\n\n for (const metadata of subcommandsMetadata) {\n const names = metadata.aliases.concat([metadata.name]);\n const placeholder = subcommandPlaceholder(metadata);\n const normalizeDesc = metadata.description.replace(/\\n+/g, \"\\n\" + indent(longest + 6) + c.punctuation(\"└\"));\n\n const optLength = names.join(\", \").length + placeholder.length;\n const spacing = longest + 1 - optLength;\n\n const coloredNames = names.map(name => c.command(name)).join(c.punctuation(\", \"));\n\n message += concat(\n indent(2) + coloredNames,\n c.placeholder(placeholder),\n indent(spacing),\n c.description(normalizeDesc) + ln(1),\n );\n }\n\n message += ln(1);\n\n return message;\n}\n"],"mappings":"AAAA,OAASA,MAAM,CAAEC,MAAM,CAAEC,EAAE,CAAEC,qBAAqB,KAAQ,kBAAiB,CAK3E,MAAO,SAAS,CAAAC,yBAAyBA,CACvCC,mBAAyC,CACzCC,CAAmB,CACnBC,OAAe,CACP,CACR,GAAIF,mBAAmB,CAACG,MAAM,GAAK,CAAC,CAAE,MAAO,EAAE,CAE/C,GAAI,CAAAC,OAAO,CAAGH,CAAC,CAACI,KAAK,CAAC,WAAW,CAAC,CAAGR,EAAE,CAAC,CAAC,CAAC,CAE1C,IAAK,KAAM,CAAAS,QAAQ,GAAI,CAAAN,mBAAmB,CAAE,CAC1C,KAAM,CAAAO,KAAK,CAAGD,QAAQ,CAACE,OAAO,CAACb,MAAM,CAAC,CAACW,QAAQ,CAACG,IAAI,CAAC,CAAC,CACtD,KAAM,CAAAC,WAAW,CAAGZ,qBAAqB,CAACQ,QAAQ,CAAC,CACnD,KAAM,CAAAK,aAAa,CAAGL,QAAQ,CAACM,WAAW,CAACC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAGjB,MAAM,CAACM,OAAO,CAAG,CAAC,CAAC,CAAGD,CAAC,CAACa,WAAW,CAAC,QAAG,CAAC,CAAC,CAE3G,KAAM,CAAAC,SAAS,CAAGR,KAAK,CAACS,IAAI,CAAC,IAAI,CAAC,CAACb,MAAM,CAAGO,WAAW,CAACP,MAAM,CAC9D,KAAM,CAAAc,OAAO,CAAGf,OAAO,CAAG,CAAC,CAAGa,SAAS,CAEvC,KAAM,CAAAG,YAAY,CAAGX,KAAK,CAACY,GAAG,CAACV,IAAI,EAAIR,CAAC,CAACmB,OAAO,CAACX,IAAI,CAAC,CAAC,CAACO,IAAI,CAACf,CAAC,CAACa,WAAW,CAAC,IAAI,CAAC,CAAC,CAEjFV,OAAO,EAAIT,MAAM,CACfC,MAAM,CAAC,CAAC,CAAC,CAAGsB,YAAY,CACxBjB,CAAC,CAACS,WAAW,CAACA,WAAW,CAAC,CAC1Bd,MAAM,CAACqB,OAAO,CAAC,CACfhB,CAAC,CAACW,WAAW,CAACD,aAAa,CAAC,CAAGd,EAAE,CAAC,CAAC,CACrC,CACF,CAEAO,OAAO,EAAIP,EAAE,CAAC,CAAC,CAAC,CAEhB,MAAO,CAAAO,OACT","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import chalk from"chalk";export const helpMessageStyles=Object.freeze({default:{title:chalk.bold.blue,description:chalk.white,default:chalk.dim.italic,optional:chalk.dim.italic,exampleTitle:chalk.yellow,example:chalk.dim,command:chalk.yellow,option:chalk.cyan,argument:chalk.green,placeholder:chalk.hex("#FF9800"),punctuation:chalk.white.dim},dracula:{title:chalk.bold.hex("#BD93F9"),description:chalk.hex("#F8F8F2"),default:chalk.italic.hex("#6272A4"),optional:chalk.italic.hex("#6272A4"),exampleTitle:chalk.hex("#FFB86C"),example:chalk.hex("#6272A4"),command:chalk.hex("#50FA7B"),option:chalk.hex("#8BE9FD"),argument:chalk.hex("#FF79C6"),placeholder:chalk.hex("#F1FA8C"),punctuation:chalk.hex("#6272A4")},solarizedDark:{title:chalk.bold.hex("#268BD2"),description:chalk.hex("#93A1A1"),default:chalk.italic.hex("#586E75"),optional:chalk.italic.hex("#586E75"),exampleTitle:chalk.hex("#B58900"),example:chalk.hex("#586E75"),command:chalk.hex("#2AA198"),option:chalk.hex("#268BD2"),argument:chalk.hex("#859900"),placeholder:chalk.hex("#CB4B16"),punctuation:chalk.hex("#657B83")},nord:{title:chalk.bold.hex("#81A1C1"),description:chalk.hex("#D8DEE9"),default:chalk.italic.hex("#4C566A"),optional:chalk.italic.hex("#4C566A"),exampleTitle:chalk.hex("#EBCB8B"),example:chalk.hex("#4C566A"),command:chalk.hex("#A3BE8C"),option:chalk.hex("#88C0D0"),argument:chalk.hex("#BF616A"),placeholder:chalk.hex("#D08770"),punctuation:chalk.hex("#4C566A")},html:{title:(...string)=>`<span style="color: #89dceb; font-weight: bold;">${escapeHTML(string.join(" "))}</span>`,description:(...string)=>`<span style="color: #cdd6e8;">${escapeHTML(string.join(" "))}</span>`,default:(...string)=>`<span style="color: #6c7086; font-style: italic;">${escapeHTML(string.join(" "))}</span>`,optional:(...string)=>`<span style="color: #6c7086; font-style: italic;">${escapeHTML(string.join(" "))}</span>`,exampleTitle:(...string)=>`<span style="color: #f9e2af;">${escapeHTML(string.join(" "))}</span>`,example:(...string)=>`<span style="color: #6c7086;">${escapeHTML(string.join(" "))}</span>`,command:(...string)=>`<span style="color: #f9e2af;">${escapeHTML(string.join(" "))}</span>`,option:(...string)=>`<span style="color: #17b85d;">${escapeHTML(string.join(" "))}</span>`,argument:(...string)=>`<span style="color: #00ff00;">${escapeHTML(string.join(" "))}</span>`,placeholder:(...string)=>`<span style="color: #db9518;">${escapeHTML(string.join(" "))}</span>`,punctuation:(...string)=>`<span style="color: #6c7086;">${escapeHTML(string.join(" "))}</span>`},gruvboxDark:{title:chalk.bold.hex("#FABD2F"),description:chalk.hex("#EBDBB2"),default:chalk.italic.hex("#928374"),optional:chalk.italic.hex("#928374"),exampleTitle:chalk.hex("#FE8019"),example:chalk.hex("#928374"),command:chalk.hex("#B8BB26"),option:chalk.hex("#83A598"),argument:chalk.hex("#D3869B"),placeholder:chalk.hex("#FB4934"),punctuation:chalk.hex("#928374")},monokai:{title:chalk.bold.hex("#AE81FF"),description:chalk.hex("#F8F8F2"),default:chalk.italic.hex("#75715E"),optional:chalk.italic.hex("#75715E"),exampleTitle:chalk.hex("#FD971F"),example:chalk.hex("#75715E"),command:chalk.hex("#A6E22E"),option:chalk.hex("#66D9EF"),argument:chalk.hex("#F92672"),placeholder:chalk.hex("#E6DB74"),punctuation:chalk.hex("#75715E")},oneDark:{title:chalk.bold.hex("#61AFEF"),description:chalk.hex("#ABB2BF"),default:chalk.italic.hex("#5C6370"),optional:chalk.italic.hex("#5C6370"),exampleTitle:chalk.hex("#E5C07B"),example:chalk.hex("#5C6370"),command:chalk.hex("#98C379"),option:chalk.hex("#56B6C2"),argument:chalk.hex("#E06C75"),placeholder:chalk.hex("#C678DD"),punctuation:chalk.hex("#5C6370")},get noColors(){return new Proxy(this.default,{get(){return(...string)=>string.join(" ")}})}});function escapeHTML(string){return string.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["chalk","helpMessageStyles","Object","freeze","default","title","bold","blue","description","white","dim","italic","optional","exampleTitle","yellow","example","command","option","cyan","argument","green","placeholder","hex","punctuation","dracula","solarizedDark","nord","html","string","escapeHTML","join","gruvboxDark","monokai","oneDark","noColors","Proxy","get","replace"],"sourceRoot":"../../../src/help-message","sources":["styles.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport type { HelpMessageStyle } from \"../types.js\";\n\nexport const helpMessageStyles = Object.freeze({\n default: {\n title: chalk.bold.blue,\n description: chalk.white,\n default: chalk.dim.italic,\n optional: chalk.dim.italic,\n exampleTitle: chalk.yellow,\n example: chalk.dim,\n command: chalk.yellow,\n option: chalk.cyan,\n argument: chalk.green,\n placeholder: chalk.hex(\"#FF9800\"),\n punctuation: chalk.white.dim,\n },\n dracula: {\n title: chalk.bold.hex(\"#BD93F9\"),\n description: chalk.hex(\"#F8F8F2\"),\n default: chalk.italic.hex(\"#6272A4\"),\n optional: chalk.italic.hex(\"#6272A4\"),\n exampleTitle: chalk.hex(\"#FFB86C\"),\n example: chalk.hex(\"#6272A4\"),\n command: chalk.hex(\"#50FA7B\"),\n option: chalk.hex(\"#8BE9FD\"),\n argument: chalk.hex(\"#FF79C6\"),\n placeholder: chalk.hex(\"#F1FA8C\"),\n punctuation: chalk.hex(\"#6272A4\"),\n },\n solarizedDark: {\n title: chalk.bold.hex(\"#268BD2\"),\n description: chalk.hex(\"#93A1A1\"),\n default: chalk.italic.hex(\"#586E75\"),\n optional: chalk.italic.hex(\"#586E75\"),\n exampleTitle: chalk.hex(\"#B58900\"),\n example: chalk.hex(\"#586E75\"),\n command: chalk.hex(\"#2AA198\"),\n option: chalk.hex(\"#268BD2\"),\n argument: chalk.hex(\"#859900\"),\n placeholder: chalk.hex(\"#CB4B16\"),\n punctuation: chalk.hex(\"#657B83\"),\n },\n nord: {\n title: chalk.bold.hex(\"#81A1C1\"),\n description: chalk.hex(\"#D8DEE9\"),\n default: chalk.italic.hex(\"#4C566A\"),\n optional: chalk.italic.hex(\"#4C566A\"),\n exampleTitle: chalk.hex(\"#EBCB8B\"),\n example: chalk.hex(\"#4C566A\"),\n command: chalk.hex(\"#A3BE8C\"),\n option: chalk.hex(\"#88C0D0\"),\n argument: chalk.hex(\"#BF616A\"),\n placeholder: chalk.hex(\"#D08770\"),\n punctuation: chalk.hex(\"#4C566A\"),\n },\n html: {\n title: (...string) => `<span style=\"color: #89dceb; font-weight: bold;\">${escapeHTML(string.join(\" \"))}</span>`,\n description: (...string) => `<span style=\"color: #cdd6e8;\">${escapeHTML(string.join(\" \"))}</span>`,\n default: (...string) => `<span style=\"color: #6c7086; font-style: italic;\">${escapeHTML(string.join(\" \"))}</span>`,\n optional: (...string) => `<span style=\"color: #6c7086; font-style: italic;\">${escapeHTML(string.join(\" \"))}</span>`,\n exampleTitle: (...string) => `<span style=\"color: #f9e2af;\">${escapeHTML(string.join(\" \"))}</span>`,\n example: (...string) => `<span style=\"color: #6c7086;\">${escapeHTML(string.join(\" \"))}</span>`,\n command: (...string) => `<span style=\"color: #f9e2af;\">${escapeHTML(string.join(\" \"))}</span>`,\n option: (...string) => `<span style=\"color: #17b85d;\">${escapeHTML(string.join(\" \"))}</span>`,\n argument: (...string) => `<span style=\"color: #00ff00;\">${escapeHTML(string.join(\" \"))}</span>`,\n placeholder: (...string) => `<span style=\"color: #db9518;\">${escapeHTML(string.join(\" \"))}</span>`,\n punctuation: (...string) => `<span style=\"color: #6c7086;\">${escapeHTML(string.join(\" \"))}</span>`,\n },\n gruvboxDark: {\n title: chalk.bold.hex(\"#FABD2F\"),\n description: chalk.hex(\"#EBDBB2\"),\n default: chalk.italic.hex(\"#928374\"),\n optional: chalk.italic.hex(\"#928374\"),\n exampleTitle: chalk.hex(\"#FE8019\"),\n example: chalk.hex(\"#928374\"),\n command: chalk.hex(\"#B8BB26\"),\n option: chalk.hex(\"#83A598\"),\n argument: chalk.hex(\"#D3869B\"),\n placeholder: chalk.hex(\"#FB4934\"),\n punctuation: chalk.hex(\"#928374\"),\n },\n monokai: {\n title: chalk.bold.hex(\"#AE81FF\"),\n description: chalk.hex(\"#F8F8F2\"),\n default: chalk.italic.hex(\"#75715E\"),\n optional: chalk.italic.hex(\"#75715E\"),\n exampleTitle: chalk.hex(\"#FD971F\"),\n example: chalk.hex(\"#75715E\"),\n command: chalk.hex(\"#A6E22E\"),\n option: chalk.hex(\"#66D9EF\"),\n argument: chalk.hex(\"#F92672\"),\n placeholder: chalk.hex(\"#E6DB74\"),\n punctuation: chalk.hex(\"#75715E\"),\n },\n oneDark: {\n title: chalk.bold.hex(\"#61AFEF\"),\n description: chalk.hex(\"#ABB2BF\"),\n default: chalk.italic.hex(\"#5C6370\"),\n optional: chalk.italic.hex(\"#5C6370\"),\n exampleTitle: chalk.hex(\"#E5C07B\"),\n example: chalk.hex(\"#5C6370\"),\n command: chalk.hex(\"#98C379\"),\n option: chalk.hex(\"#56B6C2\"),\n argument: chalk.hex(\"#E06C75\"),\n placeholder: chalk.hex(\"#C678DD\"),\n punctuation: chalk.hex(\"#5C6370\"),\n },\n get noColors() {\n return new Proxy(this.default, {\n get() {\n return (...string: string[]) => string.join(\" \");\n },\n }) as HelpMessageStyle;\n },\n}) satisfies Record<string, HelpMessageStyle>;\n\nfunction escapeHTML(string: string) {\n return string.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\n}\n"],"mappings":"AAAA,MAAO,CAAAA,KAAK,KAAM,OAAO,CAGzB,MAAO,MAAM,CAAAC,iBAAiB,CAAGC,MAAM,CAACC,MAAM,CAAC,CAC7CC,OAAO,CAAE,CACPC,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACC,IAAI,CACtBC,WAAW,CAAER,KAAK,CAACS,KAAK,CACxBL,OAAO,CAAEJ,KAAK,CAACU,GAAG,CAACC,MAAM,CACzBC,QAAQ,CAAEZ,KAAK,CAACU,GAAG,CAACC,MAAM,CAC1BE,YAAY,CAAEb,KAAK,CAACc,MAAM,CAC1BC,OAAO,CAAEf,KAAK,CAACU,GAAG,CAClBM,OAAO,CAAEhB,KAAK,CAACc,MAAM,CACrBG,MAAM,CAAEjB,KAAK,CAACkB,IAAI,CAClBC,QAAQ,CAAEnB,KAAK,CAACoB,KAAK,CACrBC,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACS,KAAK,CAACC,GAC3B,CAAC,CACDc,OAAO,CAAE,CACPnB,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACgB,GAAG,CAAC,SAAS,CAAC,CAChCd,WAAW,CAAER,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjClB,OAAO,CAAEJ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACpCV,QAAQ,CAAEZ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACrCT,YAAY,CAAEb,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAClCP,OAAO,CAAEf,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BN,OAAO,CAAEhB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BL,MAAM,CAAEjB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC5BH,QAAQ,CAAEnB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC9BD,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAClC,CAAC,CACDG,aAAa,CAAE,CACbpB,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACgB,GAAG,CAAC,SAAS,CAAC,CAChCd,WAAW,CAAER,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjClB,OAAO,CAAEJ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACpCV,QAAQ,CAAEZ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACrCT,YAAY,CAAEb,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAClCP,OAAO,CAAEf,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BN,OAAO,CAAEhB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BL,MAAM,CAAEjB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC5BH,QAAQ,CAAEnB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC9BD,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAClC,CAAC,CACDI,IAAI,CAAE,CACJrB,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACgB,GAAG,CAAC,SAAS,CAAC,CAChCd,WAAW,CAAER,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjClB,OAAO,CAAEJ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACpCV,QAAQ,CAAEZ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACrCT,YAAY,CAAEb,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAClCP,OAAO,CAAEf,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BN,OAAO,CAAEhB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BL,MAAM,CAAEjB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC5BH,QAAQ,CAAEnB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC9BD,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAClC,CAAC,CACDK,IAAI,CAAE,CACJtB,KAAK,CAAEA,CAAC,GAAGuB,MAAM,GAAK,oDAAoDC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAC/GtB,WAAW,CAAEA,CAAC,GAAGoB,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAClG1B,OAAO,CAAEA,CAAC,GAAGwB,MAAM,GAAK,qDAAqDC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAClHlB,QAAQ,CAAEA,CAAC,GAAGgB,MAAM,GAAK,qDAAqDC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CACnHjB,YAAY,CAAEA,CAAC,GAAGe,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CACnGf,OAAO,CAAEA,CAAC,GAAGa,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAC9Fd,OAAO,CAAEA,CAAC,GAAGY,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAC9Fb,MAAM,CAAEA,CAAC,GAAGW,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAC7FX,QAAQ,CAAEA,CAAC,GAAGS,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAC/FT,WAAW,CAAEA,CAAC,GAAGO,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAClGP,WAAW,CAAEA,CAAC,GAAGK,MAAM,GAAK,iCAAiCC,UAAU,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,SAC3F,CAAC,CACDC,WAAW,CAAE,CACX1B,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACgB,GAAG,CAAC,SAAS,CAAC,CAChCd,WAAW,CAAER,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjClB,OAAO,CAAEJ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACpCV,QAAQ,CAAEZ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACrCT,YAAY,CAAEb,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAClCP,OAAO,CAAEf,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BN,OAAO,CAAEhB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BL,MAAM,CAAEjB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC5BH,QAAQ,CAAEnB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC9BD,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAClC,CAAC,CACDU,OAAO,CAAE,CACP3B,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACgB,GAAG,CAAC,SAAS,CAAC,CAChCd,WAAW,CAAER,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjClB,OAAO,CAAEJ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACpCV,QAAQ,CAAEZ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACrCT,YAAY,CAAEb,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAClCP,OAAO,CAAEf,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BN,OAAO,CAAEhB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BL,MAAM,CAAEjB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC5BH,QAAQ,CAAEnB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC9BD,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAClC,CAAC,CACDW,OAAO,CAAE,CACP5B,KAAK,CAAEL,KAAK,CAACM,IAAI,CAACgB,GAAG,CAAC,SAAS,CAAC,CAChCd,WAAW,CAAER,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjClB,OAAO,CAAEJ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACpCV,QAAQ,CAAEZ,KAAK,CAACW,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CACrCT,YAAY,CAAEb,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAClCP,OAAO,CAAEf,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BN,OAAO,CAAEhB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC7BL,MAAM,CAAEjB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC5BH,QAAQ,CAAEnB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CAC9BD,WAAW,CAAErB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAAC,CACjCC,WAAW,CAAEvB,KAAK,CAACsB,GAAG,CAAC,SAAS,CAClC,CAAC,CACD,GAAI,CAAAY,QAAQA,CAAA,CAAG,CACb,MAAO,IAAI,CAAAC,KAAK,CAAC,IAAI,CAAC/B,OAAO,CAAE,CAC7BgC,GAAGA,CAAA,CAAG,CACJ,MAAO,CAAC,GAAGR,MAAgB,GAAKA,MAAM,CAACE,IAAI,CAAC,GAAG,CACjD,CACF,CAAC,CACH,CACF,CAAC,CAA4C,CAE7C,QAAS,CAAAD,UAAUA,CAACD,MAAc,CAAE,CAClC,MAAO,CAAAA,MAAM,CAACS,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,CAACA,OAAO,CAAC,IAAI,CAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,CAAE,MAAM,CACjF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function createCli(input){const setAction=action=>{if(typeof input==="string")return;input.action=action};const setPreValidationHook=hook=>{if(typeof input==="string")return;input.preValidation=hook};return Object.assign(input,{setAction,setPreValidationHook})}export function createSubcommand(input){const setAction=action=>{if(typeof input==="string")return;input.action=action};const setPreValidationHook=hook=>{if(typeof input==="string")return;input.preValidation=hook};return Object.assign(input,{setAction,setPreValidationHook})}export function createOptions(options){return options}export function createArguments(arguments_){return arguments_}export{formatCliHelpMessage as formatCliHelpMsg,formatSubcommandHelpMessage as formatSubcommandHelpMsg,printCliHelp,printSubcommandHelp}from"./help-message/format-cli.mjs";export{helpMessageStyles}from"./help-message/styles.mjs";export{safeParse,safeParseAsync}from"./parser/safe-parse.mjs";export{unsafeParse as parse,unsafeParseAsync as parseAsync}from"./parser/unsafe-parse.mjs";export{isOptionalSchema,schemaDefaultValue,stringToArray,stringToSet}from"./zod-utilities.mjs";export{generateBashAutocompleteScript}from"./autocomplete-scripts/bash-autocomplete-script.mjs";export{generatePowerShellAutocompleteScript}from"./autocomplete-scripts/powershell-autocomplete-script.mjs";export{generateZshAutocompleteScript}from"./autocomplete-scripts/zsh-autocomplete-script.mjs";export{getArgumentsMetadata}from"./metadata/get-arguments-metadata.mjs";export{getCliMetadata}from"./metadata/get-cli-metadata.mjs";export{getOptionsMetadata}from"./metadata/get-options-metadata.mjs";export{getSubcommandsMetadata}from"./metadata/get-subcommands-metadata.mjs";export{generateMarkdown}from"./markdown/generate-markdown.mjs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createCli","input","setAction","action","setPreValidationHook","hook","preValidation","Object","assign","createSubcommand","createOptions","options","createArguments","arguments_","formatCliHelpMessage","formatCliHelpMsg","formatSubcommandHelpMessage","formatSubcommandHelpMsg","printCliHelp","printSubcommandHelp","helpMessageStyles","safeParse","safeParseAsync","unsafeParse","parse","unsafeParseAsync","parseAsync","isOptionalSchema","schemaDefaultValue","stringToArray","stringToSet","generateBashAutocompleteScript","generatePowerShellAutocompleteScript","generateZshAutocompleteScript","getArgumentsMetadata","getCliMetadata","getOptionsMetadata","getSubcommandsMetadata","generateMarkdown"],"sourceRoot":"../../src","sources":["index.ts"],"sourcesContent":["import type {\n ActionsFunctions,\n Argument,\n CheckArgumentsOptional,\n CheckDuplicatedArguments,\n CheckDuplicatedOptions,\n Cli,\n Option,\n Prettify,\n Subcommand,\n} from \"./types.js\";\n\n/**\n * - Insures that there are no duplicated options\n * - Insures that there are no duplicated arguments\n * - Insures that only the last argument is optional\n * - Insures no optional arguments are allowed when `allowPositional` is enabled\n */\ntype CheckCliSubcommandInput<T extends Cli | Subcommand> =\n CheckDuplicatedOptions<T> extends infer Error extends string\n ? Error\n : CheckDuplicatedArguments<T> extends infer Error extends string\n ? Error\n : CheckArgumentsOptional<T> extends infer Error extends string\n ? Error\n : T;\n\nexport function createCli<const T extends Cli>(input: CheckCliSubcommandInput<T>) {\n const setAction = (action: (data: any) => any) => {\n if (typeof input === \"string\") return;\n input.action = action;\n };\n\n const setPreValidationHook = (hook: (context: any) => any) => {\n if (typeof input === \"string\") return;\n input.preValidation = hook;\n };\n\n return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFunctions<T>>;\n}\n\nexport function createSubcommand<const T extends Subcommand>(input: CheckCliSubcommandInput<T>) {\n const setAction = (action: (data: any) => any) => {\n if (typeof input === \"string\") return;\n input.action = action as T[\"action\"];\n };\n\n const setPreValidationHook = (hook: (context: any) => any) => {\n if (typeof input === \"string\") return;\n input.preValidation = hook;\n };\n\n return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFunctions<T>>;\n}\n\n/** - Insures that there are no duplicated options */\ntype CheckOptionsInput<T extends Option[]> =\n CheckDuplicatedOptions<{ options: T }> extends infer Error extends string ? Error : T;\n\nexport function createOptions<const T extends [Option, ...Option[]]>(options: CheckOptionsInput<T>) {\n return options;\n}\n\n/** - Insures that only the last argument is optional */\ntype CheckArgumentsInput<T extends Argument[]> =\n CheckArgumentsOptional<{ arguments: T }> extends infer Error extends string ? Error : T;\n\nexport function createArguments<const T extends [Argument, ...Argument[]]>(arguments_: CheckArgumentsInput<T>) {\n return arguments_;\n}\n\nexport {\n formatCliHelpMessage as formatCliHelpMsg,\n formatSubcommandHelpMessage as formatSubcommandHelpMsg,\n printCliHelp,\n printSubcommandHelp,\n} from \"./help-message/format-cli.js\";\nexport { helpMessageStyles } from \"./help-message/styles.js\";\n\nexport { safeParse, safeParseAsync } from \"./parser/safe-parse.js\";\nexport { unsafeParse as parse, unsafeParseAsync as parseAsync } from \"./parser/unsafe-parse.js\";\n\nexport { isOptionalSchema, schemaDefaultValue, stringToArray, stringToSet } from \"./zod-utilities.js\";\n\nexport { generateBashAutocompleteScript } from \"./autocomplete-scripts/bash-autocomplete-script.js\";\nexport { generatePowerShellAutocompleteScript } from \"./autocomplete-scripts/powershell-autocomplete-script.js\";\nexport { generateZshAutocompleteScript } from \"./autocomplete-scripts/zsh-autocomplete-script.js\";\n\nexport { getArgumentsMetadata } from \"./metadata/get-arguments-metadata.js\";\nexport { getCliMetadata } from \"./metadata/get-cli-metadata.js\";\nexport { getOptionsMetadata } from \"./metadata/get-options-metadata.js\";\nexport { getSubcommandsMetadata } from \"./metadata/get-subcommands-metadata.js\";\n\nexport { generateMarkdown } from \"./markdown/generate-markdown.js\";\n\nexport type * from \"./metadata/metadata-types.js\";\nexport type * from \"./types.js\";\n"],"mappings":"AA2BA,MAAO,SAAS,CAAAA,SAASA,CAAsBC,KAAiC,CAAE,CAChF,KAAM,CAAAC,SAAS,CAAIC,MAA0B,EAAK,CAChD,GAAI,MAAO,CAAAF,KAAK,GAAK,QAAQ,CAAE,OAC/BA,KAAK,CAACE,MAAM,CAAGA,MACjB,CAAC,CAED,KAAM,CAAAC,oBAAoB,CAAIC,IAA2B,EAAK,CAC5D,GAAI,MAAO,CAAAJ,KAAK,GAAK,QAAQ,CAAE,OAC/BA,KAAK,CAACK,aAAa,CAAGD,IACxB,CAAC,CAED,MAAO,CAAAE,MAAM,CAACC,MAAM,CAACP,KAAK,CAAE,CAAEC,SAAS,CAAEE,oBAAqB,CAAC,CACjE,CAEA,MAAO,SAAS,CAAAK,gBAAgBA,CAA6BR,KAAiC,CAAE,CAC9F,KAAM,CAAAC,SAAS,CAAIC,MAA0B,EAAK,CAChD,GAAI,MAAO,CAAAF,KAAK,GAAK,QAAQ,CAAE,OAC/BA,KAAK,CAACE,MAAM,CAAGA,MACjB,CAAC,CAED,KAAM,CAAAC,oBAAoB,CAAIC,IAA2B,EAAK,CAC5D,GAAI,MAAO,CAAAJ,KAAK,GAAK,QAAQ,CAAE,OAC/BA,KAAK,CAACK,aAAa,CAAGD,IACxB,CAAC,CAED,MAAO,CAAAE,MAAM,CAACC,MAAM,CAACP,KAAK,CAAE,CAAEC,SAAS,CAAEE,oBAAqB,CAAC,CACjE,CAMA,MAAO,SAAS,CAAAM,aAAaA,CAAwCC,OAA6B,CAAE,CAClG,MAAO,CAAAA,OACT,CAMA,MAAO,SAAS,CAAAC,eAAeA,CAA4CC,UAAkC,CAAE,CAC7G,MAAO,CAAAA,UACT,CAEA,OACEC,oBAAoB,GAAI,CAAAC,gBAAgB,CACxCC,2BAA2B,GAAI,CAAAC,uBAAuB,CACtDC,YAAY,CACZC,mBAAmB,KACd,+BAA8B,CACrC,OAASC,iBAAiB,KAAQ,2BAA0B,CAE5D,OAASC,SAAS,CAAEC,cAAc,KAAQ,yBAAwB,CAClE,OAASC,WAAW,GAAI,CAAAC,KAAK,CAAEC,gBAAgB,GAAI,CAAAC,UAAU,KAAQ,2BAA0B,CAE/F,OAASC,gBAAgB,CAAEC,kBAAkB,CAAEC,aAAa,CAAEC,WAAW,KAAQ,qBAAoB,CAErG,OAASC,8BAA8B,KAAQ,qDAAoD,CACnG,OAASC,oCAAoC,KAAQ,2DAA0D,CAC/G,OAASC,6BAA6B,KAAQ,oDAAmD,CAEjG,OAASC,oBAAoB,KAAQ,uCAAsC,CAC3E,OAASC,cAAc,KAAQ,iCAAgC,CAC/D,OAASC,kBAAkB,KAAQ,qCAAoC,CACvE,OAASC,sBAAsB,KAAQ,yCAAwC,CAE/E,OAASC,gBAAgB,KAAQ,kCAAiC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getCliMetadata}from"../metadata/get-cli-metadata.mjs";export function generateMarkdown(...parameters){const metadata=getCliMetadata(parameters);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>0){md+="\n## Options:\n\n";md+=renderOptions(metadata.options,3)}if(metadata.arguments.length>0){md+="\n## Arguments:\n\n";md+=renderArguments(metadata.arguments,3)}if(metadata.subcommands.length>0){md+="\n## Subcommands:\n\n";md+=renderSubcommands(metadata.subcommands)}md=stripAnsi(md);md=escapeHtmlTags(md);return md}function renderExamples(examples,list=false){let outString="";const lang="bash";const listIndent=" ".repeat(list?2:0);outString+="\n"+(list?"- ":"");outString+="```"+lang+"\n";outString+=listIndent+examples.replace(/\n/g,"\n"+listIndent);outString+="\n"+listIndent+"```\n";return outString}function renderOptions(optionsMetadata=[],h){let outString="";for(let index=0;index<optionsMetadata.length;index++){const metadata=optionsMetadata[index];const aliases=[metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outString+=`${"#".repeat(h)} \`${aliases+placeholder}\``;if(metadata.optional){outString+=" **[optional]**"}outString+="\n\n";if(metadata.description){outString+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`}if(metadata.defaultValue!==undefined){outString+=`- **default:** \`${metadata.defaultValueAsString}\`\n`}if(metadata.example){outString+=renderExamples(metadata.example,true)}if(index<optionsMetadata.length-1){outString+="\n"}}return outString}function renderArguments(argumentsMetadata=[],h){let outString="";for(let index=0;index<argumentsMetadata.length;index++){const metadata=argumentsMetadata[index];outString+=`${"#".repeat(h)} \`${metadata.name}\``;if(metadata.optional){outString+=" **[optional]**"}outString+="\n\n";if(metadata.description){outString+=`- ${metadata.description.replace(/(\n+)/g," $1 ")}\n`}if(metadata.defaultValue!==undefined){outString+=`- **default:** \`${metadata.defaultValueAsString}\`\n`}if(metadata.example){outString+=renderExamples(metadata.example)}if(index<argumentsMetadata.length-1){outString+="\n"}}return outString}function renderSubcommands(subcommandsMetadata){let outString="";for(let index=0;index<subcommandsMetadata.length;index++){const metadata=subcommandsMetadata[index];const aliases=[metadata.name].concat(metadata.aliases).join(", ");const placeholder=metadata.placeholder&&` ${metadata.placeholder}`;outString+=`### ${aliases+placeholder}\n\n`;if(metadata.description){outString+=`${metadata.description}\n`}if(metadata.example){outString+=renderExamples(metadata.example)}if(metadata.options.length>0){outString+="\n#### Options:\n\n";outString+=renderOptions(metadata.options,4)}if(metadata.arguments.length>0){outString+="\n#### Arguments:\n\n";outString+=renderArguments(metadata.arguments,4)}if(index<subcommandsMetadata.length-1){outString+="\n---\n\n"}}return outString}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=String.raw`(?:\u0007|\u001B\u005C|\u009C)`;const osc=`(?:\\u001B\\][\\s\\S]*?${ST})`;const csi=String.raw`[\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,"")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getCliMetadata","generateMarkdown","parameters","metadata","md","name","description","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","stripAnsi","escapeHtmlTags","examples","list","outString","lang","listIndent","repeat","replace","optionsMetadata","h","index","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","optional","defaultValue","undefined","defaultValueAsString","argumentsMetadata","subcommandsMetadata","markdown","_","code","html","match","ansiRegex","onlyFirst","ST","String","raw","osc","csi","pattern","RegExp","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(...parameters: [Cli, ...Subcommand[]]): string {\n const metadata = getCliMetadata(parameters);\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 > 0) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length > 0) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length > 0) {\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 outString = \"\";\n\n const lang = \"bash\";\n\n const listIndent = \" \".repeat(list ? 2 : 0);\n\n outString += \"\\n\" + (list ? \"- \" : \"\");\n\n outString += \"```\" + lang + \"\\n\";\n outString += listIndent + examples.replace(/\\n/g, \"\\n\" + listIndent);\n outString += \"\\n\" + listIndent + \"```\\n\";\n\n return outString;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outString = \"\";\n\n for (let index = 0; index < optionsMetadata.length; index++) {\n const metadata = optionsMetadata[index];\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outString += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outString += \" **[optional]**\";\n }\n\n outString += \"\\n\\n\";\n\n if (metadata.description) {\n outString += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (metadata.defaultValue !== undefined) {\n outString += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example, true);\n }\n\n if (index < optionsMetadata.length - 1) {\n outString += \"\\n\";\n }\n }\n\n return outString;\n}\n\nfunction renderArguments(argumentsMetadata: ArgumentMetadata[] = [], h: number) {\n let outString = \"\";\n\n for (let index = 0; index < argumentsMetadata.length; index++) {\n const metadata = argumentsMetadata[index];\n\n outString += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outString += \" **[optional]**\";\n }\n\n outString += \"\\n\\n\";\n\n if (metadata.description) {\n outString += `- ${metadata.description.replace(/(\\n+)/g, \" $1 \")}\\n`;\n }\n\n if (metadata.defaultValue !== undefined) {\n outString += `- **default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (index < argumentsMetadata.length - 1) {\n outString += \"\\n\";\n }\n }\n\n return outString;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outString = \"\";\n\n for (let index = 0; index < subcommandsMetadata.length; index++) {\n const metadata = subcommandsMetadata[index];\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outString += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description) {\n outString += `${metadata.description}\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (metadata.options.length > 0) {\n outString += \"\\n#### Options:\\n\\n\";\n outString += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length > 0) {\n outString += \"\\n#### Arguments:\\n\\n\";\n outString += renderArguments(metadata.arguments, 4);\n }\n\n if (index < subcommandsMetadata.length - 1) {\n outString += \"\\n---\\n\\n\";\n }\n }\n\n return outString;\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 = String.raw`(?:\\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 = String.raw`[\\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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{stringifyValue}from"../utilities.mjs";import{isOptionalSchema,schemaDefaultValue,schemaDescription}from"../zod-utilities.mjs";export function getArgumentsMetadata(arguments_){const outputMetadata=[];for(const argument of arguments_){const defaultValue=schemaDefaultValue(argument.type);outputMetadata.push({name:argument.name,description:argument.description??schemaDescription(argument.type)??"",defaultValue,defaultValueAsString:stringifyValue(defaultValue),optional:isOptionalSchema(argument.type),example:argument.example??"",type:argument.type})}return outputMetadata}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stringifyValue","isOptionalSchema","schemaDefaultValue","schemaDescription","getArgumentsMetadata","arguments_","outputMetadata","argument","defaultValue","type","push","name","description","defaultValueAsString","optional","example"],"sourceRoot":"../../../src/metadata","sources":["get-arguments-metadata.ts"],"sourcesContent":["import { stringifyValue } from \"../utilities.js\";\nimport { isOptionalSchema, schemaDefaultValue, schemaDescription } from \"../zod-utilities.js\";\n\nimport type { Argument } from \"../types.js\";\nimport type { ArgumentMetadata } from \"./metadata-types.js\";\n\nexport function getArgumentsMetadata(arguments_: Argument[]): ArgumentMetadata[] {\n const outputMetadata: ArgumentMetadata[] = [];\n\n for (const argument of arguments_) {\n const defaultValue = schemaDefaultValue(argument.type);\n\n outputMetadata.push({\n name: argument.name,\n description: argument.description ?? schemaDescription(argument.type) ?? \"\",\n defaultValue,\n defaultValueAsString: stringifyValue(defaultValue),\n optional: isOptionalSchema(argument.type),\n example: argument.example ?? \"\",\n type: argument.type,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,cAAc,KAAQ,kBAAiB,CAChD,OAASC,gBAAgB,CAAEC,kBAAkB,CAAEC,iBAAiB,KAAQ,sBAAqB,CAK7F,MAAO,SAAS,CAAAC,oBAAoBA,CAACC,UAAsB,CAAsB,CAC/E,KAAM,CAAAC,cAAkC,CAAG,EAAE,CAE7C,IAAK,KAAM,CAAAC,QAAQ,GAAI,CAAAF,UAAU,CAAE,CACjC,KAAM,CAAAG,YAAY,CAAGN,kBAAkB,CAACK,QAAQ,CAACE,IAAI,CAAC,CAEtDH,cAAc,CAACI,IAAI,CAAC,CAClBC,IAAI,CAAEJ,QAAQ,CAACI,IAAI,CACnBC,WAAW,CAAEL,QAAQ,CAACK,WAAW,EAAIT,iBAAiB,CAACI,QAAQ,CAACE,IAAI,CAAC,EAAI,EAAE,CAC3ED,YAAY,CACZK,oBAAoB,CAAEb,cAAc,CAACQ,YAAY,CAAC,CAClDM,QAAQ,CAAEb,gBAAgB,CAACM,QAAQ,CAACE,IAAI,CAAC,CACzCM,OAAO,CAAER,QAAQ,CAACQ,OAAO,EAAI,EAAE,CAC/BN,IAAI,CAAEF,QAAQ,CAACE,IACjB,CAAC,CACH,CAEA,MAAO,CAAAH,cACT","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getArgumentsMetadata}from"./get-arguments-metadata.mjs";import{getOptionsMetadata}from"./get-options-metadata.mjs";import{getSubcommandsMetadata}from"./get-subcommands-metadata.mjs";export function getCliMetadata(inputData){const[cli,...subcommands]=inputData;const outputMetadata={name:cli.cliName,description:cli.description??"",usage:cli.usage??"",example:cli.example??"",allowPositional:cli.allowPositional??false,options:cli.options?getOptionsMetadata(cli.options):[],arguments:cli.arguments?getArgumentsMetadata(cli.arguments):[],subcommands:subcommands?getSubcommandsMetadata(subcommands):[]};return outputMetadata}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","getCliMetadata","inputData","cli","subcommands","outputMetadata","name","cliName","description","usage","example","allowPositional","options","arguments"],"sourceRoot":"../../../src/metadata","sources":["get-cli-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getOptionsMetadata } from \"./get-options-metadata.js\";\nimport { getSubcommandsMetadata } from \"./get-subcommands-metadata.js\";\n\nimport type { Cli, Subcommand } from \"../types.js\";\nimport type { CliMetadata } from \"./metadata-types.js\";\n\nexport function getCliMetadata(inputData: readonly [Cli, ...Subcommand[]]): CliMetadata {\n const [cli, ...subcommands] = inputData;\n\n const outputMetadata: CliMetadata = {\n name: cli.cliName,\n description: cli.description ?? \"\",\n usage: cli.usage ?? \"\",\n example: cli.example ?? \"\",\n allowPositional: cli.allowPositional ?? false,\n options: cli.options ? getOptionsMetadata(cli.options) : [],\n arguments: cli.arguments ? getArgumentsMetadata(cli.arguments) : [],\n subcommands: subcommands ? getSubcommandsMetadata(subcommands) : [],\n };\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,
|
|
1
|
+
{"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","getCliMetadata","inputData","cli","subcommands","outputMetadata","name","cliName","description","usage","example","allowPositional","options","arguments"],"sourceRoot":"../../../src/metadata","sources":["get-cli-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getOptionsMetadata } from \"./get-options-metadata.js\";\nimport { getSubcommandsMetadata } from \"./get-subcommands-metadata.js\";\n\nimport type { Cli, Subcommand } from \"../types.js\";\nimport type { CliMetadata } from \"./metadata-types.js\";\n\nexport function getCliMetadata(inputData: readonly [Cli, ...Subcommand[]]): CliMetadata {\n const [cli, ...subcommands] = inputData;\n\n const outputMetadata: CliMetadata = {\n name: cli.cliName,\n description: cli.description ?? \"\",\n usage: cli.usage ?? \"\",\n example: cli.example ?? \"\",\n allowPositional: cli.allowPositional ?? false,\n options: cli.options ? getOptionsMetadata(cli.options) : [],\n arguments: cli.arguments ? getArgumentsMetadata(cli.arguments) : [],\n subcommands: subcommands ? getSubcommandsMetadata(subcommands) : [],\n };\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,8BAA6B,CAClE,OAASC,kBAAkB,KAAQ,4BAA2B,CAC9D,OAASC,sBAAsB,KAAQ,gCAA+B,CAKtE,MAAO,SAAS,CAAAC,cAAcA,CAACC,SAA0C,CAAe,CACtF,KAAM,CAACC,GAAG,CAAE,GAAGC,WAAW,CAAC,CAAGF,SAAS,CAEvC,KAAM,CAAAG,cAA2B,CAAG,CAClCC,IAAI,CAAEH,GAAG,CAACI,OAAO,CACjBC,WAAW,CAAEL,GAAG,CAACK,WAAW,EAAI,EAAE,CAClCC,KAAK,CAAEN,GAAG,CAACM,KAAK,EAAI,EAAE,CACtBC,OAAO,CAAEP,GAAG,CAACO,OAAO,EAAI,EAAE,CAC1BC,eAAe,CAAER,GAAG,CAACQ,eAAe,EAAI,KAAK,CAC7CC,OAAO,CAAET,GAAG,CAACS,OAAO,CAAGb,kBAAkB,CAACI,GAAG,CAACS,OAAO,CAAC,CAAG,EAAE,CAC3DC,SAAS,CAAEV,GAAG,CAACU,SAAS,CAAGf,oBAAoB,CAACK,GAAG,CAACU,SAAS,CAAC,CAAG,EAAE,CACnET,WAAW,CAAEA,WAAW,CAAGJ,sBAAsB,CAACI,WAAW,CAAC,CAAG,EACnE,CAAC,CAED,MAAO,CAAAC,cACT","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{transformOptionToArgument}from"../parser/parse/parser-helpers.mjs";import{stringifyValue}from"../utilities.mjs";import{isOptionalSchema,schemaDefaultValue,schemaDescription}from"../zod-utilities.mjs";export function getOptionsMetadata(options){const outputMetadata=[];if(!options||options.length===0){return outputMetadata}for(const option of options){const defaultValue=schemaDefaultValue(option.type);const aliases=option.aliases??[];outputMetadata.push({name:option.name,nameAsArg:transformOptionToArgument(option.name),aliases,aliasesAsArgs:aliases.map(alias=>transformOptionToArgument(alias)),placeholder:option.placeholder??"",description:option.description??schemaDescription(option.type)??"",optional:isOptionalSchema(option.type),example:option.example??"",defaultValue,defaultValueAsString:stringifyValue(defaultValue),type:option.type})}return outputMetadata}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","stringifyValue","isOptionalSchema","schemaDefaultValue","schemaDescription","getOptionsMetadata","options","outputMetadata","length","option","defaultValue","type","aliases","push","name","nameAsArg","aliasesAsArgs","map","alias","placeholder","description","optional","example","defaultValueAsString"],"sourceRoot":"../../../src/metadata","sources":["get-options-metadata.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parser/parse/parser-helpers.js\";\nimport { stringifyValue } from \"../utilities.js\";\nimport { isOptionalSchema, schemaDefaultValue, schemaDescription } from \"../zod-utilities.js\";\n\nimport type { Option } from \"../types.js\";\nimport type { OptionMetadata } from \"./metadata-types.js\";\n\nexport function getOptionsMetadata(options: Option[]): OptionMetadata[] {\n const outputMetadata: OptionMetadata[] = [];\n\n if (!options || options.length === 0) {\n return outputMetadata;\n }\n\n for (const option of options) {\n const defaultValue = schemaDefaultValue(option.type);\n const aliases = option.aliases ?? [];\n\n outputMetadata.push({\n name: option.name,\n nameAsArg: transformOptionToArgument(option.name),\n aliases,\n aliasesAsArgs: aliases.map(alias => transformOptionToArgument(alias)),\n placeholder: option.placeholder ?? \"\",\n description: option.description ?? schemaDescription(option.type) ?? \"\",\n optional: isOptionalSchema(option.type),\n example: option.example ?? \"\",\n defaultValue,\n defaultValueAsString: stringifyValue(defaultValue),\n type: option.type,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,yBAAyB,KAAQ,oCAAmC,CAC7E,OAASC,cAAc,KAAQ,kBAAiB,CAChD,OAASC,gBAAgB,CAAEC,kBAAkB,CAAEC,iBAAiB,KAAQ,sBAAqB,CAK7F,MAAO,SAAS,CAAAC,kBAAkBA,CAACC,OAAiB,CAAoB,CACtE,KAAM,CAAAC,cAAgC,CAAG,EAAE,CAE3C,GAAI,CAACD,OAAO,EAAIA,OAAO,CAACE,MAAM,GAAK,CAAC,CAAE,CACpC,MAAO,CAAAD,cACT,CAEA,IAAK,KAAM,CAAAE,MAAM,GAAI,CAAAH,OAAO,CAAE,CAC5B,KAAM,CAAAI,YAAY,CAAGP,kBAAkB,CAACM,MAAM,CAACE,IAAI,CAAC,CACpD,KAAM,CAAAC,OAAO,CAAGH,MAAM,CAACG,OAAO,EAAI,EAAE,CAEpCL,cAAc,CAACM,IAAI,CAAC,CAClBC,IAAI,CAAEL,MAAM,CAACK,IAAI,CACjBC,SAAS,CAAEf,yBAAyB,CAACS,MAAM,CAACK,IAAI,CAAC,CACjDF,OAAO,CACPI,aAAa,CAAEJ,OAAO,CAACK,GAAG,CAACC,KAAK,EAAIlB,yBAAyB,CAACkB,KAAK,CAAC,CAAC,CACrEC,WAAW,CAAEV,MAAM,CAACU,WAAW,EAAI,EAAE,CACrCC,WAAW,CAAEX,MAAM,CAACW,WAAW,EAAIhB,iBAAiB,CAACK,MAAM,CAACE,IAAI,CAAC,EAAI,EAAE,CACvEU,QAAQ,CAAEnB,gBAAgB,CAACO,MAAM,CAACE,IAAI,CAAC,CACvCW,OAAO,CAAEb,MAAM,CAACa,OAAO,EAAI,EAAE,CAC7BZ,YAAY,CACZa,oBAAoB,CAAEtB,cAAc,CAACS,YAAY,CAAC,CAClDC,IAAI,CAAEF,MAAM,CAACE,IACf,CAAC,CACH,CAEA,MAAO,CAAAJ,cACT","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getArgumentsMetadata}from"./get-arguments-metadata.mjs";import{getOptionsMetadata}from"./get-options-metadata.mjs";export function getSubcommandsMetadata(subcommands){const outputMetadata=[];if(!subcommands||subcommands.length===0){return outputMetadata}for(const subcommand of subcommands){const optionsMetadata=subcommand.options?getOptionsMetadata(subcommand.options):[];const argumentsMetadata=subcommand.arguments?getArgumentsMetadata(subcommand.arguments):[];outputMetadata.push({name:subcommand.name,aliases:subcommand.aliases??[],description:subcommand.description??"",placeholder:subcommand.placeholder??"",usage:subcommand.usage??"",example:subcommand.example??"",allowPositional:subcommand.allowPositional??false,options:optionsMetadata,arguments:argumentsMetadata})}return outputMetadata}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","subcommands","outputMetadata","length","subcommand","optionsMetadata","options","argumentsMetadata","arguments","push","name","aliases","description","placeholder","usage","example","allowPositional"],"sourceRoot":"../../../src/metadata","sources":["get-subcommands-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getOptionsMetadata } from \"./get-options-metadata.js\";\n\nimport type { Subcommand } from \"../types.js\";\nimport type { SubcommandMetadata } from \"./metadata-types.js\";\n\nexport function getSubcommandsMetadata(subcommands: Subcommand[]): SubcommandMetadata[] {\n const outputMetadata: SubcommandMetadata[] = [];\n\n if (!subcommands || subcommands.length === 0) {\n return outputMetadata;\n }\n\n for (const subcommand of subcommands) {\n const optionsMetadata = subcommand.options ? getOptionsMetadata(subcommand.options) : [];\n const argumentsMetadata = subcommand.arguments ? getArgumentsMetadata(subcommand.arguments) : [];\n\n outputMetadata.push({\n name: subcommand.name,\n aliases: subcommand.aliases ?? [],\n description: subcommand.description ?? \"\",\n placeholder: subcommand.placeholder ?? \"\",\n usage: subcommand.usage ?? \"\",\n example: subcommand.example ?? \"\",\n allowPositional: subcommand.allowPositional ?? false,\n options: optionsMetadata,\n arguments: argumentsMetadata,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,8BAA6B,CAClE,OAASC,kBAAkB,KAAQ,4BAA2B,CAK9D,MAAO,SAAS,CAAAC,sBAAsBA,CAACC,WAAyB,CAAwB,CACtF,KAAM,CAAAC,cAAoC,CAAG,EAAE,CAE/C,GAAI,CAACD,WAAW,EAAIA,WAAW,CAACE,MAAM,GAAK,CAAC,CAAE,CAC5C,MAAO,CAAAD,cACT,CAEA,IAAK,KAAM,CAAAE,UAAU,GAAI,CAAAH,WAAW,CAAE,CACpC,KAAM,CAAAI,eAAe,CAAGD,UAAU,CAACE,OAAO,CAAGP,kBAAkB,CAACK,UAAU,CAACE,OAAO,CAAC,CAAG,EAAE,CACxF,KAAM,CAAAC,iBAAiB,CAAGH,UAAU,CAACI,SAAS,CAAGV,oBAAoB,CAACM,UAAU,CAACI,SAAS,CAAC,CAAG,EAAE,CAEhGN,cAAc,CAACO,IAAI,CAAC,CAClBC,IAAI,CAAEN,UAAU,CAACM,IAAI,CACrBC,OAAO,CAAEP,UAAU,CAACO,OAAO,EAAI,EAAE,CACjCC,WAAW,CAAER,UAAU,CAACQ,WAAW,EAAI,EAAE,CACzCC,WAAW,CAAET,UAAU,CAACS,WAAW,EAAI,EAAE,CACzCC,KAAK,CAAEV,UAAU,CAACU,KAAK,EAAI,EAAE,CAC7BC,OAAO,CAAEX,UAAU,CAACW,OAAO,EAAI,EAAE,CACjCC,eAAe,CAAEZ,UAAU,CAACY,eAAe,EAAI,KAAK,CACpDV,OAAO,CAAED,eAAe,CACxBG,SAAS,CAAED,iBACb,CAAC,CACH,CAEA,MAAO,CAAAL,cACT","ignoreList":[]}
|