shoplazza-cli 1.1.2 → 2.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 (400) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +206 -332
  4. package/README.zh.md +318 -0
  5. package/package.json +24 -70
  6. package/scripts/install.js +144 -0
  7. package/scripts/jsbuild/dev/index.js +123 -0
  8. package/scripts/jsbuild/index.js +77 -0
  9. package/{lib/checkout/build → scripts/jsbuild}/plugin/vite-plugin-add-extension-id.js +4 -2
  10. package/scripts/jsbuild/vite.config.js +35 -0
  11. package/scripts/run.js +29 -0
  12. package/.editorconfig +0 -28
  13. package/.prettierrc +0 -9
  14. package/bin/shoplazza +0 -137
  15. package/fixtures/assets/blog.scss +0 -74
  16. package/fixtures/assets/cart_modal.scss +0 -450
  17. package/fixtures/assets/collection_detail.js +0 -234
  18. package/fixtures/assets/collection_detail.scss +0 -345
  19. package/fixtures/assets/collection_list.scss +0 -11
  20. package/fixtures/assets/collection_slider.scss +0 -169
  21. package/fixtures/assets/feature_columns.scss +0 -26
  22. package/fixtures/assets/feature_product.scss +0 -109
  23. package/fixtures/assets/footer.js +0 -58
  24. package/fixtures/assets/footer.scss +0 -337
  25. package/fixtures/assets/four_images.scss +0 -29
  26. package/fixtures/assets/gallery.scss +0 -55
  27. package/fixtures/assets/header.js +0 -178
  28. package/fixtures/assets/header.scss +0 -929
  29. package/fixtures/assets/image_text.scss +0 -72
  30. package/fixtures/assets/logo_bar.scss +0 -11
  31. package/fixtures/assets/newsletter.scss +0 -90
  32. package/fixtures/assets/not_found.scss +0 -39
  33. package/fixtures/assets/page_detail.scss +0 -16
  34. package/fixtures/assets/pagination.scss +0 -150
  35. package/fixtures/assets/postcss.config.js +0 -6
  36. package/fixtures/assets/product_description.scss +0 -88
  37. package/fixtures/assets/product_detail.js +0 -634
  38. package/fixtures/assets/product_detail.scss +0 -1106
  39. package/fixtures/assets/relative_product.scss +0 -45
  40. package/fixtures/assets/reviews.scss +0 -70
  41. package/fixtures/assets/rich_text.scss +0 -71
  42. package/fixtures/assets/search.js +0 -87
  43. package/fixtures/assets/search.scss +0 -67
  44. package/fixtures/assets/slide.scss +0 -51
  45. package/fixtures/assets/slider.scss +0 -141
  46. package/fixtures/assets/test.scss +0 -1
  47. package/fixtures/assets/theme.css +0 -976
  48. package/fixtures/assets/theme.scss +0 -1100
  49. package/fixtures/assets/three_images.scss +0 -20
  50. package/fixtures/assets/tools.scss +0 -23
  51. package/fixtures/assets/two_images.scss +0 -24
  52. package/fixtures/assets/video.scss +0 -45
  53. package/fixtures/assets/video_text.scss +0 -63
  54. package/fixtures/config/settings_data.json +0 -107
  55. package/fixtures/config/settings_schema.json +0 -690
  56. package/fixtures/layout/theme.liquid +0 -76
  57. package/fixtures/locales/ar-SA.json +0 -212
  58. package/fixtures/locales/de-DE.json +0 -290
  59. package/fixtures/locales/en-US.json +0 -290
  60. package/fixtures/locales/es-ES.json +0 -290
  61. package/fixtures/locales/fr-FR.json +0 -290
  62. package/fixtures/locales/id-ID.json +0 -212
  63. package/fixtures/locales/it-IT.json +0 -212
  64. package/fixtures/locales/ja-JP.json +0 -289
  65. package/fixtures/locales/ko-KR.json +0 -290
  66. package/fixtures/locales/nl-NL.json +0 -290
  67. package/fixtures/locales/pl-PL.json +0 -290
  68. package/fixtures/locales/pt-PT.json +0 -212
  69. package/fixtures/locales/ru-RU.json +0 -212
  70. package/fixtures/locales/th-TH.json +0 -212
  71. package/fixtures/locales/zh-CN.json +0 -290
  72. package/fixtures/locales/zh-TW.json +0 -290
  73. package/fixtures/sections/apps.liquid +0 -47
  74. package/fixtures/sections/blog.liquid +0 -137
  75. package/fixtures/sections/collection_desc.liquid +0 -34
  76. package/fixtures/sections/collection_detail.liquid +0 -436
  77. package/fixtures/sections/collection_image.liquid +0 -104
  78. package/fixtures/sections/collection_list.liquid +0 -161
  79. package/fixtures/sections/collection_name.liquid +0 -34
  80. package/fixtures/sections/collection_slider.liquid +0 -330
  81. package/fixtures/sections/feature_columns.liquid +0 -275
  82. package/fixtures/sections/feature_product.liquid +0 -227
  83. package/fixtures/sections/footer.liquid +0 -488
  84. package/fixtures/sections/four_images.liquid +0 -160
  85. package/fixtures/sections/gallery.liquid +0 -258
  86. package/fixtures/sections/header.liquid +0 -1157
  87. package/fixtures/sections/html.liquid +0 -40
  88. package/fixtures/sections/image_text.liquid +0 -350
  89. package/fixtures/sections/instagram_plus.liquid +0 -393
  90. package/fixtures/sections/logo_bar.liquid +0 -183
  91. package/fixtures/sections/newsletter.liquid +0 -225
  92. package/fixtures/sections/not_found.liquid +0 -39
  93. package/fixtures/sections/overlay_image.liquid +0 -648
  94. package/fixtures/sections/page_detail.liquid +0 -39
  95. package/fixtures/sections/photo_collection.liquid +0 -433
  96. package/fixtures/sections/product_description.liquid +0 -208
  97. package/fixtures/sections/product_detail.liquid +0 -611
  98. package/fixtures/sections/products.liquid +0 -216
  99. package/fixtures/sections/relative_product.liquid +0 -121
  100. package/fixtures/sections/reviews.liquid +0 -115
  101. package/fixtures/sections/rich_text.liquid +0 -157
  102. package/fixtures/sections/search.liquid +0 -163
  103. package/fixtures/sections/slide.liquid +0 -719
  104. package/fixtures/sections/three_images.liquid +0 -157
  105. package/fixtures/sections/two_images.liquid +0 -125
  106. package/fixtures/sections/video.liquid +0 -95
  107. package/fixtures/sections/video_text.liquid +0 -128
  108. package/fixtures/snippets/bgset.liquid +0 -21
  109. package/fixtures/snippets/card_title.liquid +0 -8
  110. package/fixtures/snippets/cart_modal.liquid +0 -74
  111. package/fixtures/snippets/collection.liquid +0 -77
  112. package/fixtures/snippets/collection_filter_modal.liquid +0 -56
  113. package/fixtures/snippets/default_image_4.liquid +0 -14
  114. package/fixtures/snippets/default_image_6.liquid +0 -18
  115. package/fixtures/snippets/default_image_8.liquid +0 -23
  116. package/fixtures/snippets/four_images_item.liquid +0 -8
  117. package/fixtures/snippets/header_ads.liquid +0 -95
  118. package/fixtures/snippets/hero_image.liquid +0 -94
  119. package/fixtures/snippets/icon_video_play_large.liquid +0 -1
  120. package/fixtures/snippets/icon_video_play_medium.liquid +0 -4
  121. package/fixtures/snippets/icon_video_play_small.liquid +0 -4
  122. package/fixtures/snippets/lazyimg.liquid +0 -22
  123. package/fixtures/snippets/lazyimg_art.liquid +0 -36
  124. package/fixtures/snippets/lazysizes.liquid +0 -41
  125. package/fixtures/snippets/link.liquid +0 -2
  126. package/fixtures/snippets/pagination.liquid +0 -48
  127. package/fixtures/snippets/product.liquid +0 -126
  128. package/fixtures/snippets/product_art_tpl.liquid +0 -152
  129. package/fixtures/snippets/product_info_body.liquid +0 -337
  130. package/fixtures/snippets/product_info_tpl.liquid +0 -423
  131. package/fixtures/snippets/product_label.liquid +0 -46
  132. package/fixtures/snippets/settings.liquid +0 -295
  133. package/fixtures/snippets/social-meta-tags.liquid +0 -106
  134. package/fixtures/snippets/video_html.liquid +0 -11
  135. package/fixtures/snippets/video_source.liquid +0 -98
  136. package/fixtures/snippets/video_thumb_icon.liquid +0 -2
  137. package/fixtures/templates/404.liquid +0 -1
  138. package/fixtures/templates/collection.liquid +0 -92
  139. package/fixtures/templates/index.liquid +0 -206
  140. package/fixtures/templates/page.liquid +0 -1
  141. package/fixtures/templates/product.liquid +0 -99
  142. package/fixtures/templates/search.liquid +0 -1
  143. package/jest.config.js +0 -192
  144. package/lib/__tests__/log.test.js +0 -15
  145. package/lib/__tests__/utils.test.js +0 -69
  146. package/lib/app/api/cli.js +0 -225
  147. package/lib/app/api/openapi.js +0 -121
  148. package/lib/app/api/partnerOpenapi.js +0 -104
  149. package/lib/app/bin/index.js +0 -20
  150. package/lib/app/bin/javy/javy-arm-linux-v5.0.1 +0 -0
  151. package/lib/app/bin/javy/javy-arm-macos-v5.0.1 +0 -0
  152. package/lib/app/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
  153. package/lib/app/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
  154. package/lib/app/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
  155. package/lib/app/commands/config/actions/link.js +0 -189
  156. package/lib/app/commands/config/actions/use.js +0 -40
  157. package/lib/app/commands/config/index.js +0 -25
  158. package/lib/app/commands/config/link.js +0 -11
  159. package/lib/app/commands/config/use.js +0 -11
  160. package/lib/app/commands/deploy/actions/deploy.js +0 -196
  161. package/lib/app/commands/deploy/index.js +0 -11
  162. package/lib/app/commands/dev/actions/dev.js +0 -206
  163. package/lib/app/commands/dev/index.js +0 -11
  164. package/lib/app/commands/generate/actions/extension.js +0 -97
  165. package/lib/app/commands/generate/actions/generateCheckout.js +0 -58
  166. package/lib/app/commands/generate/actions/generateFunction.js +0 -56
  167. package/lib/app/commands/generate/actions/generateTheme.js +0 -128
  168. package/lib/app/commands/generate/extension.js +0 -11
  169. package/lib/app/commands/generate/index.js +0 -22
  170. package/lib/app/commands/index.js +0 -82
  171. package/lib/app/commands/info/actions/info.js +0 -168
  172. package/lib/app/commands/info/index.js +0 -11
  173. package/lib/app/commands/init/actions/init.js +0 -176
  174. package/lib/app/commands/init/index.js +0 -14
  175. package/lib/app/commands/versions/actions/list.js +0 -210
  176. package/lib/app/commands/versions/index.js +0 -22
  177. package/lib/app/commands/versions/list.js +0 -14
  178. package/lib/app/constant/code.js +0 -7
  179. package/lib/app/constant/color.js +0 -18
  180. package/lib/app/constant/extension.js +0 -16
  181. package/lib/app/constant/host.js +0 -23
  182. package/lib/app/constant/sso.js +0 -7
  183. package/lib/app/index.js +0 -8
  184. package/lib/app/services/auth/config.js +0 -33
  185. package/lib/app/services/auth/index.js +0 -9
  186. package/lib/app/services/auth/oauth-server.js +0 -70
  187. package/lib/app/services/auth/partner-token.js +0 -45
  188. package/lib/app/services/auth/sso-token.js +0 -69
  189. package/lib/app/services/auth/store-token.js +0 -100
  190. package/lib/app/services/auth/url-builder.js +0 -23
  191. package/lib/app/services/config/index.js +0 -41
  192. package/lib/app/services/devServer/app.js +0 -76
  193. package/lib/app/services/devServer/index.js +0 -103
  194. package/lib/app/services/devServer/middleware/hmacValidatorMiddleWare.js +0 -20
  195. package/lib/app/services/devServer/middleware/index.js +0 -5
  196. package/lib/app/services/devServer/tunnel/index.js +0 -43
  197. package/lib/app/services/devServer/tunnel/providers/cloudflare.js +0 -364
  198. package/lib/app/services/devServer/tunnel/providers/ngrok.js +0 -70
  199. package/lib/app/services/devServer/utils/index.js +0 -5
  200. package/lib/app/services/devServer/utils/secureCompare.js +0 -5
  201. package/lib/app/services/devServer/views/app.ejs +0 -133
  202. package/lib/app/services/extension-build/buildCheckout.js +0 -47
  203. package/lib/app/services/extension-build/buildFunction.js +0 -57
  204. package/lib/app/services/extension-build/buildTheme.js +0 -100
  205. package/lib/app/services/extension-build/index.js +0 -23
  206. package/lib/app/services/extension-build/plugins/vite-plugin-add-extension-id.js +0 -26
  207. package/lib/app/services/extension-diff/index.js +0 -132
  208. package/lib/app/services/extension-upsert/index.js +0 -21
  209. package/lib/app/services/extension-upsert/upsertCheckout.js +0 -44
  210. package/lib/app/services/extension-upsert/upsertFunction.js +0 -52
  211. package/lib/app/services/extension-upsert/upsertTheme.js +0 -113
  212. package/lib/app/services/oss/index.js +0 -45
  213. package/lib/app/services/partner/index.js +0 -52
  214. package/lib/app/store/base-store.js +0 -37
  215. package/lib/app/store/config-store.js +0 -55
  216. package/lib/app/store/config.js +0 -21
  217. package/lib/app/store/index.js +0 -14
  218. package/lib/app/store/install-store.js +0 -41
  219. package/lib/app/store/sso-store.js +0 -55
  220. package/lib/app/utils/asyncPool.js +0 -42
  221. package/lib/app/utils/debug/index.js +0 -16
  222. package/lib/app/utils/env.js +0 -24
  223. package/lib/app/utils/error.js +0 -20
  224. package/lib/app/utils/git.js +0 -20
  225. package/lib/app/utils/json.js +0 -27
  226. package/lib/app/utils/path.js +0 -33
  227. package/lib/app/utils/platform.js +0 -37
  228. package/lib/app/utils/request/cli.js +0 -72
  229. package/lib/app/utils/request/debug.js +0 -13
  230. package/lib/app/utils/request/openapi.js +0 -67
  231. package/lib/app/utils/request/partnerOpenapi.js +0 -47
  232. package/lib/app/utils/toml.js +0 -56
  233. package/lib/app/utils/views/message.js +0 -68
  234. package/lib/app/utils/views/select.js +0 -36
  235. package/lib/app/utils/withTempDir.js +0 -55
  236. package/lib/auth/__mocks__/getCode.js +0 -7
  237. package/lib/auth/__mocks__/index.js +0 -0
  238. package/lib/auth/child.js +0 -23
  239. package/lib/auth/getCode.js +0 -39
  240. package/lib/auth/index.js +0 -134
  241. package/lib/check.js +0 -28
  242. package/lib/checkout/api.js +0 -164
  243. package/lib/checkout/build/plugin/vite-plugin-transform-extension-html.js +0 -207
  244. package/lib/checkout/build/vite.config.js +0 -34
  245. package/lib/checkout/build.js +0 -38
  246. package/lib/checkout/config.js +0 -97
  247. package/lib/checkout/create.js +0 -132
  248. package/lib/checkout/delete.js +0 -26
  249. package/lib/checkout/deploy.js +0 -59
  250. package/lib/checkout/dev/index.js +0 -143
  251. package/lib/checkout/fields.js +0 -29
  252. package/lib/checkout/index.js +0 -63
  253. package/lib/checkout/preview.js +0 -52
  254. package/lib/checkout/pull.js +0 -22
  255. package/lib/checkout/push.js +0 -141
  256. package/lib/checkout/template/README.md +0 -34
  257. package/lib/checkout/template/_gitignore +0 -4
  258. package/lib/checkout/template/extension.config.js +0 -4
  259. package/lib/checkout/template/extensions/extension-template/extension.json +0 -10
  260. package/lib/checkout/template/extensions/extension-template/src/content.html +0 -3
  261. package/lib/checkout/template/extensions/extension-template/src/index.html +0 -5
  262. package/lib/checkout/template/extensions/extension-template/src/index.js +0 -11
  263. package/lib/checkout/template/extensions/extension-template/src/script.html +0 -3
  264. package/lib/checkout/template/extensions/extension-template/src/style.html +0 -3
  265. package/lib/checkout/template/package.json +0 -17
  266. package/lib/checkout/undeploy.js +0 -40
  267. package/lib/checkout/util.js +0 -201
  268. package/lib/checkout/verify.js +0 -16
  269. package/lib/checkout/version.js +0 -7
  270. package/lib/commands/__tests__/login.test.js +0 -77
  271. package/lib/commands/__tests__/logout.test.js +0 -29
  272. package/lib/commands/__tests__/store.test.js +0 -44
  273. package/lib/commands/__tests__/switch.test.js +0 -45
  274. package/lib/commands/login.js +0 -120
  275. package/lib/commands/logout.js +0 -23
  276. package/lib/commands/store.js +0 -14
  277. package/lib/commands/switch.js +0 -52
  278. package/lib/commands/theme/__tests__/delete.test.js +0 -49
  279. package/lib/commands/theme/__tests__/init.test.js +0 -21
  280. package/lib/commands/theme/__tests__/list.test.js +0 -80
  281. package/lib/commands/theme/__tests__/package.test.js +0 -17
  282. package/lib/commands/theme/__tests__/publish.test.js +0 -61
  283. package/lib/commands/theme/__tests__/pull.test.js +0 -69
  284. package/lib/commands/theme/__tests__/push.test.js +0 -63
  285. package/lib/commands/theme/__tests__/serve.test.js +0 -107
  286. package/lib/commands/theme/delete.js +0 -64
  287. package/lib/commands/theme/init.js +0 -51
  288. package/lib/commands/theme/list.js +0 -28
  289. package/lib/commands/theme/package.js +0 -37
  290. package/lib/commands/theme/publish.js +0 -56
  291. package/lib/commands/theme/pull.js +0 -62
  292. package/lib/commands/theme/push.js +0 -106
  293. package/lib/commands/theme/serve.js +0 -153
  294. package/lib/commands/theme/share.js +0 -20
  295. package/lib/commands/version.js +0 -6
  296. package/lib/common/constants.js +0 -24
  297. package/lib/common/db/partner.js +0 -91
  298. package/lib/common/inquirers/choose-app.js +0 -79
  299. package/lib/common/inquirers/choose-partner.js +0 -74
  300. package/lib/common/log.js +0 -15
  301. package/lib/common/login.js +0 -125
  302. package/lib/common/logout.js +0 -16
  303. package/lib/db/__mocks__/index.js +0 -9
  304. package/lib/db/__tests__/analytics.test.js +0 -19
  305. package/lib/db/__tests__/user.test.js +0 -20
  306. package/lib/db/analytics.js +0 -48
  307. package/lib/db/index.js +0 -9
  308. package/lib/db/user.js +0 -71
  309. package/lib/function/bin/index.js +0 -20
  310. package/lib/function/bin/javy/javy-arm-linux-v5.0.1 +0 -0
  311. package/lib/function/bin/javy/javy-arm-macos-v5.0.1 +0 -0
  312. package/lib/function/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
  313. package/lib/function/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
  314. package/lib/function/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
  315. package/lib/function/commands/compile.js +0 -43
  316. package/lib/function/commands/create.js +0 -77
  317. package/lib/function/commands/list.js +0 -18
  318. package/lib/function/commands/release.js +0 -69
  319. package/lib/function/index.js +0 -24
  320. package/lib/function/template/js/README.md +0 -37
  321. package/lib/function/template/js/_gitignore +0 -4
  322. package/lib/function/template/js/extension.config.json +0 -5
  323. package/lib/function/template/js/package.json +0 -17
  324. package/lib/function/template/js/src/index.js +0 -64
  325. package/lib/function/utils.js +0 -29
  326. package/lib/log.js +0 -13
  327. package/lib/openAPI/__mocks__/index.js +0 -20
  328. package/lib/openAPI/api.js +0 -76
  329. package/lib/openAPI/index.js +0 -56
  330. package/lib/oss.js +0 -102
  331. package/lib/partner-api/axios.js +0 -67
  332. package/lib/partner-api/index.js +0 -79
  333. package/lib/report.js +0 -37
  334. package/lib/theme-extension/api/index.js +0 -96
  335. package/lib/theme-extension/commands/build.js +0 -114
  336. package/lib/theme-extension/commands/connect.js +0 -73
  337. package/lib/theme-extension/commands/create.js +0 -105
  338. package/lib/theme-extension/commands/deploy.js +0 -56
  339. package/lib/theme-extension/commands/list.js +0 -35
  340. package/lib/theme-extension/commands/release.js +0 -59
  341. package/lib/theme-extension/commands/serve.js +0 -179
  342. package/lib/theme-extension/commands/versions.js +0 -55
  343. package/lib/theme-extension/index.js +0 -29
  344. package/lib/theme-extension/template/basic-app/README.md +0 -125
  345. package/lib/theme-extension/template/basic-app/extension.config.json +0 -4
  346. package/lib/theme-extension/template/basic-app/package.json +0 -18
  347. package/lib/theme-extension/template/basic-app/theme-app/assets/index.css +0 -4
  348. package/lib/theme-extension/template/basic-app/theme-app/assets-manifest.json +0 -1
  349. package/lib/theme-extension/template/basic-app/theme-app/blocks/index.liquid +0 -16
  350. package/lib/theme-extension/template/basic-app/theme-app/locales/ar-SA.json +0 -1
  351. package/lib/theme-extension/template/basic-app/theme-app/locales/de-DE.json +0 -1
  352. package/lib/theme-extension/template/basic-app/theme-app/locales/en-US.json +0 -6
  353. package/lib/theme-extension/template/basic-app/theme-app/locales/es-ES.json +0 -1
  354. package/lib/theme-extension/template/basic-app/theme-app/locales/fr-FR.json +0 -1
  355. package/lib/theme-extension/template/basic-app/theme-app/locales/id-ID.json +0 -1
  356. package/lib/theme-extension/template/basic-app/theme-app/locales/it-IT.json +0 -1
  357. package/lib/theme-extension/template/basic-app/theme-app/locales/ja-JP.json +0 -1
  358. package/lib/theme-extension/template/basic-app/theme-app/locales/ko-KR.json +0 -1
  359. package/lib/theme-extension/template/basic-app/theme-app/locales/nl-NL.json +0 -1
  360. package/lib/theme-extension/template/basic-app/theme-app/locales/pl-PL.json +0 -1
  361. package/lib/theme-extension/template/basic-app/theme-app/locales/pt-PT.json +0 -1
  362. package/lib/theme-extension/template/basic-app/theme-app/locales/ru-RU.json +0 -1
  363. package/lib/theme-extension/template/basic-app/theme-app/locales/th-TH.json +0 -1
  364. package/lib/theme-extension/template/basic-app/theme-app/locales/zh-CN.json +0 -6
  365. package/lib/theme-extension/template/basic-app/theme-app/locales/zh-TW.json +0 -1
  366. package/lib/theme-extension/template/basic-app/theme-app/snippets/index.liquid +0 -8
  367. package/lib/theme-extension/template/embed-app/README.md +0 -125
  368. package/lib/theme-extension/template/embed-app/extension.config.json +0 -4
  369. package/lib/theme-extension/template/embed-app/package.json +0 -18
  370. package/lib/theme-extension/template/embed-app/theme-app/assets-manifest.json +0 -1
  371. package/lib/theme-extension/template/embed-app/theme-app/blocks/index.liquid +0 -18
  372. package/lib/theme-extension/template/embed-app/theme-app/locales/ar-SA.json +0 -1
  373. package/lib/theme-extension/template/embed-app/theme-app/locales/de-DE.json +0 -1
  374. package/lib/theme-extension/template/embed-app/theme-app/locales/en-US.json +0 -6
  375. package/lib/theme-extension/template/embed-app/theme-app/locales/es-ES.json +0 -1
  376. package/lib/theme-extension/template/embed-app/theme-app/locales/fr-FR.json +0 -1
  377. package/lib/theme-extension/template/embed-app/theme-app/locales/id-ID.json +0 -1
  378. package/lib/theme-extension/template/embed-app/theme-app/locales/it-IT.json +0 -1
  379. package/lib/theme-extension/template/embed-app/theme-app/locales/ja-JP.json +0 -1
  380. package/lib/theme-extension/template/embed-app/theme-app/locales/ko-KR.json +0 -1
  381. package/lib/theme-extension/template/embed-app/theme-app/locales/nl-NL.json +0 -1
  382. package/lib/theme-extension/template/embed-app/theme-app/locales/pl-PL.json +0 -1
  383. package/lib/theme-extension/template/embed-app/theme-app/locales/pt-PT.json +0 -1
  384. package/lib/theme-extension/template/embed-app/theme-app/locales/ru-RU.json +0 -1
  385. package/lib/theme-extension/template/embed-app/theme-app/locales/th-TH.json +0 -1
  386. package/lib/theme-extension/template/embed-app/theme-app/locales/zh-CN.json +0 -6
  387. package/lib/theme-extension/template/embed-app/theme-app/locales/zh-TW.json +0 -1
  388. package/lib/theme-extension/template/embed-app/theme-app/snippets/index.liquid +0 -8
  389. package/lib/theme-extension/template/embed-app/theme-app/snippets/index_css.liquid +0 -6
  390. package/lib/theme-extension/utils/config.js +0 -32
  391. package/lib/theme-extension/utils/index.js +0 -213
  392. package/lib/tracing.js +0 -50
  393. package/lib/utils/config.js +0 -12
  394. package/lib/utils/console.js +0 -33
  395. package/lib/utils/env.js +0 -17
  396. package/lib/utils/file.js +0 -48
  397. package/lib/utils/platform.js +0 -37
  398. package/lib/utils/utils.js +0 -165
  399. /package/{lib/checkout → scripts/jsbuild}/dev/client.js +0 -0
  400. /package/{lib/app/services/extension-build/plugins → scripts/jsbuild/plugin}/vite-plugin-transform-extension-html.js +0 -0
