@shopify/shop-minis-cli 0.0.37 → 0.0.82
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/.eslintrc.cjs +78 -0
- package/.vscode/extensions.json +3 -0
- package/.vscode/launch.json +29 -0
- package/.vscode/settings.json +8 -0
- package/.vscode/shop-minis-cli.code-workspace +8 -0
- package/build/commands/cancel-submission/cancel-submission.d.ts +1 -0
- package/build/commands/cancel-submission/cancel-submission.js +57 -0
- package/build/commands/cancel-submission/cancel-submission.js.map +1 -0
- package/build/commands/cancel-submission/index.d.ts +2 -0
- package/build/commands/cancel-submission/index.js +18 -0
- package/build/commands/cancel-submission/index.js.map +1 -0
- package/build/commands/cancel-submission/types.d.ts +3 -0
- package/build/commands/cancel-submission/types.js +2 -0
- package/build/commands/cancel-submission/types.js.map +1 -0
- package/build/commands/check-submission/index.d.ts +2 -0
- package/build/commands/check-submission/index.js +55 -0
- package/build/commands/check-submission/index.js.map +1 -0
- package/build/commands/check-submission/types.d.ts +3 -0
- package/build/commands/check-submission/types.js +2 -0
- package/build/commands/check-submission/types.js.map +1 -0
- package/build/commands/codemod/index.d.ts +3 -0
- package/build/commands/codemod/index.js +47 -0
- package/build/commands/codemod/index.js.map +1 -0
- package/build/commands/codemod/releases/index.d.ts +7 -0
- package/build/commands/codemod/releases/index.js +58 -0
- package/build/commands/codemod/releases/index.js.map +1 -0
- package/build/commands/codemod/releases/types.d.ts +9 -0
- package/build/commands/codemod/releases/types.js +2 -0
- package/build/commands/codemod/releases/types.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-42/index.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-42/index.js +46 -0
- package/build/commands/codemod/releases/v0-0-42/index.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-42/reset-files.d.ts +7 -0
- package/build/commands/codemod/releases/v0-0-42/reset-files.js +83 -0
- package/build/commands/codemod/releases/v0-0-42/reset-files.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-43.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-43.js +32 -0
- package/build/commands/codemod/releases/v0-0-43.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-44.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-44.js +214 -0
- package/build/commands/codemod/releases/v0-0-44.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-45.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-45.js +23 -0
- package/build/commands/codemod/releases/v0-0-45.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-50.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-50.js +34 -0
- package/build/commands/codemod/releases/v0-0-50.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-54.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-54.js +70 -0
- package/build/commands/codemod/releases/v0-0-54.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-56.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-56.js +48 -0
- package/build/commands/codemod/releases/v0-0-56.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-57.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-57.js +41 -0
- package/build/commands/codemod/releases/v0-0-57.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-58.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-58.js +68 -0
- package/build/commands/codemod/releases/v0-0-58.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-61.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-61.js +30 -0
- package/build/commands/codemod/releases/v0-0-61.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-63.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-63.js +42 -0
- package/build/commands/codemod/releases/v0-0-63.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-64.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-64.js +47 -0
- package/build/commands/codemod/releases/v0-0-64.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-75.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-75.js +30 -0
- package/build/commands/codemod/releases/v0-0-75.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-76.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-76.js +32 -0
- package/build/commands/codemod/releases/v0-0-76.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-77.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-77.js +39 -0
- package/build/commands/codemod/releases/v0-0-77.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-79.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-79.js +35 -0
- package/build/commands/codemod/releases/v0-0-79.js.map +1 -0
- package/build/commands/config.d.ts +14 -0
- package/build/commands/config.js +42 -0
- package/build/commands/config.js.map +1 -0
- package/build/commands/create-mini/index.js +84 -68
- package/build/commands/create-mini/index.js.map +1 -1
- package/build/commands/create-mini/utils/template-app.d.ts +1 -1
- package/build/commands/create-mini/utils/template-app.js +38 -38
- package/build/commands/create-mini/utils/template-app.js.map +1 -1
- package/build/commands/dev/index.d.ts +3 -0
- package/build/commands/dev/index.js +51 -22
- package/build/commands/dev/index.js.map +1 -1
- package/build/commands/dev/utils/android.d.ts +6 -4
- package/build/commands/dev/utils/android.js +55 -67
- package/build/commands/dev/utils/android.js.map +1 -1
- package/build/commands/dev/utils/binaries.d.ts +2 -80
- package/build/commands/dev/utils/binaries.js +10 -166
- package/build/commands/dev/utils/binaries.js.map +1 -1
- package/build/commands/dev/utils/build-type.d.ts +2 -0
- package/build/commands/dev/utils/build-type.js +14 -0
- package/build/commands/dev/utils/build-type.js.map +1 -0
- package/build/commands/dev/utils/deeplink.d.ts +3 -3
- package/build/commands/dev/utils/deeplink.js +13 -18
- package/build/commands/dev/utils/deeplink.js.map +1 -1
- package/build/commands/dev/utils/interactive-terminal.d.ts +4 -2
- package/build/commands/dev/utils/interactive-terminal.js +66 -107
- package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-config.js +17 -20
- package/build/commands/dev/utils/metro/metro-config.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-reporter.d.ts +3 -4
- package/build/commands/dev/utils/metro/metro-reporter.js +6 -13
- package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +1 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.js +11 -12
- package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-server.d.ts +2 -2
- package/build/commands/dev/utils/metro/metro-server.js +7 -14
- package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
- package/build/commands/dev/utils/network.d.ts +20 -0
- package/build/commands/dev/utils/network.js +122 -0
- package/build/commands/dev/utils/network.js.map +1 -0
- package/build/commands/dev/utils/platform.d.ts +18 -0
- package/build/commands/dev/utils/platform.js +41 -0
- package/build/commands/dev/utils/platform.js.map +1 -0
- package/build/commands/dev/utils/prompt-binary-upgrade.d.ts +1 -0
- package/build/commands/dev/utils/prompt-binary-upgrade.js +12 -0
- package/build/commands/dev/utils/prompt-binary-upgrade.js.map +1 -0
- package/build/commands/dev/utils/qr-code.js +3 -10
- package/build/commands/dev/utils/qr-code.js.map +1 -1
- package/build/commands/dev/utils/simulator.d.ts +5 -2
- package/build/commands/dev/utils/simulator.js +43 -37
- package/build/commands/dev/utils/simulator.js.map +1 -1
- package/build/commands/dev/utils/start-app/config.d.ts +5 -0
- package/build/commands/dev/utils/start-app/config.js +25 -0
- package/build/commands/dev/utils/start-app/config.js.map +1 -0
- package/build/commands/dev/utils/start-app/start-app-with-options.d.ts +2 -0
- package/build/commands/dev/utils/start-app/start-app-with-options.js +94 -0
- package/build/commands/dev/utils/start-app/start-app-with-options.js.map +1 -0
- package/build/commands/dev/utils/start-app/start-app.d.ts +2 -0
- package/build/commands/dev/utils/start-app/start-app.js +10 -0
- package/build/commands/dev/utils/start-app/start-app.js.map +1 -0
- package/build/commands/dev/utils/start-app/types.d.ts +20 -0
- package/build/commands/dev/utils/start-app/types.js +2 -0
- package/build/commands/dev/utils/start-app/types.js.map +1 -0
- package/build/commands/dev/utils/types.d.ts +24 -0
- package/build/commands/dev/utils/types.js +7 -0
- package/build/commands/dev/utils/types.js.map +1 -0
- package/build/commands/dev/utils/version.d.ts +64 -0
- package/build/commands/dev/utils/version.js +101 -0
- package/build/commands/dev/utils/version.js.map +1 -0
- package/build/commands/dev/utils/with-retries.js +1 -5
- package/build/commands/dev/utils/with-retries.js.map +1 -1
- package/build/commands/doctor/index.d.ts +6 -0
- package/build/commands/doctor/index.js +21 -0
- package/build/commands/doctor/index.js.map +1 -0
- package/build/commands/doctor/utils/diagnose-dependencies.d.ts +7 -0
- package/build/commands/doctor/utils/diagnose-dependencies.js +108 -0
- package/build/commands/doctor/utils/diagnose-dependencies.js.map +1 -0
- package/build/commands/generate-graphql-types/index.d.ts +1 -0
- package/build/commands/generate-graphql-types/index.js +43 -27
- package/build/commands/generate-graphql-types/index.js.map +1 -1
- package/build/commands/info/index.d.ts +3 -0
- package/build/commands/info/index.js +42 -0
- package/build/commands/info/index.js.map +1 -0
- package/build/commands/setup/index.d.ts +2 -0
- package/build/commands/setup/index.js +81 -0
- package/build/commands/setup/index.js.map +1 -0
- package/build/commands/submit/config.d.ts +9 -0
- package/build/commands/submit/config.js +18 -0
- package/build/commands/submit/config.js.map +1 -0
- package/build/commands/submit/errors.d.ts +19 -0
- package/build/commands/submit/errors.js +87 -0
- package/build/commands/submit/errors.js.map +1 -0
- package/build/commands/submit/gcs.d.ts +6 -0
- package/build/commands/submit/gcs.js +10 -0
- package/build/commands/submit/gcs.js.map +1 -0
- package/build/commands/submit/index.d.ts +2 -0
- package/build/commands/submit/index.js +25 -0
- package/build/commands/submit/index.js.map +1 -0
- package/build/commands/submit/submit.d.ts +5 -0
- package/build/commands/submit/submit.js +222 -0
- package/build/commands/submit/submit.js.map +1 -0
- package/build/commands/submit/tasks.d.ts +37 -0
- package/build/commands/submit/tasks.js +91 -0
- package/build/commands/submit/tasks.js.map +1 -0
- package/build/commands/submit/types.d.ts +14 -0
- package/build/commands/submit/types.js +2 -0
- package/build/commands/submit/types.js.map +1 -0
- package/build/commands/submit/utils/assert-core-dependencies-version.d.ts +1 -0
- package/build/commands/submit/utils/assert-core-dependencies-version.js +58 -0
- package/build/commands/submit/utils/assert-core-dependencies-version.js.map +1 -0
- package/build/commands/submit/utils/request-entry-point-params.d.ts +1 -0
- package/build/commands/submit/utils/request-entry-point-params.js +41 -0
- package/build/commands/submit/utils/request-entry-point-params.js.map +1 -0
- package/build/commands/submit/validation.d.ts +1 -0
- package/build/commands/submit/validation.js +11 -0
- package/build/commands/submit/validation.js.map +1 -0
- package/build/commands/upgrade/index.d.ts +13 -0
- package/build/commands/upgrade/index.js +53 -0
- package/build/commands/upgrade/index.js.map +1 -0
- package/build/commands/upgrade/utils/cli.d.ts +1 -0
- package/build/commands/upgrade/utils/cli.js +15 -0
- package/build/commands/upgrade/utils/cli.js.map +1 -0
- package/build/commands/validate-manifest/index.d.ts +3 -0
- package/build/commands/validate-manifest/index.js +29 -0
- package/build/commands/validate-manifest/index.js.map +1 -0
- package/build/data/accept-invitation.d.ts +4 -0
- package/build/data/accept-invitation.js +16 -0
- package/build/data/accept-invitation.js.map +1 -0
- package/build/data/cancel-submission.d.ts +22 -0
- package/build/data/cancel-submission.js +26 -0
- package/build/data/cancel-submission.js.map +1 -0
- package/build/data/create-submission.d.ts +20 -0
- package/build/data/create-submission.js +27 -0
- package/build/data/create-submission.js.map +1 -0
- package/build/data/create-upload.d.ts +21 -0
- package/build/data/create-upload.js +40 -0
- package/build/data/create-upload.js.map +1 -0
- package/build/data/get-submissions.d.ts +27 -0
- package/build/data/get-submissions.js +33 -0
- package/build/data/get-submissions.js.map +1 -0
- package/build/data/gql-client.d.ts +8 -0
- package/build/data/gql-client.js +9 -0
- package/build/data/gql-client.js.map +1 -0
- package/build/data/mini.d.ts +5 -0
- package/build/data/mini.js +14 -0
- package/build/data/mini.js.map +1 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +75 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +24 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +1570 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +1062 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/index.js +3 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
- package/build/dev-panel/asset-manifest.json +6 -9
- package/build/dev-panel/index.html +1 -1
- package/build/dev-panel/static/css/{main.31436fe3.css → main.7f1ee407.css} +2 -2
- package/build/dev-panel/static/css/main.7f1ee407.css.map +1 -0
- package/build/dev-panel/static/js/{main.27f47095.js → main.6625699c.js} +3 -3
- package/build/dev-panel/static/js/main.6625699c.js.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.js +30 -15
- package/build/index.js.map +1 -1
- package/build/schemas/manifest.schema.json +198 -0
- package/build/utils/archive.d.ts +30 -0
- package/build/utils/archive.js +38 -0
- package/build/utils/archive.js.map +1 -0
- package/build/utils/common-tasks.d.ts +1 -0
- package/build/utils/common-tasks.js +49 -0
- package/build/utils/common-tasks.js.map +1 -0
- package/build/utils/development-params.d.ts +13 -0
- package/build/utils/development-params.js +42 -0
- package/build/utils/development-params.js.map +1 -0
- package/build/{commands/utils → utils}/exec-async-child-process.d.ts +1 -1
- package/build/{commands/utils → utils}/exec-async-child-process.js +6 -13
- package/build/utils/exec-async-child-process.js.map +1 -0
- package/build/utils/file.d.ts +1 -0
- package/build/utils/file.js +7 -0
- package/build/utils/file.js.map +1 -0
- package/build/utils/minis-manifest.d.ts +6 -0
- package/build/utils/minis-manifest.js +56 -0
- package/build/utils/minis-manifest.js.map +1 -0
- package/build/utils/package-manager.d.ts +38 -0
- package/build/utils/package-manager.js +98 -0
- package/build/utils/package-manager.js.map +1 -0
- package/build/utils/patch-package.d.ts +5 -0
- package/build/utils/patch-package.js +76 -0
- package/build/utils/patch-package.js.map +1 -0
- package/build/utils/replace-strings-in-template.d.ts +1 -0
- package/build/utils/replace-strings-in-template.js +15 -0
- package/build/utils/replace-strings-in-template.js.map +1 -0
- package/build/utils/semver.d.ts +1 -0
- package/build/utils/semver.js +19 -0
- package/build/utils/semver.js.map +1 -0
- package/build/{commands/utils → utils}/wrap-with-loading-indicator.d.ts +1 -1
- package/build/utils/wrap-with-loading-indicator.js +16 -0
- package/build/utils/wrap-with-loading-indicator.js.map +1 -0
- package/package.json +35 -28
- package/scripts/graphql-codegen.ts +23 -0
- package/scripts/test-template.ts +63 -0
- package/shipit.alpha.yml +3 -0
- package/templates/__template_blank/src/index.tsx +5 -4
- package/templates/__template_blank/src/types.ts +1 -1
- package/templates/__template_common/.eslintrc.js +16 -0
- package/templates/__template_common/assets.d.ts +14 -0
- package/templates/__template_common/babel.config.js +3 -17
- package/templates/__template_common/gitignore +2 -0
- package/templates/__template_common/index.tsx +3 -6
- package/templates/__template_common/metro.config.js +4 -30
- package/templates/__template_common/package.json +17 -47
- package/templates/__template_common/src/manifest.json +1 -27
- package/templates/__template_hello_world/src/components/ComponentLink.ts +31 -19
- package/templates/__template_hello_world/src/components/ComponentListItem.tsx +1 -0
- package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +4 -2
- package/templates/__template_hello_world/src/components/quiz/ImageCarouselSlide.tsx +54 -0
- package/templates/__template_hello_world/src/components/quiz/MultipleChoiceSlide.tsx +77 -0
- package/templates/__template_hello_world/src/components/quiz/QuizProvider.tsx +64 -0
- package/templates/__template_hello_world/src/components/quiz/QuizSlide.tsx +79 -0
- package/templates/__template_hello_world/src/components/quiz/QuizSlideCommander.tsx +35 -0
- package/templates/__template_hello_world/src/components/quiz/TextFieldSlide.tsx +84 -0
- package/templates/__template_hello_world/src/components/quiz/TextSlide.tsx +6 -0
- package/templates/__template_hello_world/src/components/quiz/types.ts +72 -0
- package/templates/__template_hello_world/src/data/Test.graphql.d.ts +69 -76
- package/templates/__template_hello_world/src/data/TestProducts.graphql +30 -0
- package/templates/__template_hello_world/src/data/TestProducts.graphql.d.ts +159 -81
- package/templates/__template_hello_world/src/fixtures/mocked-products-with-variants.ts +274 -0
- package/templates/__template_hello_world/src/hooks/useQuizData.ts +26 -0
- package/templates/__template_hello_world/src/hooks/useQuizState.ts +27 -0
- package/templates/__template_hello_world/src/index.tsx +6 -5
- package/templates/__template_hello_world/src/routes.tsx +46 -22
- package/templates/__template_hello_world/src/screens/AccordionScreen.tsx +73 -0
- package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +6 -5
- package/templates/__template_hello_world/src/screens/HomeScreen.tsx +14 -3
- package/templates/__template_hello_world/src/screens/{ImageCarouselScreen.tsx → ImageMultipleChoiceScreen.tsx} +4 -6
- package/templates/__template_hello_world/src/screens/InputScreen.tsx +13 -70
- package/templates/__template_hello_world/src/screens/QuizResultScreen.tsx +82 -0
- package/templates/__template_hello_world/src/screens/QuizScreen.tsx +40 -0
- package/templates/__template_hello_world/src/screens/QuizSlideScreen.tsx +150 -0
- package/templates/__template_hello_world/src/screens/ShopActionsScreen.tsx +48 -0
- package/templates/__template_hello_world/src/screens/VariantPickerScreen.tsx +120 -0
- package/templates/__template_hello_world/src/types.ts +27 -24
- package/templates/__template_hello_world/src/utils/mockQuizData.ts +330 -0
- package/templates/__template_hello_world/src/utils/quizUtils.ts +75 -0
- package/templates/__template_snowboardz/src/components/SkillLevelIcon.tsx +1 -4
- package/templates/__template_snowboardz/src/components/SkillLevelPicker.tsx +7 -1
- package/templates/__template_snowboardz/src/data/TestProducts.graphql +1 -1
- package/templates/__template_snowboardz/src/data/TestProducts.graphql.d.ts +84 -74
- package/templates/__template_snowboardz/src/index.tsx +6 -5
- package/templates/__template_snowboardz/src/routes.tsx +2 -2
- package/templates/__template_snowboardz/src/types.ts +3 -3
- package/build/commands/check/index.d.ts +0 -5
- package/build/commands/check/index.js +0 -77
- package/build/commands/check/index.js.map +0 -1
- package/build/commands/check/utils/versions.d.ts +0 -1
- package/build/commands/check/utils/versions.js +0 -14
- package/build/commands/check/utils/versions.js.map +0 -1
- package/build/commands/dev/utils/binaries.test.d.ts +0 -1
- package/build/commands/dev/utils/binaries.test.js +0 -275
- package/build/commands/dev/utils/binaries.test.js.map +0 -1
- package/build/commands/dev/utils/minis-manifest.d.ts +0 -1
- package/build/commands/dev/utils/minis-manifest.js +0 -24
- package/build/commands/dev/utils/minis-manifest.js.map +0 -1
- package/build/commands/utils/exec-async-child-process.js.map +0 -1
- package/build/commands/utils/wrap-with-loading-indicator.js +0 -23
- package/build/commands/utils/wrap-with-loading-indicator.js.map +0 -1
- package/build/dev-panel/middleware.d.ts +0 -4
- package/build/dev-panel/middleware.js +0 -11
- package/build/dev-panel/middleware.js.map +0 -1
- package/build/dev-panel/static/css/main.31436fe3.css.map +0 -1
- package/build/dev-panel/static/js/main.27f47095.js.map +0 -1
- package/build/dev-panel/static/media/bottomsheet.fe525b8722f6d504a185.png +0 -0
- package/build/dev-panel/static/media/navigation.597434370a97c328a970.png +0 -0
- package/build/dev-panel/static/media/stories.a425b6972a5338fabdad.png +0 -0
- package/templates/__template_blank/src/custom.d.ts +0 -4
- package/templates/__template_common/.eslintrc.json +0 -132
- package/templates/__template_common/patches/react-native+0.68.5.patch +0 -173
- package/templates/__template_hello_world/src/utils/getFlagEmoji.spec.tsx +0 -19
- /package/build/dev-panel/static/js/{main.27f47095.js.LICENSE.txt → main.6625699c.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { renderSuccess, renderTasks, renderConfirmationPrompt, } from '@shopify/cli-kit/node/ui';
|
|
2
|
+
import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
|
|
3
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
4
|
+
import editor from '@inquirer/editor';
|
|
5
|
+
import { getRunBinCommand } from '../../utils/package-manager.js';
|
|
6
|
+
import { assertNetworkAndAuth } from '../../utils/common-tasks.js';
|
|
7
|
+
import { execAsync } from '../../utils/exec-async-child-process.js';
|
|
8
|
+
import { validateDescription } from './validation.js';
|
|
9
|
+
import { assertManifestValid, assertNoPendingSubmissions, createStagedUpload, createSubmission, packageShopMini, uploadSubmission, } from './tasks.js';
|
|
10
|
+
import { generateSubmissionArchiveFilename, getSubmissionArchivePath, } from './config.js';
|
|
11
|
+
import { assertCoreDependenciesVersion } from './utils/assert-core-dependencies-version.js';
|
|
12
|
+
import { requestEntryPointParams } from './utils/request-entry-point-params.js';
|
|
13
|
+
export const codeBuildChecks = async () => {
|
|
14
|
+
const tscCommand = await getRunBinCommand('tsc');
|
|
15
|
+
const lintCommand = await getRunBinCommand('eslint .');
|
|
16
|
+
try {
|
|
17
|
+
await execAsync({
|
|
18
|
+
cmd: tscCommand,
|
|
19
|
+
loadingMessage: 'Running typescript checks',
|
|
20
|
+
errorMessage: 'Typescript checks failed',
|
|
21
|
+
successMessage: 'Typescript OK!',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
const continueWithSubmission = await renderConfirmationPrompt({
|
|
26
|
+
message: 'The code you are about to submit seems to have typescript errors, this might be a reason for rejection. Do you want to continue with the submission?',
|
|
27
|
+
});
|
|
28
|
+
if (!continueWithSubmission) {
|
|
29
|
+
console.log(`Run "${tscCommand}" to see the errors.`);
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
await execAsync({
|
|
35
|
+
cmd: lintCommand,
|
|
36
|
+
loadingMessage: 'Running lint checks',
|
|
37
|
+
errorMessage: 'Lint checks failed',
|
|
38
|
+
successMessage: 'Lint OK!',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
const continueWithSubmission = await renderConfirmationPrompt({
|
|
43
|
+
message: 'The code you are about to submit seems to have lint errors, this might be a reason for rejection. Do you want to continue with the submission?',
|
|
44
|
+
});
|
|
45
|
+
if (!continueWithSubmission) {
|
|
46
|
+
console.log(`Run "${lintCommand}" to see the errors.`);
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
};
|
|
52
|
+
export const preSubmitChecks = async () => {
|
|
53
|
+
const tasks = [
|
|
54
|
+
// We run this task first to ensure auth and network are working.
|
|
55
|
+
// This makes sense because the dependency check needs a network
|
|
56
|
+
{
|
|
57
|
+
title: `Authenticating using Shop Minis Admin API key`,
|
|
58
|
+
task: async () => {
|
|
59
|
+
await assertNetworkAndAuth();
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
title: `Checking if dependencies are up to date`,
|
|
64
|
+
task: async () => {
|
|
65
|
+
await assertCoreDependenciesVersion();
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: `Checking if there are other submissions`,
|
|
70
|
+
task: async () => {
|
|
71
|
+
await assertNoPendingSubmissions();
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
title: `Verifying your manifest file`,
|
|
76
|
+
task: async () => {
|
|
77
|
+
await assertManifestValid();
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
try {
|
|
82
|
+
await renderTasks(tasks);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
// Always output the error first
|
|
86
|
+
handleError(error);
|
|
87
|
+
// If the error doesn't have next steps follow-up with some generic ones
|
|
88
|
+
if (!error || !error?.nextSteps) {
|
|
89
|
+
handleError(new AbortError(`Pre-submission checks failed`, 'Try again and if the issue continues, contact us.', ['Try to run `submit` again', "Contact Shop if you're having issues"]));
|
|
90
|
+
}
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
export const completeConfig = async (args) => {
|
|
95
|
+
let { description } = args;
|
|
96
|
+
if (!description || validateDescription(description) !== true) {
|
|
97
|
+
description = await editor({
|
|
98
|
+
message: 'Describe the change being submitted for review',
|
|
99
|
+
validate: validateDescription,
|
|
100
|
+
default: description,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const entryPointParams = await requestEntryPointParams();
|
|
104
|
+
description += `\n\n## Entry point params \n\n${entryPointParams}`;
|
|
105
|
+
return {
|
|
106
|
+
description,
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export const doSubmit = async (config) => {
|
|
110
|
+
outputDebug(`Submit config ${JSON.stringify(config)}`);
|
|
111
|
+
const submitTasksData = {
|
|
112
|
+
outputArchiveFilename: null,
|
|
113
|
+
outputArchivePath: null,
|
|
114
|
+
stagedUpload: null,
|
|
115
|
+
submission: null,
|
|
116
|
+
};
|
|
117
|
+
const tasks = [
|
|
118
|
+
{
|
|
119
|
+
title: `Packaging Shop Mini for submission`,
|
|
120
|
+
task: async () => {
|
|
121
|
+
const inputDirectory = process.cwd();
|
|
122
|
+
const matchFilePattern = `**/*`;
|
|
123
|
+
submitTasksData.outputArchiveFilename =
|
|
124
|
+
generateSubmissionArchiveFilename();
|
|
125
|
+
submitTasksData.outputArchivePath = getSubmissionArchivePath(submitTasksData.outputArchiveFilename);
|
|
126
|
+
await packageShopMini({
|
|
127
|
+
inputDirectory,
|
|
128
|
+
outputArchivePath: submitTasksData.outputArchivePath,
|
|
129
|
+
matchFilePattern,
|
|
130
|
+
ignore: [
|
|
131
|
+
'**/*.(spec|test).*',
|
|
132
|
+
'**/__tests__/**/*',
|
|
133
|
+
'node_modules/**',
|
|
134
|
+
'.minis-cache/**',
|
|
135
|
+
'.git/**',
|
|
136
|
+
'.env',
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
title: 'Preparing to upload submission',
|
|
143
|
+
task: async () => {
|
|
144
|
+
if (!submitTasksData.outputArchivePath ||
|
|
145
|
+
!submitTasksData.outputArchiveFilename) {
|
|
146
|
+
throw new Error('Expected data for upload submission not found');
|
|
147
|
+
}
|
|
148
|
+
// eslint-disable-next-line require-atomic-updates
|
|
149
|
+
submitTasksData.stagedUpload = await createStagedUpload({
|
|
150
|
+
outputArchiveFilename: submitTasksData.outputArchiveFilename,
|
|
151
|
+
outputArchivePath: submitTasksData.outputArchivePath,
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
title: 'Uploading submission',
|
|
157
|
+
task: async () => {
|
|
158
|
+
if (!submitTasksData.outputArchivePath ||
|
|
159
|
+
!submitTasksData.stagedUpload) {
|
|
160
|
+
throw new Error('Expected data for submission not found');
|
|
161
|
+
}
|
|
162
|
+
await uploadSubmission({
|
|
163
|
+
url: submitTasksData.stagedUpload.url,
|
|
164
|
+
headers: JSON.parse(submitTasksData.stagedUpload.headers),
|
|
165
|
+
outputArchivePath: submitTasksData.outputArchivePath,
|
|
166
|
+
});
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
title: 'Finalizing submission',
|
|
171
|
+
task: async () => {
|
|
172
|
+
if (!submitTasksData.stagedUpload) {
|
|
173
|
+
throw new Error('Expected data for finalizing submission not found');
|
|
174
|
+
}
|
|
175
|
+
// eslint-disable-next-line require-atomic-updates
|
|
176
|
+
submitTasksData.submission = await createSubmission({
|
|
177
|
+
description: config.description,
|
|
178
|
+
stagedUploadId: submitTasksData.stagedUpload.id,
|
|
179
|
+
});
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
];
|
|
183
|
+
try {
|
|
184
|
+
await renderTasks(tasks);
|
|
185
|
+
renderSuccess({
|
|
186
|
+
headline: 'Shop Mini submitted for review',
|
|
187
|
+
body: [
|
|
188
|
+
'Thank you for your submission. Your Shop Mini has been added to the review queue. Your submission reference is:',
|
|
189
|
+
{
|
|
190
|
+
bold: submitTasksData.submission?.reference ?? 'unknown',
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
nextSteps: [
|
|
194
|
+
[
|
|
195
|
+
'Keep your eyes on your email for communication regarding your submission',
|
|
196
|
+
],
|
|
197
|
+
[
|
|
198
|
+
'To check the status of your submission at any point, run',
|
|
199
|
+
{
|
|
200
|
+
command: await getRunBinCommand('shop-minis check-submission'),
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
[
|
|
204
|
+
'To cancel your submission at any point, run',
|
|
205
|
+
{
|
|
206
|
+
command: await getRunBinCommand('shop-minis cancel-submission'),
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
],
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
// Always output the error first
|
|
214
|
+
handleError(error);
|
|
215
|
+
// If the error doesn't have next steps follow-up with some generic ones
|
|
216
|
+
if (!error || !error?.nextSteps) {
|
|
217
|
+
handleError(new AbortError(`Submission failed`, 'Try again and if the issue continues, contact us.', ['Try to run `submit` again', "Contact Shop if you're having issues"]));
|
|
218
|
+
}
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
//# sourceMappingURL=submit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/commands/submit/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,wBAAwB,GAEzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,UAAU,EAAE,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,MAAM,MAAM,kBAAkB,CAAA;AAErC,OAAO,EAAC,gBAAgB,EAAC,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAGjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAA;AACnD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAC,6BAA6B,EAAC,MAAM,6CAA6C,CAAA;AACzF,OAAO,EAAC,uBAAuB,EAAC,MAAM,uCAAuC,CAAA;AAE7E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACxC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAEtD,IAAI;QACF,MAAM,SAAS,CAAC;YACd,GAAG,EAAE,UAAU;YACf,cAAc,EAAE,2BAA2B;YAC3C,YAAY,EAAE,0BAA0B;YACxC,cAAc,EAAE,gBAAgB;SACjC,CAAC,CAAA;KACH;IAAC,MAAM;QACN,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAAC;YAC5D,OAAO,EACL,sJAAsJ;SACzJ,CAAC,CAAA;QACF,IAAI,CAAC,sBAAsB,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,sBAAsB,CAAC,CAAA;YACrD,OAAO,KAAK,CAAA;SACb;KACF;IAED,IAAI;QACF,MAAM,SAAS,CAAC;YACd,GAAG,EAAE,WAAW;YAChB,cAAc,EAAE,qBAAqB;YACrC,YAAY,EAAE,oBAAoB;YAClC,cAAc,EAAE,UAAU;SAC3B,CAAC,CAAA;KACH;IAAC,MAAM;QACN,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAAC;YAC5D,OAAO,EACL,gJAAgJ;SACnJ,CAAC,CAAA;QACF,IAAI,CAAC,sBAAsB,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,WAAW,sBAAsB,CAAC,CAAA;YACtD,OAAO,KAAK,CAAA;SACb;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACxC,MAAM,KAAK,GAAoB;QAC7B,iEAAiE;QACjE,gEAAgE;QAChE;YACE,KAAK,EAAE,+CAA+C;YACtD,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,oBAAoB,EAAE,CAAA;YAC9B,CAAC;SACF;QACD;YACE,KAAK,EAAE,yCAAyC;YAChD,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,6BAA6B,EAAE,CAAA;YACvC,CAAC;SACF;QACD;YACE,KAAK,EAAE,yCAAyC;YAChD,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,0BAA0B,EAAE,CAAA;YACpC,CAAC;SACF;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,mBAAmB,EAAE,CAAA;YAC7B,CAAC;SACF;KACF,CAAA;IAED,IAAI;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,CAAA;KACzB;IAAC,OAAO,KAAU,EAAE;QACnB,gCAAgC;QAChC,WAAW,CAAC,KAAK,CAAC,CAAA;QAElB,wEAAwE;QACxE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;YAC/B,WAAW,CACT,IAAI,UAAU,CACZ,8BAA8B,EAC9B,mDAAmD,EACnD,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CACtE,CACF,CAAA;SACF;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAuB,EACA,EAAE;IACzB,IAAI,EAAC,WAAW,EAAC,GAAG,IAAI,CAAA;IAExB,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC7D,WAAW,GAAG,MAAM,MAAM,CAAC;YACzB,OAAO,EAAE,gDAAgD;YACzD,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,WAAW;SACrB,CAAC,CAAA;KACH;IAED,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAExD,WAAW,IAAI,iCAAiC,gBAAgB,EAAE,CAAA;IAElE,OAAO;QACL,WAAW;KACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IACrD,WAAW,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAEtD,MAAM,eAAe,GAAoB;QACvC,qBAAqB,EAAE,IAAI;QAC3B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAA;IAED,MAAM,KAAK,GAAoB;QAC7B;YACE,KAAK,EAAE,oCAAoC;YAC3C,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;gBACpC,MAAM,gBAAgB,GAAG,MAAM,CAAA;gBAC/B,eAAe,CAAC,qBAAqB;oBACnC,iCAAiC,EAAE,CAAA;gBACrC,eAAe,CAAC,iBAAiB,GAAG,wBAAwB,CAC1D,eAAe,CAAC,qBAAqB,CACtC,CAAA;gBAED,MAAM,eAAe,CAAC;oBACpB,cAAc;oBACd,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;oBACpD,gBAAgB;oBAChB,MAAM,EAAE;wBACN,oBAAoB;wBACpB,mBAAmB;wBACnB,iBAAiB;wBACjB,iBAAiB;wBACjB,SAAS;wBACT,MAAM;qBACP;iBACF,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,gCAAgC;YACvC,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,IACE,CAAC,eAAe,CAAC,iBAAiB;oBAClC,CAAC,eAAe,CAAC,qBAAqB,EACtC;oBACA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;iBACjE;gBAED,kDAAkD;gBAClD,eAAe,CAAC,YAAY,GAAG,MAAM,kBAAkB,CAAC;oBACtD,qBAAqB,EAAE,eAAe,CAAC,qBAAqB;oBAC5D,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;iBACrD,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,IACE,CAAC,eAAe,CAAC,iBAAiB;oBAClC,CAAC,eAAe,CAAC,YAAY,EAC7B;oBACA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;iBAC1D;gBAED,MAAM,gBAAgB,CAAC;oBACrB,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG;oBACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;oBACzD,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;iBACrD,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,uBAAuB;YAC9B,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;iBACrE;gBAED,kDAAkD;gBAClD,eAAe,CAAC,UAAU,GAAG,MAAM,gBAAgB,CAAC;oBAClD,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE;iBAChD,CAAC,CAAA;YACJ,CAAC;SACF;KACF,CAAA;IAED,IAAI;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,CAAA;QAExB,aAAa,CAAC;YACZ,QAAQ,EAAE,gCAAgC;YAC1C,IAAI,EAAE;gBACJ,iHAAiH;gBACjH;oBACE,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,IAAI,SAAS;iBACzD;aACF;YACD,SAAS,EAAE;gBACT;oBACE,0EAA0E;iBAC3E;gBACD;oBACE,0DAA0D;oBAC1D;wBACE,OAAO,EAAE,MAAM,gBAAgB,CAAC,6BAA6B,CAAC;qBAC/D;iBACF;gBACD;oBACE,6CAA6C;oBAC7C;wBACE,OAAO,EAAE,MAAM,gBAAgB,CAAC,8BAA8B,CAAC;qBAChE;iBACF;aACF;SACF,CAAC,CAAA;KACH;IAAC,OAAO,KAAU,EAAE;QACnB,gCAAgC;QAChC,WAAW,CAAC,KAAK,CAAC,CAAA;QAElB,wEAAwE;QACxE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;YAC/B,WAAW,CACT,IAAI,UAAU,CACZ,mBAAmB,EACnB,mDAAmD,EACnD,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CACtE,CACF,CAAA;SACF;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare function assertNoPendingSubmissions(): Promise<void>;
|
|
2
|
+
export declare function assertManifestValid(): void;
|
|
3
|
+
interface PackageShopMiniParams {
|
|
4
|
+
inputDirectory: string;
|
|
5
|
+
outputArchivePath: string;
|
|
6
|
+
matchFilePattern: string;
|
|
7
|
+
ignore: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare const packageShopMini: ({ inputDirectory, outputArchivePath, matchFilePattern, ignore, }: PackageShopMiniParams) => Promise<void>;
|
|
10
|
+
interface CreateStagedUploadParams {
|
|
11
|
+
outputArchiveFilename: string;
|
|
12
|
+
outputArchivePath: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const createStagedUpload: ({ outputArchiveFilename, outputArchivePath, }: CreateStagedUploadParams) => Promise<{
|
|
15
|
+
__typename?: "StagedUpload" | undefined;
|
|
16
|
+
url: any;
|
|
17
|
+
headers: string;
|
|
18
|
+
id: string;
|
|
19
|
+
} | null | undefined>;
|
|
20
|
+
interface UploadSubmissionParams {
|
|
21
|
+
url: string;
|
|
22
|
+
headers: Record<string, string>;
|
|
23
|
+
outputArchivePath: string;
|
|
24
|
+
}
|
|
25
|
+
export declare const uploadSubmission: ({ url, headers, outputArchivePath, }: UploadSubmissionParams) => Promise<void>;
|
|
26
|
+
interface CreateSubmissionParams {
|
|
27
|
+
description: string;
|
|
28
|
+
stagedUploadId: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const createSubmission: ({ description, stagedUploadId, }: CreateSubmissionParams) => Promise<{
|
|
31
|
+
__typename?: "Submission" | undefined;
|
|
32
|
+
reference: string;
|
|
33
|
+
description: string;
|
|
34
|
+
status: import("../../data/types/autogenerated/shop-minis-admin-api/graphql.js").SubmissionStatus;
|
|
35
|
+
submittedAt: any;
|
|
36
|
+
} | null | undefined>;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { mkdirSync } from 'node:fs';
|
|
2
|
+
import { AbortError } from '@shopify/cli-kit/node/error';
|
|
3
|
+
import { fileSize } from '@shopify/cli-kit/node/fs';
|
|
4
|
+
import { outputContent, outputDebug, outputToken, } from '@shopify/cli-kit/node/output';
|
|
5
|
+
import { zip } from '../../utils/archive.js';
|
|
6
|
+
import { getFileChecksum } from '../../utils/file.js';
|
|
7
|
+
import { validateManifest } from '../../utils/minis-manifest.js';
|
|
8
|
+
import { createUpload as graphqlCreateUpload, } from '../../data/create-upload.js';
|
|
9
|
+
import { getPendingSubmission as graphqlGetPendingSubmission } from '../../data/get-submissions.js';
|
|
10
|
+
import { createSubmission as graphqlCreateSubmission } from '../../data/create-submission.js';
|
|
11
|
+
import { uploadFile } from './gcs.js';
|
|
12
|
+
import { wrapError, handleCreateUploadErrors, handleUploadFileErrors, handleCreateSubmissionErrors, generateExistingPendingSubmissionError, } from './errors.js';
|
|
13
|
+
import { SUBMISSION_PATHS, SUBMISSION_VALIDATION } from './config.js';
|
|
14
|
+
export async function assertNoPendingSubmissions() {
|
|
15
|
+
const pendingSubmission = await graphqlGetPendingSubmission();
|
|
16
|
+
if (pendingSubmission) {
|
|
17
|
+
throw await generateExistingPendingSubmissionError(pendingSubmission);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function assertManifestValid() {
|
|
21
|
+
const { valid, errors } = validateManifest();
|
|
22
|
+
if (!valid) {
|
|
23
|
+
throw new AbortError('Manifest invalid. Errors:', errors.map(error => ` • ${error}`).join('\n'), [
|
|
24
|
+
['Fix the above issues in your', { bold: 'manifest.json' }],
|
|
25
|
+
'Try again and if the issue continues, contact us.',
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const packageShopMini = async ({ inputDirectory, outputArchivePath, matchFilePattern, ignore, }) => {
|
|
30
|
+
try {
|
|
31
|
+
// Ensure the submissions cache dir exists
|
|
32
|
+
try {
|
|
33
|
+
mkdirSync(SUBMISSION_PATHS.SUBMISSION_CACHE_DIR);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// directory already exists. do nothing
|
|
37
|
+
}
|
|
38
|
+
await zip({
|
|
39
|
+
inputDirectory,
|
|
40
|
+
outputArchivePath,
|
|
41
|
+
matchFilePattern,
|
|
42
|
+
ignore,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw wrapError(error, 'Unable to package Shop Mini');
|
|
47
|
+
}
|
|
48
|
+
const packageSizeBytes = await fileSize(outputArchivePath);
|
|
49
|
+
if (packageSizeBytes > SUBMISSION_VALIDATION.SUBMISSION_FILE_SIZE_MAX_BYTES) {
|
|
50
|
+
outputDebug(outputContent `Filesize of ${outputToken.path(outputArchivePath)} is ${String(packageSizeBytes)} bytes`);
|
|
51
|
+
throw new AbortError('File size too large', `A Shop Mini can't be larger than ${Math.round(SUBMISSION_VALIDATION.SUBMISSION_FILE_SIZE_MAX_BYTES / 1000 / 1000)}mb.`, [
|
|
52
|
+
'Reduce file size of assets and files',
|
|
53
|
+
"Contact us if you're having issues reducing file size",
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
export const createStagedUpload = async ({ outputArchiveFilename, outputArchivePath, }) => {
|
|
58
|
+
const packageSizeBytes = await fileSize(outputArchivePath);
|
|
59
|
+
const packageChecksum = getFileChecksum(outputArchivePath);
|
|
60
|
+
const params = {
|
|
61
|
+
filename: outputArchiveFilename,
|
|
62
|
+
checksum: packageChecksum,
|
|
63
|
+
fileSize: packageSizeBytes,
|
|
64
|
+
mimeType: 'application/gzip',
|
|
65
|
+
};
|
|
66
|
+
const { upload, userErrors } = await graphqlCreateUpload(params);
|
|
67
|
+
handleCreateUploadErrors(params, userErrors);
|
|
68
|
+
return upload;
|
|
69
|
+
};
|
|
70
|
+
export const uploadSubmission = async ({ url, headers, outputArchivePath, }) => {
|
|
71
|
+
const params = {
|
|
72
|
+
filepath: outputArchivePath,
|
|
73
|
+
headers,
|
|
74
|
+
url,
|
|
75
|
+
};
|
|
76
|
+
try {
|
|
77
|
+
await uploadFile(params);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
handleUploadFileErrors(error);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
export const createSubmission = async ({ description, stagedUploadId, }) => {
|
|
84
|
+
const { submission, userErrors } = await graphqlCreateSubmission({
|
|
85
|
+
description,
|
|
86
|
+
uploadId: stagedUploadId,
|
|
87
|
+
});
|
|
88
|
+
await handleCreateSubmissionErrors(userErrors);
|
|
89
|
+
return submission;
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/commands/submit/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreateSubmissionMutation, CreateUploadMutation } from '../../data/types/autogenerated/shop-minis-admin-api/graphql.js';
|
|
2
|
+
export interface SubmitCommandArgs {
|
|
3
|
+
description?: string;
|
|
4
|
+
verbose?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface SubmitConfig {
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SubmitTasksData {
|
|
10
|
+
outputArchiveFilename: string | null;
|
|
11
|
+
outputArchivePath: string | null;
|
|
12
|
+
stagedUpload: CreateUploadMutation['submissionUploadCreate']['upload'] | null;
|
|
13
|
+
submission: CreateSubmissionMutation['submissionCreate']['submission'] | null;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/submit/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function assertCoreDependenciesVersion(): Promise<void>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import semver from 'semver';
|
|
2
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
3
|
+
import { AbortError } from '@shopify/cli-kit/node/error';
|
|
4
|
+
import { getPackageLatestVersionCommand, getPackageVersion, getRunBinCommand, } from '../../../utils/package-manager.js';
|
|
5
|
+
import { execAsync } from '../../../utils/exec-async-child-process.js';
|
|
6
|
+
import { CLI_VERSION } from '../../config.js';
|
|
7
|
+
import { wrapError } from '../errors.js';
|
|
8
|
+
export async function assertCoreDependenciesVersion() {
|
|
9
|
+
const [getLatestCliVersionCommand, getLatestRuntimeVersionCommand, upgradeCommand,] = await Promise.all([
|
|
10
|
+
getPackageLatestVersionCommand('@shopify/shop-minis-cli'),
|
|
11
|
+
getPackageLatestVersionCommand('@shopify/shop-minis-runtime'),
|
|
12
|
+
getRunBinCommand('shop-minis upgrade'),
|
|
13
|
+
]);
|
|
14
|
+
outputDebug(`Executing \`${getLatestCliVersionCommand}\` and \`${getLatestRuntimeVersionCommand}\` to get the latest CLI and runtime versions`);
|
|
15
|
+
const [{ stdout: latestCliVersionStdout }, { stdout: latestRuntimeVersionStdout },] = await Promise.all([
|
|
16
|
+
execAsync({
|
|
17
|
+
cmd: getLatestCliVersionCommand,
|
|
18
|
+
}),
|
|
19
|
+
execAsync({
|
|
20
|
+
cmd: getLatestRuntimeVersionCommand,
|
|
21
|
+
}),
|
|
22
|
+
]);
|
|
23
|
+
const latestCliVersion = latestCliVersionStdout[0];
|
|
24
|
+
const latestRuntimeVersion = latestRuntimeVersionStdout[0];
|
|
25
|
+
const installedCliVersion = CLI_VERSION;
|
|
26
|
+
const installedRuntimeVersion = await getPackageVersion('@shopify/shop-minis-runtime');
|
|
27
|
+
outputDebug(`Latest CLI version is ${latestCliVersion ?? 'not found'} - Installed CLI version is ${installedCliVersion ?? 'not found'}`);
|
|
28
|
+
outputDebug(`Latest runtime version is ${latestRuntimeVersion ?? 'not found'} - Installed runtime version is ${installedRuntimeVersion ?? 'not found'}`);
|
|
29
|
+
assertDependencyVersion({
|
|
30
|
+
dependencyName: '@shopify/shop-minis-cli',
|
|
31
|
+
currentVersion: installedCliVersion,
|
|
32
|
+
expectedVersion: latestCliVersion,
|
|
33
|
+
suggestedSolution: upgradeCommand,
|
|
34
|
+
});
|
|
35
|
+
assertDependencyVersion({
|
|
36
|
+
dependencyName: '@shopify/shop-minis-runtime',
|
|
37
|
+
currentVersion: installedRuntimeVersion,
|
|
38
|
+
expectedVersion: latestRuntimeVersion,
|
|
39
|
+
suggestedSolution: upgradeCommand,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function assertDependencyVersion({ dependencyName, currentVersion, expectedVersion, suggestedSolution, }) {
|
|
43
|
+
try {
|
|
44
|
+
const isUpToDate = semver.eq(currentVersion ?? '0.0.0', expectedVersion);
|
|
45
|
+
if (!isUpToDate) {
|
|
46
|
+
throw new AbortError(`${dependencyName} has to be updated`, `Current version: ${currentVersion} (latest: ${expectedVersion})`, [['Use', { command: suggestedSolution }, 'to update']]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error instanceof AbortError) {
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
throw wrapError(error, `Unable to detect and compare the current and latest versions of ${dependencyName}\n\n` +
|
|
54
|
+
`Installed version is ${currentVersion ?? 'not found'}\n` +
|
|
55
|
+
`Latest version is ${expectedVersion ?? 'not found'}\n\n`, { separator: '' });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=assert-core-dependencies-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-core-dependencies-version.js","sourceRoot":"","sources":["../../../../src/commands/submit/utils/assert-core-dependencies-version.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function requestEntryPointParams(): Promise<string>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import editor from '@inquirer/editor';
|
|
2
|
+
import { getDevelopmentEntryPointParams } from '../../../utils/development-params.js';
|
|
3
|
+
export async function requestEntryPointParams() {
|
|
4
|
+
const entryPointParams = await editor({
|
|
5
|
+
message: 'Provide one or more set of entry point parameters that can be used to test your mini',
|
|
6
|
+
default: getEntryPointParamsTemplate(),
|
|
7
|
+
postfix: '.yml',
|
|
8
|
+
});
|
|
9
|
+
return cleanUpEntryPointParams(entryPointParams);
|
|
10
|
+
}
|
|
11
|
+
const EMPTY_ID = 'XXXXXXXXX';
|
|
12
|
+
const TEMPLATE_HEADER = '# Params persisted in the file entry-point-params.json are prepopulated here';
|
|
13
|
+
/**
|
|
14
|
+
* Removes remaining template strings in case the partners forget to remove them.
|
|
15
|
+
*/
|
|
16
|
+
function cleanUpEntryPointParams(entryPointParams) {
|
|
17
|
+
return entryPointParams
|
|
18
|
+
.replace(TEMPLATE_HEADER, '')
|
|
19
|
+
.split('\n')
|
|
20
|
+
.filter(line => line.trim().length > 0)
|
|
21
|
+
.filter(line => !line.includes(EMPTY_ID))
|
|
22
|
+
.join('\n');
|
|
23
|
+
}
|
|
24
|
+
function getEntryPointParamsTemplate() {
|
|
25
|
+
const { external_id, order_id, product_id, product_variant_id, shop_id, shop_domain, } = getDevelopmentEntryPointParams();
|
|
26
|
+
return `${TEMPLATE_HEADER}
|
|
27
|
+
|
|
28
|
+
- shop_id: ${shop_id || EMPTY_ID}
|
|
29
|
+
product_id: ${product_id || EMPTY_ID}
|
|
30
|
+
product_variant_id: ${product_variant_id || EMPTY_ID}
|
|
31
|
+
external_id: ${external_id || EMPTY_ID}
|
|
32
|
+
order_id: ${order_id || EMPTY_ID}
|
|
33
|
+
shop_domain: ${shop_domain || EMPTY_ID}
|
|
34
|
+
- shop_id: ${EMPTY_ID}
|
|
35
|
+
product_id: ${EMPTY_ID}
|
|
36
|
+
product_variant_id: ${EMPTY_ID}
|
|
37
|
+
external_id: ${EMPTY_ID}
|
|
38
|
+
order_id: ${EMPTY_ID}
|
|
39
|
+
shop_domain: ${EMPTY_ID}`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=request-entry-point-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-entry-point-params.js","sourceRoot":"","sources":["../../../../src/commands/submit/utils/request-entry-point-params.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,kBAAkB,CAAA;AAErC,OAAO,EAAC,8BAA8B,EAAC,MAAM,sCAAsC,CAAA;AAEnF,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC;QACpC,OAAO,EACL,sFAAsF;QACxF,OAAO,EAAE,2BAA2B,EAAE;QACtC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAA;IAEF,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,QAAQ,GAAG,WAAW,CAAA;AAC5B,MAAM,eAAe,GACnB,8EAA8E,CAAA;AAEhF;;GAEG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,gBAAgB;SACpB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,SAAS,2BAA2B;IAClC,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,OAAO,EACP,WAAW,GACZ,GAAG,8BAA8B,EAAE,CAAA;IAEpC,OAAO,GAAG,eAAe;;aAEd,OAAO,IAAI,QAAQ;gBAChB,UAAU,IAAI,QAAQ;wBACd,kBAAkB,IAAI,QAAQ;iBACrC,WAAW,IAAI,QAAQ;cAC1B,QAAQ,IAAI,QAAQ;iBACjB,WAAW,IAAI,QAAQ;aAC3B,QAAQ;gBACL,QAAQ;wBACA,QAAQ;iBACf,QAAQ;cACX,QAAQ;iBACL,QAAQ,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const validateDescription: (value: string) => string | true;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SUBMISSION_VALIDATION } from './config.js';
|
|
2
|
+
export const validateDescription = (value) => {
|
|
3
|
+
if (!value || value.length === 0) {
|
|
4
|
+
return "Description can't be empty";
|
|
5
|
+
}
|
|
6
|
+
if (value.length > SUBMISSION_VALIDATION.SUBMISSION_DESCRIPTION_MAX_LENGTH) {
|
|
7
|
+
return `Enter a shorter description (${SUBMISSION_VALIDATION.SUBMISSION_DESCRIPTION_MAX_LENGTH} character max.)`;
|
|
8
|
+
}
|
|
9
|
+
return true;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/commands/submit/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE;IACnD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,4BAA4B,CAAA;KACpC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,iCAAiC,EAAE;QAC1E,OAAO,gCAAgC,qBAAqB,CAAC,iCAAiC,kBAAkB,CAAA;KACjH;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface UpgradeCommandArgs {
|
|
3
|
+
verbose?: boolean;
|
|
4
|
+
targetCliVersion: string;
|
|
5
|
+
/**
|
|
6
|
+
* automatically answer prompts with default options
|
|
7
|
+
*/
|
|
8
|
+
yes?: boolean;
|
|
9
|
+
runtimeUpgrade?: boolean;
|
|
10
|
+
codemod?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const command: Command;
|
|
13
|
+
export declare function loadCommand(parentProgram: Command): Promise<void>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
4
|
+
import { getMiniManifest } from '../../utils/minis-manifest.js';
|
|
5
|
+
import { CLI_VERSION as CURRENT_CLI_VERSION } from '../config.js';
|
|
6
|
+
import { getRunBinCommand, execUpgradePackageCommand, getPackageVersion, } from '../../utils/package-manager.js';
|
|
7
|
+
import { execAsync } from '../../utils/exec-async-child-process.js';
|
|
8
|
+
import { validateTargetCLIVersion } from './utils/cli.js';
|
|
9
|
+
export const command = new Command()
|
|
10
|
+
.name('upgrade')
|
|
11
|
+
.description('Upgrade your Shop Mini configuration')
|
|
12
|
+
.option('--verbose', 'print debugging messages')
|
|
13
|
+
.option('--target-cli-version <version>', 'specify a version of the CLI to upgrade to', 'latest')
|
|
14
|
+
.option('-y --yes', 'automatically answer prompts with default options')
|
|
15
|
+
.option('--no-runtime-upgrade', 'avoid upgrading @shopify/shop-minis-runtime')
|
|
16
|
+
.option('--no-codemod', 'avoid calling shop-minis codemod after upgrading packages')
|
|
17
|
+
.action(async (args) => {
|
|
18
|
+
const miniName = getMiniManifest().name;
|
|
19
|
+
const { targetCliVersion, runtimeUpgrade, codemod } = args;
|
|
20
|
+
outputDebug(`Upgrade args ${JSON.stringify(args)}`);
|
|
21
|
+
outputDebug(`Upgrading mini "${miniName}" at ${process.cwd()}`);
|
|
22
|
+
validateTargetCLIVersion(targetCliVersion, CURRENT_CLI_VERSION);
|
|
23
|
+
await execUpgradePackageCommand('@shopify/shop-minis-cli', {
|
|
24
|
+
exact: true,
|
|
25
|
+
version: targetCliVersion,
|
|
26
|
+
});
|
|
27
|
+
if (runtimeUpgrade) {
|
|
28
|
+
await execUpgradePackageCommand('@shopify/shop-minis-runtime', {
|
|
29
|
+
exact: true,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const updatedCLIVersion = await getPackageVersion('@shopify/shop-minis-cli');
|
|
33
|
+
outputDebug(`Updated CLI: ${CURRENT_CLI_VERSION} to ${updatedCLIVersion}`);
|
|
34
|
+
await execAsync({
|
|
35
|
+
cmd: await getRunBinCommand('shop-minis generate-graphql-types'),
|
|
36
|
+
loadingMessage: 'Recreating graphql types',
|
|
37
|
+
successMessage: 'GraphQL types updated',
|
|
38
|
+
});
|
|
39
|
+
if (codemod) {
|
|
40
|
+
// we run codemod in a separate process to make sure it uses the CLI version that was just installed
|
|
41
|
+
const codemodCommand = await getRunBinCommand('shop-minis codemod', [
|
|
42
|
+
`--from-version ${CURRENT_CLI_VERSION}`,
|
|
43
|
+
`--to-version ${updatedCLIVersion}`,
|
|
44
|
+
args.yes ? '-y' : '',
|
|
45
|
+
args.verbose ? '--verbose' : '',
|
|
46
|
+
].filter(Boolean));
|
|
47
|
+
execSync(codemodCommand, { stdio: 'inherit' });
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
export async function loadCommand(parentProgram) {
|
|
51
|
+
parentProgram.addCommand(command);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAC,WAAW,IAAI,mBAAmB,EAAC,MAAM,cAAc,CAAA;AAC/D,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,gBAAgB,CAAA;AAcvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CACL,gCAAgC,EAChC,4CAA4C,EAC5C,QAAQ,CACT;KACA,MAAM,CAAC,UAAU,EAAE,mDAAmD,CAAC;KACvE,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CACL,cAAc,EACd,2DAA2D,CAC5D;KACA,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC,IAAI,CAAA;IAEvC,MAAM,EAAC,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAC,GAAG,IAAI,CAAA;IAExD,WAAW,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnD,WAAW,CAAC,mBAAmB,QAAQ,QAAQ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAE/D,wBAAwB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAA;IAE/D,MAAM,yBAAyB,CAAC,yBAAyB,EAAE;QACzD,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAA;IAEF,IAAI,cAAc,EAAE;QAClB,MAAM,yBAAyB,CAAC,6BAA6B,EAAE;YAC7D,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;KACH;IAED,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;IAC5E,WAAW,CAAC,gBAAgB,mBAAmB,OAAO,iBAAiB,EAAE,CAAC,CAAA;IAE1E,MAAM,SAAS,CAAC;QACd,GAAG,EAAE,MAAM,gBAAgB,CAAC,mCAAmC,CAAC;QAChE,cAAc,EAAE,0BAA0B;QAC1C,cAAc,EAAE,uBAAuB;KACxC,CAAC,CAAA;IAEF,IAAI,OAAO,EAAE;QACX,oGAAoG;QACpG,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAC3C,oBAAoB,EACpB;YACE,kBAAkB,mBAAmB,EAAE;YACvC,gBAAgB,iBAAiB,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;SAChC,CAAC,MAAM,CAAC,OAAO,CAAC,CAClB,CAAA;QACD,QAAQ,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAA;KAC7C;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAsB;IACtD,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function validateTargetCLIVersion(targetCliVersion: string, currentCliVersion: string): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { handler as handleError } from '@shopify/cli-kit/node/error';
|
|
2
|
+
import { validateUpgradeBetweenVersions } from '../../../utils/semver.js';
|
|
3
|
+
export function validateTargetCLIVersion(targetCliVersion, currentCliVersion) {
|
|
4
|
+
if (targetCliVersion === 'latest') {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
try {
|
|
8
|
+
validateUpgradeBetweenVersions(currentCliVersion, targetCliVersion);
|
|
9
|
+
}
|
|
10
|
+
catch (err) {
|
|
11
|
+
handleError(err);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/commands/upgrade/utils/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAC,8BAA8B,EAAC,MAAM,0BAA0B,CAAA;AAEvE,MAAM,UAAU,wBAAwB,CACtC,gBAAwB,EACxB,iBAAyB;IAEzB,IAAI,gBAAgB,KAAK,QAAQ,EAAE;QACjC,OAAM;KACP;IAED,IAAI;QACF,8BAA8B,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;KACpE;IAAC,OAAO,GAAG,EAAE;QACZ,WAAW,CAAC,GAAG,CAAC,CAAA;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;AACH,CAAC"}
|