@tikkhun/cli-core 0.0.5 → 0.0.6

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.
@@ -3,6 +3,7 @@ import { ArgsCommand } from './command/ArgsCommand.mjs';
3
3
  import { PromptsCommand } from './command/PromptsCommand.mjs';
4
4
  import { Logger } from '@tikkhun/logger';
5
5
  import 'commander';
6
+ import './OptionHandler.mjs';
6
7
 
7
8
  declare enum CommandTypes {
8
9
  'prompts' = "prompts",
@@ -3,6 +3,7 @@ import { ArgsCommand } from './command/ArgsCommand.js';
3
3
  import { PromptsCommand } from './command/PromptsCommand.js';
4
4
  import { Logger } from '@tikkhun/logger';
5
5
  import 'commander';
6
+ import './OptionHandler.js';
6
7
 
7
8
  declare enum CommandTypes {
8
9
  'prompts' = "prompts",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var w = require('lodash');
3
+ var L = require('lodash');
4
4
  var utilsCore = require('@tikkhun/utils-core');
5
5
  var commander = require('commander');
6
6
  var prompts = require('@inquirer/prompts');
@@ -8,15 +8,15 @@ var logger = require('@tikkhun/logger');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
 
11
- var w__default = /*#__PURE__*/_interopDefault(w);
11
+ var L__default = /*#__PURE__*/_interopDefault(L);
12
12
 
13
13
  /**
14
14
  @tikkhun/cli-core
15
15
  */
16
- var P=Object.defineProperty,E=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var C=(s,t,o)=>t in s?P(s,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[t]=o,x=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&C(s,o,t[o]);if(g)for(var o of g(t))A.call(t,o)&&C(s,o,t[o]);return s},S=(s,t)=>E(s,L(t));var R=(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&&A.call(s,n)&&(o[n]=s[n]);return o};var l=(s,t,o)=>new Promise((n,i)=>{var r=e=>{try{c(o.next(e));}catch(O){i(O);}},a=e=>{try{c(o.throw(e));}catch(O){i(O);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);c((o=o.apply(s,t)).next());});var{merge:V}=w__default.default,f=class f{constructor(t){this.options=V(f.DEFAULT_CLI_OPTIONS,t),this.init();}};f.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=f;var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},I=["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?!!I.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:Y}=w__default.default,y=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}>`,Y(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 u=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=()=>l(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(c,e))||a);}return i});}getActionResult(t,o){return l(this,null,function*(){return yield prompts.input({message:o})})}start(t){return l(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||{}),h=class h{constructor(t){this.options=w.merge(h.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=R(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new y(o)),t.includes("prompts")&&(this.promptsCommand=new u(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);}};h.DEFAULT_OPTIONS=S(x({},p.DEFAULT_CLI_OPTIONS),{types:["args"],name:""});var T=h,Ot=T;
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;
17
17
 
18
18
  exports.Cli = Ot;
19
- exports.CommandManager = T;
19
+ exports.CommandManager = C;
20
20
  exports.CommandTypes = v;
21
21
  //# sourceMappingURL=CommandManager.js.map
22
22
  //# sourceMappingURL=CommandManager.js.map
@@ -1 +1 @@
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","title","message","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","_a","types","__objRest","__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 DEFAULT_CLI_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_CLI_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 } 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, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\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","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_CLI_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/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,4 +1,4 @@
1
- import w, { merge } from 'lodash';
1
+ import L, { merge } from 'lodash';
2
2
  import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
3
3
  import { createCommand } from 'commander';
4
4
  import { input } from '@inquirer/prompts';
@@ -7,8 +7,8 @@ import { Logger } from '@tikkhun/logger';
7
7
  /**
8
8
  @tikkhun/cli-core
9
9
  */
10
- var P=Object.defineProperty,E=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var C=(s,t,o)=>t in s?P(s,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[t]=o,x=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&C(s,o,t[o]);if(g)for(var o of g(t))A.call(t,o)&&C(s,o,t[o]);return s},S=(s,t)=>E(s,L(t));var R=(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&&A.call(s,n)&&(o[n]=s[n]);return o};var l=(s,t,o)=>new Promise((n,i)=>{var r=e=>{try{c(o.next(e));}catch(O){i(O);}},a=e=>{try{c(o.throw(e));}catch(O){i(O);}},c=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);c((o=o.apply(s,t)).next());});var{merge:V}=w,f=class f{constructor(t){this.options=V(f.DEFAULT_CLI_OPTIONS,t),this.init();}};f.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=f;var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},I=["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?!!I.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:Y}=w,y=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}>`,Y(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 u=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=()=>l(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(c,e))||a);}return i});}getActionResult(t,o){return l(this,null,function*(){return yield input({message:o})})}start(t){return l(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||{}),h=class h{constructor(t){this.options=merge(h.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=R(n,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new y(o)),t.includes("prompts")&&(this.promptsCommand=new u(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);}};h.DEFAULT_OPTIONS=S(x({},p.DEFAULT_CLI_OPTIONS),{types:["args"],name:""});var T=h,Ot=T;
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;
11
11
 
12
- export { Ot as Cli, T as CommandManager, v as CommandTypes };
12
+ export { Ot as Cli, C as CommandManager, v as CommandTypes };
13
13
  //# sourceMappingURL=CommandManager.mjs.map
14
14
  //# sourceMappingURL=CommandManager.mjs.map
@@ -1 +1 @@
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","title","message","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","_a","types","__objRest","__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 DEFAULT_CLI_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_CLI_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 } 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, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\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","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_CLI_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/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"]}
@@ -11,7 +11,7 @@ var g__default = /*#__PURE__*/_interopDefault(g);
11
11
  /**
12
12
  @tikkhun/cli-core
13
13
  */
