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.
- package/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +206 -332
- package/README.zh.md +318 -0
- package/package.json +24 -70
- package/scripts/install.js +144 -0
- package/scripts/jsbuild/dev/index.js +123 -0
- package/scripts/jsbuild/index.js +77 -0
- package/{lib/checkout/build → scripts/jsbuild}/plugin/vite-plugin-add-extension-id.js +4 -2
- package/scripts/jsbuild/vite.config.js +35 -0
- package/scripts/run.js +29 -0
- package/.editorconfig +0 -28
- package/.prettierrc +0 -9
- package/bin/shoplazza +0 -137
- package/fixtures/assets/blog.scss +0 -74
- package/fixtures/assets/cart_modal.scss +0 -450
- package/fixtures/assets/collection_detail.js +0 -234
- package/fixtures/assets/collection_detail.scss +0 -345
- package/fixtures/assets/collection_list.scss +0 -11
- package/fixtures/assets/collection_slider.scss +0 -169
- package/fixtures/assets/feature_columns.scss +0 -26
- package/fixtures/assets/feature_product.scss +0 -109
- package/fixtures/assets/footer.js +0 -58
- package/fixtures/assets/footer.scss +0 -337
- package/fixtures/assets/four_images.scss +0 -29
- package/fixtures/assets/gallery.scss +0 -55
- package/fixtures/assets/header.js +0 -178
- package/fixtures/assets/header.scss +0 -929
- package/fixtures/assets/image_text.scss +0 -72
- package/fixtures/assets/logo_bar.scss +0 -11
- package/fixtures/assets/newsletter.scss +0 -90
- package/fixtures/assets/not_found.scss +0 -39
- package/fixtures/assets/page_detail.scss +0 -16
- package/fixtures/assets/pagination.scss +0 -150
- package/fixtures/assets/postcss.config.js +0 -6
- package/fixtures/assets/product_description.scss +0 -88
- package/fixtures/assets/product_detail.js +0 -634
- package/fixtures/assets/product_detail.scss +0 -1106
- package/fixtures/assets/relative_product.scss +0 -45
- package/fixtures/assets/reviews.scss +0 -70
- package/fixtures/assets/rich_text.scss +0 -71
- package/fixtures/assets/search.js +0 -87
- package/fixtures/assets/search.scss +0 -67
- package/fixtures/assets/slide.scss +0 -51
- package/fixtures/assets/slider.scss +0 -141
- package/fixtures/assets/test.scss +0 -1
- package/fixtures/assets/theme.css +0 -976
- package/fixtures/assets/theme.scss +0 -1100
- package/fixtures/assets/three_images.scss +0 -20
- package/fixtures/assets/tools.scss +0 -23
- package/fixtures/assets/two_images.scss +0 -24
- package/fixtures/assets/video.scss +0 -45
- package/fixtures/assets/video_text.scss +0 -63
- package/fixtures/config/settings_data.json +0 -107
- package/fixtures/config/settings_schema.json +0 -690
- package/fixtures/layout/theme.liquid +0 -76
- package/fixtures/locales/ar-SA.json +0 -212
- package/fixtures/locales/de-DE.json +0 -290
- package/fixtures/locales/en-US.json +0 -290
- package/fixtures/locales/es-ES.json +0 -290
- package/fixtures/locales/fr-FR.json +0 -290
- package/fixtures/locales/id-ID.json +0 -212
- package/fixtures/locales/it-IT.json +0 -212
- package/fixtures/locales/ja-JP.json +0 -289
- package/fixtures/locales/ko-KR.json +0 -290
- package/fixtures/locales/nl-NL.json +0 -290
- package/fixtures/locales/pl-PL.json +0 -290
- package/fixtures/locales/pt-PT.json +0 -212
- package/fixtures/locales/ru-RU.json +0 -212
- package/fixtures/locales/th-TH.json +0 -212
- package/fixtures/locales/zh-CN.json +0 -290
- package/fixtures/locales/zh-TW.json +0 -290
- package/fixtures/sections/apps.liquid +0 -47
- package/fixtures/sections/blog.liquid +0 -137
- package/fixtures/sections/collection_desc.liquid +0 -34
- package/fixtures/sections/collection_detail.liquid +0 -436
- package/fixtures/sections/collection_image.liquid +0 -104
- package/fixtures/sections/collection_list.liquid +0 -161
- package/fixtures/sections/collection_name.liquid +0 -34
- package/fixtures/sections/collection_slider.liquid +0 -330
- package/fixtures/sections/feature_columns.liquid +0 -275
- package/fixtures/sections/feature_product.liquid +0 -227
- package/fixtures/sections/footer.liquid +0 -488
- package/fixtures/sections/four_images.liquid +0 -160
- package/fixtures/sections/gallery.liquid +0 -258
- package/fixtures/sections/header.liquid +0 -1157
- package/fixtures/sections/html.liquid +0 -40
- package/fixtures/sections/image_text.liquid +0 -350
- package/fixtures/sections/instagram_plus.liquid +0 -393
- package/fixtures/sections/logo_bar.liquid +0 -183
- package/fixtures/sections/newsletter.liquid +0 -225
- package/fixtures/sections/not_found.liquid +0 -39
- package/fixtures/sections/overlay_image.liquid +0 -648
- package/fixtures/sections/page_detail.liquid +0 -39
- package/fixtures/sections/photo_collection.liquid +0 -433
- package/fixtures/sections/product_description.liquid +0 -208
- package/fixtures/sections/product_detail.liquid +0 -611
- package/fixtures/sections/products.liquid +0 -216
- package/fixtures/sections/relative_product.liquid +0 -121
- package/fixtures/sections/reviews.liquid +0 -115
- package/fixtures/sections/rich_text.liquid +0 -157
- package/fixtures/sections/search.liquid +0 -163
- package/fixtures/sections/slide.liquid +0 -719
- package/fixtures/sections/three_images.liquid +0 -157
- package/fixtures/sections/two_images.liquid +0 -125
- package/fixtures/sections/video.liquid +0 -95
- package/fixtures/sections/video_text.liquid +0 -128
- package/fixtures/snippets/bgset.liquid +0 -21
- package/fixtures/snippets/card_title.liquid +0 -8
- package/fixtures/snippets/cart_modal.liquid +0 -74
- package/fixtures/snippets/collection.liquid +0 -77
- package/fixtures/snippets/collection_filter_modal.liquid +0 -56
- package/fixtures/snippets/default_image_4.liquid +0 -14
- package/fixtures/snippets/default_image_6.liquid +0 -18
- package/fixtures/snippets/default_image_8.liquid +0 -23
- package/fixtures/snippets/four_images_item.liquid +0 -8
- package/fixtures/snippets/header_ads.liquid +0 -95
- package/fixtures/snippets/hero_image.liquid +0 -94
- package/fixtures/snippets/icon_video_play_large.liquid +0 -1
- package/fixtures/snippets/icon_video_play_medium.liquid +0 -4
- package/fixtures/snippets/icon_video_play_small.liquid +0 -4
- package/fixtures/snippets/lazyimg.liquid +0 -22
- package/fixtures/snippets/lazyimg_art.liquid +0 -36
- package/fixtures/snippets/lazysizes.liquid +0 -41
- package/fixtures/snippets/link.liquid +0 -2
- package/fixtures/snippets/pagination.liquid +0 -48
- package/fixtures/snippets/product.liquid +0 -126
- package/fixtures/snippets/product_art_tpl.liquid +0 -152
- package/fixtures/snippets/product_info_body.liquid +0 -337
- package/fixtures/snippets/product_info_tpl.liquid +0 -423
- package/fixtures/snippets/product_label.liquid +0 -46
- package/fixtures/snippets/settings.liquid +0 -295
- package/fixtures/snippets/social-meta-tags.liquid +0 -106
- package/fixtures/snippets/video_html.liquid +0 -11
- package/fixtures/snippets/video_source.liquid +0 -98
- package/fixtures/snippets/video_thumb_icon.liquid +0 -2
- package/fixtures/templates/404.liquid +0 -1
- package/fixtures/templates/collection.liquid +0 -92
- package/fixtures/templates/index.liquid +0 -206
- package/fixtures/templates/page.liquid +0 -1
- package/fixtures/templates/product.liquid +0 -99
- package/fixtures/templates/search.liquid +0 -1
- package/jest.config.js +0 -192
- package/lib/__tests__/log.test.js +0 -15
- package/lib/__tests__/utils.test.js +0 -69
- package/lib/app/api/cli.js +0 -225
- package/lib/app/api/openapi.js +0 -121
- package/lib/app/api/partnerOpenapi.js +0 -104
- package/lib/app/bin/index.js +0 -20
- package/lib/app/bin/javy/javy-arm-linux-v5.0.1 +0 -0
- package/lib/app/bin/javy/javy-arm-macos-v5.0.1 +0 -0
- package/lib/app/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
- package/lib/app/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
- package/lib/app/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
- package/lib/app/commands/config/actions/link.js +0 -189
- package/lib/app/commands/config/actions/use.js +0 -40
- package/lib/app/commands/config/index.js +0 -25
- package/lib/app/commands/config/link.js +0 -11
- package/lib/app/commands/config/use.js +0 -11
- package/lib/app/commands/deploy/actions/deploy.js +0 -196
- package/lib/app/commands/deploy/index.js +0 -11
- package/lib/app/commands/dev/actions/dev.js +0 -206
- package/lib/app/commands/dev/index.js +0 -11
- package/lib/app/commands/generate/actions/extension.js +0 -97
- package/lib/app/commands/generate/actions/generateCheckout.js +0 -58
- package/lib/app/commands/generate/actions/generateFunction.js +0 -56
- package/lib/app/commands/generate/actions/generateTheme.js +0 -128
- package/lib/app/commands/generate/extension.js +0 -11
- package/lib/app/commands/generate/index.js +0 -22
- package/lib/app/commands/index.js +0 -82
- package/lib/app/commands/info/actions/info.js +0 -168
- package/lib/app/commands/info/index.js +0 -11
- package/lib/app/commands/init/actions/init.js +0 -176
- package/lib/app/commands/init/index.js +0 -14
- package/lib/app/commands/versions/actions/list.js +0 -210
- package/lib/app/commands/versions/index.js +0 -22
- package/lib/app/commands/versions/list.js +0 -14
- package/lib/app/constant/code.js +0 -7
- package/lib/app/constant/color.js +0 -18
- package/lib/app/constant/extension.js +0 -16
- package/lib/app/constant/host.js +0 -23
- package/lib/app/constant/sso.js +0 -7
- package/lib/app/index.js +0 -8
- package/lib/app/services/auth/config.js +0 -33
- package/lib/app/services/auth/index.js +0 -9
- package/lib/app/services/auth/oauth-server.js +0 -70
- package/lib/app/services/auth/partner-token.js +0 -45
- package/lib/app/services/auth/sso-token.js +0 -69
- package/lib/app/services/auth/store-token.js +0 -100
- package/lib/app/services/auth/url-builder.js +0 -23
- package/lib/app/services/config/index.js +0 -41
- package/lib/app/services/devServer/app.js +0 -76
- package/lib/app/services/devServer/index.js +0 -103
- package/lib/app/services/devServer/middleware/hmacValidatorMiddleWare.js +0 -20
- package/lib/app/services/devServer/middleware/index.js +0 -5
- package/lib/app/services/devServer/tunnel/index.js +0 -43
- package/lib/app/services/devServer/tunnel/providers/cloudflare.js +0 -364
- package/lib/app/services/devServer/tunnel/providers/ngrok.js +0 -70
- package/lib/app/services/devServer/utils/index.js +0 -5
- package/lib/app/services/devServer/utils/secureCompare.js +0 -5
- package/lib/app/services/devServer/views/app.ejs +0 -133
- package/lib/app/services/extension-build/buildCheckout.js +0 -47
- package/lib/app/services/extension-build/buildFunction.js +0 -57
- package/lib/app/services/extension-build/buildTheme.js +0 -100
- package/lib/app/services/extension-build/index.js +0 -23
- package/lib/app/services/extension-build/plugins/vite-plugin-add-extension-id.js +0 -26
- package/lib/app/services/extension-diff/index.js +0 -132
- package/lib/app/services/extension-upsert/index.js +0 -21
- package/lib/app/services/extension-upsert/upsertCheckout.js +0 -44
- package/lib/app/services/extension-upsert/upsertFunction.js +0 -52
- package/lib/app/services/extension-upsert/upsertTheme.js +0 -113
- package/lib/app/services/oss/index.js +0 -45
- package/lib/app/services/partner/index.js +0 -52
- package/lib/app/store/base-store.js +0 -37
- package/lib/app/store/config-store.js +0 -55
- package/lib/app/store/config.js +0 -21
- package/lib/app/store/index.js +0 -14
- package/lib/app/store/install-store.js +0 -41
- package/lib/app/store/sso-store.js +0 -55
- package/lib/app/utils/asyncPool.js +0 -42
- package/lib/app/utils/debug/index.js +0 -16
- package/lib/app/utils/env.js +0 -24
- package/lib/app/utils/error.js +0 -20
- package/lib/app/utils/git.js +0 -20
- package/lib/app/utils/json.js +0 -27
- package/lib/app/utils/path.js +0 -33
- package/lib/app/utils/platform.js +0 -37
- package/lib/app/utils/request/cli.js +0 -72
- package/lib/app/utils/request/debug.js +0 -13
- package/lib/app/utils/request/openapi.js +0 -67
- package/lib/app/utils/request/partnerOpenapi.js +0 -47
- package/lib/app/utils/toml.js +0 -56
- package/lib/app/utils/views/message.js +0 -68
- package/lib/app/utils/views/select.js +0 -36
- package/lib/app/utils/withTempDir.js +0 -55
- package/lib/auth/__mocks__/getCode.js +0 -7
- package/lib/auth/__mocks__/index.js +0 -0
- package/lib/auth/child.js +0 -23
- package/lib/auth/getCode.js +0 -39
- package/lib/auth/index.js +0 -134
- package/lib/check.js +0 -28
- package/lib/checkout/api.js +0 -164
- package/lib/checkout/build/plugin/vite-plugin-transform-extension-html.js +0 -207
- package/lib/checkout/build/vite.config.js +0 -34
- package/lib/checkout/build.js +0 -38
- package/lib/checkout/config.js +0 -97
- package/lib/checkout/create.js +0 -132
- package/lib/checkout/delete.js +0 -26
- package/lib/checkout/deploy.js +0 -59
- package/lib/checkout/dev/index.js +0 -143
- package/lib/checkout/fields.js +0 -29
- package/lib/checkout/index.js +0 -63
- package/lib/checkout/preview.js +0 -52
- package/lib/checkout/pull.js +0 -22
- package/lib/checkout/push.js +0 -141
- package/lib/checkout/template/README.md +0 -34
- package/lib/checkout/template/_gitignore +0 -4
- package/lib/checkout/template/extension.config.js +0 -4
- package/lib/checkout/template/extensions/extension-template/extension.json +0 -10
- package/lib/checkout/template/extensions/extension-template/src/content.html +0 -3
- package/lib/checkout/template/extensions/extension-template/src/index.html +0 -5
- package/lib/checkout/template/extensions/extension-template/src/index.js +0 -11
- package/lib/checkout/template/extensions/extension-template/src/script.html +0 -3
- package/lib/checkout/template/extensions/extension-template/src/style.html +0 -3
- package/lib/checkout/template/package.json +0 -17
- package/lib/checkout/undeploy.js +0 -40
- package/lib/checkout/util.js +0 -201
- package/lib/checkout/verify.js +0 -16
- package/lib/checkout/version.js +0 -7
- package/lib/commands/__tests__/login.test.js +0 -77
- package/lib/commands/__tests__/logout.test.js +0 -29
- package/lib/commands/__tests__/store.test.js +0 -44
- package/lib/commands/__tests__/switch.test.js +0 -45
- package/lib/commands/login.js +0 -120
- package/lib/commands/logout.js +0 -23
- package/lib/commands/store.js +0 -14
- package/lib/commands/switch.js +0 -52
- package/lib/commands/theme/__tests__/delete.test.js +0 -49
- package/lib/commands/theme/__tests__/init.test.js +0 -21
- package/lib/commands/theme/__tests__/list.test.js +0 -80
- package/lib/commands/theme/__tests__/package.test.js +0 -17
- package/lib/commands/theme/__tests__/publish.test.js +0 -61
- package/lib/commands/theme/__tests__/pull.test.js +0 -69
- package/lib/commands/theme/__tests__/push.test.js +0 -63
- package/lib/commands/theme/__tests__/serve.test.js +0 -107
- package/lib/commands/theme/delete.js +0 -64
- package/lib/commands/theme/init.js +0 -51
- package/lib/commands/theme/list.js +0 -28
- package/lib/commands/theme/package.js +0 -37
- package/lib/commands/theme/publish.js +0 -56
- package/lib/commands/theme/pull.js +0 -62
- package/lib/commands/theme/push.js +0 -106
- package/lib/commands/theme/serve.js +0 -153
- package/lib/commands/theme/share.js +0 -20
- package/lib/commands/version.js +0 -6
- package/lib/common/constants.js +0 -24
- package/lib/common/db/partner.js +0 -91
- package/lib/common/inquirers/choose-app.js +0 -79
- package/lib/common/inquirers/choose-partner.js +0 -74
- package/lib/common/log.js +0 -15
- package/lib/common/login.js +0 -125
- package/lib/common/logout.js +0 -16
- package/lib/db/__mocks__/index.js +0 -9
- package/lib/db/__tests__/analytics.test.js +0 -19
- package/lib/db/__tests__/user.test.js +0 -20
- package/lib/db/analytics.js +0 -48
- package/lib/db/index.js +0 -9
- package/lib/db/user.js +0 -71
- package/lib/function/bin/index.js +0 -20
- package/lib/function/bin/javy/javy-arm-linux-v5.0.1 +0 -0
- package/lib/function/bin/javy/javy-arm-macos-v5.0.1 +0 -0
- package/lib/function/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
- package/lib/function/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
- package/lib/function/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
- package/lib/function/commands/compile.js +0 -43
- package/lib/function/commands/create.js +0 -77
- package/lib/function/commands/list.js +0 -18
- package/lib/function/commands/release.js +0 -69
- package/lib/function/index.js +0 -24
- package/lib/function/template/js/README.md +0 -37
- package/lib/function/template/js/_gitignore +0 -4
- package/lib/function/template/js/extension.config.json +0 -5
- package/lib/function/template/js/package.json +0 -17
- package/lib/function/template/js/src/index.js +0 -64
- package/lib/function/utils.js +0 -29
- package/lib/log.js +0 -13
- package/lib/openAPI/__mocks__/index.js +0 -20
- package/lib/openAPI/api.js +0 -76
- package/lib/openAPI/index.js +0 -56
- package/lib/oss.js +0 -102
- package/lib/partner-api/axios.js +0 -67
- package/lib/partner-api/index.js +0 -79
- package/lib/report.js +0 -37
- package/lib/theme-extension/api/index.js +0 -96
- package/lib/theme-extension/commands/build.js +0 -114
- package/lib/theme-extension/commands/connect.js +0 -73
- package/lib/theme-extension/commands/create.js +0 -105
- package/lib/theme-extension/commands/deploy.js +0 -56
- package/lib/theme-extension/commands/list.js +0 -35
- package/lib/theme-extension/commands/release.js +0 -59
- package/lib/theme-extension/commands/serve.js +0 -179
- package/lib/theme-extension/commands/versions.js +0 -55
- package/lib/theme-extension/index.js +0 -29
- package/lib/theme-extension/template/basic-app/README.md +0 -125
- package/lib/theme-extension/template/basic-app/extension.config.json +0 -4
- package/lib/theme-extension/template/basic-app/package.json +0 -18
- package/lib/theme-extension/template/basic-app/theme-app/assets/index.css +0 -4
- package/lib/theme-extension/template/basic-app/theme-app/assets-manifest.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/blocks/index.liquid +0 -16
- package/lib/theme-extension/template/basic-app/theme-app/locales/ar-SA.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/de-DE.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/en-US.json +0 -6
- package/lib/theme-extension/template/basic-app/theme-app/locales/es-ES.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/fr-FR.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/id-ID.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/it-IT.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/ja-JP.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/ko-KR.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/nl-NL.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/pl-PL.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/pt-PT.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/ru-RU.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/th-TH.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/locales/zh-CN.json +0 -6
- package/lib/theme-extension/template/basic-app/theme-app/locales/zh-TW.json +0 -1
- package/lib/theme-extension/template/basic-app/theme-app/snippets/index.liquid +0 -8
- package/lib/theme-extension/template/embed-app/README.md +0 -125
- package/lib/theme-extension/template/embed-app/extension.config.json +0 -4
- package/lib/theme-extension/template/embed-app/package.json +0 -18
- package/lib/theme-extension/template/embed-app/theme-app/assets-manifest.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/blocks/index.liquid +0 -18
- package/lib/theme-extension/template/embed-app/theme-app/locales/ar-SA.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/de-DE.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/en-US.json +0 -6
- package/lib/theme-extension/template/embed-app/theme-app/locales/es-ES.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/fr-FR.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/id-ID.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/it-IT.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/ja-JP.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/ko-KR.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/nl-NL.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/pl-PL.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/pt-PT.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/ru-RU.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/th-TH.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/locales/zh-CN.json +0 -6
- package/lib/theme-extension/template/embed-app/theme-app/locales/zh-TW.json +0 -1
- package/lib/theme-extension/template/embed-app/theme-app/snippets/index.liquid +0 -8
- package/lib/theme-extension/template/embed-app/theme-app/snippets/index_css.liquid +0 -6
- package/lib/theme-extension/utils/config.js +0 -32
- package/lib/theme-extension/utils/index.js +0 -213
- package/lib/tracing.js +0 -50
- package/lib/utils/config.js +0 -12
- package/lib/utils/console.js +0 -33
- package/lib/utils/env.js +0 -17
- package/lib/utils/file.js +0 -48
- package/lib/utils/platform.js +0 -37
- package/lib/utils/utils.js +0 -165
- /package/{lib/checkout → scripts/jsbuild}/dev/client.js +0 -0
- /package/{lib/app/services/extension-build/plugins → scripts/jsbuild/plugin}/vite-plugin-transform-extension-html.js +0 -0
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const fs = require('fs-extra');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const init = require('../init');
|
|
4
|
-
const execa = require('execa');
|
|
5
|
-
|
|
6
|
-
jest.mock('execa', () => jest.fn());
|
|
7
|
-
|
|
8
|
-
describe('theme init', () => {
|
|
9
|
-
it('clone repo', async () => {
|
|
10
|
-
jest.setTimeout(20 * 1000);
|
|
11
|
-
if (fs.existsSync(path.join(process.cwd(), 'test'))) {
|
|
12
|
-
fs.rmSync(path.join(process.cwd(), 'test'), { recursive: true });
|
|
13
|
-
}
|
|
14
|
-
expect(fs.existsSync(path.join(process.cwd(), 'test'))).toBe(false);
|
|
15
|
-
console.log = jest.fn;
|
|
16
|
-
await init({ name: 'test' });
|
|
17
|
-
expect(execa).toHaveBeenCalledWith('git', ['clone', 'https://github.com/Shoplazza/LifeStyle', 'test']);
|
|
18
|
-
expect(fs.existsSync(path.join(process.cwd(), 'test'))).toBe(true);
|
|
19
|
-
fs.rmSync(path.join(process.cwd(), 'test'), { recursive: true });
|
|
20
|
-
});
|
|
21
|
-
});
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const MockAdapter = require('axios-mock-adapter');
|
|
3
|
-
const listCommand = require('../list');
|
|
4
|
-
const openAPI = require('../../../openAPI');
|
|
5
|
-
const { set, empty } = require('../../../db/user');
|
|
6
|
-
|
|
7
|
-
jest.mock('ora', () => () => ({
|
|
8
|
-
start: () => ({
|
|
9
|
-
stop: () => {}
|
|
10
|
-
})
|
|
11
|
-
}));
|
|
12
|
-
jest.mock('../../../db');
|
|
13
|
-
jest.mock('../../../openAPI/index');
|
|
14
|
-
|
|
15
|
-
describe('theme list', () => {
|
|
16
|
-
let mock;
|
|
17
|
-
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
set({
|
|
20
|
-
store_domain: 'developer.myshoplaza.com'
|
|
21
|
-
});
|
|
22
|
-
mock = new MockAdapter(openAPI);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
afterEach(() => {
|
|
26
|
-
mock.reset();
|
|
27
|
-
empty();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('list info', async () => {
|
|
31
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes`).replyOnce(200, {
|
|
32
|
-
data: {
|
|
33
|
-
themes: [
|
|
34
|
-
{
|
|
35
|
-
id: 'theme_id1',
|
|
36
|
-
name: 'theme1'
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/default-theme`).replyOnce(200, {
|
|
42
|
-
data: {
|
|
43
|
-
id: 'theme_id',
|
|
44
|
-
name: 'default_theme'
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
console.log = jest.fn();
|
|
49
|
-
await listCommand();
|
|
50
|
-
expect(console.log.mock.calls[0][0]).toBe(
|
|
51
|
-
`${chalk.yellow('⭑')} List of ${chalk.green('developer.myshoplaza.com')} themes:`
|
|
52
|
-
);
|
|
53
|
-
expect(console.log.mock.calls[1][0]).toBe(
|
|
54
|
-
[
|
|
55
|
-
{
|
|
56
|
-
id: 'theme_id',
|
|
57
|
-
name: 'default_theme'
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
id: 'theme_id1',
|
|
61
|
-
name: 'theme1'
|
|
62
|
-
}
|
|
63
|
-
].reduce(
|
|
64
|
-
(acc, theme) =>
|
|
65
|
-
(acc += `${theme.name} (${chalk.green(theme.id)}) ${
|
|
66
|
-
theme.id === 'theme_id' ? chalk.green('[live]') : chalk.yellow('[unpublished]')
|
|
67
|
-
}\n`),
|
|
68
|
-
''
|
|
69
|
-
)
|
|
70
|
-
);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('fetch failed', async () => {
|
|
74
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/default-theme`).replyOnce(500);
|
|
75
|
-
|
|
76
|
-
console.log = jest.fn();
|
|
77
|
-
await listCommand();
|
|
78
|
-
expect(console.log.mock.calls[0][0]).toBe(chalk.red(`✗ Failed to get theme list`));
|
|
79
|
-
});
|
|
80
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const fs = require('fs-extra');
|
|
4
|
-
const { packageCommand } = require('../package');
|
|
5
|
-
const { fstat } = require('fs');
|
|
6
|
-
|
|
7
|
-
describe('theme package', () => {
|
|
8
|
-
it('zip theme', async () => {
|
|
9
|
-
process.chdir(path.join(process.cwd(), '/fixtures'));
|
|
10
|
-
console.log = jest.fn();
|
|
11
|
-
await packageCommand();
|
|
12
|
-
expect(console.log.mock.calls[0][0]).toBe(`${chalk.green('✓')} Theme packaged in TestLifeStyle-1.0.zip`);
|
|
13
|
-
expect(fs.existsSync(path.join(process.cwd(), 'TestLifeStyle-1.0.zip'))).toBe(true);
|
|
14
|
-
fs.rmSync(path.join(process.cwd(), 'TestLifeStyle-1.0.zip'));
|
|
15
|
-
process.chdir(path.join(process.cwd(), '../'));
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const MockAdapter = require('axios-mock-adapter');
|
|
4
|
-
const publishCommand = require('../publish');
|
|
5
|
-
const openAPI = require('../../../openAPI');
|
|
6
|
-
const { set, empty } = require('../../../db/user');
|
|
7
|
-
|
|
8
|
-
jest.mock('inquirer', () => ({
|
|
9
|
-
prompt: () => Promise.resolve({ confirm: 'Yes' })
|
|
10
|
-
}));
|
|
11
|
-
jest.mock('../../../db');
|
|
12
|
-
jest.mock('../../../openAPI/index');
|
|
13
|
-
|
|
14
|
-
describe('theme publish', () => {
|
|
15
|
-
let mock;
|
|
16
|
-
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
set({
|
|
19
|
-
store_domain: 'developer.myshoplaza.com'
|
|
20
|
-
});
|
|
21
|
-
mock = new MockAdapter(openAPI);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
afterEach(() => {
|
|
25
|
-
mock.reset();
|
|
26
|
-
empty();
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('publish success', async () => {
|
|
30
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
|
|
31
|
-
data: { name: 'TestLifeStyle', merchant_theme_id: 'merchant_theme_id' }
|
|
32
|
-
});
|
|
33
|
-
mock.onPatch(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/publish`).replyOnce(200);
|
|
34
|
-
|
|
35
|
-
process.chdir(path.join(process.cwd(), '/fixtures'));
|
|
36
|
-
|
|
37
|
-
console.log = jest.fn();
|
|
38
|
-
await publishCommand({
|
|
39
|
-
theme: 'theme_id'
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
expect(console.log.mock.calls[0][0]).toBe(
|
|
43
|
-
chalk.green(`✓ Your theme is now live at https://developer.myshoplaza.com`)
|
|
44
|
-
);
|
|
45
|
-
process.chdir(path.join(process.cwd(), '../'));
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('publish failed', async () => {
|
|
49
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
|
|
50
|
-
data: { name: 'TestLifeStyle', merchant_theme_id: 'merchant_theme_id' }
|
|
51
|
-
});
|
|
52
|
-
mock.onPatch(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/publish`).replyOnce(500);
|
|
53
|
-
|
|
54
|
-
console.log = jest.fn();
|
|
55
|
-
await publishCommand({
|
|
56
|
-
theme: 'theme_id'
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
expect(console.log.mock.calls[0][0]).toBe(chalk.red(`✗ Failed to publish theme`));
|
|
60
|
-
});
|
|
61
|
-
});
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const fs = require('fs-extra');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const MockAdapter = require('axios-mock-adapter');
|
|
5
|
-
const AdmZip = require('adm-zip');
|
|
6
|
-
const pullCommand = require('../pull');
|
|
7
|
-
const openAPI = require('../../../openAPI');
|
|
8
|
-
const { set, empty } = require('../../../db/user');
|
|
9
|
-
|
|
10
|
-
jest.mock('ora', () => () => ({
|
|
11
|
-
start: () => ({
|
|
12
|
-
stop: () => {}
|
|
13
|
-
})
|
|
14
|
-
}));
|
|
15
|
-
jest.mock('../../../db');
|
|
16
|
-
jest.mock('../../../openAPI/index');
|
|
17
|
-
|
|
18
|
-
describe('theme pull', () => {
|
|
19
|
-
let mock;
|
|
20
|
-
|
|
21
|
-
beforeEach(() => {
|
|
22
|
-
set({
|
|
23
|
-
store_domain: 'developer.myshoplaza.com'
|
|
24
|
-
});
|
|
25
|
-
mock = new MockAdapter(openAPI);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
afterEach(() => {
|
|
29
|
-
mock.reset();
|
|
30
|
-
empty();
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('pull success', async () => {
|
|
34
|
-
const zip = new AdmZip();
|
|
35
|
-
zip.addLocalFolder(path.join(process.cwd(), '/fixtures'), 'test');
|
|
36
|
-
zip.writeZip(path.join(process.cwd(), 'test.zip'));
|
|
37
|
-
fs.ensureDirSync(path.join(process.cwd(), '/fixtures/theme'));
|
|
38
|
-
|
|
39
|
-
mock
|
|
40
|
-
.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/download`)
|
|
41
|
-
.replyOnce(200, fs.createReadStream(path.join(process.cwd(), 'test.zip')));
|
|
42
|
-
|
|
43
|
-
fs.rmSync(path.join(process.cwd(), 'test.zip'));
|
|
44
|
-
|
|
45
|
-
process.chdir(path.join(process.cwd(), '/fixtures/theme'));
|
|
46
|
-
|
|
47
|
-
console.log = jest.fn();
|
|
48
|
-
await pullCommand({
|
|
49
|
-
theme: 'theme_id'
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
expect(console.log.mock.calls[0][0]).toBe(chalk.green(`✓ Theme pulled successfully`));
|
|
53
|
-
expect(fs.existsSync(path.join(process.cwd(), '/config/settings_schema.json'))).toBe(true);
|
|
54
|
-
fs.rmSync(process.cwd(), { recursive: true });
|
|
55
|
-
|
|
56
|
-
process.chdir(path.join(process.cwd(), '../../'));
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('pull failed', async () => {
|
|
60
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/download`).replyOnce(500);
|
|
61
|
-
|
|
62
|
-
console.log = jest.fn();
|
|
63
|
-
await pullCommand({
|
|
64
|
-
theme: 'theme_id'
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
expect(console.log.mock.calls[0][0]).toBe(chalk.red(`✗ Failed to pull theme`));
|
|
68
|
-
});
|
|
69
|
-
});
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const MockAdapter = require('axios-mock-adapter');
|
|
4
|
-
const { pushCommand } = require('../push');
|
|
5
|
-
const openAPI = require('../../../openAPI');
|
|
6
|
-
const { set, empty } = require('../../../db/user');
|
|
7
|
-
|
|
8
|
-
jest.mock('ora', () => () => ({
|
|
9
|
-
start: () => ({
|
|
10
|
-
stop: () => {}
|
|
11
|
-
})
|
|
12
|
-
}));
|
|
13
|
-
jest.mock('../../../db');
|
|
14
|
-
jest.mock('../../../openAPI/index');
|
|
15
|
-
|
|
16
|
-
describe('theme push', () => {
|
|
17
|
-
let mock;
|
|
18
|
-
|
|
19
|
-
beforeEach(() => {
|
|
20
|
-
set({
|
|
21
|
-
store_domain: 'developer.myshoplaza.com'
|
|
22
|
-
});
|
|
23
|
-
mock = new MockAdapter(openAPI);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
afterEach(() => {
|
|
27
|
-
mock.reset();
|
|
28
|
-
empty();
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('push success', async () => {
|
|
32
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
|
|
33
|
-
data: { merchant_theme_id: 'merchant_theme_id' }
|
|
34
|
-
});
|
|
35
|
-
mock.onPost(`https://developer.myshoplaza.com/openapi/2020-07/themes/upload`).replyOnce(200, {
|
|
36
|
-
task: { task: { id: 1 } }
|
|
37
|
-
});
|
|
38
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/task/1`).replyOnce(200, {
|
|
39
|
-
task: { status: 1, info: JSON.stringify({ name: 'TestLifeStyle', theme_id: 'theme_id' }) }
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
process.chdir(path.join(process.cwd(), '/fixtures'));
|
|
43
|
-
|
|
44
|
-
console.log = jest.fn();
|
|
45
|
-
await pushCommand({
|
|
46
|
-
theme: 'theme_id'
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
expect(console.log.mock.calls[0][0]).toBe(chalk.green(`✓ The TestLifeStyle theme pushed successfully`));
|
|
50
|
-
process.chdir(path.join(process.cwd(), '../'));
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('push failed', async () => {
|
|
54
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(500);
|
|
55
|
-
|
|
56
|
-
console.log = jest.fn();
|
|
57
|
-
await pushCommand({
|
|
58
|
-
theme: 'theme_id'
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
expect(console.log.mock.calls[0][0]).toBe(chalk.red(`✗ Failed to push theme`));
|
|
62
|
-
});
|
|
63
|
-
});
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fs = require('fs-extra');
|
|
3
|
-
const chalk = require('chalk');
|
|
4
|
-
const MockAdapter = require('axios-mock-adapter');
|
|
5
|
-
const serve = require('../serve');
|
|
6
|
-
const openAPI = require('../../../openAPI');
|
|
7
|
-
const { set, empty } = require('../../../db/user');
|
|
8
|
-
|
|
9
|
-
jest.mock('ora', () => () => ({
|
|
10
|
-
start: () => ({
|
|
11
|
-
stop: () => {}
|
|
12
|
-
})
|
|
13
|
-
}));
|
|
14
|
-
jest.mock('../../../db');
|
|
15
|
-
jest.mock('../../../openAPI/index');
|
|
16
|
-
|
|
17
|
-
describe('theme serve', () => {
|
|
18
|
-
let mock;
|
|
19
|
-
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
set({
|
|
22
|
-
store_domain: 'developer.myshoplaza.com'
|
|
23
|
-
});
|
|
24
|
-
mock = new MockAdapter(openAPI);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
afterEach(() => {
|
|
28
|
-
mock.reset();
|
|
29
|
-
empty();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('start dev server', async () => {
|
|
33
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
|
|
34
|
-
data: { merchant_theme_id: 'merchant_theme_id' }
|
|
35
|
-
});
|
|
36
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/doctree`).replyOnce(200, {
|
|
37
|
-
assets: [
|
|
38
|
-
{
|
|
39
|
-
id: '7848a198-9809-4163-91c7-556e6960a0c6',
|
|
40
|
-
location: 'blog.css'
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: '651a9948-d4e5-4fe0-bcd7-e88349f6eeaf',
|
|
44
|
-
location: 'blog.scss'
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
config: [
|
|
48
|
-
{
|
|
49
|
-
id: '9e7a0930-6f6e-42f3-88ee-31e40bc28fdf',
|
|
50
|
-
location: 'settings_data.json'
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
id: '1799d8b6-82dd-4a42-bad4-32d11a98a924',
|
|
54
|
-
location: 'settings_schema.json'
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
});
|
|
58
|
-
mock.onPost(`https://developer.myshoplaza.com/openapi/2020-07/themes/upload`).replyOnce(200, {
|
|
59
|
-
task: { task: { id: 1 } }
|
|
60
|
-
});
|
|
61
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/task/1`).replyOnce(200, {
|
|
62
|
-
task: { status: 1, info: JSON.stringify({ name: 'TestLifeStyle', theme_id: 'theme_id' }) }
|
|
63
|
-
});
|
|
64
|
-
mock.onPost(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/doc`).replyOnce(200);
|
|
65
|
-
mock.onPatch(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/doc`).replyOnce(200);
|
|
66
|
-
mock.onDelete(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id/doc`).replyOnce(200);
|
|
67
|
-
|
|
68
|
-
process.chdir(path.join(process.cwd(), '/fixtures'));
|
|
69
|
-
console.log = jest.fn();
|
|
70
|
-
const watcher = await serve({ theme: 'theme_id' });
|
|
71
|
-
|
|
72
|
-
expect(console.log.mock.calls[0][0]).toBe(
|
|
73
|
-
`Please open this URL in your browser:
|
|
74
|
-
${chalk.green('https://developer.myshoplaza.com/?preview_theme_id=theme_id')}
|
|
75
|
-
|
|
76
|
-
Customize this theme in the Theme Editor, and use 'theme pull' to get the changes:
|
|
77
|
-
${chalk.green(`https://developer.myshoplaza.com/admin/smart_apps/editor?theme_id=theme_id`)}`.replace(
|
|
78
|
-
/^[^\S\n]+/gm,
|
|
79
|
-
''
|
|
80
|
-
)
|
|
81
|
-
);
|
|
82
|
-
expect(console.log.mock.calls[1][0]).toBe(`\nListening for file changes ...`);
|
|
83
|
-
|
|
84
|
-
fs.writeFileSync(path.join(process.cwd(), 'assets/test.scss'), 'body { color: red; }', 'utf8');
|
|
85
|
-
await new Promise((r) => setTimeout(r, 1000));
|
|
86
|
-
expect(console.log.mock.calls[2][0]).toBe(chalk.green(`[update]: ${path.join(process.cwd(), 'assets/test.scss')}`));
|
|
87
|
-
expect(console.log.mock.calls[3][0]).toBe(
|
|
88
|
-
chalk.cyan(`Updated, please refresh your browser, will continue listening for file changes ...`)
|
|
89
|
-
);
|
|
90
|
-
fs.rmSync(path.join(process.cwd(), 'assets/test.scss'));
|
|
91
|
-
await new Promise((r) => setTimeout(r, 1000));
|
|
92
|
-
expect(console.log.mock.calls[4][0]).toBe(chalk.green(`[remove]: ${path.join(process.cwd(), 'assets/test.scss')}`));
|
|
93
|
-
|
|
94
|
-
process.chdir(path.join(process.cwd(), '../'));
|
|
95
|
-
watcher.close();
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it('not a theme directory', async () => {
|
|
99
|
-
mock.onGet(`https://developer.myshoplaza.com/openapi/2020-07/themes/theme_id`).replyOnce(200, {
|
|
100
|
-
data: { merchant_theme_id: 'merchant_theme_id' }
|
|
101
|
-
});
|
|
102
|
-
await serve({ theme: 'theme_id' });
|
|
103
|
-
expect(console.log.mock.calls[0][0]).toBe(
|
|
104
|
-
chalk.red('✗ Provide a config/settings_schema.json to package your theme')
|
|
105
|
-
);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
const ora = require('ora');
|
|
2
|
-
const chalk = require('chalk');
|
|
3
|
-
const Sentry = require('@sentry/node');
|
|
4
|
-
const inquirer = require('inquirer');
|
|
5
|
-
const { getThemeDetail, getThemes, deleteTheme } = require('../../openAPI/api');
|
|
6
|
-
const { get } = require('../../db/user');
|
|
7
|
-
const log = require('../../log');
|
|
8
|
-
const { formatThemeList } = require('../../utils/utils');
|
|
9
|
-
|
|
10
|
-
const confirmAndDeleteTheme = async (themeName, themeId) => {
|
|
11
|
-
const answers = await inquirer.prompt([
|
|
12
|
-
{
|
|
13
|
-
name: 'confirm',
|
|
14
|
-
type: 'list',
|
|
15
|
-
message: `Are you sure you want to delete ${themeName} on ${get('store_domain')}? ${chalk.yellow(
|
|
16
|
-
'(Choose with ↑ ↓ ⏎)'
|
|
17
|
-
)}`,
|
|
18
|
-
choices: ['Yes', 'No']
|
|
19
|
-
}
|
|
20
|
-
]);
|
|
21
|
-
if (answers.confirm === 'Yes') {
|
|
22
|
-
try {
|
|
23
|
-
await deleteTheme(themeId);
|
|
24
|
-
log.info(chalk.green(`✓ ${themeName} (${themeId}) theme deleted`));
|
|
25
|
-
} catch (error) {
|
|
26
|
-
log.error(chalk.red(`✗ Failed to delete theme`));
|
|
27
|
-
Sentry.captureException(error);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
module.exports = async (options) => {
|
|
33
|
-
try {
|
|
34
|
-
if (options.theme) {
|
|
35
|
-
const { data } = await getThemeDetail(options.theme);
|
|
36
|
-
if (!data) {
|
|
37
|
-
log.error(chalk.red(`✗ Theme ${options.theme} does not exist`));
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
return confirmAndDeleteTheme(data.data.name, options.theme);
|
|
41
|
-
} else {
|
|
42
|
-
const storeDomain = get('store_domain');
|
|
43
|
-
const spinner = ora(chalk.cyan(`Fetching theme lists from ${storeDomain}`)).start();
|
|
44
|
-
const { data } = await getThemes();
|
|
45
|
-
spinner.stop();
|
|
46
|
-
inquirer
|
|
47
|
-
.prompt([
|
|
48
|
-
{
|
|
49
|
-
name: 'theme',
|
|
50
|
-
type: 'rawlist',
|
|
51
|
-
message: `Select a theme to delete ${chalk.cyan('(Choose with ↑ ↓ ⏎)')}`,
|
|
52
|
-
choices: formatThemeList(data.data.themes)
|
|
53
|
-
}
|
|
54
|
-
])
|
|
55
|
-
.then((answers) => {
|
|
56
|
-
const themeObj = data.data.themes.find((theme) => theme.id === answers.theme);
|
|
57
|
-
return confirmAndDeleteTheme(themeObj.name, answers.theme);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
} catch (error) {
|
|
61
|
-
log.error(chalk.red(`✗ Failed to delete theme`));
|
|
62
|
-
Sentry.captureException(error);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const process = require('process');
|
|
3
|
-
const fs = require('fs-extra');
|
|
4
|
-
const chalk = require('chalk');
|
|
5
|
-
const inquirer = require('inquirer');
|
|
6
|
-
const Sentry = require('@sentry/node');
|
|
7
|
-
const execa = require('execa');
|
|
8
|
-
const ora = require('ora');
|
|
9
|
-
const log = require('../../log');
|
|
10
|
-
|
|
11
|
-
const createDirAndCloneTheme = async (directory) => {
|
|
12
|
-
const themeDir = path.join(process.cwd(), directory);
|
|
13
|
-
if (fs.existsSync(themeDir)) {
|
|
14
|
-
log.error(chalk.red(`✗ Destination path ${directory} already exists and is not an empty directory.`));
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
fs.mkdirSync(themeDir);
|
|
18
|
-
const spinner = ora(chalk.cyan(`Cloning https://github.com/Shoplazza/Nova-2023 into ${directory}…`)).start();
|
|
19
|
-
await execa('git', ['clone', 'https://github.com/Shoplazza/Nova-2023', directory]);
|
|
20
|
-
fs.rmSync(path.join(process.cwd(), `${directory}/.git`), { recursive: true });
|
|
21
|
-
spinner.stop();
|
|
22
|
-
log.info(chalk.green(`✓ Cloned into ${directory}`));
|
|
23
|
-
log.info(`Please run ${chalk.green(`cd ${directory}`)}`);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
module.exports = async (options) => {
|
|
27
|
-
try {
|
|
28
|
-
if (options.name) {
|
|
29
|
-
await createDirAndCloneTheme(options.name);
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
inquirer
|
|
33
|
-
.prompt([
|
|
34
|
-
{
|
|
35
|
-
name: 'name',
|
|
36
|
-
type: 'input',
|
|
37
|
-
message: 'Theme directory name'
|
|
38
|
-
}
|
|
39
|
-
])
|
|
40
|
-
.then((answers) => {
|
|
41
|
-
if (answers.name) {
|
|
42
|
-
createDirAndCloneTheme(answers.name);
|
|
43
|
-
} else {
|
|
44
|
-
log.error(chalk.red(`✗ Please input theme directory name.`));
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
} catch (error) {
|
|
48
|
-
log.error(chalk.red(`✗ Failed to init theme`));
|
|
49
|
-
Sentry.captureException(error);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
const ora = require('ora');
|
|
2
|
-
const chalk = require('chalk');
|
|
3
|
-
const Sentry = require('@sentry/node');
|
|
4
|
-
const { get } = require('../../db/user');
|
|
5
|
-
const { getDefaultThemeDetail, getThemes } = require('../../openAPI/api');
|
|
6
|
-
const log = require('../../log');
|
|
7
|
-
|
|
8
|
-
module.exports = async () => {
|
|
9
|
-
try {
|
|
10
|
-
const storeDomain = get('store_domain');
|
|
11
|
-
const spinner = ora(chalk.cyan(`Fetching theme lists from ${storeDomain}`)).start();
|
|
12
|
-
const [themesRes, defaultThemeRes] = await Promise.all([getThemes(), getDefaultThemeDetail()]);
|
|
13
|
-
spinner.stop();
|
|
14
|
-
log.info(`${chalk.yellow('⭑')} List of ${chalk.green(storeDomain)} themes:`);
|
|
15
|
-
log.info(
|
|
16
|
-
[defaultThemeRes.data.data, ...themesRes.data.data.themes].reduce(
|
|
17
|
-
(acc, theme) =>
|
|
18
|
-
(acc += `${theme.name} (${chalk.green(theme.id)}) ${
|
|
19
|
-
theme.id === defaultThemeRes.data.data.id ? chalk.green('[live]') : chalk.yellow('[unpublished]')
|
|
20
|
-
}\n`),
|
|
21
|
-
''
|
|
22
|
-
)
|
|
23
|
-
);
|
|
24
|
-
} catch (error) {
|
|
25
|
-
log.error(chalk.red(`✗ Failed to get theme list`));
|
|
26
|
-
Sentry.captureException(error);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fs = require('fs-extra');
|
|
3
|
-
const chalk = require('chalk');
|
|
4
|
-
const Sentry = require('@sentry/node');
|
|
5
|
-
const log = require('../../log');
|
|
6
|
-
const { zipTheme } = require('../../utils/utils');
|
|
7
|
-
|
|
8
|
-
const checkAndZipThemes = () => {
|
|
9
|
-
const configPath = path.join(process.cwd(), 'config/settings_schema.json');
|
|
10
|
-
if (!fs.pathExistsSync(configPath)) {
|
|
11
|
-
log.error(chalk.red('✗ Provide a config/settings_schema.json to package your theme'));
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const config = fs.readJSONSync(configPath);
|
|
15
|
-
const themeInfo = config.find((section) => section.name === 'theme_info');
|
|
16
|
-
const { theme_name, theme_version = '' } = themeInfo;
|
|
17
|
-
if (!theme_name) {
|
|
18
|
-
log.error(chalk.red('✗ Provide a theme_info.theme_name configuration in config/settings_schema.json'));
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const zipName = `${theme_name}${theme_version ? `-${theme_version}` : ''}`;
|
|
22
|
-
const zipPath = path.join(process.cwd(), `${zipName}.zip`);
|
|
23
|
-
fs.removeSync(zipPath);
|
|
24
|
-
zipTheme(process.cwd(), zipName);
|
|
25
|
-
return { theme_name, theme_version, zipName, zipPath };
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
exports.checkAndZipThemes = checkAndZipThemes;
|
|
29
|
-
exports.packageCommand = () => {
|
|
30
|
-
try {
|
|
31
|
-
const { zipName } = checkAndZipThemes();
|
|
32
|
-
log.info(`${chalk.green('✓')} Theme packaged in ${zipName}.zip`);
|
|
33
|
-
} catch (error) {
|
|
34
|
-
log.error(chalk.red(`✗ Failed to package theme`));
|
|
35
|
-
Sentry.captureException(error);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
const ora = require('ora');
|
|
2
|
-
const chalk = require('chalk');
|
|
3
|
-
const inquirer = require('inquirer');
|
|
4
|
-
const Sentry = require('@sentry/node');
|
|
5
|
-
const { getThemeDetail, getThemes, publishTheme } = require('../../openAPI/api');
|
|
6
|
-
const { get } = require('../../db/user');
|
|
7
|
-
const log = require('../../log');
|
|
8
|
-
const { formatThemeList } = require('../../utils/utils');
|
|
9
|
-
|
|
10
|
-
const confirmAndExecPublish = async (themeName, themeId) => {
|
|
11
|
-
const answers = await inquirer.prompt([
|
|
12
|
-
{
|
|
13
|
-
name: 'confirm',
|
|
14
|
-
type: 'list',
|
|
15
|
-
message: `Are you sure you want to make ${themeName} the new live theme on ${get('store_domain')}? ${chalk.yellow(
|
|
16
|
-
'(Choose with ↑ ↓ ⏎)'
|
|
17
|
-
)}`,
|
|
18
|
-
choices: ['Yes', 'No']
|
|
19
|
-
}
|
|
20
|
-
]);
|
|
21
|
-
if (answers.confirm === 'Yes') {
|
|
22
|
-
await publishTheme(themeId);
|
|
23
|
-
log.info(chalk.green(`✓ Your theme is now live at https://${get('store_domain')}`));
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
module.exports = async (options) => {
|
|
28
|
-
try {
|
|
29
|
-
if (options.theme) {
|
|
30
|
-
const { data } = await getThemeDetail(options.theme);
|
|
31
|
-
if (!data) {
|
|
32
|
-
log.error(chalk.red(`✗ Theme ${options.theme} does not exist`));
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
await confirmAndExecPublish(data.data.name, options.theme);
|
|
36
|
-
} else {
|
|
37
|
-
const storeDomain = get('store_domain');
|
|
38
|
-
const spinner = ora(chalk.cyan(`Fetching theme lists from ${storeDomain}`)).start();
|
|
39
|
-
const { data } = await getThemes();
|
|
40
|
-
spinner.stop();
|
|
41
|
-
const answers = await inquirer.prompt([
|
|
42
|
-
{
|
|
43
|
-
name: 'theme',
|
|
44
|
-
type: 'rawlist',
|
|
45
|
-
message: `Select a theme to publish ${chalk.cyan('(Choose with ↑ ↓ ⏎)')}`,
|
|
46
|
-
choices: formatThemeList(data.data.themes)
|
|
47
|
-
}
|
|
48
|
-
]);
|
|
49
|
-
const themeObj = data.data.themes.find((theme) => theme.id === answers.theme);
|
|
50
|
-
await confirmAndExecPublish(themeObj.name, answers.theme);
|
|
51
|
-
}
|
|
52
|
-
} catch (error) {
|
|
53
|
-
log.error(chalk.red(`✗ Failed to publish theme`));
|
|
54
|
-
Sentry.captureException(error);
|
|
55
|
-
}
|
|
56
|
-
};
|