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,37 +0,0 @@
1
- function getArchPlatform() {
2
- let platform;
3
- let arch;
4
- switch (process.platform.toLowerCase()) {
5
- case 'darwin':
6
- platform = 'macos';
7
- break;
8
- case 'linux':
9
- platform = 'linux';
10
- break;
11
- case 'win32':
12
- platform = 'windows';
13
- break;
14
- default:
15
- throw Error(`Unsupported platform ${processPlatform}`);
16
- }
17
- switch (process.arch.toLowerCase()) {
18
- case 'arm':
19
- case 'arm64':
20
- arch = 'arm';
21
- break;
22
- // A 32 bit arch likely needs that someone has 32bit Node installed on a
23
- // 64 bit system, and wasmtime doesn't support 32bit anyway.
24
- case 'ia32':
25
- case 'x64':
26
- arch = 'x86_64';
27
- break;
28
- default:
29
- throw Error(`Unsupported architecture ${processArch}`);
30
- }
31
-
32
- return `${arch}-${platform}`;
33
- }
34
-
35
- module.exports = {
36
- getArchPlatform
37
- };
@@ -1,72 +0,0 @@
1
- const axios = require('axios');
2
- const { getSSOAccessToken } = require('../../services/auth');
3
- const { CODES } = require('../../constant/code');
4
- const curlirize = require('axios-curlirize');
5
- const { ssoStore } = require('../../store');
6
- const chalk = require('chalk');
7
- const { getPartnerHost } = require('../../services/auth/config');
8
- const { responseDebug } = require('./debug');
9
-
10
- const cliClient = axios.create({
11
- baseURL: `${getPartnerHost()}`,
12
- headers: {
13
- 'Content-Type': 'application/json'
14
- }
15
- });
16
-
17
- curlirize(cliClient, () => {});
18
-
19
- cliClient.interceptors.request.use(
20
- async (config) => {
21
- const { access_token } = await getSSOAccessToken();
22
- config.headers['Cookie'] = `awesomev2=${access_token}`;
23
- return config;
24
- },
25
- (error) => {
26
- return Promise.reject(error);
27
- }
28
- );
29
-
30
- cliClient.interceptors.response.use(
31
- (response) => {
32
- if (typeof response.data === 'string') {
33
- if (process.env.DEBUG) {
34
- responseDebug(response);
35
- }
36
- // 响应结构体不正确
37
- throw new Error(`${response.config.url} response data is not a valid JSON`);
38
- }
39
-
40
- if (response.data.code === CODES.SUCCESS) {
41
- return response.data.data;
42
- }
43
-
44
- throw new Error(`[${response.config.url}] [${response.status}] ${response?.data?.message}`);
45
- },
46
- async (error) => {
47
- if (!error.response) return Promise.reject(error);
48
-
49
- if (process.env.DEBUG) {
50
- responseDebug(error.response);
51
- }
52
-
53
- // 自定义重试标记,防止无限循环
54
- error.config.__isRetry = error.config.__isRetry || false;
55
-
56
- // 如果 403 且还没重试过
57
- if (error.response?.status === 403 && !error.config.__isRetry) {
58
- error.config.__isRetry = true; // 标记为已经重试
59
- ssoStore.clearSSO();
60
- // 重新发送请求
61
- return cliClient(error.config);
62
- }
63
-
64
- throw new Error(
65
- `[${error.response.config?.url}] [${error.response.status}] ${error.response?.data?.message || error.message}`
66
- );
67
- }
68
- );
69
-
70
- module.exports = {
71
- cliClient
72
- };
@@ -1,13 +0,0 @@
1
- /**
2
- * 打印 response 的 debug 信息
3
- * @param {import('axios').AxiosResponse} response
4
- */
5
- function responseDebug(response) {
6
- console.log(`=============== DEBUG ${response.config.url} ===============`);
7
- console.error(response);
8
- console.log(`=============== DEBUG ${response.config.url} ===============`);
9
- }
10
-
11
- module.exports = {
12
- responseDebug
13
- };
@@ -1,67 +0,0 @@
1
- const axios = require('axios');
2
- const { getStoreAccessToken } = require('../../services/auth');
3
- const curlirize = require('axios-curlirize');
4
- const { responseDebug } = require('./debug');
5
-
6
- // 缓存不同 app_id 的 axios 实例
7
- const clientCache = new Map();
8
-
9
- /**
10
- * 获取或创建指定 app_client_id 的 openapi client
11
- * @param {string} app_client_id
12
- * @returns {import('axios').AxiosInstance}
13
- */
14
- async function getOpenapiClient(app_client_id, partner_id) {
15
- if (clientCache.has(app_client_id)) {
16
- return clientCache.get(app_client_id);
17
- }
18
-
19
- const { store_domain, access_token } = await getStoreAccessToken(app_client_id, partner_id);
20
-
21
- if (!store_domain || !access_token) {
22
- throw new Error(`storeDomain or accessToken missing for app_client_id: ${app_client_id}`);
23
- }
24
-
25
- const client = axios.create({
26
- baseURL: `https://${store_domain}`,
27
- headers: { 'Access-Token': access_token },
28
- 'Content-Type': 'application/json'
29
- });
30
-
31
- client.interceptors.request.use((config) => {
32
- return config;
33
- });
34
-
35
- client.interceptors.response.use(
36
- (response) => {
37
- if (typeof response.data === 'string') {
38
- if (process.env.DEBUG) {
39
- responseDebug(response);
40
- }
41
- throw new Error(`${response.config.url} response data is not a valid JSON`);
42
- }
43
-
44
- return response.data;
45
- },
46
- (error) => {
47
- if (!error.response) return Promise.reject(error);
48
-
49
- if (process.env.DEBUG) {
50
- responseDebug(error.response);
51
- }
52
-
53
- throw new Error(
54
- `[${error.response.config?.url}] [${error.response.status}] ${error.response?.data?.message || error.message}`
55
- );
56
- }
57
- );
58
-
59
- curlirize(client, () => {});
60
-
61
- // 缓存下来,避免重复创建
62
- clientCache.set(app_client_id, client);
63
-
64
- return client;
65
- }
66
-
67
- module.exports = { getOpenapiClient };
@@ -1,47 +0,0 @@
1
- const axios = require('axios');
2
- const curlirize = require('axios-curlirize');
3
- const { getPartnerHost } = require('../../services/auth/config');
4
- const { responseDebug } = require('./debug');
5
-
6
- const partnerOpenapiClient = axios.create({
7
- baseURL: `${getPartnerHost()}`,
8
- headers: {
9
- 'Content-Type': 'application/json'
10
- }
11
- });
12
-
13
- curlirize(partnerOpenapiClient, () => {});
14
-
15
- partnerOpenapiClient.interceptors.request.use(async (config) => {
16
- // const { store_id } = await getStoreAccessToken(config.headers['app-client-id']);
17
- // config.headers['store-id'] = store_id;
18
- return config;
19
- });
20
-
21
- partnerOpenapiClient.interceptors.response.use(
22
- (response) => {
23
- if (typeof response.data === 'string') {
24
- if (process.env.DEBUG) {
25
- responseDebug(response);
26
- }
27
- throw new Error(`${response.config.url} response data is not a valid JSON`);
28
- }
29
-
30
- return response.data;
31
- },
32
- (error) => {
33
- if (!error.response) return Promise.reject(error);
34
-
35
- if (process.env.DEBUG) {
36
- responseDebug(error.response);
37
- }
38
-
39
- throw new Error(
40
- `[${error.response.config?.url}] [${error.response.status}] ${error.response?.data?.message || error.message}`
41
- );
42
- }
43
- );
44
-
45
- module.exports = {
46
- partnerOpenapiClient
47
- };
@@ -1,56 +0,0 @@
1
- const TOML = require('@iarna/toml');
2
- const fs = require('fs');
3
- const glob = require('glob');
4
-
5
- /**
6
- * 解析TOML文件
7
- * @param {string} filePath - 文件路径
8
- * @returns {Object} - 解析后的对象
9
- */
10
- function parseTomlFile(filePath) {
11
- const content = fs.readFileSync(filePath, 'utf-8');
12
- return TOML.parse(content);
13
- }
14
-
15
- /**
16
- * 修改TOML配置文件
17
- * @param {string} filePath - 文件路径
18
- * @param {function(Object):Object} callback - 修改函数
19
- */
20
- async function modifyTomlFile(filePath, callback) {
21
- const config = parseTomlFile(filePath);
22
- const result = await callback(config);
23
- fs.writeFileSync(filePath, TOML.stringify(result), 'utf-8');
24
- }
25
-
26
- /**
27
- * 创建新的TOML配置文件
28
- * @param {string} filePath - 文件路径
29
- * @param {function(Object):Object} callback - 修改函数
30
- */
31
- async function createTomlConfig(filePath, callback) {
32
- // 默认配置
33
- const defaults = {
34
- client_id: '',
35
- scopes: 'read_customer write_cart_transform',
36
- };
37
- const result = await callback(defaults);
38
- fs.writeFileSync(filePath, TOML.stringify(result), 'utf-8');
39
- }
40
-
41
- /**
42
- * 获取所有TOML配置文件
43
- * @param {string} [baseDir=process.cwd()] - 基础目录
44
- * @returns {string[]} - 配置文件列表
45
- */
46
- function getTomlConfigFiles(baseDir = process.cwd()) {
47
- return glob.sync('shoplazza.app*.toml', { cwd: baseDir });
48
- }
49
-
50
-
51
- module.exports = {
52
- parseTomlFile,
53
- modifyTomlFile,
54
- createTomlConfig,
55
- getTomlConfigFiles
56
- };
@@ -1,68 +0,0 @@
1
- const chalk = require('chalk');
2
- const boxen = require('boxen');
3
- const { COLORS } = require('../../constant/color');
4
-
5
- function getBoxenWidth() {
6
- const width = process.stdout.columns;
7
- return width > 100 ? 100 : width;
8
- }
9
-
10
- // 通用消息渲染函数
11
- function renderMessage(message, options) {
12
- console.log(
13
- boxen(message, {
14
- width: getBoxenWidth(),
15
- padding: 1,
16
- borderStyle: 'round',
17
- ...options
18
- })
19
- );
20
- }
21
-
22
- // 标题渲染
23
- function renderTitle(title) {
24
- return chalk.hex(COLORS.WHITE)(title);
25
- }
26
-
27
- // 错误信息输出
28
- function errorMessageRender(message) {
29
- renderMessage(message, {
30
- title: renderTitle('error'),
31
- titleAlignment: 'left',
32
- borderColor: COLORS.RED
33
- });
34
- }
35
-
36
- // 成功信息输出
37
- function successMessageRender(message) {
38
- renderMessage(message, {
39
- title: renderTitle('success'),
40
- titleAlignment: 'left',
41
- borderColor: COLORS.GREEN
42
- });
43
- }
44
-
45
- // 提示信息输出
46
- function infoMessageRender(message) {
47
- renderMessage(message, {
48
- title: renderTitle('info'),
49
- titleAlignment: 'left',
50
- borderColor: COLORS.GRAY
51
- });
52
- }
53
-
54
- // 警告信息输出
55
- function warningMessageRender(message) {
56
- renderMessage(message, {
57
- title: renderTitle('warning'),
58
- titleAlignment: 'left',
59
- borderColor: COLORS.YELLOW
60
- });
61
- }
62
-
63
- module.exports = {
64
- errorMessageRender,
65
- successMessageRender,
66
- infoMessageRender,
67
- warningMessageRender,
68
- };
@@ -1,36 +0,0 @@
1
- const inquirer = require('inquirer');
2
-
3
- /**
4
- * 通用:选择列表中的单项
5
- * @param {Array} list - 数据源数组
6
- * @param {Object} options - 配置选项
7
- * @param {string} [options.message='Please select:'] - 选择项的提示
8
- * @param {boolean} [options.autoPickSingle=true] - 是否只有一项时自动返回
9
- * @param {Function} [options.formatChoice] - 单项到 { name, value } 的映射函数,默认返回原项
10
- * @returns {Promise<any|null>}
11
- */
12
- async function selectOne(
13
- list,
14
- { message = 'Please select:', autoPickSingle = true, formatChoice = (item) => item } = {}
15
- ) {
16
- if (!list || list.length === 0) {
17
- return null;
18
- }
19
-
20
- if (autoPickSingle && list.length === 1) {
21
- return list[0];
22
- }
23
-
24
- const { selected } = await inquirer.prompt({
25
- type: 'list',
26
- name: 'selected',
27
- message,
28
- choices: list.map(formatChoice)
29
- });
30
-
31
- return selected;
32
- }
33
-
34
- module.exports = {
35
- selectOne
36
- };
@@ -1,55 +0,0 @@
1
- const { mkdtemp, rm } = require('fs/promises');
2
- const { join } = require('path');
3
- const { tmpdir } = require('os');
4
-
5
- /**
6
- * 创建临时目录
7
- * @param {string} [prefix='temp-'] - 临时目录前缀
8
- * @returns {Promise<string>} - 临时目录路径
9
- */
10
- async function createTempDir(prefix = 'temp-') {
11
- const tempDir = await mkdtemp(join(tmpdir(), prefix));
12
- return tempDir;
13
- }
14
-
15
- /**
16
- * 删除临时目录
17
- * @param {string} path - 临时目录路径
18
- * @returns {Promise<void>}
19
- */
20
- async function removeTempDir(path) {
21
- try {
22
- await rm(path, { recursive: true, force: true });
23
- } catch (error) {
24
- console.error(`Failed to remove temporary directory: ${path}`, error);
25
- throw error;
26
- }
27
- }
28
-
29
- /**
30
- * 使用临时目录执行操作
31
- * @param {function(string):Promise<T>} callback - 在临时目录中执行的回调函数
32
- * @param {string} [prefix='temp-'] - 临时目录前缀
33
- * @returns {Promise<T>} - 回调函数的返回值
34
- * @template T
35
- */
36
- async function withTempDir(callback, prefix = 'temp-') {
37
- let tempDir;
38
- try {
39
- tempDir = await createTempDir(prefix);
40
- const result = await callback(tempDir);
41
- return result;
42
- } catch (error) {
43
- throw error;
44
- } finally {
45
- if (tempDir) {
46
- await removeTempDir(tempDir);
47
- }
48
- }
49
- }
50
-
51
- module.exports = {
52
- createTempDir,
53
- removeTempDir,
54
- withTempDir
55
- };
@@ -1,7 +0,0 @@
1
- const getCode = () => {
2
- return new Promise((resolve, reject) => {
3
- resolve('code_example');
4
- });
5
- };
6
-
7
- module.exports = getCode;
File without changes
package/lib/auth/child.js DELETED
@@ -1,23 +0,0 @@
1
- const { createServer } = require('http');
2
- const url = require('url');
3
-
4
- const server = createServer((req, res) => {
5
- const { query } = url.parse(req.url, true);
6
- res.writeHeader(200, { 'Content-Type': 'text/html' });
7
- res.end(`
8
- <!DOCTYPE html>
9
- <html>
10
- <head>
11
- <title>Authenticated successfully</title>
12
- </head>
13
- <body>
14
- <h1 style="color: #black;">Authenticated successfully. You may now close this page.</h1>
15
- </body>
16
- </html>
17
- `);
18
-
19
- if (query.code) {
20
- process.send(query);
21
- process.exit();
22
- }
23
- }).listen(3456);
@@ -1,39 +0,0 @@
1
- const chalk = require('chalk');
2
- const { fork } = require('child_process');
3
- const path = require('path');
4
- const open = require('open');
5
- const log = require('../log');
6
- const { REDIRECT_URI } = require('../utils/config');
7
- const { getSSOAuthUrl, getClientId } = require('../utils/utils');
8
-
9
- const openSSOPage = (store) => {
10
- open(
11
- `${getSSOAuthUrl(store)}/switch_account?lack=0&continue=${encodeURIComponent(
12
- `${getSSOAuthUrl(store)}/api/oauth/authorize?action=login&client_id=${getClientId(
13
- store
14
- )}&redirect_uri=${REDIRECT_URI}&response_type=code`
15
- )}`
16
- );
17
- log.info(`${chalk.green('✓')} Initiating authentication`);
18
- };
19
-
20
- const getCode = (store) => {
21
- return new Promise((resolve, reject) => {
22
- const child = fork(path.join(__dirname, './child.js'), { timeout: 60 * 1000 });
23
- child.on('message', function (message) {
24
- if (message.code) {
25
- resolve(message.code);
26
- }
27
- });
28
- child.on('close', function (message) {
29
- // Timeout
30
- if (message === null) {
31
- log.error(chalk.red('✗ Timed out while waiting for response from Shoplazza'));
32
- reject('timeout');
33
- }
34
- });
35
- openSSOPage(store);
36
- });
37
- };
38
-
39
- module.exports = getCode;
package/lib/auth/index.js DELETED
@@ -1,134 +0,0 @@
1
- const axios = require('axios');
2
- const chalk = require('chalk');
3
- const Sentry = require('@sentry/node');
4
- const querystring = require('querystring');
5
- const { get, set, empty } = require('../db/user');
6
- const log = require('../log');
7
- const { REDIRECT_URI } = require('../utils/config');
8
- const { getAccountUrl, getClientId, getSSOAuthUrl } = require('../utils/utils');
9
-
10
- exports.postAccessToken = async (code, store) => {
11
- try {
12
- const { data } = await axios.post(
13
- `${getSSOAuthUrl(store)}/api/oauth/token`,
14
- querystring.stringify({
15
- client_id: getClientId(store),
16
- code,
17
- grant_type: 'authorization_code',
18
- redirect_uri: REDIRECT_URI
19
- }),
20
- {
21
- headers: {
22
- 'Content-Type': 'application/x-www-form-urlencoded'
23
- }
24
- }
25
- );
26
- empty();
27
-
28
- set({
29
- access_token: data.access_token,
30
- session_id: data.session_id
31
- });
32
- } catch (err) {
33
- log.error(chalk.red('\n✗ Failed to post access token'));
34
- process.exit(-1);
35
- }
36
- };
37
-
38
- exports.getUserInfo = async (store) => {
39
- try {
40
- const { data } = await axios.get(`${getSSOAuthUrl(store)}/api/sso/current/users`, {
41
- headers: {
42
- Cookie: `awesomev2=${get('session_id')}`
43
- }
44
- });
45
- const activeUser = data.users.find((user) => user.active) || data.users[0];
46
- set({
47
- user_id: activeUser.user_id
48
- });
49
- } catch (err) {
50
- log.error(chalk.red('✗ Failed to get user info'));
51
- process.exit(-1);
52
- }
53
- };
54
-
55
- exports.postExchangeToken = async (storeDomain, options = {}) => {
56
- return new Promise(async (resolve, reject) => {
57
- try {
58
- const { data } = await axios.post(
59
- `${getAccountUrl(storeDomain)}/api/accounts/store/token`,
60
- {
61
- user_id: get('user_id'),
62
- domain: storeDomain
63
- },
64
- {
65
- headers: {
66
- Cookie: `awesomev2=${get('session_id')}`
67
- }
68
- }
69
- );
70
-
71
- set({
72
- store_domain: storeDomain.replace(/^https?:\/\//, ''),
73
- exchange_token: data.access_token
74
- });
75
- resolve();
76
- } catch (err) {
77
- reject(err);
78
- Sentry.captureException(err);
79
- empty();
80
- if (!options.ignoreLogError) {
81
- if (err?.response?.status === 401) {
82
- log.error(chalk.red(`\n✗ You are not authorized to edit themes on ${storeDomain}.`));
83
- log.info(
84
- chalk.green(
85
- 'Check if your user is activated, has permission to edit themes at the store, and try to re-login.'
86
- )
87
- );
88
- } else {
89
- log.error(chalk.red(`\n✗ ${storeDomain} is not a valid store.`));
90
- }
91
- }
92
- }
93
- });
94
- };
95
-
96
- exports.postStoreToken = async (storeDomain, options = {}) => {
97
- return new Promise(async (resolve, reject) => {
98
- try {
99
- const { data } = await axios.post(
100
- `${getAccountUrl(storeDomain)}/api/accounts/store/session`,
101
- {
102
- user_id: get('user_id'),
103
- domain: storeDomain
104
- },
105
- {
106
- headers: {
107
- Cookie: `awesomev2=${get('session_id')}`
108
- }
109
- }
110
- );
111
-
112
- set({
113
- store_session: data.encode_session_id
114
- });
115
- resolve();
116
- } catch (err) {
117
- reject(err);
118
- Sentry.captureException(err);
119
- empty();
120
- if (!options.ignoreLogError) {
121
- if (err?.response?.status === 401) {
122
- log.error(chalk.red(`\n✗ You are not authorized to edit themes on ${storeDomain}.`));
123
- log.info(
124
- chalk.green(
125
- 'Check if your user is activated, has permission to edit themes at the store, and try to re-login.'
126
- )
127
- );
128
- } else {
129
- log.error(chalk.red(`\n✗ ${storeDomain} is not a valid store.`));
130
- }
131
- }
132
- }
133
- });
134
- };
package/lib/check.js DELETED
@@ -1,28 +0,0 @@
1
- const { consoleWarn } = require("./utils/console");
2
-
3
- const supportVersion = ['v20.9.0', 'v20.18.0'];
4
-
5
- // 解析当前版本号
6
- function parseVersion(versionStr) {
7
- return versionStr.slice(1).split('.').slice(0, 3).map(Number);
8
- }
9
-
10
- function checkNodeVersion() {
11
- const currentVersion = parseVersion(process.version);
12
- // 检查当前版本是否在支持范围内
13
- const isSupported = supportVersion
14
- .map(parseVersion)
15
- .some(
16
- (version) =>
17
- version[0] === currentVersion[0] && version[1] === currentVersion[1] && version[2] === currentVersion[2]
18
- );
19
-
20
- if (!isSupported) {
21
- consoleWarn(
22
- `[WARNING]the version of current Node.js is ${process.version},advise select the support version:`,
23
- supportVersion.join(',')
24
- );
25
- }
26
- }
27
-
28
- checkNodeVersion();