14
- var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},f=["true",!0,"1",1];var a=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===e.array?t.split(","):o===e.object?JSON.parse(t):o===e.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[n,i]=r.split("=");return {key:n,value:i}}).filter(r=>r):[]:o===e.number?Number(t):o===e.boolean?!!f.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let p=o[n];typeof i=="object"?r[n]=s.toType(i,p):r[n]=s.getTypeValue(i,p);}),r}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,n])=>{o[r]=s.toStringValue(n);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{merge:m}=g__default.default,d=class d{constructor(t){this.options=m(d.DEFAULT_CLI_OPTIONS,t),this.init();}};d.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var {get:b}=g__default.default,y=class extends c{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=a.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:n,value:i})=>{if(this.options.excludeOptions.includes(n))return;let p=r[n];this.program.option(`--${n} <${p}>`,b(this.options.optionTitles,n),i);});}start(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);}).parse(process.argv);}};
14
+ var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},f=["true",!0,"1",1];var a=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===e.array?t.split(","):o===e.object?JSON.parse(t):o===e.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[n,i]=r.split("=");return {key:n,value:i}}).filter(r=>r):[]:o===e.number?Number(t):o===e.boolean?!!f.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let p=o[n];typeof i=="object"?r[n]=s.toType(i,p):r[n]=s.getTypeValue(i,p);}),r}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,n])=>{o[r]=s.toStringValue(n);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{merge:m}=g__default.default,d=class d{constructor(t){this.options=m({},d.DEFAULT_OPTIONS,t),this.init();}};d.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var {get:b}=g__default.default,y=class extends c{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=a.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:n,value:i})=>{if(this.options.excludeOptions.includes(n))return;let p=r[n];this.program.option(`--${n} <${p}>`,b(this.options.optionTitles,n),i);});}start(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);}).parse(process.argv);}};
15
15
 
16
16
  exports.ArgsCommand = y;
17
17
  //# sourceMappingURL=ArgsCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["TYPES","asTrueValues","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"],"mappings":"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","file":"ArgsCommand.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 DEFAULT_CLI_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_CLI_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"]}
