@expo/cli 0.11.1 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +2 -2
- package/build/src/api/getExpoGoIntermediateCertificate.js +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +1 -1
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +1 -1
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +1 -1
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +5 -5
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +1 -1
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/actions.js +2 -2
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/otp.js +1 -1
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +2 -2
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +17 -1
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/customize/customizeAsync.js +1 -1
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +29 -2
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/templates.js +8 -0
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +54 -0
- package/build/src/customize/typescript.js.map +1 -0
- package/build/src/export/createBundles.js +1 -31
- package/build/src/export/createBundles.js.map +1 -1
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +52 -4
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +1 -3
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +6 -10
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/exportApp.js +73 -46
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +4 -4
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +1 -1
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +204 -0
- package/build/src/export/exportHermes.js.map +1 -0
- package/build/src/export/exportStaticAsync.js +48 -14
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +7 -7
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +35 -12
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +1 -1
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +118 -0
- package/build/src/export/persistMetroAssets.js.map +1 -0
- package/build/src/export/printBundleSizes.js.map +1 -1
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/writeContents.js +5 -1
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/install/checkPackages.js +1 -1
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/index.js +1 -0
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +2 -1
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/resolveOptions.js +7 -4
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +5 -9
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/index.js +2 -0
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +7 -6
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +4 -2
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +8 -5
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/register/registerAsync.js +0 -1
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +1 -1
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +7 -2
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +2 -2
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +4 -4
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +2 -2
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +3 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +2 -2
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +1 -1
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +2 -2
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +8 -3
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +43 -2
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -3
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +7 -7
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +11 -10
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/index.js +0 -2
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +4 -4
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +3 -3
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +1 -1
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +5 -5
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +1 -1
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +2 -2
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +1 -1
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +1 -1
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +5 -5
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +1 -1
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/resolveOptions.js +0 -5
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +4 -3
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +4 -11
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +3 -2
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +2 -1
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +3 -12
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +57 -36
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +15 -4
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/device.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/index.js +1 -1
- package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +74 -13
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/resolveFromProject.js +13 -4
- package/build/src/start/server/metro/resolveFromProject.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +1 -1
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +43 -5
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +3 -3
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +3 -3
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +8 -5
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +69 -0
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +57 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +13 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +79 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +78 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +121 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -0
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +64 -0
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +19 -0
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -0
- package/build/src/start/server/middleware/mutations.js +19 -0
- package/build/src/start/server/middleware/mutations.js.map +1 -0
- package/build/src/start/server/middleware/remoteDevtoolsCorsMiddleware.js +31 -0
- package/build/src/start/server/middleware/remoteDevtoolsCorsMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/remoteDevtoolsSecurityHeadersMiddleware.js +17 -0
- package/build/src/start/server/middleware/remoteDevtoolsSecurityHeadersMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/server.types.js.map +1 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js +16 -0
- package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -0
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +6 -6
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +3 -3
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +19 -87
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +1 -1
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/startAsync.js +10 -32
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +1 -1
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
- package/build/src/utils/analytics/rudderstackClient.js +2 -2
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +2 -2
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +2 -2
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +1 -1
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +2 -2
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +1 -1
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +1 -1
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +2 -2
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/git.js +1 -1
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +1 -1
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +1 -1
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/npm.js +1 -1
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/plist.js +1 -1
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +46 -18
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +1 -1
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/scheme.js +1 -1
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +85 -5
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/package.json +19 -13
- package/build/src/api/signManifest.js +0 -26
- package/build/src/api/signManifest.js.map +0 -1
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js +0 -155
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +0 -1
- package/build/src/start/server/middleware/createDevServerMiddleware.js +0 -24
- package/build/src/start/server/middleware/createDevServerMiddleware.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/run/ios/appleDevice/installOnDeviceAsync.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Ora } from 'ora';\nimport os from 'os';\nimport path from 'path';\n\nimport { ensureDirectory } from '../../../utils/dir';\nimport { CommandError } from '../../../utils/errors';\nimport { isInteractive } from '../../../utils/interactive';\nimport { ora } from '../../../utils/ora';\nimport { confirmAsync } from '../../../utils/prompts';\
|
|
1
|
+
{"version":3,"sources":["../../../../../src/run/ios/appleDevice/installOnDeviceAsync.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Ora } from 'ora';\nimport os from 'os';\nimport path from 'path';\n\nimport * as AppleDevice from './AppleDevice';\nimport { ensureDirectory } from '../../../utils/dir';\nimport { CommandError } from '../../../utils/errors';\nimport { isInteractive } from '../../../utils/interactive';\nimport { ora } from '../../../utils/ora';\nimport { confirmAsync } from '../../../utils/prompts';\n\n/** Get the app_delta folder for faster subsequent rebuilds on devices. */\nexport function getAppDeltaDirectory(bundleId: string): string {\n // TODO: Maybe use .expo folder instead for debugging\n // TODO: Reuse existing folder from xcode?\n const deltaFolder = path.join(os.tmpdir(), 'ios', 'app-delta', bundleId);\n ensureDirectory(deltaFolder);\n return deltaFolder;\n}\n\n/**\n * Wraps the apple device method for installing and running an app,\n * adds indicator and retry loop for when the device is locked.\n */\nexport async function installOnDeviceAsync(props: {\n bundle: string;\n bundleIdentifier: string;\n appDeltaDirectory: string;\n udid: string;\n deviceName: string;\n}): Promise<void> {\n const { bundle, bundleIdentifier, appDeltaDirectory, udid, deviceName } = props;\n let indicator: Ora | undefined;\n\n try {\n // TODO: Connect for logs\n await AppleDevice.runOnDevice({\n udid,\n appPath: bundle,\n bundleId: bundleIdentifier,\n waitForApp: false,\n deltaPath: appDeltaDirectory,\n onProgress({\n status,\n isComplete,\n progress,\n }: {\n status: string;\n isComplete: boolean;\n progress: number;\n }) {\n if (!indicator) {\n indicator = ora(status).start();\n }\n indicator.text = `${chalk.bold(status)} ${progress}%`;\n if (isComplete) {\n indicator.succeed();\n }\n },\n });\n } catch (error: any) {\n if (indicator) {\n indicator.fail();\n }\n if (error.code === 'APPLE_DEVICE_LOCKED') {\n // Get the app name from the binary path.\n const appName = path.basename(bundle).split('.')[0] ?? 'app';\n if (\n isInteractive() &&\n (await confirmAsync({\n message: `Cannot launch ${appName} because the device is locked. Unlock ${deviceName} to continue...`,\n initial: true,\n }))\n ) {\n return installOnDeviceAsync(props);\n }\n throw new CommandError(\n `Cannot launch ${appName} on ${deviceName} because the device is locked.`\n );\n }\n throw error;\n }\n}\n"],"names":["getAppDeltaDirectory","installOnDeviceAsync","AppleDevice","bundleId","deltaFolder","path","join","os","tmpdir","ensureDirectory","props","bundle","bundleIdentifier","appDeltaDirectory","udid","deviceName","indicator","runOnDevice","appPath","waitForApp","deltaPath","onProgress","status","isComplete","progress","ora","start","text","chalk","bold","succeed","error","fail","code","appName","basename","split","isInteractive","confirmAsync","message","initial","CommandError"],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.AFC_FILE_OPEN_FLAGS = exports.AFC_STATUS = exports.AFC_OPS = exports.AFC_HEADER_SIZE = exports.AFC_MAGIC = void 0;
|
|
6
6
|
var _debug = _interopRequireDefault(require("debug"));
|
|
7
|
-
var _errors = require("../../../../utils/errors");
|
|
8
7
|
var _abstractProtocol = require("./AbstractProtocol");
|
|
8
|
+
var _errors = require("../../../../utils/errors");
|
|
9
9
|
function _interopRequireDefault(obj) {
|
|
10
10
|
return obj && obj.__esModule ? obj : {
|
|
11
11
|
default: obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/AFCProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport { CommandError } from '../../../../utils/errors';\nimport type { ProtocolReaderCallback, ProtocolWriter } from './AbstractProtocol';\nimport { ProtocolClient, ProtocolReader, ProtocolReaderFactory } from './AbstractProtocol';\n\nconst debug = Debug('expo:apple-device:protocol:afc');\n\nexport const AFC_MAGIC = 'CFA6LPAA';\nexport const AFC_HEADER_SIZE = 40;\n\nexport interface AFCHeader {\n magic: typeof AFC_MAGIC;\n totalLength: number;\n headerLength: number;\n requestId: number;\n operation: AFC_OPS;\n}\n\nexport interface AFCMessage {\n operation: AFC_OPS;\n data?: any;\n payload?: any;\n}\n\nexport interface AFCResponse {\n operation: AFC_OPS;\n id: number;\n data: Buffer;\n}\n\nexport interface AFCStatusResponse {\n operation: AFC_OPS.STATUS;\n id: number;\n data: number;\n}\n\n/**\n * AFC Operations\n */\nexport enum AFC_OPS {\n /**\n * Invalid\n */\n INVALID = 0x00000000,\n\n /**\n * Status\n */\n STATUS = 0x00000001,\n\n /**\n * Data\n */\n DATA = 0x00000002,\n\n /**\n * ReadDir\n */\n READ_DIR = 0x00000003,\n\n /**\n * ReadFile\n */\n READ_FILE = 0x00000004,\n\n /**\n * WriteFile\n */\n WRITE_FILE = 0x00000005,\n\n /**\n * WritePart\n */\n WRITE_PART = 0x00000006,\n\n /**\n * TruncateFile\n */\n TRUNCATE = 0x00000007,\n\n /**\n * RemovePath\n */\n REMOVE_PATH = 0x00000008,\n\n /**\n * MakeDir\n */\n MAKE_DIR = 0x00000009,\n\n /**\n * GetFileInfo\n */\n GET_FILE_INFO = 0x0000000a,\n\n /**\n * GetDeviceInfo\n */\n GET_DEVINFO = 0x0000000b,\n\n /**\n * WriteFileAtomic (tmp file+rename)\n */\n WRITE_FILE_ATOM = 0x0000000c,\n\n /**\n * FileRefOpen\n */\n FILE_OPEN = 0x0000000d,\n\n /**\n * FileRefOpenResult\n */\n FILE_OPEN_RES = 0x0000000e,\n\n /**\n * FileRefRead\n */\n FILE_READ = 0x0000000f,\n\n /**\n * FileRefWrite\n */\n FILE_WRITE = 0x00000010,\n\n /**\n * FileRefSeek\n */\n FILE_SEEK = 0x00000011,\n\n /**\n * FileRefTell\n */\n FILE_TELL = 0x00000012,\n\n /**\n * FileRefTellResult\n */\n FILE_TELL_RES = 0x00000013,\n\n /**\n * FileRefClose\n */\n FILE_CLOSE = 0x00000014,\n\n /**\n * FileRefSetFileSize (ftruncate)\n */\n FILE_SET_SIZE = 0x00000015,\n\n /**\n * GetConnectionInfo\n */\n GET_CON_INFO = 0x00000016,\n\n /**\n * SetConnectionOptions\n */\n SET_CON_OPTIONS = 0x00000017,\n\n /**\n * RenamePath\n */\n RENAME_PATH = 0x00000018,\n\n /**\n * SetFSBlockSize (0x800000)\n */\n SET_FS_BS = 0x00000019,\n\n /**\n * SetSocketBlockSize (0x800000)\n */\n SET_SOCKET_BS = 0x0000001a,\n\n /**\n * FileRefLock\n */\n FILE_LOCK = 0x0000001b,\n\n /**\n * MakeLink\n */\n MAKE_LINK = 0x0000001c,\n\n /**\n * GetFileHash\n */\n GET_FILE_HASH = 0x0000001d,\n\n /**\n * SetModTime\n */\n SET_FILE_MOD_TIME = 0x0000001e,\n\n /**\n * GetFileHashWithRange\n */\n GET_FILE_HASH_RANGE = 0x0000001f,\n\n // iOS 6+\n\n /**\n * FileRefSetImmutableHint\n */\n FILE_SET_IMMUTABLE_HINT = 0x00000020,\n\n /**\n * GetSizeOfPathContents\n */\n GET_SIZE_OF_PATH_CONTENTS = 0x00000021,\n\n /**\n * RemovePathAndContents\n */\n REMOVE_PATH_AND_CONTENTS = 0x00000022,\n\n /**\n * DirectoryEnumeratorRefOpen\n */\n DIR_OPEN = 0x00000023,\n\n /**\n * DirectoryEnumeratorRefOpenResult\n */\n DIR_OPEN_RESULT = 0x00000024,\n\n /**\n * DirectoryEnumeratorRefRead\n */\n DIR_READ = 0x00000025,\n\n /**\n * DirectoryEnumeratorRefClose\n */\n DIR_CLOSE = 0x00000026,\n\n // iOS 7+\n\n /**\n * FileRefReadWithOffset\n */\n FILE_READ_OFFSET = 0x00000027,\n\n /**\n * FileRefWriteWithOffset\n */\n FILE_WRITE_OFFSET = 0x00000028,\n}\n\n/**\n * Error Codes\n */\nexport enum AFC_STATUS {\n SUCCESS = 0,\n UNKNOWN_ERROR = 1,\n OP_HEADER_INVALID = 2,\n NO_RESOURCES = 3,\n READ_ERROR = 4,\n WRITE_ERROR = 5,\n UNKNOWN_PACKET_TYPE = 6,\n INVALID_ARG = 7,\n OBJECT_NOT_FOUND = 8,\n OBJECT_IS_DIR = 9,\n PERM_DENIED = 10,\n SERVICE_NOT_CONNECTED = 11,\n OP_TIMEOUT = 12,\n TOO_MUCH_DATA = 13,\n END_OF_DATA = 14,\n OP_NOT_SUPPORTED = 15,\n OBJECT_EXISTS = 16,\n OBJECT_BUSY = 17,\n NO_SPACE_LEFT = 18,\n OP_WOULD_BLOCK = 19,\n IO_ERROR = 20,\n OP_INTERRUPTED = 21,\n OP_IN_PROGRESS = 22,\n INTERNAL_ERROR = 23,\n MUX_ERROR = 30,\n NO_MEM = 31,\n NOT_ENOUGH_DATA = 32,\n DIR_NOT_EMPTY = 33,\n FORCE_SIGNED_TYPE = -1,\n}\n\nexport enum AFC_FILE_OPEN_FLAGS {\n /**\n * r (O_RDONLY)\n */\n RDONLY = 0x00000001,\n\n /**\n * r+ (O_RDWR | O_CREAT)\n */\n RW = 0x00000002,\n\n /**\n * w (O_WRONLY | O_CREAT | O_TRUNC)\n */\n WRONLY = 0x00000003,\n\n /**\n * w+ (O_RDWR | O_CREAT | O_TRUNC)\n */\n WR = 0x00000004,\n\n /**\n * a (O_WRONLY | O_APPEND | O_CREAT)\n */\n APPEND = 0x00000005,\n\n /**\n * a+ (O_RDWR | O_APPEND | O_CREAT)\n */\n RDAPPEND = 0x00000006,\n}\n\nfunction isAFCResponse(resp: any): resp is AFCResponse {\n return AFC_OPS[resp.operation] !== undefined && resp.id !== undefined && resp.data !== undefined;\n}\n\nfunction isStatusResponse(resp: any): resp is AFCStatusResponse {\n return isAFCResponse(resp) && resp.operation === AFC_OPS.STATUS;\n}\n\nfunction isErrorStatusResponse(resp: AFCResponse): boolean {\n return isStatusResponse(resp) && resp.data !== AFC_STATUS.SUCCESS;\n}\n\nclass AFCInternalError extends Error {\n constructor(msg: string, public requestId: number) {\n super(msg);\n }\n}\n\nexport class AFCError extends Error {\n constructor(msg: string, public status: AFC_STATUS) {\n super(msg);\n }\n}\n\nexport class AFCProtocolClient extends ProtocolClient {\n private requestId = 0;\n private requestCallbacks: { [key: number]: ProtocolReaderCallback } = {};\n\n constructor(socket: Socket) {\n super(socket, new ProtocolReaderFactory(AFCProtocolReader), new AFCProtocolWriter());\n\n const reader = this.readerFactory.create((resp, err) => {\n if (err && err instanceof AFCInternalError) {\n this.requestCallbacks[err.requestId](resp, err);\n } else if (isErrorStatusResponse(resp)) {\n this.requestCallbacks[resp.id](resp, new AFCError(AFC_STATUS[resp.data], resp.data));\n } else {\n this.requestCallbacks[resp.id](resp);\n }\n });\n socket.on('data', reader.onData);\n }\n\n sendMessage(msg: AFCMessage): Promise<AFCResponse> {\n return new Promise<AFCResponse>((resolve, reject) => {\n const requestId = this.requestId++;\n this.requestCallbacks[requestId] = async (resp: any, err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n if (isAFCResponse(resp)) {\n resolve(resp);\n } else {\n reject(new CommandError('APPLE_DEVICE_AFC', 'Malformed AFC response'));\n }\n };\n this.writer.write(this.socket, { ...msg, requestId });\n });\n }\n}\n\nexport class AFCProtocolReader extends ProtocolReader {\n private header!: AFCHeader; // TODO: ! -> ?\n\n constructor(callback: ProtocolReaderCallback) {\n super(AFC_HEADER_SIZE, callback);\n }\n\n parseHeader(data: Buffer) {\n const magic = data.slice(0, 8).toString('ascii');\n if (magic !== AFC_MAGIC) {\n throw new AFCInternalError(\n `Invalid AFC packet received (magic != ${AFC_MAGIC})`,\n data.readUInt32LE(24)\n );\n }\n // technically these are uint64\n this.header = {\n magic,\n totalLength: data.readUInt32LE(8),\n headerLength: data.readUInt32LE(16),\n requestId: data.readUInt32LE(24),\n operation: data.readUInt32LE(32),\n };\n\n debug(`parse header: ${JSON.stringify(this.header)}`);\n if (this.header.headerLength < AFC_HEADER_SIZE) {\n throw new AFCInternalError('Invalid AFC header', this.header.requestId);\n }\n return this.header.totalLength - AFC_HEADER_SIZE;\n }\n\n parseBody(data: Buffer): AFCResponse | AFCStatusResponse {\n const body: any = {\n operation: this.header.operation,\n id: this.header.requestId,\n data,\n };\n if (isStatusResponse(body)) {\n const status = data.readUInt32LE(0);\n debug(`${AFC_OPS[this.header.operation]} response: ${AFC_STATUS[status]}`);\n body.data = status;\n } else if (data.length <= 8) {\n debug(`${AFC_OPS[this.header.operation]} response: ${Array.prototype.toString.call(body)}`);\n } else {\n debug(`${AFC_OPS[this.header.operation]} response length: ${data.length} bytes`);\n }\n return body;\n }\n}\n\nexport class AFCProtocolWriter implements ProtocolWriter {\n write(socket: Socket, msg: AFCMessage & { requestId: number }) {\n const { data, payload, operation, requestId } = msg;\n\n const dataLength = data ? data.length : 0;\n const payloadLength = payload ? payload.length : 0;\n\n const header = Buffer.alloc(AFC_HEADER_SIZE);\n const magic = Buffer.from(AFC_MAGIC);\n magic.copy(header);\n header.writeUInt32LE(AFC_HEADER_SIZE + dataLength + payloadLength, 8);\n header.writeUInt32LE(AFC_HEADER_SIZE + dataLength, 16);\n header.writeUInt32LE(requestId, 24);\n header.writeUInt32LE(operation, 32);\n socket.write(header);\n socket.write(data);\n if (data.length <= 8) {\n debug(\n `socket write, header: { requestId: ${requestId}, operation: ${\n AFC_OPS[operation]\n }}, body: ${Array.prototype.toString.call(data)}`\n );\n } else {\n debug(\n `socket write, header: { requestId: ${requestId}, operation: ${AFC_OPS[operation]}}, body: ${data.length} bytes`\n );\n }\n\n debug(`socket write, bytes written ${header.length} (header), ${data.length} (body)`);\n if (payload) {\n socket.write(payload);\n }\n }\n}\n"],"names":["debug","Debug","AFC_MAGIC","AFC_HEADER_SIZE","AFC_OPS","INVALID","STATUS","DATA","READ_DIR","READ_FILE","WRITE_FILE","WRITE_PART","TRUNCATE","REMOVE_PATH","MAKE_DIR","GET_FILE_INFO","GET_DEVINFO","WRITE_FILE_ATOM","FILE_OPEN","FILE_OPEN_RES","FILE_READ","FILE_WRITE","FILE_SEEK","FILE_TELL","FILE_TELL_RES","FILE_CLOSE","FILE_SET_SIZE","GET_CON_INFO","SET_CON_OPTIONS","RENAME_PATH","SET_FS_BS","SET_SOCKET_BS","FILE_LOCK","MAKE_LINK","GET_FILE_HASH","SET_FILE_MOD_TIME","GET_FILE_HASH_RANGE","FILE_SET_IMMUTABLE_HINT","GET_SIZE_OF_PATH_CONTENTS","REMOVE_PATH_AND_CONTENTS","DIR_OPEN","DIR_OPEN_RESULT","DIR_READ","DIR_CLOSE","FILE_READ_OFFSET","FILE_WRITE_OFFSET","AFC_STATUS","SUCCESS","UNKNOWN_ERROR","OP_HEADER_INVALID","NO_RESOURCES","READ_ERROR","WRITE_ERROR","UNKNOWN_PACKET_TYPE","INVALID_ARG","OBJECT_NOT_FOUND","OBJECT_IS_DIR","PERM_DENIED","SERVICE_NOT_CONNECTED","OP_TIMEOUT","TOO_MUCH_DATA","END_OF_DATA","OP_NOT_SUPPORTED","OBJECT_EXISTS","OBJECT_BUSY","NO_SPACE_LEFT","OP_WOULD_BLOCK","IO_ERROR","OP_INTERRUPTED","OP_IN_PROGRESS","INTERNAL_ERROR","MUX_ERROR","NO_MEM","NOT_ENOUGH_DATA","DIR_NOT_EMPTY","FORCE_SIGNED_TYPE","AFC_FILE_OPEN_FLAGS","RDONLY","RW","WRONLY","WR","APPEND","RDAPPEND","isAFCResponse","resp","operation","undefined","id","data","isStatusResponse","isErrorStatusResponse","AFCInternalError","Error","constructor","msg","requestId","AFCError","status","AFCProtocolClient","ProtocolClient","requestCallbacks","socket","ProtocolReaderFactory","AFCProtocolReader","AFCProtocolWriter","reader","readerFactory","create","err","on","onData","sendMessage","Promise","resolve","reject","CommandError","writer","write","ProtocolReader","callback","parseHeader","magic","slice","toString","readUInt32LE","header","totalLength","headerLength","JSON","stringify","parseBody","body","length","Array","prototype","call","payload","dataLength","payloadLength","Buffer","alloc","from","copy","writeUInt32LE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/AFCProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport type { ProtocolReaderCallback, ProtocolWriter } from './AbstractProtocol';\nimport { ProtocolClient, ProtocolReader, ProtocolReaderFactory } from './AbstractProtocol';\nimport { CommandError } from '../../../../utils/errors';\n\nconst debug = Debug('expo:apple-device:protocol:afc');\n\nexport const AFC_MAGIC = 'CFA6LPAA';\nexport const AFC_HEADER_SIZE = 40;\n\nexport interface AFCHeader {\n magic: typeof AFC_MAGIC;\n totalLength: number;\n headerLength: number;\n requestId: number;\n operation: AFC_OPS;\n}\n\nexport interface AFCMessage {\n operation: AFC_OPS;\n data?: any;\n payload?: any;\n}\n\nexport interface AFCResponse {\n operation: AFC_OPS;\n id: number;\n data: Buffer;\n}\n\nexport interface AFCStatusResponse {\n operation: AFC_OPS.STATUS;\n id: number;\n data: number;\n}\n\n/**\n * AFC Operations\n */\nexport enum AFC_OPS {\n /**\n * Invalid\n */\n INVALID = 0x00000000,\n\n /**\n * Status\n */\n STATUS = 0x00000001,\n\n /**\n * Data\n */\n DATA = 0x00000002,\n\n /**\n * ReadDir\n */\n READ_DIR = 0x00000003,\n\n /**\n * ReadFile\n */\n READ_FILE = 0x00000004,\n\n /**\n * WriteFile\n */\n WRITE_FILE = 0x00000005,\n\n /**\n * WritePart\n */\n WRITE_PART = 0x00000006,\n\n /**\n * TruncateFile\n */\n TRUNCATE = 0x00000007,\n\n /**\n * RemovePath\n */\n REMOVE_PATH = 0x00000008,\n\n /**\n * MakeDir\n */\n MAKE_DIR = 0x00000009,\n\n /**\n * GetFileInfo\n */\n GET_FILE_INFO = 0x0000000a,\n\n /**\n * GetDeviceInfo\n */\n GET_DEVINFO = 0x0000000b,\n\n /**\n * WriteFileAtomic (tmp file+rename)\n */\n WRITE_FILE_ATOM = 0x0000000c,\n\n /**\n * FileRefOpen\n */\n FILE_OPEN = 0x0000000d,\n\n /**\n * FileRefOpenResult\n */\n FILE_OPEN_RES = 0x0000000e,\n\n /**\n * FileRefRead\n */\n FILE_READ = 0x0000000f,\n\n /**\n * FileRefWrite\n */\n FILE_WRITE = 0x00000010,\n\n /**\n * FileRefSeek\n */\n FILE_SEEK = 0x00000011,\n\n /**\n * FileRefTell\n */\n FILE_TELL = 0x00000012,\n\n /**\n * FileRefTellResult\n */\n FILE_TELL_RES = 0x00000013,\n\n /**\n * FileRefClose\n */\n FILE_CLOSE = 0x00000014,\n\n /**\n * FileRefSetFileSize (ftruncate)\n */\n FILE_SET_SIZE = 0x00000015,\n\n /**\n * GetConnectionInfo\n */\n GET_CON_INFO = 0x00000016,\n\n /**\n * SetConnectionOptions\n */\n SET_CON_OPTIONS = 0x00000017,\n\n /**\n * RenamePath\n */\n RENAME_PATH = 0x00000018,\n\n /**\n * SetFSBlockSize (0x800000)\n */\n SET_FS_BS = 0x00000019,\n\n /**\n * SetSocketBlockSize (0x800000)\n */\n SET_SOCKET_BS = 0x0000001a,\n\n /**\n * FileRefLock\n */\n FILE_LOCK = 0x0000001b,\n\n /**\n * MakeLink\n */\n MAKE_LINK = 0x0000001c,\n\n /**\n * GetFileHash\n */\n GET_FILE_HASH = 0x0000001d,\n\n /**\n * SetModTime\n */\n SET_FILE_MOD_TIME = 0x0000001e,\n\n /**\n * GetFileHashWithRange\n */\n GET_FILE_HASH_RANGE = 0x0000001f,\n\n // iOS 6+\n\n /**\n * FileRefSetImmutableHint\n */\n FILE_SET_IMMUTABLE_HINT = 0x00000020,\n\n /**\n * GetSizeOfPathContents\n */\n GET_SIZE_OF_PATH_CONTENTS = 0x00000021,\n\n /**\n * RemovePathAndContents\n */\n REMOVE_PATH_AND_CONTENTS = 0x00000022,\n\n /**\n * DirectoryEnumeratorRefOpen\n */\n DIR_OPEN = 0x00000023,\n\n /**\n * DirectoryEnumeratorRefOpenResult\n */\n DIR_OPEN_RESULT = 0x00000024,\n\n /**\n * DirectoryEnumeratorRefRead\n */\n DIR_READ = 0x00000025,\n\n /**\n * DirectoryEnumeratorRefClose\n */\n DIR_CLOSE = 0x00000026,\n\n // iOS 7+\n\n /**\n * FileRefReadWithOffset\n */\n FILE_READ_OFFSET = 0x00000027,\n\n /**\n * FileRefWriteWithOffset\n */\n FILE_WRITE_OFFSET = 0x00000028,\n}\n\n/**\n * Error Codes\n */\nexport enum AFC_STATUS {\n SUCCESS = 0,\n UNKNOWN_ERROR = 1,\n OP_HEADER_INVALID = 2,\n NO_RESOURCES = 3,\n READ_ERROR = 4,\n WRITE_ERROR = 5,\n UNKNOWN_PACKET_TYPE = 6,\n INVALID_ARG = 7,\n OBJECT_NOT_FOUND = 8,\n OBJECT_IS_DIR = 9,\n PERM_DENIED = 10,\n SERVICE_NOT_CONNECTED = 11,\n OP_TIMEOUT = 12,\n TOO_MUCH_DATA = 13,\n END_OF_DATA = 14,\n OP_NOT_SUPPORTED = 15,\n OBJECT_EXISTS = 16,\n OBJECT_BUSY = 17,\n NO_SPACE_LEFT = 18,\n OP_WOULD_BLOCK = 19,\n IO_ERROR = 20,\n OP_INTERRUPTED = 21,\n OP_IN_PROGRESS = 22,\n INTERNAL_ERROR = 23,\n MUX_ERROR = 30,\n NO_MEM = 31,\n NOT_ENOUGH_DATA = 32,\n DIR_NOT_EMPTY = 33,\n FORCE_SIGNED_TYPE = -1,\n}\n\nexport enum AFC_FILE_OPEN_FLAGS {\n /**\n * r (O_RDONLY)\n */\n RDONLY = 0x00000001,\n\n /**\n * r+ (O_RDWR | O_CREAT)\n */\n RW = 0x00000002,\n\n /**\n * w (O_WRONLY | O_CREAT | O_TRUNC)\n */\n WRONLY = 0x00000003,\n\n /**\n * w+ (O_RDWR | O_CREAT | O_TRUNC)\n */\n WR = 0x00000004,\n\n /**\n * a (O_WRONLY | O_APPEND | O_CREAT)\n */\n APPEND = 0x00000005,\n\n /**\n * a+ (O_RDWR | O_APPEND | O_CREAT)\n */\n RDAPPEND = 0x00000006,\n}\n\nfunction isAFCResponse(resp: any): resp is AFCResponse {\n return AFC_OPS[resp.operation] !== undefined && resp.id !== undefined && resp.data !== undefined;\n}\n\nfunction isStatusResponse(resp: any): resp is AFCStatusResponse {\n return isAFCResponse(resp) && resp.operation === AFC_OPS.STATUS;\n}\n\nfunction isErrorStatusResponse(resp: AFCResponse): boolean {\n return isStatusResponse(resp) && resp.data !== AFC_STATUS.SUCCESS;\n}\n\nclass AFCInternalError extends Error {\n constructor(\n msg: string,\n public requestId: number\n ) {\n super(msg);\n }\n}\n\nexport class AFCError extends Error {\n constructor(\n msg: string,\n public status: AFC_STATUS\n ) {\n super(msg);\n }\n}\n\nexport class AFCProtocolClient extends ProtocolClient {\n private requestId = 0;\n private requestCallbacks: { [key: number]: ProtocolReaderCallback } = {};\n\n constructor(socket: Socket) {\n super(socket, new ProtocolReaderFactory(AFCProtocolReader), new AFCProtocolWriter());\n\n const reader = this.readerFactory.create((resp, err) => {\n if (err && err instanceof AFCInternalError) {\n this.requestCallbacks[err.requestId](resp, err);\n } else if (isErrorStatusResponse(resp)) {\n this.requestCallbacks[resp.id](resp, new AFCError(AFC_STATUS[resp.data], resp.data));\n } else {\n this.requestCallbacks[resp.id](resp);\n }\n });\n socket.on('data', reader.onData);\n }\n\n sendMessage(msg: AFCMessage): Promise<AFCResponse> {\n return new Promise<AFCResponse>((resolve, reject) => {\n const requestId = this.requestId++;\n this.requestCallbacks[requestId] = async (resp: any, err?: Error) => {\n if (err) {\n reject(err);\n return;\n }\n if (isAFCResponse(resp)) {\n resolve(resp);\n } else {\n reject(new CommandError('APPLE_DEVICE_AFC', 'Malformed AFC response'));\n }\n };\n this.writer.write(this.socket, { ...msg, requestId });\n });\n }\n}\n\nexport class AFCProtocolReader extends ProtocolReader {\n private header!: AFCHeader; // TODO: ! -> ?\n\n constructor(callback: ProtocolReaderCallback) {\n super(AFC_HEADER_SIZE, callback);\n }\n\n parseHeader(data: Buffer) {\n const magic = data.slice(0, 8).toString('ascii');\n if (magic !== AFC_MAGIC) {\n throw new AFCInternalError(\n `Invalid AFC packet received (magic != ${AFC_MAGIC})`,\n data.readUInt32LE(24)\n );\n }\n // technically these are uint64\n this.header = {\n magic,\n totalLength: data.readUInt32LE(8),\n headerLength: data.readUInt32LE(16),\n requestId: data.readUInt32LE(24),\n operation: data.readUInt32LE(32),\n };\n\n debug(`parse header: ${JSON.stringify(this.header)}`);\n if (this.header.headerLength < AFC_HEADER_SIZE) {\n throw new AFCInternalError('Invalid AFC header', this.header.requestId);\n }\n return this.header.totalLength - AFC_HEADER_SIZE;\n }\n\n parseBody(data: Buffer): AFCResponse | AFCStatusResponse {\n const body: any = {\n operation: this.header.operation,\n id: this.header.requestId,\n data,\n };\n if (isStatusResponse(body)) {\n const status = data.readUInt32LE(0);\n debug(`${AFC_OPS[this.header.operation]} response: ${AFC_STATUS[status]}`);\n body.data = status;\n } else if (data.length <= 8) {\n debug(`${AFC_OPS[this.header.operation]} response: ${Array.prototype.toString.call(body)}`);\n } else {\n debug(`${AFC_OPS[this.header.operation]} response length: ${data.length} bytes`);\n }\n return body;\n }\n}\n\nexport class AFCProtocolWriter implements ProtocolWriter {\n write(socket: Socket, msg: AFCMessage & { requestId: number }) {\n const { data, payload, operation, requestId } = msg;\n\n const dataLength = data ? data.length : 0;\n const payloadLength = payload ? payload.length : 0;\n\n const header = Buffer.alloc(AFC_HEADER_SIZE);\n const magic = Buffer.from(AFC_MAGIC);\n magic.copy(header);\n header.writeUInt32LE(AFC_HEADER_SIZE + dataLength + payloadLength, 8);\n header.writeUInt32LE(AFC_HEADER_SIZE + dataLength, 16);\n header.writeUInt32LE(requestId, 24);\n header.writeUInt32LE(operation, 32);\n socket.write(header);\n socket.write(data);\n if (data.length <= 8) {\n debug(\n `socket write, header: { requestId: ${requestId}, operation: ${\n AFC_OPS[operation]\n }}, body: ${Array.prototype.toString.call(data)}`\n );\n } else {\n debug(\n `socket write, header: { requestId: ${requestId}, operation: ${AFC_OPS[operation]}}, body: ${data.length} bytes`\n );\n }\n\n debug(`socket write, bytes written ${header.length} (header), ${data.length} (body)`);\n if (payload) {\n socket.write(payload);\n }\n }\n}\n"],"names":["debug","Debug","AFC_MAGIC","AFC_HEADER_SIZE","AFC_OPS","INVALID","STATUS","DATA","READ_DIR","READ_FILE","WRITE_FILE","WRITE_PART","TRUNCATE","REMOVE_PATH","MAKE_DIR","GET_FILE_INFO","GET_DEVINFO","WRITE_FILE_ATOM","FILE_OPEN","FILE_OPEN_RES","FILE_READ","FILE_WRITE","FILE_SEEK","FILE_TELL","FILE_TELL_RES","FILE_CLOSE","FILE_SET_SIZE","GET_CON_INFO","SET_CON_OPTIONS","RENAME_PATH","SET_FS_BS","SET_SOCKET_BS","FILE_LOCK","MAKE_LINK","GET_FILE_HASH","SET_FILE_MOD_TIME","GET_FILE_HASH_RANGE","FILE_SET_IMMUTABLE_HINT","GET_SIZE_OF_PATH_CONTENTS","REMOVE_PATH_AND_CONTENTS","DIR_OPEN","DIR_OPEN_RESULT","DIR_READ","DIR_CLOSE","FILE_READ_OFFSET","FILE_WRITE_OFFSET","AFC_STATUS","SUCCESS","UNKNOWN_ERROR","OP_HEADER_INVALID","NO_RESOURCES","READ_ERROR","WRITE_ERROR","UNKNOWN_PACKET_TYPE","INVALID_ARG","OBJECT_NOT_FOUND","OBJECT_IS_DIR","PERM_DENIED","SERVICE_NOT_CONNECTED","OP_TIMEOUT","TOO_MUCH_DATA","END_OF_DATA","OP_NOT_SUPPORTED","OBJECT_EXISTS","OBJECT_BUSY","NO_SPACE_LEFT","OP_WOULD_BLOCK","IO_ERROR","OP_INTERRUPTED","OP_IN_PROGRESS","INTERNAL_ERROR","MUX_ERROR","NO_MEM","NOT_ENOUGH_DATA","DIR_NOT_EMPTY","FORCE_SIGNED_TYPE","AFC_FILE_OPEN_FLAGS","RDONLY","RW","WRONLY","WR","APPEND","RDAPPEND","isAFCResponse","resp","operation","undefined","id","data","isStatusResponse","isErrorStatusResponse","AFCInternalError","Error","constructor","msg","requestId","AFCError","status","AFCProtocolClient","ProtocolClient","requestCallbacks","socket","ProtocolReaderFactory","AFCProtocolReader","AFCProtocolWriter","reader","readerFactory","create","err","on","onData","sendMessage","Promise","resolve","reject","CommandError","writer","write","ProtocolReader","callback","parseHeader","magic","slice","toString","readUInt32LE","header","totalLength","headerLength","JSON","stringify","parseBody","body","length","Array","prototype","call","payload","dataLength","payloadLength","Buffer","alloc","from","copy","writeUInt32LE"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/AbstractProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport plist from '@expo/plist';\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport { CommandError } from '../../../../utils/errors';\nimport { parsePlistBuffer } from '../../../../utils/plist';\n\nconst BPLIST_MAGIC = Buffer.from('bplist00');\nconst debug = Debug('expo:apple-device:protocol');\n\nexport class ProtocolClientError extends CommandError {\n constructor(msg: string
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/AbstractProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport plist from '@expo/plist';\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport { CommandError } from '../../../../utils/errors';\nimport { parsePlistBuffer } from '../../../../utils/plist';\n\nconst BPLIST_MAGIC = Buffer.from('bplist00');\nconst debug = Debug('expo:apple-device:protocol');\n\nexport class ProtocolClientError extends CommandError {\n constructor(\n msg: string,\n public error: Error,\n public protocolMessage?: any\n ) {\n super(msg);\n }\n}\n\nexport type ProtocolReaderCallback = (resp: any, err?: Error) => void;\n\nexport class ProtocolReaderFactory<T> {\n constructor(private ProtocolReader: new (callback: ProtocolReaderCallback) => T) {}\n\n create(callback: (resp: any, err?: Error) => void): T {\n return new this.ProtocolReader(callback);\n }\n}\n\nexport abstract class ProtocolReader {\n protected body!: Buffer; // TODO: ! -> ?\n protected bodyLength!: number; // TODO: ! -> ?\n protected buffer = Buffer.alloc(0);\n constructor(\n protected headerSize: number,\n protected callback: ProtocolReaderCallback\n ) {\n this.onData = this.onData.bind(this);\n }\n\n /** Returns length of body, or -1 if header doesn't contain length */\n protected abstract parseHeader(data: Buffer): number;\n protected abstract parseBody(data: Buffer): any;\n\n onData(data?: Buffer) {\n try {\n // if there's data, add it on to existing buffer\n this.buffer = data ? Buffer.concat([this.buffer, data]) : this.buffer;\n // we haven't gotten the body length from the header yet\n if (!this.bodyLength) {\n if (this.buffer.length < this.headerSize) {\n // partial header, wait for rest\n return;\n }\n this.bodyLength = this.parseHeader(this.buffer);\n // move on to body\n this.buffer = this.buffer.slice(this.headerSize);\n if (!this.buffer.length) {\n // only got header, wait for body\n return;\n }\n }\n if (this.buffer.length < this.bodyLength) {\n // wait for rest of body\n return;\n }\n\n if (this.bodyLength === -1) {\n this.callback(this.parseBody(this.buffer));\n this.buffer = Buffer.alloc(0);\n } else {\n this.body = this.buffer.slice(0, this.bodyLength);\n this.bodyLength -= this.body.length;\n if (!this.bodyLength) {\n this.callback(this.parseBody(this.body));\n }\n this.buffer = this.buffer.slice(this.body.length);\n // There are multiple messages here, call parse again\n if (this.buffer.length) {\n this.onData();\n }\n }\n } catch (err: any) {\n this.callback(null, err);\n }\n }\n}\n\nexport abstract class PlistProtocolReader extends ProtocolReader {\n protected parseBody(body: Buffer) {\n if (BPLIST_MAGIC.compare(body, 0, 8) === 0) {\n return parsePlistBuffer(body);\n } else {\n return plist.parse(body.toString('utf8'));\n }\n }\n}\n\nexport interface ProtocolWriter {\n write(sock: Socket, msg: any): void;\n}\n\nexport abstract class ProtocolClient<MessageType = any> {\n constructor(\n public socket: Socket,\n protected readerFactory: ProtocolReaderFactory<ProtocolReader>,\n protected writer: ProtocolWriter\n ) {}\n\n sendMessage<ResponseType = any>(msg: MessageType): Promise<ResponseType>;\n sendMessage<CallbackType = void, ResponseType = any>(\n msg: MessageType,\n callback: (response: ResponseType, resolve: any, reject: any) => void\n ): Promise<CallbackType>;\n sendMessage<CallbackType = void, ResponseType = any>(\n msg: MessageType,\n callback?: (response: ResponseType, resolve: any, reject: any) => void\n ): Promise<CallbackType | ResponseType> {\n const onError = (error: Error) => {\n debug('Unexpected protocol socket error encountered: %s', error);\n throw new ProtocolClientError(\n `Unexpected protocol error encountered: ${error.message}`,\n error,\n msg\n );\n };\n\n return new Promise<ResponseType | CallbackType>((resolve, reject) => {\n const reader = this.readerFactory.create(async (response: ResponseType, error?: Error) => {\n if (error) {\n reject(error);\n return;\n }\n if (callback) {\n callback(\n response,\n (value: any) => {\n this.socket.removeListener('data', reader.onData);\n this.socket.removeListener('error', onError);\n resolve(value);\n },\n reject\n );\n } else {\n this.socket.removeListener('data', reader.onData);\n this.socket.removeListener('error', onError);\n resolve(response);\n }\n });\n this.socket.on('data', reader.onData);\n this.socket.on('error', onError);\n this.writer.write(this.socket, msg);\n });\n }\n}\n"],"names":["BPLIST_MAGIC","Buffer","from","debug","Debug","ProtocolClientError","CommandError","constructor","msg","error","protocolMessage","ProtocolReaderFactory","ProtocolReader","create","callback","headerSize","buffer","alloc","onData","bind","data","concat","bodyLength","length","parseHeader","slice","parseBody","body","err","PlistProtocolReader","compare","parsePlistBuffer","plist","parse","toString","ProtocolClient","socket","readerFactory","writer","sendMessage","onError","message","Promise","resolve","reject","reader","response","value","removeListener","on","write"],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.validateChecksum = validateChecksum;
|
|
6
6
|
var _debug = _interopRequireDefault(require("debug"));
|
|
7
|
-
var _errors = require("../../../../utils/errors");
|
|
8
7
|
var _abstractProtocol = require("./AbstractProtocol");
|
|
8
|
+
var _errors = require("../../../../utils/errors");
|
|
9
9
|
function _interopRequireDefault(obj) {
|
|
10
10
|
return obj && obj.__esModule ? obj : {
|
|
11
11
|
default: obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/GDBProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/GDBProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport {\n ProtocolClient,\n ProtocolReader,\n ProtocolReaderCallback,\n ProtocolReaderFactory,\n ProtocolWriter,\n} from './AbstractProtocol';\nimport { CommandError } from '../../../../utils/errors';\n\nconst debug = Debug('expo:apple-device:protocol:gdb');\nconst ACK_SUCCESS = '+'.charCodeAt(0);\n\nexport interface GDBMessage {\n cmd: string;\n args: string[];\n}\n\nexport class GDBProtocolClient extends ProtocolClient<GDBMessage> {\n constructor(socket: Socket) {\n super(socket, new ProtocolReaderFactory(GDBProtocolReader), new GDBProtocolWriter());\n }\n}\n\nexport class GDBProtocolReader extends ProtocolReader {\n constructor(callback: ProtocolReaderCallback) {\n super(1 /* \"Header\" is '+' or '-' */, callback);\n }\n\n onData(data?: Buffer) {\n // the GDB protocol does not support body length in its header so we cannot rely on\n // the parent implementation to determine when a payload is complete\n try {\n // if there's data, add it to the existing buffer\n this.buffer = data ? Buffer.concat([this.buffer, data]) : this.buffer;\n\n // do we have enough bytes to proceed\n if (this.buffer.length < this.headerSize) {\n return; // incomplete header, wait for more\n }\n\n // first, check the header\n if (this.parseHeader(this.buffer) === -1) {\n // we have a valid header so check the body. GDB packets will always be a leading '$', data bytes,\n // a trailing '#', and a two digit checksum. minimum valid body is the empty response '$#00'\n // https://developer.apple.com/library/archive/documentation/DeveloperTools/gdb/gdb/gdb_33.html\n const packetData = this.buffer.toString().match('\\\\$.*#[0-9a-f]{2}');\n if (packetData == null) {\n return; // incomplete body, wait for more\n }\n // extract the body and update the buffer\n const body = Buffer.from(packetData[0]);\n this.buffer = this.buffer.slice(this.headerSize + body.length);\n // parse the payload and recurse if there is more data to process\n this.callback(this.parseBody(body));\n if (this.buffer.length) {\n this.onData();\n }\n }\n } catch (err: any) {\n this.callback(null, err);\n }\n }\n\n parseHeader(data: Buffer) {\n if (data[0] !== ACK_SUCCESS) {\n throw new CommandError('APPLE_DEVICE_GDB', 'Unsuccessful debugserver response');\n } // TODO: retry?\n return -1;\n }\n\n parseBody(buffer: Buffer) {\n debug(`Response body: ${buffer.toString()}`);\n // check for checksum\n const checksum = buffer.slice(-3).toString();\n if (checksum.match(/#[0-9a-f]{2}/)) {\n // remove '$' prefix and checksum\n const msg = buffer.slice(1, -3).toString();\n if (validateChecksum(checksum, msg)) {\n return msg;\n } else if (msg.startsWith('E')) {\n if (msg.match(/the device was not, or could not be, unlocked/)) {\n throw new CommandError('APPLE_DEVICE_LOCKED', 'Device is currently locked.');\n }\n\n // Error message from debugserver -- Drop the `E`\n return msg.slice(1);\n } else {\n throw new CommandError(\n 'APPLE_DEVICE_GDB',\n `Invalid checksum received from debugserver. (checksum: ${checksum}, msg: ${msg})`\n );\n }\n } else {\n throw new CommandError('APPLE_DEVICE_GDB', \"Didn't receive checksum\");\n }\n }\n}\n\nexport class GDBProtocolWriter implements ProtocolWriter {\n write(socket: Socket, msg: GDBMessage) {\n const { cmd, args } = msg;\n debug(`Socket write: ${cmd}, args: ${args}`);\n // hex encode and concat all args\n const encodedArgs = args\n .map((arg) => Buffer.from(arg).toString('hex'))\n .join()\n .toUpperCase();\n const checksumStr = calculateChecksum(cmd + encodedArgs);\n const formattedCmd = `$${cmd}${encodedArgs}#${checksumStr}`;\n socket.write(formattedCmd);\n }\n}\n\n// hex value of (sum of cmd chars mod 256)\nfunction calculateChecksum(cmdStr: string) {\n let checksum = 0;\n for (let i = 0; i < cmdStr.length; i++) {\n checksum += cmdStr.charCodeAt(i);\n }\n let result = (checksum % 256).toString(16);\n // pad if necessary\n if (result.length === 1) {\n result = `0${result}`;\n }\n return result;\n}\n\nexport function validateChecksum(checksum: string, msg: string) {\n // remove '#' from checksum\n const checksumVal = checksum.startsWith('#') ? checksum.slice(1) : checksum;\n // remove '$' from msg and calculate its checksum\n const computedChecksum = calculateChecksum(msg);\n // debug(`Checksum: ${checksumVal}, computed checksum: ${computedChecksum}`);\n return checksumVal === computedChecksum;\n}\n"],"names":["validateChecksum","debug","Debug","ACK_SUCCESS","charCodeAt","GDBProtocolClient","ProtocolClient","constructor","socket","ProtocolReaderFactory","GDBProtocolReader","GDBProtocolWriter","ProtocolReader","callback","onData","data","buffer","Buffer","concat","length","headerSize","parseHeader","packetData","toString","match","body","from","slice","parseBody","err","CommandError","checksum","msg","startsWith","write","cmd","args","encodedArgs","map","arg","join","toUpperCase","checksumStr","calculateChecksum","formattedCmd","cmdStr","i","result","checksumVal","computedChecksum"],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ exports.isLockdownErrorResponse = isLockdownErrorResponse;
|
|
|
7
7
|
exports.LOCKDOWN_HEADER_SIZE = void 0;
|
|
8
8
|
var _plist = _interopRequireDefault(require("@expo/plist"));
|
|
9
9
|
var _debug = _interopRequireDefault(require("debug"));
|
|
10
|
-
var _errors = require("../../../../utils/errors");
|
|
11
10
|
var _abstractProtocol = require("./AbstractProtocol");
|
|
11
|
+
var _errors = require("../../../../utils/errors");
|
|
12
12
|
function _interopRequireDefault(obj) {
|
|
13
13
|
return obj && obj.__esModule ? obj : {
|
|
14
14
|
default: obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/LockdownProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport plist from '@expo/plist';\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/run/ios/appleDevice/protocol/LockdownProtocol.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport plist from '@expo/plist';\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport type { ProtocolWriter } from './AbstractProtocol';\nimport { PlistProtocolReader, ProtocolClient, ProtocolReaderFactory } from './AbstractProtocol';\nimport { CommandError } from '../../../../utils/errors';\n\nconst debug = Debug('expo:apple-device:protocol:lockdown');\nexport const LOCKDOWN_HEADER_SIZE = 4;\n\nexport interface LockdownCommand {\n Command: string;\n [key: string]: any;\n}\n\nexport interface LockdownResponse {\n Status: string;\n [key: string]: any;\n}\n\nexport interface LockdownErrorResponse {\n Error: string;\n Request?: string;\n Service?: string;\n}\n\nexport interface LockdownRequest {\n Request: string;\n [key: string]: any;\n}\n\nfunction isDefined(val: any) {\n return typeof val !== 'undefined';\n}\n\nexport function isLockdownResponse(resp: any): resp is LockdownResponse {\n return isDefined(resp.Status);\n}\n\nexport function isLockdownErrorResponse(resp: any): resp is LockdownErrorResponse {\n return isDefined(resp.Error);\n}\n\nexport class LockdownProtocolClient<\n MessageType extends LockdownRequest | LockdownCommand = LockdownRequest,\n> extends ProtocolClient<MessageType> {\n constructor(socket: Socket) {\n super(socket, new ProtocolReaderFactory(LockdownProtocolReader), new LockdownProtocolWriter());\n }\n}\n\nexport class LockdownProtocolReader extends PlistProtocolReader {\n constructor(callback: (data: any) => any) {\n super(LOCKDOWN_HEADER_SIZE, callback);\n }\n\n parseHeader(data: Buffer) {\n return data.readUInt32BE(0);\n }\n\n parseBody(data: Buffer) {\n const resp = super.parseBody(data);\n debug(`Response: ${JSON.stringify(resp)}`);\n if (isLockdownErrorResponse(resp)) {\n if (resp.Error === 'DeviceLocked') {\n throw new CommandError('APPLE_DEVICE_LOCKED', 'Device is currently locked.');\n }\n\n if (resp.Error === 'InvalidService') {\n let errorMessage = `${resp.Error}: ${resp.Service} (request: ${resp.Request})`;\n if (resp.Service === 'com.apple.debugserver') {\n errorMessage +=\n '\\nTry reconnecting your device. You can also debug service logs with `export DEBUG=expo:xdl:ios:*`';\n }\n throw new CommandError('APPLE_DEVICE_LOCKDOWN', errorMessage);\n }\n\n throw new CommandError('APPLE_DEVICE_LOCKDOWN', resp.Error);\n }\n return resp;\n }\n}\n\nexport class LockdownProtocolWriter implements ProtocolWriter {\n write(socket: Socket, plistData: any) {\n debug(`socket write: ${JSON.stringify(plistData)}`);\n const plistMessage = plist.build(plistData);\n const header = Buffer.alloc(LOCKDOWN_HEADER_SIZE);\n header.writeUInt32BE(plistMessage.length, 0);\n socket.write(header);\n socket.write(plistMessage);\n }\n}\n"],"names":["isLockdownResponse","isLockdownErrorResponse","debug","Debug","LOCKDOWN_HEADER_SIZE","isDefined","val","resp","Status","Error","LockdownProtocolClient","ProtocolClient","constructor","socket","ProtocolReaderFactory","LockdownProtocolReader","LockdownProtocolWriter","PlistProtocolReader","callback","parseHeader","data","readUInt32BE","parseBody","JSON","stringify","CommandError","errorMessage","Service","Request","write","plistData","plistMessage","plist","build","header","Buffer","alloc","writeUInt32BE","length"],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.ensureDeviceIsCodeSignedForDeploymentAsync = ensureDeviceIsCodeSignedForDeploymentAsync;
|
|
6
6
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
7
|
-
var Log = _interopRequireWildcard(require("../../../log"));
|
|
8
7
|
var Security = _interopRequireWildcard(require("./Security"));
|
|
9
8
|
var _resolveCertificateSigningIdentity = require("./resolveCertificateSigningIdentity");
|
|
10
9
|
var _xcodeCodeSigning = require("./xcodeCodeSigning");
|
|
10
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
11
11
|
function _interopRequireDefault(obj) {
|
|
12
12
|
return obj && obj.__esModule ? obj : {
|
|
13
13
|
default: obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/configureCodeSigning.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as
|
|
1
|
+
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/configureCodeSigning.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Security from './Security';\nimport { resolveCertificateSigningIdentityAsync } from './resolveCertificateSigningIdentity';\nimport { getCodeSigningInfoForPbxproj, setAutoCodeSigningInfoForPbxproj } from './xcodeCodeSigning';\nimport * as Log from '../../../log';\n\nexport async function ensureDeviceIsCodeSignedForDeploymentAsync(\n projectRoot: string\n): Promise<string | null> {\n if (isCodeSigningConfigured(projectRoot)) {\n return null;\n }\n return configureCodeSigningAsync(projectRoot);\n}\n\nfunction isCodeSigningConfigured(projectRoot: string): boolean {\n // Check if the app already has a development team defined.\n const signingInfo = getCodeSigningInfoForPbxproj(projectRoot);\n\n const allTargetsHaveTeams = Object.values(signingInfo).reduce((prev, curr) => {\n return prev && !!curr.developmentTeams.length;\n }, true);\n\n if (allTargetsHaveTeams) {\n const teamList = Object.values(signingInfo).reduce<string[]>((prev, curr) => {\n return prev.concat([curr.developmentTeams[0]]);\n }, []);\n Log.log(chalk.dim`\\u203A Auto signing app using team(s): ${teamList.join(', ')}`);\n return true;\n }\n\n const allTargetsHaveProfiles = Object.values(signingInfo).reduce((prev, curr) => {\n return prev && !!curr.provisioningProfiles.length;\n }, true);\n\n if (allTargetsHaveProfiles) {\n // this indicates that the user has manual code signing setup (possibly for production).\n return true;\n }\n return false;\n}\n\nasync function configureCodeSigningAsync(projectRoot: string) {\n const ids = await Security.findIdentitiesAsync();\n\n const id = await resolveCertificateSigningIdentityAsync(ids);\n\n Log.log(`\\u203A Signing and building iOS app with: ${id.codeSigningInfo}`);\n\n setAutoCodeSigningInfoForPbxproj(projectRoot, {\n appleTeamId: id.appleTeamId!,\n });\n return id.appleTeamId!;\n}\n"],"names":["ensureDeviceIsCodeSignedForDeploymentAsync","Security","Log","projectRoot","isCodeSigningConfigured","configureCodeSigningAsync","signingInfo","getCodeSigningInfoForPbxproj","allTargetsHaveTeams","Object","values","reduce","prev","curr","developmentTeams","length","teamList","concat","log","chalk","dim","join","allTargetsHaveProfiles","provisioningProfiles","ids","findIdentitiesAsync","id","resolveCertificateSigningIdentityAsync","codeSigningInfo","setAutoCodeSigningInfoForPbxproj","appleTeamId"],"mappings":"AAAA;;;;QAOsBA,0CAA0C,GAA1CA,0CAA0C;AAP9C,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,QAAQ,mCAAM,YAAY,EAAlB;AACmC,IAAA,kCAAqC,WAArC,qCAAqC,CAAA;AACb,IAAA,iBAAoB,WAApB,oBAAoB,CAAA;AACvFC,IAAAA,GAAG,mCAAM,cAAc,EAApB;;;;;;;;;;;;;;;;;;;;;;;;;;;AAER,eAAeF,0CAA0C,CAC9DG,WAAmB,EACK;IACxB,IAAIC,uBAAuB,CAACD,WAAW,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC;KACb;IACD,OAAOE,yBAAyB,CAACF,WAAW,CAAC,CAAC;CAC/C;AAED,SAASC,uBAAuB,CAACD,WAAmB,EAAW;IAC7D,2DAA2D;IAC3D,MAAMG,WAAW,GAAGC,CAAAA,GAAAA,iBAA4B,AAAa,CAAA,6BAAb,CAACJ,WAAW,CAAC,AAAC;IAE9D,MAAMK,mBAAmB,GAAGC,MAAM,CAACC,MAAM,CAACJ,WAAW,CAAC,CAACK,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,GAAK;QAC5E,OAAOD,IAAI,IAAI,CAAC,CAACC,IAAI,CAACC,gBAAgB,CAACC,MAAM,CAAC;KAC/C,EAAE,IAAI,CAAC,AAAC;IAET,IAAIP,mBAAmB,EAAE;QACvB,MAAMQ,QAAQ,GAAGP,MAAM,CAACC,MAAM,CAACJ,WAAW,CAAC,CAACK,MAAM,CAAW,CAACC,IAAI,EAAEC,IAAI,GAAK;YAC3E,OAAOD,IAAI,CAACK,MAAM,CAAC;gBAACJ,IAAI,CAACC,gBAAgB,CAAC,CAAC,CAAC;aAAC,CAAC,CAAC;SAChD,EAAE,EAAE,CAAC,AAAC;QACPZ,GAAG,CAACgB,GAAG,CAACC,MAAK,QAAA,CAACC,GAAG,CAAC,uCAAuC,EAAEJ,QAAQ,CAACK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;KACb;IAED,MAAMC,sBAAsB,GAAGb,MAAM,CAACC,MAAM,CAACJ,WAAW,CAAC,CAACK,MAAM,CAAC,CAACC,IAAI,EAAEC,IAAI,GAAK;QAC/E,OAAOD,IAAI,IAAI,CAAC,CAACC,IAAI,CAACU,oBAAoB,CAACR,MAAM,CAAC;KACnD,EAAE,IAAI,CAAC,AAAC;IAET,IAAIO,sBAAsB,EAAE;QAC1B,wFAAwF;QACxF,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;CACd;AAED,eAAejB,yBAAyB,CAACF,WAAmB,EAAE;IAC5D,MAAMqB,GAAG,GAAG,MAAMvB,QAAQ,CAACwB,mBAAmB,EAAE,AAAC;IAEjD,MAAMC,EAAE,GAAG,MAAMC,CAAAA,GAAAA,kCAAsC,AAAK,CAAA,uCAAL,CAACH,GAAG,CAAC,AAAC;IAE7DtB,GAAG,CAACgB,GAAG,CAAC,CAAC,0CAA0C,EAAEQ,EAAE,CAACE,eAAe,CAAC,CAAC,CAAC,CAAC;IAE3EC,CAAAA,GAAAA,iBAAgC,AAE9B,CAAA,iCAF8B,CAAC1B,WAAW,EAAE;QAC5C2B,WAAW,EAAEJ,EAAE,CAACI,WAAW;KAC5B,CAAC,CAAC;IACH,OAAOJ,EAAE,CAACI,WAAW,CAAE;CACxB"}
|
|
@@ -6,13 +6,13 @@ exports.sortDefaultIdToBeginningAsync = sortDefaultIdToBeginningAsync;
|
|
|
6
6
|
exports.resolveCertificateSigningIdentityAsync = resolveCertificateSigningIdentityAsync;
|
|
7
7
|
exports.selectDevelopmentTeamAsync = selectDevelopmentTeamAsync;
|
|
8
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
+
var Security = _interopRequireWildcard(require("./Security"));
|
|
10
|
+
var _settings = require("./settings");
|
|
9
11
|
var Log = _interopRequireWildcard(require("../../../log"));
|
|
10
12
|
var _errors = require("../../../utils/errors");
|
|
11
13
|
var _interactive = require("../../../utils/interactive");
|
|
12
14
|
var _link = require("../../../utils/link");
|
|
13
15
|
var _prompts = require("../../../utils/prompts");
|
|
14
|
-
var Security = _interopRequireWildcard(require("./Security"));
|
|
15
|
-
var _settings = require("./settings");
|
|
16
16
|
function _interopRequireDefault(obj) {
|
|
17
17
|
return obj && obj.__esModule ? obj : {
|
|
18
18
|
default: obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/resolveCertificateSigningIdentity.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as
|
|
1
|
+
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/resolveCertificateSigningIdentity.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Security from './Security';\nimport { getLastDeveloperCodeSigningIdAsync, setLastDeveloperCodeSigningIdAsync } from './settings';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { isInteractive } from '../../../utils/interactive';\nimport { learnMore } from '../../../utils/link';\nimport { selectAsync } from '../../../utils/prompts';\n\n/**\n * Sort the code signing items so the last selected item (user's default) is the first suggested.\n */\nexport async function sortDefaultIdToBeginningAsync(\n identities: Security.CertificateSigningInfo[]\n): Promise<[Security.CertificateSigningInfo[], string | null]> {\n const lastSelected = await getLastDeveloperCodeSigningIdAsync();\n\n if (lastSelected) {\n let iterations = 0;\n while (identities[0].signingCertificateId !== lastSelected && iterations < identities.length) {\n identities.push(identities.shift()!);\n iterations++;\n }\n }\n return [identities, lastSelected];\n}\n\n/**\n * Assert that the computer needs code signing setup.\n * This links to an FYI page that was user tested internally.\n */\nfunction assertCodeSigningSetup(): never {\n // TODO: We can probably do this too automatically.\n Log.log(\n `\\u203A Your computer requires some additional setup before you can build onto physical iOS devices.\\n ${chalk.bold(\n learnMore('https://expo.fyi/setup-xcode-signing')\n )}`\n );\n\n throw new CommandError('No code signing certificates are available to use.');\n}\n\n/**\n * Resolve the best certificate signing identity from a given list of IDs.\n * - If no IDs: Assert that the user has to setup code signing.\n * - If one ID: Return the first ID.\n * - If multiple IDs: Ask the user to select one, then store the value to be suggested first next time (since users generally use the same ID).\n */\nexport async function resolveCertificateSigningIdentityAsync(\n ids: string[]\n): Promise<Security.CertificateSigningInfo> {\n // The user has no valid code signing identities.\n if (!ids.length) {\n assertCodeSigningSetup();\n }\n\n // One ID available 🤝 Program is not interactive\n //\n // using the the first available option\n if (ids.length === 1 || !isInteractive()) {\n // This method is cheaper than `resolveIdentitiesAsync` and checking the\n // cached user preference so we should use this as early as possible.\n return Security.resolveCertificateSigningInfoAsync(ids[0]);\n }\n\n // Get identities and sort by the one that the user is most likely to choose.\n const [identities, preferred] = await sortDefaultIdToBeginningAsync(\n await Security.resolveIdentitiesAsync(ids)\n );\n\n const selected = await selectDevelopmentTeamAsync(identities, preferred);\n\n // Store the last used value and suggest it as the first value\n // next time the user has to select a code signing identity.\n await setLastDeveloperCodeSigningIdAsync(selected.signingCertificateId);\n\n return selected;\n}\n\n/** Prompt the user to select a development team, highlighting the preferred value based on the user history. */\nexport async function selectDevelopmentTeamAsync(\n identities: Security.CertificateSigningInfo[],\n preferredId: string | null\n): Promise<Security.CertificateSigningInfo> {\n const index = await selectAsync(\n 'Development team for signing the app',\n identities.map((value, i) => {\n const format =\n value.signingCertificateId === preferredId ? chalk.bold : (message: string) => message;\n return {\n // Formatted like: `650 Industries, Inc. (A1BCDEF234) - Apple Development: Evan Bacon (AA00AABB0A)`\n title: format(\n [value.appleTeamName, `(${value.appleTeamId}) -`, value.codeSigningInfo].join(' ')\n ),\n value: i,\n };\n })\n );\n\n return identities[index];\n}\n"],"names":["sortDefaultIdToBeginningAsync","resolveCertificateSigningIdentityAsync","selectDevelopmentTeamAsync","Security","Log","identities","lastSelected","getLastDeveloperCodeSigningIdAsync","iterations","signingCertificateId","length","push","shift","assertCodeSigningSetup","log","chalk","bold","learnMore","CommandError","ids","isInteractive","resolveCertificateSigningInfoAsync","preferred","resolveIdentitiesAsync","selected","setLastDeveloperCodeSigningIdAsync","preferredId","index","selectAsync","map","value","i","format","message","title","appleTeamName","appleTeamId","codeSigningInfo","join"],"mappings":"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"}
|
|
@@ -49,6 +49,9 @@ function mutateXcodeProjectWithAutoCodeSigningInfo({ project , appleTeamId }) {
|
|
|
49
49
|
item.buildSettings.CODE_SIGN_STYLE = "Automatic";
|
|
50
50
|
});
|
|
51
51
|
Object.entries(_configPlugins.IOSConfig.XcodeUtils.getProjectSection(project)).filter(_configPlugins.IOSConfig.XcodeUtils.isNotComment).forEach(([, item])=>{
|
|
52
|
+
if (!item.attributes.TargetAttributes) {
|
|
53
|
+
item.attributes.TargetAttributes = {};
|
|
54
|
+
}
|
|
52
55
|
if (!item.attributes.TargetAttributes[nativeTargetId]) {
|
|
53
56
|
item.attributes.TargetAttributes[nativeTargetId] = {};
|
|
54
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/xcodeCodeSigning.ts"],"sourcesContent":["import { IOSConfig, XcodeProject } from '@expo/config-plugins';\nimport fs from 'fs';\n\nexport type CodeSigningInfo = Record<\n string,\n {\n developmentTeams: string[];\n provisioningProfiles: string[];\n }\n>;\n\n/** Find the development team and provisioning profile that's currently in use by the Xcode project. */\nexport function getCodeSigningInfoForPbxproj(projectRoot: string): CodeSigningInfo {\n const project = IOSConfig.XcodeUtils.getPbxproj(projectRoot);\n const targets = IOSConfig.Target.findSignableTargets(project);\n\n const signingInfo: CodeSigningInfo = {};\n for (const [nativeTargetId, nativeTarget] of targets) {\n const developmentTeams: string[] = [];\n const provisioningProfiles: string[] = [];\n\n IOSConfig.XcodeUtils.getBuildConfigurationsForListId(\n project,\n nativeTarget.buildConfigurationList\n )\n .filter(\n ([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) =>\n item.buildSettings.PRODUCT_NAME\n )\n .forEach(([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) => {\n const { DEVELOPMENT_TEAM, PROVISIONING_PROFILE } = item.buildSettings;\n if (\n typeof DEVELOPMENT_TEAM === 'string' &&\n // If the user selects \"Team: none\" in Xcode, it'll be an empty string.\n !!DEVELOPMENT_TEAM &&\n // xcode package sometimes reads an empty string as a quoted empty string.\n DEVELOPMENT_TEAM !== '\"\"'\n ) {\n developmentTeams.push(DEVELOPMENT_TEAM);\n }\n if (typeof PROVISIONING_PROFILE === 'string' && !!PROVISIONING_PROFILE) {\n provisioningProfiles.push(PROVISIONING_PROFILE);\n }\n });\n signingInfo[nativeTargetId] = {\n developmentTeams,\n provisioningProfiles,\n };\n }\n\n return signingInfo;\n}\n\n/**\n * Set the development team and configure the Xcode project for automatic code signing,\n * this helps us resolve the code signing on subsequent runs and emulates Xcode behavior.\n *\n * @param props.project xcode project object from `xcode` package.\n * @param props.appleTeamId Apple Team ID to use for code signing.\n */\nexport function mutateXcodeProjectWithAutoCodeSigningInfo({\n project,\n appleTeamId,\n}: {\n project: XcodeProject;\n appleTeamId: string;\n}): XcodeProject {\n const targets = IOSConfig.Target.findSignableTargets(project);\n\n const quotedAppleTeamId = ensureQuotes(appleTeamId);\n\n for (const [nativeTargetId, nativeTarget] of targets) {\n IOSConfig.XcodeUtils.getBuildConfigurationsForListId(\n project,\n nativeTarget.buildConfigurationList\n )\n .filter(\n ([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) =>\n item.buildSettings.PRODUCT_NAME\n )\n .forEach(([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) => {\n item.buildSettings.DEVELOPMENT_TEAM = quotedAppleTeamId;\n item.buildSettings.CODE_SIGN_IDENTITY = '\"Apple Development\"';\n item.buildSettings.CODE_SIGN_STYLE = 'Automatic';\n });\n\n Object.entries(IOSConfig.XcodeUtils.getProjectSection(project))\n .filter(IOSConfig.XcodeUtils.isNotComment)\n .forEach(([, item]: IOSConfig.XcodeUtils.ProjectSectionEntry) => {\n if (!item.attributes.TargetAttributes[nativeTargetId]) {\n item.attributes.TargetAttributes[nativeTargetId] = {};\n }\n\n item.attributes.TargetAttributes[nativeTargetId].DevelopmentTeam = quotedAppleTeamId;\n item.attributes.TargetAttributes[nativeTargetId].ProvisioningStyle = 'Automatic';\n });\n }\n\n return project;\n}\n\n/**\n * Configures the Xcode project for automatic code signing and persists the results.\n */\nexport function setAutoCodeSigningInfoForPbxproj(\n projectRoot: string,\n { appleTeamId }: { appleTeamId: string }\n): void {\n const project = IOSConfig.XcodeUtils.getPbxproj(projectRoot);\n mutateXcodeProjectWithAutoCodeSigningInfo({ project, appleTeamId });\n\n fs.writeFileSync(project.filepath, project.writeSync());\n}\n\nconst ensureQuotes = (value: string) => {\n if (!value.match(/^['\"]/)) {\n return `\"${value}\"`;\n }\n return value;\n};\n"],"names":["getCodeSigningInfoForPbxproj","mutateXcodeProjectWithAutoCodeSigningInfo","setAutoCodeSigningInfoForPbxproj","projectRoot","project","IOSConfig","XcodeUtils","getPbxproj","targets","Target","findSignableTargets","signingInfo","nativeTargetId","nativeTarget","developmentTeams","provisioningProfiles","getBuildConfigurationsForListId","buildConfigurationList","filter","item","buildSettings","PRODUCT_NAME","forEach","DEVELOPMENT_TEAM","PROVISIONING_PROFILE","push","appleTeamId","quotedAppleTeamId","ensureQuotes","CODE_SIGN_IDENTITY","CODE_SIGN_STYLE","Object","entries","getProjectSection","isNotComment","attributes","TargetAttributes","DevelopmentTeam","ProvisioningStyle","fs","writeFileSync","filepath","writeSync","value","match"],"mappings":"AAAA;;;;QAYgBA,4BAA4B,GAA5BA,4BAA4B;QAgD5BC,yCAAyC,GAAzCA,yCAAyC;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/xcodeCodeSigning.ts"],"sourcesContent":["import { IOSConfig, XcodeProject } from '@expo/config-plugins';\nimport fs from 'fs';\n\nexport type CodeSigningInfo = Record<\n string,\n {\n developmentTeams: string[];\n provisioningProfiles: string[];\n }\n>;\n\n/** Find the development team and provisioning profile that's currently in use by the Xcode project. */\nexport function getCodeSigningInfoForPbxproj(projectRoot: string): CodeSigningInfo {\n const project = IOSConfig.XcodeUtils.getPbxproj(projectRoot);\n const targets = IOSConfig.Target.findSignableTargets(project);\n\n const signingInfo: CodeSigningInfo = {};\n for (const [nativeTargetId, nativeTarget] of targets) {\n const developmentTeams: string[] = [];\n const provisioningProfiles: string[] = [];\n\n IOSConfig.XcodeUtils.getBuildConfigurationsForListId(\n project,\n nativeTarget.buildConfigurationList\n )\n .filter(\n ([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) =>\n item.buildSettings.PRODUCT_NAME\n )\n .forEach(([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) => {\n const { DEVELOPMENT_TEAM, PROVISIONING_PROFILE } = item.buildSettings;\n if (\n typeof DEVELOPMENT_TEAM === 'string' &&\n // If the user selects \"Team: none\" in Xcode, it'll be an empty string.\n !!DEVELOPMENT_TEAM &&\n // xcode package sometimes reads an empty string as a quoted empty string.\n DEVELOPMENT_TEAM !== '\"\"'\n ) {\n developmentTeams.push(DEVELOPMENT_TEAM);\n }\n if (typeof PROVISIONING_PROFILE === 'string' && !!PROVISIONING_PROFILE) {\n provisioningProfiles.push(PROVISIONING_PROFILE);\n }\n });\n signingInfo[nativeTargetId] = {\n developmentTeams,\n provisioningProfiles,\n };\n }\n\n return signingInfo;\n}\n\n/**\n * Set the development team and configure the Xcode project for automatic code signing,\n * this helps us resolve the code signing on subsequent runs and emulates Xcode behavior.\n *\n * @param props.project xcode project object from `xcode` package.\n * @param props.appleTeamId Apple Team ID to use for code signing.\n */\nexport function mutateXcodeProjectWithAutoCodeSigningInfo({\n project,\n appleTeamId,\n}: {\n project: XcodeProject;\n appleTeamId: string;\n}): XcodeProject {\n const targets = IOSConfig.Target.findSignableTargets(project);\n\n const quotedAppleTeamId = ensureQuotes(appleTeamId);\n\n for (const [nativeTargetId, nativeTarget] of targets) {\n IOSConfig.XcodeUtils.getBuildConfigurationsForListId(\n project,\n nativeTarget.buildConfigurationList\n )\n .filter(\n ([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) =>\n item.buildSettings.PRODUCT_NAME\n )\n .forEach(([, item]: IOSConfig.XcodeUtils.ConfigurationSectionEntry) => {\n item.buildSettings.DEVELOPMENT_TEAM = quotedAppleTeamId;\n item.buildSettings.CODE_SIGN_IDENTITY = '\"Apple Development\"';\n item.buildSettings.CODE_SIGN_STYLE = 'Automatic';\n });\n\n Object.entries(IOSConfig.XcodeUtils.getProjectSection(project))\n .filter(IOSConfig.XcodeUtils.isNotComment)\n .forEach(([, item]: IOSConfig.XcodeUtils.ProjectSectionEntry) => {\n if (!item.attributes.TargetAttributes) {\n item.attributes.TargetAttributes = {};\n }\n\n if (!item.attributes.TargetAttributes[nativeTargetId]) {\n item.attributes.TargetAttributes[nativeTargetId] = {};\n }\n\n item.attributes.TargetAttributes[nativeTargetId].DevelopmentTeam = quotedAppleTeamId;\n item.attributes.TargetAttributes[nativeTargetId].ProvisioningStyle = 'Automatic';\n });\n }\n\n return project;\n}\n\n/**\n * Configures the Xcode project for automatic code signing and persists the results.\n */\nexport function setAutoCodeSigningInfoForPbxproj(\n projectRoot: string,\n { appleTeamId }: { appleTeamId: string }\n): void {\n const project = IOSConfig.XcodeUtils.getPbxproj(projectRoot);\n mutateXcodeProjectWithAutoCodeSigningInfo({ project, appleTeamId });\n\n fs.writeFileSync(project.filepath, project.writeSync());\n}\n\nconst ensureQuotes = (value: string) => {\n if (!value.match(/^['\"]/)) {\n return `\"${value}\"`;\n }\n return value;\n};\n"],"names":["getCodeSigningInfoForPbxproj","mutateXcodeProjectWithAutoCodeSigningInfo","setAutoCodeSigningInfoForPbxproj","projectRoot","project","IOSConfig","XcodeUtils","getPbxproj","targets","Target","findSignableTargets","signingInfo","nativeTargetId","nativeTarget","developmentTeams","provisioningProfiles","getBuildConfigurationsForListId","buildConfigurationList","filter","item","buildSettings","PRODUCT_NAME","forEach","DEVELOPMENT_TEAM","PROVISIONING_PROFILE","push","appleTeamId","quotedAppleTeamId","ensureQuotes","CODE_SIGN_IDENTITY","CODE_SIGN_STYLE","Object","entries","getProjectSection","isNotComment","attributes","TargetAttributes","DevelopmentTeam","ProvisioningStyle","fs","writeFileSync","filepath","writeSync","value","match"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/run/ios/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { Command } from '../../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../../utils/args';\nimport { logCmdError } from '../../utils/errors';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/run/ios/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { XcodeConfiguration } from './XcodeBuild.types';\nimport { Command } from '../../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../../utils/args';\nimport { logCmdError } from '../../utils/errors';\n\nexport const expoRunIos: Command = async (argv) => {\n const rawArgsMap: arg.Spec = {\n // Types\n '--help': Boolean,\n '--no-build-cache': Boolean,\n '--no-install': Boolean,\n '--no-bundler': Boolean,\n '--configuration': String,\n\n '--port': Number,\n // Aliases\n '-p': '--port',\n\n '-h': '--help',\n };\n const args = assertWithOptionsArgs(rawArgsMap, {\n argv,\n\n permissive: true,\n });\n\n // '-d' -> '--device': Boolean,\n // '--scheme': String,\n\n if (args['--help']) {\n printHelp(\n `Run the iOS app binary locally`,\n `npx expo run:ios`,\n [\n `--no-build-cache Clear the native derived data before building`,\n `--no-install Skip installing dependencies`,\n `--no-bundler Skip starting the Metro bundler`,\n `--scheme [scheme] Scheme to build`,\n chalk`--configuration <configuration> Xcode configuration to use. Debug or Release. {dim Default: Debug}`,\n `-d, --device [device] Device name or UDID to build the app on`,\n chalk`-p, --port <port> Port to start the Metro bundler on. {dim Default: 8081}`,\n `-h, --help Usage info`,\n ].join('\\n'),\n [\n '',\n chalk` Build for production (unsigned) with the {bold Release} configuration:`,\n chalk` {dim $} npx expo run:ios --configuration Release`,\n '',\n ].join('\\n')\n );\n }\n\n const { resolveStringOrBooleanArgsAsync } = await import('../../utils/resolveArgs');\n const parsed = await resolveStringOrBooleanArgsAsync(argv ?? [], rawArgsMap, {\n '--scheme': Boolean,\n '--device': Boolean,\n '-d': '--device',\n }).catch(logCmdError);\n\n const { runIosAsync } = await import('./runIosAsync');\n return runIosAsync(path.resolve(parsed.projectRoot), {\n // Parsed options\n buildCache: !args['--no-build-cache'],\n install: !args['--no-install'],\n bundler: !args['--no-bundler'],\n port: args['--port'],\n\n // Custom parsed args\n device: parsed.args['--device'],\n scheme: parsed.args['--scheme'],\n configuration: parsed.args['--configuration'] as XcodeConfiguration,\n }).catch(logCmdError);\n};\n"],"names":["expoRunIos","argv","rawArgsMap","Boolean","String","Number","args","assertWithOptionsArgs","permissive","printHelp","chalk","join","resolveStringOrBooleanArgsAsync","parsed","catch","logCmdError","runIosAsync","path","resolve","projectRoot","buildCache","install","bundler","port","device","scheme","configuration"],"mappings":"AAAA;;;;;;AAEkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACR,IAAA,KAAM,kCAAN,MAAM,EAAA;AAI0B,IAAA,KAAkB,WAAlB,kBAAkB,CAAA;AACvC,IAAA,OAAoB,WAApB,oBAAoB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,UAAU,GAAa;QAC3B,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,kBAAkB,EAAEA,OAAO;QAC3B,cAAc,EAAEA,OAAO;QACvB,cAAc,EAAEA,OAAO;QACvB,iBAAiB,EAAEC,MAAM;QAEzB,QAAQ,EAAEC,MAAM;QAChB,UAAU;QACV,IAAI,EAAE,QAAQ;QAEd,IAAI,EAAE,QAAQ;KACf,AAAC;IACF,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAIhC,CAAA,sBAJgC,CAACL,UAAU,EAAE;QAC7CD,IAAI;QAEJO,UAAU,EAAE,IAAI;KACjB,CAAC,AAAC;IAEH,+BAA+B;IAC/B,sBAAsB;IAEtB,IAAIF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBG,CAAAA,GAAAA,KAAS,AAmBR,CAAA,UAnBQ,CACP,CAAC,8BAA8B,CAAC,EAChC,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,8EAA8E,CAAC;YAChF,CAAC,6DAA6D,CAAC;YAC/D,CAAC,gEAAgE,CAAC;YAClE,CAAC,gDAAgD,CAAC;YAClDC,MAAK,QAAA,CAAC,mGAAmG,CAAC;YAC1G,CAAC,wEAAwE,CAAC;YAC1EA,MAAK,QAAA,CAAC,wFAAwF,CAAC;YAC/F,CAAC,2CAA2C,CAAC;SAC9C,CAACC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,EAAE;YACFD,MAAK,QAAA,CAAC,wEAAwE,CAAC;YAC/EA,MAAK,QAAA,CAAC,oDAAoD,CAAC;YAC3D,EAAE;SACH,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAM,EAAEC,+BAA+B,CAAA,EAAE,GAAG,MAAM;+CAAO,yBAAyB;MAAC,AAAC;IACpF,MAAMC,MAAM,GAAG,MAAMD,+BAA+B,CAACX,IAAI,WAAJA,IAAI,GAAI,EAAE,EAAEC,UAAU,EAAE;QAC3E,UAAU,EAAEC,OAAO;QACnB,UAAU,EAAEA,OAAO;QACnB,IAAI,EAAE,UAAU;KACjB,CAAC,CAACW,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEtB,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,eAAe;MAAC,AAAC;IACtD,OAAOA,WAAW,CAACC,KAAI,QAAA,CAACC,OAAO,CAACL,MAAM,CAACM,WAAW,CAAC,EAAE;QACnD,iBAAiB;QACjBC,UAAU,EAAE,CAACd,IAAI,CAAC,kBAAkB,CAAC;QACrCe,OAAO,EAAE,CAACf,IAAI,CAAC,cAAc,CAAC;QAC9BgB,OAAO,EAAE,CAAChB,IAAI,CAAC,cAAc,CAAC;QAC9BiB,IAAI,EAAEjB,IAAI,CAAC,QAAQ,CAAC;QAEpB,qBAAqB;QACrBkB,MAAM,EAAEX,MAAM,CAACP,IAAI,CAAC,UAAU,CAAC;QAC/BmB,MAAM,EAAEZ,MAAM,CAACP,IAAI,CAAC,UAAU,CAAC;QAC/BoB,aAAa,EAAEb,MAAM,CAACP,IAAI,CAAC,iBAAiB,CAAC;KAC9C,CAAC,CAACQ,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CACvB,AAAC;QAnEWf,UAAU,GAAVA,UAAU"}
|
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
exports.launchAppAsync = launchAppAsync;
|
|
6
6
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
7
7
|
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
var XcodeBuild = _interopRequireWildcard(require("./XcodeBuild"));
|
|
9
|
+
var _installOnDeviceAsync = require("./appleDevice/installOnDeviceAsync");
|
|
8
10
|
var _appleDeviceManager = require("../../start/platforms/ios/AppleDeviceManager");
|
|
9
11
|
var _simctlLogging = require("../../start/platforms/ios/simctlLogging");
|
|
10
12
|
var _plist = require("../../utils/plist");
|
|
11
13
|
var _profile = require("../../utils/profile");
|
|
12
|
-
var XcodeBuild = _interopRequireWildcard(require("./XcodeBuild"));
|
|
13
|
-
var _installOnDeviceAsync = require("./appleDevice/installOnDeviceAsync");
|
|
14
14
|
function _interopRequireDefault(obj) {
|
|
15
15
|
return obj && obj.__esModule ? obj : {
|
|
16
16
|
default: obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/run/ios/launchApp.ts"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'path';\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../src/run/ios/launchApp.ts"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'path';\n\nimport * as XcodeBuild from './XcodeBuild';\nimport { BuildProps } from './XcodeBuild.types';\nimport { getAppDeltaDirectory, installOnDeviceAsync } from './appleDevice/installOnDeviceAsync';\nimport { AppleDeviceManager } from '../../start/platforms/ios/AppleDeviceManager';\nimport { SimulatorLogStreamer } from '../../start/platforms/ios/simctlLogging';\nimport { DevServerManager } from '../../start/server/DevServerManager';\nimport { parsePlistAsync } from '../../utils/plist';\nimport { profile } from '../../utils/profile';\n\n/** Install and launch the app binary on a device. */\nexport async function launchAppAsync(\n binaryPath: string,\n manager: DevServerManager,\n props: Pick<BuildProps, 'isSimulator' | 'device' | 'shouldStartBundler'>\n) {\n const appId = await profile(getBundleIdentifierForBinaryAsync)(binaryPath);\n\n if (!props.isSimulator) {\n await profile(installOnDeviceAsync)({\n bundleIdentifier: appId,\n bundle: binaryPath,\n appDeltaDirectory: getAppDeltaDirectory(appId),\n udid: props.device.udid,\n deviceName: props.device.name,\n });\n return;\n }\n\n XcodeBuild.logPrettyItem(chalk`{bold Installing} on ${props.device.name}`);\n\n const device = await AppleDeviceManager.resolveAsync({ device: props.device });\n await device.installAppAsync(binaryPath);\n\n XcodeBuild.logPrettyItem(chalk`{bold Opening} on ${device.name} {dim (${appId})}`);\n\n if (props.shouldStartBundler) {\n await SimulatorLogStreamer.getStreamer(device.device, {\n appId,\n }).attachAsync();\n }\n\n await manager.getDefaultDevServer().openCustomRuntimeAsync(\n 'simulator',\n {\n applicationId: appId,\n },\n { device }\n );\n}\n\nasync function getBundleIdentifierForBinaryAsync(binaryPath: string): Promise<string> {\n const builtInfoPlistPath = path.join(binaryPath, 'Info.plist');\n const { CFBundleIdentifier } = await parsePlistAsync(builtInfoPlistPath);\n return CFBundleIdentifier;\n}\n"],"names":["launchAppAsync","XcodeBuild","binaryPath","manager","props","appId","profile","getBundleIdentifierForBinaryAsync","isSimulator","installOnDeviceAsync","bundleIdentifier","bundle","appDeltaDirectory","getAppDeltaDirectory","udid","device","deviceName","name","logPrettyItem","chalk","AppleDeviceManager","resolveAsync","installAppAsync","shouldStartBundler","SimulatorLogStreamer","getStreamer","attachAsync","getDefaultDevServer","openCustomRuntimeAsync","applicationId","builtInfoPlistPath","path","join","CFBundleIdentifier","parsePlistAsync"],"mappings":"AAAA;;;;QAasBA,cAAc,GAAdA,cAAc;AAblB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACR,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,UAAU,mCAAM,cAAc,EAApB;AAEqC,IAAA,qBAAoC,WAApC,oCAAoC,CAAA;AAC5D,IAAA,mBAA8C,WAA9C,8CAA8C,CAAA;AAC5C,IAAA,cAAyC,WAAzC,yCAAyC,CAAA;AAE9C,IAAA,MAAmB,WAAnB,mBAAmB,CAAA;AAC3B,IAAA,QAAqB,WAArB,qBAAqB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGtC,eAAeD,cAAc,CAClCE,UAAkB,EAClBC,OAAyB,EACzBC,KAAwE,EACxE;IACA,MAAMC,KAAK,GAAG,MAAMC,CAAAA,GAAAA,QAAO,AAAmC,CAAA,QAAnC,CAACC,iCAAiC,CAAC,CAACL,UAAU,CAAC,AAAC;IAE3E,IAAI,CAACE,KAAK,CAACI,WAAW,EAAE;QACtB,MAAMF,CAAAA,GAAAA,QAAO,AAAsB,CAAA,QAAtB,CAACG,qBAAoB,qBAAA,CAAC,CAAC;YAClCC,gBAAgB,EAAEL,KAAK;YACvBM,MAAM,EAAET,UAAU;YAClBU,iBAAiB,EAAEC,CAAAA,GAAAA,qBAAoB,AAAO,CAAA,qBAAP,CAACR,KAAK,CAAC;YAC9CS,IAAI,EAAEV,KAAK,CAACW,MAAM,CAACD,IAAI;YACvBE,UAAU,EAAEZ,KAAK,CAACW,MAAM,CAACE,IAAI;SAC9B,CAAC,CAAC;QACH,OAAO;KACR;IAEDhB,UAAU,CAACiB,aAAa,CAACC,MAAK,QAAA,CAAC,qBAAqB,EAAEf,KAAK,CAACW,MAAM,CAACE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAMF,MAAM,GAAG,MAAMK,mBAAkB,mBAAA,CAACC,YAAY,CAAC;QAAEN,MAAM,EAAEX,KAAK,CAACW,MAAM;KAAE,CAAC,AAAC;IAC/E,MAAMA,MAAM,CAACO,eAAe,CAACpB,UAAU,CAAC,CAAC;IAEzCD,UAAU,CAACiB,aAAa,CAACC,MAAK,QAAA,CAAC,kBAAkB,EAAEJ,MAAM,CAACE,IAAI,CAAC,OAAO,EAAEZ,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnF,IAAID,KAAK,CAACmB,kBAAkB,EAAE;QAC5B,MAAMC,cAAoB,qBAAA,CAACC,WAAW,CAACV,MAAM,CAACA,MAAM,EAAE;YACpDV,KAAK;SACN,CAAC,CAACqB,WAAW,EAAE,CAAC;KAClB;IAED,MAAMvB,OAAO,CAACwB,mBAAmB,EAAE,CAACC,sBAAsB,CACxD,WAAW,EACX;QACEC,aAAa,EAAExB,KAAK;KACrB,EACD;QAAEU,MAAM;KAAE,CACX,CAAC;CACH;AAED,eAAeR,iCAAiC,CAACL,UAAkB,EAAmB;IACpF,MAAM4B,kBAAkB,GAAGC,KAAI,QAAA,CAACC,IAAI,CAAC9B,UAAU,EAAE,YAAY,CAAC,AAAC;IAC/D,MAAM,EAAE+B,kBAAkB,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,MAAe,AAAoB,CAAA,gBAApB,CAACJ,kBAAkB,CAAC,AAAC;IACzE,OAAOG,kBAAkB,CAAC;CAC3B"}
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.resolveDeviceAsync = resolveDeviceAsync;
|
|
6
6
|
exports.isSimulatorDevice = isSimulatorDevice;
|
|
7
|
+
var _promptDevice = require("./promptDevice");
|
|
7
8
|
var Log = _interopRequireWildcard(require("../../../log"));
|
|
8
9
|
var _appleDeviceManager = require("../../../start/platforms/ios/AppleDeviceManager");
|
|
9
10
|
var _assertSystemRequirements = require("../../../start/platforms/ios/assertSystemRequirements");
|
|
@@ -13,7 +14,6 @@ var _errors = require("../../../utils/errors");
|
|
|
13
14
|
var _profile = require("../../../utils/profile");
|
|
14
15
|
var _hints = require("../../hints");
|
|
15
16
|
var AppleDevice = _interopRequireWildcard(require("../appleDevice/AppleDevice"));
|
|
16
|
-
var _promptDevice = require("./promptDevice");
|
|
17
17
|
function _interopRequireWildcard(obj) {
|
|
18
18
|
if (obj && obj.__esModule) {
|
|
19
19
|
return obj;
|