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,64 +0,0 @@
1
- const input = readInput();
2
- const result = run(input);
3
- writeOutput(result);
4
-
5
- function run(input) {
6
- const runResult = {
7
- operations: {
8
- update: []
9
- }
10
- };
11
-
12
- input.cart.line_items.forEach((lineItem) => {
13
- lineItem.product.metafields.forEach((metafield) => {
14
- // key是自己定义的metafield名。如果有同名的key,可用namespace用于区分
15
- if (metafield.namespace === 'custom-option' && metafield.key === 'adjust-10-price') {
16
- runResult.operations.update.push({
17
- id: lineItem.id,
18
- price: {
19
- adjustment_fixed_price: '10' // 设置定制的价格10元
20
- }
21
- });
22
- }
23
- });
24
- });
25
- return runResult;
26
- }
27
-
28
- function readInput() {
29
- const chunkSize = 1024;
30
- const inputChunks = [];
31
- let totalBytes = 0;
32
- // Read all the available bytes
33
- while (1) {
34
- const buffer = new Uint8Array(chunkSize);
35
- // Stdin file descriptor
36
- const fd = 0;
37
- const bytesRead = Javy.IO.readSync(fd, buffer);
38
- totalBytes += bytesRead;
39
- if (bytesRead === 0) {
40
- break;
41
- }
42
- inputChunks.push(buffer.subarray(0, bytesRead));
43
- }
44
- // Assemble input into a single Uint8Array
45
- const { finalBuffer } = inputChunks.reduce(
46
- (context, chunk) => {
47
- context.finalBuffer.set(chunk, context.bufferOffset);
48
- context.bufferOffset += chunk.length;
49
- return context;
50
- },
51
- { bufferOffset: 0, finalBuffer: new Uint8Array(totalBytes) }
52
- );
53
-
54
- return JSON.parse(new TextDecoder().decode(finalBuffer));
55
- }
56
-
57
- // Write output to stdout
58
- function writeOutput(output) {
59
- const encodedOutput = new TextEncoder().encode(JSON.stringify(output));
60
- const buffer = new Uint8Array(encodedOutput);
61
- // Stdout file descriptor
62
- const fd = 1;
63
- Javy.IO.writeSync(fd, buffer);
64
- }
@@ -1,29 +0,0 @@
1
- const inquirer = require('inquirer');
2
- const { getConfigJson, updateConfigJson } = require('../utils/file');
3
-
4
- async function requestAppSecretWhenNotExist() {
5
- const config = getConfigJson();
6
- if (!config.appId || !config.appSecret) {
7
- const { appId, appSecret } = await inquirer.prompt([
8
- {
9
- type: 'input',
10
- name: 'appId',
11
- message: 'Enter client id of app:',
12
- prefix: '*'
13
- },
14
- {
15
- type: 'input',
16
- name: 'appSecret',
17
- message: 'Enter client secret of app:',
18
- prefix: '*'
19
- }
20
- ]);
21
- config.appId = appId;
22
- config.appSecret = appSecret;
23
- updateConfigJson(config);
24
- }
25
- }
26
-
27
- module.exports = {
28
- requestAppSecretWhenNotExist
29
- };
package/lib/log.js DELETED
@@ -1,13 +0,0 @@
1
- const report = require('./report');
2
-
3
- module.exports = {
4
- error: (...args) => {
5
- console.log(...args);
6
- report('cli_usage_error', {
7
- args: args
8
- });
9
- },
10
- info: (...args) => {
11
- console.log(...args);
12
- }
13
- };
@@ -1,20 +0,0 @@
1
- const axios = require('axios');
2
-
3
- const openAPI = axios.create({
4
- baseURL: `https://developer.myshoplaza.com/openapi/2020-07`
5
- });
6
-
7
- openAPI.interceptors.request.use((config) => {
8
- return config;
9
- });
10
-
11
- openAPI.interceptors.response.use(
12
- function (response) {
13
- return response;
14
- },
15
- function (error) {
16
- return Promise.reject(error);
17
- }
18
- );
19
-
20
- module.exports = openAPI;
@@ -1,76 +0,0 @@
1
- const fs = require('fs-extra');
2
- const FormData = require('form-data');
3
- const { getThemeFilenameTypeAndLocation } = require('../utils/utils');
4
- const openAPI = require('./index');
5
-
6
- exports.getShopDetail = (config = {}) => {
7
- return openAPI.get('/shop', config);
8
- };
9
-
10
- exports.getThemes = () => {
11
- return openAPI.get('/themes');
12
- };
13
-
14
- exports.getThemeDetail = (theme) => {
15
- return openAPI.get(`/themes/${theme}`);
16
- };
17
-
18
- exports.getDefaultThemeDetail = () => {
19
- return openAPI.get(`/themes/default-theme`);
20
- };
21
-
22
- exports.pullTheme = (theme) => {
23
- return openAPI.get(`/themes/${theme}/download`, { responseType: 'stream' });
24
- };
25
-
26
- exports.pushTheme = ({ zipPath, name, version, merchant_theme_id, theme_id }) => {
27
- const form = new FormData();
28
- form.append('file', fs.createReadStream(zipPath));
29
- return openAPI.post('/themes/upload', form, {
30
- headers: form.getHeaders(),
31
- params: { name, version, merchant_theme_id, theme_id }
32
- });
33
- };
34
-
35
- exports.getPushTask = (taskId) => {
36
- return openAPI.get(`/themes/task/${taskId}`);
37
- };
38
-
39
- exports.publishTheme = (theme) => {
40
- return openAPI.patch(`/themes/${theme}/publish`);
41
- };
42
-
43
- exports.deleteTheme = (theme) => {
44
- return openAPI.delete(`/themes/${theme}`);
45
- };
46
-
47
- exports.getFileList = (theme) => {
48
- return openAPI.get(`/themes/${theme}/doctree`);
49
- };
50
-
51
- exports.deleteFile = (theme, filename) => {
52
- const { type, location } = getThemeFilenameTypeAndLocation(filename);
53
- return openAPI.delete(`/themes/${theme}/doc`, { params: { type, location } });
54
- };
55
-
56
- exports.updateFile = (theme, filename) => {
57
- const { type, location } = getThemeFilenameTypeAndLocation(filename);
58
- return openAPI.patch(`/themes/${theme}/doc`, {
59
- doc: {
60
- type,
61
- location,
62
- content: fs.readFileSync(filename, 'utf-8')
63
- }
64
- });
65
- };
66
-
67
- exports.addFile = (theme, filename) => {
68
- const { type, location } = getThemeFilenameTypeAndLocation(filename);
69
- return openAPI.post(`/themes/${theme}/doc`, {
70
- doc: {
71
- type,
72
- location,
73
- content: fs.readFileSync(filename, 'utf-8')
74
- }
75
- });
76
- };
@@ -1,56 +0,0 @@
1
- const axios = require('axios');
2
- const fs = require('fs-extra');
3
- const chalk = require('chalk');
4
- const Sentry = require('@sentry/node');
5
- const { get, set } = require('../db/user');
6
- const { postExchangeToken } = require('../auth');
7
- const log = require('../log');
8
-
9
- const openAPI = axios.create({
10
- baseURL: `https://${get('store_domain')}/openapi/2020-07`,
11
- headers: { 'Access-Token': get('exchange_token') }
12
- });
13
-
14
- openAPI.interceptors.request.use(
15
- (config) => {
16
- if (!get('store_domain')) {
17
- log.error(
18
- chalk.red(
19
- `\n✗ No store found. Please run ${chalk.cyan('shoplazza login --store STORE')} to login to a specific store`
20
- )
21
- );
22
- process.exit(-1);
23
- }
24
- return config;
25
- },
26
- (error) => {
27
- console.error(chalk.red(`[REQUEST ERROR] ${error.message}`));
28
- return Promise.reject(error);
29
- }
30
- );
31
-
32
- openAPI.interceptors.response.use(
33
- function (response) {
34
- return response;
35
- },
36
- function (error) {
37
- // Token expired will return a 400 error
38
- if (error?.response?.status === 400) {
39
- set({
40
- exchange_token: ''
41
- });
42
- return postExchangeToken(get('store_domain'), { ignoreLogError: error.config.ignoreLogError }).then(() => {
43
- error.config.headers['Access-Token'] = get('exchange_token');
44
- return openAPI(error.config);
45
- });
46
- }
47
- error.response && console.error(
48
- chalk.red(
49
- `[RESPONSE ERROR] ${error.response.status} ${error.response.config.baseURL}${error.response.config.url}`
50
- )
51
- );
52
- return Promise.reject(error);
53
- }
54
- );
55
-
56
- module.exports = openAPI;
package/lib/oss.js DELETED
@@ -1,102 +0,0 @@
1
- const axios = require('axios');
2
- const fs = require('fs');
3
- const path = require('path');
4
- const FormData = require('form-data');
5
- const chalk = require('chalk');
6
-
7
- /**
8
- * 获取OSS上传功能,适用于上传文件到店铺的OSS服务器
9
- * @param {string} accessToken - 用于认证的token
10
- * @param {string} storeDomain - 店铺域名
11
- * @param {string} storeDomainTips - 店铺域名为空时的提示信息
12
- * @returns {{ uploadOss: (filePath: string) => Promise<string> }} 返回一个对象,包含上传文件到OSS的函数
13
- * @example
14
- * const { uploadOss } = useOss('your-access-token', 'your-store-domain', 'Store domain is required');
15
- * const ossUrl = await uploadOss('/path/to/file.txt');
16
- * console.log(ossUrl); // 输出文件的 OSS 地址
17
- */
18
- function useOss(accessToken, storeDomain, storeDomainTips) {
19
- const ins = axios.create({
20
- headers: { 'Access-Token': accessToken }
21
- });
22
-
23
- ins.interceptors.request.use(
24
- (config) => {
25
- if (!storeDomain) {
26
- console.error(
27
- // chalk.red(`\n\n`)
28
- chalk.red(`\n${storeDomainTips}\n`)
29
- );
30
- process.exit(-1);
31
- }
32
- if (config.url.startsWith('/checkout_extensions')) {
33
- config.baseURL = `https://${storeDomain}/openapi`;
34
- }
35
- return config;
36
- },
37
- (error) => {
38
- console.error(chalk.red(`[REQUEST ERROR] ${error.message}`));
39
- return Promise.reject(error);
40
- }
41
- );
42
-
43
- ins.interceptors.response.use(
44
- (response) => {
45
- return response.data;
46
- },
47
- (error) => {
48
- if (error.response.status === 409) {
49
- // 文件已存在
50
- return;
51
- }
52
-
53
- console.error(
54
- chalk.red(
55
- `[RESPONSE ERROR] ${error.response.status} ${error.response.config.baseURL}${error.response.config.url}`
56
- )
57
- );
58
- return Promise.reject(error);
59
- }
60
- );
61
-
62
- /**
63
- * 上传文件到OSS
64
- * @param {string} filePath - 要上传的文件路径
65
- * @returns {Promise<string>} 返回文件的 OSS 地址
66
- * @throws {Error} 如果上传失败或发生未知错误,抛出错误
67
- * @example
68
- * const ossUrl = await uploadOss('/path/to/file.txt');
69
- * console.log(ossUrl); // 输出文件的 OSS 地址
70
- */
71
- async function uploadOss(filePath) {
72
- let fileName = path.basename(filePath);
73
- const key = 'chick-extension/' + fileName;
74
- const form = new FormData();
75
- const url = await ins.get(`/checkout_extensions/file/sign?key=${key}`).then(async (data) => {
76
- const url = data.write_host;
77
- form.append('policy', data.policy);
78
- form.append('OSSAccessKeyId', data.access_id);
79
- form.append('success_action_status', 200);
80
- form.append('signature', data.sign);
81
- form.append('x-oss-forbid-overwrite', 'true');
82
- form.append('key', key);
83
- form.append('file', fs.createReadStream(filePath));
84
- await ins.post(`https:${url}`, form, { headers: form.getHeaders() }).catch((error) => {
85
- if (error.response?.data.includes('<Code>FileAlreadyExists</Code>')) {
86
- console.log(chalk.yellow('[WARN] The current file already exists, not need to upload.'));
87
- return;
88
- } else {
89
- return Promise.reject(error);
90
- }
91
- });
92
- return `${data.read_host}${data.read_host.endsWith('/') ? '' : '/'}${key}`;
93
- });
94
- return url;
95
- }
96
-
97
- return { uploadOss };
98
- }
99
-
100
- module.exports = {
101
- useOss
102
- };
@@ -1,67 +0,0 @@
1
- const axios = require('axios');
2
- const { isDevDebug, isStgDebug } = require('../utils/env');
3
- const { consoleError } = require('../utils/console');
4
- const { updateConfigJson, getConfigJson } = require('../utils/file');
5
-
6
- const baseUrl = `https://partners.${isDevDebug() ? 'dev.' : isStgDebug() ? 'stg.' : ''}shoplazza.com`;
7
-
8
- const instance = axios.create({
9
- baseURL: baseUrl + '/openapi/2024-07'
10
- });
11
-
12
- instance.interceptors.request.use(
13
- async (config) => {
14
- const extConfig = getConfigJson();
15
- let token = extConfig.accessToken;
16
- if (!token) {
17
- token = await refreshAccessToken();
18
- }
19
- config.headers['Access-Token'] = token;
20
- config.headers['app-client-id'] = extConfig.appId;
21
- return config;
22
- },
23
- (error) => {
24
- consoleError(`[REQUEST ERROR] ${error.message}`);
25
- return Promise.reject(error);
26
- }
27
- );
28
-
29
- instance.interceptors.response.use(
30
- function (response) {
31
- return response;
32
- },
33
- async function (error) {
34
- const { config, response } = error || {};
35
- if (response?.status === 403 && !config._retry) {
36
- config._retry = true;
37
- await refreshAccessToken();
38
- return instance(config);
39
- }
40
- error.response &&
41
- consoleError(
42
- `[RESPONSE ERROR] ${error.response.status} ${error.response.config.baseURL}${error.response.config.url}`
43
- );
44
- return Promise.reject(error);
45
- }
46
- );
47
-
48
- function refreshAccessToken() {
49
- const extensionConfig = getConfigJson();
50
- if (!extensionConfig.appId || !extensionConfig.appSecret) {
51
- consoleError(`must provide 'appId' and 'appSecret' in extension.config.json `);
52
- process.exit(-1);
53
- }
54
- return axios
55
- .post(baseUrl + '/partner/oauth/token', {
56
- client_id: extensionConfig.appId,
57
- client_secret: extensionConfig.appSecret,
58
- grant_type: 'client_credentials'
59
- })
60
- .then((res) => {
61
- const token = res.data.access_token;
62
- updateConfigJson({ accessToken: token });
63
- return token;
64
- });
65
- }
66
-
67
- module.exports = instance;
@@ -1,79 +0,0 @@
1
- const axios = require('./axios');
2
- // const Aaxios = require('axios');
3
-
4
- // const axios = Aaxios.create({
5
- // baseURL: 'http://igw-traefik.internal.svc.cluster.local/service/functions-api/api/partner-openapi/2025-03',
6
- // headers: {
7
- // 'x-rf': 'feature-ymq',
8
- // 'app-client-id': '123123'
9
- // }
10
- // });
11
-
12
- function createFunctionExtension(form) {
13
- return axios
14
- .post('/functions', form, {
15
- headers: {
16
- ...form.getHeaders()
17
- }
18
- })
19
- .then((res) => res.data?.data);
20
- }
21
-
22
- function updateFunctionExtension(functionId, form) {
23
- return axios
24
- .patch(`/functions/${functionId}`, form, {
25
- headers: {
26
- ...form.getHeaders()
27
- }
28
- })
29
- .then((res) => res.data?.data);
30
- }
31
-
32
- function getFunctionList(params = { page: 1, limit: 1000 }) {
33
- return axios
34
- .get(
35
- '/functions',
36
- { params },
37
- {
38
- headers: {
39
- 'Content-Type': 'application/ x-www-form-urlencoded',
40
- }
41
- }
42
- )
43
- .then((res) => res.data?.data);
44
- }
45
-
46
- /**
47
- * 连接App
48
- */
49
- async function toConnectApp(data) {
50
- return axios.post(
51
- '/theme-extensions/connection',
52
- {
53
- extension_id: data.extensionId,
54
- type: data.type || 'link'
55
- }
56
- );
57
- }
58
-
59
- /**
60
- * 应用主题插件到App
61
- */
62
- async function toReleaseApp(data) {
63
- return axios.post(
64
- '/theme-extensions/publications',
65
- {
66
- extension_id: data.extensionId,
67
- version_id: data.versionId,
68
- type: data.type || 'enable'
69
- }
70
- );
71
- }
72
-
73
- module.exports = {
74
- createFunctionExtension,
75
- updateFunctionExtension,
76
- getFunctionList,
77
- toConnectApp,
78
- toReleaseApp
79
- };
package/lib/report.js DELETED
@@ -1,37 +0,0 @@
1
- const { get } = require('./db/user');
2
- const { isEnabledAnalytics } = require('./db/analytics');
3
- const pkg = require('../package.json');
4
- const axios = require('axios');
5
-
6
- const report = (eventName, properties = {}) => {
7
- const user_id = get('user_id');
8
- if (!isEnabledAnalytics(user_id)) return;
9
- axios.post(
10
- `https://r.shoplazza.com/beacon/sa.gif`,
11
- `data=${encodeURIComponent(
12
- Buffer.from(
13
- JSON.stringify({
14
- distinct_id: user_id,
15
- event: eventName,
16
- type: 'track',
17
- _track_id: parseInt(Math.random() * (9999999999 - 999999999 + 1) + 999999999, 10),
18
- properties: {
19
- platform: 'shoplazza-cli',
20
- cli_version: pkg.version,
21
- user_id,
22
- ...properties
23
- }
24
- })
25
- ).toString('base64')
26
- )}`,
27
- {
28
- headers: { 'content-type': 'text/plain;charset=UTF-8' },
29
- params: {
30
- project: 'production',
31
- gzip: 0
32
- }
33
- }
34
- );
35
- };
36
-
37
- module.exports = report;
@@ -1,96 +0,0 @@
1
- const instance = require('../../openAPI/index');
2
- const request = require('../../partner-api/axios');
3
-
4
- /**
5
- * 获取主题列表
6
- */
7
- async function getThemeList() {
8
- return instance.get('/themes');
9
- }
10
-
11
- /**
12
- * 获取店铺私有主题插件列表
13
- * @returns
14
- */
15
- async function getThemeAppList() {
16
- return instance.get('/theme-extensions');
17
- }
18
-
19
- /**
20
- * 创建主题插件 or 更新主题插件信息
21
- */
22
- async function toCreateThemeApp(data) {
23
- return instance.put('/theme-extensions', data);
24
- }
25
-
26
- /**
27
- * 上传主题插件
28
- */
29
- async function toUploadThemeApp(extension_id, data) {
30
- return instance.patch(`/theme-extensions/${extension_id}/dev-doctree`, data);
31
- }
32
-
33
- /**
34
- * 新增文件
35
- */
36
- async function toCreateFile(extension_id, data) {
37
- return instance.post(`/theme-extensions/${extension_id}/dev-doc`, data);
38
- }
39
-
40
- /**
41
- * 更新文件
42
- */
43
- async function toUpdateFile(extension_id, data) {
44
- return instance.patch(`/theme-extensions/${extension_id}/dev-doc`, data);
45
- }
46
-
47
- /**
48
- * 删除文件
49
- */
50
- async function toDeleteFile(extension_id, params) {
51
- return instance.delete(`/theme-extensions/${extension_id}/dev-doc`, {
52
- params
53
- });
54
- }
55
-
56
- /**
57
- * 获取任务状态
58
- */
59
- async function getTaskStatus(data) {
60
- return instance.get(`/theme-extensions/version-tasks/${data.taskId}`);
61
- }
62
-
63
- /**
64
- * 获取主题插件版本列表
65
- */
66
- async function getThemeAppVersionList(extension_id) {
67
- return instance.get(`/theme-extensions/${extension_id}/versions`);
68
- }
69
-
70
- /**
71
- * 创建主题插件版本
72
- */
73
- async function toCreateThemeAppVersion(data) {
74
- return instance.post(`/theme-extensions/version-tasks`, data);
75
- }
76
-
77
- /**
78
- * 部署主题插件
79
- */
80
- async function toDeployThemeApp(data) {
81
- return instance.post(`/theme-extensions/publications`, data);
82
- }
83
-
84
- module.exports = {
85
- getThemeList,
86
- getThemeAppList,
87
- toCreateThemeApp,
88
- toCreateFile,
89
- toUpdateFile,
90
- toDeleteFile,
91
- toUploadThemeApp,
92
- getThemeAppVersionList,
93
- toCreateThemeAppVersion,
94
- toDeployThemeApp,
95
- getTaskStatus,
96
- };