1
+ {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["TYPES","asTrueValues","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"],"mappings":";;;;;;;;;;;;;AAAO,IAAMA,CAAQ,CAAA,CACnB,KAAO,CAAA,OAAA,CACP,cAAe,eACf,CAAA,OAAA,CAAS,SACT,CAAA,MAAA,CAAQ,QACR,CAAA,MAAA,CAAQ,SACR,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QACV,CAEaC,CAAAA,CAAAA,CAAe,CAAC,MAAQ,CAAA,CAAA,CAAA,CAAM,GAAK,CAAA,CAAC,CAE1C,CAAA,IAAMC,EAAN,MAAMC,CAAc,CAEzB,WAAA,CAAYC,CAA6B,CAAA,CACvC,KAAK,MAASA,CAAAA,EAChB,CACA,OAAO,YAAaC,CAAAA,CAAAA,CAAeC,EAAc,CAC/C,OAAIA,CAASN,GAAAA,CAAAA,CAAM,KACVK,CAAAA,CAAAA,CAAM,MAAM,GAAG,CAAA,CAEpBC,CAASN,GAAAA,CAAAA,CAAM,MACV,CAAA,IAAA,CAAK,MAAMK,CAAK,CAAA,CAErBC,CAASN,GAAAA,CAAAA,CAAM,aACZK,CAAAA,CAAAA,CACEA,EACJ,KAAM,CAAA,GAAG,CACT,CAAA,GAAA,CAAKE,CAAY,EAAA,CAChB,GAAI,CAACA,CAAAA,CAAS,OACd,GAAM,CAACC,CAAAA,CAAKH,CAAK,CAAIE,CAAAA,CAAAA,CAAQ,KAAM,CAAA,GAAG,CACtC,CAAA,OAAO,CAAE,GAAAC,CAAAA,CAAAA,CAAK,KAAAH,CAAAA,CAAM,CACtB,CAAC,EACA,MAAQI,CAAAA,CAAAA,EAAMA,CAAC,CAAA,CARC,EAAC,CAUlBH,CAASN,GAAAA,CAAAA,CAAM,MACV,CAAA,MAAA,CAAOK,CAAK,CAAA,CAEjBC,CAASN,GAAAA,CAAAA,CAAM,QACb,CAAAC,CAAAA,CAAAA,CAAa,QAASI,CAAAA,CAAK,CAG1BA,CAAAA,CACT,CACA,OAAO,MAAA,CAAOK,CAAsDN,CAAAA,CAAAA,CAA6B,CAC/F,IAAMO,EAA4B,EAAC,CACnC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAA,CAAE,QAAQ,CAAC,CAACF,CAAKH,CAAAA,CAAK,CAAM,GAAA,CAC5C,IAAMC,CAAOF,CAAAA,CAAAA,CAAOI,CAAG,CAAA,CACnB,OAAOH,CAAAA,EAAU,SACnBM,CAAKH,CAAAA,CAAG,CAAIL,CAAAA,CAAAA,CAAc,MAAOE,CAAAA,CAAAA,CAAOC,CAAI,CAE5CK,CAAAA,CAAAA,CAAKH,CAAG,CAAA,CAAIL,CAAc,CAAA,YAAA,CAAaE,CAAiBC,CAAAA,CAAI,EAEhE,CAAC,CACMK,CAAAA,CACT,CACA,MAAA,CAAOD,EAA0B,CAC/B,OAAOP,CAAc,CAAA,MAAA,CAAOO,CAAK,CAAA,IAAA,CAAK,MAAM,CAC9C,CACA,OAAO,QAAA,CAASA,CAA0B,CAAA,CACxC,IAAMC,CAA4B,CAAA,EAClC,CAAA,OAAA,MAAA,CAAO,OAAQD,CAAAA,CAAG,EAAE,OAAQ,CAAA,CAAC,CAACF,CAAAA,CAAKH,CAAK,CAAA,GAAM,CAC5CM,CAAKH,CAAAA,CAAG,CAAIL,CAAAA,CAAAA,CAAc,aAAcE,CAAAA,CAAK,EAC/C,CAAC,CAAA,CACMM,CACT,CACA,OAAO,aAAA,CAAcN,EAAY,CAC/B,GAAI,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAA,CAAG,CACxB,IAAMO,CAAQP,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAErB,OAAI,OAAOO,GAAU,QAAYA,EAAAA,CAAAA,CAAM,cAAe,CAAA,KAAK,CAAKA,EAAAA,CAAAA,CAAM,eAAe,OAAO,CAAA,CACnFP,CAAM,CAAA,GAAA,CAAKQ,CAAS,EAAA,CAAA,EAAGA,EAAK,GAAG,CAAA,CAAA,EAAIA,CAAK,CAAA,KAAK,CAAE,CAAA,CAAA,CAAE,UAEnDR,CAAAA,CAAAA,CAAM,QAAS,EACxB,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZF,CAAc,CAAA,QAAA,CAASE,CAAK,CAAA,CAE9B,GAAKA,CACd,CACF,CChFA,CACA,GAAM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIC,kBAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAA,CAAYC,CAAmC,CAAA,CAC7C,IAAK,CAAA,OAAA,CAAUH,EAAM,EAAC,CAAGE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CAAA,CACjE,KAAK,IAAK,GACZ,CAGF,CAAA,CAjBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CARK,CAAA,IAAeE,CAAfF,CAAAA,CAAAA,KCTD,CAAE,GAAA,CAAAG,CAAI,CAAA,CAAIJ,kBACHK,CAAAA,CAAAA,CAAN,cAA0BF,CAAgB,CAE/C,IAAA,EAAa,CACX,IAAA,CAAK,OAAUG,CAAAA,uBAAAA,GACf,IAAK,CAAA,UAAA,GACP,CACQ,UAAa,EAAA,CACnB,IAAMC,CAAgBpB,CAAAA,CAAAA,CAAc,QAAS,CAAA,IAAA,CAAK,OAAQ,CAAA,cAAc,EAClEqB,CAAaC,CAAAA,oBAAAA,CAAW,CAAE,SAAA,CAAW,GAAK,CAAA,IAAA,CAAMF,CAAc,CAAC,CAAA,CAC/DG,CAAgBC,CAAAA,kBAAAA,CAAS,CAAE,SAAA,CAAW,IAAK,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAY,CAAC,CAAA,CACjFH,EAAW,OAAQ,CAAA,CAAC,CAAE,GAAA,CAAAf,CAAK,CAAA,KAAA,CAAAH,CAAM,CAAM,GAAA,CACrC,GAAI,IAAA,CAAK,OAAQ,CAAA,cAAA,CAAe,QAASG,CAAAA,CAAG,CAC1C,CAAA,OAEF,IAAMF,CAAAA,CAAOmB,CAAcjB,CAAAA,CAAG,EAC9B,IAAK,CAAA,OAAA,CAAS,MAAO,CAAA,CAAA,EAAA,EAAKA,CAAG,CAAA,EAAA,EAAKF,CAAI,CAAKa,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,IAAK,CAAA,OAAA,CAAQ,YAAcX,CAAAA,CAAG,EAAGH,CAAK,EACvF,CAAC,EACH,CACA,KAAA,CAAMsB,EAAgB,CACpB,IAAA,CAAK,OAAS,CAAA,MAAA,CAAQL,CAAkB,EAAA,CACtC,IAAMM,CAAcC,CAAAA,oBAAAA,CAAW,CAC7B,SAAA,CAAW,GACX,CAAA,IAAA,CAAMP,CACR,CAAC,CAAA,CACKQ,CAAe5B,CAAAA,CAAAA,CAAc,MAAO0B,CAAAA,CAAAA,CAAa,KAAK,OAAQ,CAAA,WAAW,CAC/ED,CAAAA,CAAAA,CAAOG,CAAY,EACrB,CAAC,CAAA,CAAE,KAAM,CAAA,OAAA,CAAQ,IAAI,EACvB,CACF","file":"ArgsCommand.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"]}
@@ -5,7 +5,7 @@ import { createCommand } from 'commander';
5
5
  /**
6
6
  @tikkhun/cli-core
7
7
  */
