@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,48 +4,46 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
Object.defineProperty(exports, "AsyncNgrok", {
|
|
6
6
|
enumerable: true,
|
|
7
|
-
get:
|
|
8
|
-
return AsyncNgrok;
|
|
9
|
-
}
|
|
7
|
+
get: ()=>AsyncNgrok
|
|
10
8
|
});
|
|
11
9
|
function _chalk() {
|
|
12
|
-
const data = /*#__PURE__*/
|
|
10
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
13
11
|
_chalk = function() {
|
|
14
12
|
return data;
|
|
15
13
|
};
|
|
16
14
|
return data;
|
|
17
15
|
}
|
|
18
16
|
function _crypto() {
|
|
19
|
-
const data = /*#__PURE__*/
|
|
17
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("crypto"));
|
|
20
18
|
_crypto = function() {
|
|
21
19
|
return data;
|
|
22
20
|
};
|
|
23
21
|
return data;
|
|
24
22
|
}
|
|
25
23
|
function _path() {
|
|
26
|
-
const data = /*#__PURE__*/
|
|
24
|
+
const data = /*#__PURE__*/ _interopRequireWildcard(require("path"));
|
|
27
25
|
_path = function() {
|
|
28
26
|
return data;
|
|
29
27
|
};
|
|
30
28
|
return data;
|
|
31
29
|
}
|
|
32
30
|
function _slugify() {
|
|
33
|
-
const data = /*#__PURE__*/
|
|
31
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("slugify"));
|
|
34
32
|
_slugify = function() {
|
|
35
33
|
return data;
|
|
36
34
|
};
|
|
37
35
|
return data;
|
|
38
36
|
}
|
|
39
|
-
const
|
|
37
|
+
const _userSettings = require("../../api/user/UserSettings");
|
|
40
38
|
const _user = require("../../api/user/user");
|
|
41
|
-
const _log = /*#__PURE__*/
|
|
39
|
+
const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../log"));
|
|
42
40
|
const _delay = require("../../utils/delay");
|
|
43
41
|
const _env = require("../../utils/env");
|
|
44
42
|
const _errors = require("../../utils/errors");
|
|
45
|
-
const
|
|
43
|
+
const _ngrokResolver = require("../doctor/ngrok/NgrokResolver");
|
|
46
44
|
const _adbReverse = require("../platforms/android/adbReverse");
|
|
47
45
|
const _settings = require("../project/settings");
|
|
48
|
-
function
|
|
46
|
+
function _interopRequireDefault(obj) {
|
|
49
47
|
return obj && obj.__esModule ? obj : {
|
|
50
48
|
default: obj
|
|
51
49
|
};
|
|
@@ -58,7 +56,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
58
56
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
59
57
|
})(nodeInterop);
|
|
60
58
|
}
|
|
61
|
-
function
|
|
59
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
62
60
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
63
61
|
return obj;
|
|
64
62
|
}
|
|
@@ -71,9 +69,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
71
69
|
if (cache && cache.has(obj)) {
|
|
72
70
|
return cache.get(obj);
|
|
73
71
|
}
|
|
74
|
-
var newObj = {
|
|
75
|
-
__proto__: null
|
|
76
|
-
};
|
|
72
|
+
var newObj = {};
|
|
77
73
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
78
74
|
for(var key in obj){
|
|
79
75
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -91,10 +87,10 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
91
87
|
}
|
|
92
88
|
return newObj;
|
|
93
89
|
}
|
|
94
|
-
const debug = require(
|
|
90
|
+
const debug = require("debug")("expo:start:server:ngrok");
|
|
95
91
|
const NGROK_CONFIG = {
|
|
96
|
-
authToken:
|
|
97
|
-
domain:
|
|
92
|
+
authToken: "5W1bR67GNbWcXqmxZzBG1_56GezNeaX6sSRvn8npeQ8",
|
|
93
|
+
domain: "exp.direct"
|
|
98
94
|
};
|
|
99
95
|
const TUNNEL_TIMEOUT = 10 * 1000;
|
|
100
96
|
class AsyncNgrok {
|
|
@@ -102,15 +98,15 @@ class AsyncNgrok {
|
|
|
102
98
|
this.projectRoot = projectRoot;
|
|
103
99
|
this.port = port;
|
|
104
100
|
this.serverUrl = null;
|
|
105
|
-
this.resolver = new
|
|
101
|
+
this.resolver = new _ngrokResolver.NgrokResolver(projectRoot);
|
|
106
102
|
}
|
|
107
103
|
getActiveUrl() {
|
|
108
104
|
return this.serverUrl;
|
|
109
105
|
}
|
|
110
106
|
/** Exposed for testing. */ async _getIdentifyingUrlSegmentsAsync() {
|
|
111
107
|
const user = await (0, _user.getUserAsync)();
|
|
112
|
-
if ((user == null ? void 0 : user.__typename) ===
|
|
113
|
-
throw new _errors.CommandError(
|
|
108
|
+
if ((user == null ? void 0 : user.__typename) === "Robot") {
|
|
109
|
+
throw new _errors.CommandError("NGROK_ROBOT", "Cannot use ngrok with a robot user.");
|
|
114
110
|
}
|
|
115
111
|
const username = (0, _user.getActorDisplayName)(user);
|
|
116
112
|
return [
|
|
@@ -121,16 +117,16 @@ class AsyncNgrok {
|
|
|
121
117
|
remove: /\./
|
|
122
118
|
}),
|
|
123
119
|
// Use the port to distinguish between multiple tunnels (webpack, metro).
|
|
124
|
-
String(this.port)
|
|
120
|
+
String(this.port),
|
|
125
121
|
];
|
|
126
122
|
}
|
|
127
123
|
/** Exposed for testing. */ async _getProjectHostnameAsync() {
|
|
128
|
-
return `${(await this._getIdentifyingUrlSegmentsAsync()).join(
|
|
124
|
+
return `${(await this._getIdentifyingUrlSegmentsAsync()).join("-")}.${NGROK_CONFIG.domain}`;
|
|
129
125
|
}
|
|
130
126
|
/** Exposed for testing. */ async _getProjectSubdomainAsync() {
|
|
131
|
-
return (await this._getIdentifyingUrlSegmentsAsync()).join(
|
|
127
|
+
return (await this._getIdentifyingUrlSegmentsAsync()).join("-");
|
|
132
128
|
}
|
|
133
|
-
/** Start ngrok on the given port for the project. */ async startAsync({ timeout
|
|
129
|
+
/** Start ngrok on the given port for the project. */ async startAsync({ timeout } = {}) {
|
|
134
130
|
// Ensure the instance is loaded first, this can linger so we should run it before the timeout.
|
|
135
131
|
await this.resolver.resolveAsync({
|
|
136
132
|
// For now, prefer global install since the package has native code (harder to install) and doesn't change very often.
|
|
@@ -144,19 +140,19 @@ class AsyncNgrok {
|
|
|
144
140
|
this.port
|
|
145
141
|
])) {
|
|
146
142
|
// TODO: Better error message.
|
|
147
|
-
throw new _errors.CommandError(
|
|
143
|
+
throw new _errors.CommandError("NGROK_ADB", `Cannot start tunnel URL because \`adb reverse\` failed for the connected Android device(s).`);
|
|
148
144
|
}
|
|
149
145
|
}
|
|
150
146
|
this.serverUrl = await this._connectToNgrokAsync({
|
|
151
147
|
timeout
|
|
152
148
|
});
|
|
153
|
-
debug(
|
|
154
|
-
_log.log(
|
|
149
|
+
debug("Tunnel URL:", this.serverUrl);
|
|
150
|
+
_log.log("Tunnel ready.");
|
|
155
151
|
}
|
|
156
152
|
/** Stop the ngrok process if it's running. */ async stopAsync() {
|
|
157
|
-
var
|
|
158
|
-
debug(
|
|
159
|
-
await ((
|
|
153
|
+
var ref;
|
|
154
|
+
debug("Stopping Tunnel");
|
|
155
|
+
await ((ref = this.resolver.get()) == null ? void 0 : ref.kill == null ? void 0 : ref.kill());
|
|
160
156
|
this.serverUrl = null;
|
|
161
157
|
}
|
|
162
158
|
/** Exposed for testing. */ async _connectToNgrokAsync(options = {}, attempts = 0) {
|
|
@@ -171,9 +167,9 @@ class AsyncNgrok {
|
|
|
171
167
|
// https://github.com/expo/expo/pull/16556#discussion_r822307373
|
|
172
168
|
const results = await (0, _delay.resolveWithTimeout)(()=>this.connectToNgrokInternalAsync(instance, attempts), {
|
|
173
169
|
timeout: options.timeout ?? TUNNEL_TIMEOUT,
|
|
174
|
-
errorMessage:
|
|
170
|
+
errorMessage: "ngrok tunnel took too long to connect."
|
|
175
171
|
});
|
|
176
|
-
if (typeof results ===
|
|
172
|
+
if (typeof results === "string") {
|
|
177
173
|
return results;
|
|
178
174
|
}
|
|
179
175
|
// Wait 100ms and then try again
|
|
@@ -183,14 +179,14 @@ class AsyncNgrok {
|
|
|
183
179
|
async _getConnectionPropsAsync() {
|
|
184
180
|
const userDefinedSubdomain = _env.env.EXPO_TUNNEL_SUBDOMAIN;
|
|
185
181
|
if (userDefinedSubdomain) {
|
|
186
|
-
const subdomain = typeof userDefinedSubdomain ===
|
|
187
|
-
debug(
|
|
182
|
+
const subdomain = typeof userDefinedSubdomain === "string" ? userDefinedSubdomain : await this._getProjectSubdomainAsync();
|
|
183
|
+
debug("Subdomain:", subdomain);
|
|
188
184
|
return {
|
|
189
185
|
subdomain
|
|
190
186
|
};
|
|
191
187
|
} else {
|
|
192
188
|
const hostname = await this._getProjectHostnameAsync();
|
|
193
|
-
debug(
|
|
189
|
+
debug("Hostname:", hostname);
|
|
194
190
|
return {
|
|
195
191
|
hostname
|
|
196
192
|
};
|
|
@@ -199,18 +195,18 @@ class AsyncNgrok {
|
|
|
199
195
|
async connectToNgrokInternalAsync(instance, attempts = 0) {
|
|
200
196
|
try {
|
|
201
197
|
// Global config path.
|
|
202
|
-
const configPath = _path().join((0,
|
|
203
|
-
debug(
|
|
198
|
+
const configPath = _path().join((0, _userSettings.getSettingsDirectory)(), "ngrok.yml");
|
|
199
|
+
debug("Global config path:", configPath);
|
|
204
200
|
const urlProps = await this._getConnectionPropsAsync();
|
|
205
201
|
const url = await instance.connect({
|
|
206
202
|
...urlProps,
|
|
207
203
|
authtoken: NGROK_CONFIG.authToken,
|
|
208
204
|
configPath,
|
|
209
205
|
onStatusChange (status) {
|
|
210
|
-
if (status ===
|
|
211
|
-
_log.error(_chalk().default.red(
|
|
212
|
-
} else if (status ===
|
|
213
|
-
_log.log(
|
|
206
|
+
if (status === "closed") {
|
|
207
|
+
_log.error(_chalk().default.red("Tunnel connection has been closed. This is often related to intermittent connection problems with the Ngrok servers. Restart the dev server to try connecting to Ngrok again.") + _chalk().default.gray("\nCheck the Ngrok status page for outages: https://status.ngrok.com/"));
|
|
208
|
+
} else if (status === "connected") {
|
|
209
|
+
_log.log("Tunnel connected.");
|
|
214
210
|
}
|
|
215
211
|
},
|
|
216
212
|
port: this.port
|
|
@@ -218,26 +214,26 @@ class AsyncNgrok {
|
|
|
218
214
|
return url;
|
|
219
215
|
} catch (error) {
|
|
220
216
|
const assertNgrok = ()=>{
|
|
221
|
-
if ((0,
|
|
222
|
-
var
|
|
223
|
-
throw new _errors.CommandError(
|
|
217
|
+
if ((0, _ngrokResolver.isNgrokClientError)(error)) {
|
|
218
|
+
var ref;
|
|
219
|
+
throw new _errors.CommandError("NGROK_CONNECT", [
|
|
224
220
|
error.body.msg,
|
|
225
|
-
(
|
|
226
|
-
_chalk().default.gray(
|
|
227
|
-
].filter(Boolean).join(
|
|
221
|
+
(ref = error.body.details) == null ? void 0 : ref.err,
|
|
222
|
+
_chalk().default.gray("Check the Ngrok status page for outages: https://status.ngrok.com/"),
|
|
223
|
+
].filter(Boolean).join("\n\n"));
|
|
228
224
|
}
|
|
229
|
-
throw new _errors.CommandError(
|
|
225
|
+
throw new _errors.CommandError("NGROK_CONNECT", error.toString() + _chalk().default.gray("\nCheck the Ngrok status page for outages: https://status.ngrok.com/"));
|
|
230
226
|
};
|
|
231
227
|
// Attempt to connect 3 times
|
|
232
228
|
if (attempts >= 2) {
|
|
233
229
|
assertNgrok();
|
|
234
230
|
}
|
|
235
231
|
// Attempt to fix the issue
|
|
236
|
-
if ((0,
|
|
232
|
+
if ((0, _ngrokResolver.isNgrokClientError)(error) && error.body.error_code === 103) {
|
|
237
233
|
// Assert early if a custom subdomain is used since it cannot
|
|
238
234
|
// be changed and retried. If the tunnel subdomain is a boolean
|
|
239
235
|
// then we can reset the randomness and try again.
|
|
240
|
-
if (typeof _env.env.EXPO_TUNNEL_SUBDOMAIN ===
|
|
236
|
+
if (typeof _env.env.EXPO_TUNNEL_SUBDOMAIN === "string") {
|
|
241
237
|
assertNgrok();
|
|
242
238
|
}
|
|
243
239
|
// Change randomness to avoid conflict if killing ngrok doesn't help
|
|
@@ -247,7 +243,7 @@ class AsyncNgrok {
|
|
|
247
243
|
}
|
|
248
244
|
}
|
|
249
245
|
async getProjectRandomnessAsync() {
|
|
250
|
-
const { urlRandomness: randomness
|
|
246
|
+
const { urlRandomness: randomness } = await _settings.ProjectSettings.readAsync(this.projectRoot);
|
|
251
247
|
if (randomness && /^[A-Za-z0-9]/.test(randomness)) {
|
|
252
248
|
return randomness;
|
|
253
249
|
}
|
|
@@ -256,12 +252,12 @@ class AsyncNgrok {
|
|
|
256
252
|
async _resetProjectRandomnessAsync() {
|
|
257
253
|
let randomness;
|
|
258
254
|
do {
|
|
259
|
-
randomness = _crypto().default.randomBytes(5).toString(
|
|
260
|
-
}while (randomness.startsWith(
|
|
255
|
+
randomness = _crypto().default.randomBytes(5).toString("base64url");
|
|
256
|
+
}while (randomness.startsWith("_")); // _ is an invalid character for a hostname
|
|
261
257
|
await _settings.ProjectSettings.setAsync(this.projectRoot, {
|
|
262
258
|
urlRandomness: randomness
|
|
263
259
|
});
|
|
264
|
-
debug(
|
|
260
|
+
debug("Resetting project randomness:", randomness);
|
|
265
261
|
return randomness;
|
|
266
262
|
}
|
|
267
263
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/start/server/AsyncNgrok.ts"],"sourcesContent":["import chalk from 'chalk';\nimport crypto from 'crypto';\nimport * as path from 'path';\nimport slugify from 'slugify';\n\nimport { getSettingsDirectory } from '../../api/user/UserSettings';\nimport { getActorDisplayName, getUserAsync } from '../../api/user/user';\nimport * as Log from '../../log';\nimport { delayAsync, resolveWithTimeout } from '../../utils/delay';\nimport { env } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\nimport { isNgrokClientError, NgrokInstance, NgrokResolver } from '../doctor/ngrok/NgrokResolver';\nimport { hasAdbReverseAsync, startAdbReverseAsync } from '../platforms/android/adbReverse';\nimport { ProjectSettings } from '../project/settings';\n\nconst debug = require('debug')('expo:start:server:ngrok') as typeof console.log;\n\nconst NGROK_CONFIG = {\n authToken: '5W1bR67GNbWcXqmxZzBG1_56GezNeaX6sSRvn8npeQ8',\n domain: 'exp.direct',\n};\n\nconst TUNNEL_TIMEOUT = 10 * 1000;\n\nexport class AsyncNgrok {\n /** Resolves the best instance of ngrok, exposed for testing. */\n resolver: NgrokResolver;\n\n /** Info about the currently running instance of ngrok. */\n private serverUrl: string | null = null;\n\n constructor(\n private projectRoot: string,\n private port: number\n ) {\n this.resolver = new NgrokResolver(projectRoot);\n }\n\n public getActiveUrl(): string | null {\n return this.serverUrl;\n }\n\n /** Exposed for testing. */\n async _getIdentifyingUrlSegmentsAsync(): Promise<string[]> {\n const user = await getUserAsync();\n if (user?.__typename === 'Robot') {\n throw new CommandError('NGROK_ROBOT', 'Cannot use ngrok with a robot user.');\n }\n const username = getActorDisplayName(user);\n\n return [\n // NOTE: https://github.com/expo/expo/pull/16556#discussion_r822944286\n await this.getProjectRandomnessAsync(),\n // Strip out periods from the username to avoid subdomain issues with SSL certificates.\n slugify(username, { remove: /\\./ }),\n // Use the port to distinguish between multiple tunnels (webpack, metro).\n String(this.port),\n ];\n }\n\n /** Exposed for testing. */\n async _getProjectHostnameAsync(): Promise<string> {\n return `${(await this._getIdentifyingUrlSegmentsAsync()).join('-')}.${NGROK_CONFIG.domain}`;\n }\n\n /** Exposed for testing. */\n async _getProjectSubdomainAsync(): Promise<string> {\n return (await this._getIdentifyingUrlSegmentsAsync()).join('-');\n }\n\n /** Start ngrok on the given port for the project. */\n async startAsync({ timeout }: { timeout?: number } = {}): Promise<void> {\n // Ensure the instance is loaded first, this can linger so we should run it before the timeout.\n await this.resolver.resolveAsync({\n // For now, prefer global install since the package has native code (harder to install) and doesn't change very often.\n prefersGlobalInstall: true,\n });\n\n // NOTE(EvanBacon): If the user doesn't have ADB installed,\n // then skip attempting to reverse the port.\n if (hasAdbReverseAsync()) {\n // Ensure ADB reverse is running.\n if (!(await startAdbReverseAsync([this.port]))) {\n // TODO: Better error message.\n throw new CommandError(\n 'NGROK_ADB',\n `Cannot start tunnel URL because \\`adb reverse\\` failed for the connected Android device(s).`\n );\n }\n }\n\n this.serverUrl = await this._connectToNgrokAsync({ timeout });\n\n debug('Tunnel URL:', this.serverUrl);\n Log.log('Tunnel ready.');\n }\n\n /** Stop the ngrok process if it's running. */\n public async stopAsync(): Promise<void> {\n debug('Stopping Tunnel');\n\n await this.resolver.get()?.kill?.();\n this.serverUrl = null;\n }\n\n /** Exposed for testing. */\n async _connectToNgrokAsync(\n options: { timeout?: number } = {},\n attempts: number = 0\n ): Promise<string> {\n // Attempt to stop any hanging processes, this increases the chances of a successful connection.\n await this.stopAsync();\n\n // Get the instance quietly or assert otherwise.\n const instance = await this.resolver.resolveAsync({\n shouldPrompt: false,\n autoInstall: false,\n });\n\n // TODO(Bacon): Consider dropping the timeout functionality:\n // https://github.com/expo/expo/pull/16556#discussion_r822307373\n const results = await resolveWithTimeout(\n () => this.connectToNgrokInternalAsync(instance, attempts),\n {\n timeout: options.timeout ?? TUNNEL_TIMEOUT,\n errorMessage: 'ngrok tunnel took too long to connect.',\n }\n );\n if (typeof results === 'string') {\n return results;\n }\n\n // Wait 100ms and then try again\n await delayAsync(100);\n\n return this._connectToNgrokAsync(options, attempts + 1);\n }\n\n private async _getConnectionPropsAsync(): Promise<{ hostname?: string; subdomain?: string }> {\n const userDefinedSubdomain = env.EXPO_TUNNEL_SUBDOMAIN;\n if (userDefinedSubdomain) {\n const subdomain =\n typeof userDefinedSubdomain === 'string'\n ? userDefinedSubdomain\n : await this._getProjectSubdomainAsync();\n debug('Subdomain:', subdomain);\n return { subdomain };\n } else {\n const hostname = await this._getProjectHostnameAsync();\n debug('Hostname:', hostname);\n return { hostname };\n }\n }\n\n private async connectToNgrokInternalAsync(\n instance: NgrokInstance,\n attempts: number = 0\n ): Promise<string | false> {\n try {\n // Global config path.\n const configPath = path.join(getSettingsDirectory(), 'ngrok.yml');\n debug('Global config path:', configPath);\n const urlProps = await this._getConnectionPropsAsync();\n\n const url = await instance.connect({\n ...urlProps,\n authtoken: NGROK_CONFIG.authToken,\n configPath,\n onStatusChange(status) {\n if (status === 'closed') {\n Log.error(\n chalk.red(\n 'Tunnel connection has been closed. This is often related to intermittent connection problems with the Ngrok servers. Restart the dev server to try connecting to Ngrok again.'\n ) + chalk.gray('\\nCheck the Ngrok status page for outages: https://status.ngrok.com/')\n );\n } else if (status === 'connected') {\n Log.log('Tunnel connected.');\n }\n },\n port: this.port,\n });\n return url;\n } catch (error: any) {\n const assertNgrok = () => {\n if (isNgrokClientError(error)) {\n throw new CommandError(\n 'NGROK_CONNECT',\n [\n error.body.msg,\n error.body.details?.err,\n chalk.gray('Check the Ngrok status page for outages: https://status.ngrok.com/'),\n ]\n .filter(Boolean)\n .join('\\n\\n')\n );\n }\n throw new CommandError(\n 'NGROK_CONNECT',\n error.toString() +\n chalk.gray('\\nCheck the Ngrok status page for outages: https://status.ngrok.com/')\n );\n };\n\n // Attempt to connect 3 times\n if (attempts >= 2) {\n assertNgrok();\n }\n\n // Attempt to fix the issue\n if (isNgrokClientError(error) && error.body.error_code === 103) {\n // Assert early if a custom subdomain is used since it cannot\n // be changed and retried. If the tunnel subdomain is a boolean\n // then we can reset the randomness and try again.\n if (typeof env.EXPO_TUNNEL_SUBDOMAIN === 'string') {\n assertNgrok();\n }\n // Change randomness to avoid conflict if killing ngrok doesn't help\n await this._resetProjectRandomnessAsync();\n }\n\n return false;\n }\n }\n\n private async getProjectRandomnessAsync() {\n const { urlRandomness: randomness } = await ProjectSettings.readAsync(this.projectRoot);\n if (randomness && /^[A-Za-z0-9]/.test(randomness)) {\n return randomness;\n }\n return await this._resetProjectRandomnessAsync();\n }\n\n async _resetProjectRandomnessAsync() {\n let randomness: string;\n do {\n randomness = crypto.randomBytes(5).toString('base64url');\n } while (randomness.startsWith('_')); // _ is an invalid character for a hostname\n\n await ProjectSettings.setAsync(this.projectRoot, { urlRandomness: randomness });\n debug('Resetting project randomness:', randomness);\n return randomness;\n }\n}\n"],"names":["AsyncNgrok","debug","require","NGROK_CONFIG","authToken","domain","TUNNEL_TIMEOUT","constructor","projectRoot","port","serverUrl","resolver","NgrokResolver","getActiveUrl","_getIdentifyingUrlSegmentsAsync","user","getUserAsync","__typename","CommandError","username","getActorDisplayName","getProjectRandomnessAsync","slugify","remove","String","_getProjectHostnameAsync","join","_getProjectSubdomainAsync","startAsync","timeout","resolveAsync","prefersGlobalInstall","hasAdbReverseAsync","startAdbReverseAsync","_connectToNgrokAsync","Log","log","stopAsync","get","kill","options","attempts","instance","shouldPrompt","autoInstall","results","resolveWithTimeout","connectToNgrokInternalAsync","errorMessage","delayAsync","_getConnectionPropsAsync","userDefinedSubdomain","env","EXPO_TUNNEL_SUBDOMAIN","subdomain","hostname","configPath","path","getSettingsDirectory","urlProps","url","connect","authtoken","onStatusChange","status","error","chalk","red","gray","assertNgrok","isNgrokClientError","body","msg","details","err","filter","Boolean","toString","error_code","_resetProjectRandomnessAsync","urlRandomness","randomness","ProjectSettings","readAsync","test","crypto","randomBytes","startsWith","setAsync"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/start/server/AsyncNgrok.ts"],"sourcesContent":["import chalk from 'chalk';\nimport crypto from 'crypto';\nimport * as path from 'path';\nimport slugify from 'slugify';\n\nimport { getSettingsDirectory } from '../../api/user/UserSettings';\nimport { getActorDisplayName, getUserAsync } from '../../api/user/user';\nimport * as Log from '../../log';\nimport { delayAsync, resolveWithTimeout } from '../../utils/delay';\nimport { env } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\nimport { isNgrokClientError, NgrokInstance, NgrokResolver } from '../doctor/ngrok/NgrokResolver';\nimport { hasAdbReverseAsync, startAdbReverseAsync } from '../platforms/android/adbReverse';\nimport { ProjectSettings } from '../project/settings';\n\nconst debug = require('debug')('expo:start:server:ngrok') as typeof console.log;\n\nconst NGROK_CONFIG = {\n authToken: '5W1bR67GNbWcXqmxZzBG1_56GezNeaX6sSRvn8npeQ8',\n domain: 'exp.direct',\n};\n\nconst TUNNEL_TIMEOUT = 10 * 1000;\n\nexport class AsyncNgrok {\n /** Resolves the best instance of ngrok, exposed for testing. */\n resolver: NgrokResolver;\n\n /** Info about the currently running instance of ngrok. */\n private serverUrl: string | null = null;\n\n constructor(\n private projectRoot: string,\n private port: number\n ) {\n this.resolver = new NgrokResolver(projectRoot);\n }\n\n public getActiveUrl(): string | null {\n return this.serverUrl;\n }\n\n /** Exposed for testing. */\n async _getIdentifyingUrlSegmentsAsync(): Promise<string[]> {\n const user = await getUserAsync();\n if (user?.__typename === 'Robot') {\n throw new CommandError('NGROK_ROBOT', 'Cannot use ngrok with a robot user.');\n }\n const username = getActorDisplayName(user);\n\n return [\n // NOTE: https://github.com/expo/expo/pull/16556#discussion_r822944286\n await this.getProjectRandomnessAsync(),\n // Strip out periods from the username to avoid subdomain issues with SSL certificates.\n slugify(username, { remove: /\\./ }),\n // Use the port to distinguish between multiple tunnels (webpack, metro).\n String(this.port),\n ];\n }\n\n /** Exposed for testing. */\n async _getProjectHostnameAsync(): Promise<string> {\n return `${(await this._getIdentifyingUrlSegmentsAsync()).join('-')}.${NGROK_CONFIG.domain}`;\n }\n\n /** Exposed for testing. */\n async _getProjectSubdomainAsync(): Promise<string> {\n return (await this._getIdentifyingUrlSegmentsAsync()).join('-');\n }\n\n /** Start ngrok on the given port for the project. */\n async startAsync({ timeout }: { timeout?: number } = {}): Promise<void> {\n // Ensure the instance is loaded first, this can linger so we should run it before the timeout.\n await this.resolver.resolveAsync({\n // For now, prefer global install since the package has native code (harder to install) and doesn't change very often.\n prefersGlobalInstall: true,\n });\n\n // NOTE(EvanBacon): If the user doesn't have ADB installed,\n // then skip attempting to reverse the port.\n if (hasAdbReverseAsync()) {\n // Ensure ADB reverse is running.\n if (!(await startAdbReverseAsync([this.port]))) {\n // TODO: Better error message.\n throw new CommandError(\n 'NGROK_ADB',\n `Cannot start tunnel URL because \\`adb reverse\\` failed for the connected Android device(s).`\n );\n }\n }\n\n this.serverUrl = await this._connectToNgrokAsync({ timeout });\n\n debug('Tunnel URL:', this.serverUrl);\n Log.log('Tunnel ready.');\n }\n\n /** Stop the ngrok process if it's running. */\n public async stopAsync(): Promise<void> {\n debug('Stopping Tunnel');\n\n await this.resolver.get()?.kill?.();\n this.serverUrl = null;\n }\n\n /** Exposed for testing. */\n async _connectToNgrokAsync(\n options: { timeout?: number } = {},\n attempts: number = 0\n ): Promise<string> {\n // Attempt to stop any hanging processes, this increases the chances of a successful connection.\n await this.stopAsync();\n\n // Get the instance quietly or assert otherwise.\n const instance = await this.resolver.resolveAsync({\n shouldPrompt: false,\n autoInstall: false,\n });\n\n // TODO(Bacon): Consider dropping the timeout functionality:\n // https://github.com/expo/expo/pull/16556#discussion_r822307373\n const results = await resolveWithTimeout(\n () => this.connectToNgrokInternalAsync(instance, attempts),\n {\n timeout: options.timeout ?? TUNNEL_TIMEOUT,\n errorMessage: 'ngrok tunnel took too long to connect.',\n }\n );\n if (typeof results === 'string') {\n return results;\n }\n\n // Wait 100ms and then try again\n await delayAsync(100);\n\n return this._connectToNgrokAsync(options, attempts + 1);\n }\n\n private async _getConnectionPropsAsync(): Promise<{ hostname?: string; subdomain?: string }> {\n const userDefinedSubdomain = env.EXPO_TUNNEL_SUBDOMAIN;\n if (userDefinedSubdomain) {\n const subdomain =\n typeof userDefinedSubdomain === 'string'\n ? userDefinedSubdomain\n : await this._getProjectSubdomainAsync();\n debug('Subdomain:', subdomain);\n return { subdomain };\n } else {\n const hostname = await this._getProjectHostnameAsync();\n debug('Hostname:', hostname);\n return { hostname };\n }\n }\n\n private async connectToNgrokInternalAsync(\n instance: NgrokInstance,\n attempts: number = 0\n ): Promise<string | false> {\n try {\n // Global config path.\n const configPath = path.join(getSettingsDirectory(), 'ngrok.yml');\n debug('Global config path:', configPath);\n const urlProps = await this._getConnectionPropsAsync();\n\n const url = await instance.connect({\n ...urlProps,\n authtoken: NGROK_CONFIG.authToken,\n configPath,\n onStatusChange(status) {\n if (status === 'closed') {\n Log.error(\n chalk.red(\n 'Tunnel connection has been closed. This is often related to intermittent connection problems with the Ngrok servers. Restart the dev server to try connecting to Ngrok again.'\n ) + chalk.gray('\\nCheck the Ngrok status page for outages: https://status.ngrok.com/')\n );\n } else if (status === 'connected') {\n Log.log('Tunnel connected.');\n }\n },\n port: this.port,\n });\n return url;\n } catch (error: any) {\n const assertNgrok = () => {\n if (isNgrokClientError(error)) {\n throw new CommandError(\n 'NGROK_CONNECT',\n [\n error.body.msg,\n error.body.details?.err,\n chalk.gray('Check the Ngrok status page for outages: https://status.ngrok.com/'),\n ]\n .filter(Boolean)\n .join('\\n\\n')\n );\n }\n throw new CommandError(\n 'NGROK_CONNECT',\n error.toString() +\n chalk.gray('\\nCheck the Ngrok status page for outages: https://status.ngrok.com/')\n );\n };\n\n // Attempt to connect 3 times\n if (attempts >= 2) {\n assertNgrok();\n }\n\n // Attempt to fix the issue\n if (isNgrokClientError(error) && error.body.error_code === 103) {\n // Assert early if a custom subdomain is used since it cannot\n // be changed and retried. If the tunnel subdomain is a boolean\n // then we can reset the randomness and try again.\n if (typeof env.EXPO_TUNNEL_SUBDOMAIN === 'string') {\n assertNgrok();\n }\n // Change randomness to avoid conflict if killing ngrok doesn't help\n await this._resetProjectRandomnessAsync();\n }\n\n return false;\n }\n }\n\n private async getProjectRandomnessAsync() {\n const { urlRandomness: randomness } = await ProjectSettings.readAsync(this.projectRoot);\n if (randomness && /^[A-Za-z0-9]/.test(randomness)) {\n return randomness;\n }\n return await this._resetProjectRandomnessAsync();\n }\n\n async _resetProjectRandomnessAsync() {\n let randomness: string;\n do {\n randomness = crypto.randomBytes(5).toString('base64url');\n } while (randomness.startsWith('_')); // _ is an invalid character for a hostname\n\n await ProjectSettings.setAsync(this.projectRoot, { urlRandomness: randomness });\n debug('Resetting project randomness:', randomness);\n return randomness;\n }\n}\n"],"names":["AsyncNgrok","debug","require","NGROK_CONFIG","authToken","domain","TUNNEL_TIMEOUT","constructor","projectRoot","port","serverUrl","resolver","NgrokResolver","getActiveUrl","_getIdentifyingUrlSegmentsAsync","user","getUserAsync","__typename","CommandError","username","getActorDisplayName","getProjectRandomnessAsync","slugify","remove","String","_getProjectHostnameAsync","join","_getProjectSubdomainAsync","startAsync","timeout","resolveAsync","prefersGlobalInstall","hasAdbReverseAsync","startAdbReverseAsync","_connectToNgrokAsync","Log","log","stopAsync","get","kill","options","attempts","instance","shouldPrompt","autoInstall","results","resolveWithTimeout","connectToNgrokInternalAsync","errorMessage","delayAsync","_getConnectionPropsAsync","userDefinedSubdomain","env","EXPO_TUNNEL_SUBDOMAIN","subdomain","hostname","configPath","path","getSettingsDirectory","urlProps","url","connect","authtoken","onStatusChange","status","error","chalk","red","gray","assertNgrok","isNgrokClientError","body","msg","details","err","filter","Boolean","toString","error_code","_resetProjectRandomnessAsync","urlRandomness","randomness","ProjectSettings","readAsync","test","crypto","randomBytes","startsWith","setAsync"],"mappings":"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"}
|
|
@@ -4,56 +4,54 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
Object.defineProperty(exports, "AsyncWsTunnel", {
|
|
6
6
|
enumerable: true,
|
|
7
|
-
get:
|
|
8
|
-
return AsyncWsTunnel;
|
|
9
|
-
}
|
|
7
|
+
get: ()=>AsyncWsTunnel
|
|
10
8
|
});
|
|
11
|
-
function
|
|
12
|
-
const data = /*#__PURE__*/
|
|
13
|
-
|
|
9
|
+
function _wsTunnel() {
|
|
10
|
+
const data = /*#__PURE__*/ _interopRequireWildcard(require("@expo/ws-tunnel"));
|
|
11
|
+
_wsTunnel = function() {
|
|
14
12
|
return data;
|
|
15
13
|
};
|
|
16
14
|
return data;
|
|
17
15
|
}
|
|
18
16
|
function _chalk() {
|
|
19
|
-
const data = /*#__PURE__*/
|
|
17
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
20
18
|
_chalk = function() {
|
|
21
19
|
return data;
|
|
22
20
|
};
|
|
23
21
|
return data;
|
|
24
22
|
}
|
|
25
|
-
function
|
|
26
|
-
const data = /*#__PURE__*/
|
|
27
|
-
|
|
23
|
+
function _nodeFs() {
|
|
24
|
+
const data = /*#__PURE__*/ _interopRequireWildcard(require("node:fs"));
|
|
25
|
+
_nodeFs = function() {
|
|
28
26
|
return data;
|
|
29
27
|
};
|
|
30
28
|
return data;
|
|
31
29
|
}
|
|
32
|
-
function
|
|
30
|
+
function _nodeOs() {
|
|
33
31
|
const data = require("node:os");
|
|
34
|
-
|
|
32
|
+
_nodeOs = function() {
|
|
35
33
|
return data;
|
|
36
34
|
};
|
|
37
35
|
return data;
|
|
38
36
|
}
|
|
39
|
-
function
|
|
40
|
-
const data = /*#__PURE__*/
|
|
41
|
-
|
|
37
|
+
function _nodePath() {
|
|
38
|
+
const data = /*#__PURE__*/ _interopRequireWildcard(require("node:path"));
|
|
39
|
+
_nodePath = function() {
|
|
42
40
|
return data;
|
|
43
41
|
};
|
|
44
42
|
return data;
|
|
45
43
|
}
|
|
46
|
-
function
|
|
47
|
-
const data = /*#__PURE__*/
|
|
48
|
-
|
|
44
|
+
function _tempDir() {
|
|
45
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("temp-dir"));
|
|
46
|
+
_tempDir = function() {
|
|
49
47
|
return data;
|
|
50
48
|
};
|
|
51
49
|
return data;
|
|
52
50
|
}
|
|
53
|
-
const _log = /*#__PURE__*/
|
|
51
|
+
const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../log"));
|
|
54
52
|
const _env = require("../../utils/env");
|
|
55
53
|
const _errors = require("../../utils/errors");
|
|
56
|
-
function
|
|
54
|
+
function _interopRequireDefault(obj) {
|
|
57
55
|
return obj && obj.__esModule ? obj : {
|
|
58
56
|
default: obj
|
|
59
57
|
};
|
|
@@ -66,7 +64,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
66
64
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
67
65
|
})(nodeInterop);
|
|
68
66
|
}
|
|
69
|
-
function
|
|
67
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
70
68
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
71
69
|
return obj;
|
|
72
70
|
}
|
|
@@ -79,9 +77,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
79
77
|
if (cache && cache.has(obj)) {
|
|
80
78
|
return cache.get(obj);
|
|
81
79
|
}
|
|
82
|
-
var newObj = {
|
|
83
|
-
__proto__: null
|
|
84
|
-
};
|
|
80
|
+
var newObj = {};
|
|
85
81
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
86
82
|
for(var key in obj){
|
|
87
83
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -99,56 +95,56 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
99
95
|
}
|
|
100
96
|
return newObj;
|
|
101
97
|
}
|
|
102
|
-
const debug = require(
|
|
98
|
+
const debug = require("debug")("expo:start:server:ws-tunnel");
|
|
103
99
|
class AsyncWsTunnel {
|
|
100
|
+
/** Info about the currently running instance of tunnel. */ serverUrl = null;
|
|
104
101
|
constructor(_projectRoot, port){
|
|
105
|
-
/** Info about the currently running instance of tunnel. */ this.serverUrl = null;
|
|
106
102
|
if (port !== 8081) {
|
|
107
|
-
throw new _errors.CommandError(
|
|
103
|
+
throw new _errors.CommandError("WS_TUNNEL_PORT", `WS-tunnel only supports tunneling over port 8081, attempted to use port ${port}`);
|
|
108
104
|
}
|
|
109
105
|
}
|
|
110
106
|
getActiveUrl() {
|
|
111
107
|
return this.serverUrl;
|
|
112
108
|
}
|
|
113
109
|
async startAsync() {
|
|
114
|
-
this.serverUrl = await
|
|
110
|
+
this.serverUrl = await _wsTunnel().startAsync({
|
|
115
111
|
...getTunnelOptions(),
|
|
116
112
|
onStatusChange (status) {
|
|
117
|
-
if (status ===
|
|
118
|
-
_log.error(_chalk().default.red(
|
|
113
|
+
if (status === "disconnected") {
|
|
114
|
+
_log.error(_chalk().default.red("Tunnel connection has been closed. This is often related to intermittent connection problems with the ws proxy servers. Restart the dev server to try connecting again.") + _chalk().default.gray("\nCheck the Expo status page for outages: https://status.expo.dev/"));
|
|
119
115
|
}
|
|
120
116
|
}
|
|
121
117
|
});
|
|
122
|
-
debug(
|
|
118
|
+
debug("Tunnel URL:", this.serverUrl);
|
|
123
119
|
}
|
|
124
120
|
async stopAsync() {
|
|
125
|
-
debug(
|
|
126
|
-
await
|
|
121
|
+
debug("Stopping Tunnel");
|
|
122
|
+
await _wsTunnel().stopAsync();
|
|
127
123
|
this.serverUrl = null;
|
|
128
124
|
}
|
|
129
125
|
}
|
|
130
126
|
// Generate a base-36 string of 5 characters (from 32 bits of randomness)
|
|
131
127
|
function randomStr() {
|
|
132
|
-
return (Math.random().toString(36) +
|
|
128
|
+
return (Math.random().toString(36) + "00000").slice(2, 7);
|
|
133
129
|
}
|
|
134
130
|
function getTunnelSession() {
|
|
135
131
|
let session = randomStr() + randomStr() + randomStr();
|
|
136
132
|
if ((0, _env.envIsWebcontainer)()) {
|
|
137
|
-
const leaseId = Buffer.from((0,
|
|
138
|
-
const leaseFile =
|
|
133
|
+
const leaseId = Buffer.from((0, _nodeOs().hostname)()).toString("base64url");
|
|
134
|
+
const leaseFile = _nodePath().join(_tempDir().default, `_ws_tunnel_lease_${leaseId}`);
|
|
139
135
|
try {
|
|
140
|
-
session =
|
|
136
|
+
session = _nodeFs().readFileSync(leaseFile, "utf8").trim() || session;
|
|
141
137
|
} catch {}
|
|
142
138
|
try {
|
|
143
|
-
|
|
139
|
+
_nodeFs().writeFileSync(leaseFile, session, "utf8");
|
|
144
140
|
} catch {}
|
|
145
141
|
}
|
|
146
142
|
return session;
|
|
147
143
|
}
|
|
148
144
|
function getTunnelOptions() {
|
|
149
145
|
const userDefinedSubdomain = _env.env.EXPO_TUNNEL_SUBDOMAIN;
|
|
150
|
-
if (userDefinedSubdomain && typeof userDefinedSubdomain ===
|
|
151
|
-
debug(
|
|
146
|
+
if (userDefinedSubdomain && typeof userDefinedSubdomain === "string") {
|
|
147
|
+
debug("Session:", userDefinedSubdomain);
|
|
152
148
|
return {
|
|
153
149
|
session: userDefinedSubdomain
|
|
154
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/start/server/AsyncWsTunnel.ts"],"sourcesContent":["import * as tunnel from '@expo/ws-tunnel';\nimport chalk from 'chalk';\nimport * as fs from 'node:fs';\nimport { hostname } from 'node:os';\nimport * as path from 'node:path';\nimport tempDir from 'temp-dir';\n\nimport * as Log from '../../log';\nimport { env, envIsWebcontainer } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\n\nconst debug = require('debug')('expo:start:server:ws-tunnel') as typeof console.log;\n\nexport class AsyncWsTunnel {\n /** Info about the currently running instance of tunnel. */\n private serverUrl: string | null = null;\n\n constructor(_projectRoot: string, port: number) {\n if (port !== 8081) {\n throw new CommandError(\n 'WS_TUNNEL_PORT',\n `WS-tunnel only supports tunneling over port 8081, attempted to use port ${port}`\n );\n }\n }\n\n public getActiveUrl(): string | null {\n return this.serverUrl;\n }\n\n async startAsync(): Promise<void> {\n this.serverUrl = await tunnel.startAsync({\n ...getTunnelOptions(),\n onStatusChange(status) {\n if (status === 'disconnected') {\n Log.error(\n chalk.red(\n 'Tunnel connection has been closed. This is often related to intermittent connection problems with the ws proxy servers. Restart the dev server to try connecting again.'\n ) + chalk.gray('\\nCheck the Expo status page for outages: https://status.expo.dev/')\n );\n }\n },\n });\n\n debug('Tunnel URL:', this.serverUrl);\n }\n\n async stopAsync(): Promise<void> {\n debug('Stopping Tunnel');\n await tunnel.stopAsync();\n this.serverUrl = null;\n }\n}\n\n// Generate a base-36 string of 5 characters (from 32 bits of randomness)\nfunction randomStr() {\n return (Math.random().toString(36) + '00000').slice(2, 7);\n}\n\nfunction getTunnelSession(): string {\n let session = randomStr() + randomStr() + randomStr();\n if (envIsWebcontainer()) {\n const leaseId = Buffer.from(hostname()).toString('base64url');\n const leaseFile = path.join(tempDir, `_ws_tunnel_lease_${leaseId}`);\n try {\n session = fs.readFileSync(leaseFile, 'utf8').trim() || session;\n } catch {}\n try {\n fs.writeFileSync(leaseFile, session, 'utf8');\n } catch {}\n }\n return session;\n}\n\nfunction getTunnelOptions() {\n const userDefinedSubdomain = env.EXPO_TUNNEL_SUBDOMAIN;\n if (userDefinedSubdomain && typeof userDefinedSubdomain === 'string') {\n debug('Session:', userDefinedSubdomain);\n return { session: userDefinedSubdomain };\n } else {\n const session = getTunnelSession();\n return { session };\n }\n}\n"],"names":["AsyncWsTunnel","debug","require","constructor","_projectRoot","port","
|
|
1
|
+
{"version":3,"sources":["../../../../src/start/server/AsyncWsTunnel.ts"],"sourcesContent":["import * as tunnel from '@expo/ws-tunnel';\nimport chalk from 'chalk';\nimport * as fs from 'node:fs';\nimport { hostname } from 'node:os';\nimport * as path from 'node:path';\nimport tempDir from 'temp-dir';\n\nimport * as Log from '../../log';\nimport { env, envIsWebcontainer } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\n\nconst debug = require('debug')('expo:start:server:ws-tunnel') as typeof console.log;\n\nexport class AsyncWsTunnel {\n /** Info about the currently running instance of tunnel. */\n private serverUrl: string | null = null;\n\n constructor(_projectRoot: string, port: number) {\n if (port !== 8081) {\n throw new CommandError(\n 'WS_TUNNEL_PORT',\n `WS-tunnel only supports tunneling over port 8081, attempted to use port ${port}`\n );\n }\n }\n\n public getActiveUrl(): string | null {\n return this.serverUrl;\n }\n\n async startAsync(): Promise<void> {\n this.serverUrl = await tunnel.startAsync({\n ...getTunnelOptions(),\n onStatusChange(status) {\n if (status === 'disconnected') {\n Log.error(\n chalk.red(\n 'Tunnel connection has been closed. This is often related to intermittent connection problems with the ws proxy servers. Restart the dev server to try connecting again.'\n ) + chalk.gray('\\nCheck the Expo status page for outages: https://status.expo.dev/')\n );\n }\n },\n });\n\n debug('Tunnel URL:', this.serverUrl);\n }\n\n async stopAsync(): Promise<void> {\n debug('Stopping Tunnel');\n await tunnel.stopAsync();\n this.serverUrl = null;\n }\n}\n\n// Generate a base-36 string of 5 characters (from 32 bits of randomness)\nfunction randomStr() {\n return (Math.random().toString(36) + '00000').slice(2, 7);\n}\n\nfunction getTunnelSession(): string {\n let session = randomStr() + randomStr() + randomStr();\n if (envIsWebcontainer()) {\n const leaseId = Buffer.from(hostname()).toString('base64url');\n const leaseFile = path.join(tempDir, `_ws_tunnel_lease_${leaseId}`);\n try {\n session = fs.readFileSync(leaseFile, 'utf8').trim() || session;\n } catch {}\n try {\n fs.writeFileSync(leaseFile, session, 'utf8');\n } catch {}\n }\n return session;\n}\n\nfunction getTunnelOptions() {\n const userDefinedSubdomain = env.EXPO_TUNNEL_SUBDOMAIN;\n if (userDefinedSubdomain && typeof userDefinedSubdomain === 'string') {\n debug('Session:', userDefinedSubdomain);\n return { session: userDefinedSubdomain };\n } else {\n const session = getTunnelSession();\n return { session };\n }\n}\n"],"names":["AsyncWsTunnel","debug","require","serverUrl","constructor","_projectRoot","port","CommandError","getActiveUrl","startAsync","tunnel","getTunnelOptions","onStatusChange","status","Log","error","chalk","red","gray","stopAsync","randomStr","Math","random","toString","slice","getTunnelSession","session","envIsWebcontainer","leaseId","Buffer","from","hostname","leaseFile","path","join","tempDir","fs","readFileSync","trim","writeFileSync","userDefinedSubdomain","env","EXPO_TUNNEL_SUBDOMAIN"],"mappings":"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"}
|