@tikkhun/cli-core 0.0.14 → 0.0.16

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/OptionHandler.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item"],"mappings":"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","file":"OptionHandler.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 if (value === 'undefined') {\n return;\n }\n return value && 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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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"]}
1
+ {"version":3,"sources":["../lib/OptionHandler.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","error","obj","_obj","keys","item1","item"],"mappings":"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","file":"OptionHandler.mjs","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n"]}
@@ -11,8 +11,8 @@ var f__default = /*#__PURE__*/_interopDefault(f);
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"},m=["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?t==="undefined"?void 0:t&&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?!!m.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let d=o[n];typeof i=="object"?r[n]=s.toType(i,d):r[n]=s.getTypeValue(i,d);}),r}toType(t){return s.toType(t,this.schema)}static toFlatList(t){}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:y}=f__default.default,c=class c{constructor(t){this.options=y({},c.DEFAULT_OPTIONS,t),this.init();}};c.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=c;var {get:b}=f__default.default,g=class extends p{getOptions(){let t=a.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:i})=>({key:n,value:i,type:r[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:r,type:n})=>{this.program.option(`--${o} <${n}>`,b(this.options.optionTitles,o),r);});}addAction(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};
14
+ var s={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},g=["true",!0,"1",1];var a=class e{constructor(t){this.schema=t;}static getTypeValue(t,r){if(t!=="undefined"){if(r===s.keyValueArray)return t?t.split(",").map(n=>{if(!n)return;let[o,i]=n.split("=");return {key:o,value:i}}).filter(n=>n):[];if(r===s.objectArray)try{return t?JSON.parse(t):[]}catch(n){return []}return r===s.array?t.split(","):r===s.object?typeof t=="object"?JSON.parse(t):{}:r===s.number?Number(t):r===s.boolean?!!g.includes(t):t}}static toType(t,r){let n={};return Object.entries(t).forEach(([o,i])=>{let y=r[o];typeof i=="object"?n[o]=e.toType(i,y):n[o]=e.getTypeValue(i,y);}),n}toType(t){return e.toType(t,this.schema)}static toFlatList(t){}static toString(t){let r={};return Object.entries(t).forEach(([n,o])=>{r[n]=e.toStringValue(o);}),r}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?t.map(o=>`${o.key}=${o.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:m}=f__default.default,c=class c{constructor(t){this.options=m({},c.DEFAULT_OPTIONS,t),this.init();}};c.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=c;var {get:T}=f__default.default,d=class extends p{getOptions(){let t=a.toString(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:i})=>({key:o,value:i,type:n[o]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:n,type:o})=>{this.program.option(`--${r} <${o}>`,T(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=utilsCore.unflatJson({delimiter:".",data:r}),o=a.toType(n,this.options.optionTypes);t(o);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};
15
15
 
16
- exports.ArgsCommand = g;
16
+ exports.ArgsCommand = d;
17
17
  //# sourceMappingURL=ArgsCommand.js.map
18
18
  //# 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","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","typedOptions"],"mappings":";;;;;;;;;;;;;AAAO,IAAMA,CAAQ,CAAA,CACnB,KAAO,CAAA,OAAA,CACP,aAAe,CAAA,eAAA,CACf,OAAS,CAAA,SAAA,CACT,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QACV,CAEaC,CAAAA,CAAAA,CAAe,CAAC,MAAA,CAAQ,CAAM,CAAA,CAAA,GAAA,CAAK,CAAC,CAAA,CAE1C,IAAMC,CAAAA,CAAN,MAAMC,CAAc,CAEzB,WAAA,CAAYC,CAA6B,CAAA,CACvC,IAAK,CAAA,MAAA,CAASA,EAChB,CACA,OAAO,YAAA,CAAaC,CAAeC,CAAAA,CAAAA,CAAc,CAC/C,OAAIA,CAASN,GAAAA,CAAAA,CAAM,KACVK,CAAAA,CAAAA,CAAM,KAAM,CAAA,GAAG,CAEpBC,CAAAA,CAAAA,GAASN,CAAM,CAAA,MAAA,CACbK,CAAU,GAAA,WAAA,CACZ,KAEKA,CAAAA,CAAAA,CAAAA,EAAS,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAA,CAE9BC,CAASN,GAAAA,CAAAA,CAAM,aACZK,CAAAA,CAAAA,CACEA,CACJ,CAAA,KAAA,CAAM,GAAG,CAAA,CACT,GAAKE,CAAAA,CAAAA,EAAY,CAChB,GAAI,CAACA,CAAAA,CAAS,OACd,GAAM,CAACC,CAAAA,CAAKH,CAAK,CAAA,CAAIE,CAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CACtC,OAAO,CAAE,GAAAC,CAAAA,CAAAA,CAAK,KAAAH,CAAAA,CAAM,CACtB,CAAC,CACA,CAAA,MAAA,CAAQI,CAAMA,EAAAA,CAAC,CARC,CAAA,EAUjBH,CAAAA,CAAAA,GAASN,CAAM,CAAA,MAAA,CACV,MAAOK,CAAAA,CAAK,CAEjBC,CAAAA,CAAAA,GAASN,CAAM,CAAA,OAAA,CACb,CAAAC,CAAAA,CAAAA,CAAa,QAASI,CAAAA,CAAK,CAG1BA,CAAAA,CACT,CACA,OAAO,MAAOK,CAAAA,CAAAA,CAAsDN,CAA6B,CAAA,CAC/F,IAAMO,CAAAA,CAA4B,EAAC,CACnC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACF,CAAAA,CAAKH,CAAK,CAAA,GAAM,CAC5C,IAAMC,CAAOF,CAAAA,CAAAA,CAAOI,CAAG,CAAA,CACnB,OAAOH,CAAAA,EAAU,QACnBM,CAAAA,CAAAA,CAAKH,CAAG,CAAA,CAAIL,CAAc,CAAA,MAAA,CAAOE,CAAOC,CAAAA,CAAI,CAE5CK,CAAAA,CAAAA,CAAKH,CAAG,CAAA,CAAIL,CAAc,CAAA,YAAA,CAAaE,CAAiBC,CAAAA,CAAI,EAEhE,CAAC,CACMK,CAAAA,CACT,CACA,MAAA,CAAOD,CAA0B,CAAA,CAC/B,OAAOP,CAAAA,CAAc,MAAOO,CAAAA,CAAAA,CAAK,IAAK,CAAA,MAAM,CAC9C,CAEA,OAAO,UAAA,CAAWA,CAA0B,CAAA,EAC5C,OAAO,QAASA,CAAAA,CAAAA,CAA0B,CACxC,IAAMC,CAA4B,CAAA,EAClC,CAAA,OAAA,MAAA,CAAO,OAAQD,CAAAA,CAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACF,CAAKH,CAAAA,CAAK,CAAM,GAAA,CAC5CM,CAAKH,CAAAA,CAAG,CAAIL,CAAAA,CAAAA,CAAc,aAAcE,CAAAA,CAAK,EAC/C,CAAC,CACMM,CAAAA,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,CAAU,EAAA,QAAA,EAAYA,CAAM,CAAA,cAAA,CAAe,KAAK,CAAA,EAAKA,CAAM,CAAA,cAAA,CAAe,OAAO,CAAA,CACnFP,CAAM,CAAA,GAAA,CAAKQ,CAAS,EAAA,CAAA,EAAGA,CAAK,CAAA,GAAG,CAAIA,CAAAA,EAAAA,CAAAA,CAAK,KAAK,CAAE,CAAA,CAAA,CAAE,QAAS,EAAA,CAE5DR,CAAM,CAAA,QAAA,EACf,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZF,CAAc,CAAA,QAAA,CAASE,CAAK,CAAA,CAE9B,EAAKA,CAAAA,CACd,CACF,CAAA,CCnFA,GAAM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIC,kBAcIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAYpC,WAAA,CAAYC,CAAmC,CAAA,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,CACjE,CAAA,IAAA,CAAK,IAAK,GACZ,CAGF,CAAA,CAnBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAA,CAAS,KACT,CAAA,CAAA,OAAA,CAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,cAAA,CAAgB,EAAC,CACjB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,YAAc,CAAA,EAChB,CAAA,CATK,IAAeE,CAAAA,CAAfF,CCbP,CAEM,IAAA,CAAE,GAAAG,CAAAA,CAAI,CAAIJ,CAAAA,kBAAAA,CAMHK,CAAN,CAAA,cAA0BF,CAAgB,CAE/C,UAA2B,EAAA,CACzB,IAAMG,CAAAA,CAAgBnB,CAAc,CAAA,QAAA,CAAS,IAAK,CAAA,OAAA,CAAQ,cAAc,CAAA,CAClEoB,CAAaC,CAAAA,oBAAAA,CAAW,CAAE,SAAA,CAAW,GAAK,CAAA,IAAA,CAAMF,CAAc,CAAC,CAE/DG,CAAAA,CAAAA,CAAgBC,kBAAS,CAAA,CAAE,SAAW,CAAA,GAAA,CAAK,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAY,CAAC,CAAA,CACjF,OAAOH,CAAAA,CACJ,MAAO,CAAA,CAAC,CAAE,GAAA,CAAAd,CAAI,CAET,GAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,cAAA,CAAe,QAASA,CAAAA,CAAG,CAI7C,CAAA,CACA,GAAI,CAAA,CAAC,CAAE,GAAA,CAAAA,CAAK,CAAA,KAAA,CAAAH,CAAM,CAAA,IACV,CAAE,GAAA,CAAAG,CAAK,CAAA,KAAA,CAAAH,CAAO,CAAA,IAAA,CAAMmB,CAAchB,CAAAA,CAAG,CAAE,CAAA,CAC/C,CACL,CACA,IAAa,EAAA,CACX,IAAK,CAAA,OAAA,CAAU,IAAK,CAAA,OAAA,CAAQ,OAAWkB,EAAAA,uBAAAA,EACvC,CAAA,IAAMT,CAAU,CAAA,IAAA,CAAK,UAAW,EAAA,CAChC,IAAK,CAAA,UAAA,CAAWA,CAAO,EACzB,CACQ,UAAA,CAAWA,CAAuB,CAAA,CACxCA,CAAQ,CAAA,OAAA,CAAQ,CAAC,CAAE,GAAAT,CAAAA,CAAAA,CAAK,KAAAH,CAAAA,CAAAA,CAAO,IAAAC,CAAAA,CAAK,CAAM,GAAA,CACxC,IAAK,CAAA,OAAA,CAAS,MAAO,CAAA,CAAA,EAAA,EAAKE,CAAG,CAAA,EAAA,EAAKF,CAAI,CAAA,CAAA,CAAA,CAAKa,CAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,YAAA,CAAcX,CAAG,CAAA,CAAGH,CAAK,EACvF,CAAC,EACH,CACQ,SAAA,CAAUsB,CAAgB,CAAA,CAChC,IAAK,CAAA,OAAA,CAAS,MAAQN,CAAAA,CAAAA,EAAkB,CAEtC,IAAMO,CAAcC,CAAAA,oBAAAA,CAAW,CAC7B,SAAA,CAAW,GACX,CAAA,IAAA,CAAMR,CACR,CAAC,CACKS,CAAAA,CAAAA,CAAe5B,CAAc,CAAA,MAAA,CAAO0B,CAAa,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAW,CAC/ED,CAAAA,CAAAA,CAAOG,CAAY,EACrB,CAAC,EACH,CACA,KAAA,CAAMH,CAAgB,CAAA,CACpB,IAAK,CAAA,SAAA,CAAUA,CAAM,CAAA,CAEhB,IAAK,CAAA,OAAA,CAAQ,OAChB,EAAA,IAAA,CAAK,OAAS,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,EAEpC,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 if (value === 'undefined') {\n return;\n }\n return value && 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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\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","error","obj","_obj","keys","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","typedOptions"],"mappings":"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","file":"ArgsCommand.js","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
@@ -5,8 +5,8 @@ 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"},m=["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?t==="undefined"?void 0:t&&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?!!m.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let d=o[n];typeof i=="object"?r[n]=s.toType(i,d):r[n]=s.getTypeValue(i,d);}),r}toType(t){return s.toType(t,this.schema)}static toFlatList(t){}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:y}=f,c=class c{constructor(t){this.options=y({},c.DEFAULT_OPTIONS,t),this.init();}};c.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=c;var {get:b}=f,g=class extends p{getOptions(){let t=a.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),r=flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:i})=>({key:n,value:i,type:r[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:r,type:n})=>{this.program.option(`--${o} <${n}>`,b(this.options.optionTitles,o),r);});}addAction(t){this.program.action(o=>{let r=unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};
8
+ var s={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},g=["true",!0,"1",1];var a=class e{constructor(t){this.schema=t;}static getTypeValue(t,r){if(t!=="undefined"){if(r===s.keyValueArray)return t?t.split(",").map(n=>{if(!n)return;let[o,i]=n.split("=");return {key:o,value:i}}).filter(n=>n):[];if(r===s.objectArray)try{return t?JSON.parse(t):[]}catch(n){return []}return r===s.array?t.split(","):r===s.object?typeof t=="object"?JSON.parse(t):{}:r===s.number?Number(t):r===s.boolean?!!g.includes(t):t}}static toType(t,r){let n={};return Object.entries(t).forEach(([o,i])=>{let y=r[o];typeof i=="object"?n[o]=e.toType(i,y):n[o]=e.getTypeValue(i,y);}),n}toType(t){return e.toType(t,this.schema)}static toFlatList(t){}static toString(t){let r={};return Object.entries(t).forEach(([n,o])=>{r[n]=e.toStringValue(o);}),r}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?t.map(o=>`${o.key}=${o.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:m}=f,c=class c{constructor(t){this.options=m({},c.DEFAULT_OPTIONS,t),this.init();}};c.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=c;var {get:T}=f,d=class extends p{getOptions(){let t=a.toString(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:i})=>({key:o,value:i,type:n[o]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:n,type:o})=>{this.program.option(`--${r} <${o}>`,T(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=unflatJson({delimiter:".",data:r}),o=a.toType(n,this.options.optionTypes);t(o);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};
9
9
 
10
- export { g as ArgsCommand };
10
+ export { d as ArgsCommand };
11
11
  //# sourceMappingURL=ArgsCommand.mjs.map
12
12
  //# 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","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","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 if (value === 'undefined') {\n return;\n }\n return value && 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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\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","error","obj","_obj","keys","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","typedOptions"],"mappings":"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","file":"ArgsCommand.mjs","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
@@ -2,17 +2,17 @@
2
2
 
3
3
  var prompts = require('@inquirer/prompts');
4
4
  var utilsCore = require('@tikkhun/utils-core');
5
- var S = require('lodash');
5
+ var A = require('lodash');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
- var S__default = /*#__PURE__*/_interopDefault(S);
9
+ var A__default = /*#__PURE__*/_interopDefault(A);
10
10
 
11
11
  /**
12
12
  @tikkhun/cli-core
13
13
  */
14
- var m=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var g=(r,t)=>{var o={};for(var n in r)h.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&m)for(var n of m(r))t.indexOf(n)<0&&b.call(r,n)&&(o[n]=r[n]);return o};var c=(r,t,o)=>new Promise((n,i)=>{var e=a=>{try{l(o.next(a));}catch(u){i(u);}},s=a=>{try{l(o.throw(a));}catch(u){i(u);}},l=a=>a.done?n(a.value):Promise.resolve(a.value).then(e,s);l((o=o.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 d=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===p.array?t.split(","):o===p.object?t==="undefined"?void 0:t&&JSON.parse(t):o===p.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,e]=n.split("=");return {key:i,value:e}}).filter(n=>n):[]:o===p.number?Number(t):o===p.boolean?!!R.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,e])=>{let s=o[i];typeof e=="object"?n[i]=r.toType(e,s):n[i]=r.getTypeValue(e,s);}),n}toType(t){return r.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=r.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"?r.toString(t):""+t}};var{merge:A}=S__default.default,y=class y{constructor(t){this.options=A({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var f=y;var T=class extends f{getOptions(){let t=d.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:e,value:s})=>({key:e,defaultValue:s,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>c(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:e,title:s}of t)e&&s&&(o[n]=(yield this.getActionResult({type:e,message:s,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return c(this,null,function*(){let i=t,n=g(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return c(this,null,function*(){let o=yield this.optionHandler(),n=utilsCore.unflatJson({delimiter:".",data:o}),i=d.toType(n,this.options.optionTypes);t(i);})}start(t){return c(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
14
+ var m=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var g=(e,t)=>{var n={};for(var o in e)T.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&m)for(var o of m(e))t.indexOf(o)<0&&h.call(e,o)&&(n[o]=e[o]);return n};var p=(e,t,n)=>new Promise((o,r)=>{var i=a=>{try{u(n.next(a));}catch(l){r(l);}},s=a=>{try{u(n.throw(a));}catch(l){r(l);}},u=a=>a.done?o(a.value):Promise.resolve(a.value).then(i,s);u((n=n.apply(e,t)).next());});var c={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},j=["true",!0,"1",1];var y=class e{constructor(t){this.schema=t;}static getTypeValue(t,n){if(t!=="undefined"){if(n===c.keyValueArray)return t?t.split(",").map(o=>{if(!o)return;let[r,i]=o.split("=");return {key:r,value:i}}).filter(o=>o):[];if(n===c.objectArray)try{return t?JSON.parse(t):[]}catch(o){return []}return n===c.array?t.split(","):n===c.object?typeof t=="object"?JSON.parse(t):{}:n===c.number?Number(t):n===c.boolean?!!j.includes(t):t}}static toType(t,n){let o={};return Object.entries(t).forEach(([r,i])=>{let s=n[r];typeof i=="object"?o[r]=e.toType(i,s):o[r]=e.getTypeValue(i,s);}),o}toType(t){return e.toType(t,this.schema)}static toFlatList(t){}static toString(t){let n={};return Object.entries(t).forEach(([o,r])=>{n[o]=e.toStringValue(r);}),n}static isKeyValueObject(t){let n=Object.keys(t);return n[0]==="key"&&n[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"?this.isKeyValueObject(n)?t.map(r=>`${r.key}=${r.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:R}=A__default.default,f=class f{constructor(t){this.options=R({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var d=f;var b=class extends d{getOptions(){let t=y.toString(this.options.defaultOptions),n=utilsCore.jsonToList({delimiter:".",json:t}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return n.map(({key:i,value:s})=>({key:i,defaultValue:s,type:o[i],title:r[i]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let n={};for(let{key:o,defaultValue:r,type:i,title:s}of t)i&&s&&(n[o]=(yield this.getActionResult({type:i,message:s,default:r}))||r);return n}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let r=t,o=g(r,["type"]);return yield prompts.input(o)})}actionHandler(t){return p(this,null,function*(){let n=yield this.optionHandler(),o=utilsCore.unflatJson({delimiter:".",data:n}),r=y.toType(o,this.options.optionTypes);t(r);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
15
15
 
16
- exports.PromptsCommand = T;
16
+ exports.PromptsCommand = b;
17
17
  //# sourceMappingURL=PromptsCommand.js.map
18
18
  //# sourceMappingURL=PromptsCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","jsonToList","flattedOptionTypeList","flatJson","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.js","sourcesContent":["/**\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';\nimport _ from 'lodash';\nconst { get } = _;\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = OptionHandler.toString(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\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 if (value === 'undefined') {\n return;\n }\n return value && 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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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"]}
1
+ {"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","error","obj","_obj","keys","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","jsonToList","flattedOptionTypeList","flatJson","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.js","sourcesContent":["/**\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';\nimport _ from 'lodash';\nconst { get } = _;\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = OptionHandler.toString(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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"]}
@@ -1,12 +1,12 @@
1
1
  import { input } from '@inquirer/prompts';
2
2
  import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
3
- import S from 'lodash';
3
+ import A from 'lodash';
4
4
 
5
5
  /**
6
6
  @tikkhun/cli-core
7
7
  */
8
- var m=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var g=(r,t)=>{var o={};for(var n in r)h.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&m)for(var n of m(r))t.indexOf(n)<0&&b.call(r,n)&&(o[n]=r[n]);return o};var c=(r,t,o)=>new Promise((n,i)=>{var e=a=>{try{l(o.next(a));}catch(u){i(u);}},s=a=>{try{l(o.throw(a));}catch(u){i(u);}},l=a=>a.done?n(a.value):Promise.resolve(a.value).then(e,s);l((o=o.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 d=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===p.array?t.split(","):o===p.object?t==="undefined"?void 0:t&&JSON.parse(t):o===p.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,e]=n.split("=");return {key:i,value:e}}).filter(n=>n):[]:o===p.number?Number(t):o===p.boolean?!!R.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,e])=>{let s=o[i];typeof e=="object"?n[i]=r.toType(e,s):n[i]=r.getTypeValue(e,s);}),n}toType(t){return r.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=r.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"?r.toString(t):""+t}};var{merge:A}=S,y=class y{constructor(t){this.options=A({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var f=y;var T=class extends f{getOptions(){let t=d.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes}),i=flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:e,value:s})=>({key:e,defaultValue:s,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>c(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:e,title:s}of t)e&&s&&(o[n]=(yield this.getActionResult({type:e,message:s,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return c(this,null,function*(){let i=t,n=g(i,["type"]);return yield input(n)})}actionHandler(t){return c(this,null,function*(){let o=yield this.optionHandler(),n=unflatJson({delimiter:".",data:o}),i=d.toType(n,this.options.optionTypes);t(i);})}start(t){return c(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
8
+ var m=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var g=(e,t)=>{var n={};for(var o in e)T.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&m)for(var o of m(e))t.indexOf(o)<0&&h.call(e,o)&&(n[o]=e[o]);return n};var p=(e,t,n)=>new Promise((o,r)=>{var i=a=>{try{u(n.next(a));}catch(l){r(l);}},s=a=>{try{u(n.throw(a));}catch(l){r(l);}},u=a=>a.done?o(a.value):Promise.resolve(a.value).then(i,s);u((n=n.apply(e,t)).next());});var c={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},j=["true",!0,"1",1];var y=class e{constructor(t){this.schema=t;}static getTypeValue(t,n){if(t!=="undefined"){if(n===c.keyValueArray)return t?t.split(",").map(o=>{if(!o)return;let[r,i]=o.split("=");return {key:r,value:i}}).filter(o=>o):[];if(n===c.objectArray)try{return t?JSON.parse(t):[]}catch(o){return []}return n===c.array?t.split(","):n===c.object?typeof t=="object"?JSON.parse(t):{}:n===c.number?Number(t):n===c.boolean?!!j.includes(t):t}}static toType(t,n){let o={};return Object.entries(t).forEach(([r,i])=>{let s=n[r];typeof i=="object"?o[r]=e.toType(i,s):o[r]=e.getTypeValue(i,s);}),o}toType(t){return e.toType(t,this.schema)}static toFlatList(t){}static toString(t){let n={};return Object.entries(t).forEach(([o,r])=>{n[o]=e.toStringValue(r);}),n}static isKeyValueObject(t){let n=Object.keys(t);return n[0]==="key"&&n[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"?this.isKeyValueObject(n)?t.map(r=>`${r.key}=${r.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:R}=A,f=class f{constructor(t){this.options=R({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var d=f;var b=class extends d{getOptions(){let t=y.toString(this.options.defaultOptions),n=jsonToList({delimiter:".",json:t}),o=flatJson({delimiter:".",data:this.options.optionTypes}),r=flatJson({delimiter:".",data:this.options.optionTitles});return n.map(({key:i,value:s})=>({key:i,defaultValue:s,type:o[i],title:r[i]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let n={};for(let{key:o,defaultValue:r,type:i,title:s}of t)i&&s&&(n[o]=(yield this.getActionResult({type:i,message:s,default:r}))||r);return n}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let r=t,o=g(r,["type"]);return yield input(o)})}actionHandler(t){return p(this,null,function*(){let n=yield this.optionHandler(),o=unflatJson({delimiter:".",data:n}),r=y.toType(o,this.options.optionTypes);t(r);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
9
9
 
10
- export { T as PromptsCommand };
10
+ export { b as PromptsCommand };
11
11
  //# sourceMappingURL=PromptsCommand.mjs.map
12
12
  //# sourceMappingURL=PromptsCommand.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","jsonToList","flattedOptionTypeList","flatJson","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.mjs","sourcesContent":["/**\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';\nimport _ from 'lodash';\nconst { get } = _;\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = OptionHandler.toString(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\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 if (value === 'undefined') {\n return;\n }\n return value && 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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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"]}
1
+ {"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","error","obj","_obj","keys","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","jsonToList","flattedOptionTypeList","flatJson","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.mjs","sourcesContent":["/**\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';\nimport _ from 'lodash';\nconst { get } = _;\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = OptionHandler.toString(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\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 program: undefined,\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\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"]}
@@ -1,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
3
  var utilsCore = require('@tikkhun/utils-core');
4
- var P = require('lodash');
4
+ var V = require('lodash');
5
5
  var commander = require('commander');
6
6
  var prompts = require('@inquirer/prompts');
7
- var N = require('fs-extra');
7
+ var F = require('fs-extra');
8
8
  var path = require('path');
9
9
  var logger = require('@tikkhun/logger');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
 
13
- var P__default = /*#__PURE__*/_interopDefault(P);
14
- var N__default = /*#__PURE__*/_interopDefault(N);
13
+ var V__default = /*#__PURE__*/_interopDefault(V);
14
+ var F__default = /*#__PURE__*/_interopDefault(F);
15
15
 
16
16
  /**
17
17
  @tikkhun/cli-core
18
18
  */
19
- var y=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var h=(r,t)=>{var o={};for(var i in r)j.call(r,i)&&t.indexOf(i)<0&&(o[i]=r[i]);if(r!=null&&y)for(var i of y(r))t.indexOf(i)<0&&R.call(r,i)&&(o[i]=r[i]);return o};var a=(r,t,o)=>new Promise((i,n)=>{var s=d=>{try{g(o.next(d));}catch(u){n(u);}},e=d=>{try{g(o.throw(d));}catch(u){n(u);}},g=d=>d.done?i(d.value):Promise.resolve(d.value).then(s,e);g((o=o.apply(r,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},S=["true",!0,"1",1];var p=class r{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===f.array?t.split(","):o===f.object?t==="undefined"?void 0:t&&JSON.parse(t):o===f.keyValueArray?t?t.split(",").map(i=>{if(!i)return;let[n,s]=i.split("=");return {key:n,value:s}}).filter(i=>i):[]:o===f.number?Number(t):o===f.boolean?!!S.includes(t):t}static toType(t,o){let i={};return Object.entries(t).forEach(([n,s])=>{let e=o[n];typeof s=="object"?i[n]=r.toType(s,e):i[n]=r.getTypeValue(s,e);}),i}toType(t){return r.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([i,n])=>{o[i]=r.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(i=>`${i.key}=${i.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:w}=P__default.default,l=class l{constructor(t){this.options=w({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=l;var {get:J}=P__default.default,O=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:s})=>({key:n,value:s,type:i[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,J(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=utilsCore.unflatJson({delimiter:".",data:o}),n=p.toType(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var A=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:e})=>({key:s,defaultValue:e,type:i[s],title:n[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:s,title:e}of t)s&&e&&(o[i]=(yield this.getActionResult({type:s,message:e,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,i=h(n,["type"]);return yield prompts.input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=utilsCore.unflatJson({delimiter:".",data:o}),n=p.toType(i,this.options.optionTypes);t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:v,writeJson:G}=N__default.default,m=class m extends c{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",m.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=m.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield G(n,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",m.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n;if(o.endsWith(".js")?n=yield import(o):o.endsWith(".json")&&(n=yield v(o)),!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};m.defaultConfigPath=path.join(process.cwd(),"release.json");var b=m;
19
+ var u=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var h=(n,t)=>{var o={};for(var r in n)x.call(n,r)&&t.indexOf(r)<0&&(o[r]=n[r]);if(n!=null&&u)for(var r of u(n))t.indexOf(r)<0&&R.call(n,r)&&(o[r]=n[r]);return o};var a=(n,t,o)=>new Promise((r,i)=>{var s=d=>{try{g(o.next(d));}catch(y){i(y);}},e=d=>{try{g(o.throw(d));}catch(y){i(y);}},g=d=>d.done?r(d.value):Promise.resolve(d.value).then(s,e);g((o=o.apply(n,t)).next());});var m={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},S=["true",!0,"1",1];var p=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){if(t!=="undefined"){if(o===m.keyValueArray)return t?t.split(",").map(r=>{if(!r)return;let[i,s]=r.split("=");return {key:i,value:s}}).filter(r=>r):[];if(o===m.objectArray)try{return t?JSON.parse(t):[]}catch(r){return []}return o===m.array?t.split(","):o===m.object?typeof t=="object"?JSON.parse(t):{}:o===m.number?Number(t):o===m.boolean?!!S.includes(t):t}}static toType(t,o){let r={};return Object.entries(t).forEach(([i,s])=>{let e=o[i];typeof s=="object"?r[i]=n.toType(s,e):r[i]=n.getTypeValue(s,e);}),r}toType(t){return n.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([r,i])=>{o[r]=n.toStringValue(i);}),o}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?t.map(i=>`${i.key}=${i.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:E}=V__default.default,l=class l{constructor(t){this.options=E({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=l;var {get:H}=V__default.default,O=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:s})=>({key:i,value:s,type:r[i]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:r,type:i})=>{this.program.option(`--${o} <${i}>`,H(this.options.optionTitles,o),r);});}addAction(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),i=p.toType(r,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:e})=>({key:s,defaultValue:e,type:r[s],title:i[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:r,defaultValue:i,type:s,title:e}of t)s&&e&&(o[r]=(yield this.getActionResult({type:s,message:e,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let i=t,r=h(i,["type"]);return yield prompts.input(r)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),r=utilsCore.unflatJson({delimiter:".",data:o}),i=p.toType(r,this.options.optionTypes);t(i);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:K,writeJson:G}=F__default.default,f=class f extends c{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(r=>a(this,null,function*(){let{path:i}=r;i||(i=f.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield G(i,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(r=>a(this,[r],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield K(o)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=path.join(process.cwd(),"release.json");var j=f;
20
20
 
21
21
  exports.AbstractCommand = c;
22
22
  exports.ArgsCommand = O;
23
- exports.ConfigCommand = b;
24
- exports.PromptsCommand = A;
23
+ exports.ConfigCommand = j;
24
+ exports.PromptsCommand = T;
25
25
  //# sourceMappingURL=index.js.map
26
26
  //# sourceMappingURL=index.js.map