@shopify/shop-minis-cli 0.0.0-snapshot.20240712123821
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/LICENSE +21 -0
- package/README.md +8 -0
- package/README_INTERNAL.md +115 -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 +89 -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-100.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-100.js +50 -0
- package/build/commands/codemod/releases/v0-0-100.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-103.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-103.js +43 -0
- package/build/commands/codemod/releases/v0-0-103.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-105.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-105.js +59 -0
- package/build/commands/codemod/releases/v0-0-105.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-106.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-106.js +32 -0
- package/build/commands/codemod/releases/v0-0-106.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-114.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-114.js +48 -0
- package/build/commands/codemod/releases/v0-0-114.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-115.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-115.js +50 -0
- package/build/commands/codemod/releases/v0-0-115.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-121.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-121.js +74 -0
- package/build/commands/codemod/releases/v0-0-121.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/codemod/releases/v0-0-84.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-84.js +41 -0
- package/build/commands/codemod/releases/v0-0-84.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-85.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-85.js +60 -0
- package/build/commands/codemod/releases/v0-0-85.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-89.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-89.js +60 -0
- package/build/commands/codemod/releases/v0-0-89.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-91/index.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-91/index.js +38 -0
- package/build/commands/codemod/releases/v0-0-91/index.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.d.ts +5 -0
- package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.js +45 -0
- package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.js +97 -0
- package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-92.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-92.js +38 -0
- package/build/commands/codemod/releases/v0-0-92.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/blank/App-after.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-93/blank/App-after.js +15 -0
- package/build/commands/codemod/releases/v0-0-93/blank/App-after.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/blank/App-before.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-93/blank/App-before.js +13 -0
- package/build/commands/codemod/releases/v0-0-93/blank/App-before.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/index.d.ts +6 -0
- package/build/commands/codemod/releases/v0-0-93/index.js +7 -0
- package/build/commands/codemod/releases/v0-0-93/index.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.js +53 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.js +43 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.js +49 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.js +42 -0
- package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-93.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-93.js +48 -0
- package/build/commands/codemod/releases/v0-0-93.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-97/index.d.ts +3 -0
- package/build/commands/codemod/releases/v0-0-97/index.js +20 -0
- package/build/commands/codemod/releases/v0-0-97/index.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.js +47 -0
- package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.js.map +1 -0
- package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.d.ts +1 -0
- package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.js +105 -0
- package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.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-extension/constants.d.ts +24 -0
- package/build/commands/create-extension/constants.js +68 -0
- package/build/commands/create-extension/constants.js.map +1 -0
- package/build/commands/create-extension/index.d.ts +2 -0
- package/build/commands/create-extension/index.js +122 -0
- package/build/commands/create-extension/index.js.map +1 -0
- package/build/commands/create-extension/types.d.ts +11 -0
- package/build/commands/create-extension/types.js +7 -0
- package/build/commands/create-extension/types.js.map +1 -0
- package/build/commands/create-extension/utils/add-target-to-config.d.ts +2 -0
- package/build/commands/create-extension/utils/add-target-to-config.js +56 -0
- package/build/commands/create-extension/utils/add-target-to-config.js.map +1 -0
- package/build/commands/create-extension/utils/create-from-template.d.ts +3 -0
- package/build/commands/create-extension/utils/create-from-template.js +46 -0
- package/build/commands/create-extension/utils/create-from-template.js.map +1 -0
- package/build/commands/create-mini/index.d.ts +2 -0
- package/build/commands/create-mini/index.js +137 -0
- package/build/commands/create-mini/index.js.map +1 -0
- package/build/commands/create-mini/utils/template-app.d.ts +1 -0
- package/build/commands/create-mini/utils/template-app.js +47 -0
- package/build/commands/create-mini/utils/template-app.js.map +1 -0
- package/build/commands/dev/index.d.ts +12 -0
- package/build/commands/dev/index.js +75 -0
- package/build/commands/dev/index.js.map +1 -0
- package/build/commands/dev/utils/android.d.ts +18 -0
- package/build/commands/dev/utils/android.js +153 -0
- package/build/commands/dev/utils/android.js.map +1 -0
- package/build/commands/dev/utils/binaries.d.ts +5 -0
- package/build/commands/dev/utils/binaries.js +17 -0
- package/build/commands/dev/utils/binaries.js.map +1 -0
- 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 +14 -0
- package/build/commands/dev/utils/deeplink.js +58 -0
- package/build/commands/dev/utils/deeplink.js.map +1 -0
- package/build/commands/dev/utils/interactive-terminal.d.ts +25 -0
- package/build/commands/dev/utils/interactive-terminal.js +210 -0
- package/build/commands/dev/utils/interactive-terminal.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-config.d.ts +2 -0
- package/build/commands/dev/utils/metro/metro-config.js +27 -0
- package/build/commands/dev/utils/metro/metro-config.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-minis-module-resolver.d.ts +6 -0
- package/build/commands/dev/utils/metro/metro-minis-module-resolver.js +11 -0
- package/build/commands/dev/utils/metro/metro-minis-module-resolver.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-reporter.d.ts +13 -0
- package/build/commands/dev/utils/metro/metro-reporter.js +27 -0
- package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +10 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.js +74 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-server.d.ts +6 -0
- package/build/commands/dev/utils/metro/metro-server.js +26 -0
- package/build/commands/dev/utils/metro/metro-server.js.map +1 -0
- package/build/commands/dev/utils/network.d.ts +20 -0
- package/build/commands/dev/utils/network.js +129 -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.d.ts +1 -0
- package/build/commands/dev/utils/qr-code.js +5 -0
- package/build/commands/dev/utils/qr-code.js.map +1 -0
- package/build/commands/dev/utils/react-native-version.d.ts +4 -0
- package/build/commands/dev/utils/react-native-version.js +23 -0
- package/build/commands/dev/utils/react-native-version.js.map +1 -0
- package/build/commands/dev/utils/simulator.d.ts +22 -0
- package/build/commands/dev/utils/simulator.js +95 -0
- package/build/commands/dev/utils/simulator.js.map +1 -0
- 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.d.ts +4 -0
- package/build/commands/dev/utils/with-retries.js +24 -0
- package/build/commands/dev/utils/with-retries.js.map +1 -0
- 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 +113 -0
- package/build/commands/doctor/utils/diagnose-dependencies.js.map +1 -0
- package/build/commands/features/index.d.ts +6 -0
- package/build/commands/features/index.js +135 -0
- package/build/commands/features/index.js.map +1 -0
- package/build/commands/generate-graphql-types/index.d.ts +6 -0
- package/build/commands/generate-graphql-types/index.js +33 -0
- package/build/commands/generate-graphql-types/index.js.map +1 -0
- package/build/commands/generate-graphql-types/utils/generate-graphql-types.d.ts +2 -0
- package/build/commands/generate-graphql-types/utils/generate-graphql-types.js +101 -0
- package/build/commands/generate-graphql-types/utils/generate-graphql-types.js.map +1 -0
- 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 +82 -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 +21 -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 +225 -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 +65 -0
- package/build/commands/upgrade/index.js.map +1 -0
- package/build/commands/upgrade/utils/clear-metro-cache.d.ts +1 -0
- package/build/commands/upgrade/utils/clear-metro-cache.js +12 -0
- package/build/commands/upgrade/utils/clear-metro-cache.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/constants/extensions.d.ts +26 -0
- package/build/constants/extensions.js +31 -0
- package/build/constants/extensions.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 +1745 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +1072 -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 +13 -0
- package/build/dev-panel/checkmark.svg +3 -0
- package/build/dev-panel/chevron.svg +3 -0
- package/build/dev-panel/copy.svg +4 -0
- package/build/dev-panel/get-started.svg +3 -0
- package/build/dev-panel/how-to.svg +3 -0
- package/build/dev-panel/index.html +1 -0
- package/build/dev-panel/references.svg +3 -0
- package/build/dev-panel/robots.txt +3 -0
- package/build/dev-panel/static/css/main.7f1ee407.css +2 -0
- package/build/dev-panel/static/css/main.7f1ee407.css.map +1 -0
- package/build/dev-panel/static/js/main.6625699c.js +3 -0
- package/build/dev-panel/static/js/main.6625699c.js.LICENSE.txt +41 -0
- package/build/dev-panel/static/js/main.6625699c.js.map +1 -0
- package/build/dev-panel/topics.svg +3 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +47 -0
- package/build/index.js.map +1 -0
- package/build/schemas/manifest.schema.json +214 -0
- package/build/templates-index.d.ts +6 -0
- package/build/templates-index.js +19 -0
- package/build/templates-index.js.map +1 -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/codemod.d.ts +86 -0
- package/build/utils/codemod.js +161 -0
- package/build/utils/codemod.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 +44 -0
- package/build/utils/development-params.js.map +1 -0
- package/build/utils/exec-async-child-process.d.ts +18 -0
- package/build/utils/exec-async-child-process.js +41 -0
- package/build/utils/exec-async-child-process.js.map +1 -0
- package/build/utils/extensions.d.ts +13 -0
- package/build/utils/extensions.js +87 -0
- package/build/utils/extensions.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 +8 -0
- package/build/utils/minis-manifest.js +67 -0
- package/build/utils/minis-manifest.js.map +1 -0
- package/build/utils/package-manager.d.ts +42 -0
- package/build/utils/package-manager.js +107 -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/path.d.ts +1 -0
- package/build/utils/path.js +8 -0
- package/build/utils/path.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/utils/wrap-with-loading-indicator.d.ts +9 -0
- package/build/utils/wrap-with-loading-indicator.js +16 -0
- package/build/utils/wrap-with-loading-indicator.js.map +1 -0
- package/package.json +102 -0
- package/scripts/graphql-codegen.ts +23 -0
- package/scripts/test-template.ts +66 -0
- package/shipit.snapshot.yml +9 -0
- package/templates/__template_blank/src/App.tsx +24 -0
- package/templates/__template_blank/src/index.tsx +9 -0
- package/templates/__template_common/.eslintignore +1 -0
- package/templates/__template_common/.eslintrc.js +3 -0
- package/templates/__template_common/.graphqlrc.js +1 -0
- package/templates/__template_common/.prettierrc.json +8 -0
- package/templates/__template_common/assets.d.ts +14 -0
- package/templates/__template_common/babel.config.js +5 -0
- package/templates/__template_common/gitignore +5 -0
- package/templates/__template_common/index.tsx +7 -0
- package/templates/__template_common/metro.config.js +5 -0
- package/templates/__template_common/package.json +38 -0
- package/templates/__template_common/src/manifest.json +6 -0
- package/templates/__template_common/tsconfig.json +41 -0
- package/templates/__template_shoppable_posts/src/App.tsx +37 -0
- package/templates/__template_shoppable_posts/src/index.tsx +9 -0
- package/templates/__template_shoppable_videos/src/App.tsx +34 -0
- package/templates/__template_shoppable_videos/src/index.tsx +9 -0
- package/templates/extensions/components/__template_blank/render.tsx +11 -0
- package/templates/extensions/components/__template_bundle-collection/render.tsx +31 -0
- package/templates/extensions/components/__template_bundle-collection/seed.ts +26 -0
- package/templates/extensions/components/__template_bundle-selector/render.tsx +51 -0
- package/templates/extensions/components/__template_bundle-selector/seed.ts +72 -0
- package/templates/extensions/components/__template_default-card/render.tsx +24 -0
- package/templates/extensions/components/__template_default-card/seed.ts +10 -0
- package/templates/extensions/components/__template_image-collection/render.tsx +17 -0
- package/templates/extensions/components/__template_image-collection/seed.ts +70 -0
- package/templates/extensions/components/__template_link/render.tsx +17 -0
- package/templates/extensions/components/__template_link/seed.ts +5 -0
- package/templates/extensions/components/__template_product-offer-card/render.tsx +17 -0
- package/templates/extensions/components/__template_product-offer-card/seed.ts +44 -0
- package/templates/extensions/components/__template_video-collection/render.tsx +17 -0
- package/templates/extensions/components/__template_video-collection/seed.ts +37 -0
- package/templates/extensions/queries/__template_product-page/input.graphql +6 -0
- package/templates/extensions/queries/__template_product-page/input.graphql.d.ts +26 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Ora } from 'ora';
|
|
2
|
+
import type { DevCommandOptions } from '../index.js';
|
|
3
|
+
export declare class InteractiveTerminal {
|
|
4
|
+
miniHandle: string;
|
|
5
|
+
options: DevCommandOptions;
|
|
6
|
+
_loading?: Ora;
|
|
7
|
+
constructor(options: DevCommandOptions, miniHandle: string);
|
|
8
|
+
startWaitingForCommand: () => void;
|
|
9
|
+
stopWaitingForCommand: () => void;
|
|
10
|
+
waitForAnyKeyAndPrintInstructions: () => Promise<void>;
|
|
11
|
+
logInstructions(): void;
|
|
12
|
+
start(): void;
|
|
13
|
+
handleKeyPressWrapped: (key: string) => Promise<void>;
|
|
14
|
+
loadingStart(logMessage: string, options?: {
|
|
15
|
+
endPreviousLoadingWithStatus?: 'succeed' | 'fail' | 'warn' | 'info';
|
|
16
|
+
endPreviousLoadingWithMessage?: string;
|
|
17
|
+
}): void;
|
|
18
|
+
loadingEnd(endState?: 'succeed' | 'fail' | 'warn' | 'info', logMessage?: string): void;
|
|
19
|
+
handleKeyPress: (key: string) => Promise<void>;
|
|
20
|
+
showSetupAndroidHomeInstructions(): Promise<void>;
|
|
21
|
+
printDeeplinkQRCode(): Promise<void>;
|
|
22
|
+
private startApp;
|
|
23
|
+
private get deeplink();
|
|
24
|
+
private get loadingHandlers();
|
|
25
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import open from 'open';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { androidHomeExists } from '../../config.js';
|
|
5
|
+
import { maybeLaunchEmulator, promptForAndroidDevices } from './android.js';
|
|
6
|
+
import { getBundleUrl, getDeeplink } from './deeplink.js';
|
|
7
|
+
import { DEV_PANEL_BASE_URL } from './metro/metro-server-middleware.js';
|
|
8
|
+
import { Platform } from './platform.js';
|
|
9
|
+
import { printQRCode } from './qr-code.js';
|
|
10
|
+
import { bootSimulator, promptForSimulator } from './simulator.js';
|
|
11
|
+
import { startApp } from './start-app/start-app.js';
|
|
12
|
+
const { stdin } = process;
|
|
13
|
+
function clearTerminal() {
|
|
14
|
+
process.stdout.write('\x1B[2J\x1B[3J\x1B[H');
|
|
15
|
+
}
|
|
16
|
+
const CTRL_C = '\u0003';
|
|
17
|
+
export class InteractiveTerminal {
|
|
18
|
+
miniHandle;
|
|
19
|
+
options;
|
|
20
|
+
_loading;
|
|
21
|
+
constructor(options, miniHandle) {
|
|
22
|
+
this.miniHandle = miniHandle;
|
|
23
|
+
this.options = options;
|
|
24
|
+
}
|
|
25
|
+
startWaitingForCommand = () => {
|
|
26
|
+
if (!stdin.setRawMode) {
|
|
27
|
+
console.warn('Non-interactive terminal, keyboard commands are disabled. Please upgrade to Node 12+');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
stdin.setRawMode(true);
|
|
31
|
+
stdin.resume();
|
|
32
|
+
stdin.setEncoding('utf8');
|
|
33
|
+
stdin.on('data', this.handleKeyPressWrapped);
|
|
34
|
+
};
|
|
35
|
+
stopWaitingForCommand = () => {
|
|
36
|
+
stdin.removeListener('data', this.handleKeyPressWrapped);
|
|
37
|
+
if (!stdin.setRawMode) {
|
|
38
|
+
console.warn('Non-interactive terminal, keyboard commands are disabled. Please upgrade to Node 12+');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
stdin.setRawMode(false);
|
|
42
|
+
stdin.resume();
|
|
43
|
+
};
|
|
44
|
+
waitForAnyKeyAndPrintInstructions = async () => {
|
|
45
|
+
console.log('Press any key to continue...');
|
|
46
|
+
this.stopWaitingForCommand();
|
|
47
|
+
if (!stdin.setRawMode) {
|
|
48
|
+
console.warn('Non-interactive terminal, keyboard commands are disabled. Please upgrade to Node 12+');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
stdin.setRawMode(true);
|
|
52
|
+
stdin.resume();
|
|
53
|
+
return new Promise(resolve => process.stdin.once('data', () => {
|
|
54
|
+
this.logInstructions();
|
|
55
|
+
resolve();
|
|
56
|
+
}));
|
|
57
|
+
};
|
|
58
|
+
logInstructions() {
|
|
59
|
+
console.log(`\n› Press ${chalk.cyan.bold(`a`)} │ Open on Android device or emulator
|
|
60
|
+
› Press ${chalk.cyan.bold(`i`)} │ Open in iOS simulator`);
|
|
61
|
+
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
|
|
62
|
+
› Press ${chalk.cyan.bold(`d`)} │ Open Developer Dashboard in web browser`);
|
|
63
|
+
console.log(`\n› Press ${chalk.cyan.bold(`?`)} │ Show all commands
|
|
64
|
+
`);
|
|
65
|
+
console.log(chalk.dim('Press Ctrl+C to exit.'));
|
|
66
|
+
}
|
|
67
|
+
start() {
|
|
68
|
+
this.logInstructions();
|
|
69
|
+
this.startWaitingForCommand();
|
|
70
|
+
}
|
|
71
|
+
handleKeyPressWrapped = async (key) => {
|
|
72
|
+
try {
|
|
73
|
+
this.stopWaitingForCommand();
|
|
74
|
+
await this.handleKeyPress(key);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
console.log(`Error while executing command for key: ${key}`);
|
|
78
|
+
console.log(err);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
this.startWaitingForCommand();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
loadingStart(logMessage, options = {}) {
|
|
85
|
+
if (this._loading) {
|
|
86
|
+
this.loadingEnd(options.endPreviousLoadingWithStatus, options.endPreviousLoadingWithMessage);
|
|
87
|
+
}
|
|
88
|
+
this._loading = ora({ text: logMessage }).start();
|
|
89
|
+
}
|
|
90
|
+
loadingEnd(endState = 'succeed', logMessage) {
|
|
91
|
+
if (!this._loading) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this._loading[endState](logMessage);
|
|
95
|
+
delete this._loading;
|
|
96
|
+
}
|
|
97
|
+
handleKeyPress = async (key) => {
|
|
98
|
+
switch (key) {
|
|
99
|
+
case '?': {
|
|
100
|
+
this.logInstructions();
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case 'a': {
|
|
104
|
+
clearTerminal();
|
|
105
|
+
if (!androidHomeExists()) {
|
|
106
|
+
this.showSetupAndroidHomeInstructions();
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
const device = await promptForAndroidDevices();
|
|
110
|
+
if (device) {
|
|
111
|
+
if (device.type === 'emulator') {
|
|
112
|
+
this.loadingStart('Launching emulator');
|
|
113
|
+
const emulatorId = await maybeLaunchEmulator(device.name);
|
|
114
|
+
if (!emulatorId) {
|
|
115
|
+
this.loadingEnd('fail', `Couldn't launch emulator ${device.name}`);
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
await this.startApp(Platform.Android, emulatorId);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
await this.startApp(Platform.Android, device.name);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
console.log('\nNo connected devices or emulators were found\n');
|
|
126
|
+
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.`);
|
|
127
|
+
console.log(`Or ${chalk.blue.underline.bold('https://developer.android.com/studio/run/emulator#get-started')} for instructions on how to create an emulator.`);
|
|
128
|
+
this.waitForAnyKeyAndPrintInstructions();
|
|
129
|
+
}
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case 'i': {
|
|
133
|
+
clearTerminal();
|
|
134
|
+
const simulator = await promptForSimulator();
|
|
135
|
+
if (simulator) {
|
|
136
|
+
this.loadingStart('Launching simulator');
|
|
137
|
+
await bootSimulator(simulator.udid);
|
|
138
|
+
await this.startApp(Platform.IOS, simulator.udid);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log('\nNo simulator was selected\n');
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
case 'q': {
|
|
146
|
+
await this.printDeeplinkQRCode();
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
case 'd': {
|
|
150
|
+
// 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?
|
|
151
|
+
// 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
|
|
152
|
+
const paramsObj = {
|
|
153
|
+
bundleUrl: getBundleUrl(this.options.host),
|
|
154
|
+
deepLink: getDeeplink(this.miniHandle, this.options, true),
|
|
155
|
+
};
|
|
156
|
+
const searchParams = `?${new URLSearchParams(paramsObj).toString()}`;
|
|
157
|
+
open(`${DEV_PANEL_BASE_URL}${searchParams}`);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
case CTRL_C: {
|
|
161
|
+
this.stopWaitingForCommand();
|
|
162
|
+
process.exit(0);
|
|
163
|
+
// @ts-ignore
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
default: {
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
async showSetupAndroidHomeInstructions() {
|
|
172
|
+
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."));
|
|
173
|
+
console.log(`See ${chalk.blue.underline.bold('https://developer.android.com/studio/command-line/variables')}`);
|
|
174
|
+
await this.waitForAnyKeyAndPrintInstructions();
|
|
175
|
+
}
|
|
176
|
+
async printDeeplinkQRCode() {
|
|
177
|
+
console.log('\n');
|
|
178
|
+
await printQRCode(getDeeplink(this.miniHandle, this.options, true));
|
|
179
|
+
console.log('Scan the QR code to open Shop Mini on your device (requires the Shop app to be installed)\n');
|
|
180
|
+
}
|
|
181
|
+
async startApp(platform, deviceId) {
|
|
182
|
+
try {
|
|
183
|
+
await startApp({
|
|
184
|
+
platform,
|
|
185
|
+
deviceId,
|
|
186
|
+
deeplink: this.deeplink,
|
|
187
|
+
buildType: this.options.buildType,
|
|
188
|
+
snapshotVersion: this.options.snapshotVersion,
|
|
189
|
+
}, this.loadingHandlers);
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
this.loadingHandlers.onLoadingEnd('fail', err?.message || err);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
get deeplink() {
|
|
196
|
+
return getDeeplink(this.miniHandle, this.options);
|
|
197
|
+
}
|
|
198
|
+
get loadingHandlers() {
|
|
199
|
+
return {
|
|
200
|
+
onLoadingStart: this.loadingStart.bind(this),
|
|
201
|
+
onLoadingEnd: this.loadingEnd.bind(this),
|
|
202
|
+
onLoadingUpdate: (text) => {
|
|
203
|
+
if (this._loading) {
|
|
204
|
+
this._loading.text = text;
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=interactive-terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-terminal.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/interactive-terminal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { loadConfig } from 'metro-config';
|
|
4
|
+
import { createMinisMetroReporter } from './metro-reporter.js';
|
|
5
|
+
import { createMinisModuleResolver } from './metro-minis-module-resolver.js';
|
|
6
|
+
// modified so that metro uses the mini dependency path and not the CLI dependency when using symlinks to run the CLI (yarn link)
|
|
7
|
+
const defaults = createRequire(import.meta.url)('metro-config/src/defaults/defaults');
|
|
8
|
+
defaults.moduleSystem = `${process.cwd()}/node_modules/metro-runtime/src/polyfills/require.js`;
|
|
9
|
+
export async function getMetroConfig() {
|
|
10
|
+
const metroConfig = await loadConfig({ cwd: process.cwd() });
|
|
11
|
+
// @ts-ignore - @types/metro is outdated and missing this attribute: https://facebook.github.io/metro/docs/configuration/#emptymodulepath
|
|
12
|
+
// Fix required when using yarn link to run a local version of the CLI in a mini
|
|
13
|
+
metroConfig.resolver.emptyModulePath = path.join(metroConfig.projectRoot, 'node_modules', 'metro-runtime/src/modules/empty-module.js');
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
// Fix required when using yarn link to run a local version of the CLI in a mini
|
|
16
|
+
metroConfig.transformer.asyncRequireModulePath = path.join(metroConfig.projectRoot, 'node_modules', 'metro-runtime/src/modules/asyncRequire');
|
|
17
|
+
const reporter = createMinisMetroReporter();
|
|
18
|
+
return {
|
|
19
|
+
...metroConfig,
|
|
20
|
+
resolver: {
|
|
21
|
+
...metroConfig.resolver,
|
|
22
|
+
resolveRequest: createMinisModuleResolver(metroConfig),
|
|
23
|
+
},
|
|
24
|
+
reporter,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=metro-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-config.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAoB,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAEpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAC,yBAAyB,EAAC,MAAM,kCAAkC,CAAA;AAE1E,iIAAiI;AACjI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC7C,oCAAoC,CACrC,CAAA;AACD,QAAQ,CAAC,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,sDAAsD,CAAA;AAE9F,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA;IAE1D,yIAAyI;IACzI,gFAAgF;IAChF,WAAW,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAC9C,WAAW,CAAC,WAAW,EACvB,cAAc,EACd,2CAA2C,CAC5C,CAAA;IAED,aAAa;IACb,gFAAgF;IAChF,WAAW,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACxD,WAAW,CAAC,WAAW,EACvB,cAAc,EACd,wCAAwC,CACzC,CAAA;IAED,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAA;IAE3C,OAAO;QACL,GAAG,WAAW;QACd,QAAQ,EAAE;YACR,GAAG,WAAW,CAAC,QAAQ;YACvB,cAAc,EAAE,yBAAyB,CAAC,WAAW,CAAC;SACvD;QACD,QAAQ;KACT,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ConfigT, ResolverConfigT } from 'metro-config';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a custom `resolveRequest` function for metro that resolves `minis:widget` imports to
|
|
4
|
+
* the component and `minis:seed` to the seeds of the widget specified in the `--widget-type` option.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createMinisModuleResolver(existingMetroConfig: ConfigT): ResolverConfigT['resolveRequest'];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a custom `resolveRequest` function for metro that resolves `minis:widget` imports to
|
|
3
|
+
* the component and `minis:seed` to the seeds of the widget specified in the `--widget-type` option.
|
|
4
|
+
*/
|
|
5
|
+
export function createMinisModuleResolver(existingMetroConfig) {
|
|
6
|
+
return (context, moduleName, platform) => {
|
|
7
|
+
const resolver = existingMetroConfig?.resolver?.resolveRequest ?? context.resolveRequest;
|
|
8
|
+
return resolver(context, moduleName, platform);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=metro-minis-module-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-minis-module-resolver.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-minis-module-resolver.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,mBAA4B;IAE5B,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QACvC,MAAM,QAAQ,GACZ,mBAAmB,EAAE,QAAQ,EAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAA;QAEzE,OAAO,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TerminalReporter } from 'metro';
|
|
2
|
+
/**
|
|
3
|
+
* Custom metro reporter that customises the output to the terminal of minis.
|
|
4
|
+
*
|
|
5
|
+
* Reference:
|
|
6
|
+
* Default reporter: https://github.com/facebook/metro/blob/main/packages/metro/src/lib/TerminalReporter.js
|
|
7
|
+
* Expo example: https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/server/metro/MetroTerminalReporter.ts
|
|
8
|
+
*/
|
|
9
|
+
declare class MinisMetroReporter extends TerminalReporter {
|
|
10
|
+
_log(event: any): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function createMinisMetroReporter(): MinisMetroReporter;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Terminal } from 'metro-core';
|
|
2
|
+
import { TerminalReporter } from 'metro';
|
|
3
|
+
/**
|
|
4
|
+
* Custom metro reporter that customises the output to the terminal of minis.
|
|
5
|
+
*
|
|
6
|
+
* Reference:
|
|
7
|
+
* Default reporter: https://github.com/facebook/metro/blob/main/packages/metro/src/lib/TerminalReporter.js
|
|
8
|
+
* Expo example: https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/server/metro/MetroTerminalReporter.ts
|
|
9
|
+
*/
|
|
10
|
+
class MinisMetroReporter extends TerminalReporter {
|
|
11
|
+
_log(event) {
|
|
12
|
+
switch (event.type) {
|
|
13
|
+
case 'initialize_started':
|
|
14
|
+
case 'dep_graph_loading': {
|
|
15
|
+
// do not log metro logo and welcome on start
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
super._log(event);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function createMinisMetroReporter() {
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
return new MinisMetroReporter(new Terminal(process.stdout));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=metro-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-reporter.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAA;AACnC,OAAO,EAAC,gBAAgB,EAAC,MAAM,OAAO,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,kBAAmB,SAAQ,gBAAgB;IAC/C,IAAI,CAAC,KAAU;QACb,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,mBAAmB,CAAC,CAAC;gBACxB,6CAA6C;gBAC7C,OAAM;aACP;SACF;QAED,aAAa;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB;IACtC,aAAa;IACb,OAAO,IAAI,kBAAkB,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import http from 'http';
|
|
2
|
+
import connect from 'connect';
|
|
3
|
+
import { DevCommandOptions } from '../../index.js';
|
|
4
|
+
/**
|
|
5
|
+
* mutates the received metro config param to inject a custom middleware.
|
|
6
|
+
* needed because of https://github.com/facebook/metro/issues/660
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildMetroServerMiddleware(options: DevCommandOptions): connect.Server;
|
|
9
|
+
export declare const DEV_PANEL_BASE_URL = "http://localhost:8082/dev-panel";
|
|
10
|
+
export declare function inputQueryMiddlewareFactory(options: DevCommandOptions): (req: http.IncomingMessage, res: http.ServerResponse) => void;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import url from 'url';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import serve from 'serve-static';
|
|
5
|
+
import connect from 'connect';
|
|
6
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
7
|
+
import { getExtensionInputQueriesFolderPath } from '../../../../utils/extensions.js';
|
|
8
|
+
/**
|
|
9
|
+
* mutates the received metro config param to inject a custom middleware.
|
|
10
|
+
* needed because of https://github.com/facebook/metro/issues/660
|
|
11
|
+
*/
|
|
12
|
+
export function buildMetroServerMiddleware(options) {
|
|
13
|
+
return connect()
|
|
14
|
+
.use('/symbolicate', rawBodyMiddleware)
|
|
15
|
+
.use('/dev-panel', devPanelMiddleware)
|
|
16
|
+
.use('/status', statusPageMiddleware)
|
|
17
|
+
.use('/input-query', inputQueryMiddlewareFactory(options));
|
|
18
|
+
}
|
|
19
|
+
// reference https://github.com/react-native-community/cli/blob/main/packages/cli-server-api/src/rawBodyMiddleware.ts
|
|
20
|
+
function rawBodyMiddleware(req, _res, next) {
|
|
21
|
+
;
|
|
22
|
+
req.rawBody = '';
|
|
23
|
+
req.setEncoding('utf8');
|
|
24
|
+
req.on('data', (chunk) => {
|
|
25
|
+
;
|
|
26
|
+
req.rawBody += chunk;
|
|
27
|
+
});
|
|
28
|
+
req.on('end', () => {
|
|
29
|
+
next();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// reference https://github.com/react-native-community/cli/blob/86df104250608977130378b9b59d8a9e12d0212a/packages/cli-server-api/src/statusPageMiddleware.ts
|
|
33
|
+
function statusPageMiddleware(_req, res) {
|
|
34
|
+
res.end('packager-status:running');
|
|
35
|
+
}
|
|
36
|
+
function devPanelMiddleware(...args) {
|
|
37
|
+
const indexFilePath = path.join(process.cwd(), 'node_modules', '@shopify', 'shop-minis-cli', 'build', 'dev-panel');
|
|
38
|
+
return serve(indexFilePath)(...args);
|
|
39
|
+
}
|
|
40
|
+
export const DEV_PANEL_BASE_URL = `http://localhost:8082/dev-panel`;
|
|
41
|
+
export function inputQueryMiddlewareFactory(options) {
|
|
42
|
+
return function inputQueryMiddleware(req, res) {
|
|
43
|
+
if (!req.url || !options.extensionTargets?.length) {
|
|
44
|
+
res.end();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const urlParts = url.parse(req.url);
|
|
48
|
+
let target = '';
|
|
49
|
+
if (urlParts.pathname === '/') {
|
|
50
|
+
outputDebug('No target specified, using the first target.');
|
|
51
|
+
target = options.extensionTargets[0];
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
target = urlParts.pathname?.split('/')[1] ?? '';
|
|
55
|
+
}
|
|
56
|
+
if (target) {
|
|
57
|
+
const inputQueriesFolderPath = getExtensionInputQueriesFolderPath(target);
|
|
58
|
+
const queryFilePath = path.join(inputQueriesFolderPath, 'input.graphql');
|
|
59
|
+
try {
|
|
60
|
+
const queryFile = readFileSync(queryFilePath);
|
|
61
|
+
res.end(queryFile);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
console.error(`Unable to read a query file for target ${target}`);
|
|
65
|
+
res.end();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.error(`Your mini does not support any extension targets yet`);
|
|
70
|
+
res.end();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=metro-server-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-server-middleware.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-server-middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DevCommandOptions } from '../../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs metro mimicking how react-native does it.
|
|
4
|
+
* Reference: https://github.com/facebook/react-native/blob/3c943bbe3a60198519f7ef8083ece76734def9b7/packages/community-cli-plugin/src/commands/start/runServer.js
|
|
5
|
+
*/
|
|
6
|
+
export declare function runMetro(options: DevCommandOptions): Promise<void>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Metro from 'metro';
|
|
2
|
+
import { getMetroConfig } from './metro-config.js';
|
|
3
|
+
import { buildMetroServerMiddleware } from './metro-server-middleware.js';
|
|
4
|
+
/**
|
|
5
|
+
* Runs metro mimicking how react-native does it.
|
|
6
|
+
* Reference: https://github.com/facebook/react-native/blob/3c943bbe3a60198519f7ef8083ece76734def9b7/packages/community-cli-plugin/src/commands/start/runServer.js
|
|
7
|
+
*/
|
|
8
|
+
export async function runMetro(options) {
|
|
9
|
+
const { host, ...metroOptions } = options;
|
|
10
|
+
const metroServerConfig = {
|
|
11
|
+
...(await getMetroConfig()),
|
|
12
|
+
...metroOptions,
|
|
13
|
+
};
|
|
14
|
+
const metroServerOptions = {
|
|
15
|
+
host,
|
|
16
|
+
unstable_extraMiddleware: [buildMetroServerMiddleware(options)],
|
|
17
|
+
};
|
|
18
|
+
await Metro.runServer(metroServerConfig, metroServerOptions);
|
|
19
|
+
if (host !== 'localhost') {
|
|
20
|
+
await Metro.runServer(metroServerConfig, {
|
|
21
|
+
...metroServerOptions,
|
|
22
|
+
host: 'localhost',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=metro-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-server.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAA;AAEvE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAA0B;IACvD,MAAM,EAAC,IAAI,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,CAAA;IACvC,MAAM,iBAAiB,GAAY;QACjC,GAAG,CAAC,MAAM,cAAc,EAAE,CAAC;QAC3B,GAAG,YAAY;KAChB,CAAA;IAED,MAAM,kBAAkB,GAA2B;QACjD,IAAI;QACJ,wBAAwB,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;KAChE,CAAA;IAED,MAAM,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;IAE5D,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,MAAM,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE;YACvC,GAAG,kBAAkB;YACrB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAA;KACH;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Platform } from './platform.js';
|
|
2
|
+
import { BinaryMetadata, BuildType } from './types.js';
|
|
3
|
+
export declare const CDN_ADDRESS = "http://34.160.57.53/";
|
|
4
|
+
export declare const GOOGLE_CLOUD_BUCKET_NAME = "minis_cli_app_builds";
|
|
5
|
+
export declare const metadataToBucketPath: (metadata: BinaryMetadata) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Downloads a binary from the remote storage
|
|
8
|
+
* @returns Promise that resolves to the downloaded version
|
|
9
|
+
*/
|
|
10
|
+
export declare function downloadBinary(versionToDownload: BinaryMetadata, { onProgress, }?: {
|
|
11
|
+
/**
|
|
12
|
+
* Download progress callback
|
|
13
|
+
*/
|
|
14
|
+
onProgress?: (progress: number) => void;
|
|
15
|
+
}): Promise<BinaryMetadata>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the latest version that's present in the remote storage of binaries
|
|
18
|
+
* TODO: this won't handle a bucket that has more than 50 files.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getLatestRemoteVersion(platform: Platform, type: BuildType): Promise<BinaryMetadata | null>;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createWriteStream } from 'node:fs';
|
|
2
|
+
import { basename } from 'node:path';
|
|
3
|
+
import http from 'node:http';
|
|
4
|
+
import { Storage } from '@google-cloud/storage';
|
|
5
|
+
import { PassThroughClient } from 'google-auth-library';
|
|
6
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
7
|
+
import { compare, parse } from 'semver';
|
|
8
|
+
import { PATHS } from '../../config.js';
|
|
9
|
+
import { isVersionAvailableLocally } from './binaries.js';
|
|
10
|
+
import { getLatestVersionFromFilesList, metadataToBinaryFileName, } from './version.js';
|
|
11
|
+
// TODO: set up domain and ssl certificate for cdn
|
|
12
|
+
// https://console.cloud.google.com/net-services/cdn/backendBucket/details/minis-app-builds-backend-bucket?project=arrive-167720
|
|
13
|
+
// https://console.cloud.google.com/storage/browser/minis_cli_app_builds
|
|
14
|
+
export const CDN_ADDRESS = 'http://34.160.57.53/';
|
|
15
|
+
export const GOOGLE_CLOUD_BUCKET_NAME = 'minis_cli_app_builds';
|
|
16
|
+
// Put bucket creation in to it's own function to make it easier to mock
|
|
17
|
+
const getBucket = () => {
|
|
18
|
+
return new Storage({ authClient: new PassThroughClient() }).bucket(GOOGLE_CLOUD_BUCKET_NAME);
|
|
19
|
+
};
|
|
20
|
+
export const metadataToBucketPath = (metadata) => `${metadata.version}/${metadataToBinaryFileName(metadata)}`;
|
|
21
|
+
/**
|
|
22
|
+
* Downloads a binary from the remote storage
|
|
23
|
+
* @returns Promise that resolves to the downloaded version
|
|
24
|
+
*/
|
|
25
|
+
export async function downloadBinary(versionToDownload, { onProgress, } = {}) {
|
|
26
|
+
outputDebug(`Downloading Shop app ${JSON.stringify(versionToDownload)}`);
|
|
27
|
+
const isVersionAlreadyDownloaded = await isVersionAvailableLocally(versionToDownload);
|
|
28
|
+
if (isVersionAlreadyDownloaded) {
|
|
29
|
+
outputDebug(`Shop app version already downloaded`);
|
|
30
|
+
onProgress?.(100);
|
|
31
|
+
return versionToDownload;
|
|
32
|
+
}
|
|
33
|
+
const localFileName = metadataToBinaryFileName(versionToDownload);
|
|
34
|
+
const remoteBucketPath = metadataToBucketPath(versionToDownload);
|
|
35
|
+
let fileSize = 0;
|
|
36
|
+
try {
|
|
37
|
+
const [metadata] = await getBucket().file(remoteBucketPath).getMetadata();
|
|
38
|
+
fileSize =
|
|
39
|
+
typeof metadata.size === 'number'
|
|
40
|
+
? metadata.size
|
|
41
|
+
: parseInt(metadata.size, 10);
|
|
42
|
+
if (isNaN(fileSize)) {
|
|
43
|
+
throw new Error('Invalid file size'); // the error message will be overwriten in the catch below anyway
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
throw new Error(`Binary for version ${versionToDownload.version}+${versionToDownload.build} not found`);
|
|
48
|
+
}
|
|
49
|
+
return new Promise((resolve, reject) => {
|
|
50
|
+
const writeStream = createWriteStream(`${PATHS.CACHE_DIR}/${localFileName}`);
|
|
51
|
+
const progressInterval = setInterval(() => {
|
|
52
|
+
const progress = Math.round((writeStream.bytesWritten / fileSize) * 100);
|
|
53
|
+
onProgress?.(progress);
|
|
54
|
+
}, 200);
|
|
55
|
+
http.get(`${CDN_ADDRESS}${remoteBucketPath}`, cdnResponse => {
|
|
56
|
+
cdnResponse.pipe(writeStream);
|
|
57
|
+
writeStream.on('finish', () => {
|
|
58
|
+
writeStream.close();
|
|
59
|
+
outputDebug(`Shop app downloaded complete`);
|
|
60
|
+
onProgress?.(100);
|
|
61
|
+
resolve(versionToDownload);
|
|
62
|
+
clearInterval(progressInterval);
|
|
63
|
+
});
|
|
64
|
+
writeStream.on('error', err => {
|
|
65
|
+
outputDebug(`Shop app downloaded failed`);
|
|
66
|
+
reject(err);
|
|
67
|
+
clearInterval(progressInterval);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns the latest version that's present in the remote storage of binaries
|
|
74
|
+
* TODO: this won't handle a bucket that has more than 50 files.
|
|
75
|
+
*/
|
|
76
|
+
export async function getLatestRemoteVersion(platform, type) {
|
|
77
|
+
const versions = await getRemoteVersions();
|
|
78
|
+
// newest first
|
|
79
|
+
const sortedVersions = versions.sort(compare).reverse();
|
|
80
|
+
// iterate over versions, in case newest version(s) don't contain builds for the given platform/type
|
|
81
|
+
for (const version of sortedVersions) {
|
|
82
|
+
const prefix = `${version}/`;
|
|
83
|
+
const [filesMetadata] = await getBucket().getFiles({
|
|
84
|
+
prefix,
|
|
85
|
+
});
|
|
86
|
+
const fileNames = filesMetadata
|
|
87
|
+
.map(file => file.name)
|
|
88
|
+
// extract filename from GCS bucket path
|
|
89
|
+
.map(path => basename(path));
|
|
90
|
+
const latestVersion = getLatestVersionFromFilesList(fileNames, platform, type);
|
|
91
|
+
if (latestVersion != null) {
|
|
92
|
+
return latestVersion;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns a list of all the versions that are present in the remote bucket,
|
|
99
|
+
* regardless of platform or build type
|
|
100
|
+
*/
|
|
101
|
+
async function getRemoteVersions() {
|
|
102
|
+
// GCS doesn't have a concept of 'folders', so we just list prefixes (which are the version numbers)
|
|
103
|
+
// and remove the trailing delimiter ('/')
|
|
104
|
+
let query = {
|
|
105
|
+
delimiter: '/',
|
|
106
|
+
// intentionally set to false to keep `apiResponse`
|
|
107
|
+
// see: https://github.com/googleapis/google-cloud-node/issues/2594
|
|
108
|
+
autoPaginate: false,
|
|
109
|
+
};
|
|
110
|
+
const prefixes = [];
|
|
111
|
+
// loop to handle pagination
|
|
112
|
+
do {
|
|
113
|
+
const [_files, nextQuery, apiResponse] = await getBucket().getFiles(query);
|
|
114
|
+
const newPrefixes = apiResponse.prefixes ?? [];
|
|
115
|
+
prefixes.push(...newPrefixes);
|
|
116
|
+
query = nextQuery;
|
|
117
|
+
} while (query != null);
|
|
118
|
+
return (prefixes
|
|
119
|
+
// remove trailing delimiter
|
|
120
|
+
.map(prefix => prefix.replace(/\/$/, ''))
|
|
121
|
+
// validate that we only have 'x.y.z', not 'x.y.z-rc.1' or 'x.y.z+123'
|
|
122
|
+
.filter(prefix => {
|
|
123
|
+
const parsed = parse(prefix);
|
|
124
|
+
return (parsed != null &&
|
|
125
|
+
parsed.build.length === 0 &&
|
|
126
|
+
parsed.prerelease.length === 0);
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=network.js.map
|