@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
|
@@ -1,173 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.maybePromptBinaryUpgrade = exports.downloadBinary = exports.getLatestRemoteVersion = exports.getLatestDownloadedVersion = exports.isVersionAvailableLocally = exports.getLatestVersionFromFilesList = exports.binaryFileNameToVersion = exports.versionToBinaryFileName = exports.getBinaryFileExtensionForPlatform = exports.BINARIES_PATH = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const http_1 = __importDefault(require("http"));
|
|
9
|
-
const storage_1 = require("@google-cloud/storage");
|
|
10
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
-
const semver_1 = require("semver");
|
|
12
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
13
|
-
const prompts_1 = __importDefault(require("prompts"));
|
|
14
|
-
exports.BINARIES_PATH = path_1.default.join(process.cwd(), './.minis-cache');
|
|
15
|
-
// TODO: set up domain and ssl certificate for cdn
|
|
16
|
-
// https://console.cloud.google.com/net-services/cdn/backendBucket/details/minis-binaries-backend-bucket?project=arrive-167720
|
|
17
|
-
// https://console.cloud.google.com/storage/browser/minis_cli_binaries
|
|
18
|
-
const CDN_ADDRESS = 'http://35.244.235.176/';
|
|
19
|
-
try {
|
|
20
|
-
fs_extra_1.default.mkdirSync(exports.BINARIES_PATH);
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
// directory already exists. do nothing
|
|
24
|
-
}
|
|
25
|
-
const GOOGLE_CLOUD_BUCKET_NAME = 'minis_cli_binaries';
|
|
26
|
-
const bucket = new storage_1.Storage().bucket(GOOGLE_CLOUD_BUCKET_NAME);
|
|
27
|
-
/**
|
|
28
|
-
* Returns the file extension used for each platform.
|
|
29
|
-
* android: .apk
|
|
30
|
-
* ios: .zip (we intentionally compress .app files before uploading them to the cloud storage)
|
|
31
|
-
*/
|
|
32
|
-
function getBinaryFileExtensionForPlatform(platform) {
|
|
33
|
-
return platform === 'ios' ? '.zip' : '.apk';
|
|
34
|
-
}
|
|
35
|
-
exports.getBinaryFileExtensionForPlatform = getBinaryFileExtensionForPlatform;
|
|
36
|
-
/**
|
|
37
|
-
* @example
|
|
38
|
-
* platform android
|
|
39
|
-
* version 2.76.0
|
|
40
|
-
* returns "2-76-0.apk"
|
|
41
|
-
*
|
|
42
|
-
* platform ios
|
|
43
|
-
* version 2.55.0+4
|
|
44
|
-
* returns "2-55-0+4.zip"
|
|
45
|
-
*/
|
|
46
|
-
function versionToBinaryFileName(version, platform) {
|
|
47
|
-
return (version.replace(/\./g, '-') + getBinaryFileExtensionForPlatform(platform));
|
|
48
|
-
}
|
|
49
|
-
exports.versionToBinaryFileName = versionToBinaryFileName;
|
|
50
|
-
/**
|
|
51
|
-
* @example
|
|
52
|
-
* binaryFileName "2-76-0.apk"
|
|
53
|
-
* returns "2.76.0"
|
|
54
|
-
*
|
|
55
|
-
* binaryFileName "2-16-0+3.zip"
|
|
56
|
-
* returns "2.16.0+3"
|
|
57
|
-
*/
|
|
58
|
-
function binaryFileNameToVersion(binaryFileName) {
|
|
59
|
-
return binaryFileName.split('.')[0].replace(/-/g, '.');
|
|
60
|
-
}
|
|
61
|
-
exports.binaryFileNameToVersion = binaryFileNameToVersion;
|
|
62
|
-
/**
|
|
63
|
-
* @example
|
|
64
|
-
* filenames ["2-76-0+3.apk", "2-76-0+3.zip", "2-77-0.apk", "2-77-0.zip", "2-77-0+1.apk", "2-77-0+1.zip"]
|
|
65
|
-
* returns "2.77.0+1"
|
|
66
|
-
*/
|
|
67
|
-
function getLatestVersionFromFilesList(filenames) {
|
|
68
|
-
const localVersions = lodash_1.default.uniq(filenames
|
|
69
|
-
.map(binaryFileNameToVersion)
|
|
70
|
-
.filter(version => (0, semver_1.valid)(version)));
|
|
71
|
-
localVersions.sort(semver_1.compareBuild);
|
|
72
|
-
const last = localVersions.slice(-1)[0];
|
|
73
|
-
return last ?? null;
|
|
74
|
-
}
|
|
75
|
-
exports.getLatestVersionFromFilesList = getLatestVersionFromFilesList;
|
|
1
|
+
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import { PATHS } from '../../config.js';
|
|
3
|
+
import { metadataToBinaryFileName } from './version.js';
|
|
76
4
|
/**
|
|
77
5
|
* Returns a boolean indicating if the binary for the given version and platform is already downloaded in the system
|
|
78
6
|
*/
|
|
79
|
-
async function isVersionAvailableLocally(
|
|
80
|
-
const localBinariesList = await
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
exports.isVersionAvailableLocally = isVersionAvailableLocally;
|
|
85
|
-
/**
|
|
86
|
-
* Gets the biggest version in the downloads folder for the given platform.
|
|
87
|
-
*/
|
|
88
|
-
async function getLatestDownloadedVersion(platform) {
|
|
89
|
-
const localBinariesList = await fs_extra_1.default.readdir(exports.BINARIES_PATH);
|
|
90
|
-
const localBinariesForPlatform = localBinariesList.filter(name => name.endsWith(getBinaryFileExtensionForPlatform(platform)));
|
|
91
|
-
return getLatestVersionFromFilesList(localBinariesForPlatform);
|
|
92
|
-
}
|
|
93
|
-
exports.getLatestDownloadedVersion = getLatestDownloadedVersion;
|
|
94
|
-
/**
|
|
95
|
-
* Returns the latest version that's present in the remote storage of binaries
|
|
96
|
-
* TODO: this won't handle a bucket that has more than 50 files.
|
|
97
|
-
*/
|
|
98
|
-
async function getLatestRemoteVersion(platform) {
|
|
99
|
-
const filesResponse = await bucket.getFiles();
|
|
100
|
-
const filesMetadata = filesResponse[0];
|
|
101
|
-
const fileNames = filesMetadata
|
|
102
|
-
.map(file => file.name)
|
|
103
|
-
.filter(name => name.endsWith(getBinaryFileExtensionForPlatform(platform)));
|
|
104
|
-
return getLatestVersionFromFilesList(fileNames);
|
|
105
|
-
}
|
|
106
|
-
exports.getLatestRemoteVersion = getLatestRemoteVersion;
|
|
107
|
-
/**
|
|
108
|
-
* Downloads a binary from the remote storage
|
|
109
|
-
* @returns Promise that resolves to the downloaded version
|
|
110
|
-
*/
|
|
111
|
-
async function downloadBinary(platform, { onProgress, version, } = {}) {
|
|
112
|
-
const versionToDownload = version || (await getLatestRemoteVersion(platform));
|
|
113
|
-
const isVersionAlreadyDownloaded = await isVersionAvailableLocally(platform, versionToDownload);
|
|
114
|
-
if (isVersionAlreadyDownloaded) {
|
|
115
|
-
onProgress?.(100);
|
|
116
|
-
return versionToDownload;
|
|
117
|
-
}
|
|
118
|
-
const fileName = versionToBinaryFileName(versionToDownload, platform);
|
|
119
|
-
const bucketResponse = await bucket.getFiles({
|
|
120
|
-
prefix: fileName,
|
|
121
|
-
});
|
|
122
|
-
const remoteFile = bucketResponse[0][0];
|
|
123
|
-
const fileSize = parseInt(remoteFile.metadata.size, 10);
|
|
124
|
-
return new Promise((resolve, reject) => {
|
|
125
|
-
const writeStream = fs_extra_1.default.createWriteStream(`${exports.BINARIES_PATH}/${fileName}`);
|
|
126
|
-
const progressInterval = setInterval(() => {
|
|
127
|
-
const progress = Math.round((writeStream.bytesWritten / fileSize) * 100);
|
|
128
|
-
onProgress?.(progress);
|
|
129
|
-
}, 200);
|
|
130
|
-
http_1.default.get(`${CDN_ADDRESS}${fileName}`, cdnResponse => {
|
|
131
|
-
cdnResponse.pipe(writeStream);
|
|
132
|
-
writeStream.on('finish', () => {
|
|
133
|
-
writeStream.close();
|
|
134
|
-
onProgress?.(100);
|
|
135
|
-
resolve(versionToDownload);
|
|
136
|
-
clearInterval(progressInterval);
|
|
137
|
-
});
|
|
138
|
-
writeStream.on('error', err => {
|
|
139
|
-
reject(err);
|
|
140
|
-
clearInterval(progressInterval);
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
exports.downloadBinary = downloadBinary;
|
|
146
|
-
/**
|
|
147
|
-
* Compares the current version against the latest available version.
|
|
148
|
-
*
|
|
149
|
-
* Does nothing if the current version is already the latest.
|
|
150
|
-
* Otherwise prompts the user to download the new version.
|
|
151
|
-
*/
|
|
152
|
-
async function maybePromptBinaryUpgrade(platform, { currentVersion, onProgress, onDownloadStart, } = {}) {
|
|
153
|
-
const _currentVersion = currentVersion || (await getLatestDownloadedVersion(platform));
|
|
154
|
-
const latestVersion = await getLatestRemoteVersion(platform);
|
|
155
|
-
if (latestVersion === _currentVersion) {
|
|
156
|
-
// returns early if user is already on latest version
|
|
157
|
-
return null;
|
|
7
|
+
export async function isVersionAvailableLocally(version) {
|
|
8
|
+
const localBinariesList = await readdir(PATHS.CACHE_DIR);
|
|
9
|
+
try {
|
|
10
|
+
const fileName = metadataToBinaryFileName(version);
|
|
11
|
+
return localBinariesList.includes(fileName);
|
|
158
12
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
initial: true,
|
|
162
|
-
name: 'shouldUpdate',
|
|
163
|
-
message: "There's a new version of Shop available. Do you want to upgrade?",
|
|
164
|
-
});
|
|
165
|
-
if (shouldUpdate) {
|
|
166
|
-
onDownloadStart?.(latestVersion);
|
|
167
|
-
await downloadBinary(platform, { version: latestVersion, onProgress });
|
|
168
|
-
return latestVersion;
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
169
15
|
}
|
|
170
|
-
return null;
|
|
171
16
|
}
|
|
172
|
-
exports.maybePromptBinaryUpgrade = maybePromptBinaryUpgrade;
|
|
173
17
|
//# sourceMappingURL=binaries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binaries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/binaries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binaries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/binaries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAA;AAGrC,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAuB;IACrE,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACxD,IAAI;QACF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;QAElD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;KAC5C;IAAC,MAAM;QACN,OAAO,KAAK,CAAA;KACb;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BuildType } from './types.js';
|
|
2
|
+
export function getBuildTypeForBinaryBuildType(type) {
|
|
3
|
+
switch (type) {
|
|
4
|
+
case 'release':
|
|
5
|
+
return BuildType.Release;
|
|
6
|
+
case 'nightly':
|
|
7
|
+
return BuildType.Nightly;
|
|
8
|
+
case 'snapshot':
|
|
9
|
+
return BuildType.Snapshot;
|
|
10
|
+
default:
|
|
11
|
+
throw new Error(`Invalid build type: ${type}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=build-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-type.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/build-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAA;AAEpC,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,OAAO,CAAA;QAC1B,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,OAAO,CAAA;QAC1B,KAAK,UAAU;YACb,OAAO,SAAS,CAAC,QAAQ,CAAA;QAC3B;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;KACjD;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { DevCommandOptions } from '
|
|
2
|
-
export declare function getBundleUrl({ host }: DevCommandOptions):
|
|
3
|
-
export declare function getDeeplink(miniHandle: string, options: DevCommandOptions, universalLink?: boolean):
|
|
1
|
+
import type { DevCommandOptions } from '../index.js';
|
|
2
|
+
export declare function getBundleUrl({ host }: DevCommandOptions): string;
|
|
3
|
+
export declare function getDeeplink(miniHandle: string, options: DevCommandOptions, universalLink?: boolean): string;
|
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
async function getBundleUrl({ host }) {
|
|
1
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
2
|
+
import { getDevelopmentEntryPointParamsQueryString } from '../../../utils/development-params.js';
|
|
3
|
+
export function getBundleUrl({ host }) {
|
|
5
4
|
return `http://${host}:8082/index.bundle`;
|
|
6
5
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const bundleUrl = await getBundleUrl(options);
|
|
6
|
+
function getDeeplinkParams(miniHandle, options) {
|
|
7
|
+
const bundleUrl = getBundleUrl(options);
|
|
10
8
|
const params = {
|
|
11
9
|
handle: miniHandle,
|
|
12
10
|
bundleUrl: encodeURIComponent(bundleUrl),
|
|
13
11
|
rnVersion: process.env.npm_package_dependencies_react_native,
|
|
14
|
-
manifest: {},
|
|
15
|
-
entryPointsParams: null,
|
|
16
12
|
};
|
|
17
13
|
const stringifiedParams = JSON.stringify(params);
|
|
18
14
|
return Buffer.from(stringifiedParams).toString('base64');
|
|
19
15
|
}
|
|
20
|
-
|
|
21
|
-
const deeplinkParams =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
export function getDeeplink(miniHandle, options, universalLink = false) {
|
|
17
|
+
const deeplinkParams = getDeeplinkParams(miniHandle, options);
|
|
18
|
+
const developmentParams = getDevelopmentEntryPointParamsQueryString();
|
|
19
|
+
const deeplink = universalLink
|
|
20
|
+
? `https://shop.app/mini/remote/${deeplinkParams}${developmentParams}`
|
|
21
|
+
: `arrive://mini/remote/${deeplinkParams}${developmentParams}`;
|
|
22
|
+
outputDebug(`Deeplink: ${deeplink}`);
|
|
23
|
+
return deeplink;
|
|
28
24
|
}
|
|
29
|
-
exports.getDeeplink = getDeeplink;
|
|
30
25
|
//# sourceMappingURL=deeplink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deeplink.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/deeplink.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deeplink.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/deeplink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAGxD,OAAO,EAAC,yCAAyC,EAAC,MAAM,sCAAsC,CAAA;AAE9F,MAAM,UAAU,YAAY,CAAC,EAAC,IAAI,EAAoB;IACpD,OAAO,UAAU,IAAI,oBAAoB,CAAA;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,OAA0B;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAEvC,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;QACxC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC;KAC7D,CAAA;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,OAA0B,EAC1B,aAAa,GAAG,KAAK;IAErB,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,iBAAiB,GAAG,yCAAyC,EAAE,CAAA;IAErE,MAAM,QAAQ,GAAG,aAAa;QAC5B,CAAC,CAAC,gCAAgC,cAAc,GAAG,iBAAiB,EAAE;QACtE,CAAC,CAAC,wBAAwB,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAEhE,WAAW,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;IAEpC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Ora } from 'ora';
|
|
2
|
-
import type { DevCommandOptions } from '
|
|
2
|
+
import type { DevCommandOptions } from '../index.js';
|
|
3
3
|
export declare class InteractiveTerminal {
|
|
4
4
|
miniHandle: string;
|
|
5
5
|
options: DevCommandOptions;
|
|
@@ -18,6 +18,8 @@ export declare class InteractiveTerminal {
|
|
|
18
18
|
loadingEnd(endState?: 'succeed' | 'fail' | 'warn' | 'info', logMessage?: string): void;
|
|
19
19
|
handleKeyPress: (key: string) => Promise<void>;
|
|
20
20
|
showSetupAndroidHomeInstructions(): Promise<void>;
|
|
21
|
-
startAndroidApp(deviceId: string): Promise<void>;
|
|
22
21
|
printDeeplinkQRCode(): Promise<void>;
|
|
22
|
+
private startApp;
|
|
23
|
+
private get deeplink();
|
|
24
|
+
private get loadingHandlers();
|
|
23
25
|
}
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const qr_code_1 = require("./qr-code");
|
|
14
|
-
const deeplink_1 = require("./deeplink");
|
|
15
|
-
const minis_manifest_1 = require("./minis-manifest");
|
|
16
|
-
const binaries_1 = require("./binaries");
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import open from 'open';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { getMiniManifest } from '../../../utils/minis-manifest.js';
|
|
5
|
+
import { androidHomeExists } from '../../config.js';
|
|
6
|
+
import { maybeLaunchEmulator, promptForAndroidDevices } from './android.js';
|
|
7
|
+
import { getBundleUrl, getDeeplink } from './deeplink.js';
|
|
8
|
+
import { printQRCode } from './qr-code.js';
|
|
9
|
+
import { bootSimulator, promptForSimulator } from './simulator.js';
|
|
10
|
+
import { Platform } from './platform.js';
|
|
11
|
+
import { startApp } from './start-app/start-app.js';
|
|
12
|
+
import { DEV_PANEL_BASE_URL } from './metro/metro-server-middleware.js';
|
|
17
13
|
const { stdin } = process;
|
|
18
14
|
function clearTerminal() {
|
|
19
15
|
process.stdout.write('\x1B[2J\x1B[3J\x1B[H');
|
|
20
16
|
}
|
|
21
17
|
const CTRL_C = '\u0003';
|
|
22
|
-
class InteractiveTerminal {
|
|
18
|
+
export class InteractiveTerminal {
|
|
23
19
|
miniHandle;
|
|
24
20
|
options;
|
|
25
21
|
_loading;
|
|
26
22
|
constructor(options) {
|
|
27
|
-
this.miniHandle =
|
|
23
|
+
this.miniHandle = getMiniManifest().handle;
|
|
28
24
|
this.options = options;
|
|
29
25
|
}
|
|
30
26
|
startWaitingForCommand = () => {
|
|
@@ -61,13 +57,13 @@ class InteractiveTerminal {
|
|
|
61
57
|
}));
|
|
62
58
|
};
|
|
63
59
|
logInstructions() {
|
|
64
|
-
console.log(`\n› Press ${
|
|
65
|
-
› Press ${
|
|
66
|
-
console.log(`\n› Press ${
|
|
67
|
-
› Press ${
|
|
68
|
-
console.log(`\n› Press ${
|
|
60
|
+
console.log(`\n› Press ${chalk.cyan.bold(`a`)} │ Open on Android device or emulator
|
|
61
|
+
› Press ${chalk.cyan.bold(`i`)} │ Open in iOS simulator`);
|
|
62
|
+
console.log(`\n› Press ${chalk.cyan.bold(`q`)} │ Print QR code in terminal. Scan to open your Shop Mini on an iOS device with Shop installed
|
|
63
|
+
› Press ${chalk.cyan.bold(`d`)} │ Open Developer Dashboard in web browser`);
|
|
64
|
+
console.log(`\n› Press ${chalk.cyan.bold(`?`)} │ Show all commands
|
|
69
65
|
`);
|
|
70
|
-
console.log(
|
|
66
|
+
console.log(chalk.dim('Press Ctrl+C to exit.'));
|
|
71
67
|
}
|
|
72
68
|
start() {
|
|
73
69
|
this.logInstructions();
|
|
@@ -90,7 +86,7 @@ class InteractiveTerminal {
|
|
|
90
86
|
if (this._loading) {
|
|
91
87
|
this.loadingEnd(options.endPreviousLoadingWithStatus, options.endPreviousLoadingWithMessage);
|
|
92
88
|
}
|
|
93
|
-
this._loading = (
|
|
89
|
+
this._loading = ora({ text: logMessage }).start();
|
|
94
90
|
}
|
|
95
91
|
loadingEnd(endState = 'succeed', logMessage) {
|
|
96
92
|
if (!this._loading) {
|
|
@@ -107,70 +103,40 @@ class InteractiveTerminal {
|
|
|
107
103
|
}
|
|
108
104
|
case 'a': {
|
|
109
105
|
clearTerminal();
|
|
110
|
-
if (!
|
|
106
|
+
if (!androidHomeExists()) {
|
|
111
107
|
this.showSetupAndroidHomeInstructions();
|
|
112
108
|
break;
|
|
113
109
|
}
|
|
114
|
-
const device = await
|
|
110
|
+
const device = await promptForAndroidDevices();
|
|
115
111
|
if (device) {
|
|
116
112
|
if (device.type === 'emulator') {
|
|
117
113
|
this.loadingStart('Launching emulator');
|
|
118
|
-
const emulatorId = await
|
|
114
|
+
const emulatorId = await maybeLaunchEmulator(device.name);
|
|
119
115
|
if (!emulatorId) {
|
|
120
116
|
this.loadingEnd('fail', `Couldn't launch emulator ${device.name}`);
|
|
121
117
|
break;
|
|
122
118
|
}
|
|
123
|
-
await this.
|
|
119
|
+
await this.startApp(Platform.Android, emulatorId);
|
|
124
120
|
}
|
|
125
121
|
else {
|
|
126
|
-
await this.
|
|
122
|
+
await this.startApp(Platform.Android, device.name);
|
|
127
123
|
}
|
|
128
124
|
}
|
|
129
125
|
else {
|
|
130
126
|
console.log('\nNo connected devices or emulators were found\n');
|
|
131
|
-
console.log(`See ${
|
|
132
|
-
console.log(`Or ${
|
|
127
|
+
console.log(`See ${chalk.blue.underline.bold('https://developer.android.com/studio/command-line/adb#Enabling')} for instructions on how to enable USB debugging on your device.`);
|
|
128
|
+
console.log(`Or ${chalk.blue.underline.bold('https://developer.android.com/studio/run/emulator#get-started')} for instructions on how to create an emulator.`);
|
|
133
129
|
this.waitForAnyKeyAndPrintInstructions();
|
|
134
130
|
}
|
|
135
131
|
break;
|
|
136
132
|
}
|
|
137
133
|
case 'i': {
|
|
138
134
|
clearTerminal();
|
|
139
|
-
const simulator = await
|
|
135
|
+
const simulator = await promptForSimulator();
|
|
140
136
|
if (simulator) {
|
|
141
137
|
this.loadingStart('Launching simulator');
|
|
142
|
-
await
|
|
143
|
-
|
|
144
|
-
if (installedShopVersion) {
|
|
145
|
-
this.loadingEnd();
|
|
146
|
-
// We assume that the version being used in the simulator matches the biggest version in the downloads folder
|
|
147
|
-
// because version returned by the simulator does not include build numbers.
|
|
148
|
-
const upgradedVersion = await (0, binaries_1.maybePromptBinaryUpgrade)('ios', {
|
|
149
|
-
onDownloadStart: () => {
|
|
150
|
-
this.loadingStart('Downloading Shop (0%)');
|
|
151
|
-
},
|
|
152
|
-
onProgress: progress => {
|
|
153
|
-
this._loading.text = `Downloading Shop (${progress}%)`;
|
|
154
|
-
},
|
|
155
|
-
});
|
|
156
|
-
if (upgradedVersion) {
|
|
157
|
-
this.loadingStart('Installing Shop');
|
|
158
|
-
await (0, simulator_1.installShopInSimulator)(simulator.udid, upgradedVersion);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
this.loadingStart('Downloading Shop (0%)');
|
|
163
|
-
const downloadedVersion = await (0, binaries_1.downloadBinary)('ios', {
|
|
164
|
-
onProgress: progress => {
|
|
165
|
-
this._loading.text = `Downloading Shop (${progress}%)`;
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
this.loadingStart('Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).');
|
|
169
|
-
await (0, simulator_1.installShopInSimulator)(simulator.udid, downloadedVersion);
|
|
170
|
-
}
|
|
171
|
-
this.loadingStart('Opening Shop');
|
|
172
|
-
await (0, simulator_1.deeplinkToSimulator)(simulator.udid, await (0, deeplink_1.getDeeplink)(this.miniHandle, this.options));
|
|
173
|
-
this.loadingEnd();
|
|
138
|
+
await bootSimulator(simulator.udid);
|
|
139
|
+
await this.startApp(Platform.IOS, simulator.udid);
|
|
174
140
|
}
|
|
175
141
|
else {
|
|
176
142
|
console.log('\nNo simulator was selected\n');
|
|
@@ -183,13 +149,13 @@ class InteractiveTerminal {
|
|
|
183
149
|
}
|
|
184
150
|
case 'd': {
|
|
185
151
|
// TODO: Should we send these as params? or should the dev panel website already know how to fetch them without the need of query params?
|
|
186
|
-
//
|
|
152
|
+
// Advantage would be that people could just type the base url in the browser whenever they want to open the dev panel. That's impossible with the query params being required
|
|
187
153
|
const paramsObj = {
|
|
188
|
-
bundleUrl:
|
|
189
|
-
deepLink:
|
|
154
|
+
bundleUrl: getBundleUrl(this.options),
|
|
155
|
+
deepLink: getDeeplink(this.miniHandle, this.options, true),
|
|
190
156
|
};
|
|
191
157
|
const searchParams = `?${new URLSearchParams(paramsObj).toString()}`;
|
|
192
|
-
(
|
|
158
|
+
open(`${DEV_PANEL_BASE_URL}${searchParams}`);
|
|
193
159
|
break;
|
|
194
160
|
}
|
|
195
161
|
case CTRL_C: {
|
|
@@ -204,49 +170,42 @@ class InteractiveTerminal {
|
|
|
204
170
|
}
|
|
205
171
|
};
|
|
206
172
|
async showSetupAndroidHomeInstructions() {
|
|
207
|
-
console.warn(
|
|
208
|
-
console.log(`See ${
|
|
173
|
+
console.warn(chalk.red("ANDROID_HOME environment variable is not set. Set Android SDK path to continue. Instructions on how to set it can be found on Android's developer docs."));
|
|
174
|
+
console.log(`See ${chalk.blue.underline.bold('https://developer.android.com/studio/command-line/variables')}`);
|
|
209
175
|
await this.waitForAnyKeyAndPrintInstructions();
|
|
210
176
|
}
|
|
211
|
-
async startAndroidApp(deviceId) {
|
|
212
|
-
const installedShopVersion = await (0, android_1.getInstalledShopVersion)(deviceId);
|
|
213
|
-
if (installedShopVersion) {
|
|
214
|
-
this.loadingEnd();
|
|
215
|
-
// We assume that the version being used in the emulator matches the biggest version in the downloads folder
|
|
216
|
-
// because version returned by the emulator does not include build numbers.
|
|
217
|
-
const upgradedVersion = await (0, binaries_1.maybePromptBinaryUpgrade)('android', {
|
|
218
|
-
onDownloadStart: () => {
|
|
219
|
-
this.loadingStart('Downloading Shop (0%)');
|
|
220
|
-
},
|
|
221
|
-
onProgress: progress => {
|
|
222
|
-
this._loading.text = `Downloading Shop (${progress}%)`;
|
|
223
|
-
},
|
|
224
|
-
});
|
|
225
|
-
if (upgradedVersion) {
|
|
226
|
-
this.loadingStart('Installing Shop');
|
|
227
|
-
await (0, android_1.installShopInEmulator)(deviceId, upgradedVersion);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
this.loadingStart('Downloading Shop (0%)');
|
|
232
|
-
const downloadedVersion = await (0, binaries_1.downloadBinary)('android', {
|
|
233
|
-
onProgress: progress => {
|
|
234
|
-
this._loading.text = `Downloading Shop (${progress}%)`;
|
|
235
|
-
},
|
|
236
|
-
});
|
|
237
|
-
this.loadingStart('Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).');
|
|
238
|
-
await (0, android_1.installShopInEmulator)(deviceId, downloadedVersion);
|
|
239
|
-
}
|
|
240
|
-
this.loadingStart('Opening Shop');
|
|
241
|
-
await (0, android_1.connectDevelopmentServer)(deviceId);
|
|
242
|
-
await (0, android_1.deeplinkToEmulator)(deviceId, await (0, deeplink_1.getDeeplink)(this.miniHandle, this.options));
|
|
243
|
-
this.loadingEnd();
|
|
244
|
-
}
|
|
245
177
|
async printDeeplinkQRCode() {
|
|
246
178
|
console.log('\n');
|
|
247
|
-
await
|
|
179
|
+
await printQRCode(getDeeplink(this.miniHandle, this.options, true));
|
|
248
180
|
console.log('Scan the QR code to open Shop Mini on your device (requires the Shop app to be installed)\n');
|
|
249
181
|
}
|
|
182
|
+
async startApp(platform, deviceId) {
|
|
183
|
+
try {
|
|
184
|
+
await startApp({
|
|
185
|
+
platform,
|
|
186
|
+
deviceId,
|
|
187
|
+
deeplink: this.deeplink,
|
|
188
|
+
buildType: this.options.buildType,
|
|
189
|
+
snapshotVersion: this.options.snapshotVersion,
|
|
190
|
+
}, this.loadingHandlers);
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
this.loadingHandlers.onLoadingEnd('fail', err?.message || err);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
get deeplink() {
|
|
197
|
+
return getDeeplink(this.miniHandle, this.options);
|
|
198
|
+
}
|
|
199
|
+
get loadingHandlers() {
|
|
200
|
+
return {
|
|
201
|
+
onLoadingStart: this.loadingStart.bind(this),
|
|
202
|
+
onLoadingEnd: this.loadingEnd.bind(this),
|
|
203
|
+
onLoadingUpdate: (text) => {
|
|
204
|
+
if (this._loading) {
|
|
205
|
+
this._loading.text = text;
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
}
|
|
250
210
|
}
|
|
251
|
-
exports.InteractiveTerminal = InteractiveTerminal;
|
|
252
211
|
//# sourceMappingURL=interactive-terminal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-terminal.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/interactive-terminal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interactive-terminal.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/interactive-terminal.ts"],"names":[],"mappings":"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"}
|