@depup/expo__cli 55.0.23-depup.0 → 57.0.9-depup.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/LICENSE +21 -0
- package/README.md +13 -15
- package/build/bin/cli +4 -4
- package/build/bin/cli.map +1 -1
- package/build/src/api/endpoint.js +4 -4
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoSchema.js +3 -3
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/graphql/client.js +26 -14
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/mutations/TunnelMutation.js +31 -0
- package/build/src/api/graphql/mutations/TunnelMutation.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/ResponseCache.js +5 -5
- package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
- package/build/src/api/rest/client.js +35 -20
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.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/wrapFetchWithUserAgent.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +6 -5
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +28 -15
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +10 -3
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +76 -24
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +4 -4
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +19 -7
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +3 -3
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +7 -4
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/templates.js +4 -6
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/events/index.js +19 -15
- package/build/src/events/index.js.map +1 -1
- package/build/src/events/stream.js +94 -24
- package/build/src/events/stream.js.map +1 -1
- package/build/src/expoUpdatesExports.js +4 -4
- package/build/src/expoUpdatesExports.js.map +1 -1
- package/build/src/export/createMetadataJson.js +2 -1
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +45 -20
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +1 -1
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +7 -6
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +7 -7
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +32 -28
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +5 -5
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportDomComponents.js +5 -5
- package/build/src/export/exportDomComponents.js.map +1 -1
- package/build/src/export/exportHermes.js +23 -13
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +30 -21
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +26 -34
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +3 -3
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +2 -0
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +4 -4
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +6 -6
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +16 -4
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +12 -13
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +3 -3
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/static.js +6 -0
- package/build/src/export/static.js.map +1 -0
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/install/checkPackages.js +1 -28
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +3 -3
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +3 -3
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/install/utils/checkPackagesCompatibility.js +32 -16
- package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js.map +1 -1
- package/build/src/log.js +32 -14
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +25 -5
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +49 -14
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +3 -3
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +3 -2
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +31 -6
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +8 -5
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +7 -7
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +10 -5
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +3 -3
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +7 -7
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js.map +1 -1
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +3 -4
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +48 -1
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +4 -1
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +4 -4
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +163 -23
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +6 -5
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +10 -16
- 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 +2 -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.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +3 -3
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +3 -3
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +16 -13
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +6 -6
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +5 -5
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +7 -7
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +5 -5
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +8 -8
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +5 -3
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +7 -5
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +3 -3
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +4 -4
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +8 -1
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +3 -3
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/appleDestinations.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +3 -3
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +8 -3
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +4 -4
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +9 -4
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +39 -0
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/ios/validateExternalBinary.js.map +1 -1
- package/build/src/run/startBundler.js +4 -0
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/serve/index.js +4 -1
- package/build/src/serve/index.js.map +1 -1
- package/build/src/serve/serveAsync.js +23 -11
- package/build/src/serve/serveAsync.js.map +1 -1
- package/build/src/serve/static.js +69 -0
- package/build/src/serve/static.js.map +1 -0
- package/build/src/start/checkDependenciesOnStart.js +131 -0
- package/build/src/start/checkDependenciesOnStart.js.map +1 -0
- package/build/src/start/detectDevClient.js +3 -3
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +4 -4
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +53 -91
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +3 -3
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +3 -3
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +5 -5
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -5
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/reactNativeTv.js +149 -0
- package/build/src/start/doctor/dependencies/reactNativeTv.js.map +1 -0
- package/build/src/start/doctor/dependencies/resolvePackages.js +4 -4
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +33 -8
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +3 -3
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +3 -3
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +3 -3
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +5 -12
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +2 -0
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/cliExtensionMenuItemHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +6 -6
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/createDevToolsMenuItems.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +49 -6
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +13 -4
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +4 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +13 -4
- 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/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +36 -34
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +4 -4
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +5 -5
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +5 -5
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +3 -3
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +20 -6
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +11 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/devicectl.js +7 -7
- package/build/src/start/platforms/ios/devicectl.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +26 -11
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +5 -5
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +5 -4
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +25 -19
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +3 -3
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +3 -3
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +6 -6
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +4 -3
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/resolveOptions.js +7 -7
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +1 -1
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/AsyncWsTunnel.js +120 -35
- package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
- package/build/src/start/server/Bonjour.js +8 -3
- package/build/src/start/server/Bonjour.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +23 -9
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPlugin.js +63 -3
- package/build/src/start/server/DevToolsPlugin.js.map +1 -1
- package/build/src/start/server/DevToolsPlugin.schema.js +8 -3
- package/build/src/start/server/DevToolsPlugin.schema.js.map +1 -1
- package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js +58 -23
- package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js.map +1 -1
- package/build/src/start/server/DevToolsPluginCliExtensionResults.js +29 -0
- package/build/src/start/server/DevToolsPluginCliExtensionResults.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +20 -6
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginServerHelpers.js +83 -0
- package/build/src/start/server/DevToolsPluginServerHelpers.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +41 -24
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/MCP.js +10 -3
- package/build/src/start/server/MCP.js.map +1 -1
- package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js +15 -5
- package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +14 -1
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/createMCPDevToolsExtensionSchema.js +18 -4
- package/build/src/start/server/createMCPDevToolsExtensionSchema.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +13 -24
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +239 -108
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +67 -16
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +22 -4
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/createExpoAutolinkingResolver.js +25 -12
- package/build/src/start/server/metro/createExpoAutolinkingResolver.js.map +1 -1
- package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
- package/build/src/start/server/metro/createFileMap-fork.js +196 -0
- package/build/src/start/server/metro/createFileMap-fork.js.map +1 -0
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +22 -22
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createTypescriptResolver.js +410 -0
- package/build/src/start/server/metro/createTypescriptResolver.js.map +1 -0
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/attachAtlas.js +3 -3
- package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +6 -5
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +20 -4
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/dev-server/compression.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +13 -2
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +9 -2
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js +3 -3
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.js.map +1 -1
- package/build/src/start/server/metro/externals.js +4 -4
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +3 -3
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +3 -3
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +141 -57
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +4 -4
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js +3 -3
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +16 -13
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +3 -3
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +48 -16
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/resolveLoader.js +3 -3
- package/build/src/start/server/metro/resolveLoader.js.map +1 -1
- package/build/src/start/server/metro/router.js +23 -14
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +13 -10
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +29 -13
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +36 -34
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroErrorReportingResolver.js +53 -30
- package/build/src/start/server/metro/withMetroErrorReportingResolver.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +187 -126
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +4 -4
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +3 -3
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +60 -9
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DomComponentsMiddleware.js +16 -12
- package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +6 -4
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +3 -3
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +13 -8
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +15 -6
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/OpenMiddleware.js +150 -0
- package/build/src/start/server/middleware/OpenMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +13 -4
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +2 -9
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/domPolyfills.js +60 -0
- package/build/src/start/server/middleware/domPolyfills.js.map +1 -0
- package/build/src/start/server/middleware/inspector/JsInspector.js +6 -31
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +14 -24
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +3 -3
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +15 -14
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +3 -3
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/openHandlers.js +157 -0
- package/build/src/start/server/middleware/openHandlers.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js +4 -4
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +9 -7
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +3 -1
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +13 -36
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +3 -3
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +14 -55
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +5 -5
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +12 -10
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +3 -3
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +4 -4
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +3 -3
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +21 -11
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/types.d.ts +2 -0
- package/build/src/utils/FileNotifier.js +1 -1
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/args.js +5 -5
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +8 -8
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/build-cache-providers/helpers.js +4 -4
- package/build/src/utils/build-cache-providers/helpers.js.map +1 -1
- package/build/src/utils/build-cache-providers/index.js +5 -5
- package/build/src/utils/build-cache-providers/index.js.map +1 -1
- package/build/src/utils/cocoapods.js +5 -5
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +12 -6
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/composeMetroIgnorePatterns.js +69 -0
- package/build/src/utils/composeMetroIgnorePatterns.js.map +1 -0
- package/build/src/utils/createTempPath.js +3 -3
- package/build/src/utils/createTempPath.js.map +1 -1
- package/build/src/utils/delay.js +4 -4
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +21 -11
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +4 -4
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +4 -4
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +39 -13
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +6 -6
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +15 -19
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/expoUpdatesCli.js +5 -5
- package/build/src/utils/expoUpdatesCli.js.map +1 -1
- package/build/src/utils/fetch.js +4 -4
- package/build/src/utils/fetch.js.map +1 -1
- package/build/src/utils/findUp.js +3 -3
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +3 -3
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/freeport.js +3 -3
- package/build/src/utils/freeport.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +3 -5
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +5 -5
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +3 -3
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +3 -3
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/ip.js +4 -4
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/link.js +3 -3
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +10 -10
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +3 -3
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/net.js +23 -4
- package/build/src/utils/net.js.map +1 -1
- package/build/src/utils/nodeEnv.js +6 -6
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/npm.js +10 -9
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +4 -4
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +240 -11
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +4 -4
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +5 -4
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +12 -5
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/progress.js +4 -4
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +11 -11
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/qr.js +5 -4
- package/build/src/utils/qr.js.map +1 -1
- package/build/src/utils/resolveArgs.js +10 -9
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +4 -4
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +8 -7
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/Telemetry.js +5 -0
- package/build/src/utils/telemetry/Telemetry.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js +5 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
- package/build/src/utils/telemetry/index.js +4 -4
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/telemetry/utils/agent.js +42 -0
- package/build/src/utils/telemetry/utils/agent.js.map +1 -0
- package/build/src/utils/telemetry/utils/constants.js +3 -3
- package/build/src/utils/telemetry/utils/constants.js.map +1 -1
- package/build/src/utils/telemetry/utils/context.js +3 -2
- package/build/src/utils/telemetry/utils/context.js.map +1 -1
- package/build/src/utils/url.js +5 -17
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +12 -12
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +4 -4
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js.map +1 -1
- package/changes.json +18 -26
- package/main.js +3 -0
- package/package.json +88 -80
- package/static/loading-page/index.html +45 -3
- package/static/template/+html.tsx +14 -5
- package/add-module.js +0 -8
- package/build/src/start/server/middleware/inspector/CdpClient.js +0 -81
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +0 -1
- package/build/src/utils/resolveWatchFolders.js +0 -67
- package/build/src/utils/resolveWatchFolders.js.map +0 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +0 -87
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +0 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +0 -84
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +0 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +0 -94
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +0 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +0 -62
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +0 -1
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
createTempDirectoryPath
|
|
12
|
+
get createTempDirectoryPath () {
|
|
13
13
|
return createTempDirectoryPath;
|
|
14
14
|
},
|
|
15
|
-
createTempFilePath
|
|
15
|
+
get createTempFilePath () {
|
|
16
16
|
return createTempFilePath;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/createTempPath.ts"],"sourcesContent":["import { randomBytes } from 'crypto';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nconst uniqueTempPath = (): string => {\n return path.join(os.tmpdir(), randomBytes(16).toString('hex'));\n};\n\n// Functionally equivalent to: https://github.com/sindresorhus/tempy/blob/943ade0c935367117adbe2b690516ebc94139c6d/index.js#L43-L47\nexport function createTempDirectoryPath(): string {\n const directory = uniqueTempPath();\n fs.mkdirSync(directory);\n return directory;\n}\n\n// Functionally equivalent to: https://github.com/sindresorhus/tempy/blob/943ade0c935367117adbe2b690516ebc94139c6d/index.js#L25-L39\nexport function createTempFilePath(name = ''): string {\n if (name) {\n return path.join(createTempDirectoryPath(), name);\n } else {\n return uniqueTempPath();\n }\n}\n"],"names":["createTempDirectoryPath","createTempFilePath","uniqueTempPath","path","join","os","tmpdir","randomBytes","toString","directory","fs","mkdirSync","name"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/createTempPath.ts"],"sourcesContent":["import { randomBytes } from 'crypto';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nconst uniqueTempPath = (): string => {\n return path.join(os.tmpdir(), randomBytes(16).toString('hex'));\n};\n\n// Functionally equivalent to: https://github.com/sindresorhus/tempy/blob/943ade0c935367117adbe2b690516ebc94139c6d/index.js#L43-L47\nexport function createTempDirectoryPath(): string {\n const directory = uniqueTempPath();\n fs.mkdirSync(directory);\n return directory;\n}\n\n// Functionally equivalent to: https://github.com/sindresorhus/tempy/blob/943ade0c935367117adbe2b690516ebc94139c6d/index.js#L25-L39\nexport function createTempFilePath(name = ''): string {\n if (name) {\n return path.join(createTempDirectoryPath(), name);\n } else {\n return uniqueTempPath();\n }\n}\n"],"names":["createTempDirectoryPath","createTempFilePath","uniqueTempPath","path","join","os","tmpdir","randomBytes","toString","directory","fs","mkdirSync","name"],"mappings":";;;;;;;;;;;QAUgBA;eAAAA;;QAOAC;eAAAA;;;;yBAjBY;;;;;;;gEACb;;;;;;;gEACA;;;;;;;gEACE;;;;;;;;;;;AAEjB,MAAMC,iBAAiB;IACrB,OAAOC,eAAI,CAACC,IAAI,CAACC,aAAE,CAACC,MAAM,IAAIC,IAAAA,qBAAW,EAAC,IAAIC,QAAQ,CAAC;AACzD;AAGO,SAASR;IACd,MAAMS,YAAYP;IAClBQ,aAAE,CAACC,SAAS,CAACF;IACb,OAAOA;AACT;AAGO,SAASR,mBAAmBW,OAAO,EAAE;IAC1C,IAAIA,MAAM;QACR,OAAOT,eAAI,CAACC,IAAI,CAACJ,2BAA2BY;IAC9C,OAAO;QACL,OAAOV;IACT;AACF"}
|
package/build/src/utils/delay.js
CHANGED
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
delayAsync
|
|
12
|
+
get delayAsync () {
|
|
13
13
|
return delayAsync;
|
|
14
14
|
},
|
|
15
|
-
resolveWithTimeout
|
|
15
|
+
get resolveWithTimeout () {
|
|
16
16
|
return resolveWithTimeout;
|
|
17
17
|
},
|
|
18
|
-
waitForActionAsync
|
|
18
|
+
get waitForActionAsync () {
|
|
19
19
|
return waitForActionAsync;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/delay.ts"],"sourcesContent":["import { CommandError } from './errors';\n\n/** Await for a given duration of milliseconds. */\nexport function delayAsync(timeout: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, timeout));\n}\n\n/** Wait for a given action to return a truthy value. */\nexport async function waitForActionAsync<T>({\n action,\n interval = 100,\n maxWaitTime = 20000,\n}: {\n action: () => T | Promise<T>;\n interval?: number;\n maxWaitTime?: number;\n}): Promise<T> {\n let complete: T;\n const start = Date.now();\n do {\n const actionStartTime = Date.now();\n complete = await action();\n\n const actionTimeElapsed = Date.now() - actionStartTime;\n const remainingDelayInterval = interval - actionTimeElapsed;\n if (remainingDelayInterval > 0) {\n await delayAsync(remainingDelayInterval);\n }\n if (Date.now() - start > maxWaitTime) {\n break;\n }\n } while (!complete);\n\n return complete;\n}\n\n/** Resolves a given function or rejects if the provided timeout is passed. */\nexport function resolveWithTimeout<T>(\n action: () => Promise<T>,\n {\n timeout,\n errorMessage,\n }: {\n /** Duration in milliseconds to wait before asserting a timeout. */\n timeout: number;\n /** Optional error message to use in the assertion. */\n errorMessage?: string;\n }\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new CommandError('TIMEOUT', errorMessage));\n }, timeout);\n action().then(\n (result) => {\n clearTimeout(timeoutId);\n resolve(result);\n },\n (error) => {\n clearTimeout(timeoutId);\n reject(error);\n }\n );\n });\n}\n"],"names":["delayAsync","resolveWithTimeout","waitForActionAsync","timeout","Promise","resolve","setTimeout","action","interval","maxWaitTime","complete","start","Date","now","actionStartTime","actionTimeElapsed","remainingDelayInterval","errorMessage","reject","timeoutId","CommandError","then","result","clearTimeout","error"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/delay.ts"],"sourcesContent":["import { CommandError } from './errors';\n\n/** Await for a given duration of milliseconds. */\nexport function delayAsync(timeout: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, timeout));\n}\n\n/** Wait for a given action to return a truthy value. */\nexport async function waitForActionAsync<T>({\n action,\n interval = 100,\n maxWaitTime = 20000,\n}: {\n action: () => T | Promise<T>;\n interval?: number;\n maxWaitTime?: number;\n}): Promise<T> {\n let complete: T;\n const start = Date.now();\n do {\n const actionStartTime = Date.now();\n complete = await action();\n\n const actionTimeElapsed = Date.now() - actionStartTime;\n const remainingDelayInterval = interval - actionTimeElapsed;\n if (remainingDelayInterval > 0) {\n await delayAsync(remainingDelayInterval);\n }\n if (Date.now() - start > maxWaitTime) {\n break;\n }\n } while (!complete);\n\n return complete;\n}\n\n/** Resolves a given function or rejects if the provided timeout is passed. */\nexport function resolveWithTimeout<T>(\n action: () => Promise<T>,\n {\n timeout,\n errorMessage,\n }: {\n /** Duration in milliseconds to wait before asserting a timeout. */\n timeout: number;\n /** Optional error message to use in the assertion. */\n errorMessage?: string;\n }\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new CommandError('TIMEOUT', errorMessage));\n }, timeout);\n action().then(\n (result) => {\n clearTimeout(timeoutId);\n resolve(result);\n },\n (error) => {\n clearTimeout(timeoutId);\n reject(error);\n }\n );\n });\n}\n"],"names":["delayAsync","resolveWithTimeout","waitForActionAsync","timeout","Promise","resolve","setTimeout","action","interval","maxWaitTime","complete","start","Date","now","actionStartTime","actionTimeElapsed","remainingDelayInterval","errorMessage","reject","timeoutId","CommandError","then","result","clearTimeout","error"],"mappings":";;;;;;;;;;;QAGgBA;eAAAA;;QAkCAC;eAAAA;;QA7BMC;eAAAA;;;wBARO;AAGtB,SAASF,WAAWG,OAAe;IACxC,OAAO,IAAIC,QAAQ,CAACC,UAAYC,WAAWD,SAASF;AACtD;AAGO,eAAeD,mBAAsB,EAC1CK,MAAM,EACNC,WAAW,GAAG,EACdC,cAAc,KAAK,EAKpB;IACC,IAAIC;IACJ,MAAMC,QAAQC,KAAKC,GAAG;IACtB,GAAG;QACD,MAAMC,kBAAkBF,KAAKC,GAAG;QAChCH,WAAW,MAAMH;QAEjB,MAAMQ,oBAAoBH,KAAKC,GAAG,KAAKC;QACvC,MAAME,yBAAyBR,WAAWO;QAC1C,IAAIC,yBAAyB,GAAG;YAC9B,MAAMhB,WAAWgB;QACnB;QACA,IAAIJ,KAAKC,GAAG,KAAKF,QAAQF,aAAa;YACpC;QACF;IACF,QAAS,CAACC,UAAU;IAEpB,OAAOA;AACT;AAGO,SAAST,mBACdM,MAAwB,EACxB,EACEJ,OAAO,EACPc,YAAY,EAMb;IAED,OAAO,IAAIb,QAAQ,CAACC,SAASa;QAC3B,MAAMC,YAAYb,WAAW;YAC3BY,OAAO,IAAIE,oBAAY,CAAC,WAAWH;QACrC,GAAGd;QACHI,SAASc,IAAI,CACX,CAACC;YACCC,aAAaJ;YACbd,QAAQiB;QACV,GACA,CAACE;YACCD,aAAaJ;YACbD,OAAOM;QACT;IAEJ;AACF"}
|
package/build/src/utils/dir.js
CHANGED
|
@@ -5,38 +5,41 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
copyAsync
|
|
12
|
+
get copyAsync () {
|
|
13
13
|
return copyAsync;
|
|
14
14
|
},
|
|
15
|
-
copySync
|
|
15
|
+
get copySync () {
|
|
16
16
|
return copySync;
|
|
17
17
|
},
|
|
18
|
-
directoryExistsAsync
|
|
18
|
+
get directoryExistsAsync () {
|
|
19
19
|
return directoryExistsAsync;
|
|
20
20
|
},
|
|
21
|
-
directoryExistsSync
|
|
21
|
+
get directoryExistsSync () {
|
|
22
22
|
return directoryExistsSync;
|
|
23
23
|
},
|
|
24
|
-
ensureDirectory
|
|
24
|
+
get ensureDirectory () {
|
|
25
25
|
return ensureDirectory;
|
|
26
26
|
},
|
|
27
|
-
ensureDirectoryAsync
|
|
27
|
+
get ensureDirectoryAsync () {
|
|
28
28
|
return ensureDirectoryAsync;
|
|
29
29
|
},
|
|
30
|
-
fileExistsAsync
|
|
30
|
+
get fileExistsAsync () {
|
|
31
31
|
return fileExistsAsync;
|
|
32
32
|
},
|
|
33
|
-
fileExistsSync
|
|
33
|
+
get fileExistsSync () {
|
|
34
34
|
return fileExistsSync;
|
|
35
35
|
},
|
|
36
|
-
isPathInside
|
|
36
|
+
get isPathInside () {
|
|
37
37
|
return isPathInside;
|
|
38
38
|
},
|
|
39
|
-
|
|
39
|
+
get maybeRealpathSync () {
|
|
40
|
+
return maybeRealpathSync;
|
|
41
|
+
},
|
|
42
|
+
get removeAsync () {
|
|
40
43
|
return removeAsync;
|
|
41
44
|
}
|
|
42
45
|
});
|
|
@@ -113,6 +116,13 @@ const removeAsync = (path)=>{
|
|
|
113
116
|
force: true
|
|
114
117
|
});
|
|
115
118
|
};
|
|
119
|
+
function maybeRealpathSync(target) {
|
|
120
|
+
try {
|
|
121
|
+
return _fs().default.realpathSync(target);
|
|
122
|
+
} catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
116
126
|
function isPathInside(child, parent) {
|
|
117
127
|
const relative = _path().default.relative(parent, child);
|
|
118
128
|
return !!relative && !relative.startsWith('..') && !_path().default.isAbsolute(relative);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/dir.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nexport function fileExistsSync(file: string): boolean {\n return !!fs\n .statSync(file, {\n throwIfNoEntry: false,\n })\n ?.isFile();\n}\n\nexport function directoryExistsSync(file: string): boolean {\n return !!fs\n .statSync(file, {\n throwIfNoEntry: false,\n })\n ?.isDirectory();\n}\n\nexport async function directoryExistsAsync(file: string): Promise<boolean> {\n return (await fs.promises.stat(file).catch(() => null))?.isDirectory() ?? false;\n}\n\nexport async function fileExistsAsync(file: string): Promise<boolean> {\n return (await fs.promises.stat(file).catch(() => null))?.isFile() ?? false;\n}\n\nexport const ensureDirectoryAsync = (path: string) => fs.promises.mkdir(path, { recursive: true });\n\nexport const ensureDirectory = (path: string): void => {\n fs.mkdirSync(path, {\n recursive: true,\n });\n};\n\nexport const copySync = (src: string, dest: string): void => {\n const destParent = path.dirname(dest);\n if (!fs.existsSync(destParent)) ensureDirectory(destParent);\n fs.cpSync(src, dest, {\n recursive: true,\n force: true,\n });\n};\n\nexport const copyAsync = async (src: string, dest: string): Promise<void> => {\n const destParent = path.dirname(dest);\n if (!fs.existsSync(destParent)) {\n await fs.promises.mkdir(destParent, { recursive: true });\n }\n await fs.promises.cp(src, dest, {\n recursive: true,\n force: true,\n });\n};\n\nexport const removeAsync = (path: string): Promise<void> => {\n return fs.promises.rm(path, {\n recursive: true,\n force: true,\n });\n};\n\nexport function isPathInside(child: string, parent: string): boolean {\n const relative = path.relative(parent, child);\n return !!relative && !relative.startsWith('..') && !path.isAbsolute(relative);\n}\n"],"names":["copyAsync","copySync","directoryExistsAsync","directoryExistsSync","ensureDirectory","ensureDirectoryAsync","fileExistsAsync","fileExistsSync","isPathInside","removeAsync","file","fs","statSync","throwIfNoEntry","isFile","isDirectory","promises","stat","catch","path","mkdir","recursive","mkdirSync","src","dest","destParent","dirname","existsSync","cpSync","force","cp","rm","child","parent","relative","startsWith","isAbsolute"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/dir.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nexport function fileExistsSync(file: string): boolean {\n return !!fs\n .statSync(file, {\n throwIfNoEntry: false,\n })\n ?.isFile();\n}\n\nexport function directoryExistsSync(file: string): boolean {\n return !!fs\n .statSync(file, {\n throwIfNoEntry: false,\n })\n ?.isDirectory();\n}\n\nexport async function directoryExistsAsync(file: string): Promise<boolean> {\n return (await fs.promises.stat(file).catch(() => null))?.isDirectory() ?? false;\n}\n\nexport async function fileExistsAsync(file: string): Promise<boolean> {\n return (await fs.promises.stat(file).catch(() => null))?.isFile() ?? false;\n}\n\nexport const ensureDirectoryAsync = (path: string) => fs.promises.mkdir(path, { recursive: true });\n\nexport const ensureDirectory = (path: string): void => {\n fs.mkdirSync(path, {\n recursive: true,\n });\n};\n\nexport const copySync = (src: string, dest: string): void => {\n const destParent = path.dirname(dest);\n if (!fs.existsSync(destParent)) ensureDirectory(destParent);\n fs.cpSync(src, dest, {\n recursive: true,\n force: true,\n });\n};\n\nexport const copyAsync = async (src: string, dest: string): Promise<void> => {\n const destParent = path.dirname(dest);\n if (!fs.existsSync(destParent)) {\n await fs.promises.mkdir(destParent, { recursive: true });\n }\n await fs.promises.cp(src, dest, {\n recursive: true,\n force: true,\n });\n};\n\nexport const removeAsync = (path: string): Promise<void> => {\n return fs.promises.rm(path, {\n recursive: true,\n force: true,\n });\n};\n\nexport function maybeRealpathSync(target: string): string | null {\n try {\n return fs.realpathSync(target);\n } catch {\n return null;\n }\n}\n\nexport function isPathInside(child: string, parent: string): boolean {\n const relative = path.relative(parent, child);\n return !!relative && !relative.startsWith('..') && !path.isAbsolute(relative);\n}\n"],"names":["copyAsync","copySync","directoryExistsAsync","directoryExistsSync","ensureDirectory","ensureDirectoryAsync","fileExistsAsync","fileExistsSync","isPathInside","maybeRealpathSync","removeAsync","file","fs","statSync","throwIfNoEntry","isFile","isDirectory","promises","stat","catch","path","mkdir","recursive","mkdirSync","src","dest","destParent","dirname","existsSync","cpSync","force","cp","rm","target","realpathSync","child","parent","relative","startsWith","isAbsolute"],"mappings":";;;;;;;;;;;QA4CaA;eAAAA;;QATAC;eAAAA;;QAhBSC;eAAAA;;QARNC;eAAAA;;QAkBHC;eAAAA;;QAFAC;eAAAA;;QAJSC;eAAAA;;QApBNC;eAAAA;;QAmEAC;eAAAA;;QARAC;eAAAA;;QAPHC;eAAAA;;;;gEAvDE;;;;;;;gEACE;;;;;;;;;;;AAEV,SAASH,eAAeI,IAAY;QAChCC;IAAT,OAAO,CAAC,GAACA,eAAAA,aAAE,CACRC,QAAQ,CAACF,MAAM;QACdG,gBAAgB;IAClB,uBAHOF,aAILG,MAAM;AACZ;AAEO,SAASZ,oBAAoBQ,IAAY;QACrCC;IAAT,OAAO,CAAC,GAACA,eAAAA,aAAE,CACRC,QAAQ,CAACF,MAAM;QACdG,gBAAgB;IAClB,uBAHOF,aAILI,WAAW;AACjB;AAEO,eAAed,qBAAqBS,IAAY;QAC7C;IAAR,OAAO,EAAC,QAAA,MAAMC,aAAE,CAACK,QAAQ,CAACC,IAAI,CAACP,MAAMQ,KAAK,CAAC,IAAM,0BAA1C,AAAC,MAAiDH,WAAW,OAAM;AAC5E;AAEO,eAAeV,gBAAgBK,IAAY;QACxC;IAAR,OAAO,EAAC,QAAA,MAAMC,aAAE,CAACK,QAAQ,CAACC,IAAI,CAACP,MAAMQ,KAAK,CAAC,IAAM,0BAA1C,AAAC,MAAiDJ,MAAM,OAAM;AACvE;AAEO,MAAMV,uBAAuB,CAACe,OAAiBR,aAAE,CAACK,QAAQ,CAACI,KAAK,CAACD,MAAM;QAAEE,WAAW;IAAK;AAEzF,MAAMlB,kBAAkB,CAACgB;IAC9BR,aAAE,CAACW,SAAS,CAACH,MAAM;QACjBE,WAAW;IACb;AACF;AAEO,MAAMrB,WAAW,CAACuB,KAAaC;IACpC,MAAMC,aAAaN,eAAI,CAACO,OAAO,CAACF;IAChC,IAAI,CAACb,aAAE,CAACgB,UAAU,CAACF,aAAatB,gBAAgBsB;IAChDd,aAAE,CAACiB,MAAM,CAACL,KAAKC,MAAM;QACnBH,WAAW;QACXQ,OAAO;IACT;AACF;AAEO,MAAM9B,YAAY,OAAOwB,KAAaC;IAC3C,MAAMC,aAAaN,eAAI,CAACO,OAAO,CAACF;IAChC,IAAI,CAACb,aAAE,CAACgB,UAAU,CAACF,aAAa;QAC9B,MAAMd,aAAE,CAACK,QAAQ,CAACI,KAAK,CAACK,YAAY;YAAEJ,WAAW;QAAK;IACxD;IACA,MAAMV,aAAE,CAACK,QAAQ,CAACc,EAAE,CAACP,KAAKC,MAAM;QAC9BH,WAAW;QACXQ,OAAO;IACT;AACF;AAEO,MAAMpB,cAAc,CAACU;IAC1B,OAAOR,aAAE,CAACK,QAAQ,CAACe,EAAE,CAACZ,MAAM;QAC1BE,WAAW;QACXQ,OAAO;IACT;AACF;AAEO,SAASrB,kBAAkBwB,MAAc;IAC9C,IAAI;QACF,OAAOrB,aAAE,CAACsB,YAAY,CAACD;IACzB,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAEO,SAASzB,aAAa2B,KAAa,EAAEC,MAAc;IACxD,MAAMC,WAAWjB,eAAI,CAACiB,QAAQ,CAACD,QAAQD;IACvC,OAAO,CAAC,CAACE,YAAY,CAACA,SAASC,UAAU,CAAC,SAAS,CAAClB,eAAI,CAACmB,UAAU,CAACF;AACtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/downloadAppAsync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { Readable, Stream } from 'stream';\nimport type { ReadableStream } from 'stream/web';\nimport { promisify } from 'util';\n\nimport { createTempFilePath } from './createTempPath';\nimport { ensureDirectoryAsync } from './dir';\nimport { CommandError } from './errors';\nimport { extractAsync } from './tar';\nimport { createCachedFetch, fetchAsync } from '../api/rest/client';\nimport { FetchLike, ProgressCallback } from '../api/rest/client.types';\n\nconst debug = require('debug')('expo:utils:downloadAppAsync') as typeof console.log;\n\nconst pipeline = promisify(Stream.pipeline);\n\nasync function downloadAsync({\n url,\n outputPath,\n cacheDirectory,\n onProgress,\n}: {\n url: string;\n outputPath: string;\n cacheDirectory?: string;\n onProgress?: ProgressCallback;\n}) {\n let fetchInstance: FetchLike = fetchAsync;\n if (cacheDirectory) {\n // Reconstruct the cached fetch since caching could be disabled.\n fetchInstance = createCachedFetch({\n // We'll use a 1 week cache for versions so older values get flushed out eventually.\n ttl: 1000 * 60 * 60 * 24 * 7,\n // Users can also nuke their `~/.expo` directory to clear the cache.\n cacheDirectory,\n });\n }\n\n debug(`Downloading ${url} to ${outputPath}`);\n const res = await fetchInstance(url, {\n onProgress,\n });\n if (!res.ok || !res.body) {\n throw new CommandError(\n 'FILE_DOWNLOAD',\n `Unexpected response: ${res.statusText}. From url: ${url}`\n );\n }\n return pipeline(Readable.fromWeb(res.body as ReadableStream), fs.createWriteStream(outputPath));\n}\n\nexport async function downloadAppAsync({\n url,\n outputPath,\n extract = false,\n cacheDirectory,\n onProgress,\n}: {\n url: string;\n outputPath: string;\n extract?: boolean;\n cacheDirectory?: string;\n onProgress?: ProgressCallback;\n}): Promise<void> {\n if (extract) {\n // For iOS we download the ipa to a file then pass that file into the extractor.\n // In the future we should just pipe the `res.body -> tar.extract` directly.\n // I tried this and it created some weird errors where observing the data stream\n // would corrupt the file causing tar to fail with `TAR_BAD_ARCHIVE`.\n const tmpPath = createTempFilePath(path.basename(outputPath));\n await downloadAsync({ url, outputPath: tmpPath, cacheDirectory, onProgress });\n debug(`Extracting ${tmpPath} to ${outputPath}`);\n await ensureDirectoryAsync(outputPath);\n await extractAsync(tmpPath, outputPath);\n } else {\n await ensureDirectoryAsync(path.dirname(outputPath));\n await downloadAsync({ url, outputPath, cacheDirectory, onProgress });\n }\n}\n"],"names":["downloadAppAsync","debug","require","pipeline","promisify","Stream","downloadAsync","url","outputPath","cacheDirectory","onProgress","fetchInstance","fetchAsync","createCachedFetch","ttl","res","ok","body","CommandError","statusText","Readable","fromWeb","fs","createWriteStream","extract","tmpPath","createTempFilePath","path","basename","ensureDirectoryAsync","extractAsync","dirname"],"mappings":";;;;+BAoDsBA;;;eAAAA;;;;gEApDP;;;;;;;gEACE;;;;;;;yBACgB;;;;;;;yBAEP;;;;;;gCAES;qBACE;wBACR;qBACA;wBACiB;;;;;;AAG9C,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,MAAMC,WAAWC,IAAAA,iBAAS,EAACC,gBAAM,CAACF,QAAQ;AAE1C,eAAeG,cAAc,EAC3BC,GAAG,EACHC,UAAU,EACVC,cAAc,EACdC,UAAU,EAMX;IACC,IAAIC,gBAA2BC,kBAAU;IACzC,IAAIH,gBAAgB;QAClB,gEAAgE;QAChEE,gBAAgBE,IAAAA,yBAAiB,EAAC;YAChC,oFAAoF;YACpFC,KAAK,OAAO,KAAK,KAAK,KAAK;YAC3B,oEAAoE;YACpEL;QACF;IACF;IAEAR,MAAM,CAAC,YAAY,EAAEM,IAAI,IAAI,EAAEC,YAAY;IAC3C,MAAMO,MAAM,MAAMJ,cAAcJ,KAAK;QACnCG;IACF;IACA,IAAI,CAACK,IAAIC,EAAE,IAAI,CAACD,IAAIE,IAAI,EAAE;QACxB,MAAM,IAAIC,oBAAY,CACpB,iBACA,CAAC,qBAAqB,EAAEH,IAAII,UAAU,CAAC,YAAY,EAAEZ,KAAK;IAE9D;IACA,OAAOJ,SAASiB,kBAAQ,CAACC,OAAO,CAACN,IAAIE,IAAI,GAAqBK,aAAE,CAACC,iBAAiB,CAACf;AACrF;AAEO,eAAeR,iBAAiB,EACrCO,GAAG,EACHC,UAAU,EACVgB,UAAU,KAAK,EACff,cAAc,EACdC,UAAU,EAOX;IACC,IAAIc,SAAS;QACX,gFAAgF;QAChF,4EAA4E;QAC5E,gFAAgF;QAChF,qEAAqE;QACrE,MAAMC,UAAUC,IAAAA,kCAAkB,EAACC,eAAI,CAACC,QAAQ,CAACpB;QACjD,MAAMF,cAAc;YAAEC;YAAKC,YAAYiB;YAAShB;YAAgBC;QAAW;QAC3ET,MAAM,CAAC,WAAW,EAAEwB,QAAQ,IAAI,EAAEjB,YAAY;QAC9C,MAAMqB,IAAAA,yBAAoB,EAACrB;QAC3B,MAAMsB,IAAAA,iBAAY,EAACL,SAASjB;IAC9B,OAAO;QACL,MAAMqB,IAAAA,yBAAoB,EAACF,eAAI,CAACI,OAAO,CAACvB;QACxC,MAAMF,cAAc;YAAEC;YAAKC;YAAYC;YAAgBC;QAAW;IACpE;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/downloadAppAsync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { Readable, Stream } from 'stream';\nimport type { ReadableStream } from 'stream/web';\nimport { promisify } from 'util';\n\nimport { createTempFilePath } from './createTempPath';\nimport { ensureDirectoryAsync } from './dir';\nimport { CommandError } from './errors';\nimport { extractAsync } from './tar';\nimport { createCachedFetch, fetchAsync } from '../api/rest/client';\nimport type { FetchLike, ProgressCallback } from '../api/rest/client.types';\n\nconst debug = require('debug')('expo:utils:downloadAppAsync') as typeof console.log;\n\nconst pipeline = promisify(Stream.pipeline);\n\nasync function downloadAsync({\n url,\n outputPath,\n cacheDirectory,\n onProgress,\n}: {\n url: string;\n outputPath: string;\n cacheDirectory?: string;\n onProgress?: ProgressCallback;\n}) {\n let fetchInstance: FetchLike = fetchAsync;\n if (cacheDirectory) {\n // Reconstruct the cached fetch since caching could be disabled.\n fetchInstance = createCachedFetch({\n // We'll use a 1 week cache for versions so older values get flushed out eventually.\n ttl: 1000 * 60 * 60 * 24 * 7,\n // Users can also nuke their `~/.expo` directory to clear the cache.\n cacheDirectory,\n });\n }\n\n debug(`Downloading ${url} to ${outputPath}`);\n const res = await fetchInstance(url, {\n onProgress,\n });\n if (!res.ok || !res.body) {\n throw new CommandError(\n 'FILE_DOWNLOAD',\n `Unexpected response: ${res.statusText}. From url: ${url}`\n );\n }\n return pipeline(Readable.fromWeb(res.body as ReadableStream), fs.createWriteStream(outputPath));\n}\n\nexport async function downloadAppAsync({\n url,\n outputPath,\n extract = false,\n cacheDirectory,\n onProgress,\n}: {\n url: string;\n outputPath: string;\n extract?: boolean;\n cacheDirectory?: string;\n onProgress?: ProgressCallback;\n}): Promise<void> {\n if (extract) {\n // For iOS we download the ipa to a file then pass that file into the extractor.\n // In the future we should just pipe the `res.body -> tar.extract` directly.\n // I tried this and it created some weird errors where observing the data stream\n // would corrupt the file causing tar to fail with `TAR_BAD_ARCHIVE`.\n const tmpPath = createTempFilePath(path.basename(outputPath));\n await downloadAsync({ url, outputPath: tmpPath, cacheDirectory, onProgress });\n debug(`Extracting ${tmpPath} to ${outputPath}`);\n await ensureDirectoryAsync(outputPath);\n await extractAsync(tmpPath, outputPath);\n } else {\n await ensureDirectoryAsync(path.dirname(outputPath));\n await downloadAsync({ url, outputPath, cacheDirectory, onProgress });\n }\n}\n"],"names":["downloadAppAsync","debug","require","pipeline","promisify","Stream","downloadAsync","url","outputPath","cacheDirectory","onProgress","fetchInstance","fetchAsync","createCachedFetch","ttl","res","ok","body","CommandError","statusText","Readable","fromWeb","fs","createWriteStream","extract","tmpPath","createTempFilePath","path","basename","ensureDirectoryAsync","extractAsync","dirname"],"mappings":";;;;+BAoDsBA;;;eAAAA;;;;gEApDP;;;;;;;gEACE;;;;;;;yBACgB;;;;;;;yBAEP;;;;;;gCAES;qBACE;wBACR;qBACA;wBACiB;;;;;;AAG9C,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,MAAMC,WAAWC,IAAAA,iBAAS,EAACC,gBAAM,CAACF,QAAQ;AAE1C,eAAeG,cAAc,EAC3BC,GAAG,EACHC,UAAU,EACVC,cAAc,EACdC,UAAU,EAMX;IACC,IAAIC,gBAA2BC,kBAAU;IACzC,IAAIH,gBAAgB;QAClB,gEAAgE;QAChEE,gBAAgBE,IAAAA,yBAAiB,EAAC;YAChC,oFAAoF;YACpFC,KAAK,OAAO,KAAK,KAAK,KAAK;YAC3B,oEAAoE;YACpEL;QACF;IACF;IAEAR,MAAM,CAAC,YAAY,EAAEM,IAAI,IAAI,EAAEC,YAAY;IAC3C,MAAMO,MAAM,MAAMJ,cAAcJ,KAAK;QACnCG;IACF;IACA,IAAI,CAACK,IAAIC,EAAE,IAAI,CAACD,IAAIE,IAAI,EAAE;QACxB,MAAM,IAAIC,oBAAY,CACpB,iBACA,CAAC,qBAAqB,EAAEH,IAAII,UAAU,CAAC,YAAY,EAAEZ,KAAK;IAE9D;IACA,OAAOJ,SAASiB,kBAAQ,CAACC,OAAO,CAACN,IAAIE,IAAI,GAAqBK,aAAE,CAACC,iBAAiB,CAACf;AACrF;AAEO,eAAeR,iBAAiB,EACrCO,GAAG,EACHC,UAAU,EACVgB,UAAU,KAAK,EACff,cAAc,EACdC,UAAU,EAOX;IACC,IAAIc,SAAS;QACX,gFAAgF;QAChF,4EAA4E;QAC5E,gFAAgF;QAChF,qEAAqE;QACrE,MAAMC,UAAUC,IAAAA,kCAAkB,EAACC,eAAI,CAACC,QAAQ,CAACpB;QACjD,MAAMF,cAAc;YAAEC;YAAKC,YAAYiB;YAAShB;YAAgBC;QAAW;QAC3ET,MAAM,CAAC,WAAW,EAAEwB,QAAQ,IAAI,EAAEjB,YAAY;QAC9C,MAAMqB,IAAAA,yBAAoB,EAACrB;QAC3B,MAAMsB,IAAAA,iBAAY,EAACL,SAASjB;IAC9B,OAAO;QACL,MAAMqB,IAAAA,yBAAoB,EAACF,eAAI,CAACI,OAAO,CAACvB;QACxC,MAAMF,cAAc;YAAEC;YAAKC;YAAYC;YAAgBC;QAAW;IACpE;AACF"}
|
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
cleanupOldExpoGoCacheEntriesAsync
|
|
12
|
+
get cleanupOldExpoGoCacheEntriesAsync () {
|
|
13
13
|
return cleanupOldExpoGoCacheEntriesAsync;
|
|
14
14
|
},
|
|
15
|
-
downloadExpoGoAsync
|
|
15
|
+
get downloadExpoGoAsync () {
|
|
16
16
|
return downloadExpoGoAsync;
|
|
17
17
|
},
|
|
18
|
-
getExpoGoVersionEntryAsync
|
|
18
|
+
get getExpoGoVersionEntryAsync () {
|
|
19
19
|
return getExpoGoVersionEntryAsync;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/downloadExpoGoAsync.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport path from 'path';\nimport ProgressBar from 'progress';\nimport { gt } from 'semver';\n\nimport { downloadAppAsync } from './downloadAppAsync';\nimport { CommandError } from './errors';\nimport { ora } from './ora';\nimport { profile } from './profile';\nimport { createProgressBar } from './progress';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/downloadExpoGoAsync.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport path from 'path';\nimport type ProgressBar from 'progress';\nimport { gt } from 'semver';\n\nimport { downloadAppAsync } from './downloadAppAsync';\nimport { CommandError } from './errors';\nimport { ora } from './ora';\nimport { profile } from './profile';\nimport { createProgressBar } from './progress';\nimport type { SDKVersion } from '../api/getVersions';\nimport { getVersionsAsync } from '../api/getVersions';\nimport { getExpoHomeDirectory } from '../api/user/UserSettings';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:downloadExpoGo') as typeof console.log;\n\nconst platformSettings = {\n ios: {\n versionsKey: 'iosClientUrl',\n getFilePath: (filename: string) =>\n path.join(getExpoHomeDirectory(), 'ios-simulator-app-cache', `${filename}.app`),\n shouldExtractResults: true,\n },\n android: {\n versionsKey: 'androidClientUrl',\n getFilePath: (filename: string) =>\n path.join(getExpoHomeDirectory(), 'android-apk-cache', `${filename}.apk`),\n shouldExtractResults: false,\n },\n} as const;\n\n/**\n * @internal exposed for testing.\n * @returns the matching `SDKVersion` object from the Expo API.\n */\nexport async function getExpoGoVersionEntryAsync(sdkVersion: string): Promise<SDKVersion> {\n const { sdkVersions: versions } = await getVersionsAsync();\n let version: SDKVersion | undefined;\n if (sdkVersion.toUpperCase() === 'UNVERSIONED') {\n // find the latest version\n const latestVersionKey = Object.keys(versions).reduce((a, b) => {\n if (gt(b, a)) {\n return b;\n }\n return a;\n }, '0.0.0');\n\n Log.warn(\n `Downloading the latest Expo Go client (${latestVersionKey}). This will not fully conform to UNVERSIONED.`\n );\n version = versions[latestVersionKey];\n } else {\n version = versions[sdkVersion];\n }\n\n if (!version) {\n throw new CommandError(`Unable to find a version of Expo Go for SDK ${sdkVersion}`);\n }\n return version;\n}\n\nconst SIX_MONTHS_IN_MS = 6 * 30 * 24 * 60 * 60 * 1000;\n\n/** Remove cached Expo Go apps (.apk / .app) that are older than `maxAge` from the given directory. */\nexport async function cleanupOldExpoGoCacheEntriesAsync(\n cacheDirectory: string,\n maxAgeMs: number = SIX_MONTHS_IN_MS\n): Promise<void> {\n let cacheEntries: string[];\n try {\n cacheEntries = await fs.readdir(cacheDirectory);\n } catch {\n return;\n }\n\n const now = Date.now();\n for (const entry of cacheEntries) {\n const filePath = path.join(cacheDirectory, entry);\n try {\n const stat = await fs.lstat(filePath);\n if (now - stat.mtimeMs > maxAgeMs) {\n debug(`Removing old app cache entry: ${filePath}`);\n await fs.rm(filePath, { recursive: true, force: true });\n }\n } catch {\n // continue\n }\n }\n}\n\n/** Download the Expo Go app from the Expo servers (if only it was this easy for every app). */\nexport async function downloadExpoGoAsync(\n platform: keyof typeof platformSettings,\n {\n url,\n sdkVersion,\n }: {\n url?: string;\n sdkVersion: string;\n }\n): Promise<string> {\n const { getFilePath, versionsKey, shouldExtractResults } = platformSettings[platform];\n\n const spinner = ora({ text: 'Fetching Expo Go', color: 'white' }).start();\n\n let bar: ProgressBar | null = null;\n\n try {\n if (!url) {\n const version = await getExpoGoVersionEntryAsync(sdkVersion);\n\n debug(`Installing Expo Go version for SDK ${sdkVersion} at URL: ${version[versionsKey]}`);\n url = version[versionsKey] as string;\n }\n } catch (error) {\n spinner.fail();\n throw error;\n }\n\n const filename = path.parse(url).name;\n\n try {\n const outputPath = getFilePath(filename);\n cleanupOldExpoGoCacheEntriesAsync(path.dirname(outputPath));\n debug(`Downloading Expo Go from \"${url}\" to \"${outputPath}\".`);\n debug(\n `The requested copy of Expo Go might already be cached in: \"${getExpoHomeDirectory()}\". You can disable the cache with EXPO_NO_CACHE=1`\n );\n await profile(downloadAppAsync)({\n url,\n // Save all encrypted cache data to `~/.expo/expo-go`\n cacheDirectory: 'expo-go',\n outputPath,\n extract: shouldExtractResults,\n onProgress({ progress, total }) {\n if (progress && total) {\n if (!bar) {\n if (spinner.isSpinning) {\n spinner.stop();\n }\n bar = createProgressBar('Downloading the Expo Go app [:bar] :percent :etas', {\n width: 64,\n total: 100,\n // clear: true,\n complete: '=',\n incomplete: ' ',\n });\n } else {\n bar.update(progress, total);\n }\n }\n },\n });\n return outputPath;\n } finally {\n spinner.stop();\n (bar as ProgressBar | null)?.terminate();\n }\n}\n"],"names":["cleanupOldExpoGoCacheEntriesAsync","downloadExpoGoAsync","getExpoGoVersionEntryAsync","debug","require","platformSettings","ios","versionsKey","getFilePath","filename","path","join","getExpoHomeDirectory","shouldExtractResults","android","sdkVersion","sdkVersions","versions","getVersionsAsync","version","toUpperCase","latestVersionKey","Object","keys","reduce","a","b","gt","Log","warn","CommandError","SIX_MONTHS_IN_MS","cacheDirectory","maxAgeMs","cacheEntries","fs","readdir","now","Date","entry","filePath","stat","lstat","mtimeMs","rm","recursive","force","platform","url","spinner","ora","text","color","start","bar","error","fail","parse","name","outputPath","dirname","profile","downloadAppAsync","extract","onProgress","progress","total","isSpinning","stop","createProgressBar","width","complete","incomplete","update","terminate"],"mappings":"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"}
|
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
guessEditor
|
|
12
|
+
get guessEditor () {
|
|
13
13
|
return guessEditor;
|
|
14
14
|
},
|
|
15
|
-
guessFallbackVisualEditor
|
|
15
|
+
get guessFallbackVisualEditor () {
|
|
16
16
|
return guessFallbackVisualEditor;
|
|
17
17
|
},
|
|
18
|
-
openInEditorAsync
|
|
18
|
+
get openInEditorAsync () {
|
|
19
19
|
return openInEditorAsync;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/editor.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport { env } from './env';\nimport * as Log from '../log';\n\nconst debug = require('debug')('expo:utils:editor') as typeof console.log;\n\ninterface Editor {\n id: string;\n name: string;\n binary: string;\n isTerminalEditor: boolean;\n isOSXOnly?: boolean;\n paths: string[];\n keywords: string[];\n}\n\n// See: https://github.com/sindresorhus/env-editor/blob/3f6aea10ff53910c877b1bf73a8e0c954a5fbf11/index.js\n// MIT License, Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\nfunction getEditor(input: string | undefined, allowAnyEditor = false): Editor | null {\n const needle = input?.trim().toLowerCase();\n if (!needle) {\n return null;\n }\n const id = needle.split(/[/\\\\]/).pop()?.replace(/\\s/g, '-');\n const binary = id?.split('-')[0];\n const editor =\n EDITORS.find((editor) => {\n switch (needle) {\n case editor.id:\n case editor.name.toLowerCase():\n case editor.binary:\n return true;\n default:\n for (const editorPath of editor.paths) {\n if (path.normalize(needle) === path.normalize(editorPath.toLowerCase())) return true;\n }\n for (const keyword of editor.keywords) {\n if (needle === keyword) return true;\n }\n return false;\n }\n }) ?? (binary ? EDITORS.find((editor) => editor.binary === binary) : null);\n if (allowAnyEditor && id && binary && !editor) {\n return {\n id,\n name: needle,\n binary,\n isTerminalEditor: false,\n paths: [],\n keywords: [],\n };\n }\n return editor || null;\n}\n\n/** Guess what the default editor is and default to VSCode. */\nexport function guessEditor(): Editor | null {\n let editor: Editor | null = null;\n if (env.EXPO_EDITOR) {\n editor = getEditor(env.EXPO_EDITOR);\n if (editor) {\n debug('Using $EXPO_EDITOR:', editor.name);\n }\n }\n\n if (!editor && process.env.VISUAL) {\n editor = getEditor(process.env.VISUAL);\n if (editor) {\n debug('Using $VISUAL:', editor.name);\n }\n }\n\n if (!editor && process.env.EDITOR) {\n editor = getEditor(process.env.EDITOR);\n if (editor) {\n debug('Using $EDITOR:', editor.name);\n }\n }\n\n return editor;\n}\n\nexport async function guessFallbackVisualEditor(): Promise<Editor | null> {\n // We search for editors at known `editor.paths`\n for (const editor of VISUAL_EDITORS) {\n const target = await editorExistsAtPaths(editor);\n if (target) {\n debug('Found visual editor fallback:', editor.name);\n return { ...editor, binary: target };\n }\n }\n // We search again for a visual editor against `editor.binary` in `$PATH`\n for (const editor of VISUAL_EDITORS) {\n const target = await editorExistsInPath(editor);\n if (target) {\n debug('Found visual editor fallback in $PATH:', editor.name);\n return { ...editor, binary: target };\n }\n }\n return null;\n}\n\nlet _cachedEditor: Editor | null | undefined;\n\nasync function determineEditorAsync(): Promise<Editor | null> {\n if (_cachedEditor !== undefined) {\n return _cachedEditor;\n }\n\n // First: Try to get a known editor\n let editor = guessEditor();\n\n // Second: If we don't have a known editor, fall back to EXPO_EDITOR / VISUAL resolution\n // We check if the binary in these environment variables exists in the $PATH\n const forceEditorName = env.EXPO_EDITOR ?? process.env.VISUAL;\n if (!editor && forceEditorName) {\n const forceEditor = getEditor(forceEditorName, true);\n if (forceEditor && (await editorExistsInPath(forceEditor))) {\n editor = forceEditor;\n }\n }\n\n // Third: Try to find a fallback visual editor, but keep the found one if we can't find a fallback\n if (editor?.isTerminalEditor) {\n const fallback = await guessFallbackVisualEditor();\n if (fallback) {\n editor = fallback;\n }\n }\n\n return (_cachedEditor = editor);\n}\n\n/** Open a file path in a given editor. */\nexport async function openInEditorAsync(path: string, lineNumber?: number): Promise<boolean> {\n const editor = await determineEditorAsync();\n\n if (editor && !editor.isTerminalEditor) {\n const fileReference = lineNumber ? `${path}:${lineNumber}` : path;\n debug(\n `Opening ${fileReference} in ${editor?.name} (bin: ${editor?.binary}, id: ${editor?.id})`\n );\n\n if (editor) {\n try {\n await spawnAsync(editor.binary, getEditorArguments(editor, path, lineNumber), {\n timeout: 1_000,\n });\n return true;\n } catch (error: any) {\n // NOTE(@kitten): The process might explicitly request to be terminated, which is fine\n if (error?.signal === 'SIGTERM') {\n return true;\n }\n debug(\n `Failed to open ${fileReference} in editor (path: ${path}, binary: ${editor.binary}):`,\n error\n );\n }\n }\n }\n\n Log.error(\n (editor?.isTerminalEditor\n ? `Could not open ${editor.name} as it's a terminal editor.`\n : 'Could not open editor.') +\n `\\nYou can set an editor for Expo to open by defining the $EXPO_EDITOR or $VISUAL environment variable (e.g. \"vscode\" or \"atom\")`\n );\n return false;\n}\n\nfunction getEditorArguments(editor: Editor, path: string, lineNumber?: number): string[] {\n switch (editor.id) {\n case 'atom':\n case 'sublime':\n return lineNumber ? [`${path}:${lineNumber}`] : [path];\n\n case 'emacs':\n case 'emacsforosx':\n case 'nano':\n case 'neovim':\n case 'vim':\n return lineNumber ? [`+${lineNumber}`, path] : [path];\n\n case 'android-studio':\n case 'intellij':\n case 'textmate':\n case 'webstorm':\n case 'xcode':\n return lineNumber ? [`--line=${lineNumber}`, path] : [path];\n\n case 'vscode':\n case 'vscodium':\n case 'cursor':\n return lineNumber ? ['-g', `${path}:${lineNumber}`] : ['-g', path];\n\n case 'zed':\n // '-r': Stands for \"--reuse\" and ensures we don't use the `zed` GUI binary, since the Zed CLI\n // is linked as `zed` into `$PATH` when it's actually the CLI\n return lineNumber ? ['-r', `${path}:${lineNumber}`] : ['-r', path];\n\n default:\n return [path];\n }\n}\n\n/** Attempt to resolve an editor against $PATH */\nasync function editorExistsInPath(editor: Editor) {\n if (process.platform !== 'darwin' && editor.isOSXOnly) {\n return null;\n }\n const binary = editor.binary;\n const paths = (process.env.PATH || process.env.Path || '')\n .split(path.delimiter)\n .map((target) => target.trim())\n .filter((target) => !!target);\n const exts =\n process.platform === 'win32'\n ? (process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM').split(path.delimiter).filter(Boolean)\n : [''];\n const targets = paths.flatMap((dir) => exts.map((ext) => path.join(dir, `${binary}${ext}`)));\n for (const target of targets) {\n try {\n const mode = process.platform === 'win32' ? fs.constants.F_OK : fs.constants.X_OK;\n await fs.promises.access(target, mode);\n return target;\n } catch {\n // ignore not found and continue\n }\n }\n return null;\n}\n\n/** Attempt to resolve an editor against known `paths` */\nasync function editorExistsAtPaths(editor: Editor) {\n // We can skip the path if it's not for our platform (win32 vs posix paths)\n const targets = editor.paths.filter((target) => target.includes(path.sep));\n for (const target of targets) {\n try {\n const mode = process.platform === 'win32' ? fs.constants.F_OK : fs.constants.X_OK;\n await fs.promises.access(target, mode);\n return target;\n } catch {\n // ignore not found and continue\n }\n }\n return null;\n}\n\nconst TERMINAL_EDITORS: (Editor & { isTerminalEditor: true })[] = [\n {\n id: 'vim',\n name: 'Vim',\n binary: 'vim',\n isTerminalEditor: true,\n paths: [],\n keywords: ['vi'],\n },\n {\n id: 'neovim',\n name: 'NeoVim',\n binary: 'nvim',\n isTerminalEditor: true,\n paths: [],\n keywords: ['vim'],\n },\n {\n id: 'nano',\n name: 'GNU nano',\n binary: 'nano',\n isTerminalEditor: true,\n paths: [],\n keywords: [],\n },\n {\n id: 'emacs',\n name: 'GNU Emacs',\n binary: 'emacs',\n isTerminalEditor: true,\n paths: [],\n keywords: [],\n },\n];\n\nconst VISUAL_EDITORS: (Editor & { isTerminalEditor: false })[] = [\n {\n id: 'vscode',\n name: 'Visual Studio Code',\n binary: 'code',\n isTerminalEditor: false,\n paths: ['/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code'],\n keywords: ['vs code'],\n },\n {\n id: 'vscode-insiders',\n name: 'Visual Studio Code - Insiders',\n binary: 'code-insiders',\n isTerminalEditor: false,\n paths: [\n '/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders',\n ],\n keywords: ['vs code insiders', 'code insiders', 'insiders'],\n },\n {\n id: 'vscodium',\n name: 'VSCodium',\n binary: 'codium',\n isTerminalEditor: false,\n paths: ['/Applications/VSCodium.app/Contents/Resources/app/bin/codium'],\n keywords: [],\n },\n {\n id: 'cursor',\n name: 'Cursor',\n binary: 'cursor',\n isTerminalEditor: false,\n paths: ['/Applications/Cursor.app/Contents/Resources/app/bin/codium'],\n keywords: [],\n },\n {\n id: 'sublime',\n name: 'Sublime Text',\n binary: 'subl',\n isTerminalEditor: false,\n paths: [\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n ],\n keywords: [],\n },\n {\n id: 'atom',\n name: 'Atom',\n binary: 'atom',\n isTerminalEditor: false,\n paths: ['/Applications/Atom.app/Contents/Resources/app/atom.sh'],\n keywords: [],\n },\n {\n id: 'webstorm',\n name: 'WebStorm',\n binary: 'webstorm',\n isTerminalEditor: false,\n paths: [],\n keywords: ['wstorm'],\n },\n {\n id: 'phpstorm',\n name: 'PhpStorm',\n binary: 'pstorm',\n isTerminalEditor: false,\n paths: [],\n keywords: ['php'],\n },\n {\n id: 'zed',\n name: 'Zed',\n binary: 'zed',\n isTerminalEditor: false,\n paths: ['/Applications/Zed.app/Contents/MacOS/cli'],\n keywords: [],\n },\n {\n id: 'textmate',\n name: 'TextMate',\n binary: 'mate',\n isTerminalEditor: false,\n paths: [],\n keywords: [],\n },\n {\n id: 'intellij',\n name: 'IntelliJ IDEA',\n binary: 'idea',\n isTerminalEditor: false,\n paths: [],\n keywords: ['idea', 'java', 'jetbrains', 'ide'],\n },\n {\n id: 'emacsforosx',\n name: 'GNU Emacs for Mac OS X',\n binary: 'Emacs',\n isTerminalEditor: false,\n isOSXOnly: true,\n paths: ['/Applications/Emacs.app/Contents/MacOS/Emacs'],\n keywords: [],\n },\n {\n id: 'xcode',\n name: 'Xcode',\n binary: 'xed',\n isTerminalEditor: false,\n isOSXOnly: true,\n paths: [\n '/Applications/Xcode.app/Contents/MacOS/Xcode',\n '/Applications/Xcode-beta.app/Contents/MacOS/Xcode',\n ],\n keywords: ['xed'],\n },\n {\n id: 'android-studio',\n name: 'Android Studio',\n binary: 'studio',\n isTerminalEditor: false,\n paths: [\n '/Applications/Android Studio.app/Contents/MacOS/studio',\n '/usr/local/Android/android-studio/bin/studio.sh',\n 'C:\\\\Program Files (x86)\\\\Android\\\\android-studio\\\\bin\\\\studio.exe',\n 'C:\\\\Program Files\\\\Android\\\\android-studio\\\\bin\\\\studio64.exe',\n ],\n keywords: ['studio'],\n },\n];\n\nconst EDITORS: Editor[] = [...VISUAL_EDITORS, ...TERMINAL_EDITORS];\n"],"names":["guessEditor","guessFallbackVisualEditor","openInEditorAsync","debug","require","getEditor","input","allowAnyEditor","needle","trim","toLowerCase","id","split","pop","replace","binary","editor","EDITORS","find","name","editorPath","paths","path","normalize","keyword","keywords","isTerminalEditor","env","EXPO_EDITOR","process","VISUAL","EDITOR","VISUAL_EDITORS","target","editorExistsAtPaths","editorExistsInPath","_cachedEditor","determineEditorAsync","undefined","forceEditorName","forceEditor","fallback","lineNumber","fileReference","spawnAsync","getEditorArguments","timeout","error","signal","Log","platform","isOSXOnly","PATH","Path","delimiter","map","filter","exts","PATHEXT","Boolean","targets","flatMap","dir","ext","join","mode","fs","constants","F_OK","X_OK","promises","access","includes","sep","TERMINAL_EDITORS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/editor.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport { env } from './env';\nimport * as Log from '../log';\n\nconst debug = require('debug')('expo:utils:editor') as typeof console.log;\n\ninterface Editor {\n id: string;\n name: string;\n binary: string;\n isTerminalEditor: boolean;\n isOSXOnly?: boolean;\n paths: string[];\n keywords: string[];\n}\n\n// See: https://github.com/sindresorhus/env-editor/blob/3f6aea10ff53910c877b1bf73a8e0c954a5fbf11/index.js\n// MIT License, Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\nfunction getEditor(input: string | undefined, allowAnyEditor = false): Editor | null {\n const needle = input?.trim().toLowerCase();\n if (!needle) {\n return null;\n }\n const id = needle.split(/[/\\\\]/).pop()?.replace(/\\s/g, '-');\n const binary = id?.split('-')[0];\n const editor =\n EDITORS.find((editor) => {\n switch (needle) {\n case editor.id:\n case editor.name.toLowerCase():\n case editor.binary:\n return true;\n default:\n for (const editorPath of editor.paths) {\n if (path.normalize(needle) === path.normalize(editorPath.toLowerCase())) return true;\n }\n for (const keyword of editor.keywords) {\n if (needle === keyword) return true;\n }\n return false;\n }\n }) ?? (binary ? EDITORS.find((editor) => editor.binary === binary) : null);\n if (allowAnyEditor && id && binary && !editor) {\n return {\n id,\n name: needle,\n binary,\n isTerminalEditor: false,\n paths: [],\n keywords: [],\n };\n }\n return editor || null;\n}\n\n/** Guess what the default editor is and default to VSCode. */\nexport function guessEditor(): Editor | null {\n let editor: Editor | null = null;\n if (env.EXPO_EDITOR) {\n editor = getEditor(env.EXPO_EDITOR);\n if (editor) {\n debug('Using $EXPO_EDITOR:', editor.name);\n }\n }\n\n if (!editor && process.env.VISUAL) {\n editor = getEditor(process.env.VISUAL);\n if (editor) {\n debug('Using $VISUAL:', editor.name);\n }\n }\n\n if (!editor && process.env.EDITOR) {\n editor = getEditor(process.env.EDITOR);\n if (editor) {\n debug('Using $EDITOR:', editor.name);\n }\n }\n\n return editor;\n}\n\nexport async function guessFallbackVisualEditor(): Promise<Editor | null> {\n // We search for editors at known `editor.paths`\n for (const editor of VISUAL_EDITORS) {\n const target = await editorExistsAtPaths(editor);\n if (target) {\n debug('Found visual editor fallback:', editor.name);\n return { ...editor, binary: target };\n }\n }\n // We search again for a visual editor against `editor.binary` in `$PATH`\n for (const editor of VISUAL_EDITORS) {\n const target = await editorExistsInPath(editor);\n if (target) {\n debug('Found visual editor fallback in $PATH:', editor.name);\n return { ...editor, binary: target };\n }\n }\n return null;\n}\n\nlet _cachedEditor: Editor | null | undefined;\n\nasync function determineEditorAsync(): Promise<Editor | null> {\n if (_cachedEditor !== undefined) {\n return _cachedEditor;\n }\n\n // First: Try to get a known editor\n let editor = guessEditor();\n\n // Second: If we don't have a known editor, fall back to EXPO_EDITOR / VISUAL resolution\n // We check if the binary in these environment variables exists in the $PATH\n const forceEditorName = env.EXPO_EDITOR ?? process.env.VISUAL;\n if (!editor && forceEditorName) {\n const forceEditor = getEditor(forceEditorName, true);\n if (forceEditor && (await editorExistsInPath(forceEditor))) {\n editor = forceEditor;\n }\n }\n\n // Third: Try to find a fallback visual editor, but keep the found one if we can't find a fallback\n if (editor?.isTerminalEditor) {\n const fallback = await guessFallbackVisualEditor();\n if (fallback) {\n editor = fallback;\n }\n }\n\n return (_cachedEditor = editor);\n}\n\n/** Open a file path in a given editor. */\nexport async function openInEditorAsync(path: string, lineNumber?: number): Promise<boolean> {\n const editor = await determineEditorAsync();\n\n if (editor && !editor.isTerminalEditor) {\n const fileReference = lineNumber ? `${path}:${lineNumber}` : path;\n debug(\n `Opening ${fileReference} in ${editor?.name} (bin: ${editor?.binary}, id: ${editor?.id})`\n );\n\n if (editor) {\n try {\n await spawnAsync(editor.binary, getEditorArguments(editor, path, lineNumber), {\n timeout: 1_000,\n });\n return true;\n } catch (error: any) {\n // NOTE(@kitten): The process might explicitly request to be terminated, which is fine\n if (error?.signal === 'SIGTERM') {\n return true;\n }\n debug(\n `Failed to open ${fileReference} in editor (path: ${path}, binary: ${editor.binary}):`,\n error\n );\n }\n }\n }\n\n Log.error(\n (editor?.isTerminalEditor\n ? `Could not open ${editor.name} as it's a terminal editor.`\n : 'Could not open editor.') +\n `\\nYou can set an editor for Expo to open by defining the $EXPO_EDITOR or $VISUAL environment variable (e.g. \"vscode\" or \"atom\")`\n );\n return false;\n}\n\nfunction getEditorArguments(editor: Editor, path: string, lineNumber?: number): string[] {\n switch (editor.id) {\n case 'atom':\n case 'sublime':\n return lineNumber ? [`${path}:${lineNumber}`] : [path];\n\n case 'emacs':\n case 'emacsforosx':\n case 'nano':\n case 'neovim':\n case 'vim':\n return lineNumber ? [`+${lineNumber}`, path] : [path];\n\n case 'android-studio':\n case 'intellij':\n case 'textmate':\n case 'webstorm':\n case 'xcode':\n return lineNumber ? [`--line=${lineNumber}`, path] : [path];\n\n case 'vscode':\n case 'vscodium':\n case 'cursor':\n return lineNumber ? ['-g', `${path}:${lineNumber}`] : ['-g', path];\n\n case 'zed':\n // '-r': Stands for \"--reuse\" and ensures we don't use the `zed` GUI binary, since the Zed CLI\n // is linked as `zed` into `$PATH` when it's actually the CLI\n return lineNumber ? ['-r', `${path}:${lineNumber}`] : ['-r', path];\n\n default:\n return [path];\n }\n}\n\n/** Attempt to resolve an editor against $PATH */\nasync function editorExistsInPath(editor: Editor) {\n if (process.platform !== 'darwin' && editor.isOSXOnly) {\n return null;\n }\n const binary = editor.binary;\n const paths = (process.env.PATH || process.env.Path || '')\n .split(path.delimiter)\n .map((target) => target.trim())\n .filter((target) => !!target);\n const exts =\n process.platform === 'win32'\n ? (process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM').split(path.delimiter).filter(Boolean)\n : [''];\n const targets = paths.flatMap((dir) => exts.map((ext) => path.join(dir, `${binary}${ext}`)));\n for (const target of targets) {\n try {\n const mode = process.platform === 'win32' ? fs.constants.F_OK : fs.constants.X_OK;\n await fs.promises.access(target, mode);\n return target;\n } catch {\n // ignore not found and continue\n }\n }\n return null;\n}\n\n/** Attempt to resolve an editor against known `paths` */\nasync function editorExistsAtPaths(editor: Editor) {\n // We can skip the path if it's not for our platform (win32 vs posix paths)\n const targets = editor.paths.filter((target) => target.includes(path.sep));\n for (const target of targets) {\n try {\n const mode = process.platform === 'win32' ? fs.constants.F_OK : fs.constants.X_OK;\n await fs.promises.access(target, mode);\n return target;\n } catch {\n // ignore not found and continue\n }\n }\n return null;\n}\n\nconst TERMINAL_EDITORS: (Editor & { isTerminalEditor: true })[] = [\n {\n id: 'vim',\n name: 'Vim',\n binary: 'vim',\n isTerminalEditor: true,\n paths: [],\n keywords: ['vi'],\n },\n {\n id: 'neovim',\n name: 'NeoVim',\n binary: 'nvim',\n isTerminalEditor: true,\n paths: [],\n keywords: ['vim'],\n },\n {\n id: 'nano',\n name: 'GNU nano',\n binary: 'nano',\n isTerminalEditor: true,\n paths: [],\n keywords: [],\n },\n {\n id: 'emacs',\n name: 'GNU Emacs',\n binary: 'emacs',\n isTerminalEditor: true,\n paths: [],\n keywords: [],\n },\n];\n\nconst VISUAL_EDITORS: (Editor & { isTerminalEditor: false })[] = [\n {\n id: 'vscode',\n name: 'Visual Studio Code',\n binary: 'code',\n isTerminalEditor: false,\n paths: ['/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code'],\n keywords: ['vs code'],\n },\n {\n id: 'vscode-insiders',\n name: 'Visual Studio Code - Insiders',\n binary: 'code-insiders',\n isTerminalEditor: false,\n paths: [\n '/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders',\n ],\n keywords: ['vs code insiders', 'code insiders', 'insiders'],\n },\n {\n id: 'vscodium',\n name: 'VSCodium',\n binary: 'codium',\n isTerminalEditor: false,\n paths: ['/Applications/VSCodium.app/Contents/Resources/app/bin/codium'],\n keywords: [],\n },\n {\n id: 'cursor',\n name: 'Cursor',\n binary: 'cursor',\n isTerminalEditor: false,\n paths: ['/Applications/Cursor.app/Contents/Resources/app/bin/codium'],\n keywords: [],\n },\n {\n id: 'sublime',\n name: 'Sublime Text',\n binary: 'subl',\n isTerminalEditor: false,\n paths: [\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n ],\n keywords: [],\n },\n {\n id: 'atom',\n name: 'Atom',\n binary: 'atom',\n isTerminalEditor: false,\n paths: ['/Applications/Atom.app/Contents/Resources/app/atom.sh'],\n keywords: [],\n },\n {\n id: 'webstorm',\n name: 'WebStorm',\n binary: 'webstorm',\n isTerminalEditor: false,\n paths: [],\n keywords: ['wstorm'],\n },\n {\n id: 'phpstorm',\n name: 'PhpStorm',\n binary: 'pstorm',\n isTerminalEditor: false,\n paths: [],\n keywords: ['php'],\n },\n {\n id: 'zed',\n name: 'Zed',\n binary: 'zed',\n isTerminalEditor: false,\n paths: ['/Applications/Zed.app/Contents/MacOS/cli'],\n keywords: [],\n },\n {\n id: 'textmate',\n name: 'TextMate',\n binary: 'mate',\n isTerminalEditor: false,\n paths: [],\n keywords: [],\n },\n {\n id: 'intellij',\n name: 'IntelliJ IDEA',\n binary: 'idea',\n isTerminalEditor: false,\n paths: [],\n keywords: ['idea', 'java', 'jetbrains', 'ide'],\n },\n {\n id: 'emacsforosx',\n name: 'GNU Emacs for Mac OS X',\n binary: 'Emacs',\n isTerminalEditor: false,\n isOSXOnly: true,\n paths: ['/Applications/Emacs.app/Contents/MacOS/Emacs'],\n keywords: [],\n },\n {\n id: 'xcode',\n name: 'Xcode',\n binary: 'xed',\n isTerminalEditor: false,\n isOSXOnly: true,\n paths: [\n '/Applications/Xcode.app/Contents/MacOS/Xcode',\n '/Applications/Xcode-beta.app/Contents/MacOS/Xcode',\n ],\n keywords: ['xed'],\n },\n {\n id: 'android-studio',\n name: 'Android Studio',\n binary: 'studio',\n isTerminalEditor: false,\n paths: [\n '/Applications/Android Studio.app/Contents/MacOS/studio',\n '/usr/local/Android/android-studio/bin/studio.sh',\n 'C:\\\\Program Files (x86)\\\\Android\\\\android-studio\\\\bin\\\\studio.exe',\n 'C:\\\\Program Files\\\\Android\\\\android-studio\\\\bin\\\\studio64.exe',\n ],\n keywords: ['studio'],\n },\n];\n\nconst EDITORS: Editor[] = [...VISUAL_EDITORS, ...TERMINAL_EDITORS];\n"],"names":["guessEditor","guessFallbackVisualEditor","openInEditorAsync","debug","require","getEditor","input","allowAnyEditor","needle","trim","toLowerCase","id","split","pop","replace","binary","editor","EDITORS","find","name","editorPath","paths","path","normalize","keyword","keywords","isTerminalEditor","env","EXPO_EDITOR","process","VISUAL","EDITOR","VISUAL_EDITORS","target","editorExistsAtPaths","editorExistsInPath","_cachedEditor","determineEditorAsync","undefined","forceEditorName","forceEditor","fallback","lineNumber","fileReference","spawnAsync","getEditorArguments","timeout","error","signal","Log","platform","isOSXOnly","PATH","Path","delimiter","map","filter","exts","PATHEXT","Boolean","targets","flatMap","dir","ext","join","mode","fs","constants","F_OK","X_OK","promises","access","includes","sep","TERMINAL_EDITORS"],"mappings":"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"}
|
package/build/src/utils/env.js
CHANGED
|
@@ -5,20 +5,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
env
|
|
12
|
+
get env () {
|
|
13
13
|
return env;
|
|
14
14
|
},
|
|
15
|
-
envIsHeadless
|
|
15
|
+
get envIsHeadless () {
|
|
16
16
|
return envIsHeadless;
|
|
17
17
|
},
|
|
18
|
-
envIsWebcontainer
|
|
18
|
+
get envIsWebcontainer () {
|
|
19
19
|
return envIsWebcontainer;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
+
function _env() {
|
|
23
|
+
const data = require("@expo/env");
|
|
24
|
+
_env = function() {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
22
29
|
function _getenv() {
|
|
23
30
|
const data = require("getenv");
|
|
24
31
|
_getenv = function() {
|
|
@@ -69,7 +76,9 @@ class Env {
|
|
|
69
76
|
return (0, _getenv().boolish)('EXPO_NO_TELEMETRY_DETACH', false);
|
|
70
77
|
}
|
|
71
78
|
/** local directory to the universe repo for testing locally */ get EXPO_UNIVERSE_DIR() {
|
|
72
|
-
|
|
79
|
+
// Read from the pre-dotenv env — this is a filesystem path used by internal
|
|
80
|
+
// tooling; a project `.env` overriding it could redirect file access.
|
|
81
|
+
return (0, _env().getOriginalEnvValue)('EXPO_UNIVERSE_DIR') || '';
|
|
73
82
|
}
|
|
74
83
|
/** @deprecated Default Webpack host string */ get WEB_HOST() {
|
|
75
84
|
return (0, _getenv().string)('WEB_HOST', '0.0.0.0');
|
|
@@ -92,6 +101,9 @@ class Env {
|
|
|
92
101
|
/** Disable printing the QR code in the interactive Terminal UI. */ get EXPO_NO_QR_CODE() {
|
|
93
102
|
return (0, _getenv().boolish)('EXPO_NO_QR_CODE', false);
|
|
94
103
|
}
|
|
104
|
+
/** Resolve application IDs from Expo app config before native files in `expo start`. */ get EXPO_RUN_PREFER_APP_CONFIG_ID() {
|
|
105
|
+
return (0, _getenv().boolish)('EXPO_RUN_PREFER_APP_CONFIG_ID', false);
|
|
106
|
+
}
|
|
95
107
|
/** The React Metro port that's baked into react-native scripts and tools. */ get RCT_METRO_PORT() {
|
|
96
108
|
return (0, _getenv().int)('RCT_METRO_PORT', 0);
|
|
97
109
|
}
|
|
@@ -108,7 +120,11 @@ class Env {
|
|
|
108
120
|
* Overwrite the dev server URL, disregarding the `--port`, `--host`, `--tunnel`, `--lan`, `--localhost` arguments.
|
|
109
121
|
* This is useful for browser editors that require custom proxy URLs.
|
|
110
122
|
*/ get EXPO_PACKAGER_PROXY_URL() {
|
|
111
|
-
|
|
123
|
+
// Read from the pre-dotenv env — overrides dev server URL served to clients.
|
|
124
|
+
return (0, _env().getOriginalEnvValue)('EXPO_PACKAGER_PROXY_URL') || '';
|
|
125
|
+
}
|
|
126
|
+
get EXPO_UNSTABLE_TUNNEL_V2() {
|
|
127
|
+
return (0, _getenv().boolish)('EXPO_UNSTABLE_TUNNEL_V2', false);
|
|
112
128
|
}
|
|
113
129
|
/**
|
|
114
130
|
* **Experimental** - Disable using `exp.direct` as the hostname for
|
|
@@ -152,8 +168,10 @@ class Env {
|
|
|
152
168
|
* This flag is internal and was added for external tools.
|
|
153
169
|
* @internal
|
|
154
170
|
*/ get EXPO_OVERRIDE_METRO_CONFIG() {
|
|
155
|
-
var
|
|
156
|
-
|
|
171
|
+
var _getOriginalEnvValue;
|
|
172
|
+
// Read from the pre-dotenv env — this path is `require()`d as Metro config,
|
|
173
|
+
// so a project `.env` overriding it would execute attacker code in-process.
|
|
174
|
+
return ((_getOriginalEnvValue = (0, _env().getOriginalEnvValue)('EXPO_OVERRIDE_METRO_CONFIG')) == null ? void 0 : _getOriginalEnvValue.trim()) || undefined;
|
|
157
175
|
}
|
|
158
176
|
/**
|
|
159
177
|
* Use the network inspector by overriding the metro inspector proxy with a custom version.
|
|
@@ -198,7 +216,7 @@ class Env {
|
|
|
198
216
|
return (0, _getenv().boolish)('EXPO_USE_METRO_REQUIRE', false);
|
|
199
217
|
}
|
|
200
218
|
/** Internal key used to pass eager bundle data from the CLI to the native run scripts during `npx expo run` commands. */ get __EXPO_EAGER_BUNDLE_OPTIONS() {
|
|
201
|
-
return (0,
|
|
219
|
+
return (0, _env().getOriginalEnvValue)('__EXPO_EAGER_BUNDLE_OPTIONS') || '';
|
|
202
220
|
}
|
|
203
221
|
/** Disable server deployment during production builds (during `expo export:embed`). This is useful for testing API routes and server components against a local server. */ get EXPO_NO_DEPLOY() {
|
|
204
222
|
return (0, _getenv().boolish)('EXPO_NO_DEPLOY', false);
|
|
@@ -209,9 +227,6 @@ class Env {
|
|
|
209
227
|
/** Enable experimental React Server Functions support. */ get EXPO_UNSTABLE_SERVER_FUNCTIONS() {
|
|
210
228
|
return (0, _getenv().boolish)('EXPO_UNSTABLE_SERVER_FUNCTIONS', false);
|
|
211
229
|
}
|
|
212
|
-
/** Enable unstable/experimental mode where React Native Web isn't required to run Expo apps on web. */ get EXPO_NO_REACT_NATIVE_WEB() {
|
|
213
|
-
return (0, _getenv().boolish)('EXPO_NO_REACT_NATIVE_WEB', false);
|
|
214
|
-
}
|
|
215
230
|
/** Enable unstable/experimental support for deploying the native server in `npx expo run` commands. */ get EXPO_UNSTABLE_DEPLOY_SERVER() {
|
|
216
231
|
return (0, _getenv().boolish)('EXPO_UNSTABLE_DEPLOY_SERVER', false);
|
|
217
232
|
}
|
|
@@ -230,6 +245,16 @@ class Env {
|
|
|
230
245
|
/** Force Expo CLI to run in webcontainer mode, this has impact on which URL Expo is using by default */ get EXPO_UNSTABLE_WEB_MODAL() {
|
|
231
246
|
return (0, _getenv().boolish)('EXPO_UNSTABLE_WEB_MODAL', false);
|
|
232
247
|
}
|
|
248
|
+
/** Disable @react-navigation checks for expo-router projects */ get EXPO_ROUTER_DISABLE_RN_NAVIGATION_CHECK() {
|
|
249
|
+
return (0, _getenv().boolish)('EXPO_ROUTER_DISABLE_RN_NAVIGATION_CHECK', false);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Disable Material Symbols (`md`) icon support in expo-router's NativeTabs on Android.
|
|
253
|
+
* When enabled, the Metro resolver swaps the Android-specific md icon converter for a no-op
|
|
254
|
+
* stub, so the `expo-symbols` dependency is tree-shaken out of the Android bundle.
|
|
255
|
+
*/ get EXPO_ROUTER_DISABLE_NATIVE_TABS_MD() {
|
|
256
|
+
return (0, _getenv().boolish)('EXPO_ROUTER_DISABLE_NATIVE_TABS_MD', false);
|
|
257
|
+
}
|
|
233
258
|
/** Disable by falsy value live binding in experimental import export support. Enabled by default. */ get EXPO_UNSTABLE_LIVE_BINDINGS() {
|
|
234
259
|
return (0, _getenv().boolish)('EXPO_UNSTABLE_LIVE_BINDINGS', true);
|
|
235
260
|
}
|
|
@@ -240,7 +265,8 @@ class Env {
|
|
|
240
265
|
if (value === '1' || value.toLowerCase() === 'true') {
|
|
241
266
|
return this.EXPO_STAGING ? 'staging-mcp.expo.dev' : 'mcp.expo.dev';
|
|
242
267
|
}
|
|
243
|
-
|
|
268
|
+
// Re-read from the pre-dotenv env — overrides dev server URL served to clients.
|
|
269
|
+
return (0, _env().getOriginalEnvValue)('EXPO_UNSTABLE_MCP_SERVER') || '';
|
|
244
270
|
}
|
|
245
271
|
/** Enable Expo Log Box for iOS and Android (Web is enabled by default) */ get EXPO_UNSTABLE_LOG_BOX() {
|
|
246
272
|
return (0, _getenv().boolish)('EXPO_UNSTABLE_LOG_BOX', false);
|