@expo/cli 0.0.0 → 0.1.2
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/README.md +106 -0
- package/build/bin/cli +152 -0
- package/build/bin/cli.map +1 -0
- package/build/src/api/endpoint.js +17 -0
- package/build/src/api/endpoint.js.map +1 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js +21 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
- package/build/src/api/getExpoSchema.js +69 -0
- package/build/src/api/getExpoSchema.js.map +1 -0
- package/build/src/api/getNativeModuleVersions.js +31 -0
- package/build/src/api/getNativeModuleVersions.js.map +1 -0
- package/build/src/api/getProject.js +19 -0
- package/build/src/api/getProject.js.map +1 -0
- package/build/src/api/getProjectDevelopmentCertificate.js +24 -0
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
- package/build/src/api/getVersions.js +37 -0
- package/build/src/api/getVersions.js.map +1 -0
- package/build/src/api/graphql/client.js +104 -0
- package/build/src/api/graphql/client.js.map +1 -0
- package/build/src/api/graphql/generated.js +113 -0
- package/build/src/api/graphql/generated.js.map +1 -0
- package/build/src/api/graphql/queries/UserQuery.js +43 -0
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemCache.js +79 -0
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
- package/build/src/api/rest/cache/response.js +31 -0
- package/build/src/api/rest/cache/response.js.map +1 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
- package/build/src/api/rest/client.js +94 -0
- package/build/src/api/rest/client.js.map +1 -0
- package/build/src/api/rest/client.types.js +6 -0
- package/build/src/api/rest/client.types.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +20 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithOffline.js +39 -0
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProgress.js +59 -0
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
- package/build/src/api/settings.js +11 -0
- package/build/src/api/settings.js.map +1 -0
- package/build/src/api/signManifest.js +38 -0
- package/build/src/api/signManifest.js.map +1 -0
- package/build/src/api/updateDevelopmentSession.js +74 -0
- package/build/src/api/updateDevelopmentSession.js.map +1 -0
- package/build/src/api/user/UserSettings.js +71 -0
- package/build/src/api/user/UserSettings.js.map +1 -0
- package/build/src/api/user/actions.js +97 -0
- package/build/src/api/user/actions.js.map +1 -0
- package/build/src/api/user/otp.js +139 -0
- package/build/src/api/user/otp.js.map +1 -0
- package/build/src/api/user/user.js +114 -0
- package/build/src/api/user/user.js.map +1 -0
- package/build/src/config/configAsync.js +118 -0
- package/build/src/config/configAsync.js.map +1 -0
- package/build/src/config/index.js +75 -0
- package/build/src/config/index.js.map +1 -0
- package/build/src/export/createBundles.js +62 -0
- package/build/src/export/createBundles.js.map +1 -0
- package/build/src/export/createMetadataJson.js +36 -0
- package/build/src/export/createMetadataJson.js.map +1 -0
- package/build/src/export/exportApp.js +102 -0
- package/build/src/export/exportApp.js.map +1 -0
- package/build/src/export/exportAssets.js +106 -0
- package/build/src/export/exportAssets.js.map +1 -0
- package/build/src/export/exportAsync.js +49 -0
- package/build/src/export/exportAsync.js.map +1 -0
- package/build/src/export/fork-bundleAsync.js +138 -0
- package/build/src/export/fork-bundleAsync.js.map +1 -0
- package/build/src/export/getPublicExpoManifest.js +28 -0
- package/build/src/export/getPublicExpoManifest.js.map +1 -0
- package/build/src/export/getResolvedLocales.js +35 -0
- package/build/src/export/getResolvedLocales.js.map +1 -0
- package/build/src/export/index.js +77 -0
- package/build/src/export/index.js.map +1 -0
- package/build/src/export/printBundleSizes.js +122 -0
- package/build/src/export/printBundleSizes.js.map +1 -0
- package/build/src/export/resolveOptions.js +24 -0
- package/build/src/export/resolveOptions.js.map +1 -0
- package/build/src/export/saveAssets.js +65 -0
- package/build/src/export/saveAssets.js.map +1 -0
- package/build/src/export/writeContents.js +108 -0
- package/build/src/export/writeContents.js.map +1 -0
- package/build/src/install/checkPackages.js +74 -0
- package/build/src/install/checkPackages.js.map +1 -0
- package/build/src/install/index.js +49 -0
- package/build/src/install/index.js.map +1 -0
- package/build/src/install/installAsync.js +103 -0
- package/build/src/install/installAsync.js.map +1 -0
- package/build/src/install/resolveOptions.js +99 -0
- package/build/src/install/resolveOptions.js.map +1 -0
- package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
- package/build/src/log.js +74 -0
- package/build/src/log.js.map +1 -0
- package/build/src/login/index.js +62 -0
- package/build/src/login/index.js.map +1 -0
- package/build/src/logout/index.js +48 -0
- package/build/src/logout/index.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +137 -0
- package/build/src/prebuild/clearNativeFolder.js.map +1 -0
- package/build/src/prebuild/configureProjectAsync.js +68 -0
- package/build/src/prebuild/configureProjectAsync.js.map +1 -0
- package/build/src/prebuild/copyTemplateFiles.js +124 -0
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
- package/build/src/prebuild/ensureConfigAsync.js +86 -0
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
- package/build/src/prebuild/index.js +90 -0
- package/build/src/prebuild/index.js.map +1 -0
- package/build/src/prebuild/prebuildAsync.js +112 -0
- package/build/src/prebuild/prebuildAsync.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +97 -0
- package/build/src/prebuild/resolveOptions.js.map +1 -0
- package/build/src/prebuild/resolveTemplate.js +157 -0
- package/build/src/prebuild/resolveTemplate.js.map +1 -0
- package/build/src/prebuild/updateFromTemplate.js +102 -0
- package/build/src/prebuild/updateFromTemplate.js.map +1 -0
- package/build/src/prebuild/updatePackageJson.js +236 -0
- package/build/src/prebuild/updatePackageJson.js.map +1 -0
- package/build/src/prebuild/writeMetroConfig.js +89 -0
- package/build/src/prebuild/writeMetroConfig.js.map +1 -0
- package/build/src/register/index.js +48 -0
- package/build/src/register/index.js.map +1 -0
- package/build/src/register/registerAsync.js +37 -0
- package/build/src/register/registerAsync.js.map +1 -0
- package/build/src/run/android/index.js +97 -0
- package/build/src/run/android/index.js.map +1 -0
- package/build/src/run/android/resolveDevice.js +23 -0
- package/build/src/run/android/resolveDevice.js.map +1 -0
- package/build/src/run/android/resolveGradleProps.js +37 -0
- package/build/src/run/android/resolveGradleProps.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +72 -0
- package/build/src/run/android/resolveInstallApkName.js.map +1 -0
- package/build/src/run/android/resolveLaunchProps.js +32 -0
- package/build/src/run/android/resolveLaunchProps.js.map +1 -0
- package/build/src/run/android/resolveOptions.js +25 -0
- package/build/src/run/android/resolveOptions.js.map +1 -0
- package/build/src/run/android/runAndroidAsync.js +74 -0
- package/build/src/run/android/runAndroidAsync.js.map +1 -0
- package/build/src/run/ensureNativeProject.js +33 -0
- package/build/src/run/ensureNativeProject.js.map +1 -0
- package/build/src/run/hints.js +22 -0
- package/build/src/run/hints.js.map +1 -0
- package/build/src/run/resolveBundlerProps.js +31 -0
- package/build/src/run/resolveBundlerProps.js.map +1 -0
- package/build/src/run/startBundler.js +76 -0
- package/build/src/run/startBundler.js.map +1 -0
- package/build/src/start/doctor/Prerequisite.js +47 -0
- package/build/src/start/doctor/Prerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
- package/build/src/start/index.js +116 -0
- package/build/src/start/index.js.map +1 -0
- package/build/src/start/interface/KeyPressHandler.js +99 -0
- package/build/src/start/interface/KeyPressHandler.js.map +1 -0
- package/build/src/start/interface/commandsTable.js +175 -0
- package/build/src/start/interface/commandsTable.js.map +1 -0
- package/build/src/start/interface/interactiveActions.js +134 -0
- package/build/src/start/interface/interactiveActions.js.map +1 -0
- package/build/src/start/interface/startInterface.js +217 -0
- package/build/src/start/interface/startInterface.js.map +1 -0
- package/build/src/start/platforms/AppIdResolver.js +44 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -0
- package/build/src/start/platforms/DeviceManager.js +43 -0
- package/build/src/start/platforms/DeviceManager.js.map +1 -0
- package/build/src/start/platforms/ExpoGoInstaller.js +111 -0
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
- package/build/src/start/platforms/PlatformManager.js +121 -0
- package/build/src/start/platforms/PlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/ADBServer.js +129 -0
- package/build/src/start/platforms/android/ADBServer.js.map +1 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/activateWindow.js +80 -0
- package/build/src/start/platforms/android/activateWindow.js.map +1 -0
- package/build/src/start/platforms/android/adb.js +263 -0
- package/build/src/start/platforms/android/adb.js.map +1 -0
- package/build/src/start/platforms/android/adbReverse.js +84 -0
- package/build/src/start/platforms/android/adbReverse.js.map +1 -0
- package/build/src/start/platforms/android/emulator.js +118 -0
- package/build/src/start/platforms/android/emulator.js.map +1 -0
- package/build/src/start/platforms/android/getDevices.js +36 -0
- package/build/src/start/platforms/android/getDevices.js.map +1 -0
- package/build/src/start/platforms/android/gradle.js +86 -0
- package/build/src/start/platforms/android/gradle.js.map +1 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
- package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
- package/build/src/start/platforms/ios/simctl.js +229 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -0
- package/build/src/start/platforms/ios/xcrun.js +67 -0
- package/build/src/start/platforms/ios/xcrun.js.map +1 -0
- package/build/src/start/project/devices.js +77 -0
- package/build/src/start/project/devices.js.map +1 -0
- package/build/src/start/project/dotExpo.js +74 -0
- package/build/src/start/project/dotExpo.js.map +1 -0
- package/build/src/start/project/settings.js +13 -0
- package/build/src/start/project/settings.js.map +1 -0
- package/build/src/start/resolveOptions.js +156 -0
- package/build/src/start/resolveOptions.js.map +1 -0
- package/build/src/start/server/AsyncNgrok.js +173 -0
- package/build/src/start/server/AsyncNgrok.js.map +1 -0
- package/build/src/start/server/BundlerDevServer.js +312 -0
- package/build/src/start/server/BundlerDevServer.js.map +1 -0
- package/build/src/start/server/DevServerManager.js +142 -0
- package/build/src/start/server/DevServerManager.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +104 -0
- package/build/src/start/server/DevelopmentSession.js.map +1 -0
- package/build/src/start/server/UrlCreator.js +159 -0
- package/build/src/start/server/UrlCreator.js.map +1 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js +97 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.js +87 -0
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
- package/build/src/start/server/metro/instantiateMetro.js +66 -0
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
- package/build/src/start/server/metro/resolveFromProject.js +38 -0
- package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
- package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js +110 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
- package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
- package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
- package/build/src/start/server/middleware/resolvePlatform.js +32 -0
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
- package/build/src/start/server/middleware/server.types.js +6 -0
- package/build/src/start/server/middleware/server.types.js.map +1 -0
- package/build/src/start/server/openPlatforms.js +30 -0
- package/build/src/start/server/openPlatforms.js.map +1 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +299 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
- package/build/src/start/server/webpack/resolveFromProject.js +43 -0
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
- package/build/src/start/server/webpack/tls.js +72 -0
- package/build/src/start/server/webpack/tls.js.map +1 -0
- package/build/src/start/startAsync.js +150 -0
- package/build/src/start/startAsync.js.map +1 -0
- package/build/src/utils/FileNotifier.js +71 -0
- package/build/src/utils/FileNotifier.js.map +1 -0
- package/build/src/utils/analytics/getDevClientProperties.js +41 -0
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
- package/build/src/utils/analytics/rudderstackClient.js +106 -0
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
- package/build/src/utils/ansi.js +17 -0
- package/build/src/utils/ansi.js.map +1 -0
- package/build/src/utils/args.js +77 -0
- package/build/src/utils/args.js.map +1 -0
- package/build/src/utils/array.js +56 -0
- package/build/src/utils/array.js.map +1 -0
- package/build/src/utils/cocoapods.js +143 -0
- package/build/src/utils/cocoapods.js.map +1 -0
- package/build/src/utils/codesigning.js +283 -0
- package/build/src/utils/codesigning.js.map +1 -0
- package/build/src/utils/createFileTransform.js +89 -0
- package/build/src/utils/createFileTransform.js.map +1 -0
- package/build/src/utils/delay.js +39 -0
- package/build/src/utils/delay.js.map +1 -0
- package/build/src/utils/dir.js +38 -0
- package/build/src/utils/dir.js.map +1 -0
- package/build/src/utils/downloadAppAsync.js +74 -0
- package/build/src/utils/downloadAppAsync.js.map +1 -0
- package/build/src/utils/downloadExpoGoAsync.js +99 -0
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
- package/build/src/utils/editor.js +60 -0
- package/build/src/utils/editor.js.map +1 -0
- package/build/src/utils/env.js +62 -0
- package/build/src/utils/env.js.map +1 -0
- package/build/src/utils/errors.js +69 -0
- package/build/src/utils/errors.js.map +1 -0
- package/build/src/utils/exit.js +90 -0
- package/build/src/utils/exit.js.map +1 -0
- package/build/src/utils/findUp.js +33 -0
- package/build/src/utils/findUp.js.map +1 -0
- package/build/src/utils/fn.js +32 -0
- package/build/src/utils/fn.js.map +1 -0
- package/build/src/utils/getOrPromptApplicationId.js +183 -0
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
- package/build/src/utils/getRunningProcess.js +92 -0
- package/build/src/utils/getRunningProcess.js.map +1 -0
- package/build/src/utils/git.js +88 -0
- package/build/src/utils/git.js.map +1 -0
- package/build/src/utils/glob.js +65 -0
- package/build/src/utils/glob.js.map +1 -0
- package/build/src/utils/ip.js +16 -0
- package/build/src/utils/ip.js.map +1 -0
- package/build/src/utils/isModuleSymlinked.js +37 -0
- package/build/src/utils/isModuleSymlinked.js.map +1 -0
- package/build/src/utils/link.js +31 -0
- package/build/src/utils/link.js.map +1 -0
- package/build/src/utils/mergeGitIgnorePaths.js +112 -0
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
- package/build/src/utils/modifyConfigAsync.js +68 -0
- package/build/src/utils/modifyConfigAsync.js.map +1 -0
- package/build/src/utils/modifyConfigPlugins.js +51 -0
- package/build/src/utils/modifyConfigPlugins.js.map +1 -0
- package/build/src/utils/nodeModules.js +118 -0
- package/build/src/utils/nodeModules.js.map +1 -0
- package/build/src/utils/npm.js +144 -0
- package/build/src/utils/npm.js.map +1 -0
- package/build/src/utils/obj.js +45 -0
- package/build/src/utils/obj.js.map +1 -0
- package/build/src/utils/ora.js +102 -0
- package/build/src/utils/ora.js.map +1 -0
- package/build/src/utils/port.js +130 -0
- package/build/src/utils/port.js.map +1 -0
- package/build/src/utils/profile.js +63 -0
- package/build/src/utils/profile.js.map +1 -0
- package/build/src/utils/progress.js +15 -0
- package/build/src/utils/progress.js.map +1 -0
- package/build/src/utils/prompts.js +127 -0
- package/build/src/utils/prompts.js.map +1 -0
- package/build/src/utils/resolveArgs.js +94 -0
- package/build/src/utils/resolveArgs.js.map +1 -0
- package/build/src/utils/scheme.js +106 -0
- package/build/src/utils/scheme.js.map +1 -0
- package/build/src/utils/tar.js +59 -0
- package/build/src/utils/tar.js.map +1 -0
- package/build/src/utils/url.js +67 -0
- package/build/src/utils/url.js.map +1 -0
- package/build/src/utils/validateApplicationId.js +90 -0
- package/build/src/utils/validateApplicationId.js.map +1 -0
- package/build/src/whoami/index.js +47 -0
- package/build/src/whoami/index.js.map +1 -0
- package/build/src/whoami/whoamiAsync.js +44 -0
- package/build/src/whoami/whoamiAsync.js.map +1 -0
- package/package.json +132 -4
- package/static/loading-page/index.html +270 -0
- package/index.js +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
|
|
6
|
+
var _childProcess = require("child_process");
|
|
7
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
8
|
+
var _errors = require("../../../utils/errors");
|
|
9
|
+
var _exit = require("../../../utils/exit");
|
|
10
|
+
function _interopRequireDefault(obj) {
|
|
11
|
+
return obj && obj.__esModule ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function _interopRequireWildcard(obj) {
|
|
16
|
+
if (obj && obj.__esModule) {
|
|
17
|
+
return obj;
|
|
18
|
+
} else {
|
|
19
|
+
var newObj = {};
|
|
20
|
+
if (obj != null) {
|
|
21
|
+
for(var key in obj){
|
|
22
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
23
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
24
|
+
if (desc.get || desc.set) {
|
|
25
|
+
Object.defineProperty(newObj, key, desc);
|
|
26
|
+
} else {
|
|
27
|
+
newObj[key] = obj[key];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
newObj.default = obj;
|
|
33
|
+
return newObj;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const BEGINNING_OF_ADB_ERROR_MESSAGE = "error: ";
|
|
37
|
+
class ADBServer {
|
|
38
|
+
isRunning = false;
|
|
39
|
+
removeExitHook = ()=>{};
|
|
40
|
+
/** Returns the command line reference to ADB. */ getAdbExecutablePath() {
|
|
41
|
+
// https://developer.android.com/studio/command-line/variables
|
|
42
|
+
// TODO: Add ANDROID_SDK_ROOT support as well https://github.com/expo/expo/pull/16516#discussion_r820037917
|
|
43
|
+
if (process.env.ANDROID_HOME) {
|
|
44
|
+
return `${process.env.ANDROID_HOME}/platform-tools/adb`;
|
|
45
|
+
}
|
|
46
|
+
return "adb";
|
|
47
|
+
}
|
|
48
|
+
/** Start the ADB server. */ async startAsync() {
|
|
49
|
+
if (this.isRunning) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
// clean up
|
|
53
|
+
this.removeExitHook = (0, _exit).installExitHooks(()=>{
|
|
54
|
+
if (this.isRunning) {
|
|
55
|
+
this.stopAsync();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const adb = this.getAdbExecutablePath();
|
|
59
|
+
const result = await this.resolveAdbPromise((0, _spawnAsync).default(adb, [
|
|
60
|
+
"start-server"
|
|
61
|
+
]));
|
|
62
|
+
const lines = result.stderr.trim().split(/\r?\n/);
|
|
63
|
+
const isStarted = lines.includes("* daemon started successfully");
|
|
64
|
+
this.isRunning = isStarted;
|
|
65
|
+
return isStarted;
|
|
66
|
+
}
|
|
67
|
+
/** Kill the ADB server. */ async stopAsync() {
|
|
68
|
+
Log.debug("Stopping ADB server");
|
|
69
|
+
if (!this.isRunning) {
|
|
70
|
+
Log.debug("ADB server is not running");
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
this.removeExitHook();
|
|
74
|
+
try {
|
|
75
|
+
await this.runAsync([
|
|
76
|
+
"kill-server"
|
|
77
|
+
]);
|
|
78
|
+
return true;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
Log.error("Failed to stop ADB server: " + error.message);
|
|
81
|
+
return false;
|
|
82
|
+
} finally{
|
|
83
|
+
Log.debug("Stopped ADB server");
|
|
84
|
+
this.isRunning = false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** Execute an ADB command with given args. */ async runAsync(args) {
|
|
88
|
+
// TODO: Add a global package that installs adb to the path.
|
|
89
|
+
const adb = this.getAdbExecutablePath();
|
|
90
|
+
await this.startAsync();
|
|
91
|
+
Log.debug([
|
|
92
|
+
adb,
|
|
93
|
+
...args
|
|
94
|
+
].join(" "));
|
|
95
|
+
const result = await this.resolveAdbPromise((0, _spawnAsync).default(adb, args));
|
|
96
|
+
return result.output.join("\n");
|
|
97
|
+
}
|
|
98
|
+
/** Get ADB file output. Useful for reading device state/settings. */ async getFileOutputAsync(args) {
|
|
99
|
+
// TODO: Add a global package that installs adb to the path.
|
|
100
|
+
const adb = this.getAdbExecutablePath();
|
|
101
|
+
await this.startAsync();
|
|
102
|
+
const results = await this.resolveAdbPromise((0, _childProcess).execFileSync(adb, args, {
|
|
103
|
+
encoding: "latin1",
|
|
104
|
+
stdio: "pipe"
|
|
105
|
+
}));
|
|
106
|
+
Log.debug("[ADB] File output:\n", results);
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
/** Formats error info. */ async resolveAdbPromise(promise) {
|
|
110
|
+
try {
|
|
111
|
+
return await promise;
|
|
112
|
+
} catch (error) {
|
|
113
|
+
// User pressed ctrl+c to cancel the process...
|
|
114
|
+
if (error.signal === "SIGINT") {
|
|
115
|
+
throw new _errors.AbortCommandError();
|
|
116
|
+
}
|
|
117
|
+
// TODO: Support heap corruption for adb 29 (process exits with code -1073740940) (windows and linux)
|
|
118
|
+
let errorMessage = (error.stderr || error.stdout || error.message).trim();
|
|
119
|
+
if (errorMessage.startsWith(BEGINNING_OF_ADB_ERROR_MESSAGE)) {
|
|
120
|
+
errorMessage = errorMessage.substring(BEGINNING_OF_ADB_ERROR_MESSAGE.length);
|
|
121
|
+
}
|
|
122
|
+
error.message = errorMessage;
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.ADBServer = ADBServer;
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=ADBServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/android/ADBServer.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport { execFileSync } from 'child_process';\n\nimport * as Log from '../../../log';\nimport { AbortCommandError } from '../../../utils/errors';\nimport { installExitHooks } from '../../../utils/exit';\n\nconst BEGINNING_OF_ADB_ERROR_MESSAGE = 'error: ';\n\n// This is a tricky class since it controls a system state (side-effects).\n// A more ideal solution would be to implement ADB in JS.\n// The main reason this is a class is to control the flow of testing.\n\nexport class ADBServer {\n isRunning: boolean = false;\n removeExitHook: () => void = () => {};\n\n /** Returns the command line reference to ADB. */\n getAdbExecutablePath(): string {\n // https://developer.android.com/studio/command-line/variables\n // TODO: Add ANDROID_SDK_ROOT support as well https://github.com/expo/expo/pull/16516#discussion_r820037917\n if (process.env.ANDROID_HOME) {\n return `${process.env.ANDROID_HOME}/platform-tools/adb`;\n }\n return 'adb';\n }\n\n /** Start the ADB server. */\n async startAsync(): Promise<boolean> {\n if (this.isRunning) {\n return false;\n }\n // clean up\n this.removeExitHook = installExitHooks(() => {\n if (this.isRunning) {\n this.stopAsync();\n }\n });\n const adb = this.getAdbExecutablePath();\n const result = await this.resolveAdbPromise(spawnAsync(adb, ['start-server']));\n const lines = result.stderr.trim().split(/\\r?\\n/);\n const isStarted = lines.includes('* daemon started successfully');\n this.isRunning = isStarted;\n return isStarted;\n }\n\n /** Kill the ADB server. */\n async stopAsync(): Promise<boolean> {\n Log.debug('Stopping ADB server');\n\n if (!this.isRunning) {\n Log.debug('ADB server is not running');\n return false;\n }\n this.removeExitHook();\n try {\n await this.runAsync(['kill-server']);\n return true;\n } catch (error: any) {\n Log.error('Failed to stop ADB server: ' + error.message);\n return false;\n } finally {\n Log.debug('Stopped ADB server');\n this.isRunning = false;\n }\n }\n\n /** Execute an ADB command with given args. */\n async runAsync(args: string[]): Promise<string> {\n // TODO: Add a global package that installs adb to the path.\n const adb = this.getAdbExecutablePath();\n\n await this.startAsync();\n\n Log.debug([adb, ...args].join(' '));\n const result = await this.resolveAdbPromise(spawnAsync(adb, args));\n return result.output.join('\\n');\n }\n\n /** Get ADB file output. Useful for reading device state/settings. */\n async getFileOutputAsync(args: string[]): Promise<string> {\n // TODO: Add a global package that installs adb to the path.\n const adb = this.getAdbExecutablePath();\n\n await this.startAsync();\n\n const results = await this.resolveAdbPromise(\n execFileSync(adb, args, {\n encoding: 'latin1',\n stdio: 'pipe',\n })\n );\n Log.debug('[ADB] File output:\\n', results);\n return results;\n }\n\n /** Formats error info. */\n async resolveAdbPromise<T>(promise: T | Promise<T>): Promise<T> {\n try {\n return await promise;\n } catch (error: any) {\n // User pressed ctrl+c to cancel the process...\n if (error.signal === 'SIGINT') {\n throw new AbortCommandError();\n }\n // TODO: Support heap corruption for adb 29 (process exits with code -1073740940) (windows and linux)\n let errorMessage = (error.stderr || error.stdout || error.message).trim();\n if (errorMessage.startsWith(BEGINNING_OF_ADB_ERROR_MESSAGE)) {\n errorMessage = errorMessage.substring(BEGINNING_OF_ADB_ERROR_MESSAGE.length);\n }\n error.message = errorMessage;\n throw error;\n }\n }\n}\n"],"names":["Log","BEGINNING_OF_ADB_ERROR_MESSAGE","ADBServer","isRunning","removeExitHook","getAdbExecutablePath","process","env","ANDROID_HOME","startAsync","installExitHooks","stopAsync","adb","result","resolveAdbPromise","spawnAsync","lines","stderr","trim","split","isStarted","includes","debug","runAsync","error","message","args","join","output","getFileOutputAsync","results","execFileSync","encoding","stdio","promise","signal","AbortCommandError","errorMessage","stdout","startsWith","substring","length"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _configPlugins = require("@expo/config-plugins");
|
|
6
|
+
var _appIdResolver = require("../AppIdResolver");
|
|
7
|
+
class AndroidAppIdResolver extends _appIdResolver.AppIdResolver {
|
|
8
|
+
constructor(projectRoot){
|
|
9
|
+
super(projectRoot, "android", "android.package");
|
|
10
|
+
}
|
|
11
|
+
async hasNativeProjectAsync() {
|
|
12
|
+
try {
|
|
13
|
+
await _configPlugins.AndroidConfig.Paths.getProjectPathOrThrowAsync(this.projectRoot);
|
|
14
|
+
return true;
|
|
15
|
+
} catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async resolveAppIdFromNativeAsync() {
|
|
20
|
+
const applicationIdFromGradle = await _configPlugins.AndroidConfig.Package.getApplicationIdAsync(this.projectRoot).catch(()=>null
|
|
21
|
+
);
|
|
22
|
+
if (applicationIdFromGradle) {
|
|
23
|
+
return applicationIdFromGradle;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
var ref, ref1;
|
|
27
|
+
const filePath = await _configPlugins.AndroidConfig.Paths.getAndroidManifestAsync(this.projectRoot);
|
|
28
|
+
const androidManifest = await _configPlugins.AndroidConfig.Manifest.readAndroidManifestAsync(filePath);
|
|
29
|
+
// Assert MainActivity defined.
|
|
30
|
+
await _configPlugins.AndroidConfig.Manifest.getMainActivityOrThrow(androidManifest);
|
|
31
|
+
if ((ref = androidManifest.manifest) == null ? void 0 : (ref1 = ref.$) == null ? void 0 : ref1.package) {
|
|
32
|
+
return androidManifest.manifest.$.package;
|
|
33
|
+
}
|
|
34
|
+
} catch {}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AndroidAppIdResolver = AndroidAppIdResolver;
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=AndroidAppIdResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/android/AndroidAppIdResolver.ts"],"sourcesContent":["import { AndroidConfig } from '@expo/config-plugins';\n\nimport { AppIdResolver } from '../AppIdResolver';\n\n/** Resolves the Android package name from the Expo config or native files. */\nexport class AndroidAppIdResolver extends AppIdResolver {\n constructor(projectRoot: string) {\n super(projectRoot, 'android', 'android.package');\n }\n\n async hasNativeProjectAsync(): Promise<boolean> {\n try {\n await AndroidConfig.Paths.getProjectPathOrThrowAsync(this.projectRoot);\n return true;\n } catch {\n return false;\n }\n }\n\n async resolveAppIdFromNativeAsync(): Promise<string | null> {\n const applicationIdFromGradle = await AndroidConfig.Package.getApplicationIdAsync(\n this.projectRoot\n ).catch(() => null);\n if (applicationIdFromGradle) {\n return applicationIdFromGradle;\n }\n\n try {\n const filePath = await AndroidConfig.Paths.getAndroidManifestAsync(this.projectRoot);\n const androidManifest = await AndroidConfig.Manifest.readAndroidManifestAsync(filePath);\n // Assert MainActivity defined.\n await AndroidConfig.Manifest.getMainActivityOrThrow(androidManifest);\n if (androidManifest.manifest?.$?.package) {\n return androidManifest.manifest.$.package;\n }\n } catch {}\n\n return null;\n }\n}\n"],"names":["AndroidAppIdResolver","AppIdResolver","constructor","projectRoot","hasNativeProjectAsync","AndroidConfig","Paths","getProjectPathOrThrowAsync","resolveAppIdFromNativeAsync","applicationIdFromGradle","Package","getApplicationIdAsync","catch","androidManifest","filePath","getAndroidManifestAsync","Manifest","readAndroidManifestAsync","getMainActivityOrThrow","manifest","$","package"],"mappings":"AAAA;;;;AAA8B,IAAA,cAAsB,WAAtB,sBAAsB,CAAA;AAEtB,IAAA,cAAkB,WAAlB,kBAAkB,CAAA;AAGzC,MAAMA,oBAAoB,SAASC,cAAa,cAAA;IACrDC,YAAYC,WAAmB,CAAE;QAC/B,KAAK,CAACA,WAAW,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;KAClD;IAED,MAAMC,qBAAqB,GAAqB;QAC9C,IAAI;YACF,MAAMC,cAAa,cAAA,CAACC,KAAK,CAACC,0BAA0B,CAAC,IAAI,CAACJ,WAAW,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;SACb,CAAC,OAAM;YACN,OAAO,KAAK,CAAC;SACd;KACF;IAED,MAAMK,2BAA2B,GAA2B;QAC1D,MAAMC,uBAAuB,GAAG,MAAMJ,cAAa,cAAA,CAACK,OAAO,CAACC,qBAAqB,CAC/E,IAAI,CAACR,WAAW,CACjB,CAACS,KAAK,CAAC,IAAM,IAAI;QAAA,CAAC,AAAC;QACpB,IAAIH,uBAAuB,EAAE;YAC3B,OAAOA,uBAAuB,CAAC;SAChC;QAED,IAAI;gBAKEI,GAAwB;YAJ5B,MAAMC,QAAQ,GAAG,MAAMT,cAAa,cAAA,CAACC,KAAK,CAACS,uBAAuB,CAAC,IAAI,CAACZ,WAAW,CAAC,AAAC;YACrF,MAAMU,eAAe,GAAG,MAAMR,cAAa,cAAA,CAACW,QAAQ,CAACC,wBAAwB,CAACH,QAAQ,CAAC,AAAC;YACxF,+BAA+B;YAC/B,MAAMT,cAAa,cAAA,CAACW,QAAQ,CAACE,sBAAsB,CAACL,eAAe,CAAC,CAAC;YACrE,IAAIA,CAAAA,GAAwB,GAAxBA,eAAe,CAACM,QAAQ,SAAG,GAA3BN,KAAAA,CAA2B,GAA3BA,QAAAA,GAAwB,CAAEO,CAAC,SAAA,GAA3BP,KAAAA,CAA2B,QAAEQ,OAAO,AAAT,EAAW;gBACxC,OAAOR,eAAe,CAACM,QAAQ,CAACC,CAAC,CAACC,OAAO,CAAC;aAC3C;SACF,CAAC,OAAM,EAAE;QAEV,OAAO,IAAI,CAAC;KACb;CACF;QAlCYrB,oBAAoB,GAApBA,oBAAoB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
6
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
7
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
8
|
+
var _errors = require("../../../utils/errors");
|
|
9
|
+
var _url = require("../../../utils/url");
|
|
10
|
+
var _deviceManager = require("../DeviceManager");
|
|
11
|
+
var _expoGoInstaller = require("../ExpoGoInstaller");
|
|
12
|
+
var _activateWindow = require("./activateWindow");
|
|
13
|
+
var AndroidDebugBridge = _interopRequireWildcard(require("./adb"));
|
|
14
|
+
var _emulator = require("./emulator");
|
|
15
|
+
var _getDevices = require("./getDevices");
|
|
16
|
+
var _promptAndroidDevice = require("./promptAndroidDevice");
|
|
17
|
+
function _interopRequireDefault(obj) {
|
|
18
|
+
return obj && obj.__esModule ? obj : {
|
|
19
|
+
default: obj
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function _interopRequireWildcard(obj) {
|
|
23
|
+
if (obj && obj.__esModule) {
|
|
24
|
+
return obj;
|
|
25
|
+
} else {
|
|
26
|
+
var newObj = {};
|
|
27
|
+
if (obj != null) {
|
|
28
|
+
for(var key in obj){
|
|
29
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
30
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
31
|
+
if (desc.get || desc.set) {
|
|
32
|
+
Object.defineProperty(newObj, key, desc);
|
|
33
|
+
} else {
|
|
34
|
+
newObj[key] = obj[key];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
newObj.default = obj;
|
|
40
|
+
return newObj;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const EXPO_GO_APPLICATION_IDENTIFIER = "host.exp.exponent";
|
|
44
|
+
class AndroidDeviceManager extends _deviceManager.DeviceManager {
|
|
45
|
+
static async resolveFromNameAsync(name) {
|
|
46
|
+
const devices = await (0, _getDevices).getDevicesAsync();
|
|
47
|
+
const device1 = devices.find((device)=>device.name === name
|
|
48
|
+
);
|
|
49
|
+
if (!device1) {
|
|
50
|
+
throw new _errors.CommandError("Could not find device with name: " + name);
|
|
51
|
+
}
|
|
52
|
+
return AndroidDeviceManager.resolveAsync({
|
|
53
|
+
device: device1,
|
|
54
|
+
shouldPrompt: false
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
static async resolveAsync({ device , shouldPrompt } = {}) {
|
|
58
|
+
if (device) {
|
|
59
|
+
const manager = new AndroidDeviceManager(device);
|
|
60
|
+
if (!await manager.attemptToStartAsync()) {
|
|
61
|
+
throw new _errors.AbortCommandError();
|
|
62
|
+
}
|
|
63
|
+
return manager;
|
|
64
|
+
}
|
|
65
|
+
const devices = await (0, _getDevices).getDevicesAsync();
|
|
66
|
+
const _device = shouldPrompt ? await (0, _promptAndroidDevice).promptForDeviceAsync(devices) : devices[0];
|
|
67
|
+
return AndroidDeviceManager.resolveAsync({
|
|
68
|
+
device: _device,
|
|
69
|
+
shouldPrompt: false
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
get name() {
|
|
73
|
+
// TODO: Maybe strip `_` from the device name?
|
|
74
|
+
return this.device.name;
|
|
75
|
+
}
|
|
76
|
+
get identifier() {
|
|
77
|
+
var _pid;
|
|
78
|
+
return (_pid = this.device.pid) != null ? _pid : "unknown";
|
|
79
|
+
}
|
|
80
|
+
async getAppVersionAsync(applicationId) {
|
|
81
|
+
var ref;
|
|
82
|
+
const info = await AndroidDebugBridge.getPackageInfoAsync(this.device, {
|
|
83
|
+
appId: applicationId
|
|
84
|
+
});
|
|
85
|
+
const regex = /versionName=([0-9.]+)/;
|
|
86
|
+
var ref1;
|
|
87
|
+
return (ref1 = (ref = regex.exec(info)) == null ? void 0 : ref[1]) != null ? ref1 : null;
|
|
88
|
+
}
|
|
89
|
+
async attemptToStartAsync() {
|
|
90
|
+
// TODO: Add a light-weight method for checking since a device could disconnect.
|
|
91
|
+
if (!await AndroidDebugBridge.isDeviceBootedAsync(this.device)) {
|
|
92
|
+
this.device = await (0, _emulator).startDeviceAsync(this.device);
|
|
93
|
+
}
|
|
94
|
+
if (this.device.isAuthorized === false) {
|
|
95
|
+
AndroidDebugBridge.logUnauthorized(this.device);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return this.device;
|
|
99
|
+
}
|
|
100
|
+
async startAsync() {
|
|
101
|
+
const device = await this.attemptToStartAsync();
|
|
102
|
+
(0, _assert).default(device, `Failed to boot emulator.`);
|
|
103
|
+
return this.device;
|
|
104
|
+
}
|
|
105
|
+
async installAppAsync(binaryPath) {
|
|
106
|
+
await AndroidDebugBridge.installAsync(this.device, {
|
|
107
|
+
filePath: binaryPath
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async uninstallAppAsync(appId) {
|
|
111
|
+
// we need to check if the app is installed, else we might bump into "Failure [DELETE_FAILED_INTERNAL_ERROR]"
|
|
112
|
+
const isInstalled = await this.isAppInstalledAsync(appId);
|
|
113
|
+
if (!isInstalled) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
await AndroidDebugBridge.uninstallAsync(this.device, {
|
|
118
|
+
appId
|
|
119
|
+
});
|
|
120
|
+
} catch (e) {
|
|
121
|
+
Log.error(`Could not uninstall app "${appId}" from your device, please uninstall it manually and try again.`);
|
|
122
|
+
throw e;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @param launchActivity Activity to launch `[application identifier]/.[main activity name]`, ex: `com.bacon.app/.MainActivity`
|
|
127
|
+
*/ async launchActivityAsync(launchActivity) {
|
|
128
|
+
try {
|
|
129
|
+
return await AndroidDebugBridge.launchActivityAsync(this.device, {
|
|
130
|
+
launchActivity
|
|
131
|
+
});
|
|
132
|
+
} catch (error) {
|
|
133
|
+
let errorMessage = `Couldn't open Android app with activity "${launchActivity}" on device "${this.name}".`;
|
|
134
|
+
if (error instanceof _errors.CommandError && error.code === "APP_NOT_INSTALLED") {
|
|
135
|
+
errorMessage += `\nThe app might not be installed, try installing it with: ${_chalk.default.bold(`npx expo run:android -d ${this.name}`)}`;
|
|
136
|
+
}
|
|
137
|
+
errorMessage += _chalk.default.gray(`\n${error.message}`);
|
|
138
|
+
error.message = errorMessage;
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async isAppInstalledAsync(applicationId) {
|
|
143
|
+
return await AndroidDebugBridge.isPackageInstalledAsync(this.device, applicationId);
|
|
144
|
+
}
|
|
145
|
+
async openUrlAsync(url) {
|
|
146
|
+
// Non-compliant URLs will be treated as application identifiers.
|
|
147
|
+
if (!(0, _url).validateUrl(url, {
|
|
148
|
+
requireProtocol: true
|
|
149
|
+
})) {
|
|
150
|
+
await this.launchActivityAsync(url);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const parsed = new URL(url);
|
|
154
|
+
if (parsed.protocol === "exp:") {
|
|
155
|
+
// NOTE(brentvatne): temporary workaround! launch Expo Go first, then
|
|
156
|
+
// launch the project!
|
|
157
|
+
// https://github.com/expo/expo/issues/7772
|
|
158
|
+
// adb shell monkey -p host.exp.exponent -c android.intent.category.LAUNCHER 1
|
|
159
|
+
// Note: this is not needed in Expo Development Client, it only applies to Expo Go
|
|
160
|
+
await AndroidDebugBridge.openAppIdAsync({
|
|
161
|
+
pid: this.device.pid
|
|
162
|
+
}, {
|
|
163
|
+
applicationId: EXPO_GO_APPLICATION_IDENTIFIER
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
await AndroidDebugBridge.openUrlAsync({
|
|
167
|
+
pid: this.device.pid
|
|
168
|
+
}, {
|
|
169
|
+
url
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
async activateWindowAsync() {
|
|
173
|
+
// Bring the emulator window to the front on macos devices.
|
|
174
|
+
await (0, _activateWindow).activateWindowAsync(this.device);
|
|
175
|
+
}
|
|
176
|
+
async ensureExpoGoAsync(sdkVersion) {
|
|
177
|
+
const installer = new _expoGoInstaller.ExpoGoInstaller("android", EXPO_GO_APPLICATION_IDENTIFIER, sdkVersion);
|
|
178
|
+
return installer.ensureAsync(this);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.AndroidDeviceManager = AndroidDeviceManager;
|
|
182
|
+
|
|
183
|
+
//# sourceMappingURL=AndroidDeviceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/android/AndroidDeviceManager.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport * as Log from '../../../log';\nimport { AbortCommandError, CommandError } from '../../../utils/errors';\nimport { validateUrl } from '../../../utils/url';\nimport { DeviceManager } from '../DeviceManager';\nimport { ExpoGoInstaller } from '../ExpoGoInstaller';\nimport { BaseResolveDeviceProps } from '../PlatformManager';\nimport { activateWindowAsync } from './activateWindow';\nimport * as AndroidDebugBridge from './adb';\nimport { startDeviceAsync } from './emulator';\nimport { getDevicesAsync } from './getDevices';\nimport { promptForDeviceAsync } from './promptAndroidDevice';\n\nconst EXPO_GO_APPLICATION_IDENTIFIER = 'host.exp.exponent';\n\nexport class AndroidDeviceManager extends DeviceManager<AndroidDebugBridge.Device> {\n static async resolveFromNameAsync(name: string): Promise<AndroidDeviceManager> {\n const devices = await getDevicesAsync();\n const device = devices.find((device) => device.name === name);\n\n if (!device) {\n throw new CommandError('Could not find device with name: ' + name);\n }\n return AndroidDeviceManager.resolveAsync({ device, shouldPrompt: false });\n }\n\n static async resolveAsync({\n device,\n shouldPrompt,\n }: BaseResolveDeviceProps<AndroidDebugBridge.Device> = {}): Promise<AndroidDeviceManager> {\n if (device) {\n const manager = new AndroidDeviceManager(device);\n if (!(await manager.attemptToStartAsync())) {\n throw new AbortCommandError();\n }\n return manager;\n }\n\n const devices = await getDevicesAsync();\n const _device = shouldPrompt ? await promptForDeviceAsync(devices) : devices[0];\n return AndroidDeviceManager.resolveAsync({ device: _device, shouldPrompt: false });\n }\n\n get name() {\n // TODO: Maybe strip `_` from the device name?\n return this.device.name;\n }\n\n get identifier(): string {\n return this.device.pid ?? 'unknown';\n }\n\n async getAppVersionAsync(applicationId: string): Promise<string | null> {\n const info = await AndroidDebugBridge.getPackageInfoAsync(this.device, {\n appId: applicationId,\n });\n\n const regex = /versionName=([0-9.]+)/;\n return regex.exec(info)?.[1] ?? null;\n }\n\n protected async attemptToStartAsync(): Promise<AndroidDebugBridge.Device | null> {\n // TODO: Add a light-weight method for checking since a device could disconnect.\n if (!(await AndroidDebugBridge.isDeviceBootedAsync(this.device))) {\n this.device = await startDeviceAsync(this.device);\n }\n\n if (this.device.isAuthorized === false) {\n AndroidDebugBridge.logUnauthorized(this.device);\n return null;\n }\n\n return this.device;\n }\n\n async startAsync(): Promise<AndroidDebugBridge.Device> {\n const device = await this.attemptToStartAsync();\n assert(device, `Failed to boot emulator.`);\n return this.device;\n }\n\n async installAppAsync(binaryPath: string) {\n await AndroidDebugBridge.installAsync(this.device, {\n filePath: binaryPath,\n });\n }\n\n async uninstallAppAsync(appId: string) {\n // we need to check if the app is installed, else we might bump into \"Failure [DELETE_FAILED_INTERNAL_ERROR]\"\n const isInstalled = await this.isAppInstalledAsync(appId);\n if (!isInstalled) {\n return;\n }\n\n try {\n await AndroidDebugBridge.uninstallAsync(this.device, {\n appId,\n });\n } catch (e) {\n Log.error(\n `Could not uninstall app \"${appId}\" from your device, please uninstall it manually and try again.`\n );\n throw e;\n }\n }\n\n /**\n * @param launchActivity Activity to launch `[application identifier]/.[main activity name]`, ex: `com.bacon.app/.MainActivity`\n */\n async launchActivityAsync(launchActivity: string): Promise<string> {\n try {\n return await AndroidDebugBridge.launchActivityAsync(this.device, {\n launchActivity,\n });\n } catch (error: any) {\n let errorMessage = `Couldn't open Android app with activity \"${launchActivity}\" on device \"${this.name}\".`;\n if (error instanceof CommandError && error.code === 'APP_NOT_INSTALLED') {\n errorMessage += `\\nThe app might not be installed, try installing it with: ${chalk.bold(\n `npx expo run:android -d ${this.name}`\n )}`;\n }\n errorMessage += chalk.gray(`\\n${error.message}`);\n error.message = errorMessage;\n throw error;\n }\n }\n\n async isAppInstalledAsync(applicationId: string) {\n return await AndroidDebugBridge.isPackageInstalledAsync(this.device, applicationId);\n }\n\n async openUrlAsync(url: string) {\n // Non-compliant URLs will be treated as application identifiers.\n if (!validateUrl(url, { requireProtocol: true })) {\n await this.launchActivityAsync(url);\n return;\n }\n\n const parsed = new URL(url);\n\n if (parsed.protocol === 'exp:') {\n // NOTE(brentvatne): temporary workaround! launch Expo Go first, then\n // launch the project!\n // https://github.com/expo/expo/issues/7772\n // adb shell monkey -p host.exp.exponent -c android.intent.category.LAUNCHER 1\n // Note: this is not needed in Expo Development Client, it only applies to Expo Go\n await AndroidDebugBridge.openAppIdAsync(\n { pid: this.device.pid },\n { applicationId: EXPO_GO_APPLICATION_IDENTIFIER }\n );\n }\n\n await AndroidDebugBridge.openUrlAsync({ pid: this.device.pid }, { url });\n }\n\n async activateWindowAsync() {\n // Bring the emulator window to the front on macos devices.\n await activateWindowAsync(this.device);\n }\n\n async ensureExpoGoAsync(sdkVersion?: string): Promise<boolean> {\n const installer = new ExpoGoInstaller('android', EXPO_GO_APPLICATION_IDENTIFIER, sdkVersion);\n return installer.ensureAsync(this);\n }\n}\n"],"names":["Log","AndroidDebugBridge","EXPO_GO_APPLICATION_IDENTIFIER","AndroidDeviceManager","DeviceManager","resolveFromNameAsync","name","devices","getDevicesAsync","device","find","CommandError","resolveAsync","shouldPrompt","manager","attemptToStartAsync","AbortCommandError","_device","promptForDeviceAsync","identifier","pid","getAppVersionAsync","applicationId","regex","info","getPackageInfoAsync","appId","exec","isDeviceBootedAsync","startDeviceAsync","isAuthorized","logUnauthorized","startAsync","assert","installAppAsync","binaryPath","installAsync","filePath","uninstallAppAsync","isInstalled","isAppInstalledAsync","uninstallAsync","e","error","launchActivityAsync","launchActivity","errorMessage","code","chalk","bold","gray","message","isPackageInstalledAsync","openUrlAsync","url","validateUrl","requireProtocol","parsed","URL","protocol","openAppIdAsync","activateWindowAsync","ensureExpoGoAsync","sdkVersion","installer","ExpoGoInstaller","ensureAsync"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _platformManager = require("../PlatformManager");
|
|
6
|
+
var _androidAppIdResolver = require("./AndroidAppIdResolver");
|
|
7
|
+
var _androidDeviceManager = require("./AndroidDeviceManager");
|
|
8
|
+
var _adbReverse = require("./adbReverse");
|
|
9
|
+
class AndroidPlatformManager extends _platformManager.PlatformManager {
|
|
10
|
+
constructor(projectRoot, port, options){
|
|
11
|
+
super(projectRoot, {
|
|
12
|
+
platform: "android",
|
|
13
|
+
...options,
|
|
14
|
+
resolveDeviceAsync: _androidDeviceManager.AndroidDeviceManager.resolveAsync
|
|
15
|
+
});
|
|
16
|
+
this.projectRoot = projectRoot;
|
|
17
|
+
this.port = port;
|
|
18
|
+
}
|
|
19
|
+
async openAsync(options, resolveSettings) {
|
|
20
|
+
await (0, _adbReverse).startAdbReverseAsync([
|
|
21
|
+
this.port
|
|
22
|
+
]);
|
|
23
|
+
return super.openAsync(options, resolveSettings);
|
|
24
|
+
}
|
|
25
|
+
_getAppIdResolver() {
|
|
26
|
+
return new _androidAppIdResolver.AndroidAppIdResolver(this.projectRoot);
|
|
27
|
+
}
|
|
28
|
+
_resolveAlternativeLaunchUrl(applicationId, props) {
|
|
29
|
+
var ref;
|
|
30
|
+
return (ref = props == null ? void 0 : props.launchActivity) != null ? ref : `${applicationId}/.MainActivity`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.AndroidPlatformManager = AndroidPlatformManager;
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=AndroidPlatformManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/android/AndroidPlatformManager.ts"],"sourcesContent":["import { AppIdResolver } from '../AppIdResolver';\nimport { BaseOpenInCustomProps, BaseResolveDeviceProps, PlatformManager } from '../PlatformManager';\nimport { AndroidAppIdResolver } from './AndroidAppIdResolver';\nimport { AndroidDeviceManager } from './AndroidDeviceManager';\nimport { Device } from './adb';\nimport { startAdbReverseAsync } from './adbReverse';\n\ninterface AndroidOpenInCustomProps extends BaseOpenInCustomProps {\n launchActivity?: string;\n}\n\nexport class AndroidPlatformManager extends PlatformManager<Device, AndroidOpenInCustomProps> {\n constructor(\n protected projectRoot: string,\n protected port: number,\n options: {\n /** Get the base URL for the dev server hosting this platform manager. */\n getDevServerUrl: () => string | null;\n /** Expo Go URL. */\n getExpoGoUrl: () => string | null;\n /** Dev Client URL. */\n getCustomRuntimeUrl: (props?: { scheme?: string }) => string | null;\n }\n ) {\n super(projectRoot, {\n platform: 'android',\n ...options,\n resolveDeviceAsync: AndroidDeviceManager.resolveAsync,\n });\n }\n\n async openAsync(\n options:\n | { runtime: 'expo' | 'web' }\n | { runtime: 'custom'; props?: Partial<AndroidOpenInCustomProps> },\n resolveSettings?: Partial<BaseResolveDeviceProps<Device>>\n ): Promise<{ url: string }> {\n await startAdbReverseAsync([this.port]);\n return super.openAsync(options, resolveSettings);\n }\n\n _getAppIdResolver(): AppIdResolver {\n return new AndroidAppIdResolver(this.projectRoot);\n }\n\n _resolveAlternativeLaunchUrl(\n applicationId: string,\n props?: Partial<AndroidOpenInCustomProps>\n ): string {\n return props?.launchActivity ?? `${applicationId}/.MainActivity`;\n }\n}\n"],"names":["AndroidPlatformManager","PlatformManager","constructor","projectRoot","port","options","platform","resolveDeviceAsync","AndroidDeviceManager","resolveAsync","openAsync","resolveSettings","startAdbReverseAsync","_getAppIdResolver","AndroidAppIdResolver","_resolveAlternativeLaunchUrl","applicationId","props","launchActivity"],"mappings":"AAAA;;;;AAC+E,IAAA,gBAAoB,WAApB,oBAAoB,CAAA;AAC9D,IAAA,qBAAwB,WAAxB,wBAAwB,CAAA;AACxB,IAAA,qBAAwB,WAAxB,wBAAwB,CAAA;AAExB,IAAA,WAAc,WAAd,cAAc,CAAA;AAM5C,MAAMA,sBAAsB,SAASC,gBAAe,gBAAA;IACzDC,YACYC,WAAmB,EACnBC,IAAY,EACtBC,OAOC,CACD;QACA,KAAK,CAACF,WAAW,EAAE;YACjBG,QAAQ,EAAE,SAAS;YACnB,GAAGD,OAAO;YACVE,kBAAkB,EAAEC,qBAAoB,qBAAA,CAACC,YAAY;SACtD,CAAC,CAAC;aAfON,WAAmB,GAAnBA,WAAmB;aACnBC,IAAY,GAAZA,IAAY;KAevB;IAED,MAAMM,SAAS,CACbL,OAEoE,EACpEM,eAAyD,EAC/B;QAC1B,MAAMC,CAAAA,GAAAA,WAAoB,AAAa,CAAA,qBAAb,CAAC;YAAC,IAAI,CAACR,IAAI;SAAC,CAAC,CAAC;QACxC,OAAO,KAAK,CAACM,SAAS,CAACL,OAAO,EAAEM,eAAe,CAAC,CAAC;KAClD;IAEDE,iBAAiB,GAAkB;QACjC,OAAO,IAAIC,qBAAoB,qBAAA,CAAC,IAAI,CAACX,WAAW,CAAC,CAAC;KACnD;IAEDY,4BAA4B,CAC1BC,aAAqB,EACrBC,KAAyC,EACjC;YACDA,GAAqB;QAA5B,OAAOA,CAAAA,GAAqB,GAArBA,KAAK,QAAgB,GAArBA,KAAAA,CAAqB,GAArBA,KAAK,CAAEC,cAAc,YAArBD,GAAqB,GAAI,CAAC,EAAED,aAAa,CAAC,cAAc,CAAC,CAAC;KAClE;CACF;QAxCYhB,sBAAsB,GAAtBA,sBAAsB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.activateWindowAsync = activateWindowAsync;
|
|
6
|
+
var osascript = _interopRequireWildcard(require("@expo/osascript"));
|
|
7
|
+
var _childProcess = require("child_process");
|
|
8
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
9
|
+
function _interopRequireWildcard(obj) {
|
|
10
|
+
if (obj && obj.__esModule) {
|
|
11
|
+
return obj;
|
|
12
|
+
} else {
|
|
13
|
+
var newObj = {};
|
|
14
|
+
if (obj != null) {
|
|
15
|
+
for(var key in obj){
|
|
16
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
17
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
18
|
+
if (desc.get || desc.set) {
|
|
19
|
+
Object.defineProperty(newObj, key, desc);
|
|
20
|
+
} else {
|
|
21
|
+
newObj[key] = obj[key];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
newObj.default = obj;
|
|
27
|
+
return newObj;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function getUnixPID(port) {
|
|
31
|
+
var ref;
|
|
32
|
+
// Runs like `lsof -i:8081 -P -t -sTCP:LISTEN`
|
|
33
|
+
const args = [
|
|
34
|
+
`-i:${port}`,
|
|
35
|
+
"-P",
|
|
36
|
+
"-t",
|
|
37
|
+
"-sTCP:LISTEN"
|
|
38
|
+
];
|
|
39
|
+
Log.debug("lsof " + args.join(" "));
|
|
40
|
+
return (ref = (0, _childProcess).execFileSync("lsof", args, {
|
|
41
|
+
encoding: "utf8",
|
|
42
|
+
stdio: [
|
|
43
|
+
"pipe",
|
|
44
|
+
"pipe",
|
|
45
|
+
"ignore"
|
|
46
|
+
]
|
|
47
|
+
}).split("\n")[0]) == null ? void 0 : ref.trim == null ? void 0 : ref.trim();
|
|
48
|
+
}
|
|
49
|
+
async function activateWindowAsync(device) {
|
|
50
|
+
var ref;
|
|
51
|
+
Log.debug(`Activating window for device (pid: ${device.pid}, type: ${device.type})`);
|
|
52
|
+
if (// only mac is supported for now.
|
|
53
|
+
process.platform !== "darwin" || // can only focus emulators
|
|
54
|
+
device.type !== "emulator") {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
// Google Emulator ID: `emulator-5554` -> `5554`
|
|
58
|
+
const androidPid = (ref = device.pid.match(/-(\d+)/)) == null ? void 0 : ref[1];
|
|
59
|
+
if (!androidPid) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
// Unix PID
|
|
63
|
+
const pid = getUnixPID(androidPid);
|
|
64
|
+
if (!pid) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
Log.debug(`Activate window for pid:`, pid);
|
|
68
|
+
try {
|
|
69
|
+
await osascript.execAsync(`
|
|
70
|
+
tell application "System Events"
|
|
71
|
+
set frontmost of the first process whose unix id is ${pid} to true
|
|
72
|
+
end tell`);
|
|
73
|
+
return true;
|
|
74
|
+
} catch {
|
|
75
|
+
// noop -- this feature is very specific and subject to failure.
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=activateWindow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/android/activateWindow.ts"],"sourcesContent":["import * as osascript from '@expo/osascript';\nimport { execFileSync } from 'child_process';\n\nimport * as Log from '../../../log';\nimport { Device } from './adb';\n\nfunction getUnixPID(port: number | string): string {\n // Runs like `lsof -i:8081 -P -t -sTCP:LISTEN`\n const args = [`-i:${port}`, '-P', '-t', '-sTCP:LISTEN'];\n Log.debug('lsof ' + args.join(' '));\n return execFileSync('lsof', args, {\n encoding: 'utf8',\n stdio: ['pipe', 'pipe', 'ignore'],\n })\n .split('\\n')[0]\n ?.trim?.();\n}\n\n/** Activate the Emulator window on macOS. */\nexport async function activateWindowAsync(device: Pick<Device, 'type' | 'pid'>): Promise<boolean> {\n Log.debug(`Activating window for device (pid: ${device.pid}, type: ${device.type})`);\n if (\n // only mac is supported for now.\n process.platform !== 'darwin' ||\n // can only focus emulators\n device.type !== 'emulator'\n ) {\n return false;\n }\n\n // Google Emulator ID: `emulator-5554` -> `5554`\n const androidPid = device.pid!.match(/-(\\d+)/)?.[1];\n if (!androidPid) {\n return false;\n }\n // Unix PID\n const pid = getUnixPID(androidPid);\n\n if (!pid) {\n return false;\n }\n Log.debug(`Activate window for pid:`, pid);\n try {\n await osascript.execAsync(`\n tell application \"System Events\"\n set frontmost of the first process whose unix id is ${pid} to true\n end tell`);\n return true;\n } catch {\n // noop -- this feature is very specific and subject to failure.\n return false;\n }\n}\n"],"names":["activateWindowAsync","osascript","Log","getUnixPID","port","execFileSync","args","debug","join","encoding","stdio","split","trim","device","pid","type","process","platform","androidPid","match","execAsync"],"mappings":"AAAA;;;;QAmBsBA,mBAAmB,GAAnBA,mBAAmB;AAnB7BC,IAAAA,SAAS,mCAAM,iBAAiB,EAAvB;AACQ,IAAA,aAAe,WAAf,eAAe,CAAA;AAEhCC,IAAAA,GAAG,mCAAM,cAAc,EAApB;;;;;;;;;;;;;;;;;;;;;;AAGf,SAASC,UAAU,CAACC,IAAqB,EAAU;QAI1CC,GAIU;IAPjB,8CAA8C;IAC9C,MAAMC,IAAI,GAAG;QAAC,CAAC,GAAG,EAAEF,IAAI,CAAC,CAAC;QAAE,IAAI;QAAE,IAAI;QAAE,cAAc;KAAC,AAAC;IACxDF,GAAG,CAACK,KAAK,CAAC,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,OAAOH,CAAAA,GAIU,GAJVA,CAAAA,GAAAA,aAAY,AAGjB,CAAA,aAHiB,CAAC,MAAM,EAAEC,IAAI,EAAE;QAChCG,QAAQ,EAAE,MAAM;QAChBC,KAAK,EAAE;YAAC,MAAM;YAAE,MAAM;YAAE,QAAQ;SAAC;KAClC,CAAC,CACCC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SACT,GALDN,KAAAA,CAKC,GALDA,GAIU,CACbO,IAAI,QAAI,GALLP,KAAAA,CAKK,GALLA,GAIU,CACbO,IAAI,EAAI,CAAC;CACd;AAGM,eAAeZ,mBAAmB,CAACa,MAAoC,EAAoB;QAY7EA,GAA2B;IAX9CX,GAAG,CAACK,KAAK,CAAC,CAAC,mCAAmC,EAAEM,MAAM,CAACC,GAAG,CAAC,QAAQ,EAAED,MAAM,CAACE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IACE,iCAAiC;IACjCC,OAAO,CAACC,QAAQ,KAAK,QAAQ,IAC7B,2BAA2B;IAC3BJ,MAAM,CAACE,IAAI,KAAK,UAAU,EAC1B;QACA,OAAO,KAAK,CAAC;KACd;IAED,gDAAgD;IAChD,MAAMG,UAAU,GAAGL,CAAAA,GAA2B,GAA3BA,MAAM,CAACC,GAAG,CAAEK,KAAK,UAAU,SAAK,GAAhCN,KAAAA,CAAgC,GAAhCA,GAA2B,AAAE,CAAC,CAAC,CAAC,AAAC;IACpD,IAAI,CAACK,UAAU,EAAE;QACf,OAAO,KAAK,CAAC;KACd;IACD,WAAW;IACX,MAAMJ,GAAG,GAAGX,UAAU,CAACe,UAAU,CAAC,AAAC;IAEnC,IAAI,CAACJ,GAAG,EAAE;QACR,OAAO,KAAK,CAAC;KACd;IACDZ,GAAG,CAACK,KAAK,CAAC,CAAC,wBAAwB,CAAC,EAAEO,GAAG,CAAC,CAAC;IAC3C,IAAI;QACF,MAAMb,SAAS,CAACmB,SAAS,CAAC,CAAC;;0DAE2B,EAAEN,GAAG,CAAC;YACpD,CAAC,CAAC,CAAC;QACX,OAAO,IAAI,CAAC;KACb,CAAC,OAAM;QACN,gEAAgE;QAChE,OAAO,KAAK,CAAC;KACd;CACF"}
|