8
- var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},f=["true",!0,"1",1];var a=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===e.array?t.split(","):o===e.object?JSON.parse(t):o===e.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[n,i]=r.split("=");return {key:n,value:i}}).filter(r=>r):[]:o===e.number?Number(t):o===e.boolean?!!f.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let p=o[n];typeof i=="object"?r[n]=s.toType(i,p):r[n]=s.getTypeValue(i,p);}),r}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,n])=>{o[r]=s.toStringValue(n);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{merge:m}=g,d=class d{constructor(t){this.options=m(d.DEFAULT_CLI_OPTIONS,t),this.init();}};d.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var {get:b}=g,y=class extends c{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=a.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),r=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:n,value:i})=>{if(this.options.excludeOptions.includes(n))return;let p=r[n];this.program.option(`--${n} <${p}>`,b(this.options.optionTitles,n),i);});}start(t){this.program.action(o=>{let r=unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);}).parse(process.argv);}};
8
+ var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},f=["true",!0,"1",1];var a=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===e.array?t.split(","):o===e.object?JSON.parse(t):o===e.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[n,i]=r.split("=");return {key:n,value:i}}).filter(r=>r):[]:o===e.number?Number(t):o===e.boolean?!!f.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let p=o[n];typeof i=="object"?r[n]=s.toType(i,p):r[n]=s.getTypeValue(i,p);}),r}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,n])=>{o[r]=s.toStringValue(n);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{merge:m}=g,d=class d{constructor(t){this.options=m({},d.DEFAULT_OPTIONS,t),this.init();}};d.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var {get:b}=g,y=class extends c{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=a.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),r=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:n,value:i})=>{if(this.options.excludeOptions.includes(n))return;let p=r[n];this.program.option(`--${n} <${p}>`,b(this.options.optionTitles,n),i);});}start(t){this.program.action(o=>{let r=unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);}).parse(process.argv);}};
9
9
 
10
10
  export { y as ArgsCommand };
11
11
  //# sourceMappingURL=ArgsCommand.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["TYPES","asTrueValues","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"],"mappings":"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","file":"ArgsCommand.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 DEFAULT_CLI_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_CLI_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"]}
