@tikkhun/cli-core 0.0.17 → 0.0.19

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.
Files changed (75) hide show
  1. package/dist/CommandManager.d.mts +1 -0
  2. package/dist/CommandManager.d.ts +1 -0
  3. package/dist/CommandManager.js +2 -22
  4. package/dist/CommandManager.js.map +1 -1
  5. package/dist/CommandManager.mjs +2 -13
  6. package/dist/CommandManager.mjs.map +1 -1
  7. package/dist/Info.js +2 -10
  8. package/dist/Info.js.map +1 -1
  9. package/dist/Info.mjs +2 -7
  10. package/dist/Info.mjs.map +1 -1
  11. package/dist/command/ArgsCommand.js +2 -15
  12. package/dist/command/ArgsCommand.js.map +1 -1
  13. package/dist/command/ArgsCommand.mjs +2 -9
  14. package/dist/command/ArgsCommand.mjs.map +1 -1
  15. package/dist/command/ConfigCommand.js +2 -18
  16. package/dist/command/ConfigCommand.js.map +1 -1
  17. package/dist/command/ConfigCommand.mjs +2 -11
  18. package/dist/command/ConfigCommand.mjs.map +1 -1
  19. package/dist/command/PromptsCommand.d.mts +1 -1
  20. package/dist/command/PromptsCommand.d.ts +1 -1
  21. package/dist/command/PromptsCommand.js +2 -15
  22. package/dist/command/PromptsCommand.js.map +1 -1
  23. package/dist/command/PromptsCommand.mjs +2 -9
  24. package/dist/command/PromptsCommand.mjs.map +1 -1
  25. package/dist/command/command.interface.d.mts +1 -0
  26. package/dist/command/command.interface.d.ts +1 -0
  27. package/dist/command/command.interface.js +2 -13
  28. package/dist/command/command.interface.js.map +1 -1
  29. package/dist/command/command.interface.mjs +2 -7
  30. package/dist/command/command.interface.mjs.map +1 -1
  31. package/dist/command/index.js +2 -23
  32. package/dist/command/index.js.map +1 -1
  33. package/dist/command/index.mjs +2 -13
  34. package/dist/command/index.mjs.map +1 -1
  35. package/dist/command/utils.js +1 -3
  36. package/dist/command/utils.mjs +0 -1
  37. package/dist/index.js +2 -38
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +2 -13
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/options-transformer/index.js +2 -16
  42. package/dist/options-transformer/index.js.map +1 -1
  43. package/dist/options-transformer/index.mjs +1 -4
  44. package/dist/options-transformer/index.mjs.map +1 -1
  45. package/dist/options-transformer/options-transformer.js +2 -8
  46. package/dist/options-transformer/options-transformer.js.map +1 -1
  47. package/dist/options-transformer/options-transformer.mjs +1 -4
  48. package/dist/options-transformer/options-transformer.mjs.map +1 -1
  49. package/dist/options-transformer/paramTypes/array.type.js +2 -7
  50. package/dist/options-transformer/paramTypes/array.type.js.map +1 -1
  51. package/dist/options-transformer/paramTypes/array.type.mjs +1 -4
  52. package/dist/options-transformer/paramTypes/boolean.type.js +2 -9
  53. package/dist/options-transformer/paramTypes/boolean.type.js.map +1 -1
  54. package/dist/options-transformer/paramTypes/boolean.type.mjs +1 -4
  55. package/dist/options-transformer/paramTypes/boolean.type.mjs.map +1 -1
  56. package/dist/options-transformer/paramTypes/index.js +2 -14
  57. package/dist/options-transformer/paramTypes/index.js.map +1 -1
  58. package/dist/options-transformer/paramTypes/index.mjs +1 -4
  59. package/dist/options-transformer/paramTypes/index.mjs.map +1 -1
  60. package/dist/options-transformer/paramTypes/key-value-array.type.js +2 -7
  61. package/dist/options-transformer/paramTypes/key-value-array.type.js.map +1 -1
  62. package/dist/options-transformer/paramTypes/key-value-array.type.mjs +1 -4
  63. package/dist/options-transformer/paramTypes/key-value-array.type.mjs.map +1 -1
  64. package/dist/options-transformer/paramTypes/number.type.js +2 -7
  65. package/dist/options-transformer/paramTypes/number.type.js.map +1 -1
  66. package/dist/options-transformer/paramTypes/number.type.mjs +1 -4
  67. package/dist/options-transformer/paramTypes/object-array.type.js +2 -7
  68. package/dist/options-transformer/paramTypes/object-array.type.js.map +1 -1
  69. package/dist/options-transformer/paramTypes/object-array.type.mjs +1 -4
  70. package/dist/options-transformer/paramTypes/object.type.js +2 -7
  71. package/dist/options-transformer/paramTypes/object.type.js.map +1 -1
  72. package/dist/options-transformer/paramTypes/object.type.mjs +1 -4
  73. package/dist/options-transformer/paramTypes/param-type.interface.js +1 -3
  74. package/dist/options-transformer/paramTypes/param-type.interface.mjs +0 -1
  75. package/package.json +11 -11
