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
package/README.md CHANGED
@@ -1,444 +1,318 @@
1
- <p align="center">
2
- <h3 align="center">Shoplazza CLI</h3>
3
- <p align="center">Shoplazza CLI is a command-line interface tool that helps you build Shoplazza themes. It quickly generates Shoplazza themes. You can also use it to automate many common development tasks.</p>
4
- <p align="center">
5
- <img src="https://img.shields.io/npm/v/shoplazza-cli">
6
- </p>
7
- </p>
1
+ # shoplazza-cli
8
2
 
9
- ---
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+ [![Go Version](https://img.shields.io/badge/go-%3E%3D1.24-blue.svg)](https://go.dev/)
5
+ [![npm version](https://img.shields.io/npm/v/shoplazza-cli.svg)](https://www.npmjs.com/package/shoplazza-cli)
10
6
 
11
- Shoplazza CLI is a cross-platform command line tool that you can use to build Shoplazza themes.
7
+ [中文版](./README.zh.md) | [English](./README.md)
12
8
 
13
- ## Features
14
-
15
- Shoplazza CLI accelerates your theme development process with the following features:
16
-
17
- - Safely preview, test, and share changes to themes using unpublish themes
18
- - Hot reload CSS and section changes, or automatically refresh a page on file change, when previewing a theme.
19
- - Initialize a new theme using Nova 2023 as a starting point.
20
- - Use workflow tools like Git to work with a team of theme developers.
21
- - Upload themes to your store.
22
- - Watch for local changes and upload them automatically to Shoplazza.
23
- - Work on Linux, macOS, and Windows.
24
- - Support customized Checkout page.
25
-
26
- ## Installation [shoplazza-cli](https://www.npmjs.com/package/shoplazza-themekit)
27
-
28
- ```terminal
29
- $ npm install shoplazza-cli -g
30
- ```
31
-
32
- ## Before you start
9
+ The official [Shoplazza Open Platform](https://www.shoplazza.dev/) CLI tool — built for humans and AI Agents. Develop apps and themes, manage products, discounts, orders and customers, all from the terminal with structured output designed for AI Agent integration.
33
10
 
34
- Before you start using Shoplazza CLI to develop themes, make sure that you do the following tasks:
11
+ [Install](#installation--quick-start) · [Auth](#authentication) · [Development](#development-workflows) · [Commands](#three-layer-command-system) · [Advanced](#advanced-usage) · [Contributing](#contributing)
35
12
 
36
- - Install [Node.js](https://nodejs.org/en/) (20.18.0).
37
- - Install [Git](https://git-scm.com/downloads).
38
- - Make sure that you have a account with the Manage themes permission for the store that you want to work on, or you're the owner of the store.
39
- - Note the URL of the store that you want to work on.
40
- - Make sure that you're connected to the internet. Most Shoplazza CLI commands need an internet connection to run.
13
+ ## Why shoplazza-cli?
41
14
 
15
+ - **Agent-Native Design** — Structured JSON output out of the box; AI Agents can operate Shoplazza stores with zero extra setup
16
+ - **E-Commerce Focused** — Products, Discounts, Orders, Customers with full CRUD and 20+ shortcut commands for high-frequency operations
17
+ - **Full Developer Workflow** — App creation, extension scaffolding (checkout / theme / function), local dev server with HMR, one-command deploy; plus theme init, live reload, and packaging
18
+ - **Secure & Controllable** — Input injection protection, OS-native keychain credential storage, token auto-refresh
19
+ - **Three-Layer Architecture** — Shortcuts (human & AI friendly) → API Commands (OpenAPI-synced) → Raw API (full coverage)
20
+ - **Up and Running in 3 Minutes** — Interactive login, from install to first API call in 3 steps
42
21
 
43
- ## Checkout Develop
22
+ ## Features
44
23
 
45
- You can use Shoplazza CLI to develop checkout, customized checkout page as you want.
24
+ | Domain | Capabilities |
25
+ |--------|-------------|
26
+ | 🛍️ Products | CRUD + shortcuts: `+search`, `+publish`, `+unpublish`, `+create`, `+set-price`, `+stock` |
27
+ | 🏷️ Discounts | CRUD + 8 shortcut creators for automatic & code discounts |
28
+ | 📦 Orders | CRUD + shortcuts: `+search`, `+count`, `+ship`, `+refund`, `+update-tracking` |
29
+ | 👤 Customers | CRUD + shortcuts: `+search`, `+create` |
30
+ | 🎨 Themes | `init`, `serve` (live reload), `pull`, `push`, `package`, `share` |
31
+ | 🧩 App | Full lifecycle: init → extension create → dev → deploy; extensions: checkout, theme, function |
46
32
 
47
- ### Feature
33
+ ## Installation & Quick Start
48
34
 
49
- - 支持本地开发和调试,支持热更新。
50
- - 支持预览,在推送到店铺之后,通过预览链接进入可以进行预览。
51
- - 支持部署extension,部署后所有用户都能看到变更。
52
- - 支持下线extension,下线之后extension将不在店铺中生效。
35
+ ### Install
53
36
 
54
- ### Get Started
37
+ | Method | Command | Notes |
38
+ |--------|---------|-------|
39
+ | **Homebrew** (macOS / Linux) | `brew install Shoplazza/tap/shoplazza-cli` | Recommended. Auto-updates via `brew upgrade`. |
40
+ | **Shell script** (macOS / Linux) | `curl -fsSL https://raw.githubusercontent.com/Shoplazza/shoplazza-cli/main/install.sh \| bash` | Auto-detects OS and architecture. |
41
+ | **npm** | `npm install -g @shoplazza/cli` | Requires Node.js `>=14.18.0`. |
42
+ | **Download binary** | See [GitHub Releases](https://github.com/Shoplazza/shoplazza-cli/releases) | Manual download for any platform. |
43
+ | **Build from source** | `git clone ... && cd shoplazza-cli && make install` | Requires Go `v1.24`+. Installs to `~/.local/bin`. |
55
44
 
56
- #### Step 1: 创建一个项目模板
45
+ <details>
46
+ <summary>Platform-specific binary download</summary>
57
47
 
58
- 创建过程会要求你输入店铺地址和token,token可以在后台中应用->管理私有应用->创建应用 获得。创建过程还要求你输入一个extension名字,一个项目下支持存在多个extension,这是为了方便管理,它们互不影响。
59
48
  ```bash
60
- shoplazza checkout create
61
- # 安装依赖
62
- npm i
63
- ```
64
-
65
- #### Step2: 本地开发
66
- extension支持本地开发,支持在线上店铺Checkout页面插入本地的extension代码,这仅在你的浏览器生效。
67
- 首先,先启动本地开发服务器:
68
- ```
69
- shoplazza checkout dev
70
- ```
71
- 然后在checkout页面打开控制台切换为开发模式:
72
- ```
73
- CheckoutAPI.extension.DEV_switchDevMode()
74
- ```
75
- 在checkout页面即可看到extension变更。
76
-
77
- #### Step3: 预览extension
78
- 在完成本地开发之后,我们可以将extension推送到店铺进行预览。
79
- ```
80
- shoplazza checkout push
81
- ```
82
- 访问预览url即可看到效果。
83
- #### Step4: 部署Extension
84
- 在预览测试完成之后,可以在店铺发布extension,发布之后所有用户都可以看到。
85
- ```
86
- shoplazza checkout deploy
87
- ```
88
- 或者对将已发布的extension下线:
89
- ```
90
- shoplazza checkout undeploy
91
-
92
- ```
93
-
94
- ### Other command
95
-
96
- #### 查看已部署的extension
97
- ```
98
- shoplazza checkout list
99
-
100
- // 查看所有
101
- shoplazza checkout list -a
102
- ```
103
-
104
- #### 预览extension
105
- ```
106
- shoplazza checkout preview
107
- ```
108
-
109
- ## Theme Develop
110
-
111
- ### Authenticate
112
-
113
- ```terminal
114
- $ shoplazza login --store developer.myshoplaza.com
115
- ```
116
-
117
- > In your browser window, log into the account that's attached to the store that you want to use for development.
118
-
119
- ### Create a new theme
120
-
121
- ```terminal
122
- $ shoplazza theme init
123
- ```
124
-
125
- > Use `shoplazza theme init` to create a new theme on your local machine. This command clones a Git repository to your local machine to use as the starting point for building a theme.
126
-
127
- ### Connect to existing theme
128
-
129
- ```terminal
130
- $ shoplazza theme pull
131
- ```
132
-
133
- > Pull the theme onto your local machine using `shoplazza theme pull`. You're prompted to select a theme from the list of themes on the store.
134
-
135
- ### Preview, test, and share your theme
136
-
137
- ```terminal
138
- $ shoplazza theme serve
139
- ```
140
-
141
- > After you create or navigate to your theme, you can run `shoplazza theme serve` to interact with the theme in a browser.
142
-
143
- ### Push your theme to your store
144
-
145
- ```terminal
146
- $ shoplazza theme push
147
- ```
49
+ # macOS (Apple Silicon)
50
+ curl -fsSL https://github.com/Shoplazza/shoplazza-cli/releases/latest/download/shoplazza-cli-darwin-arm64.tar.gz | tar -xz
51
+ sudo install -m755 shoplazza /usr/local/bin/
148
52
 
149
- > Use `shoplazza theme push` to upload your local theme files to Shoplazza, overwriting the remote versions.
53
+ # macOS (Intel)
54
+ curl -fsSL https://github.com/Shoplazza/shoplazza-cli/releases/latest/download/shoplazza-cli-darwin-amd64.tar.gz | tar -xz
55
+ sudo install -m755 shoplazza /usr/local/bin/
150
56
 
151
- ### Publish your theme
57
+ # Linux (x86_64)
58
+ curl -fsSL https://github.com/Shoplazza/shoplazza-cli/releases/latest/download/shoplazza-cli-linux-amd64.tar.gz | tar -xz
59
+ sudo install -m755 shoplazza /usr/local/bin/
152
60
 
153
- ```terminal
154
- $ shoplazza theme publish
61
+ # Linux (ARM64)
62
+ curl -fsSL https://github.com/Shoplazza/shoplazza-cli/releases/latest/download/shoplazza-cli-linux-arm64.tar.gz | tar -xz
63
+ sudo install -m755 shoplazza /usr/local/bin/
155
64
  ```
156
65
 
157
- > Use `shoplazza theme publish` to select and publish an unpublished theme from your theme library. If you want to publish your local theme, then you need to run `shoplazza theme push` first.
158
-
159
- ### Find your theme ID
160
-
161
- ```terminal
162
- $ shoplazza theme list
163
- ```
164
-
165
- > You might want to use a theme's ID to pull, push, publish, or delete a theme using Shoplazza CLI.
166
-
167
-
66
+ </details>
168
67
 
169
- ## Theme Extension Develop
68
+ <details>
69
+ <summary>Build from source</summary>
170
70
 
171
- ### Overview
172
-
173
- Theme Extension is a method provided by Shoplazza for extending and customizing themes. Developers can use Theme Extensions to enhance and tailor theme pages.
174
-
175
- ### Create an Extension
71
+ Requires Go `v1.24`+. Installs to `~/.local/bin` (no `sudo` needed):
176
72
 
177
73
  ```bash
178
- shoplazza te create
74
+ git clone https://github.com/Shoplazza/shoplazza-cli.git
75
+ cd shoplazza-cli
76
+ make install
179
77
  ```
180
78
 
181
- When creating a new Theme Extension, you will be prompted to choose between two types: **Basic Extension** and **Embed Extension**.
182
-
183
- - **Basic Extension**: Allows modifying insertion positions via the theme editor.
184
- - **Embed Extension**: Insertion positions are hard-coded within the Extension.
79
+ > If `~/.local/bin` is not on your `PATH`, add it: `export PATH="$HOME/.local/bin:$PATH"`.
80
+ > For a system-wide install: `sudo make install PREFIX=/usr/local`.
185
81
 
186
- ### Start Development
187
-
188
- ```bash
189
- cd your-project # Navigate to the project directory
190
- shoplazza te serve
191
- ```
82
+ </details>
192
83
 
193
- Since the Extension is displayed on theme pages, so you need to select a theme for preview. A preview link will be provided after selection.
84
+ ### Quick Start (Human Users)
194
85
 
195
- - **First link**: Redirects to the theme editor. You can add the Extension to theme pages here. After adding, save the changes to preview on the client side.
196
- - **Second link**: Redirects to the storefront preview page. After adding the Extension via the editor, any local code updates will take effect upon refreshing the storefront page.
197
-
198
- ### Build for Production
86
+ > **Note for AI assistants:** If you are an AI Agent helping the user install, jump directly to [Quick Start (AI Agent)](#quick-start-ai-agent).
199
87
 
200
88
  ```bash
201
- shoplazza te build
202
- ```
203
-
204
- Generates a deployable production build from the current project code. Multiple builds can be created, and one can be selected during deployment.
89
+ # Log in (replace with your store domain)
90
+ shoplazza auth login --store-domain my-store.shoplazza.com --domain products,orders
205
91
 
206
- ### Deploy an Extension
92
+ # Verify
93
+ shoplazza auth status
207
94
 
208
- To deploy an Extension to your store:
209
-
210
- ```bash
211
- shoplazza te deploy
95
+ # Start using
96
+ shoplazza products list --format table
212
97
  ```
213
98
 
214
- Once deployed, the Extension will be live in the store.
215
-
216
- ### Connect Extension to an APP
99
+ ### Quick Start (AI Agent)
217
100
 
218
- An APP is the primary extension method of Shoplazza platform. A Theme Extension is part of an APP, and one APP can connect multiple Theme Extensions. To conect your Extension to an APP:
101
+ > Run the login command, extract the authorization URL from output, and send it to the user. The command polls until the user completes OAuth in their browser.
219
102
 
220
103
  ```bash
221
- shoplazza te connect
104
+ npm install -g shoplazza-cli
105
+ shoplazza auth login --store-domain <store-domain> --domain products,orders
106
+ shoplazza auth status
222
107
  ```
223
108
 
224
- You will be prompted to enter the APP's `client_id` and `client_secret`, which can be obtained from the Shoplazza Partner Dashboard.
109
+ ## Authentication
225
110
 
226
- ### Release an Extension
227
- To update the Extension version connected to your app, run the release command:
111
+ | Command | Description |
112
+ |---------|-------------|
113
+ | `auth login` | Account-only OAuth — opens browser, obtains UAT |
114
+ | `auth login --store-domain <domain>` | OAuth + store token (requires `--scope` or `--domain`) |
115
+ | `auth store use --store-domain <domain>` | Switch current store |
116
+ | `auth logout` | Sign out and remove credentials |
117
+ | `auth status` | Show current auth state |
118
+ | `auth scopes` | List available and granted scopes |
228
119
 
229
120
  ```bash
230
- shoplazza te release
231
- ```
232
-
233
- The release will be based on the current production version of your store. Once published, the changes will take effect for **all stores that have installed your app**.
234
-
235
- ### CLI Command Guide
121
+ # Interactive login with store
122
+ shoplazza auth login --store-domain my-store.myshoplazza.com --domain products
236
123
 
237
- | Command | Description |
238
- | :-----------------------------------: | :--------------------------------------------: |
239
- | `shoplazza te create` | Create a new Theme Extension project |
240
- | `shoplazza te serve` | Start a local development server |
241
- | `shoplazza te build` | Build a production version of the Extension |
242
- | `shoplazza te versions` | View production version list of an Extension |
243
- | `shoplazza te list` | List private Extensions in the store |
244
- | `shoplazza te deploy` | Deploy a production build to the current store |
245
- | `shoplazza te connect <extension-id>` | Bind an Extension to an APP |
246
- | `shoplazza te release` | Publish an Extension to its bound APP |
124
+ # UAT fast-path (non-interactive, for CI)
125
+ shoplazza auth login --uat <user-access-token>
247
126
 
248
- ## Core commands
127
+ # Switch store
128
+ shoplazza auth store use --store-domain another-store.myshoplazza.com
249
129
 
250
- ### help
251
-
252
- ```terminal
253
- $ shoplazza help
130
+ # Check status
131
+ shoplazza auth status
254
132
  ```
255
133
 
256
- > Lists the available commands and describes what they do.
257
-
258
- ### login
134
+ Access tokens are stored in the OS-native keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service).
259
135
 
260
- ```terminal
261
- $ shoplazza login --store developer.myshoplaza.com
136
+ ## Development Workflows
262
137
 
263
- $ shoplazza login --partner
264
- ```
138
+ ### App Development
265
139
 
266
- > --store: Authenticates and logs you into the specified store with Shoplazza CLI.
267
- > --partner: Authenticates and logs you into the partner with Shoplazza CLI.
140
+ The CLI covers the full app lifecycle: create, configure, develop, and deploy.
268
141
 
269
- ### logout
270
-
271
- ```terminal
272
- $ shoplazza logout
273
-
274
- $ shoplazza logout --partner
275
- ```
142
+ ```bash
143
+ # 1. Create a new app project (creates a sub-directory)
144
+ shoplazza app init --name "My App" --partner <partner-id>
276
145
 
277
- > Default to logout your store, logs you out of the Shoplazza account and store, the logout command clears credentials. You need to reauthenticate the next time that you connect to a store.
278
- > --partner: Clear your partner info, and you need to reauthenticate the next time.
146
+ # 2. Add extensions (theme / checkout / function)
147
+ cd my-app
148
+ shoplazza app extension create --type checkout --name my-checkout
149
+ shoplazza app extension create --type theme --name my-theme --theme-type basic
150
+ shoplazza app extension create --type function --name my-fn
279
151
 
152
+ # 3. Local development (dev server + HMR) — store comes from the active app config
153
+ shoplazza app dev
280
154
 
281
- ### switch
155
+ # 4. Deploy all extensions
156
+ shoplazza app deploy
282
157
 
283
- ```terminal
284
- $ shoplazza switch --store developer.myshoplaza.com
158
+ # 5. View deployed versions
159
+ shoplazza app versions
285
160
  ```
286
161
 
287
- > Switches between stores without logging out and logging in again.
162
+ <details>
163
+ <summary>Additional app commands</summary>
288
164
 
289
- ### store
165
+ ```bash
166
+ shoplazza app list # List apps in your account
167
+ shoplazza app info # Print app and extension info
168
+ shoplazza app config use --config alt.toml # Switch active app config
169
+ shoplazza app config link --client-id <id> # Link an existing app
290
170
 
291
- ```terminal
292
- $ shoplazza store
171
+ # Function extensions (compile/release individually)
172
+ shoplazza app function compile --extension my-fn
173
+ shoplazza app function release --extension my-fn
174
+ shoplazza app function list
293
175
  ```
294
176
 
295
- > Displays the store that you're currently connected to.
177
+ </details>
296
178
 
297
- ### version
179
+ ### Theme Development
298
180
 
299
- ```terminal
300
- $ shoplazza version
301
- ```
181
+ The CLI provides a complete theme development workflow with live reload.
302
182
 
303
- > Displays the version of Shoplazza CLI that you're running.
183
+ ```bash
184
+ # 1. Scaffold a new theme from the Nova-2023 template
185
+ shoplazza themes init --name my-theme
304
186
 
305
- ## Theme commands
187
+ # 2. Start the dev server (auto-creates a development theme, live reload)
188
+ cd my-theme
189
+ shoplazza themes serve
306
190
 
307
- ### init
191
+ # 3. Pull / push / package
192
+ shoplazza themes pull --theme-id <theme-id>
193
+ shoplazza themes push --theme-id <theme-id>
194
+ shoplazza themes package
308
195
 
309
- ```terminal
310
- $ shoplazza theme init [--name]
196
+ # 4. Upload as a preview
197
+ shoplazza themes share
311
198
  ```
312
199
 
313
- > Clones a Git repository to your local machine to use as the starting point for building a theme.
314
-
315
- ### serve
200
+ ## Three-Layer Command System
316
201
 
317
- ```terminal
318
- $ shoplazza theme serve [--theme]
319
- ```
202
+ The CLI provides three levels of granularity, covering everything from quick operations to fully custom API calls.
320
203
 
321
- > Uploads the current theme to the store that you're connected to, and returns the preview link.
204
+ ### 1. Shortcuts
322
205
 
323
- ### list
206
+ Prefixed with `+`, designed to be friendly for both humans and AI, with smart defaults and structured output.
324
207
 
325
- ```terminal
326
- $ shoplazza theme list
327
- ```
208
+ ```bash
209
+ # Products
210
+ shoplazza products +search --keyword "shirt"
211
+ shoplazza products +publish <product-id>
328
212
 
329
- > Lists the themes in your store, along with their IDs and statuses.
213
+ # Discounts automatic
214
+ shoplazza discounts +rebate --title "Summer Sale" --percentage 15 --min-amount 100
215
+ shoplazza discounts +flashsale --title "Flash Sale" --percentage 20 --product-ids "123,456"
330
216
 
331
- ### pull
217
+ # Discounts — code-based
218
+ shoplazza discounts +percent-code --code "SAVE20" --percentage 20
219
+ shoplazza discounts +bxgy-code --code "BUY2GET1" --buy-quantity 2 --get-quantity 1
332
220
 
333
- ```terminal
334
- $ shoplazza theme pull [--theme]
221
+ # Orders
222
+ shoplazza orders +ship <order-id>
335
223
  ```
336
224
 
337
- > Retrieves theme files from Shoplazza, if no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.
225
+ Run `shoplazza <domain> --help` to see all shortcuts for a domain.
338
226
 
339
- ### push
227
+ ### 2. API Commands
340
228
 
341
- ```terminal
342
- $ shoplazza theme push [--theme]
343
- ```
229
+ Auto-generated from OpenAPI metadata — commands mapped 1:1 to platform endpoints.
344
230
 
345
- > Uploads your local theme files to Shoplazza, overwriting the remote theme if specified, if no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.
231
+ ```bash
232
+ shoplazza products list
233
+ shoplazza products get <product-id>
234
+ shoplazza products create --data @product.json
346
235
 
347
- ### share
236
+ shoplazza discounts list
237
+ shoplazza discounts create-discount --data @discount.json
348
238
 
349
- ```terminal
350
- $ shoplazza theme share
239
+ # All domains: products, discounts, orders, customers, billing, shop, themes, webhook
240
+ shoplazza orders list
241
+ shoplazza customers list
351
242
  ```
352
243
 
353
- > Uploads your theme as a new, unpublished theme in your theme library. The command return a preview link that you can share with others.
244
+ ### 3. Raw API Calls
354
245
 
355
- ### publish
246
+ Call any Shoplazza Open Platform endpoint directly for full coverage.
356
247
 
357
- ```terminal
358
- $ shoplazza theme publish [--theme]
248
+ ```bash
249
+ shoplazza api rest GET /openapi/2022-01/products.json
250
+ shoplazza api rest POST /openapi/2022-01/products.json \
251
+ --data '{"product": {"title": "New Product", "status": "active"}}'
359
252
  ```
360
253
 
361
- > Publishes an unpublished theme from your theme library, if no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.
254
+ ## Advanced Usage
362
255
 
363
- ### package
256
+ ### Common Flags
364
257
 
365
- ```terminal
366
- $ shoplazza theme package
367
- ```
258
+ | Flag | Scope | Description |
259
+ |------|-------|-------------|
260
+ | `--format json\|pretty\|table` | All commands | Output format (default: `json`) |
261
+ | `--fields "f1,f2"` | Shortcut commands | Response field projection |
262
+ | `--dry-run` | API & shortcut commands | Preview request without executing |
263
+ | `--jq "expr"` / `-q` | API commands | Filter JSON output with jq expression |
368
264
 
369
- > Packages your local theme files into a ZIP file that can be uploaded to Shoplazza. The ZIP file uses the name theme_name-theme_version.zip, based on parameters in your `settings_schema.json` file.
265
+ ### Schema Introspection
370
266
 
371
- ### delete
267
+ Inspect any service's methods, parameters, required scopes, and response shape:
372
268
 
373
- ```terminal
374
- $ shoplazza theme delete [--theme]
269
+ ```bash
270
+ shoplazza schema # List all services
271
+ shoplazza schema products # Inspect a service
272
+ shoplazza schema products.list # Inspect a method
375
273
  ```
376
274
 
377
- > Deletes a theme from your store, if no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.
275
+ ### Environment Variables
378
276
 
379
- ## app
277
+ | Variable | Description |
278
+ |----------|-------------|
279
+ | `SHOPLAZZA_UAT` | User Access Token for non-interactive login (equivalent to `--uat`) |
280
+ | `SHOPLAZZA_CLI_AUTH_BASE_URL` | Override auth base URL (default: `https://partners.shoplazza.com`) |
380
281
 
381
- ### init
282
+ ## Security & Risk Warnings
382
283
 
383
- ```terminal
384
- $ shoplazza app init
385
- ```
284
+ > Read Before Use
386
285
 
387
- > Initialize a new Shoplazza app project.
286
+ - **AI Agent Automation Risk** When AI Agents operate the CLI on your behalf, all API calls carry real consequences (creating products, modifying orders, deleting discounts). Always review the Agent's proposed commands before execution.
287
+ - **Credential Safety** — Tokens are stored in the OS-native keychain. Never share your UAT or store tokens. Rotate credentials immediately if you suspect exposure.
288
+ - **Scope Control** — Use `--scope` or `--domain` to limit the permissions granted during login. Grant only the scopes your workflow requires.
388
289
 
389
- ### generate
290
+ ## Contributing
390
291
 
391
- ```terminal
392
- $ shoplazza app generate extension
393
- ```
292
+ Contributions are welcome! If you find a bug or have a feature suggestion, please open an Issue or Pull Request on [GitHub](https://github.com/Shoplazza/shoplazza-cli).
394
293
 
395
- > create a new extension.
294
+ For major changes, please open an issue first to discuss the approach.
396
295
 
397
- ### dev
296
+ ### Local Setup
398
297
 
399
- ```terminal
400
- $ shoplazza app dev
401
- ```
298
+ ```bash
299
+ # Build
300
+ make build
402
301
 
403
- > choose a store to test your extension app.
302
+ # Run tests
303
+ make test
404
304
 
405
- ### deploy
305
+ # Lint (pre-PR)
306
+ go mod tidy
307
+ go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.1.6 run --new-from-rev=origin/main
406
308
 
407
- ```terminal
408
- $ shoplazza app deploy
309
+ # Install locally
310
+ make install
409
311
  ```
410
312
 
411
- > deploy your extension app.
412
-
413
- ## Theme Directory
313
+ Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`, `ci:`.
414
314
 
415
- You can run certain theme commands, such as shoplazza theme serve, only if the directory you're using matches the default Shoplazza theme directory structure. This structure represents a buildless theme, or a theme that has already gone through any necessary file transformations. If you use build tools to generate theme files, then you might need to run commands from the directory where the generated files are stored.
416
-
417
- The default Shoplazza theme directory structure is as follows:
418
-
419
- ```terminal
420
- └── project
421
- ├── assets
422
- ├── config
423
- ├── layout
424
- ├── locales
425
- ├── sections
426
- ├── snippets
427
- └── templates
428
- ```
315
+ ## License
429
316
 
430
- ## Support(OS Terminals)
431
-
432
- You should expect mostly good support for the CLI below. This does not mean we won't look at issues found on other command line - feel free to report any!
433
-
434
- - Mac OS
435
- - Terminal.app
436
- - iTerm
437
- - Windows (Known issues):
438
- - ConEmu
439
- - cmd.exe
440
- - Powershell
441
- - Cygwin
442
- - Linux (Ubuntu, openSUSE, Arch Linux, etc):
443
- - gnome-terminal (Terminal GNOME)
444
- - konsole
317
+ This project is licensed under the **MIT License**.
318
+ When running, it calls the Shoplazza Open Platform APIs. Usage of these APIs is subject to the [Shoplazza Developer Agreement](https://www.shoplazza.dev/).