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,52 +0,0 @@
1
- const { commitFunctionRequest, createFunctionRequest } = require('../../api/partnerOpenapi');
2
- const path = require('path');
3
-
4
- const NAMESPACE = 'cart_transform';
5
-
6
- // 提取 返回结果
7
- function extractFunctionResult(res) {
8
- return {
9
- extension_id: res.data.function_id,
10
- extension_version: res.data.version,
11
- extension_version_id: res.data.version_id
12
- };
13
- }
14
-
15
- async function upsertFunction(extension, appClientId, partnerId, appAccessToken) {
16
- const sourceCodePath = path.join(extension.configPath, '..', 'src', 'index.js');
17
-
18
- // 有 version_id 则 升级,没有则创建
19
- if (extension.extension_id && extension.extension_version) {
20
- // 升级
21
- const res = await commitFunctionRequest(appClientId, appAccessToken.access_token, {
22
- name: extension.extension_name,
23
- namespace: NAMESPACE,
24
- source_code: sourceCodePath,
25
- file: extension.distPath,
26
- function_id: extension.extension_id,
27
- version: extension.extension_version
28
- });
29
-
30
- if (res?.code === 'SUCCESS') {
31
- return extractFunctionResult(res);
32
- }
33
-
34
- throw new Error(res?.message || 'commit function extension failed');
35
- } else {
36
- // 创建
37
- const res = await createFunctionRequest(appClientId, appAccessToken.access_token, {
38
- name: extension.extension_name,
39
- namespace: NAMESPACE,
40
- source_code: sourceCodePath,
41
- file: extension.distPath
42
- });
43
-
44
- if (res?.code === 'SUCCESS') {
45
- return extractFunctionResult(res);
46
- }
47
-
48
- throw new Error(res?.message || 'create function extension failed');
49
- }
50
- }
51
-
52
- module.exports = upsertFunction;
@@ -1,113 +0,0 @@
1
- const { connectionAppRequest } = require('../../api/partnerOpenapi');
2
- const {
3
- upsertThemeExtensionRequest,
4
- createThemeExtensionVersionRequest,
5
- getThemeExtensionVersionTaskRequest
6
- } = require('../../api/openapi');
7
-
8
- async function upsertTheme(extension, appClientId, partnerId, appAccessToken) {
9
- // 有 extension_id 则 升级,没有则创建
10
- if (extension.extension_id && extension.extension_version) {
11
- // 更改 extension 信息
12
- const { extension_id } = await upsertThemeExtensionRequest(appClientId, partnerId, {
13
- extension_id: extension.extension_id,
14
- resource_url: extension.resource_url,
15
- title: extension.extension_name
16
- });
17
-
18
- // 升级 version
19
- const { task_id } = await createThemeExtensionVersionRequest(appClientId, partnerId, {
20
- extension_id: extension.extension_id,
21
- version: extension.extension_version,
22
- resource_url: extension.resource_url
23
- });
24
-
25
- return new Promise((resolve, reject) => {
26
- // 轮询 version 创建状态
27
- let timer = null;
28
- const maxRetry = 10; // 最大重试次数 10s 后超时
29
- let retry = 0;
30
-
31
- timer = setInterval(async () => {
32
- if (retry > maxRetry) {
33
- clearInterval(timer);
34
- // 超时,抛出错误
35
- reject(new Error('create theme extension version timeout'));
36
- }
37
-
38
- retry++;
39
-
40
- const res = await getThemeExtensionVersionTaskRequest(appClientId, partnerId, task_id);
41
- if (res.state === 1) {
42
- clearInterval(timer);
43
- resolve({
44
- extension_id,
45
- extension_version: extension.extension_version,
46
- extension_version_id: res.version_id
47
- });
48
- } else if (res.state === 2) {
49
- clearInterval(timer);
50
- reject(new Error(res.message || 'create theme extension version failed'));
51
- }
52
- }, 1000);
53
- });
54
- } else {
55
- // 创建 extension
56
- const { extension_id } = await upsertThemeExtensionRequest(appClientId, partnerId, {
57
- title: extension.extension_name,
58
- resource_url: extension.resource_url
59
- });
60
-
61
- // 创建 version
62
- const { task_id } = await createThemeExtensionVersionRequest(appClientId, partnerId, {
63
- extension_id,
64
- version: '1.0.0',
65
- resource_url: extension.resource_url
66
- });
67
-
68
- const taskResponse = await new Promise((resolve, reject) => {
69
- // 轮询 version 创建状态
70
- let timer = null;
71
- const maxRetry = 10; // 最大重试次数 10s 后超时
72
- let retry = 0;
73
-
74
- timer = setInterval(async () => {
75
- if (retry > maxRetry) {
76
- clearInterval(timer);
77
- // 超时,抛出错误
78
- reject(new Error('create theme extension version timeout'));
79
- }
80
-
81
- retry++;
82
-
83
- const res = await getThemeExtensionVersionTaskRequest(appClientId, partnerId, task_id);
84
- if (res.state === 1) {
85
- clearInterval(timer);
86
- resolve({
87
- extension_id,
88
- extension_version: '1.0.0',
89
- extension_version_id: res.version_id
90
- });
91
- } else if (res.state === 2) {
92
- clearInterval(timer);
93
- reject(new Error(res.message || 'create theme extension version failed'));
94
- }
95
- }, 1000);
96
- });
97
-
98
- // 绑定
99
- const connectionResponse = await connectionAppRequest({
100
- app_client_id: appClientId,
101
- extension_id,
102
- access_token: appAccessToken.access_token
103
- });
104
-
105
- if (connectionResponse.code !== 'Success') {
106
- throw new Error(connectionResponse.message || 'connection theme extension failed');
107
- }
108
-
109
- return taskResponse;
110
- }
111
- }
112
-
113
- module.exports = upsertTheme;
@@ -1,45 +0,0 @@
1
- const fs = require('fs');
2
- const axios = require('axios');
3
- const crypto = require('crypto');
4
- const FormData = require('form-data');
5
-
6
- /**
7
- * 计算文件 md5 并转 base64
8
- */
9
- function calcFileMd5Base64(filePath) {
10
- const fileBuffer = fs.readFileSync(filePath);
11
- const hash = crypto.createHash('md5').update(fileBuffer).digest();
12
- return hash.toString('base64');
13
- }
14
-
15
- /**
16
- * 上传文件到 OSS
17
- * @param {Object} params
18
- * @param {string} params.filePath 文件路径
19
- * @param {string} params.md5 文件 md5(base64 编码)
20
- * @param {object} params.postPolicy getPostPolicy 的返回值
21
- * @returns {Promise<void>}
22
- */
23
- async function uploadFileToOSS({ filePath, md5, postPolicy }) {
24
- const form = new FormData();
25
- form.append('key', postPolicy.key);
26
- form.append('policy', postPolicy.policy);
27
- form.append('x-oss-signature', postPolicy['x-oss-signature']);
28
- form.append('OSSAccessKeyId', postPolicy.OSSAccessKeyId);
29
- form.append('x-oss-signature-version', postPolicy['x-oss-signature-version']);
30
- form.append('x-oss-credential', postPolicy['x-oss-credential']);
31
- form.append('x-oss-date', postPolicy['x-oss-date']);
32
- form.append('success_action_status', '201');
33
- form.append('file', fs.createReadStream(filePath));
34
- const headers = {
35
- ...form.getHeaders(),
36
- 'x-oss-meta-md5': md5
37
- };
38
-
39
- await axios.post(postPolicy.endpoint, form, { headers });
40
- }
41
-
42
- module.exports = {
43
- calcFileMd5Base64,
44
- uploadFileToOSS
45
- };
@@ -1,52 +0,0 @@
1
- const { getPartnerListRequest, getAppCompleteInfoRequest } = require('../../api/cli');
2
- const { selectOne } = require('../../utils/views/select');
3
-
4
- // 选择 partner
5
- async function promptPartnerSelection() {
6
- const result = await getPartnerListRequest();
7
- return await selectOne(result.partners, {
8
- message: 'Which organization is this work for?',
9
- autoPickSingle: false,
10
- formatChoice: (p) => ({ name: p.business_name, value: p })
11
- });
12
- }
13
-
14
- // 获取 partner
15
- async function getPartner(clientId) {
16
- try {
17
- let partner;
18
- if (!clientId) {
19
- partner = await promptPartnerSelection();
20
- } else {
21
- const contextInfo = await getAppCompleteInfoRequest(clientId);
22
- partner = contextInfo.partner;
23
- }
24
- return partner;
25
- } catch (error) {
26
- throw new Error(`Failed to get partner: ${error.message}`);
27
- }
28
- }
29
-
30
- // 根据 appList 判断创建或连接
31
- /**
32
- *
33
- * @param {*} appListRes 获取 app 列表的请求结果
34
- * @returns 是否创建
35
- * @description 根据 app 列表判断创建或连接
36
- */
37
- async function promptCreateOrConnect(appListRes) {
38
- if (appListRes.total === 0) return true;
39
-
40
- return await selectOne(
41
- [
42
- { name: 'Yes, create it as a new app', value: true },
43
- { name: 'No, connect it to an existing app', value: false }
44
- ],
45
- { message: 'Create this project as a new app on Shoplazza?', autoPickSingle: false }
46
- );
47
- }
48
-
49
- module.exports = {
50
- getPartner,
51
- promptCreateOrConnect
52
- };
@@ -1,37 +0,0 @@
1
- const Conf = require('conf');
2
-
3
- class BaseStore {
4
- constructor(projectName, configName) {
5
- this.store = new Conf({ projectName, configName });
6
- }
7
-
8
- get(key, defaultValue = undefined) {
9
- return this.store.get(key, defaultValue);
10
- }
11
-
12
- set(keyOrObj, value) {
13
- if (keyOrObj && typeof keyOrObj === 'object') {
14
- for (const [k, v] of Object.entries(keyOrObj)) {
15
- this.store.set(k, v);
16
- }
17
- } else if (typeof keyOrObj === 'string') {
18
- this.store.set(keyOrObj, value);
19
- } else {
20
- throw new TypeError('Invalid arguments: expected (string, any) or (object)');
21
- }
22
- }
23
-
24
- delete(key) {
25
- this.store.delete(key);
26
- }
27
-
28
- clear() {
29
- this.store.clear();
30
- }
31
-
32
- has(key) {
33
- return this.store.has(key);
34
- }
35
- }
36
-
37
- module.exports = BaseStore;
@@ -1,55 +0,0 @@
1
- const BaseStore = require('./base-store');
2
- const { STORE_CONFIG } = require('./config');
3
-
4
- class ConfigStore extends BaseStore {
5
- constructor() {
6
- super(STORE_CONFIG.PROJECT_NAME, STORE_CONFIG.STORE_NAMES.APP_CONFIG);
7
- }
8
-
9
- // 获取项目配置
10
- getProjectConfig(projectPath) {
11
- return this.get(projectPath);
12
- }
13
-
14
- /**
15
- * @description 设置项目配置
16
- * @param {string} projectPath 项目路径
17
- * @param {{ clientId: string, directory: string, configFile: string }} config 项目配置
18
- */
19
- setProjectConfig(projectPath, config) {
20
- this.set(projectPath, config);
21
- }
22
-
23
- /**
24
- * @description 删除项目配置
25
- * @param {string} projectPath 项目路径
26
- */
27
- removeProjectConfig(projectPath) {
28
- this.delete(projectPath);
29
- }
30
-
31
- /**
32
- * @description 获取所有项目配置
33
- * @returns {Object} 所有项目配置
34
- */
35
- getAllProjects() {
36
- return this.store.store;
37
- }
38
-
39
- /**
40
- * @description 根据 clientId 查找项目
41
- * @param {string} clientId 应用 clientId
42
- * @returns {Object} 项目配置
43
- */
44
- findProjectByClientId(clientId) {
45
- const projects = this.getAllProjects();
46
- for (const [path, config] of Object.entries(projects)) {
47
- if (config.clientId === clientId) {
48
- return { path, config };
49
- }
50
- }
51
- return null;
52
- }
53
- }
54
-
55
- module.exports = ConfigStore;
@@ -1,21 +0,0 @@
1
- // 统一配置
2
- const STORE_CONFIG = {
3
- PROJECT_NAME: 'shoplazza-cli-app',
4
- STORE_NAMES: {
5
- SSO: 'sso',
6
- APP_CONFIG: 'config',
7
- APP_INSTALL: 'app-install'
8
- }
9
- };
10
-
11
- const SSO_STORE_KEY = {
12
- ACCESS_TOKEN: 'access_token',
13
- EXPIRES_IN: 'expires_in',
14
- SESSION_ID: 'session_id',
15
- TOKEN_TYPE: 'token_type'
16
- };
17
-
18
- module.exports = {
19
- STORE_CONFIG,
20
- SSO_STORE_KEY
21
- };
@@ -1,14 +0,0 @@
1
- const SSOStore = require('./sso-store');
2
- const ConfigStore = require('./config-store');
3
- const InstallStore = require('./install-store');
4
-
5
- // 创建实例
6
- const ssoStore = new SSOStore();
7
- const configStore = new ConfigStore();
8
- const installStore = new InstallStore();
9
-
10
- module.exports = {
11
- ssoStore,
12
- configStore,
13
- installStore,
14
- };
@@ -1,41 +0,0 @@
1
- const BaseStore = require('./base-store');
2
- const { STORE_CONFIG } = require('./config');
3
-
4
- class InstallStore extends BaseStore {
5
- constructor() {
6
- super(STORE_CONFIG.PROJECT_NAME, STORE_CONFIG.STORE_NAMES.APP_INSTALL);
7
- }
8
-
9
- // 获取应用安装信息
10
- getInstallInfo(clientId) {
11
- return this.get(clientId);
12
- }
13
-
14
- // 设置应用安装信息
15
- setInstallInfo(clientId, installData) {
16
- this.set(clientId, installData);
17
- }
18
-
19
- // 删除应用安装信息
20
- removeInstallInfo(clientId) {
21
- this.delete(clientId);
22
- }
23
-
24
- // 获取所有安装信息
25
- getAllInstalls() {
26
- return this.store.store;
27
- }
28
-
29
- // 根据店铺域名查找安装信息
30
- findInstallByStoreDomain(storeDomain) {
31
- const installs = this.getAllInstalls();
32
- for (const [clientId, installData] of Object.entries(installs)) {
33
- if (installData.store_domain === storeDomain) {
34
- return { clientId, installData };
35
- }
36
- }
37
- return null;
38
- }
39
- }
40
-
41
- module.exports = InstallStore;
@@ -1,55 +0,0 @@
1
- const BaseStore = require('./base-store');
2
- const { STORE_CONFIG, SSO_STORE_KEY } = require('./config');
3
-
4
- /**
5
- * @typedef {Object} SSOInfo
6
- * @property {string} access_token - 认证 token
7
- * @property {number} expires_in - 过期时间(秒)
8
- * @property {string} session_id - 会话 ID
9
- * @property {string} token_type - token 类型
10
- */
11
-
12
- class SSOStore extends BaseStore {
13
- constructor() {
14
- super(STORE_CONFIG.PROJECT_NAME, STORE_CONFIG.STORE_NAMES.SSO);
15
- }
16
-
17
- /**
18
- * @description 获取 SSO 认证信息
19
- * @returns {SSOInfo} SSO 认证信息
20
- */
21
- getSSOInfo() {
22
- return {
23
- access_token: this.get(SSO_STORE_KEY.ACCESS_TOKEN),
24
- expires_in: this.get(SSO_STORE_KEY.EXPIRES_IN),
25
- session_id: this.get(SSO_STORE_KEY.SESSION_ID),
26
- token_type: this.get(SSO_STORE_KEY.TOKEN_TYPE)
27
- };
28
- }
29
-
30
- /**
31
- * @description 设置 SSO 认证信息
32
- * @param {SSOInfo} ssoData SSO 认证信息
33
- * @returns {void}
34
- */
35
- setSSOInfo(ssoData) {
36
- this.set(ssoData);
37
- }
38
-
39
- /**
40
- * @description 获取 SSO 访问令牌
41
- * @returns {string} SSO 访问令牌 access_token
42
- */
43
- getAccessToken() {
44
- return this.get(SSO_STORE_KEY.ACCESS_TOKEN);
45
- }
46
-
47
- /**
48
- * @description 清除 SSO 认证信息
49
- */
50
- clearSSO() {
51
- this.clear();
52
- }
53
- }
54
-
55
- module.exports = SSOStore;
@@ -1,42 +0,0 @@
1
- /**
2
- * 控制异步任务最大并发数
3
- * @param {number} limit 最大并发数
4
- * @param {Array} tasks 任务数组(每个任务是返回 Promise 的函数)
5
- * @returns {Promise<Array>} 按顺序返回所有任务的结果
6
- */
7
- async function asyncPool(limit, tasks) {
8
- const results = [];
9
- let running = 0; // 当前运行中的任务数
10
- let index = 0; // 下一个要执行的任务索引
11
-
12
- return new Promise((resolve, reject) => {
13
- function runNext() {
14
- // 全部执行完毕
15
- if (index === tasks.length && running === 0) {
16
- return resolve(results);
17
- }
18
-
19
- // 并发已满,等待
20
- while (running < limit && index < tasks.length) {
21
- const currentIndex = index++;
22
- const task = tasks[currentIndex];
23
-
24
- running++;
25
- Promise.resolve()
26
- .then(task)
27
- .then((res) => {
28
- results[currentIndex] = res;
29
- })
30
- .catch((err) => reject(err))
31
- .finally(() => {
32
- running--;
33
- runNext(); // 任务结束后补位
34
- });
35
- }
36
- }
37
-
38
- runNext();
39
- });
40
- }
41
-
42
- module.exports = asyncPool;
@@ -1,16 +0,0 @@
1
- function isDebug() {
2
- return process.argv.indexOf('--debug') >= 0;
3
- }
4
-
5
- function isDevDebug() {
6
- return process.argv.join('').indexOf('--debugdev') >= 0;
7
- }
8
- function isStgDebug() {
9
- return process.argv.join('').indexOf('--debugstg') >= 0;
10
- }
11
-
12
- module.exports = {
13
- isDebug,
14
- isDevDebug,
15
- isStgDebug
16
- };
@@ -1,24 +0,0 @@
1
- const fs = require('fs').promises;
2
- const dotenv = require('dotenv');
3
- const os = require('os');
4
-
5
- async function writeEnvWithDotenv(filePath, kv = {}) {
6
- let src = '';
7
- try {
8
- src = await fs.readFile(filePath, 'utf8');
9
- } catch (e) {
10
- if (e.code !== 'ENOENT') throw e; // 其他错误抛出;不存在则视为空
11
- }
12
- const parsed = src ? dotenv.parse(src) : {};
13
-
14
- // 合并新值
15
- Object.assign(parsed, kv);
16
-
17
- // 手动序列化(注释与原格式将丢失)
18
- const lines = Object.entries(parsed).map(([k, v]) => `${k}=${v ?? ''}`);
19
- await fs.writeFile(filePath, lines.join(os.EOL) + os.EOL, 'utf8');
20
- }
21
-
22
- module.exports = {
23
- writeEnvWithDotenv
24
- };
@@ -1,20 +0,0 @@
1
- const { errorMessageRender } = require('./views/message');
2
-
3
- // 包装命令函数,添加错误处理
4
- const withErrorHandling = (commandFn) => {
5
- return async (...args) => {
6
- try {
7
- return await commandFn(...args);
8
- } catch (error) {
9
- if (process.env.DEBUG) {
10
- console.error(error);
11
- }
12
- errorMessageRender(error.message || error);
13
- process.exit(1);
14
- }
15
- };
16
- };
17
-
18
- module.exports = {
19
- withErrorHandling
20
- };
@@ -1,20 +0,0 @@
1
- const chalk = require('chalk');
2
- const { execSync } = require('child_process');
3
-
4
- // 检查是否安装 git
5
- function checkGit() {
6
- try {
7
- execSync('git --version');
8
- } catch (error) {
9
- throw new Error(
10
- [
11
- 'Git is not installed. Please install Git to continue:',
12
- chalk.underline('https://git-scm.com/book/en/v2/Getting-Started-Installing-Git')
13
- ].join('\n')
14
- );
15
- }
16
- }
17
-
18
- module.exports = {
19
- checkGit
20
- };
@@ -1,27 +0,0 @@
1
- const fs = require('fs');
2
-
3
- /**
4
- * 读取并解析JSON文件
5
- * @param {string} filePath - JSON文件路径
6
- * @returns {Object} - 解析后的对象
7
- */
8
- function parseJsonFile(filePath) {
9
- const content = fs.readFileSync(filePath, 'utf-8');
10
- return JSON.parse(content);
11
- }
12
-
13
- /**
14
- * 修改package.json文件
15
- * @param {string} filePath - package.json文件路径
16
- * @param {function(Object):Object} callback - 修改函数
17
- */
18
- async function modifyJsonFile(filePath, callback) {
19
- const packageJson = parseJsonFile(filePath);
20
- const result = await callback(packageJson);
21
- fs.writeFileSync(filePath, JSON.stringify(result, null, 2), 'utf-8');
22
- }
23
-
24
- module.exports = {
25
- parseJsonFile,
26
- modifyJsonFile
27
- };
@@ -1,33 +0,0 @@
1
- const fs = require('fs');
2
- /**
3
- * 将文件名转换为连字符格式(kebab-case)
4
- * @param {string} str - 需要处理的字符串
5
- * @returns {string} - 处理后的字符串
6
- */
7
- function slugify(str) {
8
- return str
9
- .toLowerCase() // 转为小写
10
- .trim() // 去除前后空格
11
- .replace(/[^\w\s-]/g, '') // 移除所有非单词字符、空格和连字符
12
- .replace(/[\s_-]+/g, '-') // 将空格和下划线替换为连字符
13
- .replace(/^-+|-+$/g, ''); // 移除开头和结尾的连字符
14
- }
15
-
16
- /**
17
- * 判断路径是否存在
18
- * @param {string} path - 需要判断的路径
19
- * @returns {boolean} - 路径是否存在
20
- */
21
- function existsPath(path) {
22
- try {
23
- fs.accessSync(path, fs.constants.F_OK);
24
- return true; // 路径存在
25
- } catch (error) {
26
- return false; // 路径不存在
27
- }
28
- }
29
-
30
- module.exports = {
31
- slugify,
32
- existsPath
33
- };