@tikkhun/cli-core 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,7 @@ var L__default = /*#__PURE__*/_interopDefault(L);
13
13
  /**
14
14
  @tikkhun/cli-core
15
15
  */
16
- var P=Object.defineProperty,E=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var A=(s,t,o)=>t in s?P(s,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[t]=o,R=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&A(s,o,t[o]);if(g)for(var o of g(t))x.call(t,o)&&A(s,o,t[o]);return s},S=(s,t)=>E(s,w(t));var l=(s,t)=>{var o={};for(var n in s)b.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&x.call(s,n)&&(o[n]=s[n]);return o};var f=(s,t,o)=>new Promise((n,i)=>{var r=e=>{try{c(o.next(e));}catch(T){i(T);}},a=e=>{try{c(o.throw(e));}catch(T){i(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);c((o=o.apply(s,t)).next());});var{merge:V}=L__default.default,y=class y{constructor(t){this.options=V({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},N=["true",!0,"1",1];var m=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,r]=n.split("=");return {key:i,value:r}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!N.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,r])=>{let a=o[i];typeof r=="object"?n[i]=s.toType(r,a):n[i]=s.getTypeValue(r,a);}),n}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=s.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{get:I}=L__default.default,u=class extends p{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:r})=>{if(this.options.excludeOptions.includes(i))return;let a=n[i];this.program.option(`--${i} <${a}>`,I(this.options.optionTitles,i),r);});}start(t){this.program.action(o=>{let n=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);}).parse(process.argv);}};var h=class extends p{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let i={};for(let{key:r,value:a}of t){let c=o[r];if(!c)continue;let e=n[r];e&&(i[r]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return i});}getActionResult(t){return f(this,null,function*(){let i=t,n=l(i,["type"]);return yield prompts.input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);})}};var v=(o=>(o.prompts="prompts",o.args="args",o))(v||{}),O=class O{constructor(t){this.options=L.merge({},O.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var C=O,Ot=C;
16
+ var P=Object.defineProperty,E=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var A=(s,t,o)=>t in s?P(s,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[t]=o,R=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&A(s,o,t[o]);if(g)for(var o of g(t))x.call(t,o)&&A(s,o,t[o]);return s},S=(s,t)=>E(s,w(t));var l=(s,t)=>{var o={};for(var n in s)b.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&x.call(s,n)&&(o[n]=s[n]);return o};var f=(s,t,o)=>new Promise((n,i)=>{var r=e=>{try{c(o.next(e));}catch(T){i(T);}},a=e=>{try{c(o.throw(e));}catch(T){i(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);c((o=o.apply(s,t)).next());});var{merge:V}=L__default.default,y=class y{constructor(t){this.options=V({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},N=["true",!0,"1",1];var m=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,r]=n.split("=");return {key:i,value:r}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!N.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,r])=>{let a=o[i];typeof r=="object"?n[i]=s.toType(r,a):n[i]=s.getTypeValue(r,a);}),n}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=s.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{get:I}=L__default.default,u=class extends p{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:r})=>{if(this.options.excludeOptions.includes(i))return;let a=n[i];this.program.option(`--${i} <${a}>`,I(this.options.optionTitles,i),r);});}start(t){this.program.action(o=>{let n=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);}).parse(process.argv);}};var h=class extends p{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let i={};for(let{key:r,value:a}of t){let c=o[r];if(!c)continue;let e=n[r];e&&(i[r]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return i});}getActionResult(t){return f(this,null,function*(){let i=t,n=l(i,["type"]);return yield prompts.input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);})}};var v=(o=>(o.prompts="prompts",o.args="args",o))(v||{}),O=class O{constructor(t){this.options=L.merge({},O.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.promptsCommand&&this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var C=O,Ot=C;
17
17
 
18
18
  exports.Cli = Ot;
19
19
  exports.CommandManager = C;
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/command/command.interface.ts","../lib/OptionHandler.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli"],"mappings":"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","file":"CommandManager.js","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
1
+ {"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/OptionHandler.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli"],"mappings":"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","file":"CommandManager.js","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n // 又有 args 又有 prompts\n if (this.promptsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n }\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
@@ -7,7 +7,7 @@ import { Logger } from '@tikkhun/logger';
7
7
  /**
8
8
  @tikkhun/cli-core
9
9
  */
10
- var P=Object.defineProperty,E=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var A=(s,t,o)=>t in s?P(s,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[t]=o,R=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&A(s,o,t[o]);if(g)for(var o of g(t))x.call(t,o)&&A(s,o,t[o]);return s},S=(s,t)=>E(s,w(t));var l=(s,t)=>{var o={};for(var n in s)b.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&x.call(s,n)&&(o[n]=s[n]);return o};var f=(s,t,o)=>new Promise((n,i)=>{var r=e=>{try{c(o.next(e));}catch(T){i(T);}},a=e=>{try{c(o.throw(e));}catch(T){i(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);c((o=o.apply(s,t)).next());});var{merge:V}=L,y=class y{constructor(t){this.options=V({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},N=["true",!0,"1",1];var m=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,r]=n.split("=");return {key:i,value:r}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!N.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,r])=>{let a=o[i];typeof r=="object"?n[i]=s.toType(r,a):n[i]=s.getTypeValue(r,a);}),n}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=s.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{get:I}=L,u=class extends p{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:r})=>{if(this.options.excludeOptions.includes(i))return;let a=n[i];this.program.option(`--${i} <${a}>`,I(this.options.optionTitles,i),r);});}start(t){this.program.action(o=>{let n=unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);}).parse(process.argv);}};var h=class extends p{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),n=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let i={};for(let{key:r,value:a}of t){let c=o[r];if(!c)continue;let e=n[r];e&&(i[r]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return i});}getActionResult(t){return f(this,null,function*(){let i=t,n=l(i,["type"]);return yield input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);})}};var v=(o=>(o.prompts="prompts",o.args="args",o))(v||{}),O=class O{constructor(t){this.options=merge({},O.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var C=O,Ot=C;
10
+ var P=Object.defineProperty,E=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var A=(s,t,o)=>t in s?P(s,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[t]=o,R=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&A(s,o,t[o]);if(g)for(var o of g(t))x.call(t,o)&&A(s,o,t[o]);return s},S=(s,t)=>E(s,w(t));var l=(s,t)=>{var o={};for(var n in s)b.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&x.call(s,n)&&(o[n]=s[n]);return o};var f=(s,t,o)=>new Promise((n,i)=>{var r=e=>{try{c(o.next(e));}catch(T){i(T);}},a=e=>{try{c(o.throw(e));}catch(T){i(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);c((o=o.apply(s,t)).next());});var{merge:V}=L,y=class y{constructor(t){this.options=V({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},N=["true",!0,"1",1];var m=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,r]=n.split("=");return {key:i,value:r}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!N.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,r])=>{let a=o[i];typeof r=="object"?n[i]=s.toType(r,a):n[i]=s.getTypeValue(r,a);}),n}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=s.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{get:I}=L,u=class extends p{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:r})=>{if(this.options.excludeOptions.includes(i))return;let a=n[i];this.program.option(`--${i} <${a}>`,I(this.options.optionTitles,i),r);});}start(t){this.program.action(o=>{let n=unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);}).parse(process.argv);}};var h=class extends p{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),n=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let i={};for(let{key:r,value:a}of t){let c=o[r];if(!c)continue;let e=n[r];e&&(i[r]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return i});}getActionResult(t){return f(this,null,function*(){let i=t,n=l(i,["type"]);return yield input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=unflatJson({delimiter:".",data:o}),i=m.toType(n,this.options.optionTypes);t(i);})}};var v=(o=>(o.prompts="prompts",o.args="args",o))(v||{}),O=class O{constructor(t){this.options=merge({},O.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.promptsCommand&&this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var C=O,Ot=C;
11
11
 
12
12
  export { Ot as Cli, C as CommandManager, v as CommandTypes };
13
13
  //# sourceMappingURL=CommandManager.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/command/command.interface.ts","../lib/OptionHandler.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli"],"mappings":"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","file":"CommandManager.mjs","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
1
+ {"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/OptionHandler.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli"],"mappings":"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","file":"CommandManager.mjs","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n // 又有 args 又有 prompts\n if (this.promptsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n }\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var N__default = /*#__PURE__*/_interopDefault(N);
13
13
  /**
14
14
  @tikkhun/cli-core
15
15
  */
16
- var E=Object.defineProperty,w=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var C=(r,t,o)=>t in r?E(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,R=(r,t)=>{for(var o in t||(t={}))A.call(t,o)&&C(r,o,t[o]);if(g)for(var o of g(t))b.call(t,o)&&C(r,o,t[o]);return r},S=(r,t)=>w(r,L(t));var l=(r,t)=>{var o={};for(var n in r)A.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&g)for(var n of g(r))t.indexOf(n)<0&&b.call(r,n)&&(o[n]=r[n]);return o};var f=(r,t,o)=>new Promise((n,s)=>{var i=e=>{try{c(o.next(e));}catch(T){s(T);}},a=e=>{try{c(o.throw(e));}catch(T){s(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,a);c((o=o.apply(r,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},V=["true",!0,"1",1],z=["false",!1,"",0],m=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[s,i]=n.split("=");return {key:s,value:i}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!V.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([s,i])=>{let a=o[s];typeof i=="object"?n[s]=r.toType(i,a):n[s]=r.getTypeValue(i,a);}),n}toType(t){return r.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,s])=>{o[n]=r.toStringValue(s);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:F}=N__default.default,y=class y{constructor(t){this.options=F({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var {get:J}=N__default.default,u=class extends p{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:s,value:i})=>{if(this.options.excludeOptions.includes(s))return;let a=n[s];this.program.option(`--${s} <${a}>`,J(this.options.optionTitles,s),i);});}start(t){this.program.action(o=>{let n=utilsCore.unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);}).parse(process.argv);}};var h=class extends p{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let s={};for(let{key:i,value:a}of t){let c=o[i];if(!c)continue;let e=n[i];e&&(s[i]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return s});}getActionResult(t){return f(this,null,function*(){let s=t,n=l(s,["type"]);return yield prompts.input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=utilsCore.unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);})}};var H=(o=>(o.prompts="prompts",o.args="args",o))(H||{}),O=class O{constructor(t){this.options=N.merge({},O.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var x=O,Rt=x;function Et(r){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),logger.Logger.log("\u7248\u672C: "+r.version);}
16
+ var E=Object.defineProperty,w=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var C=(r,t,o)=>t in r?E(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,R=(r,t)=>{for(var o in t||(t={}))A.call(t,o)&&C(r,o,t[o]);if(g)for(var o of g(t))b.call(t,o)&&C(r,o,t[o]);return r},S=(r,t)=>w(r,L(t));var l=(r,t)=>{var o={};for(var n in r)A.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&g)for(var n of g(r))t.indexOf(n)<0&&b.call(r,n)&&(o[n]=r[n]);return o};var f=(r,t,o)=>new Promise((n,s)=>{var i=e=>{try{c(o.next(e));}catch(T){s(T);}},a=e=>{try{c(o.throw(e));}catch(T){s(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,a);c((o=o.apply(r,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},V=["true",!0,"1",1],z=["false",!1,"",0],m=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[s,i]=n.split("=");return {key:s,value:i}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!V.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([s,i])=>{let a=o[s];typeof i=="object"?n[s]=r.toType(i,a):n[s]=r.getTypeValue(i,a);}),n}toType(t){return r.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,s])=>{o[n]=r.toStringValue(s);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:F}=N__default.default,y=class y{constructor(t){this.options=F({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var {get:J}=N__default.default,u=class extends p{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:s,value:i})=>{if(this.options.excludeOptions.includes(s))return;let a=n[s];this.program.option(`--${s} <${a}>`,J(this.options.optionTitles,s),i);});}start(t){this.program.action(o=>{let n=utilsCore.unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);}).parse(process.argv);}};var h=class extends p{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let s={};for(let{key:i,value:a}of t){let c=o[i];if(!c)continue;let e=n[i];e&&(s[i]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return s});}getActionResult(t){return f(this,null,function*(){let s=t,n=l(s,["type"]);return yield prompts.input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=utilsCore.unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);})}};var H=(o=>(o.prompts="prompts",o.args="args",o))(H||{}),O=class O{constructor(t){this.options=N.merge({},O.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.promptsCommand&&this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var x=O,Rt=x;function Et(r){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),logger.Logger.log("\u7248\u672C: "+r.version);}
17
17
 
18
18
  exports.AbstractCommand = p;
19
19
  exports.ArgsCommand = u;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/OptionHandler.ts","../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/package.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli","echoPackage","packageJson"],"mappings":"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","file":"index.js","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
1
+ {"version":3,"sources":["../lib/OptionHandler.ts","../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/package.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli","echoPackage","packageJson"],"mappings":";;;;;;;;;;;;;;;qyBAAaA,CAAQ,CAAA,CACnB,MAAO,OACP,CAAA,aAAA,CAAe,gBACf,OAAS,CAAA,SAAA,CACT,OAAQ,QACR,CAAA,MAAA,CAAQ,QACR,CAAA,MAAA,CAAQ,QACR,CAAA,MAAA,CAAQ,QACV,CAEaC,CAAAA,CAAAA,CAAe,CAAC,MAAQ,CAAA,CAAA,CAAA,CAAM,IAAK,CAAC,CAAA,CACpCC,CAAgB,CAAA,CAAC,OAAS,CAAA,CAAA,CAAA,CAAO,GAAI,CAAC,CAAA,CACtCC,EAAN,MAAMC,CAAc,CAEzB,WAAYC,CAAAA,CAAAA,CAA6B,CACvC,IAAA,CAAK,MAASA,CAAAA,EAChB,CACA,OAAO,YAAA,CAAaC,EAAeC,CAAc,CAAA,CAC/C,OAAIA,CAASP,GAAAA,CAAAA,CAAM,KACVM,CAAAA,CAAAA,CAAM,KAAM,CAAA,GAAG,EAEpBC,CAASP,GAAAA,CAAAA,CAAM,OACV,IAAK,CAAA,KAAA,CAAMM,CAAK,CAErBC,CAAAA,CAAAA,GAASP,CAAM,CAAA,aAAA,CACZM,CACEA,CAAAA,CAAAA,CACJ,MAAM,GAAG,CAAA,CACT,IAAKE,CAAY,EAAA,CAChB,GAAI,CAACA,CAAAA,CAAS,OACd,GAAM,CAACC,CAAAA,CAAKH,CAAK,CAAIE,CAAAA,CAAAA,CAAQ,MAAM,GAAG,CAAA,CACtC,OAAO,CAAE,GAAA,CAAAC,CAAK,CAAA,KAAA,CAAAH,CAAM,CACtB,CAAC,CACA,CAAA,MAAA,CAAQI,GAAMA,CAAC,CAAA,CARC,EAUjBH,CAAAA,CAAAA,GAASP,CAAM,CAAA,MAAA,CACV,MAAOM,CAAAA,CAAK,EAEjBC,CAASP,GAAAA,CAAAA,CAAM,QACb,CAAAC,CAAAA,CAAAA,CAAa,SAASK,CAAK,CAAA,CAG1BA,CACT,CACA,OAAO,MAAA,CAAOK,EAAsDN,CAA6B,CAAA,CAC/F,IAAMO,CAA4B,CAAA,GAClC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACF,CAAKH,CAAAA,CAAK,IAAM,CAC5C,IAAMC,EAAOF,CAAOI,CAAAA,CAAG,CACnB,CAAA,OAAOH,CAAU,EAAA,QAAA,CACnBM,EAAKH,CAAG,CAAA,CAAIL,EAAc,MAAOE,CAAAA,CAAAA,CAAOC,CAAI,CAE5CK,CAAAA,CAAAA,CAAKH,CAAG,CAAA,CAAIL,CAAc,CAAA,YAAA,CAAaE,EAAiBC,CAAI,EAEhE,CAAC,CACMK,CAAAA,CACT,CACA,MAAOD,CAAAA,CAAAA,CAA0B,CAC/B,OAAOP,CAAc,CAAA,MAAA,CAAOO,EAAK,IAAK,CAAA,MAAM,CAC9C,CACA,OAAO,SAASA,CAA0B,CAAA,CACxC,IAAMC,CAAAA,CAA4B,EAAC,CACnC,cAAO,OAAQD,CAAAA,CAAG,EAAE,OAAQ,CAAA,CAAC,CAACF,CAAKH,CAAAA,CAAK,CAAM,GAAA,CAC5CM,CAAKH,CAAAA,CAAG,EAAIL,CAAc,CAAA,aAAA,CAAcE,CAAK,EAC/C,CAAC,EACMM,CACT,CACA,OAAO,aAAcN,CAAAA,CAAAA,CAAY,CAC/B,GAAI,KAAA,CAAM,QAAQA,CAAK,CAAA,CAAG,CACxB,IAAMO,CAAAA,CAAQP,CAAM,CAAA,CAAC,CAErB,CAAA,OAAI,OAAOO,CAAU,EAAA,QAAA,EAAYA,EAAM,cAAe,CAAA,KAAK,GAAKA,CAAM,CAAA,cAAA,CAAe,OAAO,CAAA,CACnFP,CAAM,CAAA,GAAA,CAAKQ,GAAS,CAAGA,EAAAA,CAAAA,CAAK,GAAG,CAAIA,CAAAA,EAAAA,CAAAA,CAAK,KAAK,CAAE,CAAA,CAAA,CAAE,QAAS,EAAA,CAE5DR,CAAM,CAAA,QAAA,EACf,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZF,EAAc,QAASE,CAAAA,CAAK,CAE9B,CAAA,EAAA,CAAKA,CACd,CACF,EC/EA,GAAM,CAAE,MAAAS,CAAM,CAAA,CAAIC,kBAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAYC,CAAAA,CAAAA,CAAmC,CAC7C,IAAK,CAAA,OAAA,CAAUH,EAAM,EAAC,CAAGE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CAAA,CACjE,KAAK,IAAK,GACZ,CAGF,CAjBsBD,CAAAA,CAAAA,CACJ,gBAAkC,CAChD,OAAA,CAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,cAAA,CAAgB,EAChB,CAAA,cAAA,CAAgB,EAChB,CAAA,WAAA,CAAa,EACb,CAAA,YAAA,CAAc,EAChB,CARK,CAAA,IAAeE,EAAfF,ECTD,IAAA,CAAE,GAAAG,CAAAA,CAAI,EAAIJ,kBACHK,CAAAA,CAAAA,CAAN,cAA0BF,CAAgB,CAE/C,MAAa,CACX,IAAA,CAAK,OAAUG,CAAAA,uBAAAA,EACf,CAAA,IAAA,CAAK,aACP,CACQ,YAAa,CACnB,IAAMC,EAAgBpB,CAAc,CAAA,QAAA,CAAS,IAAK,CAAA,OAAA,CAAQ,cAAc,CAAA,CAClEqB,EAAaC,oBAAW,CAAA,CAAE,UAAW,GAAK,CAAA,IAAA,CAAMF,CAAc,CAAC,CAAA,CAC/DG,CAAgBC,CAAAA,kBAAAA,CAAS,CAAE,SAAA,CAAW,IAAK,IAAM,CAAA,IAAA,CAAK,QAAQ,WAAY,CAAC,EACjFH,CAAW,CAAA,OAAA,CAAQ,CAAC,CAAE,GAAAf,CAAAA,CAAAA,CAAK,MAAAH,CAAM,CAAA,GAAM,CACrC,GAAI,IAAA,CAAK,QAAQ,cAAe,CAAA,QAAA,CAASG,CAAG,CAAA,CAC1C,OAEF,IAAMF,EAAOmB,CAAcjB,CAAAA,CAAG,EAC9B,IAAK,CAAA,OAAA,CAAS,OAAO,CAAKA,EAAAA,EAAAA,CAAG,CAAKF,EAAAA,EAAAA,CAAI,CAAKa,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,KAAK,OAAQ,CAAA,YAAA,CAAcX,CAAG,CAAGH,CAAAA,CAAK,EACvF,CAAC,EACH,CACA,KAAMsB,CAAAA,CAAAA,CAAgB,CACpB,IAAK,CAAA,OAAA,CAAS,OAAQL,CAAkB,EAAA,CACtC,IAAMM,CAAcC,CAAAA,oBAAAA,CAAW,CAC7B,SAAA,CAAW,GACX,CAAA,IAAA,CAAMP,CACR,CAAC,CAAA,CACKQ,EAAe5B,CAAc,CAAA,MAAA,CAAO0B,EAAa,IAAK,CAAA,OAAA,CAAQ,WAAW,CAAA,CAC/ED,CAAOG,CAAAA,CAAY,EACrB,CAAC,CAAA,CAAE,MAAM,OAAQ,CAAA,IAAI,EACvB,CACF,ECVO,IAAMC,CAAN,CAAA,cAA6Bb,CAAgB,CAElD,MAAO,CACL,IAAMc,EAAoBR,oBAAW,CAAA,CAAE,UAAW,GAAK,CAAA,IAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,cAAe,CAAC,EACpFS,CAAoBP,CAAAA,kBAAAA,CAAS,CACjC,SAAW,CAAA,GAAA,CACX,KAAM,IAAK,CAAA,OAAA,CAAQ,WACrB,CAAC,CACKQ,CAAAA,CAAAA,CAAqBR,mBAAS,CAClC,SAAA,CAAW,IACX,IAAM,CAAA,IAAA,CAAK,QAAQ,YACrB,CAAC,CACD,CAAA,IAAA,CAAK,OAAU,CAAA,IAAYS,EAAA,IACzB,CAAA,IAAA,CAAA,WAAA,CAAA,IAAMC,EAA8B,EAAC,CACrC,OAAW,CAAE,GAAA,CAAA5B,CAAK,CAAA,KAAA,CAAO6B,CAAa,CAAA,GAAKL,EAAmB,CAC5D,IAAM1B,EAAO2B,CAAkBzB,CAAAA,CAAG,EAClC,GAAI,CAACF,CACH,CAAA,SAEF,IAAMgC,CAAAA,CAAQJ,EAAmB1B,CAAG,CAAA,CAC/B8B,IAGLF,CAAO5B,CAAAA,CAAG,GAAK,MAAM,IAAA,CAAK,eAAgB,CAAA,CAAE,IAAAF,CAAAA,CAAAA,CAAM,QAASgC,CAAO,CAAA,OAAA,CAASD,CAAa,CAAC,CAAA,GAAMA,GACjG,CACA,OAAOD,CACT,CAAA,EACF,CACc,eAAA,CAAgBnB,EAAiC,CAAAkB,OAAAA,CAAAA,CAAA,sBACnCI,IAAAA,CAAAA,CAAAtB,EAATuB,CAAAC,CAAAA,CAAAA,CAASF,EAAT,CAAT,MAAA,CAAA,EACR,OAAO,MAAMG,aAAAA,CAAMF,CAAI,CACzB,CAAA,CAAA,CACM,KAAMb,CAAAA,CAAAA,CAAgB,CAAAQ,OAAAA,CAAAA,CAAA,sBAC1B,IAAMlB,CAAAA,CAAU,MAAM,IAAK,CAAA,OAAA,GACrB0B,CAAmBd,CAAAA,oBAAAA,CAAW,CAAE,SAAA,CAAW,GAAK,CAAA,IAAA,CAAMZ,CAAQ,CAAC,CAAA,CAC/D2B,EAAe1C,CAAc,CAAA,MAAA,CAAOyC,EAAkB,IAAK,CAAA,OAAA,CAAQ,WAAW,CAAA,CACpFhB,CAAOiB,CAAAA,CAAY,EACrB,CACF,CAAA,CAAA,ECzDYC,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GACVA,EAAA,OAAY,CAAA,SAAA,CACZA,EAAA,IAAS,CAAA,MAAA,CAFCA,OAAA,EAQCC,CAAAA,CAAAA,CAAAA,CAAN,MAAMA,CAAe,CAU1B,WAAA,CAAY7B,EAAyC,CACnD,IAAA,CAAK,QAAUH,OAAM,CAAA,GAAIgC,CAAe,CAAA,eAAA,CAAiB7B,CAAO,CAAA,CAChE,IAAK,CAAA,MAAA,CAAS,IAAI8B,aAAO,CAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CAC1C,KAAK,OAAQ,EAAA,CACb,IAAK,CAAA,IAAA,GACP,CACA,SAAU,CACR,IAAA,CAAK,OAAO,GAAI,CAAA,UAAU,EAC1B,IAAK,CAAA,MAAA,CAAO,GAAI,CAAA,WAAA,CAAc,IAAK,CAAA,OAAA,CAAQ,OAAO,CAClD,CAAA,IAAA,CAAK,OAAO,GAAI,CAAA,eAAA,CAAkB,KAAK,OAAQ,CAAA,WAAW,EAC5D,CACA,IAAO,EAAA,CACL,IAA8BR,CAAA,CAAA,IAAA,CAAK,QAA3B,CAAAS,KAAAA,CAAAA,CAnCZ,EAmCkCT,CAAZtB,CAAAA,CAAAA,CAAAwB,CAAYF,CAAAA,CAAAA,CAAZ,CAAV,OAAA,CAAA,CAAA,CACR,GAAI,CAACS,CAAAA,EAAS,CAACA,CAAM,CAAA,MAAA,CACnB,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA,CAElCA,CAAM,CAAA,QAAA,CAAS,MAAiB,CAClC,GAAA,IAAA,CAAK,YAAc,IAAI5B,CAAAA,CAAYH,CAAO,CAExC+B,CAAAA,CAAAA,CAAAA,CAAM,QAAS,CAAA,SAAoB,CACrC,GAAA,IAAA,CAAK,eAAiB,IAAIjB,CAAAA,CAAed,CAAO,CAEpD,EAAA,CACA,MAAMU,CAAgB,CAAA,CA9CxB,IAAAY,CAAAA,CA+CQ,IAAK,CAAA,WAAA,EAEH,KAAK,cACP,EAAA,IAAA,CAAK,YAAY,OAAS,CAAA,OAAA,CAAQ,UAAU,CAAE,CAAA,MAAA,CAAO,IAAM,CAlDnE,IAAAA,CAAAA,CAAAA,CAmDUA,EAAA,IAAK,CAAA,cAAA,GAAL,MAAAA,CAAqB,CAAA,KAAA,CAAMZ,GAC7B,CAAC,CAAA,CAEH,IAAK,CAAA,WAAA,CAAY,KAAMA,CAAAA,CAAM,IAE7BY,CAAA,CAAA,IAAA,CAAK,iBAAL,IAAAA,EAAAA,CAAAA,CAAqB,MAAMZ,CAE/B,EAAA,CACF,EA9CamB,CAAAA,CACK,eAAyCG,CAAAA,CAAAA,CAAAC,EAAA,EACpDhC,CAAAA,CAAAA,CAAgB,iBADoC,CAEvD,KAAA,CAAO,CAAC,MAAiB,CAAA,CACzB,IAAM,CAAA,EACR,CALK,CAAA,CAAA,IAAMiC,EAANL,CAgDMM,CAAAA,EAAAA,CAAMD,EC3DZ,SAASE,EAAYC,CAAAA,CAAAA,CAAkC,CAC5DP,aAAAA,CAAO,IAAI,CAAUO,2BAAAA,EAAAA,CAAAA,CAAY,IAAI,CAAE,CAAA,CAAA,CACvCP,cAAO,GAAI,CAAA,gBAAA,CAASO,CAAY,CAAA,OAAO,EACzC","file":"index.js","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n // 又有 args 又有 prompts\n if (this.promptsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n }\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
package/dist/index.mjs CHANGED
@@ -7,7 +7,7 @@ import { Logger } from '@tikkhun/logger';
7
7
  /**
8
8
  @tikkhun/cli-core
9
9
  */
10
- var E=Object.defineProperty,w=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var C=(r,t,o)=>t in r?E(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,R=(r,t)=>{for(var o in t||(t={}))A.call(t,o)&&C(r,o,t[o]);if(g)for(var o of g(t))b.call(t,o)&&C(r,o,t[o]);return r},S=(r,t)=>w(r,L(t));var l=(r,t)=>{var o={};for(var n in r)A.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&g)for(var n of g(r))t.indexOf(n)<0&&b.call(r,n)&&(o[n]=r[n]);return o};var f=(r,t,o)=>new Promise((n,s)=>{var i=e=>{try{c(o.next(e));}catch(T){s(T);}},a=e=>{try{c(o.throw(e));}catch(T){s(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,a);c((o=o.apply(r,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},V=["true",!0,"1",1],z=["false",!1,"",0],m=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[s,i]=n.split("=");return {key:s,value:i}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!V.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([s,i])=>{let a=o[s];typeof i=="object"?n[s]=r.toType(i,a):n[s]=r.getTypeValue(i,a);}),n}toType(t){return r.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,s])=>{o[n]=r.toStringValue(s);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:F}=N,y=class y{constructor(t){this.options=F({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var {get:J}=N,u=class extends p{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:s,value:i})=>{if(this.options.excludeOptions.includes(s))return;let a=n[s];this.program.option(`--${s} <${a}>`,J(this.options.optionTitles,s),i);});}start(t){this.program.action(o=>{let n=unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);}).parse(process.argv);}};var h=class extends p{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),n=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let s={};for(let{key:i,value:a}of t){let c=o[i];if(!c)continue;let e=n[i];e&&(s[i]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return s});}getActionResult(t){return f(this,null,function*(){let s=t,n=l(s,["type"]);return yield input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);})}};var H=(o=>(o.prompts="prompts",o.args="args",o))(H||{}),O=class O{constructor(t){this.options=merge({},O.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var x=O,Rt=x;function Et(r){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),Logger.log("\u7248\u672C: "+r.version);}
10
+ var E=Object.defineProperty,w=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var C=(r,t,o)=>t in r?E(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,R=(r,t)=>{for(var o in t||(t={}))A.call(t,o)&&C(r,o,t[o]);if(g)for(var o of g(t))b.call(t,o)&&C(r,o,t[o]);return r},S=(r,t)=>w(r,L(t));var l=(r,t)=>{var o={};for(var n in r)A.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&g)for(var n of g(r))t.indexOf(n)<0&&b.call(r,n)&&(o[n]=r[n]);return o};var f=(r,t,o)=>new Promise((n,s)=>{var i=e=>{try{c(o.next(e));}catch(T){s(T);}},a=e=>{try{c(o.throw(e));}catch(T){s(T);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,a);c((o=o.apply(r,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},V=["true",!0,"1",1],z=["false",!1,"",0],m=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[s,i]=n.split("=");return {key:s,value:i}}).filter(n=>n):[]:o===d.number?Number(t):o===d.boolean?!!V.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([s,i])=>{let a=o[s];typeof i=="object"?n[s]=r.toType(i,a):n[s]=r.getTypeValue(i,a);}),n}toType(t){return r.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,s])=>{o[n]=r.toStringValue(s);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:F}=N,y=class y{constructor(t){this.options=F({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var {get:J}=N,u=class extends p{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:s,value:i})=>{if(this.options.excludeOptions.includes(s))return;let a=n[s];this.program.option(`--${s} <${a}>`,J(this.options.optionTitles,s),i);});}start(t){this.program.action(o=>{let n=unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);}).parse(process.argv);}};var h=class extends p{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),n=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let s={};for(let{key:i,value:a}of t){let c=o[i];if(!c)continue;let e=n[i];e&&(s[i]=(yield this.getActionResult({type:c,message:e,default:a}))||a);}return s});}getActionResult(t){return f(this,null,function*(){let s=t,n=l(s,["type"]);return yield input(n)})}start(t){return f(this,null,function*(){let o=yield this.program(),n=unflatJson({delimiter:".",data:o}),s=m.toType(n,this.options.optionTypes);t(s);})}};var H=(o=>(o.prompts="prompts",o.args="args",o))(H||{}),O=class O{constructor(t){this.options=merge({},O.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let n=this.options,{types:t}=n,o=l(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new u(o)),t.includes("prompts")&&(this.promptsCommand=new h(o));}start(t){var o;this.argsCommand?(this.promptsCommand&&this.argsCommand.program.command("question").action(()=>{var n;(n=this.promptsCommand)==null||n.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};O.DEFAULT_OPTIONS=S(R({},p.DEFAULT_OPTIONS),{types:["args"],name:""});var x=O,Rt=x;function Et(r){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),Logger.log("\u7248\u672C: "+r.version);}
11
11
 
12
12
  export { p as AbstractCommand, u as ArgsCommand, Rt as Cli, x as CommandManager, H as CommandTypes, m as OptionHandler, h as PromptsCommand, d as TYPES, z as asFalseValues, V as asTrueValues, Et as echoPackage };
13
13
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/OptionHandler.ts","../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/package.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli","echoPackage","packageJson"],"mappings":"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","file":"index.mjs","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
1
+ {"version":3,"sources":["../lib/OptionHandler.ts","../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/package.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","types","__spreadProps","__spreadValues","CommandManager","Cli","echoPackage","packageJson"],"mappings":"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","file":"index.mjs","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n // 又有 args 又有 prompts\n if (this.promptsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n }\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tikkhun/cli-core",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",