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,213 +0,0 @@
1
- const fsExtra = require('fs-extra');
2
- const path = require('path');
3
- const chalk = require('chalk');
4
- const AdmZip = require('adm-zip');
5
- const md5 = require('md5');
6
- const { table } = require('table');
7
- const { WORKSPACE_PATH, THEME_APP_CONFIG_PATH } = require('./config');
8
-
9
- /**
10
- * 通用的占位符替换函数
11
- */
12
- const replacePlaceholders = async (filePath, replacements) => {
13
- if (!fsExtra.pathExistsSync(filePath)) {
14
- console.warn(`File "${filePath}" does not exist, skipping replacement.`);
15
- return;
16
- }
17
- let content = await fsExtra.readFile(filePath, 'utf-8');
18
- // 替换占位符
19
- for (const [placeholder, value] of Object.entries(replacements)) {
20
- const regex = new RegExp(`\\{\\{${placeholder}\\}\\}`, 'g'); // 匹配占位符格式:{{placeholder}}
21
- content = content.replace(regex, value);
22
- }
23
- // 写回文件
24
- await fsExtra.writeFile(filePath, content, 'utf-8');
25
- };
26
-
27
- /**
28
- * 重命名指定文件
29
- * @param {string} filePath - 原始文件的完整路径
30
- * @param {string} targetName - 新的文件名
31
- */
32
- const renameFile = async (filePath, targetName) => {
33
- if (!fsExtra.pathExistsSync(filePath)) {
34
- console.warn(`File "${filePath}" does not exist, skipping.`);
35
- return;
36
- }
37
- const targetFilePath = path.resolve(path.dirname(filePath), `${targetName}${path.extname(filePath)}`);
38
- await fsExtra.rename(filePath, targetFilePath);
39
- };
40
-
41
- /**
42
- * 获取themeApp配置(信息)
43
- * @returns {Promise<string>}
44
- */
45
- async function getThemeExtensionConfig() {
46
- if (!fsExtra.pathExistsSync(THEME_APP_CONFIG_PATH)) {
47
- throw new Error(
48
- `The current workspace is not a valid theme extension project, because "${WORKSPACE_PATH}" is missing the required "extension.config.json" file.`
49
- );
50
- }
51
- return fsExtra.readJson(THEME_APP_CONFIG_PATH);
52
- }
53
-
54
- /**
55
- * 更新themeApp配置(信息)
56
- * @param {Object} config 待更新的配置信息
57
- */
58
- async function setThemeExtensionConfig(config) {
59
- const oldThemeExtensionConfig = await getThemeExtensionConfig();
60
- const newThemeExtensionConfig = { ...oldThemeExtensionConfig, ...config };
61
- await fsExtra.writeJson(THEME_APP_CONFIG_PATH, newThemeExtensionConfig, { spaces: 2 });
62
- }
63
-
64
- /**
65
- * 计算文件夹内容的哈希值
66
- * @param {string} dirPath - 文件夹路径
67
- * @returns {Promise<string>} 返回基于文件夹内容的哈希值
68
- */
69
- async function calculateFolderHash(dirPath) {
70
- if (!fsExtra.pathExistsSync(dirPath)) {
71
- throw new Error(chalk.red(`Calculate folder hash path does not exist: ${dirPath}`));
72
- }
73
- const files = await fsExtra.readdir(dirPath);
74
- let contentHash = '';
75
- for (const file of files) {
76
- const filePath = path.join(dirPath, file);
77
- const fileStats = await fsExtra.stat(filePath);
78
-
79
- if (fileStats.isDirectory()) {
80
- // 如果是目录,递归计算文件夹内容的哈希值
81
- contentHash += await calculateFolderHash(filePath);
82
- } else {
83
- // 如果是文件,读取文件内容并计算哈希
84
- const fileContent = await fsExtra.readFile(filePath);
85
- contentHash += md5(fileContent);
86
- }
87
- }
88
-
89
- return md5(contentHash);
90
- }
91
-
92
- /**
93
- * 通用的压缩函数(同目录生成zip压缩文件)
94
- * @param {string} sourcePath - 需要压缩的目录或文件路径
95
- * @returns {Promise<Object>} 返回压缩文件的生成路径&压碎文件名
96
- */
97
- async function compress(sourcePath) {
98
- if (!fsExtra.pathExistsSync(sourcePath)) {
99
- throw new Error(chalk.red(`Compress path does not exist: ${sourcePath}`));
100
- }
101
- const sourceName = path.basename(sourcePath);
102
- const outputDir = path.dirname(sourcePath);
103
- const sourceHash = await calculateFolderHash(sourcePath);
104
- const fileName = `${sourceName}-${sourceHash.substring(0, 8)}${Date.now().toString(16).substring(0, 8)}.zip`;
105
- const outputPath = path.resolve(outputDir, fileName);
106
-
107
- return new Promise((resolve, reject) => {
108
- const zip = new AdmZip();
109
- if (fsExtra.statSync(sourcePath).isDirectory()) {
110
- zip.addLocalFolder(sourcePath, sourceName);
111
- } else {
112
- zip.addLocalFile(sourcePath);
113
- }
114
-
115
- zip.writeZip(outputPath, (err) => {
116
- if (err) {
117
- reject(err);
118
- } else {
119
- resolve({
120
- zipPath: outputPath,
121
- zipName: fileName
122
- });
123
- }
124
- });
125
- });
126
- }
127
-
128
- /**
129
- * 比较两个版本号的大小
130
- * @param {String} version1 版本号1
131
- * @param {String} version2 版本号2
132
- * @returns version1 < version2 返回 -1,version1 > version2 返回 1,相等返回 0
133
- */
134
- function compareVersions(version1, version2) {
135
- const v1 = version1.split('.').map(Number);
136
- const v2 = version2.split('.').map(Number);
137
-
138
- for (let i = 0; i < Math.max(v1.length, v2.length); i++) {
139
- const num1 = v1[i] || 0;
140
- const num2 = v2[i] || 0;
141
-
142
- if (num1 < num2) {
143
- return -1;
144
- }
145
- if (num1 > num2) {
146
- return 1;
147
- }
148
- }
149
- return 0;
150
- }
151
-
152
- /**
153
- * 获取文件名及其直接父目录名
154
- * @param {string} filePath - 文件的绝对路径
155
- * @returns {{ fileName: string, parentDirName: string }} 返回包含文件名和父目录名的对象
156
- */
157
- function getFileInfo(filePath) {
158
- const fileName = path.basename(filePath);
159
- const parentDirName = path.basename(path.dirname(filePath));
160
- return { fileName, parentDirName };
161
- }
162
-
163
- // 表格配置
164
- const TABLE_CONFIG = {
165
- border: {
166
- topBody: '═',
167
- topJoin: '╤',
168
- topLeft: '╔',
169
- topRight: '╗',
170
- bottomBody: '═',
171
- bottomJoin: '╧',
172
- bottomLeft: '╚',
173
- bottomRight: '╝',
174
- bodyLeft: '║',
175
- bodyRight: '║',
176
- bodyJoin: '│',
177
- joinBody: '─',
178
- joinLeft: '╟',
179
- joinRight: '╢',
180
- joinJoin: '┼'
181
- }
182
- };
183
-
184
- /**
185
- * 图像化表格渲染数据
186
- * @param {Array} data - 数据
187
- * @param {Array} options - 配置项 [{ label:string, filed:string, color?:string}, ...]
188
- * @example
189
- * renderTable([{name:'Jack',age:20},{name:'Tom',age:30}],
190
- * [{label:'姓名',filed:'name',color:''},{label:'年龄',filed:'age',color:''}]
191
- * )
192
- */
193
- function renderTable(data, options) {
194
- const header = options.map((item) => chalk.bold(item.label));
195
- const rows = data.map((item) => options.map((opt) => chalk[opt.color || 'whiteBright'](item[opt.filed])));
196
- const tableData = [header, ...rows];
197
- return table(tableData, {
198
- border: Object.fromEntries(
199
- Object.entries(TABLE_CONFIG.border).map(([key, val]) => [key, chalk.blueBright.bold(val)])
200
- )
201
- });
202
- }
203
-
204
- module.exports = {
205
- replacePlaceholders,
206
- renameFile,
207
- getThemeExtensionConfig,
208
- setThemeExtensionConfig,
209
- compress,
210
- compareVersions,
211
- getFileInfo,
212
- renderTable
213
- };
package/lib/tracing.js DELETED
@@ -1,50 +0,0 @@
1
- const axios = require('axios');
2
- const Sentry = require('@sentry/node');
3
- const Tracing = require('@sentry/tracing');
4
-
5
- const map = new Map();
6
- const generatorTransactionName = (config) => {
7
- try {
8
- return `${config.method.toUpperCase()}-${config.url}-${JSON.stringify(config.params)}-${JSON.stringify(
9
- config.data
10
- )}`;
11
- } catch (err) {
12
- Sentry.captureException(err);
13
- return `${config.method.toUpperCase()}-${config.url}`;
14
- }
15
- };
16
-
17
- axios.interceptors.request.use((config) => {
18
- try {
19
- Sentry.configureScope((scope) => {
20
- const transaction = Sentry.startTransaction({
21
- op: 'transaction',
22
- name: generatorTransactionName(config)
23
- });
24
- map.set(generatorTransactionName(config), transaction);
25
- scope.setSpan(transaction);
26
- });
27
- } catch (err) {
28
- Sentry.captureException(err);
29
- }
30
-
31
- return config;
32
- });
33
-
34
- axios.interceptors.response.use(
35
- function (response) {
36
- try {
37
- const key = generatorTransactionName(response.config);
38
- const transaction = map.get(key);
39
- transaction.finish();
40
- map.delete(key);
41
- } catch (err) {
42
- Sentry.captureException(err);
43
- }
44
- return response;
45
- },
46
- function (error) {
47
- Sentry.captureException(error);
48
- return Promise.reject(error);
49
- }
50
- );
@@ -1,12 +0,0 @@
1
- exports.SSO_AUTH_URL = 'https://sso.shoplazza.com';
2
- exports.ACCOUNT_URL = 'https://myaccount.shoplazza.com';
3
- exports.CLIENT_ID = '807525c9-dd77-4f4e-a738-d1e9d02c593d';
4
- exports.REDIRECT_URI = 'http://127.0.0.1:3456';
5
- exports.THEME_DIRS = ['assets', 'config', 'layout', 'locales', 'sections','blocks' ,'snippets', 'templates'];
6
- exports.DEV_SSO_AUTH_URL = 'https://sso.dev.shoplazza.com';
7
- exports.DEV_ACCOUNT_URL = 'https://myaccount.dev.shoplazza.com';
8
- exports.DEV_CLIENT_ID = 'b630b285-e098-4c51-a7a4-d0240c9fc209';
9
-
10
- exports.STG_SSO_AUTH_URL = 'https://sso.stg.shoplazza.com';
11
- exports.STG_ACCOUNT_URL = 'https://myaccount.stg.shoplazza.com';
12
- exports.STG_CLIENT_ID = 'b630b285-e098-4c51-a7a4-d0240c9fc209';
@@ -1,33 +0,0 @@
1
- const colors = require('colors');
2
-
3
- function isDebug() {
4
- return ~process.argv.indexOf('--debug');
5
- }
6
-
7
- function consoleError(...args) {
8
- if (isDebug()) {
9
- console.trace(colors.red(args));
10
- } else {
11
- console.log(colors.red(args.join(' ')));
12
- }
13
- }
14
-
15
- function consoleBlue(...args) {
16
- console.log(colors.blue(args.join(' ')));
17
- }
18
-
19
- function consoleSuccess(...args) {
20
- console.log(colors.green(args.join(' ')));
21
- }
22
-
23
- function consoleWarn(...args) {
24
- console.log(colors.yellow(args.join(' ')));
25
- }
26
-
27
- module.exports = {
28
- isDebug,
29
- consoleError,
30
- consoleSuccess,
31
- consoleBlue,
32
- consoleWarn
33
- };
package/lib/utils/env.js DELETED
@@ -1,17 +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
- };
17
-
package/lib/utils/file.js DELETED
@@ -1,48 +0,0 @@
1
- const path = require('path');
2
- const fs = require('fs-extra');
3
- const { getFileJson } = require('../checkout/util');
4
-
5
- function copyDir(srcDir, destDir) {
6
- fs.mkdirSync(destDir, { recursive: true });
7
- for (const file of fs.readdirSync(srcDir)) {
8
- const srcFile = path.resolve(srcDir, file);
9
- const destFile = path.resolve(destDir, file);
10
- copy(srcFile, destFile);
11
- }
12
- }
13
-
14
- function copy(src, dest) {
15
- const stat = fs.statSync(src);
16
- if (stat.isDirectory()) {
17
- copyDir(src, dest);
18
- } else {
19
- fs.copyFileSync(src, dest);
20
- }
21
- }
22
-
23
- function getJsonFileContent(file) {
24
- const content = fs.readFileSync(file, { encoding: 'utf-8' });
25
- return JSON.parse(content);
26
- }
27
-
28
- const CONFIG_FILE = 'extension.config.json';
29
-
30
- function getConfigJson(name = CONFIG_FILE) {
31
- const _path = path.join(process.cwd(), name);
32
- return getJsonFileContent(_path);
33
- }
34
-
35
- function updateConfigJson(_config, name = CONFIG_FILE) {
36
- const config = getConfigJson();
37
- Object.assign(config, _config);
38
- const _path = path.join(process.cwd(), name);
39
- fs.writeFileSync(_path, JSON.stringify(config, null, 2), { encoding: 'utf-8' });
40
- }
41
-
42
- module.exports = {
43
- copy,
44
- copyDir,
45
- getFileJson,
46
- getConfigJson,
47
- updateConfigJson
48
- };
@@ -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,165 +0,0 @@
1
- const path = require('path');
2
- const fs = require('fs-extra');
3
- const AdmZip = require('adm-zip');
4
- const chalk = require('chalk');
5
- const chokidar = require('chokidar');
6
- const fsExtra = require('fs-extra');
7
-
8
- const {
9
- SSO_AUTH_URL,
10
- ACCOUNT_URL,
11
- CLIENT_ID,
12
- DEV_SSO_AUTH_URL,
13
- DEV_ACCOUNT_URL,
14
- DEV_CLIENT_ID,
15
- STG_CLIENT_ID,
16
- STG_ACCOUNT_URL,
17
- STG_SSO_AUTH_URL
18
- } = require('./config');
19
-
20
- const ZIP_IGNORE_FOLDER = ['.git', '.DS_Store'];
21
-
22
- exports.unzipTheme = (zipPath, outputPath) => {
23
- const zip = new AdmZip(zipPath);
24
- const zipEntries = zip.getEntries();
25
- const innerName = zipEntries[0].entryName.split('/')[0];
26
- zipEntries.forEach((entry) => {
27
- zip.extractEntryTo(
28
- entry,
29
- path.join(outputPath, entry.entryName.replace(`${innerName}`, '').replace(path.basename(entry.entryName), '')),
30
- false,
31
- true
32
- );
33
- });
34
- fs.removeSync(zipPath);
35
- };
36
-
37
- exports.zipTheme = (filePath, themeName) => {
38
- const zip = new AdmZip();
39
-
40
- // Old code
41
- // zip.addLocalFolder(filePath, themeName);
42
-
43
- // zip, but ignore some folder
44
- const lsDir = fs.readdirSync(filePath);
45
- lsDir.forEach((lsItem) => {
46
- const lsItemStat = fs.statSync(path.join(filePath, lsItem));
47
-
48
- if (ZIP_IGNORE_FOLDER.includes(lsItem)) {
49
- return;
50
- }
51
-
52
- if (lsItemStat.isDirectory()) {
53
- zip.addLocalFolder(path.join(filePath, lsItem), path.join(themeName, lsItem));
54
- } else if (lsItemStat.isFile()) {
55
- zip.addLocalFile(path.join(filePath, lsItem), path.join(themeName, lsItem));
56
- }
57
- });
58
-
59
- zip.writeZip(`${process.cwd()}/${themeName}.zip`);
60
- };
61
-
62
- exports.getThemeFilenameTypeAndLocation = (filename) => {
63
- const result = filename.split(path.sep);
64
- const location = result.pop();
65
- const type = result.pop();
66
- return {
67
- type,
68
- location
69
- };
70
- };
71
-
72
- exports.formatThemeList = (themes, defaultThemeId) => {
73
- return themes.map((theme) => ({
74
- ...theme,
75
- name: `${theme.name} (${theme.id ? chalk.green(theme.id) : ''}) ${
76
- theme.id === defaultThemeId ? chalk.green('[live]') : chalk.yellow('[unpublished]')
77
- }`,
78
- value: theme.id
79
- }));
80
- };
81
-
82
- exports.sleep = (time) => new Promise((resolve) => setTimeout(resolve, time));
83
-
84
- function getEnv(store) {
85
- return store.includes('dev.myshoplaza.com') ? 'dev' : store.includes('stg.myshoplaza.com') ? 'stg' : 'prod';
86
- }
87
-
88
- const CLIENT_ID_ENV_MAP = {
89
- dev: DEV_CLIENT_ID,
90
- stg: STG_CLIENT_ID,
91
- prod: CLIENT_ID
92
- };
93
-
94
- exports.getClientId = (store) => {
95
- return CLIENT_ID_ENV_MAP[getEnv(store)];
96
- };
97
-
98
- const ACCOUNT_URL_ENV_MAP = {
99
- dev: DEV_ACCOUNT_URL,
100
- stg: STG_ACCOUNT_URL,
101
- prod: ACCOUNT_URL
102
- };
103
- exports.getAccountUrl = (store) => {
104
- return ACCOUNT_URL_ENV_MAP[getEnv(store)];
105
- };
106
-
107
- const SSO_AUTH_URL_MAP = {
108
- dev: DEV_SSO_AUTH_URL,
109
- stg: STG_SSO_AUTH_URL,
110
- prod: SSO_AUTH_URL
111
- };
112
-
113
- exports.getSSOAuthUrl = (store) => {
114
- return SSO_AUTH_URL_MAP[getEnv(store)];
115
- };
116
-
117
- /**
118
- * 监听文件夹变化
119
- * @param {string} workspace - 需要监听的文件夹路径
120
- * @param {Object} options - 配置项
121
- * @param {Function} [options.onAdd] - 文件添加时的回调函数,接收文件路径作为参数
122
- * @param {Function} [options.onChange] - 文件更改时的回调函数,接收文件路径作为参数
123
- * @param {Function} [options.onDelete] - 文件删除时的回调函数,接收文件路径作为参数
124
- * @param {any} [options.xxx] - 其他chokidar.watch配置项
125
- * @returns {Function} - 取消监听的函数
126
- */
127
- exports.watchWorkspace = (workspace, options = {}) => {
128
- if (!fsExtra.pathExistsSync(workspace)) {
129
- console.error(chalk.red(`[ERROR] "${workspace}" does not exist.`));
130
- return;
131
- }
132
- const defaultOptions = {
133
- persistent: true,
134
- ignoreInitial: true
135
- };
136
- const { onAdd = () => {}, onChange = () => {}, onDelete = () => {}, ...restOptions } = options;
137
- const watcherOptions = { ...defaultOptions, ...restOptions };
138
- const watcher = chokidar.watch(workspace, watcherOptions);
139
-
140
- watcher.on('add', (filePath) => {
141
- console.log(chalk.cyan(`[ADD] ${filePath}`));
142
- onAdd(filePath);
143
- });
144
-
145
- watcher.on('change', (filePath) => {
146
- console.log(chalk.cyan(`[CHANGE] ${filePath}`));
147
- onChange(filePath);
148
- });
149
-
150
- watcher.on('unlink', (filePath) => {
151
- console.log(chalk.cyan(`[DELETE] ${filePath}`));
152
- onDelete(filePath);
153
- });
154
-
155
- watcher.on('error', (error) => {
156
- console.error(chalk.red(`[ERROR] ${error}`));
157
- });
158
-
159
- const stopWatcher = () => {
160
- console.log(chalk.green('[INFO] Stopping watcher...'));
161
- watcher.close();
162
- };
163
-
164
- return stopWatcher;
165
- };
File without changes