@expo/cli 0.22.25 → 0.22.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +91 -93
- package/build/bin/cli.map +1 -1
- package/build/metro-require/require.js +52 -53
- package/build/src/api/endpoint.js +2 -6
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +3 -5
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +12 -16
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +4 -6
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +3 -5
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +5 -7
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +26 -32
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +4 -6
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +3 -5
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +1 -3
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemResponseCache.js +8 -10
- package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/ResponseCache.js +12 -20
- package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +11 -13
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +35 -53
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/client.types.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +3 -5
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +3 -5
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +7 -11
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +3 -5
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithUserAgent.js +6 -8
- package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
- package/build/src/api/settings.js +5 -7
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +17 -23
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +21 -39
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +21 -27
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +26 -30
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +29 -35
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +30 -44
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +23 -29
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +21 -25
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +6 -8
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +16 -20
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +12 -14
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +2 -4
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +54 -58
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +7 -11
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +9 -11
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEager.js +6 -8
- package/build/src/export/embed/exportEager.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +61 -71
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +55 -57
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js +40 -44
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +36 -44
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +27 -39
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +63 -67
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +27 -35
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +9 -13
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportDomComponents.js +45 -53
- package/build/src/export/exportDomComponents.js.map +1 -1
- package/build/src/export/exportHermes.js +63 -85
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +62 -72
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +27 -33
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +5 -7
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +9 -11
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +6 -10
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +28 -32
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +30 -36
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +34 -42
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +6 -10
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +24 -28
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +46 -50
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +11 -13
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +15 -19
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +3 -5
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +2 -4
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +274 -400
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +7 -11
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +22 -26
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +12 -16
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +16 -18
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +26 -32
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +18 -22
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +19 -21
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +14 -18
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/install/utils/checkPackagesCompatibility.js +11 -13
- package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +44 -50
- package/build/src/lint/ESlintPrerequisite.js.map +1 -1
- package/build/src/lint/index.js +8 -12
- package/build/src/lint/index.js.map +1 -1
- package/build/src/lint/lintAsync.js +8 -10
- package/build/src/lint/lintAsync.js.map +1 -1
- package/build/src/log.js +16 -36
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +20 -24
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +7 -11
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +26 -38
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +14 -18
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +13 -17
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +4 -6
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +32 -36
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +25 -29
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +40 -46
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +52 -66
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +32 -36
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +13 -19
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +39 -53
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +8 -12
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +7 -11
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +3 -5
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +32 -36
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +8 -10
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +16 -18
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +15 -17
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +10 -12
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +2 -4
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +21 -23
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +5 -7
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +7 -13
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +23 -27
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +56 -74
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +63 -69
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +26 -29
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +25 -28
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +26 -29
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +21 -22
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +29 -32
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +24 -28
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +4 -7
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +27 -28
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +17 -23
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +132 -146
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +21 -29
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +21 -29
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +22 -34
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +17 -27
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +39 -53
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +9 -13
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +19 -27
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +5 -9
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +12 -14
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +21 -27
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +36 -40
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +17 -23
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/appleDestinations.js +36 -38
- package/build/src/run/ios/options/appleDestinations.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +16 -20
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +24 -30
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +23 -31
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +5 -7
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +5 -7
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +44 -48
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/ios/validateExternalBinary.js +22 -24
- package/build/src/run/ios/validateExternalBinary.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +2 -4
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +12 -16
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/serve/index.js +16 -20
- package/build/src/serve/index.js.map +1 -1
- package/build/src/serve/serveAsync.js +32 -36
- package/build/src/serve/serveAsync.js.map +1 -1
- package/build/src/start/detectDevClient.js +9 -13
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +7 -12
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +11 -13
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +19 -23
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +19 -23
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +45 -51
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +16 -18
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +19 -23
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +25 -31
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -25
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +32 -40
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +26 -32
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +31 -41
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +29 -34
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +8 -12
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +28 -32
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +17 -23
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +27 -33
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +42 -46
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +14 -18
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +80 -94
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +40 -44
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +61 -65
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +4 -6
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +6 -10
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +20 -25
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +15 -17
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +35 -39
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +16 -18
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +20 -24
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +9 -11
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +22 -26
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +83 -121
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +12 -20
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +26 -36
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +5 -7
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +28 -36
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +15 -19
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +19 -21
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +31 -37
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +7 -9
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/devicectl.js +73 -87
- package/build/src/start/platforms/ios/devicectl.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +18 -22
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +19 -29
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +10 -14
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +74 -102
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +52 -57
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +18 -22
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +9 -19
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +11 -15
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +2 -4
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +40 -48
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +51 -55
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/AsyncWsTunnel.js +36 -40
- package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +79 -81
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +38 -42
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +14 -18
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +14 -18
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +10 -16
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +33 -36
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +21 -29
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +4 -6
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +271 -269
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +56 -63
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +33 -39
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +40 -46
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +28 -32
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +92 -96
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +30 -32
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +11 -13
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +1 -3
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/attachAtlas.js +22 -26
- package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +17 -19
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +31 -25
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/getDebuggerType.js +4 -6
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +8 -14
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +5 -7
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +6 -8
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +5 -7
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +12 -14
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +10 -14
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -6
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/debugging/types.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createEventSocket.js +16 -18
- package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +21 -23
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +21 -23
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +2 -4
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +2 -4
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js +4 -8
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/externals.js +25 -33
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +12 -16
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +9 -11
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +18 -22
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +79 -85
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxLog.js +36 -40
- package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +14 -20
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js +6 -10
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +78 -88
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +4 -8
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroPrivateServer.js +7 -9
- package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +8 -10
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +22 -24
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +32 -48
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +22 -24
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +22 -24
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/symbolicate.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +29 -35
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +139 -149
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +39 -49
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +6 -8
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +15 -17
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +31 -32
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +19 -22
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DomComponentsMiddleware.js +27 -33
- package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +60 -64
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +9 -15
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +14 -15
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +2 -4
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +31 -34
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +56 -64
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +19 -23
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +19 -20
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +9 -11
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +11 -17
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
- package/build/src/start/server/middleware/inspector/CdpClient.js +10 -12
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +27 -35
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +19 -21
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +2 -6
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +96 -120
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +3 -7
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +18 -26
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +15 -23
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +9 -11
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
- package/build/src/start/server/middleware/server.types.js.map +1 -1
- package/build/src/start/server/openPlatforms.js +8 -10
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +11 -13
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +50 -58
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +7 -11
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +54 -76
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +19 -21
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +28 -36
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +24 -28
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +46 -52
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +11 -15
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +26 -28
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +12 -18
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +12 -18
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +27 -31
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +17 -20
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/ansi.js +5 -7
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +14 -24
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +6 -18
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +46 -54
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +68 -78
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +12 -16
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/createTempPath.js +13 -17
- package/build/src/utils/createTempPath.js.map +1 -1
- package/build/src/utils/delay.js +6 -12
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +28 -46
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +8 -10
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +21 -25
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +35 -41
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +59 -63
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +30 -37
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +31 -35
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/expoUpdatesCli.js +22 -32
- package/build/src/utils/expoUpdatesCli.js.map +1 -1
- package/build/src/utils/fetch.js +4 -8
- package/build/src/utils/fetch.js.map +1 -1
- package/build/src/utils/filePath.js +6 -10
- package/build/src/utils/filePath.js.map +1 -1
- package/build/src/utils/findUp.js +9 -13
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +2 -6
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +26 -32
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +21 -29
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +20 -26
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +4 -8
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +1 -3
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +19 -21
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +9 -11
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/jsonSchemaDeref.js +18 -20
- package/build/src/utils/jsonSchemaDeref.js.map +1 -1
- package/build/src/utils/link.js +13 -17
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +28 -46
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +10 -16
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +6 -10
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +6 -12
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +8 -10
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +36 -50
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +5 -11
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +8 -10
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +7 -13
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +15 -21
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +33 -43
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +7 -11
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +5 -11
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +29 -47
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +24 -36
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +32 -40
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/stream.js +3 -5
- package/build/src/utils/stream.js.map +1 -1
- package/build/src/utils/strings.js +4 -6
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +15 -19
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/Telemetry.js +27 -29
- package/build/src/utils/telemetry/Telemetry.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +13 -15
- package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js +22 -26
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderClient.js +8 -10
- package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js +22 -26
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushRudderDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushRudderDetached.js.map +1 -1
- package/build/src/utils/telemetry/events.js +2 -4
- package/build/src/utils/telemetry/events.js.map +1 -1
- package/build/src/utils/telemetry/flushDetached.js.map +1 -1
- package/build/src/utils/telemetry/index.js +29 -25
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/telemetry/types.js.map +1 -1
- package/build/src/utils/telemetry/utils/constants.js +4 -8
- package/build/src/utils/telemetry/utils/constants.js.map +1 -1
- package/build/src/utils/telemetry/utils/context.js +14 -18
- package/build/src/utils/telemetry/utils/context.js.map +1 -1
- package/build/src/utils/template.js +4 -6
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +2 -4
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +17 -21
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +14 -18
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +5 -7
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -14
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +13 -23
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +86 -108
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +16 -22
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +7 -11
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +7 -11
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,36 +4,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
Object.defineProperty(exports, "BundlerDevServer", {
|
|
6
6
|
enumerable: true,
|
|
7
|
-
get:
|
|
8
|
-
return BundlerDevServer;
|
|
9
|
-
}
|
|
7
|
+
get: ()=>BundlerDevServer
|
|
10
8
|
});
|
|
11
9
|
function _assert() {
|
|
12
|
-
const data = /*#__PURE__*/
|
|
10
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
|
|
13
11
|
_assert = function() {
|
|
14
12
|
return data;
|
|
15
13
|
};
|
|
16
14
|
return data;
|
|
17
15
|
}
|
|
18
|
-
function
|
|
19
|
-
const data = /*#__PURE__*/
|
|
20
|
-
|
|
16
|
+
function _resolveFrom() {
|
|
17
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
|
|
18
|
+
_resolveFrom = function() {
|
|
21
19
|
return data;
|
|
22
20
|
};
|
|
23
21
|
return data;
|
|
24
22
|
}
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const _log = /*#__PURE__*/
|
|
31
|
-
const
|
|
23
|
+
const _asyncNgrok = require("./AsyncNgrok");
|
|
24
|
+
const _asyncWsTunnel = require("./AsyncWsTunnel");
|
|
25
|
+
const _devToolsPluginManager = /*#__PURE__*/ _interopRequireDefault(require("./DevToolsPluginManager"));
|
|
26
|
+
const _developmentSession = require("./DevelopmentSession");
|
|
27
|
+
const _urlCreator = require("./UrlCreator");
|
|
28
|
+
const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../log"));
|
|
29
|
+
const _fileNotifier = require("../../utils/FileNotifier");
|
|
32
30
|
const _delay = require("../../utils/delay");
|
|
33
31
|
const _env = require("../../utils/env");
|
|
34
32
|
const _errors = require("../../utils/errors");
|
|
35
33
|
const _open = require("../../utils/open");
|
|
36
|
-
function
|
|
34
|
+
function _interopRequireDefault(obj) {
|
|
37
35
|
return obj && obj.__esModule ? obj : {
|
|
38
36
|
default: obj
|
|
39
37
|
};
|
|
@@ -46,7 +44,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
46
44
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
47
45
|
})(nodeInterop);
|
|
48
46
|
}
|
|
49
|
-
function
|
|
47
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
50
48
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
51
49
|
return obj;
|
|
52
50
|
}
|
|
@@ -59,9 +57,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
59
57
|
if (cache && cache.has(obj)) {
|
|
60
58
|
return cache.get(obj);
|
|
61
59
|
}
|
|
62
|
-
var newObj = {
|
|
63
|
-
__proto__: null
|
|
64
|
-
};
|
|
60
|
+
var newObj = {};
|
|
65
61
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
66
62
|
for(var key in obj){
|
|
67
63
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -79,13 +75,13 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
79
75
|
}
|
|
80
76
|
return newObj;
|
|
81
77
|
}
|
|
82
|
-
const debug = require(
|
|
78
|
+
const debug = require("debug")("expo:start:server:devServer");
|
|
83
79
|
const PLATFORM_MANAGERS = {
|
|
84
|
-
simulator: ()=>require(
|
|
85
|
-
emulator: ()=>require(
|
|
80
|
+
simulator: ()=>require("../platforms/ios/ApplePlatformManager").ApplePlatformManager,
|
|
81
|
+
emulator: ()=>require("../platforms/android/AndroidPlatformManager").AndroidPlatformManager
|
|
86
82
|
};
|
|
87
83
|
class BundlerDevServer {
|
|
88
|
-
constructor(
|
|
84
|
+
constructor(projectRoot, platformBundlers, /** Advanced options */ options){
|
|
89
85
|
this.projectRoot = projectRoot;
|
|
90
86
|
this.platformBundlers = platformBundlers;
|
|
91
87
|
this.tunnel = null;
|
|
@@ -94,20 +90,20 @@ class BundlerDevServer {
|
|
|
94
90
|
this.platformManagers = {};
|
|
95
91
|
this.urlCreator = null;
|
|
96
92
|
this.notifier = null;
|
|
97
|
-
this.devToolsPluginManager = (options == null ? void 0 : options.devToolsPluginManager) ?? new
|
|
93
|
+
this.devToolsPluginManager = (options == null ? void 0 : options.devToolsPluginManager) ?? new _devToolsPluginManager.default(projectRoot);
|
|
98
94
|
this.isDevClient = (options == null ? void 0 : options.isDevClient) ?? false;
|
|
99
95
|
}
|
|
100
96
|
setInstance(instance) {
|
|
101
97
|
this.instance = instance;
|
|
102
98
|
}
|
|
103
99
|
/** Get the manifest middleware function. */ async getManifestMiddlewareAsync(options = {}) {
|
|
104
|
-
const Middleware = require(
|
|
100
|
+
const Middleware = require("./middleware/ExpoGoManifestHandlerMiddleware").ExpoGoManifestHandlerMiddleware;
|
|
105
101
|
const urlCreator = this.getUrlCreator();
|
|
106
102
|
const middleware = new Middleware(this.projectRoot, {
|
|
107
103
|
constructUrl: urlCreator.constructUrl.bind(urlCreator),
|
|
108
104
|
mode: options.mode,
|
|
109
105
|
minify: options.minify,
|
|
110
|
-
isNativeWebpack: this.name ===
|
|
106
|
+
isNativeWebpack: this.name === "webpack" && this.isTargetingNative(),
|
|
111
107
|
privateKeyPath: options.privateKeyPath
|
|
112
108
|
});
|
|
113
109
|
return middleware;
|
|
@@ -134,7 +130,7 @@ class BundlerDevServer {
|
|
|
134
130
|
* Creates a mock server representation that can be used to estimate URLs for a server started in another process.
|
|
135
131
|
* This is used for the run commands where you can reuse the server from a previous run.
|
|
136
132
|
*/ async startHeadlessAsync(options) {
|
|
137
|
-
if (!options.port) throw new _errors.CommandError(
|
|
133
|
+
if (!options.port) throw new _errors.CommandError("HEADLESS_SERVER", "headless dev server requires a port option");
|
|
138
134
|
this.urlCreator = this.getUrlCreator(options);
|
|
139
135
|
return {
|
|
140
136
|
// Create a mock server
|
|
@@ -149,15 +145,15 @@ class BundlerDevServer {
|
|
|
149
145
|
// The port is the main thing we want to send back.
|
|
150
146
|
port: options.port,
|
|
151
147
|
// localhost isn't always correct.
|
|
152
|
-
host:
|
|
148
|
+
host: "localhost",
|
|
153
149
|
// http is the only supported protocol on native.
|
|
154
150
|
url: `http://localhost:${options.port}`,
|
|
155
|
-
protocol:
|
|
151
|
+
protocol: "http"
|
|
156
152
|
},
|
|
157
153
|
middleware: {},
|
|
158
154
|
messageSocket: {
|
|
159
155
|
broadcast: ()=>{
|
|
160
|
-
throw new _errors.CommandError(
|
|
156
|
+
throw new _errors.CommandError("HEADLESS_SERVER", "Cannot broadcast messages to headless server");
|
|
161
157
|
}
|
|
162
158
|
}
|
|
163
159
|
};
|
|
@@ -166,7 +162,7 @@ class BundlerDevServer {
|
|
|
166
162
|
* Runs after the `startAsync` function, performing any additional common operations.
|
|
167
163
|
* You can assume the dev server is started by the time this function is called.
|
|
168
164
|
*/ async postStartAsync(options) {
|
|
169
|
-
if (options.location.hostType ===
|
|
165
|
+
if (options.location.hostType === "tunnel" && !_env.env.EXPO_OFFLINE && // This is a hack to prevent using tunnel on web since we block it upstream for some reason.
|
|
170
166
|
this.isTargetingNative()) {
|
|
171
167
|
await this._startTunnelAsync();
|
|
172
168
|
} else if ((0, _env.envIsWebcontainer)()) {
|
|
@@ -178,29 +174,29 @@ class BundlerDevServer {
|
|
|
178
174
|
}
|
|
179
175
|
}
|
|
180
176
|
watchConfig() {
|
|
181
|
-
var
|
|
182
|
-
(
|
|
183
|
-
this.notifier = new
|
|
177
|
+
var ref;
|
|
178
|
+
(ref = this.notifier) == null ? void 0 : ref.stopObserving();
|
|
179
|
+
this.notifier = new _fileNotifier.FileNotifier(this.projectRoot, this.getConfigModuleIds());
|
|
184
180
|
this.notifier.startObserving();
|
|
185
181
|
}
|
|
186
182
|
/** Create ngrok instance and start the tunnel server. Exposed for testing. */ async _startTunnelAsync() {
|
|
187
|
-
var
|
|
188
|
-
const port = (
|
|
183
|
+
var ref;
|
|
184
|
+
const port = (ref = this.getInstance()) == null ? void 0 : ref.location.port;
|
|
189
185
|
if (!port) return null;
|
|
190
|
-
debug(
|
|
191
|
-
this.tunnel = (0, _env.envIsWebcontainer)() ? new
|
|
186
|
+
debug("[tunnel] connect to port: " + port);
|
|
187
|
+
this.tunnel = (0, _env.envIsWebcontainer)() ? new _asyncWsTunnel.AsyncWsTunnel(this.projectRoot, port) : new _asyncNgrok.AsyncNgrok(this.projectRoot, port);
|
|
192
188
|
await this.tunnel.startAsync();
|
|
193
189
|
return this.tunnel;
|
|
194
190
|
}
|
|
195
191
|
async startDevSessionAsync() {
|
|
196
192
|
// This is used to make Expo Go open the project in either Expo Go, or the web browser.
|
|
197
193
|
// Must come after ngrok (`startTunnelAsync`) setup.
|
|
198
|
-
this.devSession = new
|
|
194
|
+
this.devSession = new _developmentSession.DevelopmentSession(this.projectRoot, // This URL will be used on external devices so the computer IP won't be relevant.
|
|
199
195
|
this.isTargetingNative() ? this.getNativeRuntimeUrl() : this.getDevServerUrl({
|
|
200
|
-
hostType:
|
|
196
|
+
hostType: "localhost"
|
|
201
197
|
}));
|
|
202
198
|
await this.devSession.startAsync({
|
|
203
|
-
runtime: this.isTargetingNative() ?
|
|
199
|
+
runtime: this.isTargetingNative() ? "native" : "web"
|
|
204
200
|
});
|
|
205
201
|
}
|
|
206
202
|
isTargetingNative() {
|
|
@@ -217,34 +213,35 @@ class BundlerDevServer {
|
|
|
217
213
|
* @param method name of the command. In RN projects `reload`, and `devMenu` are available. In Expo Go, `sendDevCommand` is available.
|
|
218
214
|
* @param params
|
|
219
215
|
*/ broadcastMessage(method, params) {
|
|
220
|
-
var
|
|
221
|
-
(
|
|
216
|
+
var ref;
|
|
217
|
+
(ref = this.getInstance()) == null ? void 0 : ref.messageSocket.broadcast(method, params);
|
|
222
218
|
}
|
|
223
219
|
/** Get the running dev server instance. */ getInstance() {
|
|
224
220
|
return this.instance;
|
|
225
221
|
}
|
|
226
222
|
/** Stop the running dev server instance. */ async stopAsync() {
|
|
227
223
|
var // Stop file watching.
|
|
228
|
-
|
|
229
|
-
(
|
|
224
|
+
ref, ref1, ref2;
|
|
225
|
+
(ref = this.notifier) == null ? void 0 : ref.stopObserving();
|
|
230
226
|
// Stop the dev session timer and tell Expo API to remove dev session.
|
|
231
|
-
await ((
|
|
227
|
+
await ((ref1 = this.devSession) == null ? void 0 : ref1.closeAsync());
|
|
232
228
|
// Stop tunnel if running.
|
|
233
|
-
await ((
|
|
229
|
+
await ((ref2 = this.tunnel) == null ? void 0 : ref2.stopAsync().catch((e)=>{
|
|
234
230
|
_log.error(`Error stopping tunnel:`);
|
|
235
231
|
_log.exception(e);
|
|
236
232
|
}));
|
|
237
|
-
return (0, _delay.resolveWithTimeout)(()=>
|
|
238
|
-
|
|
233
|
+
return (0, _delay.resolveWithTimeout)(()=>{
|
|
234
|
+
return new Promise((resolve, reject)=>{
|
|
235
|
+
var ref;
|
|
239
236
|
// Close the server.
|
|
240
237
|
debug(`Stopping dev server (bundler: ${this.name})`);
|
|
241
|
-
if ((
|
|
238
|
+
if ((ref = this.instance) == null ? void 0 : ref.server) {
|
|
242
239
|
// Check if server is even running.
|
|
243
240
|
this.instance.server.close((error)=>{
|
|
244
241
|
debug(`Stopped dev server (bundler: ${this.name})`);
|
|
245
242
|
this.instance = null;
|
|
246
243
|
if (error) {
|
|
247
|
-
if (
|
|
244
|
+
if ("code" in error && error.code === "ERR_SERVER_NOT_RUNNING") {
|
|
248
245
|
resolve();
|
|
249
246
|
} else {
|
|
250
247
|
reject(error);
|
|
@@ -258,7 +255,8 @@ class BundlerDevServer {
|
|
|
258
255
|
this.instance = null;
|
|
259
256
|
resolve();
|
|
260
257
|
}
|
|
261
|
-
})
|
|
258
|
+
});
|
|
259
|
+
}, {
|
|
262
260
|
// NOTE(Bacon): Metro dev server doesn't seem to be closing in time.
|
|
263
261
|
timeout: 1000,
|
|
264
262
|
errorMessage: `Timeout waiting for '${this.name}' dev server to close`
|
|
@@ -266,8 +264,8 @@ class BundlerDevServer {
|
|
|
266
264
|
}
|
|
267
265
|
getUrlCreator(options = {}) {
|
|
268
266
|
if (!this.urlCreator) {
|
|
269
|
-
(0, _assert().default)(options == null ? void 0 : options.port,
|
|
270
|
-
this.urlCreator = new
|
|
267
|
+
(0, _assert().default)(options == null ? void 0 : options.port, "Dev server instance not found");
|
|
268
|
+
this.urlCreator = new _urlCreator.UrlCreator(options.location, {
|
|
271
269
|
port: options.port,
|
|
272
270
|
getTunnelUrl: this.getTunnelUrl.bind(this)
|
|
273
271
|
});
|
|
@@ -277,7 +275,7 @@ class BundlerDevServer {
|
|
|
277
275
|
getNativeRuntimeUrl(opts = {}) {
|
|
278
276
|
return this.isDevClient ? this.getUrlCreator().constructDevClientUrl(opts) ?? this.getDevServerUrl() : this.getUrlCreator().constructUrl({
|
|
279
277
|
...opts,
|
|
280
|
-
scheme:
|
|
278
|
+
scheme: "exp"
|
|
281
279
|
});
|
|
282
280
|
}
|
|
283
281
|
/** Get the URL for the running instance of the dev server. */ getDevServerUrl(options = {}) {
|
|
@@ -286,11 +284,11 @@ class BundlerDevServer {
|
|
|
286
284
|
return null;
|
|
287
285
|
}
|
|
288
286
|
// If we have an active WS tunnel instance, we always need to return the tunnel location.
|
|
289
|
-
if (this.tunnel && this.tunnel instanceof
|
|
287
|
+
if (this.tunnel && this.tunnel instanceof _asyncWsTunnel.AsyncWsTunnel) {
|
|
290
288
|
return this.getUrlCreator().constructUrl();
|
|
291
289
|
}
|
|
292
|
-
const { location
|
|
293
|
-
if (options.hostType ===
|
|
290
|
+
const { location } = instance;
|
|
291
|
+
if (options.hostType === "localhost") {
|
|
294
292
|
return `${location.protocol}://localhost:${location.port}`;
|
|
295
293
|
}
|
|
296
294
|
return location.url ?? null;
|
|
@@ -298,80 +296,80 @@ class BundlerDevServer {
|
|
|
298
296
|
getDevServerUrlOrAssert(options = {}) {
|
|
299
297
|
const instance = this.getDevServerUrl(options);
|
|
300
298
|
if (!instance) {
|
|
301
|
-
throw new _errors.CommandError(
|
|
299
|
+
throw new _errors.CommandError("DEV_SERVER", `Cannot get the dev server URL before the server has started - bundler[${this.name}]`);
|
|
302
300
|
}
|
|
303
301
|
return instance;
|
|
304
302
|
}
|
|
305
303
|
/** Get the base URL for JS inspector */ getJsInspectorBaseUrl() {
|
|
306
|
-
if (this.name !==
|
|
307
|
-
throw new _errors.CommandError(
|
|
304
|
+
if (this.name !== "metro") {
|
|
305
|
+
throw new _errors.CommandError("DEV_SERVER", `Cannot get the JS inspector base url - bundler[${this.name}]`);
|
|
308
306
|
}
|
|
309
307
|
return this.getUrlCreator().constructUrl({
|
|
310
|
-
scheme:
|
|
308
|
+
scheme: "http"
|
|
311
309
|
});
|
|
312
310
|
}
|
|
313
311
|
/** Get the tunnel URL from the tunnel. */ getTunnelUrl() {
|
|
314
|
-
var
|
|
315
|
-
return ((
|
|
312
|
+
var ref;
|
|
313
|
+
return ((ref = this.tunnel) == null ? void 0 : ref.getActiveUrl()) ?? null;
|
|
316
314
|
}
|
|
317
315
|
/** Open the dev server in a runtime. */ async openPlatformAsync(launchTarget, resolver = {}) {
|
|
318
|
-
if (launchTarget ===
|
|
316
|
+
if (launchTarget === "desktop") {
|
|
319
317
|
const serverUrl = this.getDevServerUrl({
|
|
320
|
-
hostType:
|
|
318
|
+
hostType: "localhost"
|
|
321
319
|
});
|
|
322
320
|
// Allow opening the tunnel URL when using Metro web.
|
|
323
|
-
const url = this.name ===
|
|
321
|
+
const url = this.name === "metro" ? this.getTunnelUrl() ?? serverUrl : serverUrl;
|
|
324
322
|
await (0, _open.openBrowserAsync)(url);
|
|
325
323
|
return {
|
|
326
324
|
url
|
|
327
325
|
};
|
|
328
326
|
}
|
|
329
|
-
const runtime = this.isTargetingNative() ? this.isDevClient ?
|
|
327
|
+
const runtime = this.isTargetingNative() ? this.isDevClient ? "custom" : "expo" : "web";
|
|
330
328
|
const manager = await this.getPlatformManagerAsync(launchTarget);
|
|
331
329
|
return manager.openAsync({
|
|
332
330
|
runtime
|
|
333
331
|
}, resolver);
|
|
334
332
|
}
|
|
335
333
|
/** Open the dev server in a runtime. */ async openCustomRuntimeAsync(launchTarget, launchProps = {}, resolver = {}) {
|
|
336
|
-
const runtime = this.isTargetingNative() ? this.isDevClient ?
|
|
337
|
-
if (runtime !==
|
|
334
|
+
const runtime = this.isTargetingNative() ? this.isDevClient ? "custom" : "expo" : "web";
|
|
335
|
+
if (runtime !== "custom") {
|
|
338
336
|
throw new _errors.CommandError(`dev server cannot open custom runtimes either because it does not target native platforms or because it is not targeting dev clients. (target: ${runtime})`);
|
|
339
337
|
}
|
|
340
338
|
const manager = await this.getPlatformManagerAsync(launchTarget);
|
|
341
339
|
return manager.openAsync({
|
|
342
|
-
runtime:
|
|
340
|
+
runtime: "custom",
|
|
343
341
|
props: launchProps
|
|
344
342
|
}, resolver);
|
|
345
343
|
}
|
|
346
344
|
/** Get the URL for opening in Expo Go. */ getExpoGoUrl() {
|
|
347
345
|
return this.getUrlCreator().constructUrl({
|
|
348
|
-
scheme:
|
|
346
|
+
scheme: "exp"
|
|
349
347
|
});
|
|
350
348
|
}
|
|
351
349
|
/** Should use the interstitial page for selecting which runtime to use. */ isRedirectPageEnabled() {
|
|
352
350
|
return !_env.env.EXPO_NO_REDIRECT_PAGE && // if user passed --dev-client flag, skip interstitial page
|
|
353
351
|
!this.isDevClient && // Checks if dev client is installed.
|
|
354
|
-
!!
|
|
352
|
+
!!_resolveFrom().default.silent(this.projectRoot, "expo-dev-client");
|
|
355
353
|
}
|
|
356
354
|
/** Get the redirect URL when redirecting is enabled. */ getRedirectUrl(platform = null) {
|
|
357
355
|
if (!this.isRedirectPageEnabled()) {
|
|
358
|
-
debug(
|
|
356
|
+
debug("Redirect page is disabled");
|
|
359
357
|
return null;
|
|
360
358
|
}
|
|
361
|
-
return this.getUrlCreator().constructLoadingUrl({}, platform ===
|
|
359
|
+
return this.getUrlCreator().constructLoadingUrl({}, platform === "emulator" ? "android" : platform === "simulator" ? "ios" : null) ?? null;
|
|
362
360
|
}
|
|
363
361
|
getReactDevToolsUrl() {
|
|
364
|
-
return new URL(
|
|
365
|
-
scheme:
|
|
362
|
+
return new URL("_expo/react-devtools", this.getUrlCreator().constructUrl({
|
|
363
|
+
scheme: "http"
|
|
366
364
|
})).toString();
|
|
367
365
|
}
|
|
368
366
|
async getPlatformManagerAsync(platform) {
|
|
369
367
|
if (!this.platformManagers[platform]) {
|
|
370
|
-
var
|
|
368
|
+
var ref;
|
|
371
369
|
const Manager = PLATFORM_MANAGERS[platform]();
|
|
372
|
-
const port = (
|
|
370
|
+
const port = (ref = this.getInstance()) == null ? void 0 : ref.location.port;
|
|
373
371
|
if (!port || !this.urlCreator) {
|
|
374
|
-
throw new _errors.CommandError(
|
|
372
|
+
throw new _errors.CommandError("DEV_SERVER", "Cannot interact with native platforms until dev server has started");
|
|
375
373
|
}
|
|
376
374
|
debug(`Creating platform manager (platform: ${platform}, port: ${port})`);
|
|
377
375
|
this.platformManagers[platform] = new Manager(this.projectRoot, port, {
|
|
@@ -379,7 +377,7 @@ class BundlerDevServer {
|
|
|
379
377
|
getExpoGoUrl: this.getExpoGoUrl.bind(this),
|
|
380
378
|
getRedirectUrl: this.getRedirectUrl.bind(this, platform),
|
|
381
379
|
getDevServerUrl: this.getDevServerUrl.bind(this, {
|
|
382
|
-
hostType:
|
|
380
|
+
hostType: "localhost"
|
|
383
381
|
})
|
|
384
382
|
});
|
|
385
383
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/start/server/BundlerDevServer.ts"],"sourcesContent":["import assert from 'assert';\nimport resolveFrom from 'resolve-from';\n\nimport { AsyncNgrok } from './AsyncNgrok';\nimport { AsyncWsTunnel } from './AsyncWsTunnel';\nimport DevToolsPluginManager from './DevToolsPluginManager';\nimport { DevelopmentSession } from './DevelopmentSession';\nimport { CreateURLOptions, UrlCreator } from './UrlCreator';\nimport { PlatformBundlers } from './platformBundlers';\nimport * as Log from '../../log';\nimport { FileNotifier } from '../../utils/FileNotifier';\nimport { resolveWithTimeout } from '../../utils/delay';\nimport { env, envIsWebcontainer } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\nimport { openBrowserAsync } from '../../utils/open';\nimport {\n BaseOpenInCustomProps,\n BaseResolveDeviceProps,\n PlatformManager,\n} from '../platforms/PlatformManager';\n\nconst debug = require('debug')('expo:start:server:devServer') as typeof console.log;\n\nexport type MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\nexport type ServerLike = {\n close(callback?: (err?: Error) => void): void;\n addListener?(event: string, listener: (...args: any[]) => void): unknown;\n};\n\nexport type DevServerInstance = {\n /** Bundler dev server instance. */\n server: ServerLike;\n /** Dev server URL location properties. */\n location: {\n url: string;\n port: number;\n protocol: 'http' | 'https';\n host?: string;\n };\n /** Additional middleware that's attached to the `server`. */\n middleware: any;\n /** Message socket for communicating with the runtime. */\n messageSocket: MessageSocket;\n};\n\nexport interface BundlerStartOptions {\n /** Should the dev server use `https` protocol. */\n https?: boolean;\n /** Should start the dev servers in development mode (minify). */\n mode?: 'development' | 'production';\n /** Is dev client enabled. */\n devClient?: boolean;\n /** Should run dev servers with clean caches. */\n resetDevServer?: boolean;\n /** Code signing private key path (defaults to same directory as certificate) */\n privateKeyPath?: string;\n\n /** Max amount of workers (threads) to use with Metro bundler, defaults to undefined for max workers. */\n maxWorkers?: number;\n /** Port to start the dev server on. */\n port?: number;\n\n /** Should start a headless dev server e.g. mock representation to approximate info from a server running in a different process. */\n headless?: boolean;\n /** Should instruct the bundler to create minified bundles. */\n minify?: boolean;\n\n /** Will the bundler be used for exporting. NOTE: This is an odd option to pass to the dev server. */\n isExporting?: boolean;\n\n // Webpack options\n /** Should modify and create PWA icons. */\n isImageEditingEnabled?: boolean;\n\n location: CreateURLOptions;\n}\n\nconst PLATFORM_MANAGERS = {\n simulator: () =>\n require('../platforms/ios/ApplePlatformManager')\n .ApplePlatformManager as typeof import('../platforms/ios/ApplePlatformManager').ApplePlatformManager,\n emulator: () =>\n require('../platforms/android/AndroidPlatformManager')\n .AndroidPlatformManager as typeof import('../platforms/android/AndroidPlatformManager').AndroidPlatformManager,\n};\n\nexport abstract class BundlerDevServer {\n /** Name of the bundler. */\n abstract get name(): string;\n\n /** Tunnel instance for managing tunnel connections. */\n protected tunnel: AsyncNgrok | AsyncWsTunnel | null = null;\n /** Interfaces with the Expo 'Development Session' API. */\n protected devSession: DevelopmentSession | null = null;\n /** Http server and related info. */\n protected instance: DevServerInstance | null = null;\n /** Native platform interfaces for opening projects. */\n private platformManagers: Record<string, PlatformManager<any>> = {};\n /** Manages the creation of dev server URLs. */\n protected urlCreator?: UrlCreator | null = null;\n\n private notifier: FileNotifier | null = null;\n protected readonly devToolsPluginManager: DevToolsPluginManager;\n public isDevClient: boolean;\n\n constructor(\n /** Project root folder. */\n public projectRoot: string,\n /** A mapping of bundlers to platforms. */\n public platformBundlers: PlatformBundlers,\n /** Advanced options */\n options?: {\n /**\n * The instance of DevToolsPluginManager\n * @default new DevToolsPluginManager(projectRoot)\n */\n devToolsPluginManager?: DevToolsPluginManager;\n // TODO: Replace with custom scheme maybe...\n isDevClient?: boolean;\n }\n ) {\n this.devToolsPluginManager =\n options?.devToolsPluginManager ?? new DevToolsPluginManager(projectRoot);\n this.isDevClient = options?.isDevClient ?? false;\n }\n\n protected setInstance(instance: DevServerInstance) {\n this.instance = instance;\n }\n\n /** Get the manifest middleware function. */\n protected async getManifestMiddlewareAsync(\n options: Pick<BundlerStartOptions, 'minify' | 'mode' | 'privateKeyPath'> = {}\n ) {\n const Middleware = require('./middleware/ExpoGoManifestHandlerMiddleware')\n .ExpoGoManifestHandlerMiddleware as typeof import('./middleware/ExpoGoManifestHandlerMiddleware').ExpoGoManifestHandlerMiddleware;\n\n const urlCreator = this.getUrlCreator();\n const middleware = new Middleware(this.projectRoot, {\n constructUrl: urlCreator.constructUrl.bind(urlCreator),\n mode: options.mode,\n minify: options.minify,\n isNativeWebpack: this.name === 'webpack' && this.isTargetingNative(),\n privateKeyPath: options.privateKeyPath,\n });\n return middleware;\n }\n\n /** Start the dev server using settings defined in the start command. */\n public async startAsync(options: BundlerStartOptions): Promise<DevServerInstance> {\n await this.stopAsync();\n\n let instance: DevServerInstance;\n if (options.headless) {\n instance = await this.startHeadlessAsync(options);\n } else {\n instance = await this.startImplementationAsync(options);\n }\n\n this.setInstance(instance);\n await this.postStartAsync(options);\n return instance;\n }\n\n protected abstract startImplementationAsync(\n options: BundlerStartOptions\n ): Promise<DevServerInstance>;\n\n public async waitForTypeScriptAsync(): Promise<boolean> {\n return false;\n }\n\n public abstract startTypeScriptServices(): Promise<void>;\n\n public async watchEnvironmentVariables(): Promise<void> {\n // noop -- We've only implemented this functionality in Metro.\n }\n\n /**\n * Creates a mock server representation that can be used to estimate URLs for a server started in another process.\n * This is used for the run commands where you can reuse the server from a previous run.\n */\n private async startHeadlessAsync(options: BundlerStartOptions): Promise<DevServerInstance> {\n if (!options.port)\n throw new CommandError('HEADLESS_SERVER', 'headless dev server requires a port option');\n this.urlCreator = this.getUrlCreator(options);\n\n return {\n // Create a mock server\n server: {\n close: (callback: () => void) => {\n this.instance = null;\n callback?.();\n },\n addListener() {},\n },\n location: {\n // The port is the main thing we want to send back.\n port: options.port,\n // localhost isn't always correct.\n host: 'localhost',\n // http is the only supported protocol on native.\n url: `http://localhost:${options.port}`,\n protocol: 'http',\n },\n middleware: {},\n messageSocket: {\n broadcast: () => {\n throw new CommandError('HEADLESS_SERVER', 'Cannot broadcast messages to headless server');\n },\n },\n };\n }\n\n /**\n * Runs after the `startAsync` function, performing any additional common operations.\n * You can assume the dev server is started by the time this function is called.\n */\n protected async postStartAsync(options: BundlerStartOptions) {\n if (\n options.location.hostType === 'tunnel' &&\n !env.EXPO_OFFLINE &&\n // This is a hack to prevent using tunnel on web since we block it upstream for some reason.\n this.isTargetingNative()\n ) {\n await this._startTunnelAsync();\n } else if (envIsWebcontainer()) {\n await this._startTunnelAsync();\n }\n\n if (!options.isExporting) {\n await this.startDevSessionAsync();\n this.watchConfig();\n }\n }\n\n protected abstract getConfigModuleIds(): string[];\n\n protected watchConfig() {\n this.notifier?.stopObserving();\n this.notifier = new FileNotifier(this.projectRoot, this.getConfigModuleIds());\n this.notifier.startObserving();\n }\n\n /** Create ngrok instance and start the tunnel server. Exposed for testing. */\n public async _startTunnelAsync(): Promise<AsyncNgrok | AsyncWsTunnel | null> {\n const port = this.getInstance()?.location.port;\n if (!port) return null;\n debug('[tunnel] connect to port: ' + port);\n this.tunnel = envIsWebcontainer()\n ? new AsyncWsTunnel(this.projectRoot, port)\n : new AsyncNgrok(this.projectRoot, port);\n await this.tunnel.startAsync();\n return this.tunnel;\n }\n\n protected async startDevSessionAsync() {\n // This is used to make Expo Go open the project in either Expo Go, or the web browser.\n // Must come after ngrok (`startTunnelAsync`) setup.\n this.devSession = new DevelopmentSession(\n this.projectRoot,\n // This URL will be used on external devices so the computer IP won't be relevant.\n this.isTargetingNative()\n ? this.getNativeRuntimeUrl()\n : this.getDevServerUrl({ hostType: 'localhost' })\n );\n\n await this.devSession.startAsync({\n runtime: this.isTargetingNative() ? 'native' : 'web',\n });\n }\n\n public isTargetingNative() {\n // Temporary hack while we implement multi-bundler dev server proxy.\n return true;\n }\n\n public isTargetingWeb() {\n return this.platformBundlers.web === this.name;\n }\n\n /**\n * Sends a message over web sockets to any connected device,\n * does nothing when the dev server is not running.\n *\n * @param method name of the command. In RN projects `reload`, and `devMenu` are available. In Expo Go, `sendDevCommand` is available.\n * @param params\n */\n public broadcastMessage(\n method: 'reload' | 'devMenu' | 'sendDevCommand',\n params?: Record<string, any>\n ) {\n this.getInstance()?.messageSocket.broadcast(method, params);\n }\n\n /** Get the running dev server instance. */\n public getInstance() {\n return this.instance;\n }\n\n /** Stop the running dev server instance. */\n async stopAsync() {\n // Stop file watching.\n this.notifier?.stopObserving();\n\n // Stop the dev session timer and tell Expo API to remove dev session.\n await this.devSession?.closeAsync();\n\n // Stop tunnel if running.\n await this.tunnel?.stopAsync().catch((e) => {\n Log.error(`Error stopping tunnel:`);\n Log.exception(e);\n });\n\n return resolveWithTimeout(\n () =>\n new Promise<void>((resolve, reject) => {\n // Close the server.\n debug(`Stopping dev server (bundler: ${this.name})`);\n\n if (this.instance?.server) {\n // Check if server is even running.\n this.instance.server.close((error) => {\n debug(`Stopped dev server (bundler: ${this.name})`);\n this.instance = null;\n if (error) {\n if ('code' in error && error.code === 'ERR_SERVER_NOT_RUNNING') {\n resolve();\n } else {\n reject(error);\n }\n } else {\n resolve();\n }\n });\n } else {\n debug(`Stopped dev server (bundler: ${this.name})`);\n this.instance = null;\n resolve();\n }\n }),\n {\n // NOTE(Bacon): Metro dev server doesn't seem to be closing in time.\n timeout: 1000,\n errorMessage: `Timeout waiting for '${this.name}' dev server to close`,\n }\n );\n }\n\n public getUrlCreator(options: Partial<Pick<BundlerStartOptions, 'port' | 'location'>> = {}) {\n if (!this.urlCreator) {\n assert(options?.port, 'Dev server instance not found');\n this.urlCreator = new UrlCreator(options.location, {\n port: options.port,\n getTunnelUrl: this.getTunnelUrl.bind(this),\n });\n }\n return this.urlCreator;\n }\n\n public getNativeRuntimeUrl(opts: Partial<CreateURLOptions> = {}) {\n return this.isDevClient\n ? (this.getUrlCreator().constructDevClientUrl(opts) ?? this.getDevServerUrl())\n : this.getUrlCreator().constructUrl({ ...opts, scheme: 'exp' });\n }\n\n /** Get the URL for the running instance of the dev server. */\n public getDevServerUrl(options: { hostType?: 'localhost' } = {}): string | null {\n const instance = this.getInstance();\n if (!instance?.location) {\n return null;\n }\n\n // If we have an active WS tunnel instance, we always need to return the tunnel location.\n if (this.tunnel && this.tunnel instanceof AsyncWsTunnel) {\n return this.getUrlCreator().constructUrl();\n }\n\n const { location } = instance;\n if (options.hostType === 'localhost') {\n return `${location.protocol}://localhost:${location.port}`;\n }\n\n return location.url ?? null;\n }\n\n public getDevServerUrlOrAssert(options: { hostType?: 'localhost' } = {}): string {\n const instance = this.getDevServerUrl(options);\n if (!instance) {\n throw new CommandError(\n 'DEV_SERVER',\n `Cannot get the dev server URL before the server has started - bundler[${this.name}]`\n );\n }\n\n return instance;\n }\n\n /** Get the base URL for JS inspector */\n public getJsInspectorBaseUrl(): string {\n if (this.name !== 'metro') {\n throw new CommandError(\n 'DEV_SERVER',\n `Cannot get the JS inspector base url - bundler[${this.name}]`\n );\n }\n return this.getUrlCreator().constructUrl({ scheme: 'http' });\n }\n\n /** Get the tunnel URL from the tunnel. */\n public getTunnelUrl(): string | null {\n return this.tunnel?.getActiveUrl() ?? null;\n }\n\n /** Open the dev server in a runtime. */\n public async openPlatformAsync(\n launchTarget: keyof typeof PLATFORM_MANAGERS | 'desktop',\n resolver: BaseResolveDeviceProps<any> = {}\n ) {\n if (launchTarget === 'desktop') {\n const serverUrl = this.getDevServerUrl({ hostType: 'localhost' });\n // Allow opening the tunnel URL when using Metro web.\n const url = this.name === 'metro' ? (this.getTunnelUrl() ?? serverUrl) : serverUrl;\n await openBrowserAsync(url!);\n return { url };\n }\n\n const runtime = this.isTargetingNative() ? (this.isDevClient ? 'custom' : 'expo') : 'web';\n const manager = await this.getPlatformManagerAsync(launchTarget);\n return manager.openAsync({ runtime }, resolver);\n }\n\n /** Open the dev server in a runtime. */\n public async openCustomRuntimeAsync<T extends BaseOpenInCustomProps = BaseOpenInCustomProps>(\n launchTarget: keyof typeof PLATFORM_MANAGERS,\n launchProps: Partial<T> = {},\n resolver: BaseResolveDeviceProps<any> = {}\n ) {\n const runtime = this.isTargetingNative() ? (this.isDevClient ? 'custom' : 'expo') : 'web';\n if (runtime !== 'custom') {\n throw new CommandError(\n `dev server cannot open custom runtimes either because it does not target native platforms or because it is not targeting dev clients. (target: ${runtime})`\n );\n }\n\n const manager = await this.getPlatformManagerAsync(launchTarget);\n return manager.openAsync({ runtime: 'custom', props: launchProps }, resolver);\n }\n\n /** Get the URL for opening in Expo Go. */\n protected getExpoGoUrl(): string {\n return this.getUrlCreator().constructUrl({ scheme: 'exp' });\n }\n\n /** Should use the interstitial page for selecting which runtime to use. */\n protected isRedirectPageEnabled(): boolean {\n return (\n !env.EXPO_NO_REDIRECT_PAGE &&\n // if user passed --dev-client flag, skip interstitial page\n !this.isDevClient &&\n // Checks if dev client is installed.\n !!resolveFrom.silent(this.projectRoot, 'expo-dev-client')\n );\n }\n\n /** Get the redirect URL when redirecting is enabled. */\n public getRedirectUrl(platform: keyof typeof PLATFORM_MANAGERS | null = null): string | null {\n if (!this.isRedirectPageEnabled()) {\n debug('Redirect page is disabled');\n return null;\n }\n\n return (\n this.getUrlCreator().constructLoadingUrl(\n {},\n platform === 'emulator' ? 'android' : platform === 'simulator' ? 'ios' : null\n ) ?? null\n );\n }\n\n public getReactDevToolsUrl(): string {\n return new URL(\n '_expo/react-devtools',\n this.getUrlCreator().constructUrl({ scheme: 'http' })\n ).toString();\n }\n\n protected async getPlatformManagerAsync(platform: keyof typeof PLATFORM_MANAGERS) {\n if (!this.platformManagers[platform]) {\n const Manager = PLATFORM_MANAGERS[platform]();\n const port = this.getInstance()?.location.port;\n if (!port || !this.urlCreator) {\n throw new CommandError(\n 'DEV_SERVER',\n 'Cannot interact with native platforms until dev server has started'\n );\n }\n debug(`Creating platform manager (platform: ${platform}, port: ${port})`);\n this.platformManagers[platform] = new Manager(this.projectRoot, port, {\n getCustomRuntimeUrl: this.urlCreator.constructDevClientUrl.bind(this.urlCreator),\n getExpoGoUrl: this.getExpoGoUrl.bind(this),\n getRedirectUrl: this.getRedirectUrl.bind(this, platform),\n getDevServerUrl: this.getDevServerUrl.bind(this, { hostType: 'localhost' }),\n });\n }\n return this.platformManagers[platform];\n }\n}\n"],"names":["BundlerDevServer","debug","require","PLATFORM_MANAGERS","simulator","ApplePlatformManager","emulator","AndroidPlatformManager","constructor","projectRoot","platformBundlers","options","tunnel","devSession","instance","platformManagers","urlCreator","notifier","devToolsPluginManager","DevToolsPluginManager","isDevClient","setInstance","getManifestMiddlewareAsync","Middleware","ExpoGoManifestHandlerMiddleware","getUrlCreator","middleware","constructUrl","bind","mode","minify","isNativeWebpack","name","isTargetingNative","privateKeyPath","startAsync","stopAsync","headless","startHeadlessAsync","startImplementationAsync","postStartAsync","waitForTypeScriptAsync","watchEnvironmentVariables","port","CommandError","server","close","callback","addListener","location","host","url","protocol","messageSocket","broadcast","hostType","env","EXPO_OFFLINE","_startTunnelAsync","envIsWebcontainer","isExporting","startDevSessionAsync","watchConfig","stopObserving","FileNotifier","getConfigModuleIds","startObserving","getInstance","AsyncWsTunnel","AsyncNgrok","DevelopmentSession","getNativeRuntimeUrl","getDevServerUrl","runtime","isTargetingWeb","web","broadcastMessage","method","params","closeAsync","catch","e","Log","error","exception","resolveWithTimeout","Promise","resolve","reject","code","timeout","errorMessage","assert","UrlCreator","getTunnelUrl","opts","constructDevClientUrl","scheme","getDevServerUrlOrAssert","getJsInspectorBaseUrl","getActiveUrl","openPlatformAsync","launchTarget","resolver","serverUrl","openBrowserAsync","manager","getPlatformManagerAsync","openAsync","openCustomRuntimeAsync","launchProps","props","getExpoGoUrl","isRedirectPageEnabled","EXPO_NO_REDIRECT_PAGE","resolveFrom","silent","getRedirectUrl","platform","constructLoadingUrl","getReactDevToolsUrl","URL","toString","Manager","getCustomRuntimeUrl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/start/server/BundlerDevServer.ts"],"sourcesContent":["import assert from 'assert';\nimport resolveFrom from 'resolve-from';\n\nimport { AsyncNgrok } from './AsyncNgrok';\nimport { AsyncWsTunnel } from './AsyncWsTunnel';\nimport DevToolsPluginManager from './DevToolsPluginManager';\nimport { DevelopmentSession } from './DevelopmentSession';\nimport { CreateURLOptions, UrlCreator } from './UrlCreator';\nimport { PlatformBundlers } from './platformBundlers';\nimport * as Log from '../../log';\nimport { FileNotifier } from '../../utils/FileNotifier';\nimport { resolveWithTimeout } from '../../utils/delay';\nimport { env, envIsWebcontainer } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\nimport { openBrowserAsync } from '../../utils/open';\nimport {\n BaseOpenInCustomProps,\n BaseResolveDeviceProps,\n PlatformManager,\n} from '../platforms/PlatformManager';\n\nconst debug = require('debug')('expo:start:server:devServer') as typeof console.log;\n\nexport type MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\nexport type ServerLike = {\n close(callback?: (err?: Error) => void): void;\n addListener?(event: string, listener: (...args: any[]) => void): unknown;\n};\n\nexport type DevServerInstance = {\n /** Bundler dev server instance. */\n server: ServerLike;\n /** Dev server URL location properties. */\n location: {\n url: string;\n port: number;\n protocol: 'http' | 'https';\n host?: string;\n };\n /** Additional middleware that's attached to the `server`. */\n middleware: any;\n /** Message socket for communicating with the runtime. */\n messageSocket: MessageSocket;\n};\n\nexport interface BundlerStartOptions {\n /** Should the dev server use `https` protocol. */\n https?: boolean;\n /** Should start the dev servers in development mode (minify). */\n mode?: 'development' | 'production';\n /** Is dev client enabled. */\n devClient?: boolean;\n /** Should run dev servers with clean caches. */\n resetDevServer?: boolean;\n /** Code signing private key path (defaults to same directory as certificate) */\n privateKeyPath?: string;\n\n /** Max amount of workers (threads) to use with Metro bundler, defaults to undefined for max workers. */\n maxWorkers?: number;\n /** Port to start the dev server on. */\n port?: number;\n\n /** Should start a headless dev server e.g. mock representation to approximate info from a server running in a different process. */\n headless?: boolean;\n /** Should instruct the bundler to create minified bundles. */\n minify?: boolean;\n\n /** Will the bundler be used for exporting. NOTE: This is an odd option to pass to the dev server. */\n isExporting?: boolean;\n\n // Webpack options\n /** Should modify and create PWA icons. */\n isImageEditingEnabled?: boolean;\n\n location: CreateURLOptions;\n}\n\nconst PLATFORM_MANAGERS = {\n simulator: () =>\n require('../platforms/ios/ApplePlatformManager')\n .ApplePlatformManager as typeof import('../platforms/ios/ApplePlatformManager').ApplePlatformManager,\n emulator: () =>\n require('../platforms/android/AndroidPlatformManager')\n .AndroidPlatformManager as typeof import('../platforms/android/AndroidPlatformManager').AndroidPlatformManager,\n};\n\nexport abstract class BundlerDevServer {\n /** Name of the bundler. */\n abstract get name(): string;\n\n /** Tunnel instance for managing tunnel connections. */\n protected tunnel: AsyncNgrok | AsyncWsTunnel | null = null;\n /** Interfaces with the Expo 'Development Session' API. */\n protected devSession: DevelopmentSession | null = null;\n /** Http server and related info. */\n protected instance: DevServerInstance | null = null;\n /** Native platform interfaces for opening projects. */\n private platformManagers: Record<string, PlatformManager<any>> = {};\n /** Manages the creation of dev server URLs. */\n protected urlCreator?: UrlCreator | null = null;\n\n private notifier: FileNotifier | null = null;\n protected readonly devToolsPluginManager: DevToolsPluginManager;\n public isDevClient: boolean;\n\n constructor(\n /** Project root folder. */\n public projectRoot: string,\n /** A mapping of bundlers to platforms. */\n public platformBundlers: PlatformBundlers,\n /** Advanced options */\n options?: {\n /**\n * The instance of DevToolsPluginManager\n * @default new DevToolsPluginManager(projectRoot)\n */\n devToolsPluginManager?: DevToolsPluginManager;\n // TODO: Replace with custom scheme maybe...\n isDevClient?: boolean;\n }\n ) {\n this.devToolsPluginManager =\n options?.devToolsPluginManager ?? new DevToolsPluginManager(projectRoot);\n this.isDevClient = options?.isDevClient ?? false;\n }\n\n protected setInstance(instance: DevServerInstance) {\n this.instance = instance;\n }\n\n /** Get the manifest middleware function. */\n protected async getManifestMiddlewareAsync(\n options: Pick<BundlerStartOptions, 'minify' | 'mode' | 'privateKeyPath'> = {}\n ) {\n const Middleware = require('./middleware/ExpoGoManifestHandlerMiddleware')\n .ExpoGoManifestHandlerMiddleware as typeof import('./middleware/ExpoGoManifestHandlerMiddleware').ExpoGoManifestHandlerMiddleware;\n\n const urlCreator = this.getUrlCreator();\n const middleware = new Middleware(this.projectRoot, {\n constructUrl: urlCreator.constructUrl.bind(urlCreator),\n mode: options.mode,\n minify: options.minify,\n isNativeWebpack: this.name === 'webpack' && this.isTargetingNative(),\n privateKeyPath: options.privateKeyPath,\n });\n return middleware;\n }\n\n /** Start the dev server using settings defined in the start command. */\n public async startAsync(options: BundlerStartOptions): Promise<DevServerInstance> {\n await this.stopAsync();\n\n let instance: DevServerInstance;\n if (options.headless) {\n instance = await this.startHeadlessAsync(options);\n } else {\n instance = await this.startImplementationAsync(options);\n }\n\n this.setInstance(instance);\n await this.postStartAsync(options);\n return instance;\n }\n\n protected abstract startImplementationAsync(\n options: BundlerStartOptions\n ): Promise<DevServerInstance>;\n\n public async waitForTypeScriptAsync(): Promise<boolean> {\n return false;\n }\n\n public abstract startTypeScriptServices(): Promise<void>;\n\n public async watchEnvironmentVariables(): Promise<void> {\n // noop -- We've only implemented this functionality in Metro.\n }\n\n /**\n * Creates a mock server representation that can be used to estimate URLs for a server started in another process.\n * This is used for the run commands where you can reuse the server from a previous run.\n */\n private async startHeadlessAsync(options: BundlerStartOptions): Promise<DevServerInstance> {\n if (!options.port)\n throw new CommandError('HEADLESS_SERVER', 'headless dev server requires a port option');\n this.urlCreator = this.getUrlCreator(options);\n\n return {\n // Create a mock server\n server: {\n close: (callback: () => void) => {\n this.instance = null;\n callback?.();\n },\n addListener() {},\n },\n location: {\n // The port is the main thing we want to send back.\n port: options.port,\n // localhost isn't always correct.\n host: 'localhost',\n // http is the only supported protocol on native.\n url: `http://localhost:${options.port}`,\n protocol: 'http',\n },\n middleware: {},\n messageSocket: {\n broadcast: () => {\n throw new CommandError('HEADLESS_SERVER', 'Cannot broadcast messages to headless server');\n },\n },\n };\n }\n\n /**\n * Runs after the `startAsync` function, performing any additional common operations.\n * You can assume the dev server is started by the time this function is called.\n */\n protected async postStartAsync(options: BundlerStartOptions) {\n if (\n options.location.hostType === 'tunnel' &&\n !env.EXPO_OFFLINE &&\n // This is a hack to prevent using tunnel on web since we block it upstream for some reason.\n this.isTargetingNative()\n ) {\n await this._startTunnelAsync();\n } else if (envIsWebcontainer()) {\n await this._startTunnelAsync();\n }\n\n if (!options.isExporting) {\n await this.startDevSessionAsync();\n this.watchConfig();\n }\n }\n\n protected abstract getConfigModuleIds(): string[];\n\n protected watchConfig() {\n this.notifier?.stopObserving();\n this.notifier = new FileNotifier(this.projectRoot, this.getConfigModuleIds());\n this.notifier.startObserving();\n }\n\n /** Create ngrok instance and start the tunnel server. Exposed for testing. */\n public async _startTunnelAsync(): Promise<AsyncNgrok | AsyncWsTunnel | null> {\n const port = this.getInstance()?.location.port;\n if (!port) return null;\n debug('[tunnel] connect to port: ' + port);\n this.tunnel = envIsWebcontainer()\n ? new AsyncWsTunnel(this.projectRoot, port)\n : new AsyncNgrok(this.projectRoot, port);\n await this.tunnel.startAsync();\n return this.tunnel;\n }\n\n protected async startDevSessionAsync() {\n // This is used to make Expo Go open the project in either Expo Go, or the web browser.\n // Must come after ngrok (`startTunnelAsync`) setup.\n this.devSession = new DevelopmentSession(\n this.projectRoot,\n // This URL will be used on external devices so the computer IP won't be relevant.\n this.isTargetingNative()\n ? this.getNativeRuntimeUrl()\n : this.getDevServerUrl({ hostType: 'localhost' })\n );\n\n await this.devSession.startAsync({\n runtime: this.isTargetingNative() ? 'native' : 'web',\n });\n }\n\n public isTargetingNative() {\n // Temporary hack while we implement multi-bundler dev server proxy.\n return true;\n }\n\n public isTargetingWeb() {\n return this.platformBundlers.web === this.name;\n }\n\n /**\n * Sends a message over web sockets to any connected device,\n * does nothing when the dev server is not running.\n *\n * @param method name of the command. In RN projects `reload`, and `devMenu` are available. In Expo Go, `sendDevCommand` is available.\n * @param params\n */\n public broadcastMessage(\n method: 'reload' | 'devMenu' | 'sendDevCommand',\n params?: Record<string, any>\n ) {\n this.getInstance()?.messageSocket.broadcast(method, params);\n }\n\n /** Get the running dev server instance. */\n public getInstance() {\n return this.instance;\n }\n\n /** Stop the running dev server instance. */\n async stopAsync() {\n // Stop file watching.\n this.notifier?.stopObserving();\n\n // Stop the dev session timer and tell Expo API to remove dev session.\n await this.devSession?.closeAsync();\n\n // Stop tunnel if running.\n await this.tunnel?.stopAsync().catch((e) => {\n Log.error(`Error stopping tunnel:`);\n Log.exception(e);\n });\n\n return resolveWithTimeout(\n () =>\n new Promise<void>((resolve, reject) => {\n // Close the server.\n debug(`Stopping dev server (bundler: ${this.name})`);\n\n if (this.instance?.server) {\n // Check if server is even running.\n this.instance.server.close((error) => {\n debug(`Stopped dev server (bundler: ${this.name})`);\n this.instance = null;\n if (error) {\n if ('code' in error && error.code === 'ERR_SERVER_NOT_RUNNING') {\n resolve();\n } else {\n reject(error);\n }\n } else {\n resolve();\n }\n });\n } else {\n debug(`Stopped dev server (bundler: ${this.name})`);\n this.instance = null;\n resolve();\n }\n }),\n {\n // NOTE(Bacon): Metro dev server doesn't seem to be closing in time.\n timeout: 1000,\n errorMessage: `Timeout waiting for '${this.name}' dev server to close`,\n }\n );\n }\n\n public getUrlCreator(options: Partial<Pick<BundlerStartOptions, 'port' | 'location'>> = {}) {\n if (!this.urlCreator) {\n assert(options?.port, 'Dev server instance not found');\n this.urlCreator = new UrlCreator(options.location, {\n port: options.port,\n getTunnelUrl: this.getTunnelUrl.bind(this),\n });\n }\n return this.urlCreator;\n }\n\n public getNativeRuntimeUrl(opts: Partial<CreateURLOptions> = {}) {\n return this.isDevClient\n ? (this.getUrlCreator().constructDevClientUrl(opts) ?? this.getDevServerUrl())\n : this.getUrlCreator().constructUrl({ ...opts, scheme: 'exp' });\n }\n\n /** Get the URL for the running instance of the dev server. */\n public getDevServerUrl(options: { hostType?: 'localhost' } = {}): string | null {\n const instance = this.getInstance();\n if (!instance?.location) {\n return null;\n }\n\n // If we have an active WS tunnel instance, we always need to return the tunnel location.\n if (this.tunnel && this.tunnel instanceof AsyncWsTunnel) {\n return this.getUrlCreator().constructUrl();\n }\n\n const { location } = instance;\n if (options.hostType === 'localhost') {\n return `${location.protocol}://localhost:${location.port}`;\n }\n\n return location.url ?? null;\n }\n\n public getDevServerUrlOrAssert(options: { hostType?: 'localhost' } = {}): string {\n const instance = this.getDevServerUrl(options);\n if (!instance) {\n throw new CommandError(\n 'DEV_SERVER',\n `Cannot get the dev server URL before the server has started - bundler[${this.name}]`\n );\n }\n\n return instance;\n }\n\n /** Get the base URL for JS inspector */\n public getJsInspectorBaseUrl(): string {\n if (this.name !== 'metro') {\n throw new CommandError(\n 'DEV_SERVER',\n `Cannot get the JS inspector base url - bundler[${this.name}]`\n );\n }\n return this.getUrlCreator().constructUrl({ scheme: 'http' });\n }\n\n /** Get the tunnel URL from the tunnel. */\n public getTunnelUrl(): string | null {\n return this.tunnel?.getActiveUrl() ?? null;\n }\n\n /** Open the dev server in a runtime. */\n public async openPlatformAsync(\n launchTarget: keyof typeof PLATFORM_MANAGERS | 'desktop',\n resolver: BaseResolveDeviceProps<any> = {}\n ) {\n if (launchTarget === 'desktop') {\n const serverUrl = this.getDevServerUrl({ hostType: 'localhost' });\n // Allow opening the tunnel URL when using Metro web.\n const url = this.name === 'metro' ? (this.getTunnelUrl() ?? serverUrl) : serverUrl;\n await openBrowserAsync(url!);\n return { url };\n }\n\n const runtime = this.isTargetingNative() ? (this.isDevClient ? 'custom' : 'expo') : 'web';\n const manager = await this.getPlatformManagerAsync(launchTarget);\n return manager.openAsync({ runtime }, resolver);\n }\n\n /** Open the dev server in a runtime. */\n public async openCustomRuntimeAsync<T extends BaseOpenInCustomProps = BaseOpenInCustomProps>(\n launchTarget: keyof typeof PLATFORM_MANAGERS,\n launchProps: Partial<T> = {},\n resolver: BaseResolveDeviceProps<any> = {}\n ) {\n const runtime = this.isTargetingNative() ? (this.isDevClient ? 'custom' : 'expo') : 'web';\n if (runtime !== 'custom') {\n throw new CommandError(\n `dev server cannot open custom runtimes either because it does not target native platforms or because it is not targeting dev clients. (target: ${runtime})`\n );\n }\n\n const manager = await this.getPlatformManagerAsync(launchTarget);\n return manager.openAsync({ runtime: 'custom', props: launchProps }, resolver);\n }\n\n /** Get the URL for opening in Expo Go. */\n protected getExpoGoUrl(): string {\n return this.getUrlCreator().constructUrl({ scheme: 'exp' });\n }\n\n /** Should use the interstitial page for selecting which runtime to use. */\n protected isRedirectPageEnabled(): boolean {\n return (\n !env.EXPO_NO_REDIRECT_PAGE &&\n // if user passed --dev-client flag, skip interstitial page\n !this.isDevClient &&\n // Checks if dev client is installed.\n !!resolveFrom.silent(this.projectRoot, 'expo-dev-client')\n );\n }\n\n /** Get the redirect URL when redirecting is enabled. */\n public getRedirectUrl(platform: keyof typeof PLATFORM_MANAGERS | null = null): string | null {\n if (!this.isRedirectPageEnabled()) {\n debug('Redirect page is disabled');\n return null;\n }\n\n return (\n this.getUrlCreator().constructLoadingUrl(\n {},\n platform === 'emulator' ? 'android' : platform === 'simulator' ? 'ios' : null\n ) ?? null\n );\n }\n\n public getReactDevToolsUrl(): string {\n return new URL(\n '_expo/react-devtools',\n this.getUrlCreator().constructUrl({ scheme: 'http' })\n ).toString();\n }\n\n protected async getPlatformManagerAsync(platform: keyof typeof PLATFORM_MANAGERS) {\n if (!this.platformManagers[platform]) {\n const Manager = PLATFORM_MANAGERS[platform]();\n const port = this.getInstance()?.location.port;\n if (!port || !this.urlCreator) {\n throw new CommandError(\n 'DEV_SERVER',\n 'Cannot interact with native platforms until dev server has started'\n );\n }\n debug(`Creating platform manager (platform: ${platform}, port: ${port})`);\n this.platformManagers[platform] = new Manager(this.projectRoot, port, {\n getCustomRuntimeUrl: this.urlCreator.constructDevClientUrl.bind(this.urlCreator),\n getExpoGoUrl: this.getExpoGoUrl.bind(this),\n getRedirectUrl: this.getRedirectUrl.bind(this, platform),\n getDevServerUrl: this.getDevServerUrl.bind(this, { hostType: 'localhost' }),\n });\n }\n return this.platformManagers[platform];\n }\n}\n"],"names":["BundlerDevServer","debug","require","PLATFORM_MANAGERS","simulator","ApplePlatformManager","emulator","AndroidPlatformManager","constructor","projectRoot","platformBundlers","options","tunnel","devSession","instance","platformManagers","urlCreator","notifier","devToolsPluginManager","DevToolsPluginManager","isDevClient","setInstance","getManifestMiddlewareAsync","Middleware","ExpoGoManifestHandlerMiddleware","getUrlCreator","middleware","constructUrl","bind","mode","minify","isNativeWebpack","name","isTargetingNative","privateKeyPath","startAsync","stopAsync","headless","startHeadlessAsync","startImplementationAsync","postStartAsync","waitForTypeScriptAsync","watchEnvironmentVariables","port","CommandError","server","close","callback","addListener","location","host","url","protocol","messageSocket","broadcast","hostType","env","EXPO_OFFLINE","_startTunnelAsync","envIsWebcontainer","isExporting","startDevSessionAsync","watchConfig","stopObserving","FileNotifier","getConfigModuleIds","startObserving","getInstance","AsyncWsTunnel","AsyncNgrok","DevelopmentSession","getNativeRuntimeUrl","getDevServerUrl","runtime","isTargetingWeb","web","broadcastMessage","method","params","closeAsync","catch","e","Log","error","exception","resolveWithTimeout","Promise","resolve","reject","code","timeout","errorMessage","assert","UrlCreator","getTunnelUrl","opts","constructDevClientUrl","scheme","getDevServerUrlOrAssert","getJsInspectorBaseUrl","getActiveUrl","openPlatformAsync","launchTarget","resolver","serverUrl","openBrowserAsync","manager","getPlatformManagerAsync","openAsync","openCustomRuntimeAsync","launchProps","props","getExpoGoUrl","isRedirectPageEnabled","EXPO_NO_REDIRECT_PAGE","resolveFrom","silent","getRedirectUrl","platform","constructLoadingUrl","getReactDevToolsUrl","URL","toString","Manager","getCustomRuntimeUrl"],"mappings":"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"}
|