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,59 +0,0 @@
1
- const api = require('./api');
2
- const { verifyConfig } = require('./verify');
3
- const { useSelectExtensionMode } = require('./util');
4
- const inquirer = require('inquirer');
5
- const { consoleSuccess, consoleError, consoleBlue } = require('../utils/console');
6
-
7
- module.exports = async () => {
8
- try {
9
- await verifyConfig();
10
- const extensionInfo = await initSelectedExtensionInfo();
11
- await deployExtension(extensionInfo);
12
- } catch (error) {
13
- error.response ? consoleError(`Error: ${error.response.status}-${error.response.config.url}`) : consoleError(error);
14
- }
15
- };
16
-
17
- async function initSelectedExtensionInfo() {
18
- const res = await api.getExtensionList();
19
- const extensionList = res.data?.data?.extensions || [];
20
- return useSelectExtensionMode(extensionList, 'deploy');
21
- }
22
-
23
- async function deployExtension(extensionInfo) {
24
- const res = await api.getVersionList({
25
- extension_id: extensionInfo.extension_id
26
- });
27
- const versionList = res.data?.data?.extensions || [];
28
- const choices = versionList.map((item) => ({
29
- name: `v${item.version}${item.publish_status === 'published' ? '(Published)' : ''}`,
30
- value: item.id
31
- }));
32
- const { versionId, confirm } = await inquirer.prompt([
33
- {
34
- type: 'list',
35
- name: 'versionId',
36
- message: `Please select a version`,
37
- prefix: '*',
38
- loop: false,
39
- choices
40
- },
41
- {
42
- type: 'confirm',
43
- name: 'confirm',
44
- message: 'Are you sure you want to deploy?(After deployed, all users will be able to see this extension in the store.)',
45
- default: false
46
- }
47
- ]);
48
-
49
- if (confirm) {
50
- const versionInfo = versionList.find((item) => item.id === versionId);
51
- await api.deployExtension({
52
- extension_id: versionInfo.extension_id,
53
- id: versionInfo.id
54
- });
55
- consoleSuccess(`Successfully deployed the extension '${versionInfo.name}(v${versionInfo.version})'.`);
56
- } else {
57
- consoleBlue('Deploy cancelled');
58
- }
59
- }
@@ -1,143 +0,0 @@
1
- const inquirer = require('inquirer');
2
- const {
3
- getExtensionPathById,
4
- getExtensionInfo,
5
- copy,
6
- getDistPath,
7
- getExtensionsPath,
8
- getExtensionConfig
9
- } = require('../util');
10
- const { cwd } = require('../config');
11
- const path = require('path');
12
- const chokidar = require('chokidar');
13
- const fs = require('fs');
14
- const { viteBuild } = require('../build');
15
- const { consoleError, consoleBlue, consoleSuccess } = require('../../utils/console');
16
-
17
- async function buildExtension(id) {
18
- return viteBuild({ id })
19
- .catch(consoleError)
20
- .then(() => {
21
- const { distName } = getExtensionInfo(id);
22
- return distName;
23
- });
24
- }
25
-
26
- let webSocket = undefined;
27
-
28
- function handleWsConnection(ws) {
29
- webSocket = ws;
30
- ws.on('error', console.error);
31
- ws.on('message', function message(data) {
32
- console.log(`Received message ${data} from user `);
33
- });
34
-
35
- let extensionList = [];
36
- fs.readdirSync(getExtensionsPath()).forEach((ext) => {
37
- extensionList.push(generateExtensionData(ext));
38
- });
39
- extensionList = extensionList.filter((ext) => !ext.resourceUrl.endsWith('undefined'));
40
- ws.send(JSON.stringify({ event: 'init', data: extensionList }));
41
-
42
- }
43
-
44
- async function createWsServer(httpServer) {
45
- const { WebSocketServer } = require('ws');
46
- const wss = new WebSocketServer({ noServer: true });
47
- wss.on('connection', handleWsConnection);
48
-
49
- httpServer.on('upgrade', function upgrade(request, socket, head) {
50
- wss.handleUpgrade(request, socket, head, function done(ws) {
51
- wss.emit('connection', ws, request);
52
- });
53
- });
54
- return wss;
55
- }
56
-
57
- function createServer(dir) {
58
- const connect = require('connect');
59
- const http = require('http');
60
- const app = connect();
61
-
62
- const serveStatic = require('serve-static');
63
- app.use(
64
- serveStatic(dir, {
65
- setHeaders: function (res) {
66
- res.setHeader('Access-Control-Allow-Origin', '*');
67
- res.setHeader('Access-Control-Allow-Methods', 'GET');
68
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
69
- }
70
- })
71
- );
72
- const httpServer = http.createServer(app);
73
-
74
- return httpServer;
75
- }
76
-
77
- function generateExtensionData(id) {
78
- const info = getExtensionInfo(id);
79
- const config = getExtensionConfig(id);
80
- const data = {
81
- extensionId: info.id,
82
- resourceUrl: `http://localhost:8888/${info.distName}`,
83
- status: 'draft',
84
- version: config.version,
85
- fields: JSON.stringify(config)
86
- };
87
- return data;
88
- }
89
-
90
- async function startDev() {
91
- if (fs.existsSync(getDistPath())) {
92
- fs.rmdirSync(getDistPath(), { recursive: true });
93
- }
94
-
95
- const extensionPath = path.resolve(cwd, './extensions');
96
- const files = fs.readdirSync(extensionPath);
97
- const choices = files.filter((file) => {
98
- return fs.statSync(path.resolve(extensionPath, file)).isDirectory();
99
- });
100
- const { extensionNameList } = await inquirer.prompt([
101
- {
102
- type: 'checkbox',
103
- name: 'extensionNameList',
104
- message: 'Please select one or more extensions to develop:',
105
- prefix: '*',
106
- loop: false,
107
- choices,
108
- validate(answer) {
109
- if (answer.length === 0) {
110
- return 'You must choose at least one extension.';
111
- }
112
- return true;
113
- },
114
- }
115
- ]);
116
-
117
- // build
118
- const willBuildExts = extensionNameList;
119
- await Promise.all(willBuildExts.map((id) => buildExtension(id)));
120
-
121
- // 复制index.js文件
122
- copy(path.join(__dirname, 'client.js'), path.join(getDistPath(), 'index.js'));
123
-
124
- // 监听文件改变
125
- chokidar.watch(getExtensionsPath()).on('change', async (event) => {
126
- const id = event.split('extensions/').pop().split('/').shift();
127
- if (id) {
128
- consoleBlue(`update extension: ${id}`);
129
- await buildExtension(id);
130
- webSocket && webSocket.send(JSON.stringify({ event: 'update', data: generateExtensionData(id) }));
131
- }
132
- });
133
-
134
- // 启动服务
135
- const httpServer = createServer(getDistPath());
136
- createWsServer(httpServer, willBuildExts);
137
- httpServer.listen(8888);
138
- consoleSuccess('started server on url: http://localhost:8888/index.js');
139
- }
140
-
141
- module.exports = {
142
- startDev
143
- };
@@ -1,29 +0,0 @@
1
- const api = require('./api');
2
- const { consoleError } = require('../utils/console');
3
- const { verifyConfig } = require('./verify');
4
- const { getExtensionInfo, getExtensionConfig } = require('./util');
5
-
6
- async function updateConfig(commands = {}) {
7
- await verifyConfig(commands);
8
- const info = getExtensionInfo(commands.id);
9
- const config = getExtensionConfig(commands.id);
10
- const data = {
11
- extension_id: info.id,
12
- fields: JSON.stringify(config),
13
- version: config.version
14
- };
15
- try {
16
- if (commands.update) {
17
- await api.updateFields(data);
18
- } else {
19
- await api.pushFields(data);
20
- }
21
- } catch (err) {
22
- consoleError('update config fail.');
23
- throw 'update_fields_error';
24
- }
25
- }
26
-
27
- module.exports = {
28
- updateConfig
29
- };
@@ -1,63 +0,0 @@
1
- function makeCheckoutCommand(_program) {
2
- const program = _program.command('checkout').description('Shoplazza checkout cli');
3
-
4
- program.command('create').description('create a extension project').action(require('./create').createProject);
5
-
6
- program.command('extension').description('create a new extension').action(require('./create').createExtension);
7
-
8
- program
9
- .command('build')
10
- .description('Some commands related to the build')
11
- .option('-i, --id <token>', 'extension id (option)')
12
- .option('-d, --debug', 'debug mode')
13
- .action(require('./build').cliBuild);
14
-
15
- program
16
- .command('config')
17
- .description('update config')
18
- .option('-i, --id <token>', 'extension id')
19
- .option('-u --update', 'is update extension?')
20
- .action(require('./fields').updateConfig);
21
-
22
- program
23
- .command('list')
24
- .description('fetch extension list.')
25
- .option('-a, --all', 'show all extensions')
26
- .action(require('./pull'));
27
-
28
- program
29
- .command('delete')
30
- .description('delete extension')
31
- .option('-i, --id <token>', 'extension id')
32
- .action(require('./delete'));
33
-
34
- program
35
- .command('dev')
36
- .description('dev mode')
37
- .option('-i, --id <token>', 'extension id')
38
- .action(require('./dev').startDev);
39
-
40
- program
41
- .command('preview')
42
- .description('preview extension')
43
- .action(require('./preview'));
44
-
45
- program
46
- .command('push')
47
- .description('push extension.')
48
- .action(require('./push'));
49
-
50
- program
51
- .command('deploy')
52
- .description('deploy extension')
53
- .action(require('./deploy'));
54
-
55
- program
56
- .command('undeploy')
57
- .description('undeploy extension')
58
- .action(require('./undeploy'));
59
- }
60
-
61
- module.exports = {
62
- makeCheckoutCommand
63
- };
@@ -1,52 +0,0 @@
1
- const inquirer = require('inquirer');
2
- const api = require('./api');
3
- const { verifyConfig } = require('./verify');
4
- const { useSelectExtensionMode, getProjectConfig } = require('./util');
5
- const { consoleSuccess, consoleError } = require('../utils/console');
6
-
7
- module.exports = async () => {
8
- try {
9
- await verifyConfig();
10
- const extensionInfo = await initSelectedExtensionInfo();
11
- await previewExtension(extensionInfo);
12
- } catch (error) {
13
- error.response ? consoleError(`Error: ${error.response.status}-${error.response.config.url}`) : consoleError(error);
14
- }
15
- };
16
-
17
- async function initSelectedExtensionInfo() {
18
- const res = await api.getExtensionList();
19
- const extensionList = res.data?.data?.extensions || [];
20
- return useSelectExtensionMode(extensionList, 'preview');
21
- }
22
-
23
- async function previewExtension(extensionInfo) {
24
- const resp = await api.getVersionList({
25
- extension_id: extensionInfo.extension_id
26
- });
27
- const versionList = resp.data?.data?.extensions || [];
28
- const choices = versionList.map((item) => ({
29
- name: `v${item.version}${item.publish_status === 'published' ? '(Published)' : ''}`,
30
- value: item.id
31
- }));
32
- const { versionId } = await inquirer.prompt([
33
- {
34
- type: 'list',
35
- name: 'versionId',
36
- message: `Please select a version`,
37
- prefix: '*',
38
- loop: false,
39
- choices
40
- }
41
- ]);
42
- const versionInfo = versionList.find((item) => item.id === versionId);
43
- const res = await api.previewExtension({
44
- extension_id: versionInfo.extension_id,
45
- id: versionInfo.id
46
- });
47
- const checkoutUrl = res.data?.data?.checkout_url;
48
- const { store: baseUrl } = getProjectConfig();
49
- const url = new URL(checkoutUrl, baseUrl);
50
- url.searchParams.append('step', 'contact_information');
51
- consoleSuccess(`Your extension's preview URL: ${url.toString()}`);
52
- }
@@ -1,22 +0,0 @@
1
- const api = require('./api');
2
- const { verifyConfig } = require('./verify');
3
- const { consoleError } = require('../utils/console');
4
-
5
- module.exports = async (commands = {}) => {
6
- try {
7
- await verifyConfig(commands);
8
- let data;
9
- if (!commands.all) {
10
- data = {
11
- status: 'published'
12
- };
13
- }
14
- const res = await api.getExtensionList(data);
15
- const extensionList = res.data?.data?.extensions || [];
16
- extensionList.forEach((extension) => {
17
- console.log(`${extension.name || extension.extension_id}(${extension.publish_status}/${extension.extension_id})`);
18
- });
19
- } catch (error) {
20
- error.response ? consoleError(`Error: ${error.response.status}-${error.response.config.url}`) : consoleError(error);
21
- }
22
- };
@@ -1,141 +0,0 @@
1
- const fs = require('fs');
2
- const inquirer = require('inquirer');
3
- const api = require('./api');
4
- const loading = require('loading-cli');
5
- const {
6
- getExtensionInfo,
7
- getExtensionConfig,
8
- getDistPath,
9
- useSelectExtensionMode,
10
- setExtensionConfig,
11
- checkLocalExtension,
12
- getProjectConfig
13
- } = require('./util');
14
- const fsExtra = require('fs-extra');
15
- const { consoleBlue, consoleSuccess, consoleError, consoleWarn } = require('../utils/console');
16
- const { viteBuild } = require('./build');
17
- const { verifyConfig } = require('./verify');
18
-
19
- module.exports = async () => {
20
- try {
21
- await verifyConfig();
22
- const extensionInfo = await initSelectedExtensionInfo();
23
- consoleBlue('Starting to build:');
24
- const composeCommands = {
25
- id: extensionInfo.name || extensionInfo.extension_id
26
- }; // 兼容旧代码处理
27
- await viteBuild(composeCommands);
28
- consoleBlue('Starting to upload:');
29
- const url = await uploadOSS(composeCommands);
30
- consoleBlue('Starting to push:');
31
- await pushExtension(composeCommands, extensionInfo, url);
32
- } catch (error) {
33
- error.response ? consoleError(`Error: ${error.response.status}-${error.response.config.url}`) : consoleError(error);
34
- }
35
- };
36
-
37
- /**
38
- * 上传至oss
39
- */
40
- async function uploadOSS(command) {
41
- const info = getExtensionInfo(command.id);
42
- const dir = getDistPath();
43
- if (!fs.existsSync(dir)) {
44
- consoleError('The dist directory does not exist.');
45
- throw 'not_exist_dist';
46
- }
47
- const files = fsExtra.readdirSync(dir).filter((name) => name.includes(info.id));
48
- try {
49
- const url = await api.uploadFile(dir, files[0]);
50
- consoleSuccess('Successfully uploaded to OSS.');
51
- return url;
52
- } catch (error) {
53
- consoleError('Failed to upload to OSS:', error);
54
- throw 'upload_failed';
55
- }
56
- }
57
-
58
- /**
59
- * 发布
60
- * @returns
61
- */
62
- async function pushExtension(command, extraInfo, url) {
63
- const info = getExtensionInfo(command.id);
64
- const load = loading(`start push the extension ${info.id}.`).start();
65
- try {
66
- const config = getExtensionConfig(command.id);
67
- // 兼容低版本extension配置文件
68
- const data = {
69
- resource_url: url,
70
- version: config.version,
71
- scope: '',
72
- template_name: config.templateName || config.template_name,
73
- theme_name: config.themeName || config.theme_name,
74
- name: config.extensionName || config.extensionId,
75
- description: config.extensionDescription || '',
76
- extends_fields: JSON.stringify(config)
77
- };
78
- const isFirstPush = !extraInfo.extension_id; // 非首次推送
79
- if (!isFirstPush) {
80
- data.extension_id = config.extensionId;
81
- }
82
- const res = await api.pushExtension(data, isFirstPush);
83
- const extensionInfo = res.data?.data?.extension || {};
84
-
85
- // 填充本地extensionId
86
- if (isFirstPush) {
87
- setExtensionConfig(command.id, {
88
- ...config,
89
- extensionId: extensionInfo.extension_id,
90
- extensionName: extensionInfo.name
91
- });
92
- }
93
-
94
- load.stop();
95
- consoleSuccess('Successfully pushed the extension.');
96
- // 预览
97
- try {
98
- const resp = await api.previewExtension({
99
- extension_id: extensionInfo.extension_id,
100
- id: extensionInfo.id
101
- });
102
- const checkoutUrl = resp.data?.data?.checkout_url;
103
- const { store: baseUrl } = getProjectConfig();
104
- const url = new URL(checkoutUrl, baseUrl);
105
- url.searchParams.append('step', 'contact_information');
106
- consoleBlue(`Your extension's preview URL: ${url.toString()}`);
107
- } catch (error) {
108
- consoleError(error);
109
- }
110
- } catch (err) {
111
- load.stop();
112
- throw '\nFailed to push the extension: ' + err;
113
- }
114
- }
115
-
116
- /**
117
- * 初始化需要push的extension信息
118
- */
119
- async function initSelectedExtensionInfo() {
120
- const PUSH_NEW_EXTENSION = 'Push new extension';
121
- const res = await api.getExtensionList();
122
- const extensionList = res.data?.data.extensions || [];
123
- extensionList.unshift({ extension_id: PUSH_NEW_EXTENSION, name: 'Push new extension' });
124
- let extensionInfo = await useSelectExtensionMode(extensionList);
125
- if (extensionInfo.extension_id === PUSH_NEW_EXTENSION) {
126
- const { extensionName } = await inquirer.prompt([
127
- {
128
- type: 'input',
129
- name: 'extensionName',
130
- message: 'Please enter the extension name:',
131
- prefix: '*'
132
- }
133
- ]);
134
- return {
135
- name: extensionName
136
- };
137
- } else {
138
- checkLocalExtension(extensionInfo);
139
- return extensionInfo;
140
- }
141
- }
@@ -1,34 +0,0 @@
1
- # Checkout Extension
2
- ## Getting started
3
-
4
- 1. 安装依赖
5
-
6
- ```
7
- npm i
8
- ```
9
- 2. 启动本地服务器
10
- ```
11
- shoplazza checkout dev
12
- ```
13
-
14
- ## lessJS组件库
15
-
16
- 当自定义UI比较复杂时可以使用 lessJS组件库 https://lessjs.shoplazza.com/latest/docs/introduction/
17
-
18
- lessJS已经被内置,无需引入,开箱即用。
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
@@ -1,4 +0,0 @@
1
- node_modules/
2
- pnpm-lock.yaml
3
- dist
4
- .history/
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- token: '{token}',
3
- store: '{store}'
4
- };
@@ -1,10 +0,0 @@
1
- {
2
- "version": "1.0",
3
- "deleteTarget": [],
4
- "placeholder": {},
5
- "templateName": "checkout",
6
- "themeName": "",
7
- "extensionId":"",
8
- "extensionName":"",
9
- "extensionDescription":""
10
- }
@@ -1,3 +0,0 @@
1
- <div>
2
- <h2>hello world</h2>
3
- </div>
@@ -1,5 +0,0 @@
1
- <div>
2
- import './style.html'
3
- import './content.html'
4
- import './script.html'
5
- </div>
@@ -1,11 +0,0 @@
1
- import { extend } from 'shoplazza-extension-ui';
2
- import index from './index.html';
3
-
4
- function App() {
5
- return index;
6
- }
7
-
8
- extend({
9
- extensionPoint: 'Checkout::Navigate::RenderBefore',
10
- component: App()
11
- });
@@ -1,3 +0,0 @@
1
- <ljs-script layout="logic" type="application/javascript">
2
- <!-- js代码 -->
3
- </ljs-script>
@@ -1,17 +0,0 @@
1
- {
2
- "name": "chick-extension",
3
- "version": "1.0.0",
4
- "description": "",
5
- "main": "index.js",
6
- "dependencies": {
7
- "fs-extra": "11.1.1",
8
- "shoplazza-extension-ui": "1.0.0"
9
- },
10
- "devDependencies": {},
11
- "scripts": {
12
- "test": "echo \"Error: no test specified\" && exit 1"
13
- },
14
- "keywords": [],
15
- "author": "",
16
- "license": "ISC"
17
- }
@@ -1,40 +0,0 @@
1
- const api = require('./api');
2
- const { verifyConfig } = require('./verify');
3
- const { useSelectExtensionMode } = require('./util');
4
- const inquirer = require('inquirer');
5
- const { consoleSuccess, consoleBlue, consoleError } = require('../utils/console');
6
-
7
- module.exports = async () => {
8
- try {
9
- await verifyConfig();
10
- const extensionInfo = await initSelectedExtensionInfo();
11
- await undeployExtension(extensionInfo);
12
- } catch (error) {
13
- error.response ? consoleError(`Error: ${error.response.status}-${error.response.config.url}`) : consoleError(error);
14
- }
15
- };
16
-
17
- async function initSelectedExtensionInfo() {
18
- const res = await api.getExtensionList({
19
- status: 'published'
20
- });
21
- const extensionList = res.data?.data?.extensions || [];
22
- return useSelectExtensionMode(extensionList, 'undeploy');
23
- }
24
-
25
- async function undeployExtension(extensionInfo) {
26
- const { confirm } = await inquirer.prompt([
27
- {
28
- type: 'confirm',
29
- name: 'confirm',
30
- message: 'Are you sure you want to undeploy?(After undeployed, all users will not be able to see this extension in the store.)',
31
- default: false
32
- }
33
- ]);
34
- if (confirm) {
35
- await api.undeployExtension({ extension_id: extensionInfo.extension_id });
36
- consoleSuccess(`Successfully undeployed the extension '${extensionInfo.name || extensionInfo.extension_id}'.`);
37
- } else {
38
- consoleBlue('Undeploy cancelled');
39
- }
40
- }