@optima-chat/commerce-cli 1.0.0

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 (528) hide show
  1. package/.claude/CLAUDE.md +101 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1132 -0
  4. package/dist/api/rest/auth.d.ts +56 -0
  5. package/dist/api/rest/auth.d.ts.map +1 -0
  6. package/dist/api/rest/auth.js +150 -0
  7. package/dist/api/rest/auth.js.map +1 -0
  8. package/dist/api/rest/base.d.ts +7 -0
  9. package/dist/api/rest/base.d.ts.map +1 -0
  10. package/dist/api/rest/base.js +51 -0
  11. package/dist/api/rest/base.js.map +1 -0
  12. package/dist/api/rest/commerce.d.ts +730 -0
  13. package/dist/api/rest/commerce.d.ts.map +1 -0
  14. package/dist/api/rest/commerce.js +935 -0
  15. package/dist/api/rest/commerce.js.map +1 -0
  16. package/dist/commands/auth/index.d.ts +3 -0
  17. package/dist/commands/auth/index.d.ts.map +1 -0
  18. package/dist/commands/auth/index.js +14 -0
  19. package/dist/commands/auth/index.js.map +1 -0
  20. package/dist/commands/auth/login.d.ts +3 -0
  21. package/dist/commands/auth/login.d.ts.map +1 -0
  22. package/dist/commands/auth/login.js +194 -0
  23. package/dist/commands/auth/login.js.map +1 -0
  24. package/dist/commands/auth/logout.d.ts +3 -0
  25. package/dist/commands/auth/logout.d.ts.map +1 -0
  26. package/dist/commands/auth/logout.js +126 -0
  27. package/dist/commands/auth/logout.js.map +1 -0
  28. package/dist/commands/auth/switch.d.ts +3 -0
  29. package/dist/commands/auth/switch.d.ts.map +1 -0
  30. package/dist/commands/auth/switch.js +111 -0
  31. package/dist/commands/auth/switch.js.map +1 -0
  32. package/dist/commands/auth/test-refresh.d.ts +3 -0
  33. package/dist/commands/auth/test-refresh.d.ts.map +1 -0
  34. package/dist/commands/auth/test-refresh.js +43 -0
  35. package/dist/commands/auth/test-refresh.js.map +1 -0
  36. package/dist/commands/auth/whoami.d.ts +3 -0
  37. package/dist/commands/auth/whoami.d.ts.map +1 -0
  38. package/dist/commands/auth/whoami.js +117 -0
  39. package/dist/commands/auth/whoami.js.map +1 -0
  40. package/dist/commands/cleanup.d.ts +3 -0
  41. package/dist/commands/cleanup.d.ts.map +1 -0
  42. package/dist/commands/cleanup.js +100 -0
  43. package/dist/commands/cleanup.js.map +1 -0
  44. package/dist/commands/collection/add-products.d.ts +3 -0
  45. package/dist/commands/collection/add-products.d.ts.map +1 -0
  46. package/dist/commands/collection/add-products.js +105 -0
  47. package/dist/commands/collection/add-products.js.map +1 -0
  48. package/dist/commands/collection/create.d.ts +3 -0
  49. package/dist/commands/collection/create.d.ts.map +1 -0
  50. package/dist/commands/collection/create.js +154 -0
  51. package/dist/commands/collection/create.js.map +1 -0
  52. package/dist/commands/collection/delete.d.ts +3 -0
  53. package/dist/commands/collection/delete.d.ts.map +1 -0
  54. package/dist/commands/collection/delete.js +83 -0
  55. package/dist/commands/collection/delete.js.map +1 -0
  56. package/dist/commands/collection/get.d.ts +3 -0
  57. package/dist/commands/collection/get.d.ts.map +1 -0
  58. package/dist/commands/collection/get.js +83 -0
  59. package/dist/commands/collection/get.js.map +1 -0
  60. package/dist/commands/collection/index.d.ts +4 -0
  61. package/dist/commands/collection/index.d.ts.map +1 -0
  62. package/dist/commands/collection/index.js +22 -0
  63. package/dist/commands/collection/index.js.map +1 -0
  64. package/dist/commands/collection/list-products.d.ts +3 -0
  65. package/dist/commands/collection/list-products.d.ts.map +1 -0
  66. package/dist/commands/collection/list-products.js +100 -0
  67. package/dist/commands/collection/list-products.js.map +1 -0
  68. package/dist/commands/collection/list.d.ts +3 -0
  69. package/dist/commands/collection/list.d.ts.map +1 -0
  70. package/dist/commands/collection/list.js +98 -0
  71. package/dist/commands/collection/list.js.map +1 -0
  72. package/dist/commands/collection/remove-products.d.ts +3 -0
  73. package/dist/commands/collection/remove-products.d.ts.map +1 -0
  74. package/dist/commands/collection/remove-products.js +128 -0
  75. package/dist/commands/collection/remove-products.js.map +1 -0
  76. package/dist/commands/collection/update.d.ts +3 -0
  77. package/dist/commands/collection/update.d.ts.map +1 -0
  78. package/dist/commands/collection/update.js +166 -0
  79. package/dist/commands/collection/update.js.map +1 -0
  80. package/dist/commands/conversation/close.d.ts +3 -0
  81. package/dist/commands/conversation/close.d.ts.map +1 -0
  82. package/dist/commands/conversation/close.js +70 -0
  83. package/dist/commands/conversation/close.js.map +1 -0
  84. package/dist/commands/conversation/create.d.ts +3 -0
  85. package/dist/commands/conversation/create.d.ts.map +1 -0
  86. package/dist/commands/conversation/create.js +153 -0
  87. package/dist/commands/conversation/create.js.map +1 -0
  88. package/dist/commands/conversation/get.d.ts +3 -0
  89. package/dist/commands/conversation/get.d.ts.map +1 -0
  90. package/dist/commands/conversation/get.js +128 -0
  91. package/dist/commands/conversation/get.js.map +1 -0
  92. package/dist/commands/conversation/index.d.ts +3 -0
  93. package/dist/commands/conversation/index.d.ts.map +1 -0
  94. package/dist/commands/conversation/index.js +19 -0
  95. package/dist/commands/conversation/index.js.map +1 -0
  96. package/dist/commands/conversation/list.d.ts +3 -0
  97. package/dist/commands/conversation/list.d.ts.map +1 -0
  98. package/dist/commands/conversation/list.js +129 -0
  99. package/dist/commands/conversation/list.js.map +1 -0
  100. package/dist/commands/conversation/mark-read.d.ts +3 -0
  101. package/dist/commands/conversation/mark-read.d.ts.map +1 -0
  102. package/dist/commands/conversation/mark-read.js +69 -0
  103. package/dist/commands/conversation/mark-read.js.map +1 -0
  104. package/dist/commands/conversation/messages.d.ts +3 -0
  105. package/dist/commands/conversation/messages.d.ts.map +1 -0
  106. package/dist/commands/conversation/messages.js +128 -0
  107. package/dist/commands/conversation/messages.js.map +1 -0
  108. package/dist/commands/conversation/send.d.ts +3 -0
  109. package/dist/commands/conversation/send.d.ts.map +1 -0
  110. package/dist/commands/conversation/send.js +100 -0
  111. package/dist/commands/conversation/send.js.map +1 -0
  112. package/dist/commands/homepage/create.d.ts +3 -0
  113. package/dist/commands/homepage/create.d.ts.map +1 -0
  114. package/dist/commands/homepage/create.js +150 -0
  115. package/dist/commands/homepage/create.js.map +1 -0
  116. package/dist/commands/homepage/delete.d.ts +3 -0
  117. package/dist/commands/homepage/delete.d.ts.map +1 -0
  118. package/dist/commands/homepage/delete.js +83 -0
  119. package/dist/commands/homepage/delete.js.map +1 -0
  120. package/dist/commands/homepage/get.d.ts +3 -0
  121. package/dist/commands/homepage/get.d.ts.map +1 -0
  122. package/dist/commands/homepage/get.js +96 -0
  123. package/dist/commands/homepage/get.js.map +1 -0
  124. package/dist/commands/homepage/index.d.ts +4 -0
  125. package/dist/commands/homepage/index.d.ts.map +1 -0
  126. package/dist/commands/homepage/index.js +26 -0
  127. package/dist/commands/homepage/index.js.map +1 -0
  128. package/dist/commands/homepage/list.d.ts +3 -0
  129. package/dist/commands/homepage/list.d.ts.map +1 -0
  130. package/dist/commands/homepage/list.js +101 -0
  131. package/dist/commands/homepage/list.js.map +1 -0
  132. package/dist/commands/homepage/patch-settings.d.ts +3 -0
  133. package/dist/commands/homepage/patch-settings.d.ts.map +1 -0
  134. package/dist/commands/homepage/patch-settings.js +109 -0
  135. package/dist/commands/homepage/patch-settings.js.map +1 -0
  136. package/dist/commands/homepage/reorder.d.ts +3 -0
  137. package/dist/commands/homepage/reorder.d.ts.map +1 -0
  138. package/dist/commands/homepage/reorder.js +99 -0
  139. package/dist/commands/homepage/reorder.js.map +1 -0
  140. package/dist/commands/homepage/update-collections.d.ts +3 -0
  141. package/dist/commands/homepage/update-collections.d.ts.map +1 -0
  142. package/dist/commands/homepage/update-collections.js +93 -0
  143. package/dist/commands/homepage/update-collections.js.map +1 -0
  144. package/dist/commands/homepage/update-images.d.ts +3 -0
  145. package/dist/commands/homepage/update-images.d.ts.map +1 -0
  146. package/dist/commands/homepage/update-images.js +129 -0
  147. package/dist/commands/homepage/update-images.js.map +1 -0
  148. package/dist/commands/homepage/update-target.d.ts +3 -0
  149. package/dist/commands/homepage/update-target.d.ts.map +1 -0
  150. package/dist/commands/homepage/update-target.js +94 -0
  151. package/dist/commands/homepage/update-target.js.map +1 -0
  152. package/dist/commands/homepage/update.d.ts +3 -0
  153. package/dist/commands/homepage/update.d.ts.map +1 -0
  154. package/dist/commands/homepage/update.js +109 -0
  155. package/dist/commands/homepage/update.js.map +1 -0
  156. package/dist/commands/i18n/collection/create.d.ts +3 -0
  157. package/dist/commands/i18n/collection/create.d.ts.map +1 -0
  158. package/dist/commands/i18n/collection/create.js +147 -0
  159. package/dist/commands/i18n/collection/create.js.map +1 -0
  160. package/dist/commands/i18n/collection/delete.d.ts +3 -0
  161. package/dist/commands/i18n/collection/delete.d.ts.map +1 -0
  162. package/dist/commands/i18n/collection/delete.js +82 -0
  163. package/dist/commands/i18n/collection/delete.js.map +1 -0
  164. package/dist/commands/i18n/collection/get.d.ts +3 -0
  165. package/dist/commands/i18n/collection/get.d.ts.map +1 -0
  166. package/dist/commands/i18n/collection/get.js +85 -0
  167. package/dist/commands/i18n/collection/get.js.map +1 -0
  168. package/dist/commands/i18n/collection/index.d.ts +3 -0
  169. package/dist/commands/i18n/collection/index.d.ts.map +1 -0
  170. package/dist/commands/i18n/collection/index.js +14 -0
  171. package/dist/commands/i18n/collection/index.js.map +1 -0
  172. package/dist/commands/i18n/collection/list.d.ts +3 -0
  173. package/dist/commands/i18n/collection/list.d.ts.map +1 -0
  174. package/dist/commands/i18n/collection/list.js +89 -0
  175. package/dist/commands/i18n/collection/list.js.map +1 -0
  176. package/dist/commands/i18n/collection/update.d.ts +3 -0
  177. package/dist/commands/i18n/collection/update.d.ts.map +1 -0
  178. package/dist/commands/i18n/collection/update.js +108 -0
  179. package/dist/commands/i18n/collection/update.js.map +1 -0
  180. package/dist/commands/i18n/homepage/delete.d.ts +3 -0
  181. package/dist/commands/i18n/homepage/delete.d.ts.map +1 -0
  182. package/dist/commands/i18n/homepage/delete.js +90 -0
  183. package/dist/commands/i18n/homepage/delete.js.map +1 -0
  184. package/dist/commands/i18n/homepage/index.d.ts +4 -0
  185. package/dist/commands/i18n/homepage/index.d.ts.map +1 -0
  186. package/dist/commands/i18n/homepage/index.js +10 -0
  187. package/dist/commands/i18n/homepage/index.js.map +1 -0
  188. package/dist/commands/i18n/homepage/list.d.ts +3 -0
  189. package/dist/commands/i18n/homepage/list.d.ts.map +1 -0
  190. package/dist/commands/i18n/homepage/list.js +85 -0
  191. package/dist/commands/i18n/homepage/list.js.map +1 -0
  192. package/dist/commands/i18n/homepage/set.d.ts +3 -0
  193. package/dist/commands/i18n/homepage/set.d.ts.map +1 -0
  194. package/dist/commands/i18n/homepage/set.js +157 -0
  195. package/dist/commands/i18n/homepage/set.js.map +1 -0
  196. package/dist/commands/i18n/index.d.ts +3 -0
  197. package/dist/commands/i18n/index.d.ts.map +1 -0
  198. package/dist/commands/i18n/index.js +16 -0
  199. package/dist/commands/i18n/index.js.map +1 -0
  200. package/dist/commands/i18n/languages.d.ts +3 -0
  201. package/dist/commands/i18n/languages.d.ts.map +1 -0
  202. package/dist/commands/i18n/languages.js +90 -0
  203. package/dist/commands/i18n/languages.js.map +1 -0
  204. package/dist/commands/i18n/merchant/create.d.ts +3 -0
  205. package/dist/commands/i18n/merchant/create.d.ts.map +1 -0
  206. package/dist/commands/i18n/merchant/create.js +107 -0
  207. package/dist/commands/i18n/merchant/create.js.map +1 -0
  208. package/dist/commands/i18n/merchant/delete.d.ts +3 -0
  209. package/dist/commands/i18n/merchant/delete.d.ts.map +1 -0
  210. package/dist/commands/i18n/merchant/delete.js +57 -0
  211. package/dist/commands/i18n/merchant/delete.js.map +1 -0
  212. package/dist/commands/i18n/merchant/index.d.ts +3 -0
  213. package/dist/commands/i18n/merchant/index.d.ts.map +1 -0
  214. package/dist/commands/i18n/merchant/index.js +12 -0
  215. package/dist/commands/i18n/merchant/index.js.map +1 -0
  216. package/dist/commands/i18n/merchant/list.d.ts +3 -0
  217. package/dist/commands/i18n/merchant/list.d.ts.map +1 -0
  218. package/dist/commands/i18n/merchant/list.js +65 -0
  219. package/dist/commands/i18n/merchant/list.js.map +1 -0
  220. package/dist/commands/i18n/merchant/update.d.ts +3 -0
  221. package/dist/commands/i18n/merchant/update.d.ts.map +1 -0
  222. package/dist/commands/i18n/merchant/update.js +62 -0
  223. package/dist/commands/i18n/merchant/update.js.map +1 -0
  224. package/dist/commands/i18n/product/create.d.ts +3 -0
  225. package/dist/commands/i18n/product/create.d.ts.map +1 -0
  226. package/dist/commands/i18n/product/create.js +142 -0
  227. package/dist/commands/i18n/product/create.js.map +1 -0
  228. package/dist/commands/i18n/product/delete.d.ts +3 -0
  229. package/dist/commands/i18n/product/delete.d.ts.map +1 -0
  230. package/dist/commands/i18n/product/delete.js +67 -0
  231. package/dist/commands/i18n/product/delete.js.map +1 -0
  232. package/dist/commands/i18n/product/get.d.ts +3 -0
  233. package/dist/commands/i18n/product/get.d.ts.map +1 -0
  234. package/dist/commands/i18n/product/get.js +69 -0
  235. package/dist/commands/i18n/product/get.js.map +1 -0
  236. package/dist/commands/i18n/product/index.d.ts +3 -0
  237. package/dist/commands/i18n/product/index.d.ts.map +1 -0
  238. package/dist/commands/i18n/product/index.js +14 -0
  239. package/dist/commands/i18n/product/index.js.map +1 -0
  240. package/dist/commands/i18n/product/list.d.ts +3 -0
  241. package/dist/commands/i18n/product/list.d.ts.map +1 -0
  242. package/dist/commands/i18n/product/list.js +88 -0
  243. package/dist/commands/i18n/product/list.js.map +1 -0
  244. package/dist/commands/i18n/product/update.d.ts +3 -0
  245. package/dist/commands/i18n/product/update.d.ts.map +1 -0
  246. package/dist/commands/i18n/product/update.js +75 -0
  247. package/dist/commands/i18n/product/update.js.map +1 -0
  248. package/dist/commands/i18n/variant/create.d.ts +3 -0
  249. package/dist/commands/i18n/variant/create.d.ts.map +1 -0
  250. package/dist/commands/i18n/variant/create.js +179 -0
  251. package/dist/commands/i18n/variant/create.js.map +1 -0
  252. package/dist/commands/i18n/variant/delete.d.ts +3 -0
  253. package/dist/commands/i18n/variant/delete.d.ts.map +1 -0
  254. package/dist/commands/i18n/variant/delete.js +91 -0
  255. package/dist/commands/i18n/variant/delete.js.map +1 -0
  256. package/dist/commands/i18n/variant/get.d.ts +3 -0
  257. package/dist/commands/i18n/variant/get.d.ts.map +1 -0
  258. package/dist/commands/i18n/variant/get.js +75 -0
  259. package/dist/commands/i18n/variant/get.js.map +1 -0
  260. package/dist/commands/i18n/variant/index.d.ts +3 -0
  261. package/dist/commands/i18n/variant/index.d.ts.map +1 -0
  262. package/dist/commands/i18n/variant/index.js +14 -0
  263. package/dist/commands/i18n/variant/index.js.map +1 -0
  264. package/dist/commands/i18n/variant/list.d.ts +3 -0
  265. package/dist/commands/i18n/variant/list.d.ts.map +1 -0
  266. package/dist/commands/i18n/variant/list.js +79 -0
  267. package/dist/commands/i18n/variant/list.js.map +1 -0
  268. package/dist/commands/i18n/variant/update.d.ts +3 -0
  269. package/dist/commands/i18n/variant/update.d.ts.map +1 -0
  270. package/dist/commands/i18n/variant/update.js +113 -0
  271. package/dist/commands/i18n/variant/update.js.map +1 -0
  272. package/dist/commands/init.d.ts +3 -0
  273. package/dist/commands/init.d.ts.map +1 -0
  274. package/dist/commands/init.js +98 -0
  275. package/dist/commands/init.js.map +1 -0
  276. package/dist/commands/inventory/history.d.ts +3 -0
  277. package/dist/commands/inventory/history.d.ts.map +1 -0
  278. package/dist/commands/inventory/history.js +133 -0
  279. package/dist/commands/inventory/history.js.map +1 -0
  280. package/dist/commands/inventory/index.d.ts +3 -0
  281. package/dist/commands/inventory/index.d.ts.map +1 -0
  282. package/dist/commands/inventory/index.js +12 -0
  283. package/dist/commands/inventory/index.js.map +1 -0
  284. package/dist/commands/inventory/low-stock.d.ts +3 -0
  285. package/dist/commands/inventory/low-stock.d.ts.map +1 -0
  286. package/dist/commands/inventory/low-stock.js +100 -0
  287. package/dist/commands/inventory/low-stock.js.map +1 -0
  288. package/dist/commands/inventory/reserve.d.ts +3 -0
  289. package/dist/commands/inventory/reserve.d.ts.map +1 -0
  290. package/dist/commands/inventory/reserve.js +103 -0
  291. package/dist/commands/inventory/reserve.js.map +1 -0
  292. package/dist/commands/inventory/update.d.ts +3 -0
  293. package/dist/commands/inventory/update.d.ts.map +1 -0
  294. package/dist/commands/inventory/update.js +119 -0
  295. package/dist/commands/inventory/update.js.map +1 -0
  296. package/dist/commands/merchant/index.d.ts +3 -0
  297. package/dist/commands/merchant/index.d.ts.map +1 -0
  298. package/dist/commands/merchant/index.js +12 -0
  299. package/dist/commands/merchant/index.js.map +1 -0
  300. package/dist/commands/merchant/info.d.ts +3 -0
  301. package/dist/commands/merchant/info.d.ts.map +1 -0
  302. package/dist/commands/merchant/info.js +113 -0
  303. package/dist/commands/merchant/info.js.map +1 -0
  304. package/dist/commands/merchant/setup.d.ts +3 -0
  305. package/dist/commands/merchant/setup.d.ts.map +1 -0
  306. package/dist/commands/merchant/setup.js +228 -0
  307. package/dist/commands/merchant/setup.js.map +1 -0
  308. package/dist/commands/merchant/update.d.ts +3 -0
  309. package/dist/commands/merchant/update.d.ts.map +1 -0
  310. package/dist/commands/merchant/update.js +177 -0
  311. package/dist/commands/merchant/update.js.map +1 -0
  312. package/dist/commands/merchant/url.d.ts +3 -0
  313. package/dist/commands/merchant/url.d.ts.map +1 -0
  314. package/dist/commands/merchant/url.js +96 -0
  315. package/dist/commands/merchant/url.js.map +1 -0
  316. package/dist/commands/order/cancel.d.ts +3 -0
  317. package/dist/commands/order/cancel.d.ts.map +1 -0
  318. package/dist/commands/order/cancel.js +142 -0
  319. package/dist/commands/order/cancel.js.map +1 -0
  320. package/dist/commands/order/complete.d.ts +3 -0
  321. package/dist/commands/order/complete.d.ts.map +1 -0
  322. package/dist/commands/order/complete.js +99 -0
  323. package/dist/commands/order/complete.js.map +1 -0
  324. package/dist/commands/order/get.d.ts +3 -0
  325. package/dist/commands/order/get.d.ts.map +1 -0
  326. package/dist/commands/order/get.js +80 -0
  327. package/dist/commands/order/get.js.map +1 -0
  328. package/dist/commands/order/index.d.ts +3 -0
  329. package/dist/commands/order/index.d.ts.map +1 -0
  330. package/dist/commands/order/index.js +16 -0
  331. package/dist/commands/order/index.js.map +1 -0
  332. package/dist/commands/order/list.d.ts +3 -0
  333. package/dist/commands/order/list.d.ts.map +1 -0
  334. package/dist/commands/order/list.js +135 -0
  335. package/dist/commands/order/list.js.map +1 -0
  336. package/dist/commands/order/mark-delivered.d.ts +3 -0
  337. package/dist/commands/order/mark-delivered.d.ts.map +1 -0
  338. package/dist/commands/order/mark-delivered.js +70 -0
  339. package/dist/commands/order/mark-delivered.js.map +1 -0
  340. package/dist/commands/order/ship.d.ts +3 -0
  341. package/dist/commands/order/ship.d.ts.map +1 -0
  342. package/dist/commands/order/ship.js +124 -0
  343. package/dist/commands/order/ship.js.map +1 -0
  344. package/dist/commands/product/add-images.d.ts +3 -0
  345. package/dist/commands/product/add-images.d.ts.map +1 -0
  346. package/dist/commands/product/add-images.js +210 -0
  347. package/dist/commands/product/add-images.js.map +1 -0
  348. package/dist/commands/product/create.d.ts +3 -0
  349. package/dist/commands/product/create.d.ts.map +1 -0
  350. package/dist/commands/product/create.js +369 -0
  351. package/dist/commands/product/create.js.map +1 -0
  352. package/dist/commands/product/delete.d.ts +3 -0
  353. package/dist/commands/product/delete.d.ts.map +1 -0
  354. package/dist/commands/product/delete.js +100 -0
  355. package/dist/commands/product/delete.js.map +1 -0
  356. package/dist/commands/product/get.d.ts +3 -0
  357. package/dist/commands/product/get.d.ts.map +1 -0
  358. package/dist/commands/product/get.js +123 -0
  359. package/dist/commands/product/get.js.map +1 -0
  360. package/dist/commands/product/index.d.ts +3 -0
  361. package/dist/commands/product/index.d.ts.map +1 -0
  362. package/dist/commands/product/index.js +18 -0
  363. package/dist/commands/product/index.js.map +1 -0
  364. package/dist/commands/product/list.d.ts +3 -0
  365. package/dist/commands/product/list.d.ts.map +1 -0
  366. package/dist/commands/product/list.js +154 -0
  367. package/dist/commands/product/list.js.map +1 -0
  368. package/dist/commands/product/update.d.ts +3 -0
  369. package/dist/commands/product/update.d.ts.map +1 -0
  370. package/dist/commands/product/update.js +183 -0
  371. package/dist/commands/product/update.js.map +1 -0
  372. package/dist/commands/product/url.d.ts +3 -0
  373. package/dist/commands/product/url.d.ts.map +1 -0
  374. package/dist/commands/product/url.js +124 -0
  375. package/dist/commands/product/url.js.map +1 -0
  376. package/dist/commands/refund/create.d.ts +3 -0
  377. package/dist/commands/refund/create.d.ts.map +1 -0
  378. package/dist/commands/refund/create.js +161 -0
  379. package/dist/commands/refund/create.js.map +1 -0
  380. package/dist/commands/refund/get.d.ts +3 -0
  381. package/dist/commands/refund/get.d.ts.map +1 -0
  382. package/dist/commands/refund/get.js +93 -0
  383. package/dist/commands/refund/get.js.map +1 -0
  384. package/dist/commands/refund/index.d.ts +3 -0
  385. package/dist/commands/refund/index.d.ts.map +1 -0
  386. package/dist/commands/refund/index.js +8 -0
  387. package/dist/commands/refund/index.js.map +1 -0
  388. package/dist/commands/shipping/calculate.d.ts +3 -0
  389. package/dist/commands/shipping/calculate.d.ts.map +1 -0
  390. package/dist/commands/shipping/calculate.js +183 -0
  391. package/dist/commands/shipping/calculate.js.map +1 -0
  392. package/dist/commands/shipping/history.d.ts +3 -0
  393. package/dist/commands/shipping/history.d.ts.map +1 -0
  394. package/dist/commands/shipping/history.js +111 -0
  395. package/dist/commands/shipping/history.js.map +1 -0
  396. package/dist/commands/shipping/index.d.ts +3 -0
  397. package/dist/commands/shipping/index.d.ts.map +1 -0
  398. package/dist/commands/shipping/index.js +10 -0
  399. package/dist/commands/shipping/index.js.map +1 -0
  400. package/dist/commands/shipping/update-status.d.ts +3 -0
  401. package/dist/commands/shipping/update-status.d.ts.map +1 -0
  402. package/dist/commands/shipping/update-status.js +138 -0
  403. package/dist/commands/shipping/update-status.js.map +1 -0
  404. package/dist/commands/shipping-zone/create.d.ts +3 -0
  405. package/dist/commands/shipping-zone/create.d.ts.map +1 -0
  406. package/dist/commands/shipping-zone/create.js +191 -0
  407. package/dist/commands/shipping-zone/create.js.map +1 -0
  408. package/dist/commands/shipping-zone/delete.d.ts +3 -0
  409. package/dist/commands/shipping-zone/delete.d.ts.map +1 -0
  410. package/dist/commands/shipping-zone/delete.js +97 -0
  411. package/dist/commands/shipping-zone/delete.js.map +1 -0
  412. package/dist/commands/shipping-zone/index.d.ts +3 -0
  413. package/dist/commands/shipping-zone/index.d.ts.map +1 -0
  414. package/dist/commands/shipping-zone/index.js +14 -0
  415. package/dist/commands/shipping-zone/index.js.map +1 -0
  416. package/dist/commands/shipping-zone/list.d.ts +3 -0
  417. package/dist/commands/shipping-zone/list.d.ts.map +1 -0
  418. package/dist/commands/shipping-zone/list.js +91 -0
  419. package/dist/commands/shipping-zone/list.js.map +1 -0
  420. package/dist/commands/shipping-zone/rates.d.ts +4 -0
  421. package/dist/commands/shipping-zone/rates.d.ts.map +1 -0
  422. package/dist/commands/shipping-zone/rates.js +285 -0
  423. package/dist/commands/shipping-zone/rates.js.map +1 -0
  424. package/dist/commands/test/health.d.ts +3 -0
  425. package/dist/commands/test/health.d.ts.map +1 -0
  426. package/dist/commands/test/health.js +126 -0
  427. package/dist/commands/test/health.js.map +1 -0
  428. package/dist/commands/test/index.d.ts +3 -0
  429. package/dist/commands/test/index.d.ts.map +1 -0
  430. package/dist/commands/test/index.js +8 -0
  431. package/dist/commands/test/index.js.map +1 -0
  432. package/dist/commands/test/smoke.d.ts +3 -0
  433. package/dist/commands/test/smoke.d.ts.map +1 -0
  434. package/dist/commands/test/smoke.js +201 -0
  435. package/dist/commands/test/smoke.js.map +1 -0
  436. package/dist/commands/transfer/index.d.ts +3 -0
  437. package/dist/commands/transfer/index.d.ts.map +1 -0
  438. package/dist/commands/transfer/index.js +8 -0
  439. package/dist/commands/transfer/index.js.map +1 -0
  440. package/dist/commands/transfer/list.d.ts +3 -0
  441. package/dist/commands/transfer/list.d.ts.map +1 -0
  442. package/dist/commands/transfer/list.js +90 -0
  443. package/dist/commands/transfer/list.js.map +1 -0
  444. package/dist/commands/transfer/summary.d.ts +3 -0
  445. package/dist/commands/transfer/summary.d.ts.map +1 -0
  446. package/dist/commands/transfer/summary.js +68 -0
  447. package/dist/commands/transfer/summary.js.map +1 -0
  448. package/dist/commands/upload/file.d.ts +3 -0
  449. package/dist/commands/upload/file.d.ts.map +1 -0
  450. package/dist/commands/upload/file.js +79 -0
  451. package/dist/commands/upload/file.js.map +1 -0
  452. package/dist/commands/upload/image.d.ts +3 -0
  453. package/dist/commands/upload/image.d.ts.map +1 -0
  454. package/dist/commands/upload/image.js +92 -0
  455. package/dist/commands/upload/image.js.map +1 -0
  456. package/dist/commands/upload/index.d.ts +3 -0
  457. package/dist/commands/upload/index.d.ts.map +1 -0
  458. package/dist/commands/upload/index.js +10 -0
  459. package/dist/commands/upload/index.js.map +1 -0
  460. package/dist/commands/upload/video.d.ts +3 -0
  461. package/dist/commands/upload/video.d.ts.map +1 -0
  462. package/dist/commands/upload/video.js +78 -0
  463. package/dist/commands/upload/video.js.map +1 -0
  464. package/dist/commands/variant/add-images.d.ts +3 -0
  465. package/dist/commands/variant/add-images.d.ts.map +1 -0
  466. package/dist/commands/variant/add-images.js +146 -0
  467. package/dist/commands/variant/add-images.js.map +1 -0
  468. package/dist/commands/variant/create.d.ts +3 -0
  469. package/dist/commands/variant/create.d.ts.map +1 -0
  470. package/dist/commands/variant/create.js +189 -0
  471. package/dist/commands/variant/create.js.map +1 -0
  472. package/dist/commands/variant/delete.d.ts +3 -0
  473. package/dist/commands/variant/delete.d.ts.map +1 -0
  474. package/dist/commands/variant/delete.js +110 -0
  475. package/dist/commands/variant/delete.js.map +1 -0
  476. package/dist/commands/variant/index.d.ts +3 -0
  477. package/dist/commands/variant/index.d.ts.map +1 -0
  478. package/dist/commands/variant/index.js +14 -0
  479. package/dist/commands/variant/index.js.map +1 -0
  480. package/dist/commands/variant/list.d.ts +3 -0
  481. package/dist/commands/variant/list.d.ts.map +1 -0
  482. package/dist/commands/variant/list.js +98 -0
  483. package/dist/commands/variant/list.js.map +1 -0
  484. package/dist/commands/variant/update.d.ts +3 -0
  485. package/dist/commands/variant/update.d.ts.map +1 -0
  486. package/dist/commands/variant/update.js +141 -0
  487. package/dist/commands/variant/update.js.map +1 -0
  488. package/dist/index.d.ts +3 -0
  489. package/dist/index.d.ts.map +1 -0
  490. package/dist/index.js +133 -0
  491. package/dist/index.js.map +1 -0
  492. package/dist/postinstall.d.ts +3 -0
  493. package/dist/postinstall.d.ts.map +1 -0
  494. package/dist/postinstall.js +108 -0
  495. package/dist/postinstall.js.map +1 -0
  496. package/dist/preuninstall.d.ts +3 -0
  497. package/dist/preuninstall.d.ts.map +1 -0
  498. package/dist/preuninstall.js +53 -0
  499. package/dist/preuninstall.js.map +1 -0
  500. package/dist/utils/config.d.ts +110 -0
  501. package/dist/utils/config.d.ts.map +1 -0
  502. package/dist/utils/config.js +347 -0
  503. package/dist/utils/config.js.map +1 -0
  504. package/dist/utils/error.d.ts +35 -0
  505. package/dist/utils/error.d.ts.map +1 -0
  506. package/dist/utils/error.js +110 -0
  507. package/dist/utils/error.js.map +1 -0
  508. package/dist/utils/format.d.ts +77 -0
  509. package/dist/utils/format.d.ts.map +1 -0
  510. package/dist/utils/format.js +406 -0
  511. package/dist/utils/format.js.map +1 -0
  512. package/dist/utils/helpText.d.ts +116 -0
  513. package/dist/utils/helpText.d.ts.map +1 -0
  514. package/dist/utils/helpText.js +138 -0
  515. package/dist/utils/helpText.js.map +1 -0
  516. package/dist/utils/interactive.d.ts +60 -0
  517. package/dist/utils/interactive.d.ts.map +1 -0
  518. package/dist/utils/interactive.js +118 -0
  519. package/dist/utils/interactive.js.map +1 -0
  520. package/dist/utils/output.d.ts +82 -0
  521. package/dist/utils/output.d.ts.map +1 -0
  522. package/dist/utils/output.js +151 -0
  523. package/dist/utils/output.js.map +1 -0
  524. package/dist/utils/validation.d.ts +16 -0
  525. package/dist/utils/validation.d.ts.map +1 -0
  526. package/dist/utils/validation.js +46 -0
  527. package/dist/utils/validation.js.map +1 -0
  528. package/package.json +73 -0
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Add enhanced help text sections to a Commander command
3
+ *
4
+ * This utility adds LLM-friendly documentation including:
5
+ * - Real usage examples
6
+ * - JSON output structure
7
+ * - Related commands for workflow guidance
8
+ * - Important notes and best practices
9
+ *
10
+ * @param command - The Commander command to enhance
11
+ * @param options - Help text content options
12
+ * @returns The enhanced command (for chaining)
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const cmd = new Command('create')
17
+ * .description('Create a product')
18
+ * .option('--title <string>', 'Product name (required)')
19
+ * .option('--price <number>', 'Product price (required)');
20
+ *
21
+ * addEnhancedHelp(cmd, {
22
+ * examples: [
23
+ * '# Create a basic product',
24
+ * '$ commerce product create --title "Mug" --price 29.99',
25
+ * '',
26
+ * '# Create with JSON output',
27
+ * '$ commerce product create --title "Mug" --price 29.99 --json'
28
+ * ],
29
+ * output: {
30
+ * example: JSON.stringify({
31
+ * success: true,
32
+ * data: { product_id: 'uuid', name: 'Mug', price: '29.99' }
33
+ * }, null, 2)
34
+ * },
35
+ * relatedCommands: [
36
+ * { command: 'product list', description: 'View created products' },
37
+ * { command: 'upload image', description: 'Upload product images' }
38
+ * ],
39
+ * notes: [
40
+ * 'title and price are required parameters',
41
+ * 'Upload images first to get media IDs'
42
+ * ]
43
+ * });
44
+ * ```
45
+ */
46
+ export function addEnhancedHelp(command, options) {
47
+ command.addHelpText('after', () => {
48
+ let text = '';
49
+ // Add Examples section
50
+ if (options.examples && options.examples.length > 0) {
51
+ text += '\nExamples:\n';
52
+ options.examples.forEach((line) => {
53
+ text += ` ${line}\n`;
54
+ });
55
+ }
56
+ // Add Output section
57
+ if (options.output) {
58
+ text += '\nOutput (JSON):\n';
59
+ if (options.output.description) {
60
+ text += ` ${options.output.description}\n\n`;
61
+ }
62
+ // Indent JSON output
63
+ const lines = options.output.example.split('\n');
64
+ lines.forEach((line) => {
65
+ text += ` ${line}\n`;
66
+ });
67
+ }
68
+ // Add Related Commands section
69
+ if (options.relatedCommands && options.relatedCommands.length > 0) {
70
+ text += '\nRelated Commands:\n';
71
+ options.relatedCommands.forEach((rc) => {
72
+ const commandPadded = `commerce ${rc.command}`.padEnd(28);
73
+ text += ` ${commandPadded}${rc.description}\n`;
74
+ });
75
+ }
76
+ // Add Notes section
77
+ if (options.notes && options.notes.length > 0) {
78
+ text += '\nNotes:\n';
79
+ options.notes.forEach((note) => {
80
+ text += ` - ${note}\n`;
81
+ });
82
+ }
83
+ return text;
84
+ });
85
+ return command;
86
+ }
87
+ /**
88
+ * Standardized output format documentation for success responses
89
+ */
90
+ export const OUTPUT_SUCCESS_TEMPLATE = {
91
+ success: true,
92
+ data: {
93
+ '...': 'Resource data here',
94
+ },
95
+ message: 'Optional success message',
96
+ };
97
+ /**
98
+ * Standardized output format documentation for error responses
99
+ */
100
+ export const OUTPUT_ERROR_TEMPLATE = {
101
+ success: false,
102
+ error: {
103
+ code: 'ERROR_CODE',
104
+ message: 'Error description',
105
+ },
106
+ };
107
+ /**
108
+ * Helper to format option description with type and requirement info
109
+ *
110
+ * @param description - The option description
111
+ * @param type - The parameter type (string, number, uuid, etc.)
112
+ * @param required - Whether the parameter is required
113
+ * @param defaultValue - Default value if any
114
+ * @returns Formatted description
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * formatOptionDescription('Product name', 'string', true)
119
+ * // Returns: "Product name (required)"
120
+ *
121
+ * formatOptionDescription('Stock quantity', 'number', false, 0)
122
+ * // Returns: "Stock quantity (default: 0)"
123
+ * ```
124
+ */
125
+ export function formatOptionDescription(description, type, required, defaultValue) {
126
+ let formatted = description;
127
+ if (type) {
128
+ formatted = `${formatted} <${type}>`;
129
+ }
130
+ if (required) {
131
+ formatted = `${formatted} (required)`;
132
+ }
133
+ else if (defaultValue !== undefined) {
134
+ formatted = `${formatted} (default: ${defaultValue})`;
135
+ }
136
+ return formatted;
137
+ }
138
+ //# sourceMappingURL=helpText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpText.js","sourceRoot":"","sources":["../../src/utils/helpText.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * 交互式环境检测工具
3
+ *
4
+ * 自动检测是否应该使用交互式提示(inquirer)
5
+ * 在非交互环境(AI、CI/CD)中返回 false
6
+ */
7
+ /**
8
+ * 检测当前是否为交互式环境
9
+ *
10
+ * @returns true 如果在交互式终端环境,false 如果在非交互环境
11
+ *
12
+ * 检测逻辑:
13
+ * 0. OPTIMA_INTERACTIVE=1 - 显式启用(最高优先级)
14
+ * 1. process.stdin.isTTY - 标准输入是否为终端
15
+ * 2. CI 环境变量 - 是否在 CI/CD 环境
16
+ * 3. 显式禁用标志 - 用户手动禁用交互模式
17
+ */
18
+ export declare function isInteractiveEnvironment(): boolean;
19
+ /**
20
+ * 确保参数已提供,否则抛出验证错误
21
+ *
22
+ * 在非交互环境中使用此函数代替 inquirer.prompt()
23
+ *
24
+ * @param value - 参数值
25
+ * @param paramName - 参数名称(用于错误消息)
26
+ * @param friendlyName - 友好名称(用于错误消息)
27
+ * @returns 去除空格的参数值
28
+ * @throws ValidationError 如果值为空
29
+ *
30
+ * @example
31
+ * // 非交互模式下验证必需参数
32
+ * const title = requireParam(options.title, 'title', '商品名称');
33
+ * // 如果 options.title 为空,抛出:缺少必需参数: --title (商品名称)
34
+ */
35
+ export declare function requireParam(value: string | undefined | null, paramName: string, friendlyName?: string): string;
36
+ /**
37
+ * 确保数值参数已提供且有效
38
+ *
39
+ * @param value - 参数值
40
+ * @param paramName - 参数名称
41
+ * @param friendlyName - 友好名称
42
+ * @param min - 最小值(可选)
43
+ * @param max - 最大值(可选)
44
+ * @returns 解析后的数值
45
+ * @throws ValidationError 如果值无效
46
+ *
47
+ * @example
48
+ * // 验证价格参数(必须 > 0.01)
49
+ * const price = requireNumberParam(options.price, 'price', '商品价格', 0.01);
50
+ *
51
+ * @example
52
+ * // 验证库存参数(必须 >= 0)
53
+ * const stock = requireNumberParam(options.stock, 'stock', '库存数量', 0);
54
+ *
55
+ * @example
56
+ * // 验证重量参数(必须 0.1-1000 kg)
57
+ * const weight = requireNumberParam(options.weight, 'weight', '重量', 0.1, 1000);
58
+ */
59
+ export declare function requireNumberParam(value: string | undefined | null, paramName: string, friendlyName?: string, min?: number, max?: number): number;
60
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAwClD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CASR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,GACb,MAAM,CAiCR"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * 交互式环境检测工具
3
+ *
4
+ * 自动检测是否应该使用交互式提示(inquirer)
5
+ * 在非交互环境(AI、CI/CD)中返回 false
6
+ */
7
+ import { ValidationError } from './error.js';
8
+ /**
9
+ * 检测当前是否为交互式环境
10
+ *
11
+ * @returns true 如果在交互式终端环境,false 如果在非交互环境
12
+ *
13
+ * 检测逻辑:
14
+ * 0. OPTIMA_INTERACTIVE=1 - 显式启用(最高优先级)
15
+ * 1. process.stdin.isTTY - 标准输入是否为终端
16
+ * 2. CI 环境变量 - 是否在 CI/CD 环境
17
+ * 3. 显式禁用标志 - 用户手动禁用交互模式
18
+ */
19
+ export function isInteractiveEnvironment() {
20
+ // 检测 0:显式启用标志(最高优先级)
21
+ // 允许用户在 CI 环境中强制启用交互模式(用于调试)
22
+ if (process.env.OPTIMA_INTERACTIVE === '1') {
23
+ return true;
24
+ }
25
+ // 检测 1:标准输入是否为 TTY
26
+ // 非 TTY 场景:管道、重定向、AI 环境、后台进程
27
+ if (!process.stdin.isTTY) {
28
+ return false;
29
+ }
30
+ // 检测 2:CI 环境
31
+ // 常见 CI 环境变量
32
+ const ciEnvVars = [
33
+ 'CI', // 通用 CI 标志
34
+ 'CONTINUOUS_INTEGRATION', // Jenkins, Travis
35
+ 'BUILD_ID', // Jenkins
36
+ 'GITHUB_ACTIONS', // GitHub Actions
37
+ 'GITLAB_CI', // GitLab CI
38
+ 'CIRCLECI', // CircleCI
39
+ 'TRAVIS', // Travis CI
40
+ ];
41
+ for (const envVar of ciEnvVars) {
42
+ if (process.env[envVar] === 'true' || process.env[envVar] === '1') {
43
+ return false;
44
+ }
45
+ }
46
+ // 检测 3:显式禁用标志
47
+ // 用户可以通过环境变量强制禁用交互模式
48
+ if (process.env.NON_INTERACTIVE === '1' ||
49
+ process.env.OPTIMA_NON_INTERACTIVE === 'true') {
50
+ return false;
51
+ }
52
+ // 默认:允许交互
53
+ return true;
54
+ }
55
+ /**
56
+ * 确保参数已提供,否则抛出验证错误
57
+ *
58
+ * 在非交互环境中使用此函数代替 inquirer.prompt()
59
+ *
60
+ * @param value - 参数值
61
+ * @param paramName - 参数名称(用于错误消息)
62
+ * @param friendlyName - 友好名称(用于错误消息)
63
+ * @returns 去除空格的参数值
64
+ * @throws ValidationError 如果值为空
65
+ *
66
+ * @example
67
+ * // 非交互模式下验证必需参数
68
+ * const title = requireParam(options.title, 'title', '商品名称');
69
+ * // 如果 options.title 为空,抛出:缺少必需参数: --title (商品名称)
70
+ */
71
+ export function requireParam(value, paramName, friendlyName) {
72
+ if (!value || value.trim().length === 0) {
73
+ const displayName = friendlyName || paramName;
74
+ throw new ValidationError(`缺少必需参数: --${paramName} (${displayName})`, paramName);
75
+ }
76
+ return value.trim();
77
+ }
78
+ /**
79
+ * 确保数值参数已提供且有效
80
+ *
81
+ * @param value - 参数值
82
+ * @param paramName - 参数名称
83
+ * @param friendlyName - 友好名称
84
+ * @param min - 最小值(可选)
85
+ * @param max - 最大值(可选)
86
+ * @returns 解析后的数值
87
+ * @throws ValidationError 如果值无效
88
+ *
89
+ * @example
90
+ * // 验证价格参数(必须 > 0.01)
91
+ * const price = requireNumberParam(options.price, 'price', '商品价格', 0.01);
92
+ *
93
+ * @example
94
+ * // 验证库存参数(必须 >= 0)
95
+ * const stock = requireNumberParam(options.stock, 'stock', '库存数量', 0);
96
+ *
97
+ * @example
98
+ * // 验证重量参数(必须 0.1-1000 kg)
99
+ * const weight = requireNumberParam(options.weight, 'weight', '重量', 0.1, 1000);
100
+ */
101
+ export function requireNumberParam(value, paramName, friendlyName, min, max) {
102
+ if (!value || value.trim().length === 0) {
103
+ const displayName = friendlyName || paramName;
104
+ throw new ValidationError(`缺少必需参数: --${paramName} (${displayName})`, paramName);
105
+ }
106
+ const numValue = parseFloat(value);
107
+ if (isNaN(numValue)) {
108
+ throw new ValidationError(`参数 --${paramName} 必须是有效数字: ${value}`, paramName);
109
+ }
110
+ if (min !== undefined && numValue < min) {
111
+ throw new ValidationError(`参数 --${paramName} 必须大于等于 ${min}`, paramName);
112
+ }
113
+ if (max !== undefined && numValue > max) {
114
+ throw new ValidationError(`参数 --${paramName} 必须小于等于 ${max}`, paramName);
115
+ }
116
+ return numValue;
117
+ }
118
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { Ora } from 'ora';
2
+ /**
3
+ * 输出格式枚举
4
+ */
5
+ export declare enum OutputFormat {
6
+ JSON = "json",
7
+ PRETTY = "pretty"
8
+ }
9
+ /**
10
+ * CLI 响应结构
11
+ */
12
+ export interface CliResponse {
13
+ success: boolean;
14
+ data?: any;
15
+ error?: {
16
+ code: string;
17
+ message: string;
18
+ details?: any;
19
+ };
20
+ message?: string;
21
+ }
22
+ /**
23
+ * Mock Spinner(JSON 模式下不显示 spinner)
24
+ */
25
+ declare class MockSpinner {
26
+ succeed(_message?: string): this;
27
+ fail(_message?: string): this;
28
+ stop(): this;
29
+ start(): this;
30
+ warn(_message?: string): this;
31
+ info(_message?: string): this;
32
+ }
33
+ /**
34
+ * 输出管理器
35
+ */
36
+ export declare class OutputManager {
37
+ private _format?;
38
+ constructor();
39
+ /**
40
+ * 获取输出格式(延迟初始化)
41
+ */
42
+ private ensureFormat;
43
+ /**
44
+ * 初始化输出管理器(向后兼容,现在不需要了)
45
+ * @deprecated 不再需要显式调用
46
+ */
47
+ init(_programOpts: any): void;
48
+ /**
49
+ * 获取当前输出格式
50
+ */
51
+ getFormat(): OutputFormat;
52
+ /**
53
+ * 输出成功响应
54
+ */
55
+ success(data: any, message?: string): void;
56
+ /**
57
+ * 输出错误响应
58
+ */
59
+ error(error: Error | string, code?: string): never;
60
+ /**
61
+ * 创建 spinner(JSON 模式下返回 mock)
62
+ */
63
+ spinner(text: string): Ora | MockSpinner;
64
+ /**
65
+ * 判断是否为 JSON 模式
66
+ */
67
+ isJson(): boolean;
68
+ /**
69
+ * 判断是否为 Pretty 模式
70
+ */
71
+ isPretty(): boolean;
72
+ /**
73
+ * 输出简单消息(仅 Pretty 模式)
74
+ */
75
+ log(message: string, color?: 'green' | 'yellow' | 'red' | 'cyan' | 'gray'): void;
76
+ }
77
+ /**
78
+ * 全局输出管理器实例
79
+ */
80
+ export declare const output: OutputManager;
81
+ export {};
82
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,cAAM,WAAW;IACf,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM;IACzB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;IACtB,IAAI;IACJ,KAAK;IACL,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;IACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;CACvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAC,CAAe;;IAM/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;;OAGG;IACH,IAAI,CAAC,YAAY,EAAE,GAAG;IAItB;;OAEG;IACH,SAAS,IAAI,YAAY;IAKzB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB1C;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK;IA2BlD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,WAAW;IAQxC;;OAEG;IACH,MAAM,IAAI,OAAO;IAKjB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAKnB;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;CAMjF;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,eAAsB,CAAC"}
@@ -0,0 +1,151 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ /**
4
+ * 输出格式枚举
5
+ */
6
+ export var OutputFormat;
7
+ (function (OutputFormat) {
8
+ OutputFormat["JSON"] = "json";
9
+ OutputFormat["PRETTY"] = "pretty";
10
+ })(OutputFormat || (OutputFormat = {}));
11
+ /**
12
+ * Mock Spinner(JSON 模式下不显示 spinner)
13
+ */
14
+ class MockSpinner {
15
+ succeed(_message) { return this; }
16
+ fail(_message) { return this; }
17
+ stop() { return this; }
18
+ start() { return this; }
19
+ warn(_message) { return this; }
20
+ info(_message) { return this; }
21
+ }
22
+ /**
23
+ * 输出管理器
24
+ */
25
+ export class OutputManager {
26
+ _format;
27
+ constructor() {
28
+ // 延迟初始化,在第一次访问时确定格式
29
+ }
30
+ /**
31
+ * 获取输出格式(延迟初始化)
32
+ */
33
+ ensureFormat() {
34
+ if (this._format !== undefined) {
35
+ return;
36
+ }
37
+ // 优先级:CLI 参数 > 环境变量 > 默认值
38
+ const args = process.argv;
39
+ if (args.includes('--json')) {
40
+ this._format = OutputFormat.JSON;
41
+ }
42
+ else if (args.includes('--pretty')) {
43
+ this._format = OutputFormat.PRETTY;
44
+ }
45
+ else {
46
+ const envFormat = process.env.OPTIMA_CLI_FORMAT?.toLowerCase();
47
+ this._format = envFormat === 'pretty'
48
+ ? OutputFormat.PRETTY
49
+ : OutputFormat.JSON;
50
+ }
51
+ }
52
+ /**
53
+ * 初始化输出管理器(向后兼容,现在不需要了)
54
+ * @deprecated 不再需要显式调用
55
+ */
56
+ init(_programOpts) {
57
+ // 保留此方法以向后兼容,但不再需要
58
+ }
59
+ /**
60
+ * 获取当前输出格式
61
+ */
62
+ getFormat() {
63
+ this.ensureFormat();
64
+ return this._format;
65
+ }
66
+ /**
67
+ * 输出成功响应
68
+ */
69
+ success(data, message) {
70
+ this.ensureFormat();
71
+ if (this._format === OutputFormat.JSON) {
72
+ const response = {
73
+ success: true,
74
+ data,
75
+ ...(message && { message })
76
+ };
77
+ console.log(JSON.stringify(response, null, 2));
78
+ }
79
+ else {
80
+ // Pretty 模式:由调用方负责格式化输出
81
+ // 此方法在 Pretty 模式下不输出任何内容
82
+ // 调用方应该使用原有的格式化逻辑
83
+ }
84
+ }
85
+ /**
86
+ * 输出错误响应
87
+ */
88
+ error(error, code) {
89
+ this.ensureFormat();
90
+ const errorObj = typeof error === 'string' ? new Error(error) : error;
91
+ if (this._format === OutputFormat.JSON) {
92
+ const response = {
93
+ success: false,
94
+ error: {
95
+ code: code || errorObj.name || 'UNKNOWN_ERROR',
96
+ message: errorObj.message,
97
+ ...(process.env.DEBUG === 'true' && {
98
+ stack: errorObj.stack,
99
+ details: errorObj.details
100
+ })
101
+ }
102
+ };
103
+ console.log(JSON.stringify(response, null, 2));
104
+ }
105
+ else {
106
+ // Pretty 模式:使用原有错误处理
107
+ const { handleError } = require('./error.js');
108
+ handleError(errorObj);
109
+ }
110
+ // 确保函数永远不返回
111
+ process.exit(1);
112
+ }
113
+ /**
114
+ * 创建 spinner(JSON 模式下返回 mock)
115
+ */
116
+ spinner(text) {
117
+ this.ensureFormat();
118
+ if (this._format === OutputFormat.JSON) {
119
+ return new MockSpinner();
120
+ }
121
+ return ora(text).start();
122
+ }
123
+ /**
124
+ * 判断是否为 JSON 模式
125
+ */
126
+ isJson() {
127
+ this.ensureFormat();
128
+ return this._format === OutputFormat.JSON;
129
+ }
130
+ /**
131
+ * 判断是否为 Pretty 模式
132
+ */
133
+ isPretty() {
134
+ this.ensureFormat();
135
+ return this._format === OutputFormat.PRETTY;
136
+ }
137
+ /**
138
+ * 输出简单消息(仅 Pretty 模式)
139
+ */
140
+ log(message, color) {
141
+ if (this.isPretty()) {
142
+ const coloredMessage = color ? chalk[color](message) : message;
143
+ console.log(coloredMessage);
144
+ }
145
+ }
146
+ }
147
+ /**
148
+ * 全局输出管理器实例
149
+ */
150
+ export const output = new OutputManager();
151
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAY,MAAM,KAAK,CAAC;AAE/B;;GAEG;AACH,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,iCAAiB,CAAA;AACnB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAgBD;;GAEG;AACH,MAAM,WAAW;IACf,OAAO,CAAC,QAAiB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAiB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IACvB,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,QAAiB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,QAAiB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,OAAO,CAAgB;IAE/B;QACE,oBAAoB;IACtB,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;YAC/D,IAAI,CAAC,OAAO,GAAG,SAAS,KAAK,QAAQ;gBACnC,CAAC,CAAC,YAAY,CAAC,MAAM;gBACrB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,YAAiB;QACpB,mBAAmB;IACrB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAS,EAAE,OAAgB;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAgB;gBAC5B,OAAO,EAAE,IAAI;gBACb,IAAI;gBACJ,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;aAC5B,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,wBAAwB;YACxB,yBAAyB;YACzB,kBAAkB;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAqB,EAAE,IAAa;QACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEtE,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAgB;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,eAAe;oBAC9C,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI;wBAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,OAAO,EAAG,QAAgB,CAAC,OAAO;qBACnC,CAAC;iBACH;aACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAC9C,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO,IAAI,WAAW,EAAS,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,MAAM,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe,EAAE,KAAoD;QACvE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAE,KAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Supported languages in BCP 47 format
3
+ */
4
+ export declare const SUPPORTED_LANGUAGES: readonly ["en-US", "es-ES", "ja-JP", "vi-VN", "zh-CN"];
5
+ /**
6
+ * Validates language code format (BCP 47: xx-XX)
7
+ * @param languageCode - The language code to validate
8
+ * @returns true if valid
9
+ * @throws ValidationError if invalid
10
+ */
11
+ export declare function validateLanguageCode(languageCode: string): boolean;
12
+ /**
13
+ * Get language code display name
14
+ */
15
+ export declare function getLanguageName(code: string): string;
16
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,mBAAmB,wDAMtB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAuBlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD"}
@@ -0,0 +1,46 @@
1
+ import { ValidationError } from './error.js';
2
+ /**
3
+ * Supported languages in BCP 47 format
4
+ */
5
+ export const SUPPORTED_LANGUAGES = [
6
+ 'en-US',
7
+ 'es-ES',
8
+ 'ja-JP',
9
+ 'vi-VN',
10
+ 'zh-CN',
11
+ ];
12
+ /**
13
+ * Validates language code format (BCP 47: xx-XX)
14
+ * @param languageCode - The language code to validate
15
+ * @returns true if valid
16
+ * @throws ValidationError if invalid
17
+ */
18
+ export function validateLanguageCode(languageCode) {
19
+ const trimmed = languageCode.trim();
20
+ // Check BCP 47 format (xx-XX)
21
+ const bcp47Pattern = /^[a-z]{2}-[A-Z]{2}$/;
22
+ if (!bcp47Pattern.test(trimmed)) {
23
+ throw new ValidationError(`语言代码格式错误。请使用 BCP 47 格式(如 en-US, zh-CN)。\n` +
24
+ `支持的语言: ${SUPPORTED_LANGUAGES.join(', ')}`, 'lang');
25
+ }
26
+ // Check if it's in supported list
27
+ if (!SUPPORTED_LANGUAGES.includes(trimmed)) {
28
+ throw new ValidationError(`不支持的语言代码: ${trimmed}\n` +
29
+ `支持的语言: ${SUPPORTED_LANGUAGES.join(', ')}`, 'lang');
30
+ }
31
+ return true;
32
+ }
33
+ /**
34
+ * Get language code display name
35
+ */
36
+ export function getLanguageName(code) {
37
+ const names = {
38
+ 'en-US': 'English (US)',
39
+ 'es-ES': 'Spanish (Spain)',
40
+ 'ja-JP': 'Japanese',
41
+ 'vi-VN': 'Vietnamese',
42
+ 'zh-CN': 'Chinese (Simplified)',
43
+ };
44
+ return names[code] || code;
45
+ }
46
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;CACC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;IAEpC,8BAA8B;IAC9B,MAAM,YAAY,GAAG,qBAAqB,CAAC;IAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CACvB,2CAA2C;YAC3C,UAAU,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1C,MAAM,CACP,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAc,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,eAAe,CACvB,aAAa,OAAO,IAAI;YACxB,UAAU,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1C,MAAM,CACP,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAA2B;QACpC,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,sBAAsB;KAChC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC"}