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,210 +0,0 @@
1
- const { withErrorHandling } = require('../../../utils/error');
2
- const { getAppCompleteInfo } = require('../../../services/config');
3
- const { getAppVersionsRequest } = require('../../../api/cli');
4
- const { infoMessageRender } = require('../../../utils/views/message');
5
- const inquirer = require('inquirer');
6
- const chalk = require('chalk');
7
-
8
- // 默认分页大小
9
- const DEFAULT_PAGE_SIZE = 10;
10
-
11
-
12
- // 格式化版本列表
13
- function formatVersionList(versions, currentPage, totalPages, hasMore, pageSize) {
14
- if (!versions || versions.length === 0) {
15
- return chalk.yellow('No versions found');
16
- }
17
-
18
- let output = `${chalk.bold('📦 App Versions')}\n\n`;
19
-
20
- // 版本列表
21
- versions.forEach((version, index) => {
22
- const number = (currentPage - 1) * pageSize + index + 1;
23
- output += `${chalk.gray(`${number.toString().padStart(3, ' ')}. `)}`;
24
- output += `${chalk.cyan('v' + version.version)} `;
25
- output += `${chalk.gray('(ID: ' + version.id + ')')}\n`;
26
- });
27
-
28
- // 分页信息
29
- output += '\n';
30
- output += `${chalk.bold('Page:')} ${currentPage}`;
31
- if (totalPages > 0) {
32
- output += ` / ${totalPages}`;
33
- }
34
- output += ` | ${chalk.bold('Showing:')} ${versions.length} items`;
35
- if (hasMore) {
36
- output += ` | ${chalk.yellow('More versions available...')}`;
37
- }
38
-
39
- return output;
40
- }
41
-
42
- // 非交互模式:只显示第一页
43
- async function displayNonInteractive(app, partner, pageSize) {
44
- try {
45
- const { versions, has_more } = await getAppVersionsRequest({
46
- partner_id: partner.id,
47
- app_client_id: app.client_id,
48
- offset: 0,
49
- limit: pageSize
50
- });
51
-
52
- const formattedList = formatVersionList(versions, 1, has_more ? '?' : 1, has_more, pageSize);
53
- infoMessageRender(formattedList);
54
-
55
- if (has_more) {
56
- console.log(chalk.yellow('\n💡 Tip: Use interactive mode to browse more versions by removing the --no-interactive flag'));
57
- }
58
- } catch (error) {
59
- console.error(chalk.red('❌ Failed to fetch versions:'), error.message);
60
- throw error;
61
- }
62
- }
63
-
64
- // Get user action choice
65
- async function getPaginationChoice(currentPage, hasMore, hasPrev) {
66
- const choices = [];
67
-
68
- if (hasMore) {
69
- choices.push({
70
- name: `📄 Next page (page ${currentPage + 1})`,
71
- value: 'next'
72
- });
73
- }
74
-
75
- if (hasPrev) {
76
- choices.push({
77
- name: `📄 Previous page (page ${currentPage - 1})`,
78
- value: 'prev'
79
- });
80
- }
81
-
82
- choices.push({
83
- name: '🔄 Refresh current page',
84
- value: 'refresh'
85
- });
86
-
87
- choices.push({
88
- name: '🚪 Exit',
89
- value: 'exit'
90
- });
91
-
92
- const { action } = await inquirer.prompt({
93
- type: 'list',
94
- name: 'action',
95
- message: 'Choose an action:',
96
- choices
97
- });
98
-
99
- return action;
100
- }
101
-
102
- // 分页处理逻辑
103
- async function handlePagination(app, partner, pageSize) {
104
- let currentPage = 1;
105
- let totalPages = 0;
106
-
107
- while (true) {
108
- const offset = (currentPage - 1) * pageSize;
109
-
110
- try {
111
- const { versions, has_more } = await getAppVersionsRequest({
112
- partner_id: partner.id,
113
- app_client_id: app.client_id,
114
- offset,
115
- limit: pageSize
116
- });
117
-
118
- // 估算总页数(如果有更多数据)
119
- if (has_more) {
120
- totalPages = Math.max(totalPages, currentPage + 1);
121
- } else {
122
- totalPages = currentPage;
123
- }
124
-
125
- // 清屏并显示版本列表
126
- console.clear();
127
- const formattedList = formatVersionList(versions, currentPage, totalPages, has_more, pageSize);
128
- infoMessageRender(formattedList);
129
-
130
- // 如果没有版本记录且是第一页,直接退出
131
- if (!versions || versions.length === 0) {
132
- if (currentPage === 1) {
133
- break;
134
- } else {
135
- // 回到前一页
136
- currentPage = Math.max(1, currentPage - 1);
137
- continue;
138
- }
139
- }
140
-
141
- // 获取用户选择
142
- const action = await getPaginationChoice(
143
- currentPage,
144
- has_more,
145
- currentPage > 1
146
- );
147
-
148
- switch (action) {
149
- case 'next':
150
- if (has_more) {
151
- currentPage++;
152
- }
153
- break;
154
- case 'prev':
155
- if (currentPage > 1) {
156
- currentPage--;
157
- }
158
- break;
159
- case 'refresh':
160
- // 重新加载当前页
161
- break;
162
- case 'exit':
163
- console.log(chalk.green('👋 Goodbye!'));
164
- return;
165
- default:
166
- break;
167
- }
168
- } catch (error) {
169
- console.error(chalk.red('❌ Failed to fetch versions:'), error.message);
170
-
171
- // 询问是否重试
172
- const { retry } = await inquirer.prompt({
173
- type: 'confirm',
174
- name: 'retry',
175
- message: 'Retry?',
176
- default: true
177
- });
178
-
179
- if (!retry) {
180
- break;
181
- }
182
- }
183
- }
184
- }
185
-
186
- async function listAction(options) {
187
- // 解析命令行选项
188
- const pageSize = parseInt(options.pageSize) || DEFAULT_PAGE_SIZE;
189
- const isInteractive = options.interactive !== false; // 默认是交互模式
190
-
191
- // 验证 pageSize
192
- if (pageSize < 1 || pageSize > 100) {
193
- console.error(chalk.red('❌ Page size must be between 1 and 100'));
194
- process.exit(1);
195
- }
196
-
197
- const { app, partner, user } = await getAppCompleteInfo();
198
-
199
- if (isInteractive) {
200
- // 交互式分页模式
201
- await handlePagination(app, partner, pageSize);
202
- } else {
203
- // 非交互模式:只显示第一页
204
- await displayNonInteractive(app, partner, pageSize);
205
- }
206
- }
207
-
208
- module.exports = {
209
- listAction: withErrorHandling(listAction)
210
- };
@@ -1,22 +0,0 @@
1
- const chalk = require('chalk');
2
- const { Command } = require('commander');
3
- const { listCommand } = require('./list');
4
-
5
- const versionsCommand = new Command('versions');
6
-
7
- versionsCommand.addCommand(listCommand);
8
-
9
- versionsCommand.helpInformation = function () {
10
- return `List deployed versions of your app.
11
-
12
- ${chalk.bold('USAGE')}
13
- $ shoplazza app versions COMMAND
14
-
15
- ${chalk.bold('COMMANDS')}
16
- app versions list List deployed versions of your app.
17
- `;
18
- };
19
-
20
- module.exports = {
21
- versionsCommand
22
- };
@@ -1,14 +0,0 @@
1
- const { Command } = require('commander');
2
- const { listAction } = require('./actions/list');
3
-
4
- const listCommand = new Command('list');
5
-
6
- listCommand.option('--path <path>', 'The path to your app directory');
7
- listCommand.option('--page-size <size>', 'Number of versions per page (default: 10)', '10');
8
- listCommand.option('--no-interactive', 'Disable interactive pagination');
9
-
10
- listCommand.action(listAction);
11
-
12
- module.exports = {
13
- listCommand
14
- };
@@ -1,7 +0,0 @@
1
- const CODES = {
2
- SUCCESS: 'Success' // 成功
3
- };
4
-
5
- module.exports = {
6
- CODES
7
- };
@@ -1,18 +0,0 @@
1
- // 颜色常量
2
- const COLORS = {
3
- ERROR: '#df5953',
4
- SUCCESS: '#97c070',
5
- WHITE: '#acb2be',
6
- GRAY: '#686c76',
7
- RED: '#df5953',
8
- GREEN: '#97c070',
9
- YELLOW: '#f0ad4e',
10
-
11
- // 色彩主题
12
- PRIMARY: '#63b1c0', // 主色
13
- CODE: '#d079f8', // 行内代码
14
- };
15
-
16
- module.exports = {
17
- COLORS
18
- };
@@ -1,16 +0,0 @@
1
- const EXTENSION_TYPES = {
2
- THEME: 'theme',
3
- CHECKOUT: 'checkout',
4
- FUNCTION: 'function'
5
- };
6
-
7
-
8
- const THEME_EXTENSION_TYPES = {
9
- BASIC: 'basic',
10
- EMBED: 'embed'
11
- };
12
-
13
- module.exports = {
14
- EXTENSION_TYPES,
15
- THEME_EXTENSION_TYPES
16
- };
@@ -1,23 +0,0 @@
1
- exports.CLI_HOST = {
2
- PROD: 'https://partners.shoplazza.com',
3
- DEV: 'https://partners.dev.shoplazza.com',
4
- STG: 'https://partners.stg.shoplazza.com'
5
- };
6
-
7
- exports.SSO_HOST = {
8
- PROD: 'https://sso.shoplazza.com',
9
- DEV: 'https://sso.dev.shoplazza.com',
10
- STG: 'https://sso.stg.shoplazza.com'
11
- };
12
-
13
- exports.ACCOUNT_HOST = {
14
- PROD: 'https://myaccount.shoplazza.com',
15
- DEV: 'https://myaccount.dev.shoplazza.com',
16
- STG: 'https://myaccount.stg.shoplazza.com'
17
- };
18
-
19
- exports.SSO_CLIENT_ID = {
20
- DEV: 'b630b285-e098-4c51-a7a4-d0240c9fc209',
21
- STG: 'b630b285-e098-4c51-a7a4-d0240c9fc209',
22
- PROD: '807525c9-dd77-4f4e-a738-d1e9d02c593d'
23
- };
@@ -1,7 +0,0 @@
1
- const REDIRECT_URI = 'http://127.0.0.1:3456';
2
- const GRANT_TYPE = 'authorization_code';
3
-
4
- module.exports = {
5
- REDIRECT_URI,
6
- GRANT_TYPE
7
- };
package/lib/app/index.js DELETED
@@ -1,8 +0,0 @@
1
- const { appCommand } = require('./commands');
2
- function makeAppCommand(_program) {
3
- _program.addCommand(appCommand);
4
- }
5
-
6
- module.exports = {
7
- makeAppCommand
8
- };
@@ -1,33 +0,0 @@
1
- const { ACCOUNT_HOST, SSO_HOST, SSO_CLIENT_ID, CLI_HOST } = require('../../constant/host');
2
- const { isDevDebug, isStgDebug } = require('../../utils/debug');
3
-
4
- function getSSOHost() {
5
- if (isDevDebug()) return SSO_HOST.DEV;
6
- if (isStgDebug()) return SSO_HOST.STG;
7
- return SSO_HOST.PROD;
8
- }
9
-
10
- function getAccountHost() {
11
- if (isDevDebug()) return ACCOUNT_HOST.DEV;
12
- if (isStgDebug()) return ACCOUNT_HOST.STG;
13
- return ACCOUNT_HOST.PROD;
14
- }
15
-
16
- function getPartnerHost() {
17
- if (isDevDebug()) return CLI_HOST.DEV;
18
- if (isStgDebug()) return CLI_HOST.STG;
19
- return CLI_HOST.PROD;
20
- }
21
-
22
- function getSSOClientId() {
23
- if (isDevDebug()) return SSO_CLIENT_ID.DEV;
24
- if (isStgDebug()) return SSO_CLIENT_ID.STG;
25
- return SSO_CLIENT_ID.PROD;
26
- }
27
-
28
- module.exports = {
29
- getSSOHost,
30
- getAccountHost,
31
- getSSOClientId,
32
- getPartnerHost
33
- };
@@ -1,9 +0,0 @@
1
- const { getSSOAccessToken } = require('./sso-token');
2
- const { getPartnerAccessToken } = require('./partner-token');
3
- const { getStoreAccessToken } = require('./store-token');
4
-
5
- module.exports = {
6
- getSSOAccessToken,
7
- getPartnerAccessToken,
8
- getStoreAccessToken
9
- };
@@ -1,70 +0,0 @@
1
- const { createServer } = require('http');
2
- const chalk = require('chalk');
3
- const open = require('open');
4
-
5
- function startOAuthServer(options = {}) {
6
- const {
7
- port = 3456,
8
- timeout = 2 * 60 * 1000,
9
- onGetUrl // 获取认证URL的回调
10
- } = options;
11
-
12
- return new Promise((resolve, reject) => {
13
- let timeoutHandle = null;
14
-
15
- const server = createServer((req, res) => {
16
- const reqUrl = new URL(req.url, `http://localhost:${port}`);
17
- const query = Object.fromEntries(reqUrl.searchParams);
18
-
19
- // 发送成功页面
20
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
21
- res.end(`
22
- <!DOCTYPE html>
23
- <html>
24
- <head><title>Authentication successful</title></head>
25
- <body>
26
- <h1 style="color: green;">Authentication successful! You can close this page.</h1>
27
- </body>
28
- </html>
29
- `);
30
-
31
- if (query.code) {
32
- clearTimeout(timeoutHandle);
33
- resolve(query.code);
34
- console.log(`${chalk.green('✔')} Login successful`);
35
- server.close();
36
- }
37
- });
38
-
39
- server.listen(port, () => {
40
- console.log('👉 Press any key to open the login page on your browser');
41
-
42
- // 设置键盘监听
43
- process.stdin.setRawMode(true);
44
- process.stdin.resume();
45
- process.stdin.once('data', async () => {
46
- process.stdin.setRawMode(false);
47
- process.stdin.pause();
48
-
49
- // 获取并打开认证URL
50
- if (onGetUrl) {
51
- const authUrl = onGetUrl();
52
- console.log('Opened link to start the auth process:', chalk.underline.green(authUrl), '\n');
53
- await open(authUrl);
54
- }
55
- });
56
- });
57
-
58
- server.on('error', (err) => {
59
- reject(new Error(`SSO Server startup failed: ${err.message}`));
60
- });
61
-
62
- // 设置超时
63
- timeoutHandle = setTimeout(() => {
64
- reject(new Error('SSO Server Timeout: No response within 2 minutes'));
65
- server.close();
66
- }, timeout);
67
- });
68
- }
69
-
70
- module.exports = { startOAuthServer };
@@ -1,45 +0,0 @@
1
- const axios = require('axios');
2
- const { getPartnerHost } = require('./config');
3
- const { getSSOAccessToken } = require('./sso-token');
4
-
5
- /**
6
- * 获取合作伙伴访问令牌
7
- * @param {string} appClientId
8
- * @param {string} appSecret
9
- * @returns {Promise<{
10
- * access_token: string,
11
- * token_type: string,
12
- * expires_in: number,
13
- * created_at: number,
14
- * store_id: string | null,
15
- * store_name: string | null,
16
- * expires_at: number,
17
- * locale: string
18
- * }>}
19
- */
20
- async function getPartnerAccessToken(appClientId, appSecret) {
21
- try {
22
- const ssoAccessToken = await getSSOAccessToken();
23
- const response = await axios.post(
24
- `${getPartnerHost()}/partner/oauth/token`,
25
- {
26
- client_id: appClientId,
27
- client_secret: appSecret,
28
- grant_type: 'client_credentials'
29
- },
30
- {
31
- headers: {
32
- Cookie: `awesomev2=${ssoAccessToken.access_token}`
33
- }
34
- }
35
- );
36
-
37
- return response.data;
38
- } catch (error) {
39
- throw new Error(`[${error.config.url}] ${error.response.data.message}`);
40
- }
41
- }
42
-
43
- module.exports = {
44
- getPartnerAccessToken
45
- }
@@ -1,69 +0,0 @@
1
- const axios = require('axios');
2
- const { getSSOHost, getSSOClientId } = require('./config');
3
- const { startOAuthServer } = require('./oauth-server');
4
- const { buildAuthUrl } = require('./url-builder');
5
- const { GRANT_TYPE, REDIRECT_URI } = require('../../constant/sso');
6
- const { ssoStore } = require('../../store');
7
- const { SSO_STORE_KEY } = require('../../store/config');
8
- const { errorMessageRender } = require('../../utils/views/message');
9
-
10
- /**
11
- * 获取 SSO 访问令牌
12
- * @returns {Promise<{
13
- * access_token: string,
14
- * expires_in: number,
15
- * session_id: string,
16
- * token_type: string
17
- * }>}
18
- */
19
- async function getSSOAccessToken() {
20
- if (ssoStore.has(SSO_STORE_KEY.ACCESS_TOKEN)) {
21
- return ssoStore.getSSOInfo();
22
- }
23
-
24
- let code;
25
- try {
26
- // 启动 OAuth 服务器并获取授权码
27
- code = await startOAuthServer({
28
- onGetUrl: buildAuthUrl // 传入URL构建函数
29
- });
30
- } catch (error) {
31
- errorMessageRender(error.message);
32
- process.exit(1);
33
- }
34
-
35
- let response;
36
- try {
37
- // 用授权码换取访问令牌
38
- response = await axios.post(
39
- `${getSSOHost()}/api/oauth/token`,
40
- {
41
- code,
42
- client_id: getSSOClientId(),
43
- redirect_uri: REDIRECT_URI,
44
- grant_type: GRANT_TYPE
45
- },
46
- {
47
- headers: {
48
- 'Content-Type': 'application/x-www-form-urlencoded'
49
- }
50
- }
51
- );
52
- } catch (error) {
53
- errorMessageRender(error.message);
54
- process.exit(1);
55
- }
56
-
57
- ssoStore.setSSOInfo({
58
- access_token: response.data.access_token,
59
- expires_in: response.data.expires_in,
60
- session_id: response.data.session_id,
61
- token_type: response.data.token_type
62
- });
63
-
64
- return response.data;
65
- }
66
-
67
- module.exports = {
68
- getSSOAccessToken
69
- }
@@ -1,100 +0,0 @@
1
- const axios = require('axios');
2
- const { getSSOHost, getAccountHost, getPartnerHost } = require('./config');
3
- const { getSSOAccessToken } = require('./sso-token');
4
- const { installStore } = require('../../store');
5
- const { selectOne } = require('../../utils/views/select');
6
-
7
- // 获取店铺列表
8
- async function getStoreList(partnerId, ssoAccessToken) {
9
- const response = await axios.get(`${getPartnerHost()}/api/partners/stores`, {
10
- params: {
11
- page_size: 10
12
- },
13
- headers: {
14
- 'x-shoplazza-partner-id': partnerId,
15
- Cookie: `awesomev2=${ssoAccessToken}`
16
- }
17
- });
18
-
19
- return response.data;
20
- }
21
-
22
- // 选择店铺
23
- async function chooseStore(partnerId, ssoAccessToken) {
24
- const storesResponse = await getStoreList(partnerId, ssoAccessToken);
25
-
26
- if (storesResponse.count === 0) {
27
- throw new Error('No store found, please create one first!');
28
- }
29
-
30
- const store = await selectOne(storesResponse.data, {
31
- message: 'Please select a store to install:',
32
- autoPickSingle: false,
33
- formatChoice: (store) => ({ name: `${store.slug} (${store.id})`, value: store.primary_domain })
34
- });
35
-
36
- return store;
37
- }
38
-
39
- /**
40
- * 获取店铺访问令牌
41
- * @param {string} appClientId
42
- * @returns {Promise<{
43
- * store_id: string,
44
- * access_token: string,
45
- * expires_at: number,
46
- * }>}
47
- */
48
- async function getStoreAccessToken(appClientId, partnerId) {
49
- if (installStore.has(appClientId)) {
50
- const installData = installStore.getInstallInfo(appClientId);
51
- return installData;
52
- }
53
-
54
- try {
55
- const ssoAccessToken = await getSSOAccessToken();
56
-
57
- const store_domain = await chooseStore(partnerId, ssoAccessToken.access_token);
58
-
59
- const response = await axios.get(`${getSSOHost()}/api/sso/current/users`, {
60
- headers: {
61
- Cookie: `awesomev2=${ssoAccessToken.access_token}`,
62
- 'Content-Type': 'application/json'
63
- }
64
- });
65
-
66
- const userInfo = response.data;
67
- const activeUser = userInfo.users.find((user) => user.active);
68
-
69
- const storeTokenResponse = await axios.post(
70
- `${getAccountHost()}/api/accounts/store/token`,
71
- {
72
- user_id: activeUser.user_id,
73
- domain: store_domain
74
- },
75
- {
76
- headers: {
77
- Cookie: `awesomev2=${ssoAccessToken.access_token}`,
78
- 'Content-Type': 'application/json'
79
- }
80
- }
81
- );
82
-
83
- const installData = {
84
- store_domain,
85
- access_token: storeTokenResponse.data.access_token,
86
- expires_at: storeTokenResponse.data.expires_at,
87
- store_id: storeTokenResponse.data.store_id
88
- };
89
-
90
- installStore.setInstallInfo(appClientId, installData);
91
-
92
- return installData;
93
- } catch (error) {
94
- throw new Error(`Store access token get failed: ${error.message}`);
95
- }
96
- }
97
-
98
- module.exports = {
99
- getStoreAccessToken
100
- };
@@ -1,23 +0,0 @@
1
- const { getSSOHost, getSSOClientId } = require('./config');
2
- const { REDIRECT_URI } = require('../../constant/sso');
3
-
4
- function buildAuthUrl() {
5
- const url = new URL(`${getSSOHost()}/switch_account`);
6
- url.searchParams.set('lack', '0');
7
- url.searchParams.set('continue', buildContinueUrl());
8
- return url.toString();
9
- }
10
-
11
- function buildContinueUrl() {
12
- const url = new URL(`${getSSOHost()}/api/oauth/authorize`);
13
- url.searchParams.set('action', 'login');
14
- url.searchParams.set('client_id', getSSOClientId());
15
- url.searchParams.set('redirect_uri', REDIRECT_URI);
16
- url.searchParams.set('response_type', 'code');
17
- return url.toString();
18
- }
19
-
20
- module.exports = {
21
- buildAuthUrl,
22
- buildContinueUrl
23
- };