1
+ {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["TYPES","asTrueValues","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"],"mappings":"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","file":"ArgsCommand.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"]}
@@ -1,3 +1,4 @@
1
+ import { TYPES } from '../OptionHandler.mjs';
1
2
  import { AbstractCommand, Action } from './command.interface.mjs';
2
3
 
3
4
  declare class PromptsCommand extends AbstractCommand {
@@ -6,5 +7,10 @@ declare class PromptsCommand extends AbstractCommand {
6
7
  private getActionResult;
7
8
  start(action: Action): Promise<void>;
8
9
  }
10
+ interface GetActionResultOptions {
11
+ type: TYPES;
12
+ message: string;
13
+ default: any;
14
+ }
9
15
 
10
- export { PromptsCommand };
16
+ export { type GetActionResultOptions, PromptsCommand };
@@ -1,3 +1,4 @@
1
+ import { TYPES } from '../OptionHandler.js';
1
2
  import { AbstractCommand, Action } from './command.interface.js';
2
3
 
3
4
  declare class PromptsCommand extends AbstractCommand {
@@ -6,5 +7,10 @@ declare class PromptsCommand extends AbstractCommand {
6
7
  private getActionResult;
7
8
  start(action: Action): Promise<void>;
8
9
  }
10
+ interface GetActionResultOptions {
11
+ type: TYPES;
12
+ message: string;
13
+ default: any;
14
+ }
9
15
 
10
- export { PromptsCommand };
16
+ export { type GetActionResultOptions, PromptsCommand };
@@ -2,17 +2,17 @@
2
2
 
3
3
  var prompts = require('@inquirer/prompts');
4
4
  var utilsCore = require('@tikkhun/utils-core');
5
- var O = require('lodash');
5
+ var S = require('lodash');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
- var O__default = /*#__PURE__*/_interopDefault(O);
9
+ var S__default = /*#__PURE__*/_interopDefault(S);
10
10
 
11
11
  /**
12
12
  @tikkhun/cli-core
13
13
  */
14
- var y=(s,t,n)=>new Promise((o,r)=>{var e=i=>{try{c(n.next(i));}catch(d){r(d);}},a=i=>{try{c(n.throw(i));}catch(d){r(d);}},c=i=>i.done?o(i.value):Promise.resolve(i.value).then(e,a);c((n=n.apply(s,t)).next());});var p={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},T=["true",!0,"1",1];var u=class s{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===p.array?t.split(","):n===p.object?JSON.parse(t):n===p.keyValueArray?t?t.split(",").map(o=>{if(!o)return;let[r,e]=o.split("=");return {key:r,value:e}}).filter(o=>o):[]:n===p.number?Number(t):n===p.boolean?!!T.includes(t):t}static toType(t,n){let o={};return Object.entries(t).forEach(([r,e])=>{let a=n[r];typeof e=="object"?o[r]=s.toType(e,a):o[r]=s.getTypeValue(e,a);}),o}toType(t){return s.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([o,r])=>{n[o]=s.toStringValue(r);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(o=>`${o.key}=${o.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{merge:b}=O__default.default,l=class l{constructor(t){this.options=b(l.DEFAULT_CLI_OPTIONS,t),this.init();}};l.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var f=l;var m=class extends f{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>y(this,null,function*(){let r={};for(let{key:e,value:a}of t){let c=n[e];if(!c)continue;let i=o[e];i&&(r[e]=(yield this.getActionResult(c,i))||a);}return r});}getActionResult(t,n){return y(this,null,function*(){return yield prompts.input({message:n})})}start(t){return y(this,null,function*(){let n=yield this.program(),o=utilsCore.unflatJson({delimiter:".",data:n}),r=u.toType(o,this.options.optionTypes);t(r);})}};
14
+ var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var m=(r,t)=>{var n={};for(var e in r)b.call(r,e)&&t.indexOf(e)<0&&(n[e]=r[e]);if(r!=null&&g)for(var e of g(r))t.indexOf(e)<0&&h.call(r,e)&&(n[e]=r[e]);return n};var y=(r,t,n)=>new Promise((e,o)=>{var i=s=>{try{c(n.next(s));}catch(d){o(d);}},a=s=>{try{c(n.throw(s));}catch(d){o(d);}},c=s=>s.done?e(s.value):Promise.resolve(s.value).then(i,a);c((n=n.apply(r,t)).next());});var p={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var u=class r{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===p.array?t.split(","):n===p.object?JSON.parse(t):n===p.keyValueArray?t?t.split(",").map(e=>{if(!e)return;let[o,i]=e.split("=");return {key:o,value:i}}).filter(e=>e):[]:n===p.number?Number(t):n===p.boolean?!!R.includes(t):t}static toType(t,n){let e={};return Object.entries(t).forEach(([o,i])=>{let a=n[o];typeof i=="object"?e[o]=r.toType(i,a):e[o]=r.getTypeValue(i,a);}),e}toType(t){return r.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([e,o])=>{n[e]=r.toStringValue(o);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(e=>`${e.key}=${e.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:x}=S__default.default,f=class f{constructor(t){this.options=x({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var l=f;var O=class extends l{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),e=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>y(this,null,function*(){let o={};for(let{key:i,value:a}of t){let c=n[i];if(!c)continue;let s=e[i];s&&(o[i]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return o});}getActionResult(t){return y(this,null,function*(){let o=t,e=m(o,["type"]);return yield prompts.input(e)})}start(t){return y(this,null,function*(){let n=yield this.program(),e=utilsCore.unflatJson({delimiter:".",data:n}),o=u.toType(e,this.options.optionTypes);t(o);})}};
15
15
 
16
- exports.PromptsCommand = m;
16
+ exports.PromptsCommand = O;
17
17
  //# sourceMappingURL=PromptsCommand.js.map
18
18
  //# sourceMappingURL=PromptsCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","defaultOptionList","jsonToList","flattedOptionType","flatJson","flattedOptionTitle","__async","result","title","message","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":";;;;;;;;;;;;;kNAAO,IAAMA,EAAQ,CACnB,KAAA,CAAO,OACP,CAAA,aAAA,CAAe,eACf,CAAA,OAAA,CAAS,UACT,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QAAA,CACR,OAAQ,QACV,CAAA,CAEaC,CAAe,CAAA,CAAC,MAAQ,CAAA,CAAA,CAAA,CAAM,IAAK,CAAC,CAAA,CAE1C,IAAMC,CAAAA,CAAN,MAAMC,CAAc,CAEzB,WAAYC,CAAAA,CAAAA,CAA6B,CACvC,IAAA,CAAK,MAASA,CAAAA,EAChB,CACA,OAAO,YAAaC,CAAAA,CAAAA,CAAeC,CAAc,CAAA,CAC/C,OAAIA,CAAAA,GAASN,EAAM,KACVK,CAAAA,CAAAA,CAAM,KAAM,CAAA,GAAG,CAEpBC,CAAAA,CAAAA,GAASN,EAAM,MACV,CAAA,IAAA,CAAK,KAAMK,CAAAA,CAAK,CAErBC,CAAAA,CAAAA,GAASN,EAAM,aACZK,CAAAA,CAAAA,CACEA,CACJ,CAAA,KAAA,CAAM,GAAG,CAAA,CACT,IAAKE,CAAY,EAAA,CAChB,GAAI,CAACA,CAAS,CAAA,OACd,GAAM,CAACC,CAAAA,CAAKH,CAAK,CAAA,CAAIE,CAAQ,CAAA,KAAA,CAAM,GAAG,CACtC,CAAA,OAAO,CAAE,GAAA,CAAAC,CAAK,CAAA,KAAA,CAAAH,CAAM,CACtB,CAAC,CACA,CAAA,MAAA,CAAQI,CAAMA,EAAAA,CAAC,CARC,CAAA,EAUjBH,CAAAA,CAAAA,GAASN,CAAM,CAAA,MAAA,CACV,MAAOK,CAAAA,CAAK,EAEjBC,CAASN,GAAAA,CAAAA,CAAM,OACb,CAAA,CAAA,CAAAC,CAAa,CAAA,QAAA,CAASI,CAAK,CAG1BA,CAAAA,CACT,CACA,OAAO,MAAOK,CAAAA,CAAAA,CAAsDN,EAA6B,CAC/F,IAAMO,CAA4B,CAAA,EAClC,CAAA,OAAA,MAAA,CAAO,QAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACF,CAAAA,CAAKH,CAAK,CAAM,GAAA,CAC5C,IAAMC,CAAAA,CAAOF,CAAOI,CAAAA,CAAG,EACnB,OAAOH,CAAAA,EAAU,QACnBM,CAAAA,CAAAA,CAAKH,CAAG,CAAA,CAAIL,EAAc,MAAOE,CAAAA,CAAAA,CAAOC,CAAI,CAAA,CAE5CK,CAAKH,CAAAA,CAAG,CAAIL,CAAAA,CAAAA,CAAc,YAAaE,CAAAA,CAAAA,CAAiBC,CAAI,EAEhE,CAAC,CAAA,CACMK,CACT,CACA,MAAA,CAAOD,CAA0B,CAAA,CAC/B,OAAOP,CAAAA,CAAc,OAAOO,CAAK,CAAA,IAAA,CAAK,MAAM,CAC9C,CACA,OAAO,SAASA,CAA0B,CAAA,CACxC,IAAMC,CAAAA,CAA4B,EAAC,CACnC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACF,CAAAA,CAAKH,CAAK,CAAM,GAAA,CAC5CM,CAAKH,CAAAA,CAAG,CAAIL,CAAAA,CAAAA,CAAc,cAAcE,CAAK,EAC/C,CAAC,CAAA,CACMM,CACT,CACA,OAAO,aAAcN,CAAAA,CAAAA,CAAY,CAC/B,GAAI,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAA,CAAG,CACxB,IAAMO,CAAQP,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAErB,OAAI,OAAOO,CAAAA,EAAU,QAAYA,EAAAA,CAAAA,CAAM,cAAe,CAAA,KAAK,GAAKA,CAAM,CAAA,cAAA,CAAe,OAAO,CAAA,CACnFP,CAAM,CAAA,GAAA,CAAKQ,GAAS,CAAGA,EAAAA,CAAAA,CAAK,GAAG,CAAA,CAAA,EAAIA,CAAK,CAAA,KAAK,EAAE,CAAE,CAAA,QAAA,EAEnDR,CAAAA,CAAAA,CAAM,QAAS,EACxB,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZF,CAAc,CAAA,QAAA,CAASE,CAAK,CAE9B,CAAA,EAAA,CAAKA,CACd,CACF,CChFA,CACA,GAAM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIC,kBAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAA,CAAYC,CAAmC,CAAA,CAC7C,KAAK,OAAUH,CAAAA,CAAAA,CAAME,CAAgB,CAAA,mBAAA,CAAqBC,CAAO,CAAA,CACjE,KAAK,IAAK,GACZ,CAGF,CAAA,CAjBsBD,CACb,CAAA,mBAAA,CAAsC,CAC3C,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CARK,CAAA,IAAeE,CAAfF,CAAAA,CAAAA,KCUMG,CAAN,CAAA,cAA6BD,CAAgB,CAElD,IAAO,EAAA,CACL,IAAME,CAAoBC,CAAAA,oBAAAA,CAAW,CAAE,SAAA,CAAW,GAAK,CAAA,IAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,cAAe,CAAC,CACpFC,CAAAA,CAAAA,CAAoBC,kBAAS,CAAA,CACjC,UAAW,GACX,CAAA,IAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,WACrB,CAAC,EACKC,CAAqBD,CAAAA,kBAAAA,CAAS,CAClC,SAAA,CAAW,GACX,CAAA,IAAA,CAAM,KAAK,OAAQ,CAAA,YACrB,CAAC,CAAA,CACD,IAAK,CAAA,OAAA,CAAU,IAAYE,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACzB,IAAMC,CAAAA,CAA8B,EAAC,CACrC,OAAW,CAAE,GAAA,CAAAlB,CAAK,CAAA,KAAA,CAAAH,CAAM,CAAA,GAAKe,EAAmB,CAC9C,IAAMd,CAAOgB,CAAAA,CAAAA,CAAkBd,CAAG,CAAA,CAClC,GAAI,CAACF,CAAAA,CACH,SAEF,IAAMqB,CAAQH,CAAAA,CAAAA,CAAmBhB,CAAG,CAAA,CAC/BmB,CAGLD,GAAAA,CAAAA,CAAOlB,CAAG,CAAA,CAAA,CAAK,MAAM,IAAA,CAAK,gBAAgBF,CAAMqB,CAAAA,CAAK,CAAMtB,GAAAA,CAAAA,EAC7D,CACA,OAAOqB,CACT,CACF,EAAA,CACc,eAAgBpB,CAAAA,CAAAA,CAAasB,CAAiB,CAAA,CAAA,OAAAH,EAAA,IAC1D,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MAAMI,aAAAA,CAAM,CAAE,OAAA,CAAAD,CAAQ,CAAC,CAChC,CAAA,CAAA,CACM,KAAME,CAAAA,CAAAA,CAAgB,CAAAL,OAAAA,CAAAA,CAAA,sBAC1B,IAAMR,CAAAA,CAAU,MAAM,IAAA,CAAK,OAAQ,EAAA,CAC7Bc,EAAmBC,oBAAW,CAAA,CAAE,SAAW,CAAA,GAAA,CAAK,IAAMf,CAAAA,CAAQ,CAAC,CAC/DgB,CAAAA,CAAAA,CAAe/B,CAAc,CAAA,MAAA,CAAO6B,CAAkB,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAW,CACpFD,CAAAA,CAAAA,CAAOG,CAAY,EACrB,CACF,CAAA,CAAA","file":"PromptsCommand.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 DEFAULT_CLI_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_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\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 } 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, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\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"]}
1
+ {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","defaultOptionList","jsonToList","flattedOptionType","flatJson","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.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","/**\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"]}
@@ -1,12 +1,12 @@
1
1
  import { input } from '@inquirer/prompts';
2
2
  import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
3
- import O from 'lodash';
3
+ import S from 'lodash';
4
4
 
5
5
  /**
6
6
  @tikkhun/cli-core
7
7
  */
8
- var y=(s,t,n)=>new Promise((o,r)=>{var e=i=>{try{c(n.next(i));}catch(d){r(d);}},a=i=>{try{c(n.throw(i));}catch(d){r(d);}},c=i=>i.done?o(i.value):Promise.resolve(i.value).then(e,a);c((n=n.apply(s,t)).next());});var p={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},T=["true",!0,"1",1];var u=class s{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===p.array?t.split(","):n===p.object?JSON.parse(t):n===p.keyValueArray?t?t.split(",").map(o=>{if(!o)return;let[r,e]=o.split("=");return {key:r,value:e}}).filter(o=>o):[]:n===p.number?Number(t):n===p.boolean?!!T.includes(t):t}static toType(t,n){let o={};return Object.entries(t).forEach(([r,e])=>{let a=n[r];typeof e=="object"?o[r]=s.toType(e,a):o[r]=s.getTypeValue(e,a);}),o}toType(t){return s.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([o,r])=>{n[o]=s.toStringValue(r);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(o=>`${o.key}=${o.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var{merge:b}=O,l=class l{constructor(t){this.options=b(l.DEFAULT_CLI_OPTIONS,t),this.init();}};l.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var f=l;var m=class extends f{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),n=flatJson({delimiter:".",data:this.options.optionTypes}),o=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>y(this,null,function*(){let r={};for(let{key:e,value:a}of t){let c=n[e];if(!c)continue;let i=o[e];i&&(r[e]=(yield this.getActionResult(c,i))||a);}return r});}getActionResult(t,n){return y(this,null,function*(){return yield input({message:n})})}start(t){return y(this,null,function*(){let n=yield this.program(),o=unflatJson({delimiter:".",data:n}),r=u.toType(o,this.options.optionTypes);t(r);})}};
8
+ var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var m=(r,t)=>{var n={};for(var e in r)b.call(r,e)&&t.indexOf(e)<0&&(n[e]=r[e]);if(r!=null&&g)for(var e of g(r))t.indexOf(e)<0&&h.call(r,e)&&(n[e]=r[e]);return n};var y=(r,t,n)=>new Promise((e,o)=>{var i=s=>{try{c(n.next(s));}catch(d){o(d);}},a=s=>{try{c(n.throw(s));}catch(d){o(d);}},c=s=>s.done?e(s.value):Promise.resolve(s.value).then(i,a);c((n=n.apply(r,t)).next());});var p={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var u=class r{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===p.array?t.split(","):n===p.object?JSON.parse(t):n===p.keyValueArray?t?t.split(",").map(e=>{if(!e)return;let[o,i]=e.split("=");return {key:o,value:i}}).filter(e=>e):[]:n===p.number?Number(t):n===p.boolean?!!R.includes(t):t}static toType(t,n){let e={};return Object.entries(t).forEach(([o,i])=>{let a=n[o];typeof i=="object"?e[o]=r.toType(i,a):e[o]=r.getTypeValue(i,a);}),e}toType(t){return r.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([e,o])=>{n[e]=r.toStringValue(o);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(e=>`${e.key}=${e.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:x}=S,f=class f{constructor(t){this.options=x({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var l=f;var O=class extends l{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),n=flatJson({delimiter:".",data:this.options.optionTypes}),e=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>y(this,null,function*(){let o={};for(let{key:i,value:a}of t){let c=n[i];if(!c)continue;let s=e[i];s&&(o[i]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return o});}getActionResult(t){return y(this,null,function*(){let o=t,e=m(o,["type"]);return yield input(e)})}start(t){return y(this,null,function*(){let n=yield this.program(),e=unflatJson({delimiter:".",data:n}),o=u.toType(e,this.options.optionTypes);t(o);})}};
9
9
 
10
- export { m as PromptsCommand };
10
+ export { O as PromptsCommand };
11
11
  //# sourceMappingURL=PromptsCommand.mjs.map
12
12
  //# sourceMappingURL=PromptsCommand.mjs.map