@tikkhun/cli-core 0.0.23 → 0.0.24

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 (89) hide show
  1. package/dist/CommandManager.d.mts +1 -1
  2. package/dist/CommandManager.d.ts +1 -1
  3. package/dist/CommandManager.js +2 -2
  4. package/dist/CommandManager.js.map +1 -1
  5. package/dist/CommandManager.mjs +2 -2
  6. package/dist/CommandManager.mjs.map +1 -1
  7. package/dist/command/ArgsCommand.js +2 -2
  8. package/dist/command/ArgsCommand.js.map +1 -1
  9. package/dist/command/ArgsCommand.mjs +2 -2
  10. package/dist/command/ArgsCommand.mjs.map +1 -1
  11. package/dist/command/PromptsCommand.d.mts +1 -1
  12. package/dist/command/PromptsCommand.d.ts +1 -1
  13. package/dist/command/PromptsCommand.js +2 -2
  14. package/dist/command/PromptsCommand.js.map +1 -1
  15. package/dist/command/PromptsCommand.mjs +2 -2
  16. package/dist/command/PromptsCommand.mjs.map +1 -1
  17. package/dist/command/index.d.mts +1 -1
  18. package/dist/command/index.d.ts +1 -1
  19. package/dist/command/index.js +2 -2
  20. package/dist/command/index.js.map +1 -1
  21. package/dist/command/index.mjs +2 -2
  22. package/dist/command/index.mjs.map +1 -1
  23. package/dist/index.d.mts +1 -8
  24. package/dist/index.d.ts +1 -8
  25. package/dist/index.js +2 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +2 -2
  28. package/dist/index.mjs.map +1 -1
  29. package/package.json +4 -3
  30. package/dist/options-transformer/index.d.mts +0 -8
  31. package/dist/options-transformer/index.d.ts +0 -8
  32. package/dist/options-transformer/index.js +0 -5
  33. package/dist/options-transformer/index.js.map +0 -1
  34. package/dist/options-transformer/index.mjs +0 -5
  35. package/dist/options-transformer/index.mjs.map +0 -1
  36. package/dist/options-transformer/options-transformer.d.mts +0 -23
  37. package/dist/options-transformer/options-transformer.d.ts +0 -23
  38. package/dist/options-transformer/options-transformer.js +0 -5
  39. package/dist/options-transformer/options-transformer.js.map +0 -1
  40. package/dist/options-transformer/options-transformer.mjs +0 -5
  41. package/dist/options-transformer/options-transformer.mjs.map +0 -1
  42. package/dist/options-transformer/paramTypes/array.type.d.mts +0 -9
  43. package/dist/options-transformer/paramTypes/array.type.d.ts +0 -9
  44. package/dist/options-transformer/paramTypes/array.type.js +0 -5
  45. package/dist/options-transformer/paramTypes/array.type.js.map +0 -1
  46. package/dist/options-transformer/paramTypes/array.type.mjs +0 -5
  47. package/dist/options-transformer/paramTypes/array.type.mjs.map +0 -1
  48. package/dist/options-transformer/paramTypes/boolean.type.d.mts +0 -7
  49. package/dist/options-transformer/paramTypes/boolean.type.d.ts +0 -7
  50. package/dist/options-transformer/paramTypes/boolean.type.js +0 -5
  51. package/dist/options-transformer/paramTypes/boolean.type.js.map +0 -1
  52. package/dist/options-transformer/paramTypes/boolean.type.mjs +0 -5
  53. package/dist/options-transformer/paramTypes/boolean.type.mjs.map +0 -1
  54. package/dist/options-transformer/paramTypes/index.d.mts +0 -7
  55. package/dist/options-transformer/paramTypes/index.d.ts +0 -7
  56. package/dist/options-transformer/paramTypes/index.js +0 -5
  57. package/dist/options-transformer/paramTypes/index.js.map +0 -1
  58. package/dist/options-transformer/paramTypes/index.mjs +0 -5
  59. package/dist/options-transformer/paramTypes/index.mjs.map +0 -1
  60. package/dist/options-transformer/paramTypes/key-value-array.type.d.mts +0 -5
  61. package/dist/options-transformer/paramTypes/key-value-array.type.d.ts +0 -5
  62. package/dist/options-transformer/paramTypes/key-value-array.type.js +0 -5
  63. package/dist/options-transformer/paramTypes/key-value-array.type.js.map +0 -1
  64. package/dist/options-transformer/paramTypes/key-value-array.type.mjs +0 -5
  65. package/dist/options-transformer/paramTypes/key-value-array.type.mjs.map +0 -1
  66. package/dist/options-transformer/paramTypes/number.type.d.mts +0 -5
  67. package/dist/options-transformer/paramTypes/number.type.d.ts +0 -5
  68. package/dist/options-transformer/paramTypes/number.type.js +0 -5
  69. package/dist/options-transformer/paramTypes/number.type.js.map +0 -1
  70. package/dist/options-transformer/paramTypes/number.type.mjs +0 -5
  71. package/dist/options-transformer/paramTypes/number.type.mjs.map +0 -1
  72. package/dist/options-transformer/paramTypes/object-array.type.d.mts +0 -5
  73. package/dist/options-transformer/paramTypes/object-array.type.d.ts +0 -5
  74. package/dist/options-transformer/paramTypes/object-array.type.js +0 -5
  75. package/dist/options-transformer/paramTypes/object-array.type.js.map +0 -1
  76. package/dist/options-transformer/paramTypes/object-array.type.mjs +0 -5
  77. package/dist/options-transformer/paramTypes/object-array.type.mjs.map +0 -1
  78. package/dist/options-transformer/paramTypes/object.type.d.mts +0 -5
  79. package/dist/options-transformer/paramTypes/object.type.d.ts +0 -5
  80. package/dist/options-transformer/paramTypes/object.type.js +0 -5
  81. package/dist/options-transformer/paramTypes/object.type.js.map +0 -1
  82. package/dist/options-transformer/paramTypes/object.type.mjs +0 -5
  83. package/dist/options-transformer/paramTypes/object.type.mjs.map +0 -1
  84. package/dist/options-transformer/paramTypes/param-type.interface.d.mts +0 -6
  85. package/dist/options-transformer/paramTypes/param-type.interface.d.ts +0 -6
  86. package/dist/options-transformer/paramTypes/param-type.interface.js +0 -2
  87. package/dist/options-transformer/paramTypes/param-type.interface.js.map +0 -1
  88. package/dist/options-transformer/paramTypes/param-type.interface.mjs +0 -2
  89. package/dist/options-transformer/paramTypes/param-type.interface.mjs.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/command/ArgsCommand.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","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["arrayType","v","asTrueValues","asFalseValues","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","nestedObjectToList","optionTypeMap","flatNestedObject","createCommand","action","jsonOptions","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":";;;AAAA,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,IAAA,CAAA,YAAA,CAAA,IAAA,CAAA,QAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CCMaA,IAAAA,CAAAA,CAAuB,CAElC,SAAA,CAAUC,EAAgB,CACxB,OAAKA,GAAA,IAAAA,EAAAA,CAAAA,CAAG,OAGDA,CAAE,CAAA,QAAA,EAFA,CAAA,EAGX,EACA,KAAMA,CAAAA,CAAAA,CAAW,CACf,OAAOA,CAAAA,CAAE,MAAM,GAAG,CACpB,CACF,MChBaC,CAAe,CAAA,CAAC,OAAQ,IAAM,CAAA,GAAA,CAAK,CAAC,CACpCC,CAAAA,EAAAA,CAAgB,CAAC,OAAA,CAAS,MAAO,EAAI,CAAA,CAAC,EACtCC,CAAyB,CAAA,CACpC,UAAUC,CAAwB,CAAA,CAChC,OAAOA,CAAAA,CAAM,UACf,CAAA,CACA,MAAMA,CAAe,CAAA,CACnB,OAAI,CAAAH,CAAAA,CAAAA,CAAa,QAASG,CAAAA,CAAK,CAEjC,CACF,MCLaC,CAA+B,CAAA,CAE1C,UAAUL,CAAgB,CAAA,CACxB,OAAKA,CAAA,EAAA,IAAA,EAAAA,EAAG,MAGDA,CAAAA,CAAAA,CAAE,IAAKM,CAAuB,EAAA,CAAA,EAAGA,GAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAM,GAAG,CAAA,CAAA,EAAIA,GAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAM,KAAK,CAAE,CAAA,CAAA,CAAE,KAAK,GAAG,CAAA,CAFnE,EAGX,CAAA,CACA,MAAMF,CAAe,CAAA,CACnB,OAAKA,CACEA,CAAAA,CAAAA,CACJ,MAAM,GAAG,CAAA,CACT,GAAKG,CAAAA,CAAAA,EAAY,CAChB,GAAI,CAACA,EAAS,OACd,GAAM,CAACC,CAAKJ,CAAAA,CAAK,CAAIG,CAAAA,CAAAA,CAAQ,MAAM,GAAG,CAAA,CACtC,OAAO,CAAE,GAAA,CAAAC,EAAK,KAAAJ,CAAAA,CAAM,CACtB,CAAC,EACA,MAAQK,CAAAA,CAAAA,EAAMA,CAAC,CARC,CAAA,EASrB,CACF,ECvBaC,IAAAA,CAAAA,CAAwB,CACnC,SAAUN,CAAAA,CAAAA,CAAoB,CAC5B,OAAOA,CAAAA,CAAM,UACf,CAAA,CACA,KAAMA,CAAAA,CAAAA,CAAe,CACnB,OAAO,MAAA,CAAOA,CAAK,CACrB,CACF,ECPaO,IAAAA,CAAAA,CAA6B,CACxC,SAAUX,CAAAA,CAAAA,CAAgB,CACxB,OAAO,IAAA,CAAK,UAAUA,CAAC,CACzB,EACA,KAAMA,CAAAA,CAAAA,CAAW,CACf,GAAI,CACF,OAAO,IAAA,CAAK,MAAMA,CAAC,CAAA,EAAK,EAC1B,CAAA,MAASY,CAAO,CAAA,CACd,OAAO,EACT,CACF,CACF,MCXaC,CAAwB,CAAA,CACnC,SAAUb,CAAAA,CAAAA,CAAgB,CACxB,OAAO,IAAA,CAAK,UAAUA,CAAC,CACzB,EACA,KAAMI,CAAAA,CAAAA,CAAe,CACnB,OAAO,OAAOA,CAAU,EAAA,QAAA,CAAW,KAAK,KAAMA,CAAAA,CAAK,EAAI,EACzD,CACF,MCPaU,CAAQ,CAAA,CACnB,MAAO,OACP,CAAA,aAAA,CAAe,gBACf,WAAa,CAAA,aAAA,CACb,OAAS,CAAA,SAAA,CACT,OAAQ,QACR,CAAA,MAAA,CAAQ,SACR,MAAQ,CAAA,QAAA,CACR,OAAQ,QACV,CAAA,CAGaC,CAAN,CAAA,MAAMC,CAAmB,CAE9B,WAAA,CAAYC,EAA6B,CACvC,IAAA,CAAK,OAASA,EAChB,CACA,MAAMC,CAA0B,CAAA,CAC9B,OAAOF,CAAmB,CAAA,KAAA,CAAME,EAAK,IAAK,CAAA,MAAM,CAClD,CAEA,OAAO,KAAMA,CAAAA,CAAAA,CAA0BD,EAA6B,CAClE,IAAME,EAA4B,EAAC,CACnC,cAAO,OAAQD,CAAAA,CAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACV,CAAAA,CAAKJ,CAAK,CAAM,GAAA,CAC5C,IAAMgB,CAAOH,CAAAA,CAAAA,CAAOT,CAAG,CAAA,CACnB,OAAOJ,CAAU,EAAA,QAAA,CACnBe,EAAKX,CAAG,CAAA,CAAIQ,EAAmB,KAAMZ,CAAAA,CAAAA,CAAOgB,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,MACVf,CAAU,CAAA,KAAA,CAAMK,CAAK,CAE1BgB,CAAAA,CAAAA,GAASN,EAAM,MACVD,CAAAA,CAAAA,CAAW,MAAMT,CAAK,CAAA,CAE3BgB,IAASN,CAAM,CAAA,MAAA,CACVJ,EAAW,KAAMN,CAAAA,CAAK,CAE3BgB,CAAAA,CAAAA,GAASN,EAAM,OACVX,CAAAA,CAAAA,CAAY,MAAMC,CAAK,CAAA,CAEzBA,CACT,CACA,OAAO,SAAUc,CAAAA,CAAAA,CAA0B,CACzC,IAAMC,CAAAA,CAA4B,EAClC,CAAA,OAAA,MAAA,CAAO,QAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACV,CAAKJ,CAAAA,CAAK,IAAM,CAC5Ce,CAAAA,CAAKX,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,cAAeZ,CAAAA,CAAK,EACrD,CAAC,CAAA,CACMe,CACT,CAEA,OAAe,eAAef,CAAY,CAAA,CACxC,GAAI,KAAA,CAAM,QAAQA,CAAK,CAAA,CAAG,CACxB,IAAMiB,CAAAA,CAAQjB,EAAM,CAAC,CAAA,CAErB,OAAI,OAAOiB,GAAU,QACK,CAAA,IAAA,CAAK,iBAAiBA,CAAK,CAAA,CAE1ChB,EAAkB,SAAUD,CAAAA,CAAK,CAEnCO,CAAAA,CAAAA,CAAgB,UAAUP,CAAK,CAAA,CAEjCL,EAAU,SAAUK,CAAAA,CAAK,CAClC,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZY,EAAmB,SAAUZ,CAAAA,CAAK,EAEpC,EAAKA,CAAAA,CACd,CACA,OAAe,gBAAA,CAAiBc,CAAU,CAAA,CACxC,IAAMI,CAAO,CAAA,MAAA,CAAO,KAAKJ,CAAG,CAAA,CAC5B,OAAOI,CAAK,CAAA,CAAC,CAAM,GAAA,KAAA,EAASA,EAAK,CAAC,CAAA,GAAM,OAC1C,CACF,ECvFA,GAAM,CAAE,MAAAC,CAAM,CAAA,CAAIC,mBAuBIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,WAAA,CAAYC,CAAmC,CAAA,CAE7C,KAAK,OAAUH,CAAAA,CAAAA,CAAM,EAAIE,CAAAA,CAAAA,CAAgB,gBAAiBC,CAAO,CAAA,CACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CApBsBD,EACJ,eAAkC,CAAA,CAChD,QAAS,MACT,CAAA,OAAA,CAAS,EACT,CAAA,WAAA,CAAa,GACb,IAAM,CAAA,MAAA,CACN,eAAgB,EAAC,CACjB,eAAgB,EAAC,CACjB,WAAa,CAAA,GACb,YAAc,CAAA,EAChB,CAVK,CAAA,IAAeE,EAAfF,MRpBD,CAAE,GAAA,CAAAG,CAAI,CAAIJ,CAAAA,kBAAAA,CAMHK,CAAN,CAAA,cAA0BF,CAAgB,CAE/C,UAAA,EAA2B,CACzB,IAAMG,CAAAA,CAAgBf,EAAmB,SAAU,CAAA,IAAA,CAAK,OAAQ,CAAA,cAAc,EACxEgB,CAAaC,CAAAA,4BAAAA,CAAmB,CAAE,SAAW,CAAA,GAAA,CAAK,KAAMF,CAAc,CAAC,CAEvEG,CAAAA,CAAAA,CAAgBC,2BAAiB,CAAE,SAAA,CAAW,IAAK,IAAM,CAAA,IAAA,CAAK,QAAQ,WAAY,CAAC,CACzF,CAAA,OAAOH,EACJ,MAAO,CAAA,CAAC,CAAE,GAAAvB,CAAAA,CAAI,IAET,CAAK,IAAA,CAAA,OAAA,CAAQ,cAAe,CAAA,QAAA,CAASA,CAAG,CAI7C,CAAA,CACA,IAAI,CAAC,CAAE,IAAAA,CAAK,CAAA,KAAA,CAAAJ,CAAM,CAAA,IACV,CAAE,GAAAI,CAAAA,CAAAA,CAAK,MAAAJ,CAAO,CAAA,IAAA,CAAM6B,EAAczB,CAAG,CAAE,CAC/C,CAAA,CACL,CACA,IAAa,EAAA,CACX,KAAK,OAAU,CAAA,IAAA,CAAK,QAAQ,OAAW2B,EAAAA,uBAAAA,GACvC,IAAMT,CAAAA,CAAU,KAAK,UAAW,EAAA,CAChC,KAAK,UAAWA,CAAAA,CAAO,EACzB,CACQ,UAAA,CAAWA,CAAuB,CAAA,CACxCA,EAAQ,OAAQ,CAAA,CAAC,CAAE,GAAAlB,CAAAA,CAAAA,CAAK,MAAAJ,CAAO,CAAA,IAAA,CAAAgB,CAAK,CAAA,GAAM,CACxC,IAAK,CAAA,OAAA,CAAS,OAAO,CAAKZ,EAAAA,EAAAA,CAAG,KAAKY,CAAI,CAAA,CAAA,CAAA,CAAKQ,CAAI,CAAA,IAAA,CAAK,QAAQ,YAAcpB,CAAAA,CAAG,EAAGJ,CAAK,EACvF,CAAC,EACH,CACQ,UAAUgC,CAAgB,CAAA,CAChC,KAAK,OAAS,CAAA,MAAA,CAAQN,GAAkB,CAEtC,IAAMO,EAAcC,4BAAmB,CAAA,CACrC,SAAW,CAAA,GAAA,CACX,KAAMR,CACR,CAAC,EACKS,CAAexB,CAAAA,CAAAA,CAAmB,MAAMsB,CAAa,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAW,EACnFD,CAAOG,CAAAA,CAAY,EACrB,CAAC,EACH,CACA,KAAMH,CAAAA,CAAAA,CAAgB,CACpB,IAAA,CAAK,UAAUA,CAAM,CAAA,CAEhB,KAAK,OAAQ,CAAA,OAAA,EAChB,KAAK,OAAS,CAAA,KAAA,CAAM,QAAQ,IAAI,EAEpC,CACF,MSxCM,CAAE,GAAA,CAAAR,EAAI,CAAA,CAAIJ,mBASHgB,CAAN,CAAA,cAA6Bb,CAAgB,CAGlD,UAAA,EAAa,CACX,IAAMc,CAAAA,CAA0B1B,CAAmB,CAAA,SAAA,CAAU,KAAK,OAAQ,CAAA,cAAc,EAElF2B,CAAoCV,CAAAA,4BAAAA,CAAmB,CAC3D,SAAW,CAAA,GAAA,CACX,IAAMS,CAAAA,CACR,CAAC,CACKE,CAAAA,CAAAA,CAAwBT,2BAAiB,CAC7C,SAAA,CAAW,IACX,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,WACrB,CAAC,CACKU,CAAAA,CAAAA,CAAyBV,2BAAiB,CAC9C,SAAA,CAAW,IACX,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,YACrB,CAAC,CACD,CAAA,OAAOQ,EAAkC,GAAI,CAAA,CAAC,CAAE,GAAAlC,CAAAA,CAAAA,CAAK,KAAAJ,CAAAA,CAAM,KAClD,CACL,GAAA,CAAKI,EACL,YAAcJ,CAAAA,CAAAA,CACd,KAAMuC,CAAsBnC,CAAAA,CAAG,EAC/B,KAAOoC,CAAAA,CAAAA,CAAuBpC,CAAG,CACnC,CAAA,CACD,CACH,CACA,IAAA,EAAO,CACL,IAAMkB,CAAAA,CAAU,IAAK,CAAA,UAAA,GAGrB,IAAK,CAAA,aAAA,CAAgB,IAAYmB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC/B,IAAMC,CAA8B,CAAA,EACpC,CAAA,IAAA,GAAW,CAAE,GAAAtC,CAAAA,CAAAA,CAAK,aAAAuC,CAAc,CAAA,IAAA,CAAA3B,EAAM,KAAA4B,CAAAA,CAAM,CAAKtB,GAAAA,CAAAA,CAC1CN,GAGA4B,CAGLF,GAAAA,CAAAA,CAAOtC,CAAG,CAAK,CAAA,CAAA,MAAM,KAAK,eAAgB,CAAA,CAAE,IAAAY,CAAAA,CAAAA,CAAM,QAAS4B,CAAO,CAAA,OAAA,CAASD,CAAa,CAAC,CAAA,GAAMA,GAEjG,OAAOD,CACT,CAEI,CAAA,CAAA,IAAA,CAAK,QAAQ,OACf,GAAA,IAAA,CAAK,QAAU,IAAK,CAAA,OAAA,CAAQ,QAAQ,OAAQ,CAAA,SAAS,CAEzD,EAAA,CACc,gBAAgBpB,CAAiC,CAAA,CAAA,OAAAmB,EAAA,IAC7D,CAAA,IAAA,CAAA,WAAA,CAAA,IAA0BI,EAAAvB,CAAlB,CAAA,CAAA,IAAA,CAAAN,CA7EZ,CAAA,CA6E8B6B,EAATC,CAAAC,CAAAA,CAAAA,CAASF,EAAT,CAAT,MAAA,CAAA,CAAA,CACR,OAAO,MAAMG,aAAAA,CAAMF,CAAI,CACzB,CAAA,CAAA,CACc,cAAcd,CAAgB,CAAA,CAAA,OAAAS,EAAA,IAC1C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAMnB,EAAU,MAAM,IAAA,CAAK,aAAc,EAAA,CACnC2B,EAAmBf,4BAAmB,CAAA,CAAE,UAAW,GAAK,CAAA,IAAA,CAAMZ,CAAQ,CAAC,CAAA,CACvE4B,CAAevC,CAAAA,CAAAA,CAAmB,MAAMsC,CAAkB,CAAA,IAAA,CAAK,QAAQ,WAAW,CAAA,CACxFjB,EAAOkB,CAAY,EACrB,CACM,CAAA,CAAA,KAAA,CAAMlB,EAAgB,CAAAS,OAAAA,CAAAA,CAAA,sBAC1B,GAAI,IAAA,CAAK,QAAS,CAChB,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAO,IAAM,IAAK,CAAA,aAAA,CAAcT,CAAM,CAAC,CAAA,CACpD,MACF,CACA,IAAA,CAAK,aAAcA,CAAAA,CAAM,EAC3B,CACF,CAAA,CAAA,EC3FA,GAAM,CAAE,QAAA,CAAAmB,GAAU,SAAAC,CAAAA,EAAU,EAAIC,mBAKnBC,CAAAA,CAAAA,CAAN,MAAMA,CAAsB/B,SAAAA,CAAgB,CAGjD,IAAa,EAAA,CAVf,IAAAsB,CAAAU,CAAAA,CAAAA,CAYI,KAAK,OAAUV,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,OAAA,CAAQ,UAAb,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAsB,QAAQ,QAAad,CAAAA,GAAAA,uBAAAA,IAE1DwB,CAAA,CAAA,IAAA,CAAK,OAAL,GAAA,IAAA,EAAAA,EACI,OAAQ,CAAA,MAAA,CAAA,CACT,OAAO,oBAAsB,CAAA,sCAAA,CAAUD,EAAc,iBACrD,CAAA,CAAA,MAAA,CAAchC,CAAYmB,EAAAA,CAAAA,CAAA,sBACzB,GAAI,CAAE,KAAAe,CAAK,CAAA,CAAIlC,EACVkC,CACHA,GAAAA,CAAAA,CAAOF,EAAc,iBAEvBG,CAAAA,CAAAA,aAAAA,CAAO,IAAI,kEAAmBD,CAAAA,CAAI,EAClC,MAAMJ,EAAAA,CAAUI,EAAM,IAAK,CAAA,OAAA,CAAQ,cAAgB,CAAA,CAAE,OAAQ,CAAE,CAAC,EAChEC,aAAO,CAAA,GAAA,CAAI,mEAAmBD,CAAI,EACpC,CACF,CAAA,CAAA,CAAA,IAAA,CAAK,aACP,CACQ,YAAa,CA5BvB,IAAAX,GA6BIA,CAAA,CAAA,IAAA,CAAK,OAAL,GAAA,IAAA,EAAAA,EAAc,MAAO,CAAA,sBAAA,CAAwB,2BAAQS,CAAc,CAAA,iBAAA,EACrE,CACQ,SAAUtB,CAAAA,CAAAA,CAAgB,CAChC,IAAK,CAAA,OAAA,CAAS,OAAc0B,CAAoBjB,EAAAA,CAAAA,CAAA,MAApBiB,CAAoB,CAAA,CAAA,UAApB,CAAE,MAAAC,CAAAA,CAAAA,CAAS,EAAG,CAAA,CAAM,CAC9C,IAAIrC,CAAAA,CAAU,MAAMsC,uBAAWD,CAAAA,CAAM,EAErC,GAAI,CAACrC,CACH,CAAA,MAAM,IAAI,KAAM,CAAA,CAAA,4DAAA,EAAaqC,CAAM,CAAE,CAAA,CAAA,CAGvC3B,EAAOV,CAAO,EAChB,CAAC,CAAA,EACH,CACA,KAAMU,CAAAA,CAAAA,CAAgB,CACpB,IAAK,CAAA,SAAA,CAAUA,CAAM,CAChB,CAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAChB,KAAK,OAAS,CAAA,KAAA,CAAM,QAAQ,IAAI,EAEpC,CACF,CAzCasB,CAAAA,CAAAA,CACJ,iBAAoBO,CAAAA,SAAAA,CAAK,QAAQ,GAAI,EAAA,CAAG,cAAc,CADxD,CAAA,IAAMC,EAANR,ECAKS,IAAAA,EAAAA,CAAAA,CAAAA,CAAAA,GACVA,EAAA,OAAY,CAAA,SAAA,CACZA,EAAA,IAAS,CAAA,MAAA,CACTA,EAAA,MAAW,CAAA,QAAA,CAHDA,QAAA,EAUCC,CAAAA,CAAAA,CAAAA,CAAN,MAAMA,CAAe,CAY1B,YAAY1C,CAAyC,CAAA,CACnD,KAAK,OAAU2C,CAAAA,sBAAAA,CAAaD,CAAe,CAAA,eAAA,CAAiB1C,CAAO,CACnE,CAAA,IAAA,CAAK,OAAS,IAAImC,aAAAA,CAAO,KAAK,OAAQ,CAAA,IAAI,CACtC,CAAA,IAAA,CAAK,QAAQ,kBAAoB,EAAA,IAAA,CAAK,SAC1C,CAAA,IAAA,CAAK,OACP,CACA,OAAU,EAAA,CACJ,KAAK,OAAQ,CAAA,IAAA,EAAM,QAAQ,GAAI,CAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CACpD,IAAK,CAAA,MAAA,CAAO,IAAI,UAAU,CAAA,CAC1B,KAAK,MAAO,CAAA,GAAA,CAAI,YAAc,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAA,CAClD,KAAK,MAAO,CAAA,GAAA,CAAI,gBAAkB,IAAK,CAAA,OAAA,CAAQ,WAAW,EAC5D,CAEA,IAAO,EAAA,CACL,IAA8BZ,CAAA,CAAA,IAAA,CAAK,QAA3B,CAAAqB,KAAAA,CAAAA,CA3CZ,EA2CkCrB,CAAZvB,CAAAA,CAAAA,CAAAyB,CAAYF,CAAAA,CAAAA,CAAZ,CAAV,OACR,CAAA,CAAA,CAAA,GAAI,CAACqB,CAAS,EAAA,CAACA,EAAM,MACnB,CAAA,MAAM,IAAI,KAAM,CAAA,oBAAoB,EAGlCA,CAAM,CAAA,MAAA,GAAW,GAAKA,CAAM,CAAA,CAAC,IAAM,SAGvC,GAAA,IAAA,CAAK,OAAUnC,CAAAA,uBAAAA,GACXmC,CAAM,CAAA,QAAA,CAAS,MAAiB,CAClC,GAAA,IAAA,CAAK,YAAc,IAAIzC,CAAAA,CAAY0C,CAAAC,CAAAA,CAAAA,CAAA,GAAK9C,CAAL,CAAA,CAAA,CAAc,QAAS,IAAK,CAAA,OAAQ,EAAC,CAEtE4C,CAAAA,CAAAA,CAAAA,CAAM,QAAS,CAAA,QAAmB,IACpC,IAAK,CAAA,aAAA,CAAgB,IAAIJ,CAAcK,CAAAA,CAAAA,CAAAC,EAAA,EAAK9C,CAAAA,CAAAA,CAAAA,CAAL,CAAc,OAAA,CAAS,KAAK,OAAQ,CAAA,CAAC,GAE1E4C,CAAM,CAAA,QAAA,CAAS,SAAoB,CACrC,GAAA,IAAA,CAAK,cAAiB,CAAA,IAAI9B,EAAe+B,CAAAC,CAAAA,CAAAA,CAAA,GAAK9C,CAAL,CAAA,CAAA,CAAc,QAAS,IAAK,CAAA,OAAQ,CAAC,CAAA,CAAA,CAAA,EAElF,CACA,KAAMU,CAAAA,CAAAA,CAAiB,CA9DzB,IAAAa,CAAAA,CAAAU,EAAAc,CAAAC,CAAAA,CAAAA,CAkEI,GAHKtC,CAAAA,GACHA,EAAS,IAAK,CAAA,OAAA,CAAQ,QAEpB,CAACA,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,qBAAqB,CAEvCa,CAAAA,CAAAA,CAAAA,CAAA,KAAK,cAAL,GAAA,IAAA,EAAAA,EAAqB,KAAMb,CAAAA,CAAAA,CAAAA,CAAAA,CAC3BuB,EAAA,IAAK,CAAA,aAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAoB,MAAMvB,CAC1BqC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,KAAK,WAAL,GAAA,IAAA,EAAAA,EAAkB,KAAMrC,CAAAA,CAAAA,CAAAA,CAAAA,CAExBsC,CAAA,CAAA,IAAA,CAAK,UAAL,IAAAA,EAAAA,CAAAA,CAAc,MAAM,OAAQ,CAAA,IAAA,EAC9B,CACF,EA1DaN,CAAAA,CACK,eAAyCG,CAAAA,CAAAA,CAAAC,EAAA,EACpD7C,CAAAA,CAAAA,CAAgB,iBADoC,CAEvD,IAAA,CAAM,GACN,KAAO,CAAA,CAAC,MAAiB,CACzB,CAAA,kBAAA,CAAoB,KACtB,CANK,CAAA,CAAA,IAAMgD,EAANP,CA4DMQ,CAAAA,EAAAA,CAAMD,EC1EZ,SAASE,EAAYC,CAAAA,CAAAA,CAAkC,CAC5DjB,aAAO,CAAA,GAAA,CAAI,8BAAUiB,CAAY,CAAA,IAAI,CAAE,CAAA,CAAA,CACvCjB,cAAO,GAAI,CAAA,gBAAA,CAASiB,EAAY,OAAO,EACzC,CAKO,SAASC,EAAAA,CAAKC,CAA2B,CAAA,CAE1CA,EAAK,IAAM,EAAA,OAAA,CAAQ,IAAIA,CAAK,CAAA,IAAI,EAEpCnB,aAAO,CAAA,GAAA,CAAI,8BAAUmB,CAAK,CAAA,IAAI,EAAE,CAEhCnB,CAAAA,aAAAA,CAAO,IAAI,gBAASmB,CAAAA,CAAAA,CAAK,OAAO,EAClC","file":"index.js","sourcesContent":["import { flatNestedObject, nestedObjectToList, unflatNestedObject } 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 = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ 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 = unflatNestedObject({\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","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): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\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?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } 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 = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\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 = unflatNestedObject({ 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 { 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';\nimport { loadConfig } from '@tikkhun/config-loader';\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 = await loadConfig(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","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
1
+ {"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\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?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\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 = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ 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 options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, 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","/**\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 { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\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 = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\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 = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.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 { 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';\nimport { loadConfig } from '@tikkhun/config-loader';\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 = await loadConfig(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","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import {nestedObjectToList,flatNestedObject,unflatNestedObject,mergeOptions}from'@tikkhun/utils-core';import U from'lodash';import {createCommand}from'commander';import {input}from'@inquirer/prompts';import tt from'fs-extra';import {join}from'path';import {Logger}from'@tikkhun/logger';import {loadConfig}from'@tikkhun/config-loader';/**
1
+ import {nestedObjectToList,flatNestedObject,unflatNestedObject,mergeOptions}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import H from'lodash';import {createCommand}from'commander';import {input}from'@inquirer/prompts';import B from'fs-extra';import {join}from'path';import {Logger}from'@tikkhun/logger';import {loadConfig}from'@tikkhun/config-loader';/**
2
2
  @tikkhun/cli-core
3
3
  */
4
- var $=Object.defineProperty,F=Object.defineProperties;var H=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var R=(r,t,o)=>t in r?$(r,t,{enumerable:true,configurable:true,writable:true,value:o}):r[t]=o,d=(r,t)=>{for(var o in t||(t={}))E.call(t,o)&&R(r,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&R(r,o,t[o]);return r},y=(r,t)=>F(r,H(t));var u=(r,t)=>{var o={};for(var e in r)E.call(r,e)&&t.indexOf(e)<0&&(o[e]=r[e]);if(r!=null&&l)for(var e of l(r))t.indexOf(e)<0&&L.call(r,e)&&(o[e]=r[e]);return o};var p=(r,t,o)=>new Promise((e,i)=>{var n=c=>{try{C(o.next(c));}catch(j){i(j);}},a=c=>{try{C(o.throw(c));}catch(j){i(j);}},C=c=>c.done?e(c.value):Promise.resolve(c.value).then(n,a);C((o=o.apply(r,t)).next());});var P={stringify(r){return r!=null&&r.length?r.toString():""},parse(r){return r.split(",")}};var J=["true",true,"1",1],ct=["false",false,"",0],N={stringify(r){return r.toString()},parse(r){return !!J.includes(r)}};var S={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[o,e]=t.split("=");return {key:o,value:e}}).filter(t=>t):[]}};var k={stringify(r){return r.toString()},parse(r){return Number(r)}};var V={stringify(r){return JSON.stringify(r)},parse(r){try{return JSON.parse(r)||[]}catch(t){return []}}};var D={stringify(r){return JSON.stringify(r)},parse(r){return typeof r=="object"?JSON.parse(r):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class r{constructor(t){this.schema=t;}parse(t){return r.parse(t,this.schema)}static parse(t,o){let e={};return Object.entries(t).forEach(([i,n])=>{let a=o[i];typeof n=="object"?e[i]=r.parse(n,a):e[i]=r.parseValueByType(n,a);}),e}static parseValueByType(t,o){if(t!=="undefined")return o===g.keyValueArray?S.parse(t):o===g.objectArray?V.parse(t):o===g.array?P.parse(t):o===g.object?D.parse(t):o===g.number?k.parse(t):o===g.boolean?N.parse(t):t}static stringify(t){let o={};return Object.entries(t).forEach(([e,i])=>{o[e]=r.stringifyValue(i);}),o}static stringifyValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?S.stringify(t):V.stringify(t):P.stringify(t)}return typeof t=="object"?r.stringify(t):""+t}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}};var{merge:Y}=U,h=class h{constructor(t){this.options=Y({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var {get:v}=U,O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),e=flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:n})=>({key:i,value:n,type:e[i]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:e,type:i})=>{this.program.option(`--${o} <${i}>`,v(this.options.optionTitles,o),e);});}addAction(t){this.program.action(o=>{let e=unflatNestedObject({delimiter:".",data:o}),i=m.parse(e,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var {get:Mt}=U,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),e=flatNestedObject({delimiter:".",data:this.options.optionTypes}),i=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:n,value:a})=>({key:n,defaultValue:a,type:e[n],title:i[n]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:e,defaultValue:i,type:n,title:a}of t)n&&a&&(o[e]=(yield this.getActionResult({type:n,message:a,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,{type:o}=i,e=u(i,["type"]);return yield input(e)})}actionHandler(t){return p(this,null,function*(){let o=yield this.optionHandler(),e=unflatNestedObject({delimiter:".",data:o}),i=m.parse(e,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:Qt,writeJson:rt}=tt,f=class f 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",f.defaultConfigPath).action(e=>p(this,null,function*(){let{path:i}=e;i||(i=f.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield rt(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",f.defaultConfigPath);}addAction(t){this.program.action(e=>p(this,[e],function*({config:o=""}){let i=yield loadConfig(o);if(!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=join(process.cwd(),"release.json");var x=f;var at=(e=>(e.prompts="prompts",e.args="args",e.config="config",e))(at||{}),A=class A{constructor(t){this.options=mergeOptions(A.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let e=this.options,{types:t}=e,o=u(e,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=createCommand(),t.includes("args")&&(this.argsCommand=new O(y(d({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new x(y(d({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new T(y(d({},o),{program:this.program}))));}start(t){var o,e,i,n;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(e=this.configCommand)==null||e.start(t),(i=this.argsCommand)==null||i.start(t),(n=this.program)==null||n.parse(process.argv);}};A.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var w=A,Tr=w;function Sr(r){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),Logger.log("\u7248\u672C: "+r.version);}function Vr(r){r.logo&&console.log(r.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),Logger.log("\u7248\u672C: "+r.version);}export{s as AbstractCommand,O as ArgsCommand,Tr as Cli,w as CommandManager,at as CommandTypes,x as ConfigCommand,m as OptionsTransformer,T as PromptsCommand,g as TYPES,P as arrayType,ct as asFalseValues,J as asTrueValues,N as booleanType,Vr as echo,Sr as echoPackage,S as keyValueArrayType,k as numberType,V as objectArrayType,D as objectType};//# sourceMappingURL=index.mjs.map
4
+ var S=Object.defineProperty,j=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var w=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))L.call(t,o)&&w(s,o,t[o]);if(l)for(var o of l(t))P.call(t,o)&&w(s,o,t[o]);return s},g=(s,t)=>j(s,D(t));var f=(s,t)=>{var o={};for(var i in s)L.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&P.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{T(o.next(p));}catch(x){n(x);}},m=p=>{try{T(o.throw(p));}catch(x){n(x);}},T=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);T((o=o.apply(s,t)).next());});var{merge:F}=H,h=class h{constructor(t){this.options=F({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var {get:G}=H,u=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,G(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var {get:At}=H,O=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,this.options.optionTypes);t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:Pt,writeJson:K}=B,d=class d extends e{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",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield K(n,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=join(process.cwd(),"release.json");var y=d;var tt=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(tt||{}),C=class C{constructor(t){this.options=mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var v=C,Qt=v;function kt(s){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}function to(s){s.logo&&console.log(s.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}export{e as AbstractCommand,u as ArgsCommand,Qt as Cli,v as CommandManager,tt as CommandTypes,y as ConfigCommand,O as PromptsCommand,to as echo,kt as echoPackage};//# sourceMappingURL=index.mjs.map
5
5
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/command/ArgsCommand.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","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["arrayType","v","asTrueValues","asFalseValues","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","nestedObjectToList","optionTypeMap","flatNestedObject","createCommand","action","jsonOptions","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.mjs","sourcesContent":["import { flatNestedObject, nestedObjectToList, unflatNestedObject } 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 = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ 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 = unflatNestedObject({\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","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): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\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?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } 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 = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\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 = unflatNestedObject({ 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 { 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';\nimport { loadConfig } from '@tikkhun/config-loader';\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 = await loadConfig(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","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
1
+ {"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\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?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\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 = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ 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 options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, 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","/**\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 { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\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 = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\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 = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.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 { 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';\nimport { loadConfig } from '@tikkhun/config-loader';\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 = await loadConfig(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","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tikkhun/cli-core",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -31,9 +31,10 @@
31
31
  "commander": "^14.0.0",
32
32
  "fs-extra": "^11.3.0",
33
33
  "lodash": "^4.17.21",
34
+ "@tikkhun/logger": "^1.0.8",
34
35
  "@tikkhun/utils-core": "^0.0.20",
35
- "@tikkhun/config-loader": "^0.0.10",
36
- "@tikkhun/logger": "^1.0.8"
36
+ "@tikkhun/nested-args": "^0.0.0",
37
+ "@tikkhun/config-loader": "^0.0.10"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@types/fs-extra": "^11.0.4",
@@ -1,8 +0,0 @@
1
- export { OptionsTransformer, TYPES } from './options-transformer.mjs';
2
- export { KeyValueItem, arrayType } from './paramTypes/array.type.mjs';
3
- export { asFalseValues, asTrueValues, booleanType } from './paramTypes/boolean.type.mjs';
4
- export { keyValueArrayType } from './paramTypes/key-value-array.type.mjs';
5
- export { numberType } from './paramTypes/number.type.mjs';
6
- export { objectArrayType } from './paramTypes/object-array.type.mjs';
7
- export { objectType } from './paramTypes/object.type.mjs';
8
- export { ParamType } from './paramTypes/param-type.interface.mjs';
@@ -1,8 +0,0 @@
1
- export { OptionsTransformer, TYPES } from './options-transformer.js';
2
- export { KeyValueItem, arrayType } from './paramTypes/array.type.js';
3
- export { asFalseValues, asTrueValues, booleanType } from './paramTypes/boolean.type.js';
4
- export { keyValueArrayType } from './paramTypes/key-value-array.type.js';
5
- export { numberType } from './paramTypes/number.type.js';
6
- export { objectArrayType } from './paramTypes/object-array.type.js';
7
- export { objectType } from './paramTypes/object.type.js';
8
- export { ParamType } from './paramTypes/param-type.interface.js';
@@ -1,5 +0,0 @@
1
- 'use strict';/**
2
- @tikkhun/cli-core
3
- */
4
- var i={stringify(e){return e!=null&&e.length?e.toString():""},parse(e){return e.split(",")}};var b=["true",true,"1",1],l=["false",false,"",0],f={stringify(e){return e.toString()},parse(e){return !!b.includes(e)}};var y={stringify(e){return e!=null&&e.length?e.map(r=>`${r==null?void 0:r.key}=${r==null?void 0:r.value}`).join(","):""},parse(e){return e?e.split(",").map(r=>{if(!r)return;let[t,n]=r.split("=");return {key:t,value:n}}).filter(r=>r):[]}};var u={stringify(e){return e.toString()},parse(e){return Number(e)}};var p={stringify(e){return JSON.stringify(e)},parse(e){try{return JSON.parse(e)||[]}catch(r){return []}}};var g={stringify(e){return JSON.stringify(e)},parse(e){return typeof e=="object"?JSON.parse(e):{}}};var a={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class e{constructor(r){this.schema=r;}parse(r){return e.parse(r,this.schema)}static parse(r,t){let n={};return Object.entries(r).forEach(([s,o])=>{let c=t[s];typeof o=="object"?n[s]=e.parse(o,c):n[s]=e.parseValueByType(o,c);}),n}static parseValueByType(r,t){if(r!=="undefined")return t===a.keyValueArray?y.parse(r):t===a.objectArray?p.parse(r):t===a.array?i.parse(r):t===a.object?g.parse(r):t===a.number?u.parse(r):t===a.boolean?f.parse(r):r}static stringify(r){let t={};return Object.entries(r).forEach(([n,s])=>{t[n]=e.stringifyValue(s);}),t}static stringifyValue(r){if(Array.isArray(r)){let t=r[0];return typeof t=="object"?this.isKeyValueObject(t)?y.stringify(r):p.stringify(r):i.stringify(r)}return typeof r=="object"?e.stringify(r):""+r}static isKeyValueObject(r){let t=Object.keys(r);return t[0]==="key"&&t[1]==="value"}};exports.OptionsTransformer=m;exports.TYPES=a;exports.arrayType=i;exports.asFalseValues=l;exports.asTrueValues=b;exports.booleanType=f;exports.keyValueArrayType=y;exports.numberType=u;exports.objectArrayType=p;exports.objectType=g;//# sourceMappingURL=index.js.map
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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"],"names":["arrayType","v","asTrueValues","asFalseValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys"],"mappings":";;;AAMaA,IAAAA,CAAAA,CAAuB,CAElC,SAAA,CAAUC,CAAgB,CAAA,CACxB,OAAKA,CAAA,EAAA,IAAA,EAAAA,CAAG,CAAA,MAAA,CAGDA,CAAE,CAAA,QAAA,GAFA,EAGX,CAAA,CACA,KAAMA,CAAAA,CAAAA,CAAW,CACf,OAAOA,EAAE,KAAM,CAAA,GAAG,CACpB,CACF,EChBO,IAAMC,EAAe,CAAC,MAAA,CAAQ,IAAM,CAAA,GAAA,CAAK,CAAC,CAAA,CACpCC,EAAgB,CAAC,OAAA,CAAS,KAAO,CAAA,EAAA,CAAI,CAAC,CAAA,CACtCC,EAAyB,CACpC,SAAA,CAAUC,CAAwB,CAAA,CAChC,OAAOA,CAAAA,CAAM,QAAS,EACxB,CACA,CAAA,KAAA,CAAMA,CAAe,CAAA,CACnB,OAAI,CAAA,CAAAH,EAAa,QAASG,CAAAA,CAAK,CAEjC,CACF,ECLO,IAAMC,EAA+B,CAE1C,SAAA,CAAUL,CAAgB,CAAA,CACxB,OAAKA,CAAAA,EAAA,MAAAA,CAAG,CAAA,MAAA,CAGDA,CAAE,CAAA,GAAA,CAAKM,CAAuB,EAAA,CAAA,EAAGA,GAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAM,GAAG,CAAA,CAAA,EAAIA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAM,KAAK,CAAA,CAAE,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAFnE,EAGX,CACA,CAAA,KAAA,CAAMF,CAAe,CAAA,CACnB,OAAKA,CAAAA,CACEA,EACJ,KAAM,CAAA,GAAG,CACT,CAAA,GAAA,CAAKG,CAAY,EAAA,CAChB,GAAI,CAACA,CAAS,CAAA,OACd,GAAM,CAACC,CAAKJ,CAAAA,CAAK,EAAIG,CAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CACtC,OAAO,CAAE,IAAAC,CAAK,CAAA,KAAA,CAAAJ,CAAM,CACtB,CAAC,CAAA,CACA,OAAQK,CAAMA,EAAAA,CAAC,CARC,CAAA,EASrB,CACF,ECvBaC,IAAAA,CAAAA,CAAwB,CACnC,SAAA,CAAUN,CAAoB,CAAA,CAC5B,OAAOA,CAAM,CAAA,QAAA,EACf,CAAA,CACA,KAAMA,CAAAA,CAAAA,CAAe,CACnB,OAAO,MAAA,CAAOA,CAAK,CACrB,CACF,MCPaO,CAA6B,CAAA,CACxC,SAAUX,CAAAA,CAAAA,CAAgB,CACxB,OAAO,IAAK,CAAA,SAAA,CAAUA,CAAC,CACzB,CACA,CAAA,KAAA,CAAMA,CAAW,CAAA,CACf,GAAI,CACF,OAAO,IAAK,CAAA,KAAA,CAAMA,CAAC,CAAA,EAAK,EAC1B,CAAA,MAASY,CAAO,CAAA,CACd,OAAO,EACT,CACF,CACF,ECXO,IAAMC,CAAwB,CAAA,CACnC,UAAUb,CAAgB,CAAA,CACxB,OAAO,IAAA,CAAK,SAAUA,CAAAA,CAAC,CACzB,CACA,CAAA,KAAA,CAAMI,CAAe,CAAA,CACnB,OAAO,OAAOA,GAAU,QAAW,CAAA,IAAA,CAAK,KAAMA,CAAAA,CAAK,CAAI,CAAA,EACzD,CACF,ECPaU,IAAAA,CAAAA,CAAQ,CACnB,KAAA,CAAO,OACP,CAAA,aAAA,CAAe,eACf,CAAA,WAAA,CAAa,aACb,CAAA,OAAA,CAAS,SACT,CAAA,MAAA,CAAQ,SACR,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QACV,EAGaC,CAAN,CAAA,MAAMC,CAAmB,CAE9B,WAAYC,CAAAA,CAAAA,CAA6B,CACvC,IAAK,CAAA,MAAA,CAASA,EAChB,CACA,KAAMC,CAAAA,CAAAA,CAA0B,CAC9B,OAAOF,CAAAA,CAAmB,KAAME,CAAAA,CAAAA,CAAK,IAAK,CAAA,MAAM,CAClD,CAEA,OAAO,KAAMA,CAAAA,CAAAA,CAA0BD,CAA6B,CAAA,CAClE,IAAME,CAA4B,CAAA,EAClC,CAAA,OAAA,MAAA,CAAO,OAAQD,CAAAA,CAAG,EAAE,OAAQ,CAAA,CAAC,CAACV,CAAAA,CAAKJ,CAAK,CAAA,GAAM,CAC5C,IAAMgB,CAAOH,CAAAA,CAAAA,CAAOT,CAAG,CAAA,CACnB,OAAOJ,CAAAA,EAAU,SACnBe,CAAKX,CAAAA,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,KAAMZ,CAAAA,CAAAA,CAAOgB,CAAI,CAEhDD,CAAAA,CAAAA,CAAKX,CAAG,CAAA,CAAIQ,CAAmB,CAAA,gBAAA,CAAiBZ,EAAiBgB,CAAI,EAEzE,CAAC,CAAA,CACMD,CACT,CACA,OAAe,gBAAiBf,CAAAA,CAAAA,CAAegB,CAAc,CAAA,CAC3D,GAAIhB,CAAAA,GAAU,YAGd,OAAIgB,CAAAA,GAASN,CAAM,CAAA,aAAA,CACVT,CAAkB,CAAA,KAAA,CAAMD,CAAK,CAElCgB,CAAAA,CAAAA,GAASN,CAAM,CAAA,WAAA,CACVH,CAAgB,CAAA,KAAA,CAAMP,CAAK,CAEhCgB,CAAAA,CAAAA,GAASN,CAAM,CAAA,KAAA,CACVf,CAAU,CAAA,KAAA,CAAMK,CAAK,CAAA,CAE1BgB,CAASN,GAAAA,CAAAA,CAAM,MACVD,CAAAA,CAAAA,CAAW,KAAMT,CAAAA,CAAK,EAE3BgB,CAASN,GAAAA,CAAAA,CAAM,MACVJ,CAAAA,CAAAA,CAAW,KAAMN,CAAAA,CAAK,EAE3BgB,CAASN,GAAAA,CAAAA,CAAM,OACVX,CAAAA,CAAAA,CAAY,KAAMC,CAAAA,CAAK,EAEzBA,CACT,CACA,OAAO,SAAA,CAAUc,CAA0B,CAAA,CACzC,IAAMC,CAA4B,CAAA,EAClC,CAAA,OAAA,MAAA,CAAO,OAAQD,CAAAA,CAAG,EAAE,OAAQ,CAAA,CAAC,CAACV,CAAAA,CAAKJ,CAAK,CAAA,GAAM,CAC5Ce,CAAKX,CAAAA,CAAG,CAAIQ,CAAAA,CAAAA,CAAmB,cAAeZ,CAAAA,CAAK,EACrD,CAAC,CAAA,CACMe,CACT,CAEA,OAAe,cAAA,CAAef,CAAY,CAAA,CACxC,GAAI,KAAA,CAAM,OAAQA,CAAAA,CAAK,CAAG,CAAA,CACxB,IAAMiB,CAAQjB,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAErB,OAAI,OAAOiB,GAAU,QACK,CAAA,IAAA,CAAK,gBAAiBA,CAAAA,CAAK,CAE1ChB,CAAAA,CAAAA,CAAkB,UAAUD,CAAK,CAAA,CAEnCO,CAAgB,CAAA,SAAA,CAAUP,CAAK,CAAA,CAEjCL,CAAU,CAAA,SAAA,CAAUK,CAAK,CAClC,CACA,OAAI,OAAOA,CAAAA,EAAU,SACZY,CAAmB,CAAA,SAAA,CAAUZ,CAAK,CAAA,CAEpC,EAAKA,CAAAA,CACd,CACA,OAAe,gBAAA,CAAiBc,CAAU,CAAA,CACxC,IAAMI,CAAAA,CAAO,OAAO,IAAKJ,CAAAA,CAAG,CAC5B,CAAA,OAAOI,CAAK,CAAA,CAAC,CAAM,GAAA,KAAA,EAASA,CAAK,CAAA,CAAC,CAAM,GAAA,OAC1C,CACF","file":"index.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"]}
@@ -1,5 +0,0 @@
1
- /**
2
- @tikkhun/cli-core
3
- */
4
- var i={stringify(e){return e!=null&&e.length?e.toString():""},parse(e){return e.split(",")}};var b=["true",true,"1",1],l=["false",false,"",0],f={stringify(e){return e.toString()},parse(e){return !!b.includes(e)}};var y={stringify(e){return e!=null&&e.length?e.map(r=>`${r==null?void 0:r.key}=${r==null?void 0:r.value}`).join(","):""},parse(e){return e?e.split(",").map(r=>{if(!r)return;let[t,n]=r.split("=");return {key:t,value:n}}).filter(r=>r):[]}};var u={stringify(e){return e.toString()},parse(e){return Number(e)}};var p={stringify(e){return JSON.stringify(e)},parse(e){try{return JSON.parse(e)||[]}catch(r){return []}}};var g={stringify(e){return JSON.stringify(e)},parse(e){return typeof e=="object"?JSON.parse(e):{}}};var a={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class e{constructor(r){this.schema=r;}parse(r){return e.parse(r,this.schema)}static parse(r,t){let n={};return Object.entries(r).forEach(([s,o])=>{let c=t[s];typeof o=="object"?n[s]=e.parse(o,c):n[s]=e.parseValueByType(o,c);}),n}static parseValueByType(r,t){if(r!=="undefined")return t===a.keyValueArray?y.parse(r):t===a.objectArray?p.parse(r):t===a.array?i.parse(r):t===a.object?g.parse(r):t===a.number?u.parse(r):t===a.boolean?f.parse(r):r}static stringify(r){let t={};return Object.entries(r).forEach(([n,s])=>{t[n]=e.stringifyValue(s);}),t}static stringifyValue(r){if(Array.isArray(r)){let t=r[0];return typeof t=="object"?this.isKeyValueObject(t)?y.stringify(r):p.stringify(r):i.stringify(r)}return typeof r=="object"?e.stringify(r):""+r}static isKeyValueObject(r){let t=Object.keys(r);return t[0]==="key"&&t[1]==="value"}};export{m as OptionsTransformer,a as TYPES,i as arrayType,l as asFalseValues,b as asTrueValues,f as booleanType,y as keyValueArrayType,u as numberType,p as objectArrayType,g as objectType};//# sourceMappingURL=index.mjs.map
5
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
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"],"names":["arrayType","v","asTrueValues","asFalseValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys"],"mappings":"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","file":"index.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"]}
@@ -1,23 +0,0 @@
1
- declare const TYPES: {
2
- readonly array: "array";
3
- readonly keyValueArray: "keyValueArray";
4
- readonly objectArray: "objectArray";
5
- readonly boolean: "boolean";
6
- readonly number: "number";
7
- readonly object: "object";
8
- readonly string: "string";
9
- readonly select: "select";
10
- };
11
- type TYPES = keyof typeof TYPES;
12
- declare class OptionsTransformer {
13
- schema: Record<string, any>;
14
- constructor(schema: Record<string, any>);
15
- parse(obj: Record<string, any>): Record<string, any>;
16
- static parse(obj: Record<string, any>, schema: Record<string, any>): Record<string, any>;
17
- private static parseValueByType;
18
- static stringify(obj: Record<string, any>): Record<string, any>;
19
- private static stringifyValue;
20
- private static isKeyValueObject;
21
- }
22
-
23
- export { OptionsTransformer, TYPES };
@@ -1,23 +0,0 @@
1
- declare const TYPES: {
2
- readonly array: "array";
3
- readonly keyValueArray: "keyValueArray";
4
- readonly objectArray: "objectArray";
5
- readonly boolean: "boolean";
6
- readonly number: "number";
7
- readonly object: "object";
8
- readonly string: "string";
9
- readonly select: "select";
10
- };
11
- type TYPES = keyof typeof TYPES;
12
- declare class OptionsTransformer {
13
- schema: Record<string, any>;
14
- constructor(schema: Record<string, any>);
15
- parse(obj: Record<string, any>): Record<string, any>;
16
- static parse(obj: Record<string, any>, schema: Record<string, any>): Record<string, any>;
17
- private static parseValueByType;
18
- static stringify(obj: Record<string, any>): Record<string, any>;
19
- private static stringifyValue;
20
- private static isKeyValueObject;
21
- }
22
-
23
- export { OptionsTransformer, TYPES };
@@ -1,5 +0,0 @@
1
- 'use strict';/**
2
- @tikkhun/cli-core
3
- */
4
- var i={stringify(e){return e!=null&&e.length?e.toString():""},parse(e){return e.split(",")}};var b=["true",true,"1",1];var f={stringify(e){return e.toString()},parse(e){return !!b.includes(e)}};var y={stringify(e){return e!=null&&e.length?e.map(r=>`${r==null?void 0:r.key}=${r==null?void 0:r.value}`).join(","):""},parse(e){return e?e.split(",").map(r=>{if(!r)return;let[t,n]=r.split("=");return {key:t,value:n}}).filter(r=>r):[]}};var u={stringify(e){return e.toString()},parse(e){return Number(e)}};var p={stringify(e){return JSON.stringify(e)},parse(e){try{return JSON.parse(e)||[]}catch(r){return []}}};var g={stringify(e){return JSON.stringify(e)},parse(e){return typeof e=="object"?JSON.parse(e):{}}};var a={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class e{constructor(r){this.schema=r;}parse(r){return e.parse(r,this.schema)}static parse(r,t){let n={};return Object.entries(r).forEach(([s,o])=>{let c=t[s];typeof o=="object"?n[s]=e.parse(o,c):n[s]=e.parseValueByType(o,c);}),n}static parseValueByType(r,t){if(r!=="undefined")return t===a.keyValueArray?y.parse(r):t===a.objectArray?p.parse(r):t===a.array?i.parse(r):t===a.object?g.parse(r):t===a.number?u.parse(r):t===a.boolean?f.parse(r):r}static stringify(r){let t={};return Object.entries(r).forEach(([n,s])=>{t[n]=e.stringifyValue(s);}),t}static stringifyValue(r){if(Array.isArray(r)){let t=r[0];return typeof t=="object"?this.isKeyValueObject(t)?y.stringify(r):p.stringify(r):i.stringify(r)}return typeof r=="object"?e.stringify(r):""+r}static isKeyValueObject(r){let t=Object.keys(r);return t[0]==="key"&&t[1]==="value"}};exports.OptionsTransformer=m;exports.TYPES=a;//# sourceMappingURL=options-transformer.js.map
5
- //# sourceMappingURL=options-transformer.js.map
@@ -1 +0,0 @@
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"],"names":["arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys"],"mappings":"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","file":"options-transformer.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"]}
@@ -1,5 +0,0 @@
1
- /**
2
- @tikkhun/cli-core
3
- */
4
- var i={stringify(e){return e!=null&&e.length?e.toString():""},parse(e){return e.split(",")}};var b=["true",true,"1",1];var f={stringify(e){return e.toString()},parse(e){return !!b.includes(e)}};var y={stringify(e){return e!=null&&e.length?e.map(r=>`${r==null?void 0:r.key}=${r==null?void 0:r.value}`).join(","):""},parse(e){return e?e.split(",").map(r=>{if(!r)return;let[t,n]=r.split("=");return {key:t,value:n}}).filter(r=>r):[]}};var u={stringify(e){return e.toString()},parse(e){return Number(e)}};var p={stringify(e){return JSON.stringify(e)},parse(e){try{return JSON.parse(e)||[]}catch(r){return []}}};var g={stringify(e){return JSON.stringify(e)},parse(e){return typeof e=="object"?JSON.parse(e):{}}};var a={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class e{constructor(r){this.schema=r;}parse(r){return e.parse(r,this.schema)}static parse(r,t){let n={};return Object.entries(r).forEach(([s,o])=>{let c=t[s];typeof o=="object"?n[s]=e.parse(o,c):n[s]=e.parseValueByType(o,c);}),n}static parseValueByType(r,t){if(r!=="undefined")return t===a.keyValueArray?y.parse(r):t===a.objectArray?p.parse(r):t===a.array?i.parse(r):t===a.object?g.parse(r):t===a.number?u.parse(r):t===a.boolean?f.parse(r):r}static stringify(r){let t={};return Object.entries(r).forEach(([n,s])=>{t[n]=e.stringifyValue(s);}),t}static stringifyValue(r){if(Array.isArray(r)){let t=r[0];return typeof t=="object"?this.isKeyValueObject(t)?y.stringify(r):p.stringify(r):i.stringify(r)}return typeof r=="object"?e.stringify(r):""+r}static isKeyValueObject(r){let t=Object.keys(r);return t[0]==="key"&&t[1]==="value"}};export{m as OptionsTransformer,a as TYPES};//# sourceMappingURL=options-transformer.mjs.map
5
- //# sourceMappingURL=options-transformer.mjs.map
@@ -1 +0,0 @@
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"],"names":["arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys"],"mappings":"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","file":"options-transformer.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"]}
@@ -1,9 +0,0 @@
1
- import { ParamType } from './param-type.interface.mjs';
2
-
3
- interface KeyValueItem {
4
- key: string;
5
- value: string;
6
- }
7
- declare const arrayType: ParamType;
8
-
9
- export { type KeyValueItem, arrayType };
@@ -1,9 +0,0 @@
1
- import { ParamType } from './param-type.interface.js';
2
-
3
- interface KeyValueItem {
4
- key: string;
5
- value: string;
6
- }
7
- declare const arrayType: ParamType;
8
-
9
- export { type KeyValueItem, arrayType };
@@ -1,5 +0,0 @@
1
- 'use strict';/**
2
- @tikkhun/cli-core
3
- */
4
- var t={stringify(r){return r!=null&&r.length?r.toString():""},parse(r){return r.split(",")}};exports.arrayType=t;//# sourceMappingURL=array.type.js.map
5
- //# sourceMappingURL=array.type.js.map