@@ -1 +1 @@
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
+ {"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 action?: Action;\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,5 @@
1
- import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
2
- import O from 'lodash';
3
- import { createCommand } from 'commander';
4
-
5
- /**
1
+ import {jsonToList,flatJson,unflatJson}from'@tikkhun/utils-core';import O from'lodash';import {createCommand}from'commander';/**
6
2
  @tikkhun/cli-core
7
3
  */
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
-
10
- export { T as ArgsCommand };
11
- //# sourceMappingURL=ArgsCommand.mjs.map
4
+ var c={stringify(t){return t!=null&&t.length?t.toString():""},parse(t){return t.split(",")}};var b=["true",true,"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"},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);}};export{T as ArgsCommand};//# sourceMappingURL=ArgsCommand.mjs.map
12
5
  //# sourceMappingURL=ArgsCommand.mjs.map
@@ -1 +1 @@
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"]}
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":";;;AAMO,IAAMA,CAAuB,CAAA,CAElC,UAAUC,CAAgB,CAAA,CACxB,OAAKA,CAAA,EAAA,IAAA,EAAAA,EAAG,MAGDA,CAAAA,CAAAA,CAAE,QAAS,EAAA,CAFT,EAGX,CACA,CAAA,KAAA,CAAMA,EAAW,CACf,OAAOA,EAAE,KAAM,CAAA,GAAG,CACpB,CACF,EChBO,IAAMC,CAAAA,CAAe,CAAC,MAAQ,CAAA,IAAA,CAAM,IAAK,CAAC,CAAA,CAE1C,IAAMC,CAAAA,CAAyB,CACpC,SAAUC,CAAAA,CAAAA,CAAwB,CAChC,OAAOA,CAAAA,CAAM,UACf,CAAA,CACA,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,CAAE,CAAA,GAAA,CAAKK,GAAuB,CAAGA,EAAAA,CAAAA,EAAA,YAAAA,CAAM,CAAA,GAAG,IAAIA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAM,CAAA,KAAK,EAAE,CAAE,CAAA,IAAA,CAAK,GAAG,CAFnE,CAAA,EAGX,EACA,KAAMF,CAAAA,CAAAA,CAAe,CACnB,OAAKA,EACEA,CACJ,CAAA,KAAA,CAAM,GAAG,CACT,CAAA,GAAA,CAAKG,GAAY,CAChB,GAAI,CAACA,CAAAA,CAAS,OACd,GAAM,CAACC,EAAKJ,CAAK,CAAA,CAAIG,EAAQ,KAAM,CAAA,GAAG,CACtC,CAAA,OAAO,CAAE,GAAAC,CAAAA,CAAAA,CAAK,MAAAJ,CAAM,CACtB,CAAC,CACA,CAAA,MAAA,CAAQK,CAAMA,EAAAA,CAAC,EARC,EASrB,CACF,CCvBO,CAAA,IAAMC,EAAwB,CACnC,SAAA,CAAUN,CAAoB,CAAA,CAC5B,OAAOA,CAAM,CAAA,QAAA,EACf,CACA,CAAA,KAAA,CAAMA,EAAe,CACnB,OAAO,MAAOA,CAAAA,CAAK,CACrB,CACF,CAAA,CCPO,IAAMO,CAA6B,CAAA,CACxC,UAAUV,CAAgB,CAAA,CACxB,OAAO,IAAA,CAAK,UAAUA,CAAC,CACzB,EACA,KAAMA,CAAAA,CAAAA,CAAW,CACf,GAAI,CACF,OAAO,IAAA,CAAK,MAAMA,CAAC,CAAA,EAAK,EAC1B,OAASW,CAAO,CAAA,CACd,OAAO,EACT,CACF,CACF,ECXO,IAAMC,CAAAA,CAAwB,CACnC,SAAUZ,CAAAA,CAAAA,CAAgB,CACxB,OAAO,KAAK,SAAUA,CAAAA,CAAC,CACzB,CACA,CAAA,KAAA,CAAMG,EAAe,CACnB,OAAO,OAAOA,CAAAA,EAAU,SAAW,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAI,CAAA,EACzD,CACF,CAAA,CCPO,IAAMU,CAAAA,CAAQ,CACnB,KAAO,CAAA,OAAA,CACP,cAAe,eACf,CAAA,WAAA,CAAa,cACb,OAAS,CAAA,SAAA,CACT,MAAQ,CAAA,QAAA,CACR,OAAQ,QAGV,EAGaC,CAAN,CAAA,MAAMC,CAAmB,CAE9B,YAAYC,CAA6B,CAAA,CACvC,KAAK,MAASA,CAAAA,EAChB,CACA,KAAMC,CAAAA,CAAAA,CAA0B,CAC9B,OAAOF,EAAmB,KAAME,CAAAA,CAAAA,CAAK,KAAK,MAAM,CAClD,CAEA,OAAO,KAAA,CAAMA,CAA0BD,CAAAA,CAAAA,CAA6B,CAClE,IAAME,CAAAA,CAA4B,EAClC,CAAA,OAAA,MAAA,CAAO,QAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACV,CAAKJ,CAAAA,CAAK,IAAM,CAC5C,IAAMgB,EAAOH,CAAOT,CAAAA,CAAG,CACnB,CAAA,OAAOJ,GAAU,QACnBe,CAAAA,CAAAA,CAAKX,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,MAAMZ,CAAOgB,CAAAA,CAAI,CAEhDD,CAAAA,CAAAA,CAAKX,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,iBAAiBZ,CAAiBgB,CAAAA,CAAI,EAEzE,CAAC,CAAA,CACMD,CACT,CACA,OAAe,gBAAiBf,CAAAA,CAAAA,CAAegB,EAAc,CAC3D,GAAIhB,IAAU,WAGd,CAAA,OAAIgB,CAASN,GAAAA,CAAAA,CAAM,cACVT,CAAkB,CAAA,KAAA,CAAMD,CAAK,CAElCgB,CAAAA,CAAAA,GAASN,EAAM,WACVH,CAAAA,CAAAA,CAAgB,KAAMP,CAAAA,CAAK,EAEhCgB,CAASN,GAAAA,CAAAA,CAAM,MACVd,CAAU,CAAA,KAAA,CAAMI,CAAK,CAE1BgB,CAAAA,CAAAA,GAASN,CAAM,CAAA,MAAA,CACVD,EAAW,KAAMT,CAAAA,CAAK,EAE3BgB,CAASN,GAAAA,CAAAA,CAAM,OACVJ,CAAW,CAAA,KAAA,CAAMN,CAAK,CAAA,CAE3BgB,IAASN,CAAM,CAAA,OAAA,CACVX,CAAY,CAAA,KAAA,CAAMC,CAAK,CAEzBA,CAAAA,CACT,CACA,OAAO,UAAUc,CAA0B,CAAA,CACzC,IAAMC,CAA4B,CAAA,GAClC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAA,CAAE,QAAQ,CAAC,CAACV,EAAKJ,CAAK,CAAA,GAAM,CAC5Ce,CAAKX,CAAAA,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,eAAeZ,CAAK,EACrD,CAAC,CACMe,CAAAA,CACT,CAEA,OAAe,cAAA,CAAef,CAAY,CAAA,CACxC,GAAI,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAG,CAAA,CACxB,IAAMiB,CAAQjB,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAErB,OAAI,OAAOiB,CAAAA,EAAU,SACK,IAAK,CAAA,gBAAA,CAAiBA,CAAK,CAE1ChB,CAAAA,CAAAA,CAAkB,SAAUD,CAAAA,CAAK,EAEnCO,CAAgB,CAAA,SAAA,CAAUP,CAAK,CAEjCJ,CAAAA,CAAAA,CAAU,UAAUI,CAAK,CAClC,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZY,EAAmB,SAAUZ,CAAAA,CAAK,EAEpC,EAAKA,CAAAA,CACd,CACA,OAAe,iBAAiBc,CAAU,CAAA,CACxC,IAAMI,CAAO,CAAA,MAAA,CAAO,KAAKJ,CAAG,CAAA,CAC5B,OAAOI,CAAAA,CAAK,CAAC,CAAM,GAAA,KAAA,EAASA,EAAK,CAAC,CAAA,GAAM,OAC1C,CACF,CAAA,CCvFA,GAAM,CAAE,MAAAC,CAAM,CAAA,CAAIC,EAgBIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,YAAYC,CAAmC,CAAA,CAE7C,KAAK,OAAUH,CAAAA,CAAAA,CAAM,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,EACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CApBsBD,EACJ,eAAkC,CAAA,CAChD,OAAS,CAAA,MAAA,CACT,QAAS,EACT,CAAA,WAAA,CAAa,GACb,IAAM,CAAA,MAAA,CACN,eAAgB,EAAC,CACjB,cAAgB,CAAA,GAChB,WAAa,CAAA,GACb,YAAc,CAAA,EAChB,CAVK,CAAA,IAAeE,CAAfF,CAAAA,CAAAA,CCbD,IAAA,CAAE,GAAAG,CAAAA,CAAI,EAAIJ,CAMHK,CAAAA,CAAAA,CAAN,cAA0BF,CAAgB,CAE/C,YAA2B,CACzB,IAAMG,CAAgBf,CAAAA,CAAAA,CAAmB,UAAU,IAAK,CAAA,OAAA,CAAQ,cAAc,CACxEgB,CAAAA,CAAAA,CAAaC,WAAW,CAAE,SAAA,CAAW,GAAK,CAAA,IAAA,CAAMF,CAAc,CAAC,CAAA,CAE/DG,EAAgBC,QAAS,CAAA,CAAE,UAAW,GAAK,CAAA,IAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,WAAY,CAAC,CAAA,CACjF,OAAOH,CACJ,CAAA,MAAA,CAAO,CAAC,CAAE,GAAA,CAAAvB,CAAI,CAAA,GAET,MAAK,OAAQ,CAAA,cAAA,CAAe,SAASA,CAAG,CAI7C,EACA,GAAI,CAAA,CAAC,CAAE,GAAA,CAAAA,EAAK,KAAAJ,CAAAA,CAAM,KACV,CAAE,GAAA,CAAAI,EAAK,KAAAJ,CAAAA,CAAAA,CAAO,IAAM6B,CAAAA,CAAAA,CAAczB,CAAG,CAAE,CAAA,CAC/C,CACL,CACA,IAAA,EAAa,CACX,IAAK,CAAA,OAAA,CAAU,IAAK,CAAA,OAAA,CAAQ,SAAW2B,aAAc,EAAA,CACrD,IAAMT,CAAU,CAAA,IAAA,CAAK,YACrB,CAAA,IAAA,CAAK,UAAWA,CAAAA,CAAO,EACzB,CACQ,UAAA,CAAWA,EAAuB,CACxCA,CAAAA,CAAQ,QAAQ,CAAC,CAAE,GAAAlB,CAAAA,CAAAA,CAAK,MAAAJ,CAAO,CAAA,IAAA,CAAAgB,CAAK,CAAM,GAAA,CACxC,KAAK,OAAS,CAAA,MAAA,CAAO,CAAKZ,EAAAA,EAAAA,CAAG,KAAKY,CAAI,CAAA,CAAA,CAAA,CAAKQ,EAAI,IAAK,CAAA,OAAA,CAAQ,aAAcpB,CAAG,CAAA,CAAGJ,CAAK,EACvF,CAAC,EACH,CACQ,UAAUgC,CAAgB,CAAA,CAChC,KAAK,OAAS,CAAA,MAAA,CAAQN,CAAkB,EAAA,CAEtC,IAAMO,CAAcC,CAAAA,UAAAA,CAAW,CAC7B,SAAW,CAAA,GAAA,CACX,KAAMR,CACR,CAAC,CACKS,CAAAA,CAAAA,CAAexB,EAAmB,KAAMsB,CAAAA,CAAAA,CAAa,KAAK,OAAQ,CAAA,WAAW,EACnFD,CAAOG,CAAAA,CAAY,EACrB,CAAC,EACH,CACA,KAAA,CAAMH,EAAgB,CACpB,IAAA,CAAK,UAAUA,CAAM,CAAA,CAEhB,IAAK,CAAA,OAAA,CAAQ,SAChB,IAAK,CAAA,OAAA,CAAS,MAAM,OAAQ,CAAA,IAAI,EAEpC,CACF","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 action?: Action;\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,21 +1,5 @@
1
- 'use strict';
2
-
3
- var commander = require('commander');
4
- var v = require('fs-extra');
5
- var path = require('path');
6
- var O = require('lodash');
7
- var logger = require('@tikkhun/logger');
8
-
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
-
11
- var v__default = /*#__PURE__*/_interopDefault(v);
12
- var O__default = /*#__PURE__*/_interopDefault(O);
13
-
14
- /**
1
+ 'use strict';var commander=require('commander'),v=require('fs-extra'),path=require('path'),O=require('lodash'),logger=require('@tikkhun/logger');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var v__default=/*#__PURE__*/_interopDefault(v);var O__default=/*#__PURE__*/_interopDefault(O);/**
15
2
  @tikkhun/cli-core
16
3
  */
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
-
19
- exports.ConfigCommand = g;
20
- //# sourceMappingURL=ConfigCommand.js.map
4
+ 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:A}=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 A(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;exports.ConfigCommand=g;//# sourceMappingURL=ConfigCommand.js.map
21
5
  //# 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":"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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"]}
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 action?: Action;\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"]}
@@ -1,14 +1,5 @@
1
- import { createCommand } from 'commander';
2
- import v from 'fs-extra';
3
- import { join } from 'path';
4
- import O from 'lodash';
5
- import { Logger } from '@tikkhun/logger';
6
-
7
- /**
1
+ import {createCommand}from'commander';import v from'fs-extra';import {join}from'path';import O from'lodash';import {Logger}from'@tikkhun/logger';/**
8
2
  @tikkhun/cli-core
9
3
  */
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
-
12
- export { g as ConfigCommand };
13
- //# sourceMappingURL=ConfigCommand.mjs.map
4
+ 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:A}=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 A(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;export{g as ConfigCommand};//# sourceMappingURL=ConfigCommand.mjs.map
14
5
  //# 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,CAeIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,WAAYC,CAAAA,CAAAA,CAAmC,CAE7C,IAAA,CAAK,OAAUH,CAAAA,CAAAA,CAAM,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,CACjE,CAAA,IAAA,CAAK,IAAK,GACZ,CAGF,CAAA,CApBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAA,CAAS,KACT,CAAA,CAAA,OAAA,CAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,IAAA,CAAM,KACN,CAAA,CAAA,cAAA,CAAgB,EAAC,CACjB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CAVK,CAAA,IAAeE,CAAfF,CAAAA,CAAAA,CCfP,GAAM,CAAE,QAAAG,CAAAA,CAAAA,CAAU,SAAAC,CAAAA,CAAU,CAAIC,CAAAA,CAAAA,CAInBC,CAAN,CAAA,MAAMA,CAAsBJ,SAAAA,CAAgB,CAGjD,IAAA,EAAa,CATf,IAAAK,CAAAC,CAAAA,CAAAA,CAWI,IAAK,CAAA,OAAA,CAAA,CAAA,CAAUD,CAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,GAAb,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAsB,OAAQ,CAAA,QAAA,CAAA,GAAaE,aAAc,EAAA,CAAA,CAExED,CAAA,CAAA,IAAA,CAAK,OAAL,GAAA,IAAA,EAAAA,CACI,CAAA,OAAA,CAAQ,MACT,CAAA,CAAA,MAAA,CAAO,oBAAsB,CAAA,sCAAA,CAAUF,CAAc,CAAA,iBAAA,CAAA,CACrD,MAAcL,CAAAA,CAAAA,EAAYS,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACzB,GAAI,CAAE,IAAAC,CAAAA,CAAK,CAAIV,CAAAA,CAAAA,CACVU,IACHA,CAAOL,CAAAA,CAAAA,CAAc,iBAEvBM,CAAAA,CAAAA,MAAAA,CAAO,GAAI,CAAA,kEAAA,CAAmBD,CAAI,CAAA,CAClC,MAAMP,CAAAA,CAAUO,CAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,cAAA,CAAgB,CAAE,MAAA,CAAQ,CAAE,CAAC,CAChEC,CAAAA,MAAAA,CAAO,GAAI,CAAA,kEAAA,CAAmBD,CAAI,EACpC,CACF,CAAA,CAAA,CAAA,IAAA,CAAK,UAAW,GAClB,CACQ,UAAA,EAAa,CA3BvB,IAAAJ,CA4BIA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,OAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAc,MAAO,CAAA,sBAAA,CAAwB,0BAAQD,CAAAA,CAAAA,CAAc,iBACrE,EAAA,CACQ,SAAUO,CAAAA,CAAAA,CAAgB,CAChC,IAAA,CAAK,OAAS,CAAA,MAAA,CAAcC,CAAoBJ,EAAAA,CAAAA,CAAA,IAApBI,CAAAA,CAAAA,CAAAA,CAAAA,CAAoB,UAApB,CAAE,MAAAC,CAAAA,CAAAA,CAAS,EAAG,CAAA,CAAM,CAC9C,IAAId,EAMJ,GALIc,CAAAA,CAAO,QAAS,CAAA,KAAK,CACvBd,CAAAA,CAAAA,CAAU,MAAM,OAAOc,CACdA,CAAAA,CAAAA,CAAAA,CAAO,QAAS,CAAA,OAAO,CAChCd,GAAAA,CAAAA,CAAU,MAAME,CAAAA,CAASY,CAAM,CAAA,CAAA,CAE7B,CAACd,CAAAA,CACH,MAAM,IAAI,KAAM,CAAA,CAAA,4DAAA,EAAac,CAAM,CAAA,CAAE,CAGvCF,CAAAA,CAAAA,CAAOZ,CAAO,EAChB,CAAC,CAAA,EACH,CACA,KAAA,CAAMY,CAAgB,CAAA,CACpB,IAAK,CAAA,SAAA,CAAUA,CAAM,CAAA,CAChB,IAAK,CAAA,OAAA,CAAQ,OAChB,EAAA,IAAA,CAAK,OAAS,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,EAEpC,CACF,CA7CaP,CAAAA,CAAAA,CACJ,iBAAoBU,CAAAA,IAAAA,CAAK,OAAQ,CAAA,GAAA,EAAO,CAAA,cAAc,CADxD,CAAA,IAAMC,CAANX,CAAAA","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"]}
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 action?: Action;\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"]}
@@ -14,7 +14,7 @@ declare class PromptsCommand extends AbstractCommand {
14
14
  init(): void;
15
15
  private getActionResult;
16
16
  private actionHandler;
17
- start(action: Action): Promise<void>;
17
+ start(action?: Action | undefined): Promise<void>;
18
18
  }
19
19
  interface GetActionResultOptions {
20
20
  type: TYPES;
@@ -14,7 +14,7 @@ declare class PromptsCommand extends AbstractCommand {
14
14
  init(): void;
15
15
  private getActionResult;
16
16
  private actionHandler;
17
- start(action: Action): Promise<void>;
17
+ start(action?: Action | undefined): Promise<void>;
18
18
  }
19
19
  interface GetActionResultOptions {
20
20
  type: TYPES;
@@ -1,18 +1,5 @@
1
- 'use strict';
2
-
3
- var prompts = require('@inquirer/prompts');
4
- var utilsCore = require('@tikkhun/utils-core');
5
- var k = require('lodash');
6
-
7
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
-
9
- var k__default = /*#__PURE__*/_interopDefault(k);
10
-
11
- /**
1
+ 'use strict';var prompts=require('@inquirer/prompts'),utilsCore=require('@tikkhun/utils-core'),k=require('lodash');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var k__default=/*#__PURE__*/_interopDefault(k);/**
12
2
  @tikkhun/cli-core
13
3
  */
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
-
16
- exports.PromptsCommand = V;
17
- //# sourceMappingURL=PromptsCommand.js.map
4
+ 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",true,"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"},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 {get:st}=k__default.default,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,{type:e}=o,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(){return y(this,arguments,function*(t=this.options.action){if(!t)throw new Error("action is undefined");if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};exports.PromptsCommand=V;//# sourceMappingURL=PromptsCommand.js.map
18
5
  //# sourceMappingURL=PromptsCommand.js.map
@@ -1 +1 @@
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
+ {"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","get","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 | undefined = this.options.action) {\n if (!action) {\n throw new Error('action is undefined');\n }\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 action?: Action;\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,5 @@
1
- import { input } from '@inquirer/prompts';
2
- import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
3
- import k from 'lodash';
4
-
5
- /**
1
+ import {input}from'@inquirer/prompts';import {jsonToList,flatJson,unflatJson}from'@tikkhun/utils-core';import k from'lodash';/**
6
2
  @tikkhun/cli-core
7
3
  */
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
-
10
- export { V as PromptsCommand };
11
- //# sourceMappingURL=PromptsCommand.mjs.map
4
+ 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",true,"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"},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 {get:st}=k,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,{type:e}=o,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(){return y(this,arguments,function*(t=this.options.action){if(!t)throw new Error("action is undefined");if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};export{V as PromptsCommand};//# sourceMappingURL=PromptsCommand.mjs.map
12
5
  //# sourceMappingURL=PromptsCommand.mjs.map
@@ -1 +1 @@
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.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"]}
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","get","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 { 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 | undefined = this.options.action) {\n if (!action) {\n throw new Error('action is undefined');\n }\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 action?: Action;\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"]}
@@ -12,6 +12,7 @@ interface CommandOptions {
12
12
  excludeOptions: string[];
13
13
  optionTypes: Record<string, any>;
14
14
  optionTitles: Record<string, any>;
15
+ action?: Action;
15
16
  }
16
17
  declare abstract class AbstractCommand {
17
18
  static readonly DEFAULT_OPTIONS: CommandOptions;
@@ -12,6 +12,7 @@ interface CommandOptions {
12
12
  excludeOptions: string[];
13
13
  optionTypes: Record<string, any>;
14
14
  optionTitles: Record<string, any>;
15
+ action?: Action;
15
16
  }
16
17
  declare abstract class AbstractCommand {
17
18
  static readonly DEFAULT_OPTIONS: CommandOptions;