@@ -1,114 +0,0 @@
1
- const chalk = require('chalk');
2
- const inquirer = require('inquirer');
3
- const ora = require('ora');
4
- const fsExtra = require('fs-extra');
5
- const { getThemeExtensionConfig, compareVersions, compress } = require('../utils');
6
- const { THEME_APP_DIR_PATH, EXCHANGE_TOKEN, STORE_DOMAIN } = require('../utils/config');
7
- const { getThemeAppVersionList, toCreateThemeAppVersion, getTaskStatus } = require('../api');
8
- const { useOss } = require('../../oss');
9
-
10
- async function createNewVersion(extensionId, version, description) {
11
- const spinner = ora('Start building a new version...').start();
12
- const { zipPath, zipName } = await compress(THEME_APP_DIR_PATH);
13
- const { uploadOss } = useOss(
14
- EXCHANGE_TOKEN,
15
- STORE_DOMAIN,
16
- `✗ No store found. Please run ${chalk.cyan('shoplazza login')} to login to a specific store.`
17
- );
18
- const zipOssUrl = await uploadOss(zipPath, zipName);
19
- // 上传完成删除压缩包
20
- fsExtra.removeSync(zipPath);
21
- const res = await toCreateThemeAppVersion({
22
- extension_id: extensionId,
23
- version,
24
- exts: description,
25
- resource_url: zipOssUrl
26
- });
27
- const taskId = res.data?.task_id;
28
-
29
- if (!taskId) {
30
- spinner.fail(chalk.red(`Failed to build a new version!`));
31
- throw new Error('taskId is required');
32
- }
33
- return new Promise((resolve, reject) => {
34
- const timer = setInterval(async () => {
35
- const res = await getTaskStatus({ taskId });
36
- if (res.data?.state === 1) {
37
- clearInterval(timer);
38
- spinner.succeed(chalk.green(`Successfully build a new version(v${version})!`));
39
- resolve();
40
- } else if (res.data?.state === 2) {
41
- clearInterval(timer);
42
- spinner.fail(chalk.red(`Failed to build a new version!`));
43
- reject(new Error(res.data?.message));
44
- } else {
45
- spinner.text = chalk.blue(`[WAITING] Building a new version...`);
46
- }
47
- }, 1000);
48
- });
49
- }
50
-
51
- /**
52
- * 交互式命令行
53
- */
54
- async function usePrompt(extensionId) {
55
- const res = await getThemeAppVersionList(extensionId);
56
-
57
- const latestVersion = res.data?.data?.[0];
58
-
59
- if (latestVersion) {
60
- console.log(
61
- chalk.cyanBright(`\n🔍 Latest version: `) +
62
- chalk.yellow(`${latestVersion.version} `) +
63
- chalk.white(`(${latestVersion.exts})`) +
64
- chalk.gray(` [Released on: ${latestVersion.created_at}]`)
65
- );
66
- }
67
-
68
- return inquirer.prompt([
69
- {
70
- type: 'input',
71
- name: 'newVersion',
72
- message: 'Enter the new version number(e.g., 1.0.0):',
73
- validate: (newVersion) => {
74
- if (!/^[0-9]+\.[0-9]+\.[0-9]+$/.test(newVersion)) {
75
- return chalk.red('❌ Version must follow the format X.Y.Z (e.g., 1.0.0).');
76
- }
77
- if (latestVersion) {
78
- if (compareVersions(newVersion, latestVersion.version) !== 1) {
79
- return chalk.red('❌ Version must be greater than the latest version.');
80
- }
81
- }
82
- return true;
83
- }
84
- },
85
- {
86
- type: 'input',
87
- name: 'description',
88
- message: 'Enter the description for this version:',
89
- validate: (description) => {
90
- if (!description.trim()) {
91
- return chalk.red('❌ Description cannot be empty.');
92
- }
93
- return true;
94
- }
95
- }
96
- ]);
97
- }
98
-
99
- async function build() {
100
- try {
101
- const { extensionId } = await getThemeExtensionConfig();
102
- if (!extensionId) {
103
- throw new Error('ExtensionId is empty, please use `serve` command first.');
104
- }
105
- const { newVersion, description } = await usePrompt(extensionId);
106
- await createNewVersion(extensionId, newVersion, description);
107
- } catch (error) {
108
- console.error(chalk.red(`[ERROR IN BUILD] ${error.message}`));
109
- }
110
- }
111
-
112
- module.exports = {
113
- build
114
- };
@@ -1,73 +0,0 @@
1
- const chalk = require('chalk');
2
- const inquirer = require('inquirer');
3
- const { getThemeExtensionConfig, setThemeExtensionConfig } = require('../utils');
4
- const { toConnectApp } = require('../../partner-api/index');
5
-
6
- /**
7
- * 交互式命令行
8
- */
9
- async function usePrompt() {
10
- return await inquirer.prompt([
11
- {
12
- type: 'input',
13
- name: 'clientId',
14
- message: 'Please enter the shoplazza app Client ID:',
15
- prefix: '*',
16
- validate: (clientId) => {
17
- if (!clientId.trim()) {
18
- return 'Client ID cannot be empty';
19
- }
20
- return true;
21
- }
22
- },
23
- {
24
- type: 'input',
25
- name: 'clientSecret',
26
- message: 'Please enter the shoplazza app Client Secret:',
27
- prefix: '*',
28
- validate: (clientSecret) => {
29
- if (!clientSecret.trim()) {
30
- return 'Client Secret cannot be empty';
31
- }
32
- return true;
33
- }
34
- }
35
- ]);
36
- }
37
-
38
- async function connectToApp() {
39
- try {
40
- let { extensionId, appId, accessToken } = await getThemeExtensionConfig();
41
- if (!extensionId) {
42
- throw new Error('ExtensionId is empty, please use `serve` command first.');
43
- }
44
-
45
- if (!accessToken) {
46
- const result = await usePrompt();
47
- appId = result.clientId;
48
- appSecret = result.clientSecret;
49
- await setThemeExtensionConfig({
50
- appId,
51
- appSecret
52
- });
53
- }
54
-
55
- const res = await toConnectApp({
56
- extensionId,
57
- appId
58
- });
59
-
60
- if (+res.data?.code === 200) {
61
- console.log(chalk.green('Connected to the Shoplazza app successfully!'));
62
- console.log(chalk.cyan('You can use the `release` command to release a specific version to the Shoplazza app.'));
63
- } else if (+res.data?.code === 400) {
64
- console.log(chalk.green(res.data?.message));
65
- }
66
- } catch (error) {
67
- console.error(chalk.red(`[ERROR IN CONNECT] ${error.message}`));
68
- }
69
- }
70
-
71
- module.exports = {
72
- connect: connectToApp
73
- };
@@ -1,105 +0,0 @@
1
- const inquirer = require('inquirer');
2
- const path = require('path');
3
- const fsExtra = require('fs-extra');
4
- const chalk = require('chalk');
5
- const { WORKSPACE_PATH, THEME_APP_TYPE } = require('../utils/config');
6
- const { replacePlaceholders, renameFile } = require('../utils');
7
-
8
- /**
9
- * 交互式命令行
10
- */
11
- async function usePrompt() {
12
- return await inquirer.prompt([
13
- {
14
- type: 'list',
15
- name: 'themeAppType',
16
- message: 'Select theme extension type:',
17
- choices: [THEME_APP_TYPE.BASIC_APP.description, THEME_APP_TYPE.EMBEDS_APP.description],
18
- prefix: '*'
19
- },
20
- {
21
- type: 'input',
22
- name: 'projectName',
23
- message: 'Please enter the theme extension project name:',
24
- prefix: '*',
25
- validate: (projectName) => {
26
- if (!projectName.trim()) {
27
- return 'Project name cannot be empty';
28
- }
29
- // 禁止包含空格
30
- if (projectName.includes(' ')) {
31
- return 'Project name cannot contain spaces';
32
- }
33
- return true;
34
- }
35
- }
36
- ]);
37
- }
38
-
39
- /**
40
- * 初始化项目
41
- */
42
- async function initProj(projectPath, projectName, isBasicApp = false) {
43
- // 替换占位符 key文件相对路径 value替换的内容
44
- const replacementConfig = {
45
- 'package.json': { projectName },
46
- 'theme-app/blocks/index.liquid': { projectName },
47
- 'extension.config.json': { projectName }
48
- };
49
- for (const [filePath, replacements] of Object.entries(replacementConfig)) {
50
- const fullPath = path.resolve(projectPath, filePath);
51
- await replacePlaceholders(fullPath, replacements);
52
- }
53
-
54
- // 重命名文件
55
- const filesToRename = [
56
- isBasicApp ? 'assets/index.css' : 'snippets/index_css.liquid',
57
- 'blocks/index.liquid',
58
- 'snippets/index.liquid'
59
- ];
60
- for (const file of filesToRename) {
61
- const filePath = path.resolve(projectPath, 'theme-app', file);
62
- await renameFile(filePath, `${projectName}${filePath.includes('_css') ? '_css' : ''}`);
63
- }
64
- }
65
-
66
- /**
67
- * 控制台提示信息
68
- */
69
- function consoleTips(projectName) {
70
- console.log(chalk.green(`Theme extension project "${projectName}" has been successfully created.`));
71
- console.log(chalk.bold(`To get started:\n`));
72
- console.log(` ${chalk.cyan(`cd ${projectName}`)}`);
73
- console.log(` ${chalk.cyan(`npm start`)}\n`);
74
- console.log(chalk.greenBright(`Happy coding! 🎉🎉🎉`));
75
- }
76
-
77
- /**
78
- * 创建项目
79
- */
80
- async function _create(themeAppDescription, projectName) {
81
- const projectPath = path.resolve(WORKSPACE_PATH, projectName);
82
-
83
- if (fsExtra.pathExistsSync(projectPath)) {
84
- throw new Error(`Project directory "${projectName}" already exists.`);
85
- }
86
- await fsExtra.ensureDir(projectPath);
87
- const isBasicApp = themeAppDescription === THEME_APP_TYPE.BASIC_APP.description;
88
- const templatePath = isBasicApp ? THEME_APP_TYPE.BASIC_APP.templatePath : THEME_APP_TYPE.EMBEDS_APP.templatePath;
89
- await fsExtra.copy(templatePath, projectPath);
90
- await initProj(projectPath, projectName, isBasicApp);
91
- consoleTips(projectName);
92
- }
93
-
94
- async function create() {
95
- try {
96
- const { themeAppType, projectName } = await usePrompt();
97
- await _create(themeAppType, projectName);
98
- } catch (error) {
99
- console.error(chalk.red(`[ERROR IN CREATE] ${error.message}`));
100
- }
101
- }
102
-
103
- module.exports = {
104
- create
105
- };
@@ -1,56 +0,0 @@
1
- const inquirer = require('inquirer');
2
- const chalk = require('chalk');
3
- const ora = require('ora');
4
- const { getThemeExtensionConfig } = require('../utils');
5
- const { getThemeAppVersionList, toDeployThemeApp } = require('../api');
6
-
7
- async function deployVersion(extensionId, versionInfo) {
8
- await toDeployThemeApp({
9
- extension_id: extensionId,
10
- version_id: versionInfo.version_id,
11
- type: 'enable'
12
- });
13
- console.log(chalk.green(`Version ${versionInfo.version} has been deployed successfully.`));
14
- }
15
-
16
- async function usePrompt(versionList) {
17
- const choices = versionList.map((v) => ({
18
- name: `${v.version} (${v.exts}) - ${v.created_at}`,
19
- value: v.version_id
20
- }));
21
- return inquirer.prompt([
22
- {
23
- type: 'list',
24
- name: 'selectedVersion',
25
- message: 'Select a version to deploy:',
26
- choices,
27
- loop: false
28
- }
29
- ]);
30
- }
31
-
32
- async function deploy() {
33
- try {
34
- const { extensionId } = await getThemeExtensionConfig();
35
- if (!extensionId) {
36
- throw new Error('ExtensionId is empty, please use `serve` command first.');
37
- }
38
- const spinner = ora('Fetching version list...').start();
39
- const res = await getThemeAppVersionList(extensionId);
40
- const versionList = res.data?.data || [];
41
- if (!versionList.length) {
42
- spinner.succeed('Version list loaded.');
43
- throw new Error('No version found, please use `build` command to upload a version first.');
44
- }
45
- spinner.succeed('Version list loaded.');
46
- const { selectedVersion } = await usePrompt(versionList);
47
- const versionInfo = versionList.find((v) => v.version_id === selectedVersion);
48
- await deployVersion(extensionId, versionInfo);
49
- } catch (error) {
50
- console.error(chalk.red(`[ERROR IN DEPLOY] ${error.message}`));
51
- }
52
- }
53
-
54
- module.exports = {
55
- deploy
56
- };
@@ -1,35 +0,0 @@
1
- const chalk = require('chalk');
2
- const ora = require('ora');
3
- const { renderTable } = require('../utils');
4
- const { getThemeAppList } = require('../api');
5
-
6
- /**
7
- * 控制台提示
8
- */
9
- function consoleTips(versionList) {
10
- if (versionList.length) {
11
- console.log(chalk.green(`\n📃 Your store has ${versionList.length} available theme extensions:`));
12
- console.log(
13
- renderTable(versionList, [
14
- { label: 'App Name', filed: 'title' },
15
- { label: 'CreateTime', filed: 'created_at', color: 'yellowBright' },
16
- ])
17
- );
18
- } else {
19
- console.log(chalk.green('Your store does not have any available theme extensions.'));
20
- }
21
- }
22
-
23
- async function list() {
24
- try {
25
- const res = await getThemeAppList();
26
- const themeAppList = res.data?.data || [];
27
- consoleTips(themeAppList);
28
- } catch (error) {
29
- console.error(chalk.red(`[ERROR IN LIST] ${error.message}`));
30
- }
31
- }
32
-
33
- module.exports = {
34
- list
35
- };
@@ -1,59 +0,0 @@
1
- const inquirer = require('inquirer');
2
- const chalk = require('chalk');
3
- const ora = require('ora');
4
- const { getThemeExtensionConfig } = require('../utils');
5
- const { getThemeAppVersionList } = require('../api');
6
- const { toReleaseApp } = require('../../partner-api/index');
7
-
8
- async function releaseVersion(extensionId, versionInfo) {
9
- const res = await toReleaseApp({
10
- extensionId,
11
- versionId: versionInfo.version_id
12
- });
13
- console.log(chalk.green(`Version ${versionInfo.version} has been released successfully.`));
14
- }
15
-
16
- async function usePrompt(versionList) {
17
- const choices = versionList.map((v) => ({
18
- name: `${v.version} (${v.exts}) - ${v.created_at}`,
19
- value: v.version_id
20
- }));
21
- return inquirer.prompt([
22
- {
23
- type: 'list',
24
- name: 'selectedVersion',
25
- message: 'Select a version to release:',
26
- choices,
27
- loop: false
28
- }
29
- ]);
30
- }
31
-
32
- async function releaseToApp() {
33
- try {
34
- const { extensionId, appId } = await getThemeExtensionConfig();
35
- if (!extensionId) {
36
- throw new Error('ExtensionId is empty, please use `serve` command first.');
37
- }
38
- if (!appId) {
39
- throw new Error('Missing appId, please use `connect` command first.');
40
- }
41
- const spinner = ora('Fetching version list...').start();
42
- const res = await getThemeAppVersionList(extensionId);
43
- const versionList = res.data?.data || [];
44
- if (!versionList.length) {
45
- spinner.succeed('Version list loaded.');
46
- throw new Error('No version found, please use `build` command to upload a version first.');
47
- }
48
- spinner.succeed('Version list loaded.');
49
- const { selectedVersion } = await usePrompt(versionList);
50
- const versionInfo = versionList.find((v) => v.version_id === selectedVersion);
51
- await releaseVersion(extensionId, versionInfo);
52
- } catch (error) {
53
- console.error(chalk.red(`[ERROR IN DEPLOY] ${error.message}`));
54
- }
55
- }
56
-
57
- module.exports = {
58
- release: releaseToApp
59
- };
@@ -1,179 +0,0 @@
1
- const chalk = require('chalk');
2
- const inquirer = require('inquirer');
3
- const fsExtra = require('fs-extra');
4
- const ora = require('ora');
5
- const { STORE_DOMAIN, THEME_APP_DIR_PATH, EXCHANGE_TOKEN } = require('../utils/config');
6
- const { compress, getThemeExtensionConfig, setThemeExtensionConfig, getFileInfo } = require('../utils');
7
- const {
8
- toCreateThemeApp,
9
- toUploadThemeApp,
10
- getTaskStatus,
11
- getThemeList,
12
- toCreateFile,
13
- toUpdateFile,
14
- toDeleteFile
15
- } = require('../api');
16
- const { watchWorkspace } = require('../../utils/utils');
17
- const { useOss } = require('../../oss');
18
-
19
- /**
20
- * 控制台提示信息
21
- */
22
- function consoleTips(selectedThemeId, extensionId) {
23
- console.log(`\n======================================PREVIEW URLS======================================`);
24
- console.log(chalk.cyan.bold('🔗 Admin Preview URL:'));
25
- console.log(
26
- chalk.blueBright(` https://${STORE_DOMAIN}/admin/card?theme_id=${selectedThemeId}&ext_debug=${extensionId}\n`)
27
- );
28
- console.log(chalk.cyan.bold('🔗 Storefront Preview URL:'));
29
- console.log(chalk.blueBright(` https://${STORE_DOMAIN}?preview_theme_id=${selectedThemeId}&ext_debug=${extensionId}\n`));
30
- console.log(`=====================================WATCHER RUNNING=====================================`);
31
- console.log(chalk.green(`🎉 File watcher is now running!`));
32
- console.log(chalk.green(`📂 Watching directory:`), chalk.blue(THEME_APP_DIR_PATH));
33
- console.log(chalk.green(`✨ You can make changes to your files, and they will be processed automatically.`));
34
- console.log(chalk.green(`🚀 Press Ctrl+C to stop.\n`));
35
- }
36
-
37
- /**
38
- * 同步本地代码到远程服务器
39
- */
40
- async function syncLocalFiles(extensionId) {
41
- const spinner = ora('Start synchronizing local files to remote...').start();
42
- const { zipPath, zipName } = await compress(THEME_APP_DIR_PATH);
43
- const { uploadOss } = useOss(
44
- EXCHANGE_TOKEN,
45
- STORE_DOMAIN,
46
- `✗ No store found. Please run ${chalk.cyan('shoplazza login')} to login to a specific store.`
47
- );
48
- const zipOssUrl = await uploadOss(zipPath, zipName);
49
- // 上传完成删除压缩包
50
- fsExtra.removeSync(zipPath);
51
- const res = await toUploadThemeApp(extensionId, {
52
- resource_url: zipOssUrl
53
- });
54
- const taskId = res.data?.task_id;
55
- if (!taskId) {
56
- spinner.fail(chalk.red(`Failed to synchronize local files to remote location!`));
57
- throw new Error('taskId is required');
58
- }
59
- // 轮询查看任务是否完成
60
- return new Promise((resolve, reject) => {
61
- const timer = setInterval(async () => {
62
- const res = await getTaskStatus({ taskId });
63
- if (res.data?.state === 1) {
64
- clearInterval(timer);
65
- spinner.succeed(chalk.green(`Successfully synchronized local files to remote location!`));
66
- resolve();
67
- } else if (res.data?.state === 2) {
68
- clearInterval(timer);
69
- spinner.fail(chalk.red(`Failed to synchronize local files to remote location!`));
70
- reject(new Error(res.data?.message));
71
- } else {
72
- spinner.text = chalk.blue(`[WAITING] Synchronizing local files to remote...`);
73
- }
74
- }, 1000);
75
- });
76
- }
77
-
78
- /**
79
- * 交互选择预览主题
80
- */
81
- async function usePrompt() {
82
- const spinner = ora('Fetching theme list...').start();
83
- const res = await getThemeList();
84
- const themeList = res.data?.data?.themes || [];
85
- if (!themeList.length) {
86
- spinner.succeed('Theme list loaded.');
87
- throw new Error('Your store has no unpublished themes. Please add themes and try again.');
88
- } else {
89
- spinner.succeed('Theme list loaded.');
90
- const { selectedThemeId } = await inquirer.prompt([
91
- {
92
- type: 'list',
93
- name: 'selectedThemeId',
94
- message: 'Please select a theme to preview:',
95
- choices: themeList.map((theme) => ({
96
- name: theme.name,
97
- value: theme.id
98
- })),
99
- loop: false
100
- }
101
- ]);
102
- return selectedThemeId;
103
- }
104
- }
105
-
106
- /**
107
- * 创建主题插件
108
- */
109
- async function createThemeApp(themeExtensionConfig) {
110
- const data = {
111
- title: themeExtensionConfig.extensionName || '' // 插件显示名称
112
- };
113
- if (themeExtensionConfig.extensionId) {
114
- data.extension_id = themeExtensionConfig.extensionId;
115
- }
116
- const res = await toCreateThemeApp(data);
117
- const extensionId = res.data?.extension_id;
118
- await setThemeExtensionConfig({ extensionId });
119
- return extensionId;
120
- }
121
-
122
- /**
123
- * 启动监听
124
- */
125
- function startWatcher(extensionId) {
126
- const ACTION_MAP = {
127
- ADD: 'add',
128
- CHANGE: 'change',
129
- DELETE: 'delete'
130
- };
131
- const actionToApiMap = {
132
- [ACTION_MAP.ADD]: toCreateFile,
133
- [ACTION_MAP.CHANGE]: toUpdateFile,
134
- [ACTION_MAP.DELETE]: toDeleteFile
135
- };
136
- const funcCache = {};
137
- const handleFileChange = (action) => {
138
- if (funcCache[action]) {
139
- return funcCache[action];
140
- }
141
- const func = (filePath) => {
142
- const { fileName, parentDirName } = getFileInfo(filePath);
143
- const data = {
144
- type: parentDirName,
145
- location: fileName
146
- };
147
- if ([ACTION_MAP.CHANGE, ACTION_MAP.ADD].includes(action)) {
148
- data.content = fsExtra.readFileSync(filePath, 'utf-8');
149
- }
150
- actionToApiMap[action](extensionId, data);
151
- };
152
- funcCache[action] = func;
153
- return func;
154
- };
155
- watchWorkspace(THEME_APP_DIR_PATH, {
156
- onAdd: handleFileChange(ACTION_MAP.ADD),
157
- onChange: handleFileChange(ACTION_MAP.CHANGE),
158
- onDelete: handleFileChange(ACTION_MAP.DELETE),
159
- ignored: '**/assets-manifest.json',
160
- });
161
- }
162
-
163
- async function serve() {
164
- try {
165
- const themeExtensionConfig = await getThemeExtensionConfig();
166
- let extensionId = themeExtensionConfig.extensionId;
167
- if (!extensionId) {
168
- extensionId = await createThemeApp(themeExtensionConfig);
169
- }
170
- await syncLocalFiles(extensionId);
171
- const selectedThemeId = await usePrompt();
172
- startWatcher(extensionId);
173
- consoleTips(selectedThemeId, extensionId);
174
- } catch (error) {
175
- console.error(chalk.red(`[ERROR IN SERVE] ${error.message}`));
176
- }
177
- }
178
-
179
- module.exports = { serve };
@@ -1,55 +0,0 @@
1
- const chalk = require('chalk');
2
- const { getThemeExtensionConfig, renderTable } = require('../utils');
3
- const { getThemeAppVersionList } = require('../api');
4
-
5
- /**
6
- * 控制台提示
7
- */
8
- function consoleTips(versionList) {
9
- if (versionList.length) {
10
- const tempVersionList = versionList.map((item) => ({
11
- ...item,
12
- composeVersion: item.published === 1 ? `${item.version}(published)` : item.version
13
- }));
14
- console.log(chalk.green('\n📜 Available Versions:'));
15
- console.log(
16
- renderTable(tempVersionList, [
17
- {
18
- label: 'Version',
19
- filed: 'composeVersion',
20
- color: 'yellowBright'
21
- },
22
- {
23
- label: 'CreateTime',
24
- filed: 'created_at',
25
- color: 'blackBright'
26
- },
27
- {
28
- label: 'Description',
29
- filed: 'exts',
30
- color: 'whiteBright'
31
- }
32
- ])
33
- );
34
- } else {
35
- console.log(chalk.green('Your current theme extension does not have an available version.'));
36
- }
37
- }
38
-
39
- async function versions() {
40
- try {
41
- const { extensionId } = await getThemeExtensionConfig();
42
- if (!extensionId) {
43
- throw new Error('ExtensionId is empty, please use `serve` command first.');
44
- }
45
- const res = await getThemeAppVersionList(extensionId);
46
- const versionList = res.data?.data || [];
47
- consoleTips(versionList);
48
- } catch (error) {
49
- console.error(chalk.red(`[ERROR IN VERSIONS] ${error.message}`));
50
- }
51
- }
52
-
53
- module.exports = {
54
- versions
55
- };