@tikkhun/cli-core 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CommandManager.d.mts +1 -1
- package/dist/CommandManager.d.ts +1 -1
- package/dist/CommandManager.js +8 -8
- package/dist/CommandManager.js.map +1 -1
- package/dist/CommandManager.mjs +4 -4
- package/dist/CommandManager.mjs.map +1 -1
- package/dist/Info.d.mts +8 -0
- package/dist/Info.d.ts +8 -0
- package/dist/Info.js +13 -0
- package/dist/Info.js.map +1 -0
- package/dist/Info.mjs +10 -0
- package/dist/Info.mjs.map +1 -0
- package/dist/command/ArgsCommand.js +4 -4
- package/dist/command/ArgsCommand.js.map +1 -1
- package/dist/command/ArgsCommand.mjs +3 -3
- package/dist/command/ArgsCommand.mjs.map +1 -1
- package/dist/command/ConfigCommand.js +2 -2
- package/dist/command/ConfigCommand.js.map +1 -1
- package/dist/command/ConfigCommand.mjs +2 -2
- package/dist/command/ConfigCommand.mjs.map +1 -1
- package/dist/command/PromptsCommand.d.mts +1 -1
- package/dist/command/PromptsCommand.d.ts +1 -1
- package/dist/command/PromptsCommand.js +4 -4
- package/dist/command/PromptsCommand.js.map +1 -1
- package/dist/command/PromptsCommand.mjs +3 -3
- package/dist/command/PromptsCommand.mjs.map +1 -1
- package/dist/command/command.interface.d.mts +1 -0
- package/dist/command/command.interface.d.ts +1 -0
- package/dist/command/command.interface.js +1 -1
- package/dist/command/command.interface.js.map +1 -1
- package/dist/command/command.interface.mjs +1 -1
- package/dist/command/command.interface.mjs.map +1 -1
- package/dist/command/index.d.mts +1 -1
- package/dist/command/index.d.ts +1 -1
- package/dist/command/index.js +8 -8
- package/dist/command/index.js.map +1 -1
- package/dist/command/index.mjs +4 -4
- package/dist/command/index.mjs.map +1 -1
- package/dist/index.d.mts +9 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.js +24 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/dist/options-transformer/index.d.mts +8 -0
- package/dist/options-transformer/index.d.ts +8 -0
- package/dist/options-transformer/index.js +19 -0
- package/dist/options-transformer/index.js.map +1 -0
- package/dist/options-transformer/index.mjs +8 -0
- package/dist/options-transformer/index.mjs.map +1 -0
- package/dist/options-transformer/options-transformer.d.mts +23 -0
- package/dist/options-transformer/options-transformer.d.ts +23 -0
- package/dist/options-transformer/options-transformer.js +11 -0
- package/dist/options-transformer/options-transformer.js.map +1 -0
- package/dist/options-transformer/options-transformer.mjs +8 -0
- package/dist/options-transformer/options-transformer.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/array.type.d.mts +9 -0
- package/dist/options-transformer/paramTypes/array.type.d.ts +9 -0
- package/dist/options-transformer/paramTypes/array.type.js +10 -0
- package/dist/options-transformer/paramTypes/array.type.js.map +1 -0
- package/dist/options-transformer/paramTypes/array.type.mjs +8 -0
- package/dist/options-transformer/paramTypes/array.type.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/boolean.type.d.mts +7 -0
- package/dist/options-transformer/paramTypes/boolean.type.d.ts +7 -0
- package/dist/options-transformer/paramTypes/boolean.type.js +12 -0
- package/dist/options-transformer/paramTypes/boolean.type.js.map +1 -0
- package/dist/options-transformer/paramTypes/boolean.type.mjs +8 -0
- package/dist/options-transformer/paramTypes/boolean.type.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/index.d.mts +7 -0
- package/dist/options-transformer/paramTypes/index.d.ts +7 -0
- package/dist/options-transformer/paramTypes/index.js +17 -0
- package/dist/options-transformer/paramTypes/index.js.map +1 -0
- package/dist/options-transformer/paramTypes/index.mjs +8 -0
- package/dist/options-transformer/paramTypes/index.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/key-value-array.type.d.mts +5 -0
- package/dist/options-transformer/paramTypes/key-value-array.type.d.ts +5 -0
- package/dist/options-transformer/paramTypes/key-value-array.type.js +10 -0
- package/dist/options-transformer/paramTypes/key-value-array.type.js.map +1 -0
- package/dist/options-transformer/paramTypes/key-value-array.type.mjs +8 -0
- package/dist/options-transformer/paramTypes/key-value-array.type.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/number.type.d.mts +5 -0
- package/dist/options-transformer/paramTypes/number.type.d.ts +5 -0
- package/dist/options-transformer/paramTypes/number.type.js +10 -0
- package/dist/options-transformer/paramTypes/number.type.js.map +1 -0
- package/dist/options-transformer/paramTypes/number.type.mjs +8 -0
- package/dist/options-transformer/paramTypes/number.type.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/object-array.type.d.mts +5 -0
- package/dist/options-transformer/paramTypes/object-array.type.d.ts +5 -0
- package/dist/options-transformer/paramTypes/object-array.type.js +10 -0
- package/dist/options-transformer/paramTypes/object-array.type.js.map +1 -0
- package/dist/options-transformer/paramTypes/object-array.type.mjs +8 -0
- package/dist/options-transformer/paramTypes/object-array.type.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/object.type.d.mts +5 -0
- package/dist/options-transformer/paramTypes/object.type.d.ts +5 -0
- package/dist/options-transformer/paramTypes/object.type.js +10 -0
- package/dist/options-transformer/paramTypes/object.type.js.map +1 -0
- package/dist/options-transformer/paramTypes/object.type.mjs +8 -0
- package/dist/options-transformer/paramTypes/object.type.mjs.map +1 -0
- package/dist/options-transformer/paramTypes/param-type.interface.d.mts +6 -0
- package/dist/options-transformer/paramTypes/param-type.interface.d.ts +6 -0
- package/dist/options-transformer/paramTypes/param-type.interface.js +4 -0
- package/dist/options-transformer/paramTypes/param-type.interface.js.map +1 -0
- package/dist/options-transformer/paramTypes/param-type.interface.mjs +3 -0
- package/dist/options-transformer/paramTypes/param-type.interface.mjs.map +1 -0
- package/package.json +2 -2
- package/dist/OptionHandler.d.mts +0 -26
- package/dist/OptionHandler.d.ts +0 -26
- package/dist/OptionHandler.js +0 -13
- package/dist/OptionHandler.js.map +0 -1
- package/dist/OptionHandler.mjs +0 -8
- package/dist/OptionHandler.mjs.map +0 -1
- package/dist/package.d.mts +0 -3
- package/dist/package.d.ts +0 -3
- package/dist/package.js +0 -12
- package/dist/package.js.map +0 -1
- package/dist/package.mjs +0 -10
- package/dist/package.mjs.map +0 -1
@@ -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","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"]}
|
1
|
+
{"version":3,"sources":["../../lib/options-transformer/paramTypes/array.type.ts","../../lib/options-transformer/paramTypes/boolean.type.ts","../../lib/options-transformer/paramTypes/key-value-array.type.ts","../../lib/options-transformer/paramTypes/number.type.ts","../../lib/options-transformer/paramTypes/object-array.type.ts","../../lib/options-transformer/paramTypes/object.type.ts","../../lib/options-transformer/options-transformer.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","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":["import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\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};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport 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;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, 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] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(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 return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === '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 logo?: 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 logo: undefined,\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 { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(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 = OptionsTransformer.parse(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,12 +1,12 @@
|
|
1
1
|
import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
|
2
|
-
import
|
2
|
+
import O from 'lodash';
|
3
3
|
import { createCommand } from 'commander';
|
4
4
|
|
5
5
|
/**
|
6
6
|
@tikkhun/cli-core
|
7
7
|
*/
|
8
|
-
var
|
8
|
+
var c={stringify(t){return t!=null&&t.length?t.toString():""},parse(t){return t.split(",")}};var b=["true",!0,"1",1];var u={stringify(t){return t.toString()},parse(t){return !!b.includes(t)}};var f={stringify(t){return t!=null&&t.length?t.map(r=>`${r==null?void 0:r.key}=${r==null?void 0:r.value}`).join(","):""},parse(t){return t?t.split(",").map(r=>{if(!r)return;let[e,n]=r.split("=");return {key:e,value:n}}).filter(r=>r):[]}};var d={stringify(t){return t.toString()},parse(t){return Number(t)}};var m={stringify(t){return JSON.stringify(t)},parse(t){try{return JSON.parse(t)||[]}catch(r){return []}}};var l={stringify(t){return JSON.stringify(t)},parse(t){return typeof t=="object"?JSON.parse(t):{}}};var i={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},a=class t{constructor(r){this.schema=r;}parse(r){return t.parse(r,this.schema)}static parse(r,e){let n={};return Object.entries(r).forEach(([o,s])=>{let g=e[o];typeof s=="object"?n[o]=t.parse(s,g):n[o]=t.parseValueByType(s,g);}),n}static parseValueByType(r,e){if(r!=="undefined")return e===i.keyValueArray?f.parse(r):e===i.objectArray?m.parse(r):e===i.array?c.parse(r):e===i.object?l.parse(r):e===i.number?d.parse(r):e===i.boolean?u.parse(r):r}static stringify(r){let e={};return Object.entries(r).forEach(([n,o])=>{e[n]=t.stringifyValue(o);}),e}static stringifyValue(r){if(Array.isArray(r)){let e=r[0];return typeof e=="object"?this.isKeyValueObject(e)?f.stringify(r):m.stringify(r):c.stringify(r)}return typeof r=="object"?t.stringify(r):""+r}static isKeyValueObject(r){let e=Object.keys(r);return e[0]==="key"&&e[1]==="value"}};var{merge:h}=O,y=class y{constructor(r){this.options=h({},y.DEFAULT_OPTIONS,r),this.init();}};y.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=y;var {get:S}=O,T=class extends p{getOptions(){let r=a.stringify(this.options.defaultOptions),e=jsonToList({delimiter:".",json:r}),n=flatJson({delimiter:".",data:this.options.optionTypes});return e.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:s})=>({key:o,value:s,type:n[o]}))}init(){this.program=this.options.program||createCommand();let r=this.getOptions();this.addOptions(r);}addOptions(r){r.forEach(({key:e,value:n,type:o})=>{this.program.option(`--${e} <${o}>`,S(this.options.optionTitles,e),n);});}addAction(r){this.program.action(e=>{let n=unflatJson({delimiter:".",data:e}),o=a.parse(n,this.options.optionTypes);r(o);});}start(r){this.addAction(r),this.options.program||this.program.parse(process.argv);}};
|
9
9
|
|
10
|
-
export {
|
10
|
+
export { T 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","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"]}
|
1
|
+
{"version":3,"sources":["../../lib/options-transformer/paramTypes/array.type.ts","../../lib/options-transformer/paramTypes/boolean.type.ts","../../lib/options-transformer/paramTypes/key-value-array.type.ts","../../lib/options-transformer/paramTypes/number.type.ts","../../lib/options-transformer/paramTypes/object-array.type.ts","../../lib/options-transformer/paramTypes/object.type.ts","../../lib/options-transformer/options-transformer.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","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":["import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\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};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport 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;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, 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] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(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 return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === '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 logo?: 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 logo: undefined,\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 { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(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 = OptionsTransformer.parse(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"]}
|
@@ -14,8 +14,8 @@ var O__default = /*#__PURE__*/_interopDefault(O);
|
|
14
14
|
/**
|
15
15
|
@tikkhun/cli-core
|
16
16
|
*/
|
17
|
-
var m=(
|
17
|
+
var m=(f,t,o)=>new Promise((e,i)=>{var l=n=>{try{p(o.next(n));}catch(d){i(d);}},h=n=>{try{p(o.throw(n));}catch(d){i(d);}},p=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,h);p((o=o.apply(f,t)).next());});var{merge:u}=O__default.default,a=class a{constructor(t){this.options=u({},a.DEFAULT_OPTIONS,t),this.init();}};a.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=a;var{readJson:x,writeJson:C}=v__default.default,r=class r extends s{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",r.defaultConfigPath).action(e=>m(this,null,function*(){let{path:i}=e;i||(i=r.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield C(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",r.defaultConfigPath);}addAction(t){this.program.action(e=>m(this,[e],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield x(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);}};r.defaultConfigPath=path.join(process.cwd(),"release.json");var g=r;
|
18
18
|
|
19
|
-
exports.ConfigCommand =
|
19
|
+
exports.ConfigCommand = g;
|
20
20
|
//# sourceMappingURL=ConfigCommand.js.map
|
21
21
|
//# sourceMappingURL=ConfigCommand.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","readJson","writeJson","fsExtra","_ConfigCommand","_a","_b","createCommand","__async","path","Logger","action","_0","config","join","ConfigCommand"],"mappings":";;;;;;;;;;;;;;;;kNAEA,GAAM,CAAE,KAAAA,CAAAA,CAAM,CAAIC,CAAAA,kBAAAA,
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","readJson","writeJson","fsExtra","_ConfigCommand","_a","_b","createCommand","__async","path","Logger","action","_0","config","join","ConfigCommand"],"mappings":"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","file":"ConfigCommand.js","sourcesContent":["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 logo?: 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 logo: undefined,\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 { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(config);\n }\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
@@ -7,8 +7,8 @@ import { Logger } from '@tikkhun/logger';
|
|
7
7
|
/**
|
8
8
|
@tikkhun/cli-core
|
9
9
|
*/
|
10
|
-
var m=(
|
10
|
+
var m=(f,t,o)=>new Promise((e,i)=>{var l=n=>{try{p(o.next(n));}catch(d){i(d);}},h=n=>{try{p(o.throw(n));}catch(d){i(d);}},p=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,h);p((o=o.apply(f,t)).next());});var{merge:u}=O,a=class a{constructor(t){this.options=u({},a.DEFAULT_OPTIONS,t),this.init();}};a.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=a;var{readJson:x,writeJson:C}=v,r=class r extends s{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",r.defaultConfigPath).action(e=>m(this,null,function*(){let{path:i}=e;i||(i=r.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield C(i,this.options.defaultOptions,{spaces:2}),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",r.defaultConfigPath);}addAction(t){this.program.action(e=>m(this,[e],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield x(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);}};r.defaultConfigPath=join(process.cwd(),"release.json");var g=r;
|
11
11
|
|
12
|
-
export {
|
12
|
+
export { g as ConfigCommand };
|
13
13
|
//# sourceMappingURL=ConfigCommand.mjs.map
|
14
14
|
//# sourceMappingURL=ConfigCommand.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","readJson","writeJson","fsExtra","_ConfigCommand","_a","_b","createCommand","__async","path","Logger","action","_0","config","join","ConfigCommand"],"mappings":";;;;;;;;;kNAEA,GAAM,CAAE,KAAAA,CAAAA,CAAM,CAAIC,CAAAA,CAAAA,
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","readJson","writeJson","fsExtra","_ConfigCommand","_a","_b","createCommand","__async","path","Logger","action","_0","config","join","ConfigCommand"],"mappings":"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","file":"ConfigCommand.mjs","sourcesContent":["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 logo?: 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 logo: undefined,\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 { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(config);\n }\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\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
|
5
|
+
var k = require('lodash');
|
6
6
|
|
7
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
8
8
|
|
9
|
-
var
|
9
|
+
var k__default = /*#__PURE__*/_interopDefault(k);
|
10
10
|
|
11
11
|
/**
|
12
12
|
@tikkhun/cli-core
|
13
13
|
*/
|
14
|
-
var
|
14
|
+
var b=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var O=(r,t)=>{var e={};for(var n in r)P.call(r,n)&&t.indexOf(n)<0&&(e[n]=r[n]);if(r!=null&&b)for(var n of b(r))t.indexOf(n)<0&&R.call(r,n)&&(e[n]=r[n]);return e};var y=(r,t,e)=>new Promise((n,o)=>{var i=a=>{try{m(e.next(a));}catch(g){o(g);}},s=a=>{try{m(e.throw(a));}catch(g){o(g);}},m=a=>a.done?n(a.value):Promise.resolve(a.value).then(i,s);m((e=e.apply(r,t)).next());});var l={stringify(r){return r!=null&&r.length?r.toString():""},parse(r){return r.split(",")}};var S=["true",!0,"1",1];var h={stringify(r){return r.toString()},parse(r){return !!S.includes(r)}};var d={stringify(r){return r!=null&&r.length?r.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(r){return r?r.split(",").map(t=>{if(!t)return;let[e,n]=t.split("=");return {key:e,value:n}}).filter(t=>t):[]}};var x={stringify(r){return r.toString()},parse(r){return Number(r)}};var T={stringify(r){return JSON.stringify(r)},parse(r){try{return JSON.parse(r)||[]}catch(t){return []}}};var j={stringify(r){return JSON.stringify(r)},parse(r){return typeof r=="object"?JSON.parse(r):{}}};var p={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},c=class r{constructor(t){this.schema=t;}parse(t){return r.parse(t,this.schema)}static parse(t,e){let n={};return Object.entries(t).forEach(([o,i])=>{let s=e[o];typeof i=="object"?n[o]=r.parse(i,s):n[o]=r.parseValueByType(i,s);}),n}static parseValueByType(t,e){if(t!=="undefined")return e===p.keyValueArray?d.parse(t):e===p.objectArray?T.parse(t):e===p.array?l.parse(t):e===p.object?j.parse(t):e===p.number?x.parse(t):e===p.boolean?h.parse(t):t}static stringify(t){let e={};return Object.entries(t).forEach(([n,o])=>{e[n]=r.stringifyValue(o);}),e}static stringifyValue(t){if(Array.isArray(t)){let e=t[0];return typeof e=="object"?this.isKeyValueObject(e)?d.stringify(t):T.stringify(t):l.stringify(t)}return typeof t=="object"?r.stringify(t):""+t}static isKeyValueObject(t){let e=Object.keys(t);return e[0]==="key"&&e[1]==="value"}};var{merge:E}=k__default.default,u=class u{constructor(t){this.options=E({},u.DEFAULT_OPTIONS,t),this.init();}};u.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var f=u;var V=class extends f{getOptions(){let t=c.stringify(this.options.defaultOptions),e=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return e.map(({key:i,value:s})=>({key:i,defaultValue:s,type:n[i],title:o[i]}))}init(){let t=this.getOptions();this.optionHandler=()=>y(this,null,function*(){let e={};for(let{key:n,defaultValue:o,type:i,title:s}of t)i&&s&&(e[n]=(yield this.getActionResult({type:i,message:s,default:o}))||o);return e}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return y(this,null,function*(){let o=t,n=O(o,["type"]);return yield prompts.input(n)})}actionHandler(t){return y(this,null,function*(){let e=yield this.optionHandler(),n=utilsCore.unflatJson({delimiter:".",data:e}),o=c.parse(n,this.options.optionTypes);t(o);})}start(t){return y(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
|
15
15
|
|
16
|
-
exports.PromptsCommand =
|
16
|
+
exports.PromptsCommand = V;
|
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","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
|
+
{"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/options-transformer/paramTypes/array.type.ts","../../lib/options-transformer/paramTypes/boolean.type.ts","../../lib/options-transformer/paramTypes/key-value-array.type.ts","../../lib/options-transformer/paramTypes/number.type.ts","../../lib/options-transformer/paramTypes/object-array.type.ts","../../lib/options-transformer/paramTypes/object.type.ts","../../lib/options-transformer/options-transformer.ts","../../lib/command/command.interface.ts"],"names":["arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","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 { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(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 = OptionsTransformer.parse(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","import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\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};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport 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;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, 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] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(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 return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === '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 logo?: 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 logo: undefined,\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
|
3
|
+
import k from 'lodash';
|
4
4
|
|
5
5
|
/**
|
6
6
|
@tikkhun/cli-core
|
7
7
|
*/
|
8
|
-
var
|
8
|
+
var b=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var O=(r,t)=>{var e={};for(var n in r)P.call(r,n)&&t.indexOf(n)<0&&(e[n]=r[n]);if(r!=null&&b)for(var n of b(r))t.indexOf(n)<0&&R.call(r,n)&&(e[n]=r[n]);return e};var y=(r,t,e)=>new Promise((n,o)=>{var i=a=>{try{m(e.next(a));}catch(g){o(g);}},s=a=>{try{m(e.throw(a));}catch(g){o(g);}},m=a=>a.done?n(a.value):Promise.resolve(a.value).then(i,s);m((e=e.apply(r,t)).next());});var l={stringify(r){return r!=null&&r.length?r.toString():""},parse(r){return r.split(",")}};var S=["true",!0,"1",1];var h={stringify(r){return r.toString()},parse(r){return !!S.includes(r)}};var d={stringify(r){return r!=null&&r.length?r.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(r){return r?r.split(",").map(t=>{if(!t)return;let[e,n]=t.split("=");return {key:e,value:n}}).filter(t=>t):[]}};var x={stringify(r){return r.toString()},parse(r){return Number(r)}};var T={stringify(r){return JSON.stringify(r)},parse(r){try{return JSON.parse(r)||[]}catch(t){return []}}};var j={stringify(r){return JSON.stringify(r)},parse(r){return typeof r=="object"?JSON.parse(r):{}}};var p={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},c=class r{constructor(t){this.schema=t;}parse(t){return r.parse(t,this.schema)}static parse(t,e){let n={};return Object.entries(t).forEach(([o,i])=>{let s=e[o];typeof i=="object"?n[o]=r.parse(i,s):n[o]=r.parseValueByType(i,s);}),n}static parseValueByType(t,e){if(t!=="undefined")return e===p.keyValueArray?d.parse(t):e===p.objectArray?T.parse(t):e===p.array?l.parse(t):e===p.object?j.parse(t):e===p.number?x.parse(t):e===p.boolean?h.parse(t):t}static stringify(t){let e={};return Object.entries(t).forEach(([n,o])=>{e[n]=r.stringifyValue(o);}),e}static stringifyValue(t){if(Array.isArray(t)){let e=t[0];return typeof e=="object"?this.isKeyValueObject(e)?d.stringify(t):T.stringify(t):l.stringify(t)}return typeof t=="object"?r.stringify(t):""+t}static isKeyValueObject(t){let e=Object.keys(t);return e[0]==="key"&&e[1]==="value"}};var{merge:E}=k,u=class u{constructor(t){this.options=E({},u.DEFAULT_OPTIONS,t),this.init();}};u.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var f=u;var V=class extends f{getOptions(){let t=c.stringify(this.options.defaultOptions),e=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes}),o=flatJson({delimiter:".",data:this.options.optionTitles});return e.map(({key:i,value:s})=>({key:i,defaultValue:s,type:n[i],title:o[i]}))}init(){let t=this.getOptions();this.optionHandler=()=>y(this,null,function*(){let e={};for(let{key:n,defaultValue:o,type:i,title:s}of t)i&&s&&(e[n]=(yield this.getActionResult({type:i,message:s,default:o}))||o);return e}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return y(this,null,function*(){let o=t,n=O(o,["type"]);return yield input(n)})}actionHandler(t){return y(this,null,function*(){let e=yield this.optionHandler(),n=unflatJson({delimiter:".",data:e}),o=c.parse(n,this.options.optionTypes);t(o);})}start(t){return y(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
|
9
9
|
|
10
|
-
export {
|
10
|
+
export { V 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","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
|
+
{"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/options-transformer/paramTypes/array.type.ts","../../lib/options-transformer/paramTypes/boolean.type.ts","../../lib/options-transformer/paramTypes/key-value-array.type.ts","../../lib/options-transformer/paramTypes/number.type.ts","../../lib/options-transformer/paramTypes/object-array.type.ts","../../lib/options-transformer/paramTypes/object.type.ts","../../lib/options-transformer/options-transformer.ts","../../lib/command/command.interface.ts"],"names":["arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","jsonToList","flattedOptionTypeList","flatJson","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":";;;;;;;AAaA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CCPO,IAAMA,EAAuB,CAElC,SAAA,CAAUC,EAAgB,CACxB,OAAKA,GAAA,IAAAA,EAAAA,CAAAA,CAAG,MAGDA,CAAAA,CAAAA,CAAE,UAFA,CAAA,EAGX,EACA,KAAMA,CAAAA,CAAAA,CAAW,CACf,OAAOA,CAAAA,CAAE,MAAM,GAAG,CACpB,CACF,CChBO,CAAA,IAAMC,EAAe,CAAC,MAAA,CAAQ,GAAM,GAAK,CAAA,CAAC,CAE1C,CAAA,IAAMC,EAAyB,CACpC,SAAA,CAAUC,EAAwB,CAChC,OAAOA,EAAM,QAAS,EACxB,EACA,KAAMA,CAAAA,CAAAA,CAAe,CACnB,OAAI,CAAA,CAAAF,EAAa,QAASE,CAAAA,CAAK,CAEjC,CACF,CAAA,CCLO,IAAMC,CAAAA,CAA+B,CAE1C,SAAUJ,CAAAA,CAAAA,CAAgB,CACxB,OAAKA,CAAAA,EAAA,MAAAA,CAAG,CAAA,MAAA,CAGDA,EAAE,GAAKK,CAAAA,CAAAA,EAAuB,GAAGA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAAM,GAAG,CAAA,CAAA,EAAIA,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAM,KAAK,CAAA,CAAE,EAAE,IAAK,CAAA,GAAG,EAFnE,EAGX,CAAA,CACA,MAAMF,CAAe,CAAA,CACnB,OAAKA,CACEA,CAAAA,CAAAA,CACJ,MAAM,GAAG,CAAA,CACT,IAAKG,CAAY,EAAA,CAChB,GAAI,CAACA,CAAAA,CAAS,OACd,GAAM,CAACC,CAAKJ,CAAAA,CAAK,EAAIG,CAAQ,CAAA,KAAA,CAAM,GAAG,CACtC,CAAA,OAAO,CAAE,GAAAC,CAAAA,CAAAA,CAAK,MAAAJ,CAAM,CACtB,CAAC,CACA,CAAA,MAAA,CAAQK,GAAMA,CAAC,CAAA,CARC,EASrB,CACF,CCvBO,CAAA,IAAMC,EAAwB,CACnC,SAAA,CAAUN,EAAoB,CAC5B,OAAOA,EAAM,QAAS,EACxB,EACA,KAAMA,CAAAA,CAAAA,CAAe,CACnB,OAAO,MAAA,CAAOA,CAAK,CACrB,CACF,ECPO,IAAMO,CAAAA,CAA6B,CACxC,SAAUV,CAAAA,CAAAA,CAAgB,CACxB,OAAO,IAAA,CAAK,UAAUA,CAAC,CACzB,EACA,KAAMA,CAAAA,CAAAA,CAAW,CACf,GAAI,CACF,OAAO,IAAK,CAAA,KAAA,CAAMA,CAAC,CAAK,EAAA,EAC1B,CAAA,MAASW,EAAO,CACd,OAAO,EACT,CACF,CACF,CCXO,CAAA,IAAMC,EAAwB,CACnC,SAAA,CAAUZ,EAAgB,CACxB,OAAO,KAAK,SAAUA,CAAAA,CAAC,CACzB,CACA,CAAA,KAAA,CAAMG,CAAe,CAAA,CACnB,OAAO,OAAOA,CAAAA,EAAU,SAAW,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAI,CAAA,EACzD,CACF,CAAA,CCPO,IAAMU,CAAQ,CAAA,CACnB,MAAO,OACP,CAAA,aAAA,CAAe,gBACf,WAAa,CAAA,aAAA,CACb,OAAS,CAAA,SAAA,CACT,OAAQ,QACR,CAAA,MAAA,CAAQ,SACR,MAAQ,CAAA,QAAA,CACR,OAAQ,QACV,CAAA,CAGaC,EAAN,MAAMC,CAAmB,CAE9B,WAAYC,CAAAA,CAAAA,CAA6B,CACvC,IAAK,CAAA,MAAA,CAASA,EAChB,CACA,KAAA,CAAMC,EAA0B,CAC9B,OAAOF,EAAmB,KAAME,CAAAA,CAAAA,CAAK,KAAK,MAAM,CAClD,CAEA,OAAO,KAAA,CAAMA,EAA0BD,CAA6B,CAAA,CAClE,IAAME,CAA4B,CAAA,GAClC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACV,EAAKJ,CAAK,CAAA,GAAM,CAC5C,IAAMgB,CAAAA,CAAOH,EAAOT,CAAG,CAAA,CACnB,OAAOJ,CAAU,EAAA,QAAA,CACnBe,EAAKX,CAAG,CAAA,CAAIQ,EAAmB,KAAMZ,CAAAA,CAAAA,CAAOgB,CAAI,CAEhDD,CAAAA,CAAAA,CAAKX,CAAG,CAAA,CAAIQ,EAAmB,gBAAiBZ,CAAAA,CAAAA,CAAiBgB,CAAI,EAEzE,CAAC,EACMD,CACT,CACA,OAAe,gBAAiBf,CAAAA,CAAAA,CAAegB,EAAc,CAC3D,GAAIhB,IAAU,WAGd,CAAA,OAAIgB,IAASN,CAAM,CAAA,aAAA,CACVT,CAAkB,CAAA,KAAA,CAAMD,CAAK,CAElCgB,CAAAA,CAAAA,GAASN,EAAM,WACVH,CAAAA,CAAAA,CAAgB,MAAMP,CAAK,CAAA,CAEhCgB,IAASN,CAAM,CAAA,KAAA,CACVd,EAAU,KAAMI,CAAAA,CAAK,EAE1BgB,CAASN,GAAAA,CAAAA,CAAM,OACVD,CAAW,CAAA,KAAA,CAAMT,CAAK,CAE3BgB,CAAAA,CAAAA,GAASN,EAAM,MACVJ,CAAAA,CAAAA,CAAW,MAAMN,CAAK,CAAA,CAE3BgB,IAASN,CAAM,CAAA,OAAA,CACVX,EAAY,KAAMC,CAAAA,CAAK,EAEzBA,CACT,CACA,OAAO,SAAUc,CAAAA,CAAAA,CAA0B,CACzC,IAAMC,CAAAA,CAA4B,EAAC,CACnC,cAAO,OAAQD,CAAAA,CAAG,EAAE,OAAQ,CAAA,CAAC,CAACV,CAAKJ,CAAAA,CAAK,IAAM,CAC5Ce,CAAAA,CAAKX,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,eAAeZ,CAAK,EACrD,CAAC,CACMe,CAAAA,CACT,CAEA,OAAe,eAAef,CAAY,CAAA,CACxC,GAAI,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAG,CAAA,CACxB,IAAMiB,CAAQjB,CAAAA,CAAAA,CAAM,CAAC,CAErB,CAAA,OAAI,OAAOiB,CAAU,EAAA,QAAA,CACK,KAAK,gBAAiBA,CAAAA,CAAK,CAE1ChB,CAAAA,CAAAA,CAAkB,UAAUD,CAAK,CAAA,CAEnCO,EAAgB,SAAUP,CAAAA,CAAK,EAEjCJ,CAAU,CAAA,SAAA,CAAUI,CAAK,CAClC,CACA,OAAI,OAAOA,CAAAA,EAAU,SACZY,CAAmB,CAAA,SAAA,CAAUZ,CAAK,CAEpC,CAAA,EAAA,CAAKA,CACd,CACA,OAAe,gBAAiBc,CAAAA,CAAAA,CAAU,CACxC,IAAMI,CAAAA,CAAO,OAAO,IAAKJ,CAAAA,CAAG,EAC5B,OAAOI,CAAAA,CAAK,CAAC,CAAM,GAAA,KAAA,EAASA,EAAK,CAAC,CAAA,GAAM,OAC1C,CACF,CAAA,CCvFA,GAAM,CAAE,MAAAC,CAAM,CAAA,CAAIC,EAeIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,WAAA,CAAYC,EAAmC,CAE7C,IAAA,CAAK,QAAUH,CAAM,CAAA,GAAIE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CAAA,CACjE,KAAK,IAAK,GACZ,CAGF,CApBsBD,CAAAA,CAAAA,CACJ,gBAAkC,CAChD,OAAA,CAAS,OACT,OAAS,CAAA,EAAA,CACT,YAAa,EACb,CAAA,IAAA,CAAM,OACN,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EACb,CAAA,YAAA,CAAc,EAChB,CAAA,CAVK,IAAeE,CAAfF,CAAAA,CAAAA,KRUMG,EAAN,cAA6BD,CAAgB,CAGlD,UAAa,EAAA,CACX,IAAME,CAA0Bd,CAAAA,CAAAA,CAAmB,UAAU,IAAK,CAAA,OAAA,CAAQ,cAAc,CAElFe,CAAAA,CAAAA,CAAoCC,WAAW,CACnD,SAAA,CAAW,IACX,IAAMF,CAAAA,CACR,CAAC,CACKG,CAAAA,CAAAA,CAAwBC,SAAS,CACrC,SAAA,CAAW,GACX,CAAA,IAAA,CAAM,KAAK,OAAQ,CAAA,WACrB,CAAC,CACKC,CAAAA,CAAAA,CAAyBD,SAAS,CACtC,SAAA,CAAW,IACX,IAAM,CAAA,IAAA,CAAK,QAAQ,YACrB,CAAC,EACD,OAAOH,CAAAA,CAAkC,IAAI,CAAC,CAAE,GAAAtB,CAAAA,CAAAA,CAAK,MAAAJ,CAAM,CAAA,IAClD,CACL,GAAKI,CAAAA,CAAAA,CACL,aAAcJ,CACd,CAAA,IAAA,CAAM4B,EAAsBxB,CAAG,CAAA,CAC/B,MAAO0B,CAAuB1B,CAAAA,CAAG,CACnC,CACD,CAAA,CACH,CACA,IAAO,EAAA,CACL,IAAMkB,CAAAA,CAAU,KAAK,UAAW,EAAA,CAGhC,KAAK,aAAgB,CAAA,IAAYS,EAAA,IAC/B,CAAA,IAAA,CAAA,WAAA,CAAA,IAAMC,EAA8B,EAAC,CACrC,OAAW,CAAE,GAAA,CAAA5B,EAAK,YAAA6B,CAAAA,CAAAA,CAAc,KAAAjB,CAAM,CAAA,KAAA,CAAAkB,CAAM,CAAKZ,GAAAA,CAAAA,CAC1CN,GAGAkB,CAGLF,GAAAA,CAAAA,CAAO5B,CAAG,CAAK,CAAA,CAAA,MAAM,KAAK,eAAgB,CAAA,CAAE,KAAAY,CAAM,CAAA,OAAA,CAASkB,EAAO,OAASD,CAAAA,CAAa,CAAC,CAAMA,GAAAA,CAAAA,CAAAA,CAEjG,OAAOD,CACT,CAAA,CAAA,CAEI,IAAK,CAAA,OAAA,CAAQ,UACf,IAAK,CAAA,OAAA,CAAU,KAAK,OAAQ,CAAA,OAAA,CAAQ,QAAQ,SAAS,CAAA,EAEzD,CACc,eAAgBV,CAAAA,CAAAA,CAAiC,QAAAS,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,KACnCI,CAAAb,CAAAA,CAAAA,CAATc,CAAAA,CAAAC,EAASF,CAAT,CAAA,CAAT,SACR,OAAO,MAAMG,MAAMF,CAAI,CACzB,GACc,aAAcG,CAAAA,CAAAA,CAAgB,QAAAR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1C,IAAMT,CAAU,CAAA,MAAM,KAAK,aAAc,EAAA,CACnCkB,CAAmBC,CAAAA,UAAAA,CAAW,CAAE,SAAW,CAAA,GAAA,CAAK,KAAMnB,CAAQ,CAAC,EAC/DoB,CAAe/B,CAAAA,CAAAA,CAAmB,MAAM6B,CAAkB,CAAA,IAAA,CAAK,QAAQ,WAAW,CAAA,CACxFD,EAAOG,CAAY,EACrB,GACM,KAAMH,CAAAA,CAAAA,CAAgB,QAAAR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1B,GAAI,IAAK,CAAA,OAAA,CAAS,CAChB,IAAK,CAAA,OAAA,CAAQ,OAAO,IAAM,IAAA,CAAK,cAAcQ,CAAM,CAAC,EACpD,MACF,CACA,KAAK,aAAcA,CAAAA,CAAM,EAC3B,CACF,CAAA,CAAA","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 { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(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 = OptionsTransformer.parse(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","import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\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};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport 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;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, 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] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(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 return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === '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 logo?: 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 logo: undefined,\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"]}
|
@@ -9,7 +9,7 @@ var n__default = /*#__PURE__*/_interopDefault(n);
|
|
9
9
|
/**
|
10
10
|
@tikkhun/cli-core
|
11
11
|
*/
|
12
|
-
var{merge:s}=n__default.default,o=class o{constructor(i){this.options=s({},o.DEFAULT_OPTIONS,i),this.init();}};o.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var t=o;
|
12
|
+
var{merge:s}=n__default.default,o=class o{constructor(i){this.options=s({},o.DEFAULT_OPTIONS,i),this.init();}};o.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var t=o;
|
13
13
|
|
14
14
|
exports.AbstractCommand = t;
|
15
15
|
//# sourceMappingURL=command.interface.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;;;;;;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAIC,CAAAA,kBAAAA,
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;;;;;;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAIC,CAAAA,kBAAAA,CAeIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,YAAYC,CAAmC,CAAA,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,CACjE,CAAA,IAAA,CAAK,IAAK,GACZ,CAGF,CApBsBD,CAAAA,CAAAA,CACJ,eAAkC,CAAA,CAChD,OAAS,CAAA,KAAA,CAAA,CACT,QAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,IAAA,CAAM,KACN,CAAA,CAAA,cAAA,CAAgB,EAChB,CAAA,cAAA,CAAgB,EAAC,CACjB,WAAa,CAAA,EACb,CAAA,YAAA,CAAc,EAChB,CAVK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.js","sourcesContent":["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 logo?: 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 logo: undefined,\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"]}
|