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,201 +0,0 @@
1
- const AdmZip = require('adm-zip');
2
- const { cwd, configFile } = require('./config');
3
- const fs = require('fs');
4
- const path = require('path');
5
- const { consoleError, consoleBlue } = require('../utils/console');
6
- const inquirer = require('inquirer');
7
-
8
- const walkSync = (currentDirPath, callback) => {
9
- fs.readdirSync(currentDirPath, { withFileTypes: true }).forEach(function (dirent) {
10
- var filePath = path.join(currentDirPath, dirent.name);
11
- if (dirent.isFile()) {
12
- callback(filePath, dirent);
13
- } else if (dirent.isDirectory()) {
14
- walkSync(filePath, callback);
15
- }
16
- });
17
- };
18
-
19
- function getExtensionPathById(extensionId) {
20
- return path.join(cwd, !cwd.includes('/extensions') ? 'extensions' : '', extensionId);
21
- }
22
-
23
- /**
24
- * 根据id获取当前extension信息
25
- * @param {*} extensionId
26
- * @returns
27
- */
28
- function getExtensionInfo(extensionId) {
29
- let result = {};
30
- const currentPath = path.resolve(cwd);
31
- const isInExtensionDir = !!fs.readdirSync(currentPath).find((f) => f === configFile);
32
- // 已经在一个extension内部
33
- if (isInExtensionDir) {
34
- const extensionId = currentPath.split('/').pop();
35
- result = {
36
- path: currentPath,
37
- id: extensionId
38
- };
39
- } else if (extensionId) {
40
- const extensionPath = path.join(cwd, !cwd.includes('/extensions') ? 'extensions' : '', extensionId);
41
- if (!fs.existsSync(extensionPath)) {
42
- throw `The extension '${extensionId}' does not exist in your local project.`;
43
- }
44
-
45
- result = {
46
- id: extensionId,
47
- path: extensionPath
48
- };
49
- } else {
50
- let dirPath = path.resolve(cwd);
51
-
52
- if (!dirPath.includes('extensions')) {
53
- consoleError('Please specify Extension id through --id.');
54
- throw 'not_id';
55
- }
56
- const extensionId = dirPath.split('/').pop();
57
- result = {
58
- id: extensionId,
59
- path: dirPath
60
- };
61
- }
62
- result.distPath = getDistPath();
63
- if (fs.existsSync(result.distPath)) {
64
- result.distName = fs.readdirSync(result.distPath).find((f) => f.includes(result.id));
65
- }
66
- return result;
67
- }
68
-
69
- function getExtensionConfig(id) {
70
- const info = getExtensionInfo(id);
71
- const config = path.join(info.path, configFile);
72
-
73
- if (!fs.existsSync(config)) {
74
- consoleError(`Extension '${info.id}' not exist ${configFile}.`);
75
- throw 'not_exist_config_file';
76
- }
77
- return JSON.parse(fs.readFileSync(config, 'utf-8'));
78
- }
79
-
80
- function getRootPath() {
81
- return cwd;
82
- }
83
-
84
- function getExtensionsPath() {
85
- return path.join(getRootPath(), 'extensions');
86
- }
87
-
88
- function getDistPath() {
89
- return path.join(getRootPath(), 'dist');
90
- }
91
-
92
- function getProjectConfig() {
93
- return require(path.join(getRootPath(), 'extension.config.js'));
94
- }
95
-
96
- function copy(src, dest) {
97
- const stat = fs.statSync(src);
98
- if (stat.isDirectory()) {
99
- copyDir(src, dest);
100
- } else {
101
- fs.copyFileSync(src, dest);
102
- }
103
- }
104
-
105
- function copyDir(srcDir, destDir) {
106
- fs.mkdirSync(destDir, { recursive: true });
107
- for (const file of fs.readdirSync(srcDir)) {
108
- const srcFile = path.resolve(srcDir, file);
109
- const destFile = path.resolve(destDir, file);
110
- copy(srcFile, destFile);
111
- }
112
- }
113
-
114
- /**
115
- * 选择模式,返回所选extension信息
116
- * @param {Array} extensionList extension列表
117
- * @param {String} type 类型:push | deploy | undeploy | preview
118
- * @returns {Object} 所选extension信息
119
- */
120
- async function useSelectExtensionMode(extensionList = [], type = 'push') {
121
- const choices = extensionList.map((item, index) => ({
122
- name: (type === 'push' && index === 0) ? item.name : `${item.name || item.extension_id}(${item.extension_id})`,
123
- value: item.extension_id
124
- }))
125
- if (!choices.length) {
126
- consoleBlue(`No extensions available to ${type}.`);
127
- process.exit(1);
128
- }
129
- const { extensionId } = await inquirer
130
- .prompt([
131
- {
132
- type: 'list',
133
- name: 'extensionId',
134
- message: `Please select an extension to ${type}:`,
135
- prefix: '*',
136
- loop: false,
137
- choices,
138
- },
139
- ])
140
- return extensionList.find((item) => item.extension_id === extensionId);
141
- }
142
-
143
- /**
144
- * 重写指定extension的extension.json文件内容
145
- * @param {String} extensionName extension名称
146
- * @param {*} extensionConfig extension配置
147
- */
148
- function setExtensionConfig(extensionName, extensionConfig) {
149
- const info = getExtensionInfo(extensionName);
150
- const configFilePath = path.join(info.path, configFile);
151
- if (!fs.existsSync(configFilePath)) {
152
- consoleError(`Extension '${extensionName}' does not exist in ${configFile}.`);
153
- throw 'Config file does not exist';
154
- } else {
155
- fs.writeFile(configFilePath, JSON.stringify(extensionConfig, null, 2), (err) => {
156
- if (err) {
157
- consoleError(`Error writing file to disk: ${err}`);
158
- }
159
- });
160
- }
161
- }
162
-
163
- /**
164
- * 判断是否为本地extension
165
- * @param {String} extensionInfo extension信息
166
- */
167
- function checkLocalExtension(extensionInfo) {
168
- const extensionPath = path.resolve(cwd, './extensions', extensionInfo.name || extensionInfo.extension_id); // todo: 此处extension_id兼容已存在extension,可考虑去掉
169
- if (fs.existsSync(extensionPath)) {
170
- const extensionJsonPath = path.resolve(extensionPath, './extension.json');
171
- const localExtensionInfo = JSON.parse(fs.readFileSync(extensionJsonPath, 'utf8'));
172
- if (localExtensionInfo.extensionId !== extensionInfo.extension_id) {
173
- throw `The extension ${extensionInfo.name}(${extensionInfo.extension_id}) does not exist in your local project.`;
174
- }
175
- } else {
176
- throw `The extension ${extensionInfo.name}(${extensionInfo.extension_id}) does not exist in your local project.`;
177
- }
178
- }
179
-
180
- module.exports = {
181
- copy,
182
- getRootPath,
183
- getDistPath,
184
- getExtensionsPath,
185
- getProjectConfig,
186
- getExtensionInfo,
187
- getExtensionConfig,
188
- getExtensionPathById,
189
- getFileJson: async (path) => JSON.parse(await fs.readFileSync(path)),
190
- debug: async (...log) => {
191
- ~process.argv.indexOf('--debug') && console.log(`${log.join(' ')}`);
192
- },
193
- zip: (filePath, uuid) => {
194
- const zip = new AdmZip();
195
- zip.addLocalFolder(filePath, uuid);
196
- zip.writeZip(`${cwd}/${uuid}.zip`);
197
- },
198
- useSelectExtensionMode,
199
- setExtensionConfig,
200
- checkLocalExtension
201
- };
@@ -1,16 +0,0 @@
1
- const api = require('./api');
2
- const { consoleError } = require('../utils/console');
3
- const { getProjectConfig } = require('./util');
4
-
5
- async function verifyConfig(commands) {
6
- const configJson = getProjectConfig();
7
- if (!configJson.token || !configJson.store) {
8
- consoleError(`Must provide the token and store of the shop in extension.config.js config file.`);
9
- throw 'not_exist_token_or_store';
10
- }
11
- return configJson;
12
- }
13
-
14
- module.exports = {
15
- verifyConfig
16
- };
@@ -1,7 +0,0 @@
1
- const semver = require("semver");
2
- const { engines } = require("../../package");
3
- const version = engines.node;
4
- if (!semver.satisfies(process.version, version)) {
5
- console.error(`Required node version ${version}`);
6
- process.exit(1);
7
- }
@@ -1,77 +0,0 @@
1
- const { login } = require('../login');
2
- const axios = require('axios');
3
- const { get, empty } = require('../../db/user');
4
- const MockAdapter = require('axios-mock-adapter');
5
- const { SSO_AUTH_URL, ACCOUNT_URL } = require('../../config');
6
-
7
- jest.mock('../../db');
8
- jest.mock('../../auth/getCode');
9
- jest.mock('inquirer', () => ({
10
- prompt: () => Promise.resolve({ confirm: 'Yes' })
11
- }));
12
- jest.mock('ora', () => () => ({
13
- start: () => ({
14
- stop: () => {}
15
- })
16
- }));
17
-
18
- describe('login', () => {
19
- let mock;
20
-
21
- beforeEach(() => {
22
- mock = new MockAdapter(axios);
23
- empty();
24
- });
25
-
26
- afterEach(() => {
27
- mock.reset();
28
- empty();
29
- });
30
-
31
- it('success', async () => {
32
- mock.onPost(`${SSO_AUTH_URL}/api/oauth/token`).replyOnce(200, {
33
- access_token: 'access_token',
34
- session_id: 'session_id'
35
- });
36
-
37
- mock.onGet(`${SSO_AUTH_URL}/api/sso/current/users`).replyOnce(200, {
38
- users: [
39
- {
40
- user_id: 'user_id'
41
- }
42
- ]
43
- });
44
-
45
- mock.onPost(`${ACCOUNT_URL}/api/accounts/store/token`).replyOnce(200, {
46
- access_token: 'exchange_token'
47
- });
48
-
49
- console.log = jest.fn;
50
- await login({
51
- store: 'developer.myshoplaza.com'
52
- });
53
- expect(get('access_token')).toBe('access_token');
54
- expect(get('session_id')).toBe('session_id');
55
- expect(get('user_id')).toBe('user_id');
56
- expect(get('exchange_token')).toBe('exchange_token');
57
- expect(get('store_domain')).toBe('developer.myshoplaza.com');
58
- });
59
-
60
- it('failed', async () => {
61
- const mockExit = jest.spyOn(process, 'exit').mockImplementation((number) => {
62
- throw new Error('process.exit: ' + number);
63
- });
64
-
65
- mock.onPost(`${SSO_AUTH_URL}/api/oauth/token`).replyOnce(500, {});
66
- await login({
67
- store: 'developer-failed.myshoplaza.com'
68
- });
69
- expect(mockExit).toHaveBeenCalledWith(-1);
70
-
71
- expect(get('access_token')).toBe(null);
72
- expect(get('session_id')).toBe(null);
73
- expect(get('user_id')).toBe(null);
74
- expect(get('exchange_token')).toBe(null);
75
- expect(get('store_domain')).toBe(null);
76
- });
77
- });
@@ -1,29 +0,0 @@
1
- const logout = require('../logout');
2
- const { get, set, empty } = require('../../db/user');
3
-
4
- jest.mock('../../db');
5
-
6
- describe('logout', () => {
7
- beforeEach(() => {
8
- empty();
9
- });
10
-
11
- it('success', async () => {
12
- set({
13
- user_id: 'user_id',
14
- session_id: 'session_id',
15
- access_token: 'access_token',
16
- exchange_token: 'exchange_token'
17
- });
18
- expect(get('access_token')).toBe('access_token');
19
- expect(get('session_id')).toBe('session_id');
20
- expect(get('user_id')).toBe('user_id');
21
- expect(get('exchange_token')).toBe('exchange_token');
22
- console.log = jest.fn;
23
- logout();
24
- expect(get('access_token')).toBe(null);
25
- expect(get('session_id')).toBe(null);
26
- expect(get('user_id')).toBe(null);
27
- expect(get('exchange_token')).toBe(null);
28
- });
29
- });
@@ -1,44 +0,0 @@
1
- const store = require('../store');
2
- const chalk = require('chalk');
3
- const { set, empty } = require('../../db/user');
4
- const MockAdapter = require('axios-mock-adapter');
5
- const openAPI = require('../../openAPI');
6
-
7
- jest.mock('../../db');
8
- jest.mock('../../openAPI');
9
-
10
- describe('store', () => {
11
- let mock;
12
-
13
- beforeEach(() => {
14
- set({
15
- store_domain: 'developer.myshoplaza.com'
16
- });
17
- mock = new MockAdapter(openAPI);
18
- });
19
-
20
- afterEach(() => {
21
- mock.reset();
22
- empty();
23
- });
24
-
25
- it('success', async () => {
26
- mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/shop`).replyOnce(200, {
27
- shop: {
28
- domain: 'developer.myshoplaza.com'
29
- }
30
- });
31
- console.log = jest.fn();
32
- await store();
33
- expect(console.log.mock.calls[0][0]).toBe(
34
- `You're currently logged into ${chalk.green('developer.myshoplaza.com')}`
35
- );
36
- });
37
-
38
- it('failed', async () => {
39
- mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/shop`).replyOnce(500);
40
- console.log = jest.fn();
41
- await store();
42
- expect(console.log.mock.calls[0][0]).toBe(chalk.red(`✗ Failed to get store`));
43
- });
44
- });
@@ -1,45 +0,0 @@
1
- const axios = require('axios');
2
- const chalk = require('chalk');
3
- const switchCommand = require('../switch');
4
- const { get, set, empty } = require('../../db/user');
5
- const MockAdapter = require('axios-mock-adapter');
6
- const { ACCOUNT_URL } = require('../../config');
7
-
8
- jest.mock('../../db');
9
-
10
- describe('switch', () => {
11
- let mock;
12
-
13
- beforeEach(() => {
14
- mock = new MockAdapter(axios);
15
- empty();
16
- set({ access_token: 'access_token' });
17
- });
18
-
19
- afterEach(() => {
20
- mock.reset();
21
- empty();
22
- });
23
-
24
- it('switch success', async () => {
25
- mock.onPost(`${ACCOUNT_URL}/api/accounts/store/token`).replyOnce(200, {
26
- access_token: 'exchange_token'
27
- });
28
- console.log = jest.fn;
29
- await switchCommand({
30
- store: 'developer.myshoplaza.com'
31
- });
32
- expect(get('access_token')).toBe('access_token');
33
- expect(get('exchange_token')).toBe('exchange_token');
34
- });
35
-
36
- it('switch failed', async () => {
37
- mock.onPost(`${ACCOUNT_URL}/api/accounts/store/token`).replyOnce(500, {});
38
- console.log = jest.fn;
39
- await switchCommand({
40
- store: 'developer-failed.myshoplaza.com'
41
- });
42
- expect(get('access_token')).toBe(null);
43
- expect(get('exchange_token')).toBe(null);
44
- });
45
- });
@@ -1,120 +0,0 @@
1
- const chalk = require('chalk');
2
- const inquirer = require('inquirer');
3
- const Sentry = require('@sentry/node');
4
- const ora = require('ora');
5
- const { get } = require('../db/user');
6
- const { hasBeenSetAnalytics, setAnalyticsConfig } = require('../db/analytics');
7
- const log = require('../log');
8
- const { getShopDetail } = require('../openAPI/api');
9
- const getCode = require('../auth/getCode');
10
- const { postAccessToken, getUserInfo, postExchangeToken, postStoreToken } = require('../auth');
11
- const { loginIntoPartner } = require('../common/login');
12
-
13
- let spinner;
14
-
15
- const checkAndLogin = async (store) => {
16
- if (get('exchange_token')) {
17
- if (get('store_domain') === store) {
18
- try {
19
- await getShopDetail({ ignoreLogError: true });
20
- log.info(`${chalk.green('✓')} Already logged in to ${chalk.green(store)}`);
21
- return;
22
- } catch (err) {
23
- // Ignore
24
- }
25
- } else {
26
- try {
27
- await postExchangeToken(store, { ignoreLogError: true });
28
- log.info(`Logged into ${chalk.green(get('store_domain'))}`);
29
- return;
30
- } catch (err) {
31
- // Ignore
32
- }
33
- }
34
- }
35
-
36
- const code = await getCode(store);
37
- spinner = ora(`Logging in to ${chalk.green(store)}`).start();
38
- log.info(`${chalk.green('✓')} Initiating authentication`);
39
- await postAccessToken(code, store);
40
- await getUserInfo(store);
41
- await postExchangeToken(store);
42
- await postStoreToken(store);
43
- spinner?.stop?.();
44
- log.info(`${chalk.green('✓')} Finalizing authentication`);
45
- log.info(`Logged into ${chalk.green(get('store_domain'))}`);
46
- requestAnalyticsIfNeeded();
47
- };
48
-
49
- const requestAnalyticsIfNeeded = async () => {
50
- const user_id = get('user_id');
51
- if (hasBeenSetAnalytics(user_id)) return;
52
- try {
53
- const answers = await inquirer.prompt([
54
- {
55
- name: 'confirm',
56
- type: 'list',
57
- message: `Are you sure you want to enable usage reporting?`,
58
- choices: ['Yes', 'No']
59
- }
60
- ]);
61
- setAnalyticsConfig({
62
- user_id,
63
- enabled: answers.confirm === 'Yes' ? 1 : 0
64
- });
65
- } catch (error) {
66
- log.error(chalk.red('✗ Failed to authenticate'));
67
- Sentry.captureException(err);
68
- }
69
- };
70
-
71
- const handleStoreUrl = (url) => {
72
- const ERROR_MESSAGE =
73
- 'Invalid store domain. Please provide the store domain in the following format: developer.myshoplaza.com';
74
- try {
75
- if (!url.includes('myshoplaza.com')) {
76
- throw new Error(ERROR_MESSAGE);
77
- }
78
- !url.startsWith('https://') && (url = `https://${url}`);
79
- return new URL(url).host;
80
- } catch (error) {
81
- log.error(chalk.red(`✗ ${ERROR_MESSAGE}`));
82
- }
83
- };
84
-
85
- const loginIntoStore = async (store) => {
86
- try {
87
- if (store) {
88
- const storeUrl = handleStoreUrl(store);
89
- storeUrl && (await checkAndLogin(storeUrl));
90
- } else {
91
- const answers = await inquirer.prompt([
92
- {
93
- name: 'store',
94
- type: 'input',
95
- message: 'The store domain (Eg: developer.myshoplaza.com)'
96
- }
97
- ]);
98
- if (answers.store) {
99
- const storeUrl = handleStoreUrl(answers.store);
100
- storeUrl && (await checkAndLogin(storeUrl));
101
- } else {
102
- log.error(chalk.red(`✗ Please input the store domain.`));
103
- return;
104
- }
105
- }
106
- } catch (error) {
107
- spinner?.stop?.();
108
- log.error(chalk.red(`✗ Failed to authenticate`));
109
- Sentry.captureException(error);
110
- }
111
- };
112
-
113
- exports.login = async (options) => {
114
- if (options.partner) {
115
- await loginIntoPartner();
116
- return;
117
- } else {
118
- await loginIntoStore(options.store);
119
- }
120
- };
@@ -1,23 +0,0 @@
1
- const Sentry = require('@sentry/node');
2
- const chalk = require('chalk');
3
- const { empty: emptyUser } = require('../db/user');
4
- const { logoutPartner } = require('../common/logout');
5
- const log = require('../log');
6
-
7
- const logoutStore = () => {
8
- try {
9
- emptyUser();
10
- log.info('Successfully logged out of your store account');
11
- } catch (error) {
12
- log.error(chalk.red(`✗ Failed to logout your store account`));
13
- Sentry.captureException(error);
14
- }
15
- };
16
-
17
- module.exports = (options) => {
18
- if (options.partner) {
19
- logoutPartner();
20
- } else {
21
- logoutStore();
22
- }
23
- };
@@ -1,14 +0,0 @@
1
- const chalk = require('chalk');
2
- const Sentry = require('@sentry/node');
3
- const { getShopDetail } = require('../openAPI/api');
4
- const log = require('../log');
5
-
6
- module.exports = async () => {
7
- try {
8
- const { data } = await getShopDetail();
9
- log.info(`You're currently logged into ${chalk.green(data.shop.domain)}`);
10
- } catch (error) {
11
- log.error(chalk.red(`✗ Failed to get store`));
12
- Sentry.captureException(error);
13
- }
14
- };
@@ -1,52 +0,0 @@
1
- const chalk = require('chalk');
2
- const inquirer = require('inquirer');
3
- const Sentry = require('@sentry/node');
4
- const { get } = require('../db/user');
5
- const log = require('../log');
6
- const { postExchangeToken } = require('../auth');
7
-
8
- const switchStore = async (store) => {
9
- if (!get('access_token')) {
10
- log.error(chalk.red(`✗ Please login again with ${chalk.cyan('shoplazza login')}`));
11
- } else {
12
- try {
13
- await postExchangeToken(store);
14
- log.info(`Switched store to ${chalk.green(store)}`);
15
- } catch (error) {
16
- log.error(chalk.red(`✗ Failed to switch store`));
17
- Sentry.captureException(error);
18
- }
19
- }
20
- };
21
-
22
- module.exports = async (options) => {
23
- try {
24
- if (options.store) {
25
- return switchStore(options.store);
26
- } else {
27
- const answers = await inquirer.prompt([
28
- {
29
- name: 'store',
30
- type: 'input',
31
- message: 'The store domain (Eg: developer.myshoplaza.com )'
32
- }
33
- ]);
34
- if (answers.store) {
35
- if (!answers.store.includes('myshoplaza.com')) {
36
- log.error(
37
- chalk.red(
38
- `✗ Invalid store provided ${answers.store}. Please provide the store in the following format: developer.myshoplaza.com`
39
- )
40
- );
41
- process.exit(-1);
42
- }
43
- return switchStore(answers.store);
44
- } else {
45
- log.error(chalk.red(`✗ Please input the store domain.`));
46
- }
47
- }
48
- } catch (error) {
49
- log.error(chalk.red(`✗ Failed to switch store`));
50
- Sentry.captureException(error);
51
- }
52
- };
@@ -1,49 +0,0 @@
1
- const MockAdapter = require('axios-mock-adapter');
2
- const chalk = require('chalk');
3
- const deleteCommand = require('../delete');
4
- const openAPI = require('../../../openAPI');
5
- const { set, empty } = require('../../../db/user');
6
-
7
- jest.mock('inquirer', () => ({
8
- prompt: () => Promise.resolve({ confirm: 'Yes' })
9
- }));
10
- jest.mock('../../../db');
11
- jest.mock('../../../openAPI/index');
12
-
13
- describe('delete theme', () => {
14
- let mock;
15
-
16
- beforeEach(() => {
17
- set({
18
- store_domain: 'developer.myshoplaza.com'
19
- });
20
- mock = new MockAdapter(openAPI);
21
- });
22
-
23
- afterEach(() => {
24
- mock.reset();
25
- empty();
26
- });
27
-
28
- it('delete success', async () => {
29
- mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
30
- data: { name: 'test' }
31
- });
32
- mock.onDelete(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200);
33
-
34
- console.log = jest.fn();
35
- await deleteCommand({ theme: 'theme_id' });
36
- expect(console.log.mock.calls[0][0]).toBe(chalk.green(`✓ test (theme_id) theme deleted`));
37
- });
38
-
39
- it('delete failed', async () => {
40
- mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
41
- data: { name: 'test' }
42
- });
43
- mock.onDelete(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(500);
44
-
45
- console.log = jest.fn();
46
- await deleteCommand({ theme: 'theme_id' });
47
- expect(console.log.mock.calls[0][0]).toBe(chalk.red(`✗ Failed to delete theme`));
48
- });
49
- });