@expo/cli 0.0.0-canary-20231122-1af9191
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -0
- package/build/bin/cli +272 -0
- package/build/bin/cli.map +1 -0
- package/build/src/api/endpoint.js +27 -0
- package/build/src/api/endpoint.js.map +1 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js +19 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
- package/build/src/api/getExpoSchema.js +69 -0
- package/build/src/api/getExpoSchema.js.map +1 -0
- package/build/src/api/getNativeModuleVersions.js +31 -0
- package/build/src/api/getNativeModuleVersions.js.map +1 -0
- package/build/src/api/getProjectDevelopmentCertificate.js +22 -0
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
- package/build/src/api/getVersions.js +24 -0
- package/build/src/api/getVersions.js.map +1 -0
- package/build/src/api/graphql/client.js +106 -0
- package/build/src/api/graphql/client.js.map +1 -0
- package/build/src/api/graphql/queries/AppQuery.js +39 -0
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -0
- package/build/src/api/graphql/queries/UserQuery.js +51 -0
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
- package/build/src/api/graphql/types/App.js +23 -0
- package/build/src/api/graphql/types/App.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemCache.js +79 -0
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
- package/build/src/api/rest/cache/response.js +31 -0
- package/build/src/api/rest/cache/response.js.map +1 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
- package/build/src/api/rest/client.js +109 -0
- package/build/src/api/rest/client.js.map +1 -0
- package/build/src/api/rest/client.types.js +6 -0
- package/build/src/api/rest/client.types.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +23 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithOffline.js +19 -0
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProgress.js +64 -0
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProxy.js +26 -0
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -0
- package/build/src/api/settings.js +20 -0
- package/build/src/api/settings.js.map +1 -0
- package/build/src/api/updateDevelopmentSession.js +74 -0
- package/build/src/api/updateDevelopmentSession.js.map +1 -0
- package/build/src/api/user/UserSettings.js +71 -0
- package/build/src/api/user/UserSettings.js.map +1 -0
- package/build/src/api/user/actions.js +107 -0
- package/build/src/api/user/actions.js.map +1 -0
- package/build/src/api/user/expoSsoLauncher.js +127 -0
- package/build/src/api/user/expoSsoLauncher.js.map +1 -0
- package/build/src/api/user/otp.js +139 -0
- package/build/src/api/user/otp.js.map +1 -0
- package/build/src/api/user/user.js +144 -0
- package/build/src/api/user/user.js.map +1 -0
- package/build/src/config/configAsync.js +137 -0
- package/build/src/config/configAsync.js.map +1 -0
- package/build/src/config/index.js +75 -0
- package/build/src/config/index.js.map +1 -0
- package/build/src/customize/customizeAsync.js +43 -0
- package/build/src/customize/customizeAsync.js.map +1 -0
- package/build/src/customize/generate.js +104 -0
- package/build/src/customize/generate.js.map +1 -0
- package/build/src/customize/index.js +41 -0
- package/build/src/customize/index.js.map +1 -0
- package/build/src/customize/resolveOptions.js +18 -0
- package/build/src/customize/resolveOptions.js.map +1 -0
- package/build/src/customize/templates.js +126 -0
- package/build/src/customize/templates.js.map +1 -0
- package/build/src/customize/typescript.js +56 -0
- package/build/src/customize/typescript.js.map +1 -0
- package/build/src/export/createMetadataJson.js +42 -0
- package/build/src/export/createMetadataJson.js.map +1 -0
- package/build/src/export/embed/exportEmbedAsync.js +146 -0
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -0
- package/build/src/export/embed/index.js +115 -0
- package/build/src/export/embed/index.js.map +1 -0
- package/build/src/export/embed/resolveOptions.js +59 -0
- package/build/src/export/embed/resolveOptions.js.map +1 -0
- package/build/src/export/embed/xcodeCompilerLogger.js +97 -0
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -0
- package/build/src/export/exportApp.js +192 -0
- package/build/src/export/exportApp.js.map +1 -0
- package/build/src/export/exportAssets.js +176 -0
- package/build/src/export/exportAssets.js.map +1 -0
- package/build/src/export/exportAsync.js +52 -0
- package/build/src/export/exportAsync.js.map +1 -0
- package/build/src/export/exportHermes.js +124 -0
- package/build/src/export/exportHermes.js.map +1 -0
- package/build/src/export/exportStaticAsync.js +278 -0
- package/build/src/export/exportStaticAsync.js.map +1 -0
- package/build/src/export/favicon.js +89 -0
- package/build/src/export/favicon.js.map +1 -0
- package/build/src/export/fork-bundleAsync.js +215 -0
- package/build/src/export/fork-bundleAsync.js.map +1 -0
- package/build/src/export/getPublicExpoManifest.js +28 -0
- package/build/src/export/getPublicExpoManifest.js.map +1 -0
- package/build/src/export/getResolvedLocales.js +35 -0
- package/build/src/export/getResolvedLocales.js.map +1 -0
- package/build/src/export/html.js +21 -0
- package/build/src/export/html.js.map +1 -0
- package/build/src/export/index.js +91 -0
- package/build/src/export/index.js.map +1 -0
- package/build/src/export/metroAssetLocalPath.js +101 -0
- package/build/src/export/metroAssetLocalPath.js.map +1 -0
- package/build/src/export/persistMetroAssets.js +190 -0
- package/build/src/export/persistMetroAssets.js.map +1 -0
- package/build/src/export/publicFolder.js +34 -0
- package/build/src/export/publicFolder.js.map +1 -0
- package/build/src/export/resolveOptions.js +63 -0
- package/build/src/export/resolveOptions.js.map +1 -0
- package/build/src/export/saveAssets.js +189 -0
- package/build/src/export/saveAssets.js.map +1 -0
- package/build/src/export/web/exportWebAsync.js +40 -0
- package/build/src/export/web/exportWebAsync.js.map +1 -0
- package/build/src/export/web/index.js +66 -0
- package/build/src/export/web/index.js.map +1 -0
- package/build/src/export/web/resolveOptions.js +13 -0
- package/build/src/export/web/resolveOptions.js.map +1 -0
- package/build/src/export/writeContents.js +26 -0
- package/build/src/export/writeContents.js.map +1 -0
- package/build/src/graphql/generated.js +486 -0
- package/build/src/graphql/generated.js.map +1 -0
- package/build/src/install/applyPlugins.js +52 -0
- package/build/src/install/applyPlugins.js.map +1 -0
- package/build/src/install/checkPackages.js +78 -0
- package/build/src/install/checkPackages.js.map +1 -0
- package/build/src/install/fixPackages.js +84 -0
- package/build/src/install/fixPackages.js.map +1 -0
- package/build/src/install/index.js +51 -0
- package/build/src/install/index.js.map +1 -0
- package/build/src/install/installAsync.js +134 -0
- package/build/src/install/installAsync.js.map +1 -0
- package/build/src/install/installExpoPackage.js +79 -0
- package/build/src/install/installExpoPackage.js.map +1 -0
- package/build/src/install/resolveOptions.js +53 -0
- package/build/src/install/resolveOptions.js.map +1 -0
- package/build/src/install/utils/autoAddConfigPlugins.js +66 -0
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
- package/build/src/log.js +74 -0
- package/build/src/log.js.map +1 -0
- package/build/src/login/index.js +67 -0
- package/build/src/login/index.js.map +1 -0
- package/build/src/logout/index.js +48 -0
- package/build/src/logout/index.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +143 -0
- package/build/src/prebuild/clearNativeFolder.js.map +1 -0
- package/build/src/prebuild/configureProjectAsync.js +64 -0
- package/build/src/prebuild/configureProjectAsync.js.map +1 -0
- package/build/src/prebuild/copyTemplateFiles.js +67 -0
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
- package/build/src/prebuild/ensureConfigAsync.js +75 -0
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
- package/build/src/prebuild/index.js +98 -0
- package/build/src/prebuild/index.js.map +1 -0
- package/build/src/prebuild/prebuildAsync.js +146 -0
- package/build/src/prebuild/prebuildAsync.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +115 -0
- package/build/src/prebuild/resolveOptions.js.map +1 -0
- package/build/src/prebuild/resolveTemplate.js +163 -0
- package/build/src/prebuild/resolveTemplate.js.map +1 -0
- package/build/src/prebuild/updateFromTemplate.js +103 -0
- package/build/src/prebuild/updateFromTemplate.js.map +1 -0
- package/build/src/prebuild/updatePackageJson.js +227 -0
- package/build/src/prebuild/updatePackageJson.js.map +1 -0
- package/build/src/prebuild/validateTemplatePlatforms.js +48 -0
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -0
- package/build/src/register/index.js +48 -0
- package/build/src/register/index.js.map +1 -0
- package/build/src/register/registerAsync.js +34 -0
- package/build/src/register/registerAsync.js.map +1 -0
- package/build/src/run/android/index.js +97 -0
- package/build/src/run/android/index.js.map +1 -0
- package/build/src/run/android/resolveDevice.js +23 -0
- package/build/src/run/android/resolveDevice.js.map +1 -0
- package/build/src/run/android/resolveGradleProps.js +37 -0
- package/build/src/run/android/resolveGradleProps.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +51 -0
- package/build/src/run/android/resolveInstallApkName.js.map +1 -0
- package/build/src/run/android/resolveLaunchProps.js +32 -0
- package/build/src/run/android/resolveLaunchProps.js.map +1 -0
- package/build/src/run/android/resolveOptions.js +25 -0
- package/build/src/run/android/resolveOptions.js.map +1 -0
- package/build/src/run/android/runAndroidAsync.js +83 -0
- package/build/src/run/android/runAndroidAsync.js.map +1 -0
- package/build/src/run/ensureNativeProject.js +36 -0
- package/build/src/run/ensureNativeProject.js.map +1 -0
- package/build/src/run/hints.js +22 -0
- package/build/src/run/hints.js.map +1 -0
- package/build/src/run/ios/XcodeBuild.js +276 -0
- package/build/src/run/ios/XcodeBuild.js.map +1 -0
- package/build/src/run/ios/XcodeBuild.types.js +6 -0
- package/build/src/run/ios/XcodeBuild.types.js.map +1 -0
- package/build/src/run/ios/appleDevice/AppleDevice.js +195 -0
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -0
- package/build/src/run/ios/appleDevice/ClientManager.js +165 -0
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/AFCClient.js +195 -0
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +107 -0
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +97 -0
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +144 -0
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +91 -0
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +21 -0
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +117 -0
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +90 -0
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +332 -0
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +133 -0
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +126 -0
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +74 -0
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +65 -0
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -0
- package/build/src/run/ios/codeSigning/Security.js +85 -0
- package/build/src/run/ios/codeSigning/Security.js.map +1 -0
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +77 -0
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -0
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +102 -0
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -0
- package/build/src/run/ios/codeSigning/settings.js +21 -0
- package/build/src/run/ios/codeSigning/settings.js.map +1 -0
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +45 -0
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +79 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -0
- package/build/src/run/ios/index.js +98 -0
- package/build/src/run/ios/index.js.map +1 -0
- package/build/src/run/ios/launchApp.js +75 -0
- package/build/src/run/ios/launchApp.js.map +1 -0
- package/build/src/run/ios/options/promptDevice.js +50 -0
- package/build/src/run/ios/options/promptDevice.js.map +1 -0
- package/build/src/run/ios/options/resolveDevice.js +92 -0
- package/build/src/run/ios/options/resolveDevice.js.map +1 -0
- package/build/src/run/ios/options/resolveNativeScheme.js +101 -0
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -0
- package/build/src/run/ios/options/resolveOptions.js +44 -0
- package/build/src/run/ios/options/resolveOptions.js.map +1 -0
- package/build/src/run/ios/options/resolveXcodeProject.js +39 -0
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -0
- package/build/src/run/ios/runIosAsync.js +93 -0
- package/build/src/run/ios/runIosAsync.js.map +1 -0
- package/build/src/run/resolveBundlerProps.js +34 -0
- package/build/src/run/resolveBundlerProps.js.map +1 -0
- package/build/src/run/startBundler.js +82 -0
- package/build/src/run/startBundler.js.map +1 -0
- package/build/src/start/doctor/Prerequisite.js +47 -0
- package/build/src/start/doctor/Prerequisite.js.map +1 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js +27 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +70 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +69 -0
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js +158 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +69 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js +74 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +136 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +195 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js +169 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js +22 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +165 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js +99 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +111 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
- package/build/src/start/index.js +123 -0
- package/build/src/start/index.js.map +1 -0
- package/build/src/start/interface/KeyPressHandler.js +101 -0
- package/build/src/start/interface/KeyPressHandler.js.map +1 -0
- package/build/src/start/interface/commandsTable.js +195 -0
- package/build/src/start/interface/commandsTable.js.map +1 -0
- package/build/src/start/interface/interactiveActions.js +194 -0
- package/build/src/start/interface/interactiveActions.js.map +1 -0
- package/build/src/start/interface/startInterface.js +227 -0
- package/build/src/start/interface/startInterface.js.map +1 -0
- package/build/src/start/platforms/AppIdResolver.js +44 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -0
- package/build/src/start/platforms/DeviceManager.js +43 -0
- package/build/src/start/platforms/DeviceManager.js.map +1 -0
- package/build/src/start/platforms/ExpoGoInstaller.js +127 -0
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
- package/build/src/start/platforms/PlatformManager.js +131 -0
- package/build/src/start/platforms/PlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/ADBServer.js +114 -0
- package/build/src/start/platforms/android/ADBServer.js.map +1 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +44 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidSdk.js +41 -0
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -0
- package/build/src/start/platforms/android/activateWindow.js +80 -0
- package/build/src/start/platforms/android/activateWindow.js.map +1 -0
- package/build/src/start/platforms/android/adb.js +269 -0
- package/build/src/start/platforms/android/adb.js.map +1 -0
- package/build/src/start/platforms/android/adbReverse.js +95 -0
- package/build/src/start/platforms/android/adbReverse.js.map +1 -0
- package/build/src/start/platforms/android/emulator.js +126 -0
- package/build/src/start/platforms/android/emulator.js.map +1 -0
- package/build/src/start/platforms/android/getDevices.js +36 -0
- package/build/src/start/platforms/android/getDevices.js.map +1 -0
- package/build/src/start/platforms/android/gradle.js +86 -0
- package/build/src/start/platforms/android/gradle.js.map +1 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js +56 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +53 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js +216 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
- package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js +56 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
- package/build/src/start/platforms/ios/simctl.js +243 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -0
- package/build/src/start/platforms/ios/simctlLogging.js +220 -0
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -0
- package/build/src/start/platforms/ios/xcrun.js +46 -0
- package/build/src/start/platforms/ios/xcrun.js.map +1 -0
- package/build/src/start/project/devices.js +79 -0
- package/build/src/start/project/devices.js.map +1 -0
- package/build/src/start/project/dotExpo.js +74 -0
- package/build/src/start/project/dotExpo.js.map +1 -0
- package/build/src/start/project/settings.js +13 -0
- package/build/src/start/project/settings.js.map +1 -0
- package/build/src/start/resolveOptions.js +135 -0
- package/build/src/start/resolveOptions.js.map +1 -0
- package/build/src/start/server/AsyncNgrok.js +220 -0
- package/build/src/start/server/AsyncNgrok.js.map +1 -0
- package/build/src/start/server/BundlerDevServer.js +356 -0
- package/build/src/start/server/BundlerDevServer.js.map +1 -0
- package/build/src/start/server/DevServerManager.js +214 -0
- package/build/src/start/server/DevServerManager.js.map +1 -0
- package/build/src/start/server/DevToolsPluginManager.js +63 -0
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +114 -0
- package/build/src/start/server/DevelopmentSession.js.map +1 -0
- package/build/src/start/server/ReactDevToolsProxy.js +73 -0
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -0
- package/build/src/start/server/UrlCreator.js +175 -0
- package/build/src/start/server/UrlCreator.js.map +1 -0
- package/build/src/start/server/getStaticRenderFunctions.js +164 -0
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js +485 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js +165 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.js +92 -0
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
- package/build/src/start/server/metro/bundleApiRoutes.js +52 -0
- package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -0
- package/build/src/start/server/metro/createExpoMetroResolver.js +187 -0
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -0
- package/build/src/start/server/metro/createJResolver.js +149 -0
- package/build/src/start/server/metro/createJResolver.js.map +1 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js +124 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -0
- package/build/src/start/server/metro/externals.js +94 -0
- package/build/src/start/server/metro/externals.js.map +1 -0
- package/build/src/start/server/metro/fetchRouterManifest.js +60 -0
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -0
- package/build/src/start/server/metro/formatFileCandidates.js +72 -0
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -0
- package/build/src/start/server/metro/getCssModulesFromBundler.js +77 -0
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/device.js +110 -0
- package/build/src/start/server/metro/inspector-proxy/device.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js +29 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js +22 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js +21 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js +55 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js +17 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js +24 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js +39 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js +6 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/utils.js +11 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/utils.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/index.js +24 -0
- package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/proxy.js +169 -0
- package/build/src/start/server/metro/inspector-proxy/proxy.js.map +1 -0
- package/build/src/start/server/metro/instantiateMetro.js +194 -0
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
- package/build/src/start/server/metro/metroErrorInterface.js +198 -0
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -0
- package/build/src/start/server/metro/metroErrors.js +14 -0
- package/build/src/start/server/metro/metroErrors.js.map +1 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +51 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -0
- package/build/src/start/server/metro/router.js +83 -0
- package/build/src/start/server/metro/router.js.map +1 -0
- package/build/src/start/server/metro/runServer-fork.js +96 -0
- package/build/src/start/server/metro/runServer-fork.js.map +1 -0
- package/build/src/start/server/metro/serializeHtml.js +43 -0
- package/build/src/start/server/metro/serializeHtml.js.map +1 -0
- package/build/src/start/server/metro/symbolicate.js +6 -0
- package/build/src/start/server/metro/symbolicate.js.map +1 -0
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +91 -0
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -0
- package/build/src/start/server/metro/withMetroMultiPlatform.js +402 -0
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -0
- package/build/src/start/server/metro/withMetroResolvers.js +272 -0
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -0
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +27 -0
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/CreateFileMiddleware.js +106 -0
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +61 -0
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +236 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +83 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/FaviconMiddleware.js +42 -0
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +24 -0
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +81 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js +300 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +35 -0
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +75 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +62 -0
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -0
- 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 +61 -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 +82 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +79 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +124 -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/metroOptions.js +128 -0
- package/build/src/start/server/middleware/metroOptions.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 +110 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
- package/build/src/start/server/middleware/resolvePlatform.js +47 -0
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
- package/build/src/start/server/middleware/server.types.js +6 -0
- package/build/src/start/server/middleware/server.types.js.map +1 -0
- package/build/src/start/server/middleware/suppressErrorMiddleware.js +16 -0
- package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -0
- package/build/src/start/server/openPlatforms.js +30 -0
- package/build/src/start/server/openPlatforms.js.map +1 -0
- package/build/src/start/server/platformBundlers.js +18 -0
- package/build/src/start/server/platformBundlers.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +38 -0
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +38 -0
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/route.test.js +176 -0
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +1 -0
- package/build/src/start/server/type-generation/expo-env.js +27 -0
- package/build/src/start/server/type-generation/expo-env.js.map +1 -0
- package/build/src/start/server/type-generation/routes.js +474 -0
- package/build/src/start/server/type-generation/routes.js.map +1 -0
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +56 -0
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -0
- package/build/src/start/server/type-generation/tsconfig.js +89 -0
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -0
- package/build/src/start/server/webTemplate.js +84 -0
- package/build/src/start/server/webTemplate.js.map +1 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +266 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
- package/build/src/start/server/webpack/compile.js +64 -0
- package/build/src/start/server/webpack/compile.js.map +1 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
- package/build/src/start/server/webpack/resolveFromProject.js +43 -0
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
- package/build/src/start/server/webpack/tls.js +72 -0
- package/build/src/start/server/webpack/tls.js.map +1 -0
- package/build/src/start/startAsync.js +154 -0
- package/build/src/start/startAsync.js.map +1 -0
- package/build/src/utils/FileNotifier.js +90 -0
- package/build/src/utils/FileNotifier.js.map +1 -0
- package/build/src/utils/analytics/getDevClientProperties.js +47 -0
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
- package/build/src/utils/analytics/getMetroDebugProperties.js +15 -0
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -0
- package/build/src/utils/analytics/getMetroProperties.js +28 -0
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -0
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +55 -0
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -0
- package/build/src/utils/analytics/rudderstackClient.js +147 -0
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
- package/build/src/utils/ansi.js +17 -0
- package/build/src/utils/ansi.js.map +1 -0
- package/build/src/utils/args.js +79 -0
- package/build/src/utils/args.js.map +1 -0
- package/build/src/utils/array.js +67 -0
- package/build/src/utils/array.js.map +1 -0
- package/build/src/utils/cocoapods.js +191 -0
- package/build/src/utils/cocoapods.js.map +1 -0
- package/build/src/utils/codesigning.js +311 -0
- package/build/src/utils/codesigning.js.map +1 -0
- package/build/src/utils/createFileTransform.js +89 -0
- package/build/src/utils/createFileTransform.js.map +1 -0
- package/build/src/utils/delay.js +39 -0
- package/build/src/utils/delay.js.map +1 -0
- package/build/src/utils/dir.js +63 -0
- package/build/src/utils/dir.js.map +1 -0
- package/build/src/utils/downloadAppAsync.js +73 -0
- package/build/src/utils/downloadAppAsync.js.map +1 -0
- package/build/src/utils/downloadExpoGoAsync.js +116 -0
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
- package/build/src/utils/editor.js +69 -0
- package/build/src/utils/editor.js.map +1 -0
- package/build/src/utils/env.js +131 -0
- package/build/src/utils/env.js.map +1 -0
- package/build/src/utils/errors.js +70 -0
- package/build/src/utils/errors.js.map +1 -0
- package/build/src/utils/exit.js +69 -0
- package/build/src/utils/exit.js.map +1 -0
- package/build/src/utils/findUp.js +33 -0
- package/build/src/utils/findUp.js.map +1 -0
- package/build/src/utils/fn.js +32 -0
- package/build/src/utils/fn.js.map +1 -0
- package/build/src/utils/getOrPromptApplicationId.js +181 -0
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
- package/build/src/utils/getRunningProcess.js +96 -0
- package/build/src/utils/getRunningProcess.js.map +1 -0
- package/build/src/utils/git.js +89 -0
- package/build/src/utils/git.js.map +1 -0
- package/build/src/utils/glob.js +65 -0
- package/build/src/utils/glob.js.map +1 -0
- package/build/src/utils/interactive.js +11 -0
- package/build/src/utils/interactive.js.map +1 -0
- package/build/src/utils/ip.js +16 -0
- package/build/src/utils/ip.js.map +1 -0
- package/build/src/utils/isModuleSymlinked.js +37 -0
- package/build/src/utils/isModuleSymlinked.js.map +1 -0
- package/build/src/utils/link.js +31 -0
- package/build/src/utils/link.js.map +1 -0
- package/build/src/utils/mergeGitIgnorePaths.js +154 -0
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
- package/build/src/utils/modifyConfigAsync.js +68 -0
- package/build/src/utils/modifyConfigAsync.js.map +1 -0
- package/build/src/utils/modifyConfigPlugins.js +51 -0
- package/build/src/utils/modifyConfigPlugins.js.map +1 -0
- package/build/src/utils/nodeEnv.js +11 -0
- package/build/src/utils/nodeEnv.js.map +1 -0
- package/build/src/utils/nodeModules.js +29 -0
- package/build/src/utils/nodeModules.js.map +1 -0
- package/build/src/utils/npm.js +116 -0
- package/build/src/utils/npm.js.map +1 -0
- package/build/src/utils/obj.js +45 -0
- package/build/src/utils/obj.js.map +1 -0
- package/build/src/utils/open.js +26 -0
- package/build/src/utils/open.js.map +1 -0
- package/build/src/utils/ora.js +91 -0
- package/build/src/utils/ora.js.map +1 -0
- package/build/src/utils/plist.js +59 -0
- package/build/src/utils/plist.js.map +1 -0
- package/build/src/utils/port.js +160 -0
- package/build/src/utils/port.js.map +1 -0
- package/build/src/utils/profile.js +63 -0
- package/build/src/utils/profile.js.map +1 -0
- package/build/src/utils/progress.js +61 -0
- package/build/src/utils/progress.js.map +1 -0
- package/build/src/utils/prompts.js +116 -0
- package/build/src/utils/prompts.js.map +1 -0
- package/build/src/utils/resolveArgs.js +140 -0
- package/build/src/utils/resolveArgs.js.map +1 -0
- package/build/src/utils/scheme.js +128 -0
- package/build/src/utils/scheme.js.map +1 -0
- package/build/src/utils/strings.js +24 -0
- package/build/src/utils/strings.js.map +1 -0
- package/build/src/utils/tar.js +62 -0
- package/build/src/utils/tar.js.map +1 -0
- package/build/src/utils/template.js +21 -0
- package/build/src/utils/template.js.map +1 -0
- package/build/src/utils/terminal.js +10 -0
- package/build/src/utils/terminal.js.map +1 -0
- package/build/src/utils/tsconfig/evaluateTsConfig.js +61 -0
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -0
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +61 -0
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -0
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +88 -0
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -0
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +51 -0
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -0
- package/build/src/utils/url.js +67 -0
- package/build/src/utils/url.js.map +1 -0
- package/build/src/utils/validateApplicationId.js +179 -0
- package/build/src/utils/validateApplicationId.js.map +1 -0
- package/build/src/utils/variadic.js +65 -0
- package/build/src/utils/variadic.js.map +1 -0
- package/build/src/whoami/index.js +47 -0
- package/build/src/whoami/index.js.map +1 -0
- package/build/src/whoami/whoamiAsync.js +44 -0
- package/build/src/whoami/whoamiAsync.js.map +1 -0
- package/package.json +163 -0
- package/static/loading-page/index.html +363 -0
- package/static/react-devtools-page/index.html +144 -0
- package/static/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
- package/static/shims/react-native-web/dist/cjs/exports/BackHandler/index.js +10 -0
- package/static/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
- package/static/shims/react-native-web/dist/exports/BackHandler/index.js +7 -0
- package/static/template/babel.config.js +6 -0
- package/static/template/index.html +36 -0
- package/static/template/metro.config.js +7 -0
- package/static/template/serve.json +13 -0
- package/static/template/webpack.config.js +7 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.onMessage = onMessage;
|
|
6
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
7
|
+
var _childProcess = require("child_process");
|
|
8
|
+
var _os = require("os");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _wrapAnsi = _interopRequireDefault(require("wrap-ansi"));
|
|
11
|
+
var _simctl = require("./simctl");
|
|
12
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
13
|
+
var _errors = require("../../../utils/errors");
|
|
14
|
+
var _exit = require("../../../utils/exit");
|
|
15
|
+
function _interopRequireDefault(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function _interopRequireWildcard(obj) {
|
|
21
|
+
if (obj && obj.__esModule) {
|
|
22
|
+
return obj;
|
|
23
|
+
} else {
|
|
24
|
+
var newObj = {};
|
|
25
|
+
if (obj != null) {
|
|
26
|
+
for(var key in obj){
|
|
27
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
28
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
29
|
+
if (desc.get || desc.set) {
|
|
30
|
+
Object.defineProperty(newObj, key, desc);
|
|
31
|
+
} else {
|
|
32
|
+
newObj[key] = obj[key];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
newObj.default = obj;
|
|
38
|
+
return newObj;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
class SimulatorLogStreamer {
|
|
42
|
+
static cache = [];
|
|
43
|
+
static getStreamer = (device, resolver)=>{
|
|
44
|
+
var ref;
|
|
45
|
+
return (ref = SimulatorLogStreamer.cache.find((streamer)=>streamer.device.udid === device.udid
|
|
46
|
+
)) != null ? ref : new SimulatorLogStreamer(device, resolver);
|
|
47
|
+
};
|
|
48
|
+
constructor(device, resolver){
|
|
49
|
+
this.device = device;
|
|
50
|
+
this.resolver = resolver;
|
|
51
|
+
this.childProcess = null;
|
|
52
|
+
this.off = null;
|
|
53
|
+
}
|
|
54
|
+
isAttached() {
|
|
55
|
+
return !!this.childProcess;
|
|
56
|
+
}
|
|
57
|
+
async resolvePidAsync() {
|
|
58
|
+
if ("pid" in this.resolver) {
|
|
59
|
+
return this.resolver.pid;
|
|
60
|
+
}
|
|
61
|
+
return getImageNameFromBundleIdentifierAsync(this.device.udid, this.resolver.appId);
|
|
62
|
+
}
|
|
63
|
+
async attachAsync() {
|
|
64
|
+
await this.detachAsync();
|
|
65
|
+
const pid = await this.resolvePidAsync();
|
|
66
|
+
if (!pid) {
|
|
67
|
+
throw new _errors.CommandError(`Could not find pid for ${this.device.udid}`);
|
|
68
|
+
}
|
|
69
|
+
// xcrun simctl spawn booted log stream --process --style json
|
|
70
|
+
this.childProcess = (0, _childProcess).spawn("xcrun", [
|
|
71
|
+
"simctl",
|
|
72
|
+
"spawn",
|
|
73
|
+
this.device.udid,
|
|
74
|
+
"log",
|
|
75
|
+
"stream",
|
|
76
|
+
"--process",
|
|
77
|
+
pid,
|
|
78
|
+
// ndjson provides a better format than json.
|
|
79
|
+
"--style",
|
|
80
|
+
"ndjson",
|
|
81
|
+
// Provide the source so we can filter logs better
|
|
82
|
+
"--source",
|
|
83
|
+
// log, activity, trace -- activity was related to layouts, trace didn't work, so that leaves log.
|
|
84
|
+
// Passing nothing combines all three, but we don't use activity.
|
|
85
|
+
"--type",
|
|
86
|
+
"log",
|
|
87
|
+
// backtrace doesn't seem very useful in basic cases.
|
|
88
|
+
// TODO: Maybe we can format as a stack trace for native errors.
|
|
89
|
+
"--no-backtrace",
|
|
90
|
+
]);
|
|
91
|
+
this.childProcess.stdout.on("data", (data)=>{
|
|
92
|
+
// Sometimes more than one chunk comes at a time, here we split by system newline,
|
|
93
|
+
// then trim and filter.
|
|
94
|
+
const strings = data.toString().split(_os.EOL).map((value)=>value.trim()
|
|
95
|
+
)// This filters out the first log which says something like:
|
|
96
|
+
// Filtering the log data using "process BEGINSWITH[cd] "my-app" AND type == 1024"
|
|
97
|
+
.filter((value)=>value.startsWith("{")
|
|
98
|
+
);
|
|
99
|
+
strings.forEach((str)=>{
|
|
100
|
+
const simLog = parseMessageJson(str);
|
|
101
|
+
if (!simLog) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
onMessage(simLog);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
this.childProcess.on("error", ({ message })=>{
|
|
108
|
+
Log.debug("[simctl error]:", message);
|
|
109
|
+
});
|
|
110
|
+
this.off = (0, _exit).installExitHooks(()=>{
|
|
111
|
+
this.detachAsync.bind(this);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
detachAsync() {
|
|
115
|
+
var _obj, ref2;
|
|
116
|
+
(ref2 = (_obj = this).off) == null ? void 0 : ref2.call(_obj);
|
|
117
|
+
this.off = null;
|
|
118
|
+
if (this.childProcess) {
|
|
119
|
+
return new Promise((resolve)=>{
|
|
120
|
+
var ref, ref1;
|
|
121
|
+
(ref = this.childProcess) == null ? void 0 : ref.on("close", resolve);
|
|
122
|
+
(ref1 = this.childProcess) == null ? void 0 : ref1.kill();
|
|
123
|
+
this.childProcess = null;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return Promise.resolve();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.SimulatorLogStreamer = SimulatorLogStreamer;
|
|
130
|
+
function parseMessageJson(data) {
|
|
131
|
+
const stringData = data.toString();
|
|
132
|
+
try {
|
|
133
|
+
return JSON.parse(stringData);
|
|
134
|
+
} catch {
|
|
135
|
+
Log.debug("Failed to parse simctl JSON message:\n" + stringData);
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
// There are a lot of networking logs in RN that aren't relevant to the user.
|
|
140
|
+
function isNetworkLog(simLog) {
|
|
141
|
+
var ref;
|
|
142
|
+
return simLog.subsystem === "com.apple.network" || simLog.category === "connection" || ((ref = simLog.source) == null ? void 0 : ref.image) === "CFNetwork";
|
|
143
|
+
}
|
|
144
|
+
function isReactLog(simLog) {
|
|
145
|
+
var ref;
|
|
146
|
+
return simLog.subsystem === "com.facebook.react.log" && ((ref = simLog.source) == null ? void 0 : ref.file) === "RCTLog.mm";
|
|
147
|
+
}
|
|
148
|
+
// It's not clear what these are but they aren't very useful.
|
|
149
|
+
// (The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated)
|
|
150
|
+
// We can add them later if need.
|
|
151
|
+
function isCoreTelephonyLog(simLog) {
|
|
152
|
+
// [CoreTelephony] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099
|
|
153
|
+
// "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
|
|
154
|
+
return simLog.subsystem === "com.apple.CoreTelephony";
|
|
155
|
+
}
|
|
156
|
+
// https://stackoverflow.com/a/65313219/4047926
|
|
157
|
+
function isWebKitLog(simLog) {
|
|
158
|
+
// [WebKit] 0x1143ca500 - ProcessAssertion: Failed to acquire RBS Background assertion 'WebProcess Background Assertion' for process with PID 27084, error: Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target
|
|
159
|
+
// entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"Background" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}
|
|
160
|
+
return simLog.subsystem === "com.apple.WebKit";
|
|
161
|
+
}
|
|
162
|
+
// Similar to WebKit logs
|
|
163
|
+
function isRunningBoardServicesLog(simLog) {
|
|
164
|
+
// [RunningBoardServices] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit"
|
|
165
|
+
// name:"Background" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>
|
|
166
|
+
return simLog.subsystem === "com.apple.runningboard";
|
|
167
|
+
}
|
|
168
|
+
function formatMessage(simLog) {
|
|
169
|
+
var ref;
|
|
170
|
+
var ref3;
|
|
171
|
+
// TODO: Maybe change "TCC" to "Consent" or "System".
|
|
172
|
+
const category = _chalk.default.gray(`[${(ref3 = (ref = simLog.source) == null ? void 0 : ref.image) != null ? ref3 : simLog.subsystem}]`);
|
|
173
|
+
const message = simLog.eventMessage;
|
|
174
|
+
return (0, _wrapAnsi).default(category + " " + message, process.stdout.columns || 80);
|
|
175
|
+
}
|
|
176
|
+
function onMessage(simLog) {
|
|
177
|
+
let hasLogged = false;
|
|
178
|
+
if (simLog.messageType === "Error") {
|
|
179
|
+
if (// Hide all networking errors which are mostly useless.
|
|
180
|
+
!isNetworkLog(simLog) && // Showing React errors will result in duplicate messages.
|
|
181
|
+
!isReactLog(simLog) && !isCoreTelephonyLog(simLog) && !isWebKitLog(simLog) && !isRunningBoardServicesLog(simLog)) {
|
|
182
|
+
hasLogged = true;
|
|
183
|
+
// Sim: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
|
|
184
|
+
Log.error(formatMessage(simLog));
|
|
185
|
+
}
|
|
186
|
+
} else if (simLog.eventMessage) {
|
|
187
|
+
var ref;
|
|
188
|
+
// If the source has a file (i.e. not a system log).
|
|
189
|
+
if (((ref = simLog.source) == null ? void 0 : ref.file) || simLog.eventMessage.includes("Terminating app due to uncaught exception")) {
|
|
190
|
+
hasLogged = true;
|
|
191
|
+
Log.log(formatMessage(simLog));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (!hasLogged) {
|
|
195
|
+
Log.debug(formatMessage(simLog));
|
|
196
|
+
} else {
|
|
197
|
+
// console.log('DATA:', JSON.stringify(simLog));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
*
|
|
202
|
+
* @param udid
|
|
203
|
+
* @param bundleIdentifier
|
|
204
|
+
* @returns Image name like `Exponent` and `null` when the app is not installed on the provided simulator.
|
|
205
|
+
*/ async function getImageNameFromBundleIdentifierAsync(udid, bundleIdentifier) {
|
|
206
|
+
const containerPath = await (0, _simctl).getContainerPathAsync({
|
|
207
|
+
udid
|
|
208
|
+
}, {
|
|
209
|
+
appId: bundleIdentifier
|
|
210
|
+
});
|
|
211
|
+
if (containerPath) {
|
|
212
|
+
return getImageNameFromContainerPath(containerPath);
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
function getImageNameFromContainerPath(binaryPath) {
|
|
217
|
+
return _path.default.basename(binaryPath).split(".")[0];
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
//# sourceMappingURL=simctlLogging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/ios/simctlLogging.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { ChildProcessWithoutNullStreams, spawn } from 'child_process';\nimport { EOL } from 'os';\nimport path from 'path';\nimport wrapAnsi from 'wrap-ansi';\n\nimport { Device, getContainerPathAsync } from './simctl';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { installExitHooks } from '../../../utils/exit';\n\nexport type SimControlLog = {\n /**\n * 258753568922927108\n */\n traceID: number;\n /**\n *\n * \"Connection 1: done\",\n */\n eventMessage: string;\n /**\n * \"logEvent\" | \"activityCreateEvent\",\n */\n eventType: 'logEvent' | 'activityCreateEvent';\n source: null | {\n /**\n * 'RCTDefaultLogFunction_block_invoke' | '__TCC_CRASHING_DUE_TO_PRIVACY_VIOLATION__'\n */\n symbol: string;\n line: number;\n /**\n * 'TCC' | 'Security' | 'CFNetwork' | 'libnetwork.dylib' | 'myapp'\n *\n * TCC is apple sys, it means \"Transparency, Consent, and Control\"\n */\n image: string;\n /**\n * 'RCTLog.mm' | ''\n */\n file: string;\n };\n /**\n * \"Connection %llu: done\"\n */\n formatString: string;\n /**\n * 0\n */\n activityIdentifier: number;\n subsystem:\n | ''\n | 'com.apple.network'\n | 'com.facebook.react.log'\n | 'com.apple.TCC'\n | 'com.apple.CoreTelephony'\n | 'com.apple.WebKit'\n | 'com.apple.runningboard'\n | string;\n category: '' | 'access' | 'connection' | 'plugin';\n /**\n * \"2021-03-15 15:36:28.004331-0700\"\n */\n timestamp: string;\n /**\n * 706567072091713\n */\n machTimestamp: number;\n /**\n * \"Default\"\n */\n messageType: 'Default' | 'Error';\n /**\n * 15192\n */\n processID: number;\n};\n\ntype ProcessResolver =\n | {\n pid: string;\n }\n | {\n appId: string;\n };\n\nexport class SimulatorLogStreamer {\n private childProcess: ChildProcessWithoutNullStreams | null = null;\n\n static cache: SimulatorLogStreamer[] = [];\n\n static getStreamer = (device: Pick<Device, 'udid'>, resolver: ProcessResolver) => {\n return (\n SimulatorLogStreamer.cache.find((streamer) => streamer.device.udid === device.udid) ??\n new SimulatorLogStreamer(device, resolver)\n );\n };\n\n constructor(\n public device: Pick<Device, 'udid'>,\n public resolver: ProcessResolver\n ) {}\n\n isAttached() {\n return !!this.childProcess;\n }\n\n async resolvePidAsync() {\n if ('pid' in this.resolver) {\n return this.resolver.pid;\n }\n return getImageNameFromBundleIdentifierAsync(this.device.udid, this.resolver.appId);\n }\n\n async attachAsync() {\n await this.detachAsync();\n\n const pid = await this.resolvePidAsync();\n\n if (!pid) {\n throw new CommandError(`Could not find pid for ${this.device.udid}`);\n }\n\n // xcrun simctl spawn booted log stream --process --style json\n this.childProcess = spawn('xcrun', [\n 'simctl',\n 'spawn',\n this.device.udid,\n 'log',\n 'stream',\n '--process',\n pid,\n // ndjson provides a better format than json.\n '--style',\n 'ndjson',\n // Provide the source so we can filter logs better\n '--source',\n // log, activity, trace -- activity was related to layouts, trace didn't work, so that leaves log.\n // Passing nothing combines all three, but we don't use activity.\n '--type',\n 'log',\n // backtrace doesn't seem very useful in basic cases.\n // TODO: Maybe we can format as a stack trace for native errors.\n '--no-backtrace',\n ]);\n\n this.childProcess.stdout.on('data', (data: Buffer) => {\n // Sometimes more than one chunk comes at a time, here we split by system newline,\n // then trim and filter.\n const strings = data\n .toString()\n .split(EOL)\n .map((value) => value.trim())\n // This filters out the first log which says something like:\n // Filtering the log data using \"process BEGINSWITH[cd] \"my-app\" AND type == 1024\"\n .filter((value) => value.startsWith('{'));\n\n strings.forEach((str) => {\n const simLog = parseMessageJson(str);\n if (!simLog) {\n return;\n }\n onMessage(simLog);\n });\n });\n\n this.childProcess.on('error', ({ message }) => {\n Log.debug('[simctl error]:', message);\n });\n\n this.off = installExitHooks(() => {\n this.detachAsync.bind(this);\n });\n }\n\n private off: (() => void) | null = null;\n\n detachAsync() {\n this.off?.();\n this.off = null;\n if (this.childProcess) {\n return new Promise<void>((resolve) => {\n this.childProcess?.on('close', resolve);\n this.childProcess?.kill();\n this.childProcess = null;\n });\n }\n return Promise.resolve();\n }\n}\n\nfunction parseMessageJson(data: string) {\n const stringData = data.toString();\n try {\n return JSON.parse(stringData) as SimControlLog;\n } catch {\n Log.debug('Failed to parse simctl JSON message:\\n' + stringData);\n }\n return null;\n}\n\n// There are a lot of networking logs in RN that aren't relevant to the user.\nfunction isNetworkLog(simLog: SimControlLog): boolean {\n return (\n simLog.subsystem === 'com.apple.network' ||\n simLog.category === 'connection' ||\n simLog.source?.image === 'CFNetwork'\n );\n}\n\nfunction isReactLog(simLog: SimControlLog): boolean {\n return simLog.subsystem === 'com.facebook.react.log' && simLog.source?.file === 'RCTLog.mm';\n}\n\n// It's not clear what these are but they aren't very useful.\n// (The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated)\n// We can add them later if need.\nfunction isCoreTelephonyLog(simLog: SimControlLog): boolean {\n // [CoreTelephony] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099\n // \"The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.\" UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}\n return simLog.subsystem === 'com.apple.CoreTelephony';\n}\n\n// https://stackoverflow.com/a/65313219/4047926\nfunction isWebKitLog(simLog: SimControlLog): boolean {\n // [WebKit] 0x1143ca500 - ProcessAssertion: Failed to acquire RBS Background assertion 'WebProcess Background Assertion' for process with PID 27084, error: Error Domain=RBSAssertionErrorDomain Code=3 \"Target is not running or required target\n // entitlement is missing\" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:\"com.apple.webkit\" name:\"Background\" sourceEnvironment:\"(null)\">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}\n return simLog.subsystem === 'com.apple.WebKit';\n}\n\n// Similar to WebKit logs\nfunction isRunningBoardServicesLog(simLog: SimControlLog): boolean {\n // [RunningBoardServices] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 \"Target is not running or required target entitlement is missing\" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:\"com.apple.webkit\"\n // name:\"Background\" sourceEnvironment:\"(null)\">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>\n return simLog.subsystem === 'com.apple.runningboard';\n}\n\nfunction formatMessage(simLog: SimControlLog): string {\n // TODO: Maybe change \"TCC\" to \"Consent\" or \"System\".\n const category = chalk.gray(`[${simLog.source?.image ?? simLog.subsystem}]`);\n const message = simLog.eventMessage;\n return wrapAnsi(category + ' ' + message, process.stdout.columns || 80);\n}\n\nexport function onMessage(simLog: SimControlLog) {\n let hasLogged = false;\n\n if (simLog.messageType === 'Error') {\n if (\n // Hide all networking errors which are mostly useless.\n !isNetworkLog(simLog) &&\n // Showing React errors will result in duplicate messages.\n !isReactLog(simLog) &&\n !isCoreTelephonyLog(simLog) &&\n !isWebKitLog(simLog) &&\n !isRunningBoardServicesLog(simLog)\n ) {\n hasLogged = true;\n // Sim: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.\n Log.error(formatMessage(simLog));\n }\n } else if (simLog.eventMessage) {\n // If the source has a file (i.e. not a system log).\n if (\n simLog.source?.file ||\n simLog.eventMessage.includes('Terminating app due to uncaught exception')\n ) {\n hasLogged = true;\n Log.log(formatMessage(simLog));\n }\n }\n\n if (!hasLogged) {\n Log.debug(formatMessage(simLog));\n } else {\n // console.log('DATA:', JSON.stringify(simLog));\n }\n}\n\n/**\n *\n * @param udid\n * @param bundleIdentifier\n * @returns Image name like `Exponent` and `null` when the app is not installed on the provided simulator.\n */\nasync function getImageNameFromBundleIdentifierAsync(\n udid: string,\n bundleIdentifier: string\n): Promise<string | null> {\n const containerPath = await getContainerPathAsync({ udid }, { appId: bundleIdentifier });\n\n if (containerPath) {\n return getImageNameFromContainerPath(containerPath);\n }\n return null;\n}\n\nfunction getImageNameFromContainerPath(binaryPath: string): string {\n return path.basename(binaryPath).split('.')[0];\n}\n"],"names":["onMessage","Log","SimulatorLogStreamer","cache","getStreamer","device","resolver","find","streamer","udid","constructor","childProcess","off","isAttached","resolvePidAsync","pid","getImageNameFromBundleIdentifierAsync","appId","attachAsync","detachAsync","CommandError","spawn","stdout","on","data","strings","toString","split","EOL","map","value","trim","filter","startsWith","forEach","str","simLog","parseMessageJson","message","debug","installExitHooks","bind","Promise","resolve","kill","stringData","JSON","parse","isNetworkLog","subsystem","category","source","image","isReactLog","file","isCoreTelephonyLog","isWebKitLog","isRunningBoardServicesLog","formatMessage","chalk","gray","eventMessage","wrapAnsi","process","columns","hasLogged","messageType","error","includes","log","bundleIdentifier","containerPath","getContainerPathAsync","getImageNameFromContainerPath","binaryPath","path","basename"],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.xcrunAsync = xcrunAsync;
|
|
6
|
+
var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
|
|
7
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
|
+
var _errors = require("../../../utils/errors");
|
|
9
|
+
function _interopRequireDefault(obj) {
|
|
10
|
+
return obj && obj.__esModule ? obj : {
|
|
11
|
+
default: obj
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const debug = require("debug")("expo:start:platforms:ios:xcrun");
|
|
15
|
+
async function xcrunAsync(args, options) {
|
|
16
|
+
debug("Running: xcrun " + args.join(" "));
|
|
17
|
+
try {
|
|
18
|
+
return await (0, _spawnAsync).default("xcrun", args.filter(Boolean), options);
|
|
19
|
+
} catch (e) {
|
|
20
|
+
throwXcrunError(e);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function throwXcrunError(e) {
|
|
24
|
+
var ref;
|
|
25
|
+
if (isLicenseOutOfDate(e.stdout) || isLicenseOutOfDate(e.stderr)) {
|
|
26
|
+
throw new _errors.CommandError("XCODE_LICENSE_NOT_ACCEPTED", "Xcode license is not accepted. Please run `sudo xcodebuild -license`.");
|
|
27
|
+
} else if ((ref = e.stderr) == null ? void 0 : ref.includes("not a developer tool or in PATH")) {
|
|
28
|
+
throw new _errors.CommandError("SIMCTL_NOT_AVAILABLE", `You may need to run ${_chalk.default.bold("sudo xcode-select -s /Applications/Xcode.app")} and try again.`);
|
|
29
|
+
}
|
|
30
|
+
// Attempt to craft a better error message...
|
|
31
|
+
if (Array.isArray(e.output)) {
|
|
32
|
+
e.message += "\n" + e.output.join("\n").trim();
|
|
33
|
+
} else if (e.stderr) {
|
|
34
|
+
e.message += "\n" + e.stderr;
|
|
35
|
+
}
|
|
36
|
+
throw e;
|
|
37
|
+
}
|
|
38
|
+
function isLicenseOutOfDate(text) {
|
|
39
|
+
if (!text) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const lower = text.toLowerCase();
|
|
43
|
+
return lower.includes("xcode") && lower.includes("license");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=xcrun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/ios/xcrun.ts"],"sourcesContent":["import spawnAsync, { SpawnOptions } from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport { CommandError } from '../../../utils/errors';\n\nconst debug = require('debug')('expo:start:platforms:ios:xcrun') as typeof console.log;\n\nexport async function xcrunAsync(args: (string | undefined)[], options?: SpawnOptions) {\n debug('Running: xcrun ' + args.join(' '));\n try {\n return await spawnAsync('xcrun', args.filter(Boolean) as string[], options);\n } catch (e) {\n throwXcrunError(e);\n }\n}\n\nfunction throwXcrunError(e: any): never {\n if (isLicenseOutOfDate(e.stdout) || isLicenseOutOfDate(e.stderr)) {\n throw new CommandError(\n 'XCODE_LICENSE_NOT_ACCEPTED',\n 'Xcode license is not accepted. Please run `sudo xcodebuild -license`.'\n );\n } else if (e.stderr?.includes('not a developer tool or in PATH')) {\n throw new CommandError(\n 'SIMCTL_NOT_AVAILABLE',\n `You may need to run ${chalk.bold(\n 'sudo xcode-select -s /Applications/Xcode.app'\n )} and try again.`\n );\n }\n // Attempt to craft a better error message...\n if (Array.isArray(e.output)) {\n e.message += '\\n' + e.output.join('\\n').trim();\n } else if (e.stderr) {\n e.message += '\\n' + e.stderr;\n }\n throw e;\n}\n\nfunction isLicenseOutOfDate(text: string) {\n if (!text) {\n return false;\n }\n\n const lower = text.toLowerCase();\n return lower.includes('xcode') && lower.includes('license');\n}\n"],"names":["xcrunAsync","debug","require","args","options","join","spawnAsync","filter","Boolean","e","throwXcrunError","isLicenseOutOfDate","stdout","stderr","CommandError","includes","chalk","bold","Array","isArray","output","message","trim","text","lower","toLowerCase"],"mappings":"AAAA;;;;QAOsBA,UAAU,GAAVA,UAAU;AAPS,IAAA,WAAmB,kCAAnB,mBAAmB,EAAA;AAC1C,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEI,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;;;;;;AAEpD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,gCAAgC,CAAC,AAAsB,AAAC;AAEhF,eAAeF,UAAU,CAACG,IAA4B,EAAEC,OAAsB,EAAE;IACrFH,KAAK,CAAC,iBAAiB,GAAGE,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,IAAI;QACF,OAAO,MAAMC,CAAAA,GAAAA,WAAU,AAAoD,CAAA,QAApD,CAAC,OAAO,EAAEH,IAAI,CAACI,MAAM,CAACC,OAAO,CAAC,EAAcJ,OAAO,CAAC,CAAC;KAC7E,CAAC,OAAOK,CAAC,EAAE;QACVC,eAAe,CAACD,CAAC,CAAC,CAAC;KACpB;CACF;AAED,SAASC,eAAe,CAACD,CAAM,EAAS;QAM3BA,GAAQ;IALnB,IAAIE,kBAAkB,CAACF,CAAC,CAACG,MAAM,CAAC,IAAID,kBAAkB,CAACF,CAAC,CAACI,MAAM,CAAC,EAAE;QAChE,MAAM,IAAIC,OAAY,aAAA,CACpB,4BAA4B,EAC5B,uEAAuE,CACxE,CAAC;KACH,MAAM,IAAIL,CAAAA,GAAQ,GAARA,CAAC,CAACI,MAAM,SAAU,GAAlBJ,KAAAA,CAAkB,GAAlBA,GAAQ,CAAEM,QAAQ,CAAC,iCAAiC,CAAC,EAAE;QAChE,MAAM,IAAID,OAAY,aAAA,CACpB,sBAAsB,EACtB,CAAC,oBAAoB,EAAEE,MAAK,QAAA,CAACC,IAAI,CAC/B,8CAA8C,CAC/C,CAAC,eAAe,CAAC,CACnB,CAAC;KACH;IACD,6CAA6C;IAC7C,IAAIC,KAAK,CAACC,OAAO,CAACV,CAAC,CAACW,MAAM,CAAC,EAAE;QAC3BX,CAAC,CAACY,OAAO,IAAI,IAAI,GAAGZ,CAAC,CAACW,MAAM,CAACf,IAAI,CAAC,IAAI,CAAC,CAACiB,IAAI,EAAE,CAAC;KAChD,MAAM,IAAIb,CAAC,CAACI,MAAM,EAAE;QACnBJ,CAAC,CAACY,OAAO,IAAI,IAAI,GAAGZ,CAAC,CAACI,MAAM,CAAC;KAC9B;IACD,MAAMJ,CAAC,CAAC;CACT;AAED,SAASE,kBAAkB,CAACY,IAAY,EAAE;IACxC,IAAI,CAACA,IAAI,EAAE;QACT,OAAO,KAAK,CAAC;KACd;IAED,MAAMC,KAAK,GAAGD,IAAI,CAACE,WAAW,EAAE,AAAC;IACjC,OAAOD,KAAK,CAACT,QAAQ,CAAC,OAAO,CAAC,IAAIS,KAAK,CAACT,QAAQ,CAAC,SAAS,CAAC,CAAC;CAC7D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getDevicesInfoAsync = getDevicesInfoAsync;
|
|
6
|
+
exports.readDevicesInfoAsync = readDevicesInfoAsync;
|
|
7
|
+
exports.setDevicesInfoAsync = setDevicesInfoAsync;
|
|
8
|
+
exports.saveDevicesAsync = saveDevicesAsync;
|
|
9
|
+
exports.DevicesFile = void 0;
|
|
10
|
+
var _dotExpo = require("./dotExpo");
|
|
11
|
+
const debug = require("debug")("expo:start:project:devices");
|
|
12
|
+
const DEVICES_FILE_NAME = "devices.json";
|
|
13
|
+
const MILLISECONDS_IN_30_DAYS = 30 * 24 * 60 * 60 * 1000;
|
|
14
|
+
const DevicesFile = (0, _dotExpo).createTemporaryProjectFile(DEVICES_FILE_NAME, {
|
|
15
|
+
devices: []
|
|
16
|
+
});
|
|
17
|
+
exports.DevicesFile = DevicesFile;
|
|
18
|
+
let devicesInfo = null;
|
|
19
|
+
async function getDevicesInfoAsync(projectRoot) {
|
|
20
|
+
if (devicesInfo) {
|
|
21
|
+
return devicesInfo;
|
|
22
|
+
}
|
|
23
|
+
return readDevicesInfoAsync(projectRoot);
|
|
24
|
+
}
|
|
25
|
+
async function readDevicesInfoAsync(projectRoot) {
|
|
26
|
+
try {
|
|
27
|
+
devicesInfo = await DevicesFile.readAsync(projectRoot);
|
|
28
|
+
// if the file on disk has old devices, filter them out here before we use them
|
|
29
|
+
const filteredDevices = filterOldDevices(devicesInfo.devices);
|
|
30
|
+
if (filteredDevices.length < devicesInfo.devices.length) {
|
|
31
|
+
devicesInfo = {
|
|
32
|
+
...devicesInfo,
|
|
33
|
+
devices: filteredDevices
|
|
34
|
+
};
|
|
35
|
+
// save the newly filtered list for consistency
|
|
36
|
+
try {
|
|
37
|
+
await setDevicesInfoAsync(projectRoot, devicesInfo);
|
|
38
|
+
} catch {
|
|
39
|
+
// do nothing here, we'll just keep using the filtered list in memory for now
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return devicesInfo;
|
|
43
|
+
} catch {
|
|
44
|
+
return await DevicesFile.setAsync(projectRoot, {
|
|
45
|
+
devices: []
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function setDevicesInfoAsync(projectRoot, json) {
|
|
50
|
+
devicesInfo = json;
|
|
51
|
+
return await DevicesFile.setAsync(projectRoot, json);
|
|
52
|
+
}
|
|
53
|
+
async function saveDevicesAsync(projectRoot, deviceIds) {
|
|
54
|
+
const currentTime = Date.now();
|
|
55
|
+
const newDeviceIds = typeof deviceIds === "string" ? [
|
|
56
|
+
deviceIds
|
|
57
|
+
] : deviceIds;
|
|
58
|
+
debug(`Saving devices: ${newDeviceIds}`);
|
|
59
|
+
const { devices } = await getDevicesInfoAsync(projectRoot);
|
|
60
|
+
const newDevicesJson = devices.filter((device)=>!newDeviceIds.includes(device.installationId)
|
|
61
|
+
).concat(newDeviceIds.map((deviceId)=>({
|
|
62
|
+
installationId: deviceId,
|
|
63
|
+
lastUsed: currentTime
|
|
64
|
+
})
|
|
65
|
+
));
|
|
66
|
+
await setDevicesInfoAsync(projectRoot, {
|
|
67
|
+
devices: filterOldDevices(newDevicesJson)
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function filterOldDevices(devices) {
|
|
71
|
+
const currentTime = Date.now();
|
|
72
|
+
return devices// filter out any devices that haven't been used to open this project in 30 days
|
|
73
|
+
.filter((device)=>currentTime - device.lastUsed <= MILLISECONDS_IN_30_DAYS
|
|
74
|
+
)// keep only the 10 most recently used devices
|
|
75
|
+
.sort((a, b)=>b.lastUsed - a.lastUsed
|
|
76
|
+
).slice(0, 10);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/start/project/devices.ts"],"sourcesContent":["import { createTemporaryProjectFile } from './dotExpo';\n\nconst debug = require('debug')('expo:start:project:devices') as typeof console.log;\n\nexport type DeviceInfo = {\n installationId: string;\n lastUsed: number;\n};\n\nexport type DevicesInfo = {\n devices: DeviceInfo[];\n};\n\nconst DEVICES_FILE_NAME = 'devices.json';\n\nconst MILLISECONDS_IN_30_DAYS = 30 * 24 * 60 * 60 * 1000;\n\nexport const DevicesFile = createTemporaryProjectFile<DevicesInfo>(DEVICES_FILE_NAME, {\n devices: [],\n});\n\nlet devicesInfo: DevicesInfo | null = null;\n\nexport async function getDevicesInfoAsync(projectRoot: string): Promise<DevicesInfo> {\n if (devicesInfo) {\n return devicesInfo;\n }\n return readDevicesInfoAsync(projectRoot);\n}\n\nexport async function readDevicesInfoAsync(projectRoot: string): Promise<DevicesInfo> {\n try {\n devicesInfo = await DevicesFile.readAsync(projectRoot);\n\n // if the file on disk has old devices, filter them out here before we use them\n const filteredDevices = filterOldDevices(devicesInfo.devices);\n if (filteredDevices.length < devicesInfo.devices.length) {\n devicesInfo = {\n ...devicesInfo,\n devices: filteredDevices,\n };\n // save the newly filtered list for consistency\n try {\n await setDevicesInfoAsync(projectRoot, devicesInfo);\n } catch {\n // do nothing here, we'll just keep using the filtered list in memory for now\n }\n }\n\n return devicesInfo;\n } catch {\n return await DevicesFile.setAsync(projectRoot, { devices: [] });\n }\n}\n\nexport async function setDevicesInfoAsync(\n projectRoot: string,\n json: DevicesInfo\n): Promise<DevicesInfo> {\n devicesInfo = json;\n return await DevicesFile.setAsync(projectRoot, json);\n}\n\nexport async function saveDevicesAsync(\n projectRoot: string,\n deviceIds: string | string[]\n): Promise<void> {\n const currentTime = Date.now();\n const newDeviceIds = typeof deviceIds === 'string' ? [deviceIds] : deviceIds;\n\n debug(`Saving devices: ${newDeviceIds}`);\n const { devices } = await getDevicesInfoAsync(projectRoot);\n const newDevicesJson = devices\n .filter((device) => !newDeviceIds.includes(device.installationId))\n .concat(newDeviceIds.map((deviceId) => ({ installationId: deviceId, lastUsed: currentTime })));\n await setDevicesInfoAsync(projectRoot, { devices: filterOldDevices(newDevicesJson) });\n}\n\nfunction filterOldDevices(devices: DeviceInfo[]) {\n const currentTime = Date.now();\n return (\n devices\n // filter out any devices that haven't been used to open this project in 30 days\n .filter((device) => currentTime - device.lastUsed <= MILLISECONDS_IN_30_DAYS)\n // keep only the 10 most recently used devices\n .sort((a, b) => b.lastUsed - a.lastUsed)\n .slice(0, 10)\n );\n}\n"],"names":["getDevicesInfoAsync","readDevicesInfoAsync","setDevicesInfoAsync","saveDevicesAsync","debug","require","DEVICES_FILE_NAME","MILLISECONDS_IN_30_DAYS","DevicesFile","createTemporaryProjectFile","devices","devicesInfo","projectRoot","readAsync","filteredDevices","filterOldDevices","length","setAsync","json","deviceIds","currentTime","Date","now","newDeviceIds","newDevicesJson","filter","device","includes","installationId","concat","map","deviceId","lastUsed","sort","a","b","slice"],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.createTemporaryProjectFile = createTemporaryProjectFile;
|
|
6
|
+
exports.ensureDotExpoProjectDirectoryInitialized = ensureDotExpoProjectDirectoryInitialized;
|
|
7
|
+
var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
|
|
8
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
function _interopRequireDefault(obj) {
|
|
11
|
+
return obj && obj.__esModule ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function createTemporaryProjectFile(fileName, defaults) {
|
|
16
|
+
function getFile(projectRoot) {
|
|
17
|
+
const dotExpoDir = ensureDotExpoProjectDirectoryInitialized(projectRoot);
|
|
18
|
+
return new _jsonFile.default(_path.default.join(dotExpoDir, fileName));
|
|
19
|
+
}
|
|
20
|
+
async function readAsync(projectRoot) {
|
|
21
|
+
let projectSettings;
|
|
22
|
+
try {
|
|
23
|
+
projectSettings = await getFile(projectRoot).readAsync();
|
|
24
|
+
} catch {
|
|
25
|
+
projectSettings = await getFile(projectRoot).writeAsync(defaults);
|
|
26
|
+
}
|
|
27
|
+
// Set defaults for any missing fields
|
|
28
|
+
return {
|
|
29
|
+
...defaults,
|
|
30
|
+
...projectSettings
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async function setAsync(projectRoot, json) {
|
|
34
|
+
try {
|
|
35
|
+
return await getFile(projectRoot).mergeAsync(json, {
|
|
36
|
+
cantReadFileDefault: defaults
|
|
37
|
+
});
|
|
38
|
+
} catch {
|
|
39
|
+
return await getFile(projectRoot).writeAsync({
|
|
40
|
+
...defaults,
|
|
41
|
+
...json
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
getFile,
|
|
47
|
+
readAsync,
|
|
48
|
+
setAsync
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function getDotExpoProjectDirectory(projectRoot) {
|
|
52
|
+
return _path.default.join(projectRoot, ".expo");
|
|
53
|
+
}
|
|
54
|
+
function ensureDotExpoProjectDirectoryInitialized(projectRoot) {
|
|
55
|
+
const dirPath = getDotExpoProjectDirectory(projectRoot);
|
|
56
|
+
_fs.default.mkdirSync(dirPath, {
|
|
57
|
+
recursive: true
|
|
58
|
+
});
|
|
59
|
+
const readmeFilePath = _path.default.resolve(dirPath, "README.md");
|
|
60
|
+
if (!_fs.default.existsSync(readmeFilePath)) {
|
|
61
|
+
_fs.default.writeFileSync(readmeFilePath, `> Why do I have a folder named ".expo" in my project?
|
|
62
|
+
The ".expo" folder is created when an Expo project is started using "expo start" command.
|
|
63
|
+
> What do the files contain?
|
|
64
|
+
- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds.
|
|
65
|
+
- "settings.json": contains the server configuration that is used to serve the application manifest.
|
|
66
|
+
> Should I commit the ".expo" folder?
|
|
67
|
+
No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine.
|
|
68
|
+
Upon project creation, the ".expo" folder is already added to your ".gitignore" file.
|
|
69
|
+
`);
|
|
70
|
+
}
|
|
71
|
+
return dirPath;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=dotExpo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/start/project/dotExpo.ts"],"sourcesContent":["import JsonFile, { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\n\n/** Create a set of functions for managing a file in the project's `.expo` directory. */\nexport function createTemporaryProjectFile<T extends JSONObject>(fileName: string, defaults: T) {\n function getFile(projectRoot: string): JsonFile<T> {\n const dotExpoDir = ensureDotExpoProjectDirectoryInitialized(projectRoot);\n return new JsonFile<T>(path.join(dotExpoDir, fileName));\n }\n\n async function readAsync(projectRoot: string): Promise<T> {\n let projectSettings;\n try {\n projectSettings = await getFile(projectRoot).readAsync();\n } catch {\n projectSettings = await getFile(projectRoot).writeAsync(defaults);\n }\n // Set defaults for any missing fields\n return { ...defaults, ...projectSettings };\n }\n\n async function setAsync(projectRoot: string, json: Partial<T>): Promise<T> {\n try {\n return await getFile(projectRoot).mergeAsync(json, {\n cantReadFileDefault: defaults,\n });\n } catch {\n return await getFile(projectRoot).writeAsync({\n ...defaults,\n ...json,\n });\n }\n }\n\n return {\n getFile,\n readAsync,\n setAsync,\n };\n}\n\nfunction getDotExpoProjectDirectory(projectRoot: string): string {\n return path.join(projectRoot, '.expo');\n}\n\nexport function ensureDotExpoProjectDirectoryInitialized(projectRoot: string): string {\n const dirPath = getDotExpoProjectDirectory(projectRoot);\n fs.mkdirSync(dirPath, { recursive: true });\n\n const readmeFilePath = path.resolve(dirPath, 'README.md');\n if (!fs.existsSync(readmeFilePath)) {\n fs.writeFileSync(\n readmeFilePath,\n `> Why do I have a folder named \".expo\" in my project?\nThe \".expo\" folder is created when an Expo project is started using \"expo start\" command.\n> What do the files contain?\n- \"devices.json\": contains information about devices that have recently opened this project. This is used to populate the \"Development sessions\" list in your development builds.\n- \"settings.json\": contains the server configuration that is used to serve the application manifest.\n> Should I commit the \".expo\" folder?\nNo, you should not share the \".expo\" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine.\nUpon project creation, the \".expo\" folder is already added to your \".gitignore\" file.\n`\n );\n }\n return dirPath;\n}\n"],"names":["createTemporaryProjectFile","ensureDotExpoProjectDirectoryInitialized","fileName","defaults","getFile","projectRoot","dotExpoDir","JsonFile","path","join","readAsync","projectSettings","writeAsync","setAsync","json","mergeAsync","cantReadFileDefault","getDotExpoProjectDirectory","dirPath","fs","mkdirSync","recursive","readmeFilePath","resolve","existsSync","writeFileSync"],"mappings":"AAAA;;;;QAKgBA,0BAA0B,GAA1BA,0BAA0B;QAyC1BC,wCAAwC,GAAxCA,wCAAwC;AA9CnB,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACvC,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;;;;;;AAGhB,SAASD,0BAA0B,CAAuBE,QAAgB,EAAEC,QAAW,EAAE;IAC9F,SAASC,OAAO,CAACC,WAAmB,EAAe;QACjD,MAAMC,UAAU,GAAGL,wCAAwC,CAACI,WAAW,CAAC,AAAC;QACzE,OAAO,IAAIE,SAAQ,QAAA,CAAIC,KAAI,QAAA,CAACC,IAAI,CAACH,UAAU,EAAEJ,QAAQ,CAAC,CAAC,CAAC;KACzD;IAED,eAAeQ,SAAS,CAACL,WAAmB,EAAc;QACxD,IAAIM,eAAe,AAAC;QACpB,IAAI;YACFA,eAAe,GAAG,MAAMP,OAAO,CAACC,WAAW,CAAC,CAACK,SAAS,EAAE,CAAC;SAC1D,CAAC,OAAM;YACNC,eAAe,GAAG,MAAMP,OAAO,CAACC,WAAW,CAAC,CAACO,UAAU,CAACT,QAAQ,CAAC,CAAC;SACnE;QACD,sCAAsC;QACtC,OAAO;YAAE,GAAGA,QAAQ;YAAE,GAAGQ,eAAe;SAAE,CAAC;KAC5C;IAED,eAAeE,QAAQ,CAACR,WAAmB,EAAES,IAAgB,EAAc;QACzE,IAAI;YACF,OAAO,MAAMV,OAAO,CAACC,WAAW,CAAC,CAACU,UAAU,CAACD,IAAI,EAAE;gBACjDE,mBAAmB,EAAEb,QAAQ;aAC9B,CAAC,CAAC;SACJ,CAAC,OAAM;YACN,OAAO,MAAMC,OAAO,CAACC,WAAW,CAAC,CAACO,UAAU,CAAC;gBAC3C,GAAGT,QAAQ;gBACX,GAAGW,IAAI;aACR,CAAC,CAAC;SACJ;KACF;IAED,OAAO;QACLV,OAAO;QACPM,SAAS;QACTG,QAAQ;KACT,CAAC;CACH;AAED,SAASI,0BAA0B,CAACZ,WAAmB,EAAU;IAC/D,OAAOG,KAAI,QAAA,CAACC,IAAI,CAACJ,WAAW,EAAE,OAAO,CAAC,CAAC;CACxC;AAEM,SAASJ,wCAAwC,CAACI,WAAmB,EAAU;IACpF,MAAMa,OAAO,GAAGD,0BAA0B,CAACZ,WAAW,CAAC,AAAC;IACxDc,GAAE,QAAA,CAACC,SAAS,CAACF,OAAO,EAAE;QAAEG,SAAS,EAAE,IAAI;KAAE,CAAC,CAAC;IAE3C,MAAMC,cAAc,GAAGd,KAAI,QAAA,CAACe,OAAO,CAACL,OAAO,EAAE,WAAW,CAAC,AAAC;IAC1D,IAAI,CAACC,GAAE,QAAA,CAACK,UAAU,CAACF,cAAc,CAAC,EAAE;QAClCH,GAAE,QAAA,CAACM,aAAa,CACdH,cAAc,EACd,CAAC;;;;;;;;AAQP,CAAC,CACI,CAAC;KACH;IACD,OAAOJ,OAAO,CAAC;CAChB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.ProjectSettings = void 0;
|
|
6
|
+
var _dotExpo = require("./dotExpo");
|
|
7
|
+
const SETTINGS_FILE_NAME = "settings.json";
|
|
8
|
+
const ProjectSettings = (0, _dotExpo).createTemporaryProjectFile(SETTINGS_FILE_NAME, {
|
|
9
|
+
urlRandomness: null
|
|
10
|
+
});
|
|
11
|
+
exports.ProjectSettings = ProjectSettings;
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/start/project/settings.ts"],"sourcesContent":["import { createTemporaryProjectFile } from './dotExpo';\n\nconst SETTINGS_FILE_NAME = 'settings.json';\n\nexport const ProjectSettings = createTemporaryProjectFile<{\n urlRandomness: string | null;\n}>(SETTINGS_FILE_NAME, {\n urlRandomness: null,\n});\n"],"names":["SETTINGS_FILE_NAME","ProjectSettings","createTemporaryProjectFile","urlRandomness"],"mappings":"AAAA;;;;;AAA2C,IAAA,QAAW,WAAX,WAAW,CAAA;AAEtD,MAAMA,kBAAkB,GAAG,eAAe,AAAC;AAEpC,MAAMC,eAAe,GAAGC,CAAAA,GAAAA,QAA0B,AAIvD,CAAA,2BAJuD,CAEtDF,kBAAkB,EAAE;IACrBG,aAAa,EAAE,IAAI;CACpB,CAAC,AAAC;QAJUF,eAAe,GAAfA,eAAe"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.resolveOptionsAsync = resolveOptionsAsync;
|
|
6
|
+
exports.resolveSchemeAsync = resolveSchemeAsync;
|
|
7
|
+
exports.resolveHostType = resolveHostType;
|
|
8
|
+
exports.resolvePortsAsync = resolvePortsAsync;
|
|
9
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
10
|
+
var _getDevClientProperties = require("../utils/analytics/getDevClientProperties");
|
|
11
|
+
var _errors = require("../utils/errors");
|
|
12
|
+
var _port = require("../utils/port");
|
|
13
|
+
function _interopRequireDefault(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async function resolveOptionsAsync(projectRoot, args) {
|
|
19
|
+
if (args["--dev-client"] && args["--go"]) {
|
|
20
|
+
throw new _errors.CommandError("BAD_ARGS", "Cannot use both --dev-client and --go together.");
|
|
21
|
+
}
|
|
22
|
+
const host = resolveHostType({
|
|
23
|
+
host: args["--host"],
|
|
24
|
+
offline: args["--offline"],
|
|
25
|
+
lan: args["--lan"],
|
|
26
|
+
localhost: args["--localhost"],
|
|
27
|
+
tunnel: args["--tunnel"]
|
|
28
|
+
});
|
|
29
|
+
// User can force the default target by passing either `--dev-client` or `--go`. They can also
|
|
30
|
+
// swap between them during development by pressing `s`.
|
|
31
|
+
const isUserDefinedDevClient = !!args["--dev-client"] || (args["--go"] == null ? false : !args["--go"]);
|
|
32
|
+
// If the user didn't specify `--dev-client` or `--go` we check if they have the dev client package
|
|
33
|
+
// in their package.json.
|
|
34
|
+
const isAutoDevClient = args["--dev-client"] == null && args["--go"] == null && (0, _getDevClientProperties).hasDirectDevClientDependency(projectRoot);
|
|
35
|
+
const isDevClient = isAutoDevClient || isUserDefinedDevClient;
|
|
36
|
+
const scheme = await resolveSchemeAsync(projectRoot, {
|
|
37
|
+
scheme: args["--scheme"],
|
|
38
|
+
devClient: isDevClient
|
|
39
|
+
});
|
|
40
|
+
var ref;
|
|
41
|
+
return {
|
|
42
|
+
privateKeyPath: (ref = args["--private-key-path"]) != null ? ref : null,
|
|
43
|
+
android: !!args["--android"],
|
|
44
|
+
web: !!args["--web"],
|
|
45
|
+
ios: !!args["--ios"],
|
|
46
|
+
offline: !!args["--offline"],
|
|
47
|
+
clear: !!args["--clear"],
|
|
48
|
+
dev: !args["--no-dev"],
|
|
49
|
+
https: !!args["--https"],
|
|
50
|
+
maxWorkers: args["--max-workers"],
|
|
51
|
+
port: args["--port"],
|
|
52
|
+
minify: !!args["--minify"],
|
|
53
|
+
devClient: isDevClient,
|
|
54
|
+
scheme,
|
|
55
|
+
host
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async function resolveSchemeAsync(projectRoot, options) {
|
|
59
|
+
const resolveFrom = require("resolve-from");
|
|
60
|
+
const isDevClientPackageInstalled = (()=>{
|
|
61
|
+
try {
|
|
62
|
+
// we check if `expo-dev-launcher` is installed instead of `expo-dev-client`
|
|
63
|
+
// because someone could install only launcher.
|
|
64
|
+
resolveFrom(projectRoot, "expo-dev-launcher");
|
|
65
|
+
return true;
|
|
66
|
+
} catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
})();
|
|
70
|
+
if (typeof options.scheme === "string") {
|
|
71
|
+
var _scheme;
|
|
72
|
+
// Use the custom scheme
|
|
73
|
+
return (_scheme = options.scheme) != null ? _scheme : null;
|
|
74
|
+
} else if (options.devClient || isDevClientPackageInstalled) {
|
|
75
|
+
const { getOptionalDevClientSchemeAsync } = require("../utils/scheme");
|
|
76
|
+
// Attempt to find the scheme or warn the user how to setup a custom scheme
|
|
77
|
+
return await getOptionalDevClientSchemeAsync(projectRoot);
|
|
78
|
+
} else {
|
|
79
|
+
// Ensure this is reset when users don't use `--scheme`, `--dev-client` and don't have the `expo-dev-client` package installed.
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function resolveHostType(options) {
|
|
84
|
+
if ([
|
|
85
|
+
options.offline,
|
|
86
|
+
options.host,
|
|
87
|
+
options.lan,
|
|
88
|
+
options.localhost,
|
|
89
|
+
options.tunnel
|
|
90
|
+
].filter((i)=>i
|
|
91
|
+
).length > 1) {
|
|
92
|
+
throw new _errors.CommandError("BAD_ARGS", "Specify at most one of: --offline, --host, --tunnel, --lan, --localhost");
|
|
93
|
+
}
|
|
94
|
+
if (options.offline) {
|
|
95
|
+
// Force `lan` in offline mode.
|
|
96
|
+
return "lan";
|
|
97
|
+
} else if (options.host) {
|
|
98
|
+
_assert.default.match(options.host, /^(lan|tunnel|localhost)$/);
|
|
99
|
+
return options.host;
|
|
100
|
+
} else if (options.tunnel) {
|
|
101
|
+
return "tunnel";
|
|
102
|
+
} else if (options.lan) {
|
|
103
|
+
return "lan";
|
|
104
|
+
} else if (options.localhost) {
|
|
105
|
+
return "localhost";
|
|
106
|
+
}
|
|
107
|
+
return "lan";
|
|
108
|
+
}
|
|
109
|
+
async function resolvePortsAsync(projectRoot, options, settings) {
|
|
110
|
+
const multiBundlerSettings = {};
|
|
111
|
+
if (settings.webOnly) {
|
|
112
|
+
const webpackPort = await (0, _port).resolvePortAsync(projectRoot, {
|
|
113
|
+
defaultPort: options.port,
|
|
114
|
+
// Default web port
|
|
115
|
+
fallbackPort: 19006
|
|
116
|
+
});
|
|
117
|
+
if (!webpackPort) {
|
|
118
|
+
throw new _errors.AbortCommandError();
|
|
119
|
+
}
|
|
120
|
+
multiBundlerSettings.webpackPort = webpackPort;
|
|
121
|
+
} else {
|
|
122
|
+
const fallbackPort = process.env.RCT_METRO_PORT ? parseInt(process.env.RCT_METRO_PORT, 10) : 8081;
|
|
123
|
+
const metroPort = await (0, _port).resolvePortAsync(projectRoot, {
|
|
124
|
+
defaultPort: options.port,
|
|
125
|
+
fallbackPort
|
|
126
|
+
});
|
|
127
|
+
if (!metroPort) {
|
|
128
|
+
throw new _errors.AbortCommandError();
|
|
129
|
+
}
|
|
130
|
+
multiBundlerSettings.metroPort = metroPort;
|
|
131
|
+
}
|
|
132
|
+
return multiBundlerSettings;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=resolveOptions.js.map
|