@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
|
@@ -9,26 +9,20 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
DOM_COMPONENTS_BUNDLE_DIR:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
createDomComponentsMiddleware: function() {
|
|
16
|
-
return createDomComponentsMiddleware;
|
|
17
|
-
},
|
|
18
|
-
getDomComponentHtml: function() {
|
|
19
|
-
return getDomComponentHtml;
|
|
20
|
-
}
|
|
12
|
+
DOM_COMPONENTS_BUNDLE_DIR: ()=>DOM_COMPONENTS_BUNDLE_DIR,
|
|
13
|
+
createDomComponentsMiddleware: ()=>createDomComponentsMiddleware,
|
|
14
|
+
getDomComponentHtml: ()=>getDomComponentHtml
|
|
21
15
|
});
|
|
22
16
|
function _path() {
|
|
23
|
-
const data = /*#__PURE__*/
|
|
17
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
24
18
|
_path = function() {
|
|
25
19
|
return data;
|
|
26
20
|
};
|
|
27
21
|
return data;
|
|
28
22
|
}
|
|
29
|
-
function
|
|
30
|
-
const data = /*#__PURE__*/
|
|
31
|
-
|
|
23
|
+
function _resolveFrom() {
|
|
24
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
|
|
25
|
+
_resolveFrom = function() {
|
|
32
26
|
return data;
|
|
33
27
|
};
|
|
34
28
|
return data;
|
|
@@ -38,58 +32,58 @@ const _log = require("../../../log");
|
|
|
38
32
|
const _filePath = require("../../../utils/filePath");
|
|
39
33
|
const _fn = require("../../../utils/fn");
|
|
40
34
|
const _createServerComponentsMiddleware = require("../metro/createServerComponentsMiddleware");
|
|
41
|
-
function
|
|
35
|
+
function _interopRequireDefault(obj) {
|
|
42
36
|
return obj && obj.__esModule ? obj : {
|
|
43
37
|
default: obj
|
|
44
38
|
};
|
|
45
39
|
}
|
|
46
|
-
const DOM_COMPONENTS_BUNDLE_DIR =
|
|
47
|
-
const warnUnstable = (0, _fn.memoize)(()=>_log.Log.warn(
|
|
40
|
+
const DOM_COMPONENTS_BUNDLE_DIR = "www.bundle";
|
|
41
|
+
const warnUnstable = (0, _fn.memoize)(()=>_log.Log.warn("Using experimental DOM Components API. Production exports may not work as expected."));
|
|
48
42
|
const checkWebViewInstalled = (0, _fn.memoize)((projectRoot)=>{
|
|
49
|
-
const webViewInstalled =
|
|
43
|
+
const webViewInstalled = _resolveFrom().default.silent(projectRoot, "react-native-webview") || _resolveFrom().default.silent(projectRoot, "@expo/dom-webview");
|
|
50
44
|
if (!webViewInstalled) {
|
|
51
45
|
throw new Error(`To use DOM Components, you must install the 'react-native-webview' package. Run 'npx expo install react-native-webview' to install it.`);
|
|
52
46
|
}
|
|
53
47
|
});
|
|
54
|
-
function createDomComponentsMiddleware({ metroRoot, projectRoot
|
|
48
|
+
function createDomComponentsMiddleware({ metroRoot , projectRoot }, instanceMetroOptions) {
|
|
55
49
|
return (req, res, next)=>{
|
|
56
50
|
if (!req.url) return next();
|
|
57
51
|
const url = coerceUrl(req.url);
|
|
58
52
|
// Match `/_expo/@dom`.
|
|
59
53
|
// This URL can contain additional paths like `/_expo/@dom/foo.js?file=...` to help the Safari dev tools.
|
|
60
|
-
if (!url.pathname.startsWith(
|
|
54
|
+
if (!url.pathname.startsWith("/_expo/@dom")) {
|
|
61
55
|
return next();
|
|
62
56
|
}
|
|
63
|
-
const file = url.searchParams.get(
|
|
64
|
-
if (!file || !file.startsWith(
|
|
57
|
+
const file = url.searchParams.get("file");
|
|
58
|
+
if (!file || !file.startsWith("file://")) {
|
|
65
59
|
res.statusCode = 400;
|
|
66
|
-
res.statusMessage =
|
|
60
|
+
res.statusMessage = "Invalid file path: " + file;
|
|
67
61
|
return res.end();
|
|
68
62
|
}
|
|
69
63
|
checkWebViewInstalled(projectRoot);
|
|
70
64
|
warnUnstable();
|
|
71
65
|
// Generate a unique entry file for the webview.
|
|
72
|
-
const generatedEntry = (0, _filePath.toPosixPath)(file.startsWith(
|
|
73
|
-
const virtualEntry = (0, _filePath.toPosixPath)((0,
|
|
66
|
+
const generatedEntry = (0, _filePath.toPosixPath)(file.startsWith("file://") ? (0, _createServerComponentsMiddleware.fileURLToFilePath)(file) : file);
|
|
67
|
+
const virtualEntry = (0, _filePath.toPosixPath)((0, _resolveFrom().default)(projectRoot, "expo/dom/entry.js"));
|
|
74
68
|
// The relative import path will be used like URI so it must be POSIX.
|
|
75
|
-
const relativeImport =
|
|
69
|
+
const relativeImport = "./" + _path().default.posix.relative(_path().default.dirname(virtualEntry), generatedEntry);
|
|
76
70
|
// Create the script URL
|
|
77
71
|
const requestUrlBase = `http://${req.headers.host}`;
|
|
78
72
|
const metroUrl = new URL((0, _metroOptions.createBundleUrlPath)({
|
|
79
73
|
...instanceMetroOptions,
|
|
80
74
|
domRoot: encodeURI(relativeImport),
|
|
81
|
-
baseUrl:
|
|
75
|
+
baseUrl: "/",
|
|
82
76
|
mainModuleName: _path().default.relative(metroRoot, virtualEntry),
|
|
83
77
|
bytecode: false,
|
|
84
|
-
platform:
|
|
78
|
+
platform: "web",
|
|
85
79
|
isExporting: false,
|
|
86
|
-
engine:
|
|
80
|
+
engine: "hermes",
|
|
87
81
|
// Required for ensuring bundler errors are caught in the root entry / async boundary and can be recovered from automatically.
|
|
88
82
|
lazy: true
|
|
89
83
|
}), requestUrlBase).toString();
|
|
90
84
|
res.statusCode = 200;
|
|
91
85
|
// Return HTML file
|
|
92
|
-
res.setHeader(
|
|
86
|
+
res.setHeader("Content-Type", "text/html");
|
|
93
87
|
res.end(// Create the entry HTML file.
|
|
94
88
|
getDomComponentHtml(metroUrl, {
|
|
95
89
|
title: _path().default.basename(file)
|
|
@@ -100,10 +94,10 @@ function coerceUrl(url) {
|
|
|
100
94
|
try {
|
|
101
95
|
return new URL(url);
|
|
102
96
|
} catch {
|
|
103
|
-
return new URL(url,
|
|
97
|
+
return new URL(url, "https://localhost:0");
|
|
104
98
|
}
|
|
105
99
|
}
|
|
106
|
-
function getDomComponentHtml(src, { title
|
|
100
|
+
function getDomComponentHtml(src, { title } = {}) {
|
|
107
101
|
// This HTML is not optimized for `react-native-web` since DOM Components are meant for general React DOM web development.
|
|
108
102
|
return `
|
|
109
103
|
<!DOCTYPE html>
|
|
@@ -112,7 +106,7 @@ function getDomComponentHtml(src, { title } = {}) {
|
|
|
112
106
|
<meta charset="utf-8" />
|
|
113
107
|
<meta httpEquiv="X-UA-Compatible" content="IE=edge" />
|
|
114
108
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
115
|
-
${title ? `<title>${title}</title>` :
|
|
109
|
+
${title ? `<title>${title}</title>` : ""}
|
|
116
110
|
<style id="expo-dom-component-style">
|
|
117
111
|
/* These styles make the body full-height */
|
|
118
112
|
html,
|
|
@@ -130,7 +124,7 @@ function getDomComponentHtml(src, { title } = {}) {
|
|
|
130
124
|
<noscript>DOM Components require <code>javaScriptEnabled</code></noscript>
|
|
131
125
|
<!-- Root element for the DOM component. -->
|
|
132
126
|
<div id="root"></div>
|
|
133
|
-
${src ? `<script crossorigin src="${src.replace(/^https?:/,
|
|
127
|
+
${src ? `<script crossorigin src="${src.replace(/^https?:/, "")}"></script>` : ""}
|
|
134
128
|
</body>
|
|
135
129
|
</html>`;
|
|
136
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/DomComponentsMiddleware.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { createBundleUrlPath, ExpoMetroOptions } from './metroOptions';\nimport type { ServerRequest, ServerResponse } from './server.types';\nimport { Log } from '../../../log';\nimport { toPosixPath } from '../../../utils/filePath';\nimport { memoize } from '../../../utils/fn';\nimport { fileURLToFilePath } from '../metro/createServerComponentsMiddleware';\n\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport const DOM_COMPONENTS_BUNDLE_DIR = 'www.bundle';\n\nconst warnUnstable = memoize(() =>\n Log.warn('Using experimental DOM Components API. Production exports may not work as expected.')\n);\n\nconst checkWebViewInstalled = memoize((projectRoot: string) => {\n const webViewInstalled =\n resolveFrom.silent(projectRoot, 'react-native-webview') ||\n resolveFrom.silent(projectRoot, '@expo/dom-webview');\n if (!webViewInstalled) {\n throw new Error(\n `To use DOM Components, you must install the 'react-native-webview' package. Run 'npx expo install react-native-webview' to install it.`\n );\n }\n});\n\ntype CreateDomComponentsMiddlewareOptions = {\n /** The absolute metro or server root, used to calculate the relative dom entry path */\n metroRoot: string;\n /** The absolute project root, used to resolve the `expo/dom/entry.js` path */\n projectRoot: string;\n};\n\nexport function createDomComponentsMiddleware(\n { metroRoot, projectRoot }: CreateDomComponentsMiddlewareOptions,\n instanceMetroOptions: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'platform' | 'bytecode'>\n) {\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (!req.url) return next();\n\n const url = coerceUrl(req.url);\n\n // Match `/_expo/@dom`.\n // This URL can contain additional paths like `/_expo/@dom/foo.js?file=...` to help the Safari dev tools.\n if (!url.pathname.startsWith('/_expo/@dom')) {\n return next();\n }\n\n const file = url.searchParams.get('file');\n\n if (!file || !file.startsWith('file://')) {\n res.statusCode = 400;\n res.statusMessage = 'Invalid file path: ' + file;\n return res.end();\n }\n\n checkWebViewInstalled(projectRoot);\n warnUnstable();\n\n // Generate a unique entry file for the webview.\n const generatedEntry = toPosixPath(file.startsWith('file://') ? fileURLToFilePath(file) : file);\n const virtualEntry = toPosixPath(resolveFrom(projectRoot, 'expo/dom/entry.js'));\n // The relative import path will be used like URI so it must be POSIX.\n const relativeImport = './' + path.posix.relative(path.dirname(virtualEntry), generatedEntry);\n // Create the script URL\n const requestUrlBase = `http://${req.headers.host}`;\n const metroUrl = new URL(\n createBundleUrlPath({\n ...instanceMetroOptions,\n domRoot: encodeURI(relativeImport),\n baseUrl: '/',\n mainModuleName: path.relative(metroRoot, virtualEntry),\n bytecode: false,\n platform: 'web',\n isExporting: false,\n engine: 'hermes',\n // Required for ensuring bundler errors are caught in the root entry / async boundary and can be recovered from automatically.\n lazy: true,\n }),\n requestUrlBase\n ).toString();\n\n res.statusCode = 200;\n // Return HTML file\n res.setHeader('Content-Type', 'text/html');\n\n res.end(\n // Create the entry HTML file.\n getDomComponentHtml(metroUrl, { title: path.basename(file) })\n );\n };\n}\n\nfunction coerceUrl(url: string) {\n try {\n return new URL(url);\n } catch {\n return new URL(url, 'https://localhost:0');\n }\n}\n\nexport function getDomComponentHtml(src?: string, { title }: { title?: string } = {}) {\n // This HTML is not optimized for `react-native-web` since DOM Components are meant for general React DOM web development.\n return `\n<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <meta httpEquiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">\n ${title ? `<title>${title}</title>` : ''}\n <style id=\"expo-dom-component-style\">\n /* These styles make the body full-height */\n html,\n body {\n -webkit-overflow-scrolling: touch; /* Enables smooth momentum scrolling */\n }\n /* These styles make the root element full-height */\n #root {\n display: flex;\n flex: 1;\n }\n </style>\n </head>\n <body>\n <noscript>DOM Components require <code>javaScriptEnabled</code></noscript>\n <!-- Root element for the DOM component. -->\n <div id=\"root\"></div>\n ${src ? `<script crossorigin src=\"${src.replace(/^https?:/, '')}\"></script>` : ''}\n </body>\n</html>`;\n}\n"],"names":["DOM_COMPONENTS_BUNDLE_DIR","createDomComponentsMiddleware","getDomComponentHtml","warnUnstable","memoize","Log","warn","checkWebViewInstalled","projectRoot","webViewInstalled","resolveFrom","silent","Error","metroRoot","instanceMetroOptions","req","res","next","url","coerceUrl","pathname","startsWith","file","searchParams","get","statusCode","statusMessage","end","generatedEntry","toPosixPath","fileURLToFilePath","virtualEntry","relativeImport","path","posix","relative","dirname","requestUrlBase","headers","host","metroUrl","URL","createBundleUrlPath","domRoot","encodeURI","baseUrl","mainModuleName","bytecode","platform","isExporting","engine","lazy","toString","setHeader","title","basename","src","replace"],"mappings":";;;;;;;;;;;IAYaA,yBAAyB;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/DomComponentsMiddleware.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { createBundleUrlPath, ExpoMetroOptions } from './metroOptions';\nimport type { ServerRequest, ServerResponse } from './server.types';\nimport { Log } from '../../../log';\nimport { toPosixPath } from '../../../utils/filePath';\nimport { memoize } from '../../../utils/fn';\nimport { fileURLToFilePath } from '../metro/createServerComponentsMiddleware';\n\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport const DOM_COMPONENTS_BUNDLE_DIR = 'www.bundle';\n\nconst warnUnstable = memoize(() =>\n Log.warn('Using experimental DOM Components API. Production exports may not work as expected.')\n);\n\nconst checkWebViewInstalled = memoize((projectRoot: string) => {\n const webViewInstalled =\n resolveFrom.silent(projectRoot, 'react-native-webview') ||\n resolveFrom.silent(projectRoot, '@expo/dom-webview');\n if (!webViewInstalled) {\n throw new Error(\n `To use DOM Components, you must install the 'react-native-webview' package. Run 'npx expo install react-native-webview' to install it.`\n );\n }\n});\n\ntype CreateDomComponentsMiddlewareOptions = {\n /** The absolute metro or server root, used to calculate the relative dom entry path */\n metroRoot: string;\n /** The absolute project root, used to resolve the `expo/dom/entry.js` path */\n projectRoot: string;\n};\n\nexport function createDomComponentsMiddleware(\n { metroRoot, projectRoot }: CreateDomComponentsMiddlewareOptions,\n instanceMetroOptions: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'platform' | 'bytecode'>\n) {\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (!req.url) return next();\n\n const url = coerceUrl(req.url);\n\n // Match `/_expo/@dom`.\n // This URL can contain additional paths like `/_expo/@dom/foo.js?file=...` to help the Safari dev tools.\n if (!url.pathname.startsWith('/_expo/@dom')) {\n return next();\n }\n\n const file = url.searchParams.get('file');\n\n if (!file || !file.startsWith('file://')) {\n res.statusCode = 400;\n res.statusMessage = 'Invalid file path: ' + file;\n return res.end();\n }\n\n checkWebViewInstalled(projectRoot);\n warnUnstable();\n\n // Generate a unique entry file for the webview.\n const generatedEntry = toPosixPath(file.startsWith('file://') ? fileURLToFilePath(file) : file);\n const virtualEntry = toPosixPath(resolveFrom(projectRoot, 'expo/dom/entry.js'));\n // The relative import path will be used like URI so it must be POSIX.\n const relativeImport = './' + path.posix.relative(path.dirname(virtualEntry), generatedEntry);\n // Create the script URL\n const requestUrlBase = `http://${req.headers.host}`;\n const metroUrl = new URL(\n createBundleUrlPath({\n ...instanceMetroOptions,\n domRoot: encodeURI(relativeImport),\n baseUrl: '/',\n mainModuleName: path.relative(metroRoot, virtualEntry),\n bytecode: false,\n platform: 'web',\n isExporting: false,\n engine: 'hermes',\n // Required for ensuring bundler errors are caught in the root entry / async boundary and can be recovered from automatically.\n lazy: true,\n }),\n requestUrlBase\n ).toString();\n\n res.statusCode = 200;\n // Return HTML file\n res.setHeader('Content-Type', 'text/html');\n\n res.end(\n // Create the entry HTML file.\n getDomComponentHtml(metroUrl, { title: path.basename(file) })\n );\n };\n}\n\nfunction coerceUrl(url: string) {\n try {\n return new URL(url);\n } catch {\n return new URL(url, 'https://localhost:0');\n }\n}\n\nexport function getDomComponentHtml(src?: string, { title }: { title?: string } = {}) {\n // This HTML is not optimized for `react-native-web` since DOM Components are meant for general React DOM web development.\n return `\n<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <meta httpEquiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">\n ${title ? `<title>${title}</title>` : ''}\n <style id=\"expo-dom-component-style\">\n /* These styles make the body full-height */\n html,\n body {\n -webkit-overflow-scrolling: touch; /* Enables smooth momentum scrolling */\n }\n /* These styles make the root element full-height */\n #root {\n display: flex;\n flex: 1;\n }\n </style>\n </head>\n <body>\n <noscript>DOM Components require <code>javaScriptEnabled</code></noscript>\n <!-- Root element for the DOM component. -->\n <div id=\"root\"></div>\n ${src ? `<script crossorigin src=\"${src.replace(/^https?:/, '')}\"></script>` : ''}\n </body>\n</html>`;\n}\n"],"names":["DOM_COMPONENTS_BUNDLE_DIR","createDomComponentsMiddleware","getDomComponentHtml","warnUnstable","memoize","Log","warn","checkWebViewInstalled","projectRoot","webViewInstalled","resolveFrom","silent","Error","metroRoot","instanceMetroOptions","req","res","next","url","coerceUrl","pathname","startsWith","file","searchParams","get","statusCode","statusMessage","end","generatedEntry","toPosixPath","fileURLToFilePath","virtualEntry","relativeImport","path","posix","relative","dirname","requestUrlBase","headers","host","metroUrl","URL","createBundleUrlPath","domRoot","encodeURI","baseUrl","mainModuleName","bytecode","platform","isExporting","engine","lazy","toString","setHeader","title","basename","src","replace"],"mappings":"AAAA;;;;;;;;;;;IAYaA,yBAAyB,MAAzBA,yBAAyB;IAwBtBC,6BAA6B,MAA7BA,6BAA6B;IAoE7BC,mBAAmB,MAAnBA,mBAAmB;;;8DAxGlB,MAAM;;;;;;;8DACC,cAAc;;;;;;8BAEgB,gBAAgB;qBAElD,cAAc;0BACN,yBAAyB;oBAC7B,mBAAmB;kDACT,2CAA2C;;;;;;AAItE,MAAMF,yBAAyB,GAAG,YAAY,AAAC;AAEtD,MAAMG,YAAY,GAAGC,IAAAA,GAAO,QAAA,EAAC,IAC3BC,IAAG,IAAA,CAACC,IAAI,CAAC,qFAAqF,CAAC,CAChG,AAAC;AAEF,MAAMC,qBAAqB,GAAGH,IAAAA,GAAO,QAAA,EAAC,CAACI,WAAmB,GAAK;IAC7D,MAAMC,gBAAgB,GACpBC,YAAW,EAAA,QAAA,CAACC,MAAM,CAACH,WAAW,EAAE,sBAAsB,CAAC,IACvDE,YAAW,EAAA,QAAA,CAACC,MAAM,CAACH,WAAW,EAAE,mBAAmB,CAAC,AAAC;IACvD,IAAI,CAACC,gBAAgB,EAAE;QACrB,MAAM,IAAIG,KAAK,CACb,CAAC,sIAAsI,CAAC,CACzI,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,AAAC;AASI,SAASX,6BAA6B,CAC3C,EAAEY,SAAS,CAAA,EAAEL,WAAW,CAAA,EAAwC,EAChEM,oBAA+F,EAC/F;IACA,OAAO,CAACC,GAAkB,EAAEC,GAAmB,EAAEC,IAA2B,GAAK;QAC/E,IAAI,CAACF,GAAG,CAACG,GAAG,EAAE,OAAOD,IAAI,EAAE,CAAC;QAE5B,MAAMC,GAAG,GAAGC,SAAS,CAACJ,GAAG,CAACG,GAAG,CAAC,AAAC;QAE/B,uBAAuB;QACvB,yGAAyG;QACzG,IAAI,CAACA,GAAG,CAACE,QAAQ,CAACC,UAAU,CAAC,aAAa,CAAC,EAAE;YAC3C,OAAOJ,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAMK,IAAI,GAAGJ,GAAG,CAACK,YAAY,CAACC,GAAG,CAAC,MAAM,CAAC,AAAC;QAE1C,IAAI,CAACF,IAAI,IAAI,CAACA,IAAI,CAACD,UAAU,CAAC,SAAS,CAAC,EAAE;YACxCL,GAAG,CAACS,UAAU,GAAG,GAAG,CAAC;YACrBT,GAAG,CAACU,aAAa,GAAG,qBAAqB,GAAGJ,IAAI,CAAC;YACjD,OAAON,GAAG,CAACW,GAAG,EAAE,CAAC;QACnB,CAAC;QAEDpB,qBAAqB,CAACC,WAAW,CAAC,CAAC;QACnCL,YAAY,EAAE,CAAC;QAEf,gDAAgD;QAChD,MAAMyB,cAAc,GAAGC,IAAAA,SAAW,YAAA,EAACP,IAAI,CAACD,UAAU,CAAC,SAAS,CAAC,GAAGS,IAAAA,iCAAiB,kBAAA,EAACR,IAAI,CAAC,GAAGA,IAAI,CAAC,AAAC;QAChG,MAAMS,YAAY,GAAGF,IAAAA,SAAW,YAAA,EAACnB,IAAAA,YAAW,EAAA,QAAA,EAACF,WAAW,EAAE,mBAAmB,CAAC,CAAC,AAAC;QAChF,sEAAsE;QACtE,MAAMwB,cAAc,GAAG,IAAI,GAAGC,KAAI,EAAA,QAAA,CAACC,KAAK,CAACC,QAAQ,CAACF,KAAI,EAAA,QAAA,CAACG,OAAO,CAACL,YAAY,CAAC,EAAEH,cAAc,CAAC,AAAC;QAC9F,wBAAwB;QACxB,MAAMS,cAAc,GAAG,CAAC,OAAO,EAAEtB,GAAG,CAACuB,OAAO,CAACC,IAAI,CAAC,CAAC,AAAC;QACpD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CACtBC,IAAAA,aAAmB,oBAAA,EAAC;YAClB,GAAG5B,oBAAoB;YACvB6B,OAAO,EAAEC,SAAS,CAACZ,cAAc,CAAC;YAClCa,OAAO,EAAE,GAAG;YACZC,cAAc,EAAEb,KAAI,EAAA,QAAA,CAACE,QAAQ,CAACtB,SAAS,EAAEkB,YAAY,CAAC;YACtDgB,QAAQ,EAAE,KAAK;YACfC,QAAQ,EAAE,KAAK;YACfC,WAAW,EAAE,KAAK;YAClBC,MAAM,EAAE,QAAQ;YAChB,8HAA8H;YAC9HC,IAAI,EAAE,IAAI;SACX,CAAC,EACFd,cAAc,CACf,CAACe,QAAQ,EAAE,AAAC;QAEbpC,GAAG,CAACS,UAAU,GAAG,GAAG,CAAC;QACrB,mBAAmB;QACnBT,GAAG,CAACqC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAE3CrC,GAAG,CAACW,GAAG,CACL,8BAA8B;QAC9BzB,mBAAmB,CAACsC,QAAQ,EAAE;YAAEc,KAAK,EAAErB,KAAI,EAAA,QAAA,CAACsB,QAAQ,CAACjC,IAAI,CAAC;SAAE,CAAC,CAC9D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAASH,SAAS,CAACD,GAAW,EAAE;IAC9B,IAAI;QACF,OAAO,IAAIuB,GAAG,CAACvB,GAAG,CAAC,CAAC;IACtB,EAAE,OAAM;QACN,OAAO,IAAIuB,GAAG,CAACvB,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAEM,SAAShB,mBAAmB,CAACsD,GAAY,EAAE,EAAEF,KAAK,CAAA,EAAsB,GAAG,EAAE,EAAE;IACpF,0HAA0H;IAC1H,OAAO,CAAC;;;;;;;QAOF,EAAEA,KAAK,GAAG,CAAC,OAAO,EAAEA,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;QAkBzC,EAAEE,GAAG,GAAG,CAAC,yBAAyB,EAAEA,GAAG,CAACC,OAAO,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;;OAEnF,CAAC,CAAC;AACT,CAAC"}
|
|
@@ -9,75 +9,71 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
ResponseContentType: function() {
|
|
16
|
-
return ResponseContentType;
|
|
17
|
-
}
|
|
12
|
+
ResponseContentType: ()=>ResponseContentType,
|
|
13
|
+
ExpoGoManifestHandlerMiddleware: ()=>ExpoGoManifestHandlerMiddleware
|
|
18
14
|
});
|
|
19
|
-
function
|
|
15
|
+
function _configPlugins() {
|
|
20
16
|
const data = require("@expo/config-plugins");
|
|
21
|
-
|
|
17
|
+
_configPlugins = function() {
|
|
22
18
|
return data;
|
|
23
19
|
};
|
|
24
20
|
return data;
|
|
25
21
|
}
|
|
26
22
|
function _accepts() {
|
|
27
|
-
const data = /*#__PURE__*/
|
|
23
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("accepts"));
|
|
28
24
|
_accepts = function() {
|
|
29
25
|
return data;
|
|
30
26
|
};
|
|
31
27
|
return data;
|
|
32
28
|
}
|
|
33
29
|
function _crypto() {
|
|
34
|
-
const data = /*#__PURE__*/
|
|
30
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("crypto"));
|
|
35
31
|
_crypto = function() {
|
|
36
32
|
return data;
|
|
37
33
|
};
|
|
38
34
|
return data;
|
|
39
35
|
}
|
|
40
|
-
function
|
|
41
|
-
const data = /*#__PURE__*/
|
|
42
|
-
|
|
36
|
+
function _formData() {
|
|
37
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("form-data"));
|
|
38
|
+
_formData = function() {
|
|
43
39
|
return data;
|
|
44
40
|
};
|
|
45
41
|
return data;
|
|
46
42
|
}
|
|
47
|
-
function
|
|
43
|
+
function _structuredHeaders() {
|
|
48
44
|
const data = require("structured-headers");
|
|
49
|
-
|
|
45
|
+
_structuredHeaders = function() {
|
|
50
46
|
return data;
|
|
51
47
|
};
|
|
52
48
|
return data;
|
|
53
49
|
}
|
|
54
|
-
const
|
|
50
|
+
const _manifestMiddleware = require("./ManifestMiddleware");
|
|
55
51
|
const _resolvePlatform = require("./resolvePlatform");
|
|
56
52
|
const _resolveRuntimeVersionWithExpoUpdatesAsync = require("./resolveRuntimeVersionWithExpoUpdatesAsync");
|
|
57
|
-
const
|
|
53
|
+
const _userSettings = require("../../../api/user/UserSettings");
|
|
58
54
|
const _user = require("../../../api/user/user");
|
|
59
55
|
const _codesigning = require("../../../utils/codesigning");
|
|
60
56
|
const _errors = require("../../../utils/errors");
|
|
61
57
|
const _url = require("../../../utils/url");
|
|
62
|
-
function
|
|
58
|
+
function _interopRequireDefault(obj) {
|
|
63
59
|
return obj && obj.__esModule ? obj : {
|
|
64
60
|
default: obj
|
|
65
61
|
};
|
|
66
62
|
}
|
|
67
|
-
const debug = require(
|
|
68
|
-
var ResponseContentType
|
|
63
|
+
const debug = require("debug")("expo:start:server:middleware:ExpoGoManifestHandlerMiddleware");
|
|
64
|
+
var ResponseContentType;
|
|
65
|
+
(function(ResponseContentType) {
|
|
69
66
|
ResponseContentType[ResponseContentType["TEXT_PLAIN"] = 0] = "TEXT_PLAIN";
|
|
70
67
|
ResponseContentType[ResponseContentType["APPLICATION_JSON"] = 1] = "APPLICATION_JSON";
|
|
71
68
|
ResponseContentType[ResponseContentType["APPLICATION_EXPO_JSON"] = 2] = "APPLICATION_EXPO_JSON";
|
|
72
69
|
ResponseContentType[ResponseContentType["MULTIPART_MIXED"] = 3] = "MULTIPART_MIXED";
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddleware {
|
|
70
|
+
})(ResponseContentType || (ResponseContentType = {}));
|
|
71
|
+
class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddleware {
|
|
76
72
|
getParsedHeaders(req) {
|
|
77
73
|
let platform = (0, _resolvePlatform.parsePlatformHeader)(req);
|
|
78
74
|
if (!platform) {
|
|
79
75
|
debug(`No "expo-platform" header or "platform" query parameter specified. Falling back to "ios".`);
|
|
80
|
-
platform =
|
|
76
|
+
platform = "ios";
|
|
81
77
|
}
|
|
82
78
|
(0, _resolvePlatform.assertRuntimePlatform)(platform);
|
|
83
79
|
// Expo Updates clients explicitly accept "multipart/mixed" responses while browsers implicitly
|
|
@@ -86,64 +82,64 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
86
82
|
// an Expo Updates client.
|
|
87
83
|
const accept = (0, _accepts().default)(req);
|
|
88
84
|
const acceptedType = accept.types([
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
"unknown/unknown",
|
|
86
|
+
"multipart/mixed",
|
|
87
|
+
"application/json",
|
|
88
|
+
"application/expo+json",
|
|
89
|
+
"text/plain",
|
|
94
90
|
]);
|
|
95
91
|
let responseContentType;
|
|
96
92
|
switch(acceptedType){
|
|
97
|
-
case
|
|
93
|
+
case "multipart/mixed":
|
|
98
94
|
responseContentType = 3;
|
|
99
95
|
break;
|
|
100
|
-
case
|
|
96
|
+
case "application/json":
|
|
101
97
|
responseContentType = 1;
|
|
102
98
|
break;
|
|
103
|
-
case
|
|
99
|
+
case "application/expo+json":
|
|
104
100
|
responseContentType = 2;
|
|
105
101
|
break;
|
|
106
102
|
default:
|
|
107
103
|
responseContentType = 0;
|
|
108
104
|
break;
|
|
109
105
|
}
|
|
110
|
-
const expectSignature = req.headers[
|
|
106
|
+
const expectSignature = req.headers["expo-expect-signature"];
|
|
111
107
|
return {
|
|
112
108
|
responseContentType,
|
|
113
109
|
platform,
|
|
114
110
|
expectSignature: expectSignature ? String(expectSignature) : null,
|
|
115
|
-
hostname: (0, _url.stripPort)(req.headers[
|
|
116
|
-
protocol: req.headers[
|
|
111
|
+
hostname: (0, _url.stripPort)(req.headers["host"]),
|
|
112
|
+
protocol: req.headers["x-forwarded-proto"]
|
|
117
113
|
};
|
|
118
114
|
}
|
|
119
115
|
getDefaultResponseHeaders() {
|
|
120
116
|
const headers = new Map();
|
|
121
117
|
// set required headers for Expo Updates manifest specification
|
|
122
|
-
headers.set(
|
|
123
|
-
headers.set(
|
|
124
|
-
headers.set(
|
|
118
|
+
headers.set("expo-protocol-version", 0);
|
|
119
|
+
headers.set("expo-sfv-version", 0);
|
|
120
|
+
headers.set("cache-control", "private, max-age=0");
|
|
125
121
|
return headers;
|
|
126
122
|
}
|
|
127
123
|
async _getManifestResponseAsync(requestOptions) {
|
|
128
|
-
var
|
|
129
|
-
const { exp, hostUri, expoGoConfig, bundleUrl
|
|
124
|
+
var ref, ref1;
|
|
125
|
+
const { exp , hostUri , expoGoConfig , bundleUrl } = await this._resolveProjectSettingsAsync(requestOptions);
|
|
130
126
|
const runtimeVersion = await (0, _resolveRuntimeVersionWithExpoUpdatesAsync.resolveRuntimeVersionWithExpoUpdatesAsync)({
|
|
131
127
|
projectRoot: this.projectRoot,
|
|
132
128
|
platform: requestOptions.platform
|
|
133
129
|
}) ?? // if expo-updates can't determine runtime version, fall back to calculation from config-plugin.
|
|
134
130
|
// this happens when expo-updates is installed but runtimeVersion hasn't yet been configured or when
|
|
135
131
|
// expo-updates is not installed.
|
|
136
|
-
await
|
|
132
|
+
(await _configPlugins().Updates.getRuntimeVersionAsync(this.projectRoot, {
|
|
137
133
|
...exp,
|
|
138
134
|
runtimeVersion: exp.runtimeVersion ?? {
|
|
139
|
-
policy:
|
|
135
|
+
policy: "sdkVersion"
|
|
140
136
|
}
|
|
141
|
-
}, requestOptions.platform);
|
|
137
|
+
}, requestOptions.platform));
|
|
142
138
|
if (!runtimeVersion) {
|
|
143
|
-
throw new _errors.CommandError(
|
|
139
|
+
throw new _errors.CommandError("MANIFEST_MIDDLEWARE", `Unable to determine runtime version for platform '${requestOptions.platform}'`);
|
|
144
140
|
}
|
|
145
141
|
const codeSigningInfo = await (0, _codesigning.getCodeSigningInfoAsync)(exp, requestOptions.expectSignature, this.options.privateKeyPath);
|
|
146
|
-
const easProjectId = (
|
|
142
|
+
const easProjectId = (ref = exp.extra) == null ? void 0 : (ref1 = ref.eas) == null ? void 0 : ref1.projectId;
|
|
147
143
|
const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({
|
|
148
144
|
slug: exp.slug,
|
|
149
145
|
codeSigningInfo
|
|
@@ -153,8 +149,8 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
153
149
|
createdAt: new Date().toISOString(),
|
|
154
150
|
runtimeVersion,
|
|
155
151
|
launchAsset: {
|
|
156
|
-
key:
|
|
157
|
-
contentType:
|
|
152
|
+
key: "bundle",
|
|
153
|
+
contentType: "application/javascript",
|
|
158
154
|
url: bundleUrl
|
|
159
155
|
},
|
|
160
156
|
assets: [],
|
|
@@ -177,13 +173,13 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
177
173
|
if (codeSigningInfo) {
|
|
178
174
|
const signature = (0, _codesigning.signManifestString)(stringifiedManifest, codeSigningInfo);
|
|
179
175
|
manifestPartHeaders = {
|
|
180
|
-
|
|
176
|
+
"expo-signature": (0, _structuredHeaders().serializeDictionary)(convertToDictionaryItemsRepresentation({
|
|
181
177
|
keyid: codeSigningInfo.keyId,
|
|
182
178
|
sig: signature,
|
|
183
|
-
alg:
|
|
179
|
+
alg: "rsa-v1_5-sha256"
|
|
184
180
|
}))
|
|
185
181
|
};
|
|
186
|
-
certificateChainBody = codeSigningInfo.certificateChainForResponse.join(
|
|
182
|
+
certificateChainBody = codeSigningInfo.certificateChainForResponse.join("\n");
|
|
187
183
|
}
|
|
188
184
|
const headers = this.getDefaultResponseHeaders();
|
|
189
185
|
switch(requestOptions.responseContentType){
|
|
@@ -194,7 +190,7 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
194
190
|
manifestPartHeaders,
|
|
195
191
|
certificateChainBody
|
|
196
192
|
});
|
|
197
|
-
headers.set(
|
|
193
|
+
headers.set("content-type", `multipart/mixed; boundary=${form.getBoundary()}`);
|
|
198
194
|
return {
|
|
199
195
|
body: form.getBuffer().toString(),
|
|
200
196
|
version: runtimeVersion,
|
|
@@ -205,7 +201,7 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
205
201
|
case 1:
|
|
206
202
|
case 0:
|
|
207
203
|
{
|
|
208
|
-
headers.set(
|
|
204
|
+
headers.set("content-type", ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(requestOptions.responseContentType));
|
|
209
205
|
if (manifestPartHeaders) {
|
|
210
206
|
Object.entries(manifestPartHeaders).forEach(([key, value])=>{
|
|
211
207
|
headers.set(key, value);
|
|
@@ -222,31 +218,31 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
222
218
|
static getContentTypeForResponseContentType(responseContentType) {
|
|
223
219
|
switch(responseContentType){
|
|
224
220
|
case 3:
|
|
225
|
-
return
|
|
221
|
+
return "multipart/mixed";
|
|
226
222
|
case 2:
|
|
227
|
-
return
|
|
223
|
+
return "application/expo+json";
|
|
228
224
|
case 1:
|
|
229
|
-
return
|
|
225
|
+
return "application/json";
|
|
230
226
|
case 0:
|
|
231
|
-
return
|
|
227
|
+
return "text/plain";
|
|
232
228
|
}
|
|
233
229
|
}
|
|
234
|
-
getFormData({ stringifiedManifest, manifestPartHeaders, certificateChainBody
|
|
235
|
-
const form = new (
|
|
236
|
-
form.append(
|
|
237
|
-
contentType:
|
|
230
|
+
getFormData({ stringifiedManifest , manifestPartHeaders , certificateChainBody }) {
|
|
231
|
+
const form = new (_formData()).default();
|
|
232
|
+
form.append("manifest", stringifiedManifest, {
|
|
233
|
+
contentType: "application/json",
|
|
238
234
|
header: {
|
|
239
235
|
...manifestPartHeaders
|
|
240
236
|
}
|
|
241
237
|
});
|
|
242
238
|
if (certificateChainBody && certificateChainBody.length > 0) {
|
|
243
|
-
form.append(
|
|
244
|
-
contentType:
|
|
239
|
+
form.append("certificate_chain", certificateChainBody, {
|
|
240
|
+
contentType: "application/x-pem-file"
|
|
245
241
|
});
|
|
246
242
|
}
|
|
247
243
|
return form;
|
|
248
244
|
}
|
|
249
|
-
static async getScopeKeyAsync({ slug, codeSigningInfo
|
|
245
|
+
static async getScopeKeyAsync({ slug , codeSigningInfo }) {
|
|
250
246
|
const scopeKeyFromCodeSigningInfo = codeSigningInfo == null ? void 0 : codeSigningInfo.scopeKey;
|
|
251
247
|
if (scopeKeyFromCodeSigningInfo) {
|
|
252
248
|
return scopeKeyFromCodeSigningInfo;
|
|
@@ -260,7 +256,7 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
|
|
|
260
256
|
}
|
|
261
257
|
}
|
|
262
258
|
async function getAnonymousScopeKeyAsync(slug) {
|
|
263
|
-
const userAnonymousIdentifier = await (0,
|
|
259
|
+
const userAnonymousIdentifier = await (0, _userSettings.getAnonymousIdAsync)();
|
|
264
260
|
return `@${_user.ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;
|
|
265
261
|
}
|
|
266
262
|
function convertToDictionaryItemsRepresentation(obj) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/ExpoGoManifestHandlerMiddleware.ts"],"sourcesContent":["import { ExpoUpdatesManifest } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport accepts from 'accepts';\nimport crypto from 'crypto';\nimport FormData from 'form-data';\nimport { serializeDictionary, Dictionary } from 'structured-headers';\n\nimport { ManifestMiddleware, ManifestRequestInfo } from './ManifestMiddleware';\nimport { assertRuntimePlatform, parsePlatformHeader } from './resolvePlatform';\nimport { resolveRuntimeVersionWithExpoUpdatesAsync } from './resolveRuntimeVersionWithExpoUpdatesAsync';\nimport { ServerHeaders, ServerRequest } from './server.types';\nimport { getAnonymousIdAsync } from '../../../api/user/UserSettings';\nimport { ANONYMOUS_USERNAME } from '../../../api/user/user';\nimport {\n CodeSigningInfo,\n getCodeSigningInfoAsync,\n signManifestString,\n} from '../../../utils/codesigning';\nimport { CommandError } from '../../../utils/errors';\nimport { stripPort } from '../../../utils/url';\n\nconst debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');\n\nexport enum ResponseContentType {\n TEXT_PLAIN,\n APPLICATION_JSON,\n APPLICATION_EXPO_JSON,\n MULTIPART_MIXED,\n}\n\ninterface ExpoGoManifestRequestInfo extends ManifestRequestInfo {\n responseContentType: ResponseContentType;\n expectSignature: string | null;\n}\n\nexport class ExpoGoManifestHandlerMiddleware extends ManifestMiddleware<ExpoGoManifestRequestInfo> {\n public getParsedHeaders(req: ServerRequest): ExpoGoManifestRequestInfo {\n let platform = parsePlatformHeader(req);\n\n if (!platform) {\n debug(\n `No \"expo-platform\" header or \"platform\" query parameter specified. Falling back to \"ios\".`\n );\n platform = 'ios';\n }\n\n assertRuntimePlatform(platform);\n\n // Expo Updates clients explicitly accept \"multipart/mixed\" responses while browsers implicitly\n // accept them with \"accept: */*\". To make it easier to debug manifest responses by visiting their\n // URLs in a browser, we denote the response as \"text/plain\" if the user agent appears not to be\n // an Expo Updates client.\n const accept = accepts(req);\n const acceptedType = accept.types([\n 'unknown/unknown',\n 'multipart/mixed',\n 'application/json',\n 'application/expo+json',\n 'text/plain',\n ]);\n\n let responseContentType;\n switch (acceptedType) {\n case 'multipart/mixed':\n responseContentType = ResponseContentType.MULTIPART_MIXED;\n break;\n case 'application/json':\n responseContentType = ResponseContentType.APPLICATION_JSON;\n break;\n case 'application/expo+json':\n responseContentType = ResponseContentType.APPLICATION_EXPO_JSON;\n break;\n default:\n responseContentType = ResponseContentType.TEXT_PLAIN;\n break;\n }\n\n const expectSignature = req.headers['expo-expect-signature'];\n\n return {\n responseContentType,\n platform,\n expectSignature: expectSignature ? String(expectSignature) : null,\n hostname: stripPort(req.headers['host']),\n protocol: req.headers['x-forwarded-proto'] as 'http' | 'https' | undefined,\n };\n }\n\n private getDefaultResponseHeaders(): ServerHeaders {\n const headers = new Map<string, number | string | readonly string[]>();\n // set required headers for Expo Updates manifest specification\n headers.set('expo-protocol-version', 0);\n headers.set('expo-sfv-version', 0);\n headers.set('cache-control', 'private, max-age=0');\n return headers;\n }\n\n public async _getManifestResponseAsync(requestOptions: ExpoGoManifestRequestInfo): Promise<{\n body: string;\n version: string;\n headers: ServerHeaders;\n }> {\n const { exp, hostUri, expoGoConfig, bundleUrl } =\n await this._resolveProjectSettingsAsync(requestOptions);\n\n const runtimeVersion =\n (await resolveRuntimeVersionWithExpoUpdatesAsync({\n projectRoot: this.projectRoot,\n platform: requestOptions.platform,\n })) ??\n // if expo-updates can't determine runtime version, fall back to calculation from config-plugin.\n // this happens when expo-updates is installed but runtimeVersion hasn't yet been configured or when\n // expo-updates is not installed.\n (await Updates.getRuntimeVersionAsync(\n this.projectRoot,\n { ...exp, runtimeVersion: exp.runtimeVersion ?? { policy: 'sdkVersion' } },\n requestOptions.platform\n ));\n if (!runtimeVersion) {\n throw new CommandError(\n 'MANIFEST_MIDDLEWARE',\n `Unable to determine runtime version for platform '${requestOptions.platform}'`\n );\n }\n\n const codeSigningInfo = await getCodeSigningInfoAsync(\n exp,\n requestOptions.expectSignature,\n this.options.privateKeyPath\n );\n\n const easProjectId = exp.extra?.eas?.projectId as string | undefined | null;\n const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({\n slug: exp.slug,\n codeSigningInfo,\n });\n\n const expoUpdatesManifest: ExpoUpdatesManifest = {\n id: crypto.randomUUID(),\n createdAt: new Date().toISOString(),\n runtimeVersion,\n launchAsset: {\n key: 'bundle',\n contentType: 'application/javascript',\n url: bundleUrl,\n },\n assets: [], // assets are not used in development\n metadata: {}, // required for the client to detect that this is an expo-updates manifest\n extra: {\n eas: {\n projectId: easProjectId ?? undefined,\n },\n expoClient: {\n ...exp,\n hostUri,\n },\n expoGo: expoGoConfig,\n scopeKey,\n },\n };\n\n const stringifiedManifest = JSON.stringify(expoUpdatesManifest);\n\n let manifestPartHeaders: { 'expo-signature': string } | null = null;\n let certificateChainBody: string | null = null;\n if (codeSigningInfo) {\n const signature = signManifestString(stringifiedManifest, codeSigningInfo);\n manifestPartHeaders = {\n 'expo-signature': serializeDictionary(\n convertToDictionaryItemsRepresentation({\n keyid: codeSigningInfo.keyId,\n sig: signature,\n alg: 'rsa-v1_5-sha256',\n })\n ),\n };\n certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\\n');\n }\n\n const headers = this.getDefaultResponseHeaders();\n\n switch (requestOptions.responseContentType) {\n case ResponseContentType.MULTIPART_MIXED: {\n const form = this.getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n });\n headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);\n return {\n body: form.getBuffer().toString(),\n version: runtimeVersion,\n headers,\n };\n }\n case ResponseContentType.APPLICATION_EXPO_JSON:\n case ResponseContentType.APPLICATION_JSON:\n case ResponseContentType.TEXT_PLAIN: {\n headers.set(\n 'content-type',\n ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(\n requestOptions.responseContentType\n )\n );\n if (manifestPartHeaders) {\n Object.entries(manifestPartHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n return {\n body: stringifiedManifest,\n version: runtimeVersion,\n headers,\n };\n }\n }\n }\n\n private static getContentTypeForResponseContentType(\n responseContentType: ResponseContentType\n ): string {\n switch (responseContentType) {\n case ResponseContentType.MULTIPART_MIXED:\n return 'multipart/mixed';\n case ResponseContentType.APPLICATION_EXPO_JSON:\n return 'application/expo+json';\n case ResponseContentType.APPLICATION_JSON:\n return 'application/json';\n case ResponseContentType.TEXT_PLAIN:\n return 'text/plain';\n }\n }\n\n private getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n }: {\n stringifiedManifest: string;\n manifestPartHeaders: { 'expo-signature': string } | null;\n certificateChainBody: string | null;\n }): FormData {\n const form = new FormData();\n form.append('manifest', stringifiedManifest, {\n contentType: 'application/json',\n header: {\n ...manifestPartHeaders,\n },\n });\n if (certificateChainBody && certificateChainBody.length > 0) {\n form.append('certificate_chain', certificateChainBody, {\n contentType: 'application/x-pem-file',\n });\n }\n return form;\n }\n\n private static async getScopeKeyAsync({\n slug,\n codeSigningInfo,\n }: {\n slug: string;\n codeSigningInfo: CodeSigningInfo | null;\n }): Promise<string> {\n const scopeKeyFromCodeSigningInfo = codeSigningInfo?.scopeKey;\n if (scopeKeyFromCodeSigningInfo) {\n return scopeKeyFromCodeSigningInfo;\n }\n\n // Log.warn(\n // env.EXPO_OFFLINE\n // ? 'Using anonymous scope key in manifest for offline mode.'\n // : 'Using anonymous scope key in manifest.'\n // );\n return await getAnonymousScopeKeyAsync(slug);\n }\n}\n\nasync function getAnonymousScopeKeyAsync(slug: string): Promise<string> {\n const userAnonymousIdentifier = await getAnonymousIdAsync();\n return `@${ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;\n}\n\nfunction convertToDictionaryItemsRepresentation(obj: { [key: string]: string }): Dictionary {\n return new Map(\n Object.entries(obj).map(([k, v]) => {\n return [k, [v, new Map()]];\n })\n );\n}\n"],"names":["ExpoGoManifestHandlerMiddleware","ResponseContentType","debug","require","ManifestMiddleware","getParsedHeaders","req","platform","parsePlatformHeader","assertRuntimePlatform","accept","accepts","acceptedType","types","responseContentType","expectSignature","headers","String","hostname","stripPort","protocol","getDefaultResponseHeaders","Map","set","_getManifestResponseAsync","requestOptions","exp","hostUri","expoGoConfig","bundleUrl","_resolveProjectSettingsAsync","runtimeVersion","resolveRuntimeVersionWithExpoUpdatesAsync","projectRoot","Updates","getRuntimeVersionAsync","policy","CommandError","codeSigningInfo","getCodeSigningInfoAsync","options","privateKeyPath","easProjectId","extra","eas","projectId","scopeKey","getScopeKeyAsync","slug","expoUpdatesManifest","id","crypto","randomUUID","createdAt","Date","toISOString","launchAsset","key","contentType","url","assets","metadata","undefined","expoClient","expoGo","stringifiedManifest","JSON","stringify","manifestPartHeaders","certificateChainBody","signature","signManifestString","serializeDictionary","convertToDictionaryItemsRepresentation","keyid","keyId","sig","alg","certificateChainForResponse","join","form","getFormData","getBoundary","body","getBuffer","toString","version","getContentTypeForResponseContentType","Object","entries","forEach","value","FormData","append","header","length","scopeKeyFromCodeSigningInfo","getAnonymousScopeKeyAsync","userAnonymousIdentifier","getAnonymousIdAsync","ANONYMOUS_USERNAME","obj","map","k","v"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/ExpoGoManifestHandlerMiddleware.ts"],"sourcesContent":["import { ExpoUpdatesManifest } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport accepts from 'accepts';\nimport crypto from 'crypto';\nimport FormData from 'form-data';\nimport { serializeDictionary, Dictionary } from 'structured-headers';\n\nimport { ManifestMiddleware, ManifestRequestInfo } from './ManifestMiddleware';\nimport { assertRuntimePlatform, parsePlatformHeader } from './resolvePlatform';\nimport { resolveRuntimeVersionWithExpoUpdatesAsync } from './resolveRuntimeVersionWithExpoUpdatesAsync';\nimport { ServerHeaders, ServerRequest } from './server.types';\nimport { getAnonymousIdAsync } from '../../../api/user/UserSettings';\nimport { ANONYMOUS_USERNAME } from '../../../api/user/user';\nimport {\n CodeSigningInfo,\n getCodeSigningInfoAsync,\n signManifestString,\n} from '../../../utils/codesigning';\nimport { CommandError } from '../../../utils/errors';\nimport { stripPort } from '../../../utils/url';\n\nconst debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');\n\nexport enum ResponseContentType {\n TEXT_PLAIN,\n APPLICATION_JSON,\n APPLICATION_EXPO_JSON,\n MULTIPART_MIXED,\n}\n\ninterface ExpoGoManifestRequestInfo extends ManifestRequestInfo {\n responseContentType: ResponseContentType;\n expectSignature: string | null;\n}\n\nexport class ExpoGoManifestHandlerMiddleware extends ManifestMiddleware<ExpoGoManifestRequestInfo> {\n public getParsedHeaders(req: ServerRequest): ExpoGoManifestRequestInfo {\n let platform = parsePlatformHeader(req);\n\n if (!platform) {\n debug(\n `No \"expo-platform\" header or \"platform\" query parameter specified. Falling back to \"ios\".`\n );\n platform = 'ios';\n }\n\n assertRuntimePlatform(platform);\n\n // Expo Updates clients explicitly accept \"multipart/mixed\" responses while browsers implicitly\n // accept them with \"accept: */*\". To make it easier to debug manifest responses by visiting their\n // URLs in a browser, we denote the response as \"text/plain\" if the user agent appears not to be\n // an Expo Updates client.\n const accept = accepts(req);\n const acceptedType = accept.types([\n 'unknown/unknown',\n 'multipart/mixed',\n 'application/json',\n 'application/expo+json',\n 'text/plain',\n ]);\n\n let responseContentType;\n switch (acceptedType) {\n case 'multipart/mixed':\n responseContentType = ResponseContentType.MULTIPART_MIXED;\n break;\n case 'application/json':\n responseContentType = ResponseContentType.APPLICATION_JSON;\n break;\n case 'application/expo+json':\n responseContentType = ResponseContentType.APPLICATION_EXPO_JSON;\n break;\n default:\n responseContentType = ResponseContentType.TEXT_PLAIN;\n break;\n }\n\n const expectSignature = req.headers['expo-expect-signature'];\n\n return {\n responseContentType,\n platform,\n expectSignature: expectSignature ? String(expectSignature) : null,\n hostname: stripPort(req.headers['host']),\n protocol: req.headers['x-forwarded-proto'] as 'http' | 'https' | undefined,\n };\n }\n\n private getDefaultResponseHeaders(): ServerHeaders {\n const headers = new Map<string, number | string | readonly string[]>();\n // set required headers for Expo Updates manifest specification\n headers.set('expo-protocol-version', 0);\n headers.set('expo-sfv-version', 0);\n headers.set('cache-control', 'private, max-age=0');\n return headers;\n }\n\n public async _getManifestResponseAsync(requestOptions: ExpoGoManifestRequestInfo): Promise<{\n body: string;\n version: string;\n headers: ServerHeaders;\n }> {\n const { exp, hostUri, expoGoConfig, bundleUrl } =\n await this._resolveProjectSettingsAsync(requestOptions);\n\n const runtimeVersion =\n (await resolveRuntimeVersionWithExpoUpdatesAsync({\n projectRoot: this.projectRoot,\n platform: requestOptions.platform,\n })) ??\n // if expo-updates can't determine runtime version, fall back to calculation from config-plugin.\n // this happens when expo-updates is installed but runtimeVersion hasn't yet been configured or when\n // expo-updates is not installed.\n (await Updates.getRuntimeVersionAsync(\n this.projectRoot,\n { ...exp, runtimeVersion: exp.runtimeVersion ?? { policy: 'sdkVersion' } },\n requestOptions.platform\n ));\n if (!runtimeVersion) {\n throw new CommandError(\n 'MANIFEST_MIDDLEWARE',\n `Unable to determine runtime version for platform '${requestOptions.platform}'`\n );\n }\n\n const codeSigningInfo = await getCodeSigningInfoAsync(\n exp,\n requestOptions.expectSignature,\n this.options.privateKeyPath\n );\n\n const easProjectId = exp.extra?.eas?.projectId as string | undefined | null;\n const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({\n slug: exp.slug,\n codeSigningInfo,\n });\n\n const expoUpdatesManifest: ExpoUpdatesManifest = {\n id: crypto.randomUUID(),\n createdAt: new Date().toISOString(),\n runtimeVersion,\n launchAsset: {\n key: 'bundle',\n contentType: 'application/javascript',\n url: bundleUrl,\n },\n assets: [], // assets are not used in development\n metadata: {}, // required for the client to detect that this is an expo-updates manifest\n extra: {\n eas: {\n projectId: easProjectId ?? undefined,\n },\n expoClient: {\n ...exp,\n hostUri,\n },\n expoGo: expoGoConfig,\n scopeKey,\n },\n };\n\n const stringifiedManifest = JSON.stringify(expoUpdatesManifest);\n\n let manifestPartHeaders: { 'expo-signature': string } | null = null;\n let certificateChainBody: string | null = null;\n if (codeSigningInfo) {\n const signature = signManifestString(stringifiedManifest, codeSigningInfo);\n manifestPartHeaders = {\n 'expo-signature': serializeDictionary(\n convertToDictionaryItemsRepresentation({\n keyid: codeSigningInfo.keyId,\n sig: signature,\n alg: 'rsa-v1_5-sha256',\n })\n ),\n };\n certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\\n');\n }\n\n const headers = this.getDefaultResponseHeaders();\n\n switch (requestOptions.responseContentType) {\n case ResponseContentType.MULTIPART_MIXED: {\n const form = this.getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n });\n headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);\n return {\n body: form.getBuffer().toString(),\n version: runtimeVersion,\n headers,\n };\n }\n case ResponseContentType.APPLICATION_EXPO_JSON:\n case ResponseContentType.APPLICATION_JSON:\n case ResponseContentType.TEXT_PLAIN: {\n headers.set(\n 'content-type',\n ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(\n requestOptions.responseContentType\n )\n );\n if (manifestPartHeaders) {\n Object.entries(manifestPartHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n return {\n body: stringifiedManifest,\n version: runtimeVersion,\n headers,\n };\n }\n }\n }\n\n private static getContentTypeForResponseContentType(\n responseContentType: ResponseContentType\n ): string {\n switch (responseContentType) {\n case ResponseContentType.MULTIPART_MIXED:\n return 'multipart/mixed';\n case ResponseContentType.APPLICATION_EXPO_JSON:\n return 'application/expo+json';\n case ResponseContentType.APPLICATION_JSON:\n return 'application/json';\n case ResponseContentType.TEXT_PLAIN:\n return 'text/plain';\n }\n }\n\n private getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n }: {\n stringifiedManifest: string;\n manifestPartHeaders: { 'expo-signature': string } | null;\n certificateChainBody: string | null;\n }): FormData {\n const form = new FormData();\n form.append('manifest', stringifiedManifest, {\n contentType: 'application/json',\n header: {\n ...manifestPartHeaders,\n },\n });\n if (certificateChainBody && certificateChainBody.length > 0) {\n form.append('certificate_chain', certificateChainBody, {\n contentType: 'application/x-pem-file',\n });\n }\n return form;\n }\n\n private static async getScopeKeyAsync({\n slug,\n codeSigningInfo,\n }: {\n slug: string;\n codeSigningInfo: CodeSigningInfo | null;\n }): Promise<string> {\n const scopeKeyFromCodeSigningInfo = codeSigningInfo?.scopeKey;\n if (scopeKeyFromCodeSigningInfo) {\n return scopeKeyFromCodeSigningInfo;\n }\n\n // Log.warn(\n // env.EXPO_OFFLINE\n // ? 'Using anonymous scope key in manifest for offline mode.'\n // : 'Using anonymous scope key in manifest.'\n // );\n return await getAnonymousScopeKeyAsync(slug);\n }\n}\n\nasync function getAnonymousScopeKeyAsync(slug: string): Promise<string> {\n const userAnonymousIdentifier = await getAnonymousIdAsync();\n return `@${ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;\n}\n\nfunction convertToDictionaryItemsRepresentation(obj: { [key: string]: string }): Dictionary {\n return new Map(\n Object.entries(obj).map(([k, v]) => {\n return [k, [v, new Map()]];\n })\n );\n}\n"],"names":["ExpoGoManifestHandlerMiddleware","debug","require","ResponseContentType","TEXT_PLAIN","APPLICATION_JSON","APPLICATION_EXPO_JSON","MULTIPART_MIXED","ManifestMiddleware","getParsedHeaders","req","platform","parsePlatformHeader","assertRuntimePlatform","accept","accepts","acceptedType","types","responseContentType","expectSignature","headers","String","hostname","stripPort","protocol","getDefaultResponseHeaders","Map","set","_getManifestResponseAsync","requestOptions","exp","hostUri","expoGoConfig","bundleUrl","_resolveProjectSettingsAsync","runtimeVersion","resolveRuntimeVersionWithExpoUpdatesAsync","projectRoot","Updates","getRuntimeVersionAsync","policy","CommandError","codeSigningInfo","getCodeSigningInfoAsync","options","privateKeyPath","easProjectId","extra","eas","projectId","scopeKey","getScopeKeyAsync","slug","expoUpdatesManifest","id","crypto","randomUUID","createdAt","Date","toISOString","launchAsset","key","contentType","url","assets","metadata","undefined","expoClient","expoGo","stringifiedManifest","JSON","stringify","manifestPartHeaders","certificateChainBody","signature","signManifestString","serializeDictionary","convertToDictionaryItemsRepresentation","keyid","keyId","sig","alg","certificateChainForResponse","join","form","getFormData","getBoundary","body","getBuffer","toString","version","getContentTypeForResponseContentType","Object","entries","forEach","value","FormData","append","header","length","scopeKeyFromCodeSigningInfo","getAnonymousScopeKeyAsync","userAnonymousIdentifier","getAnonymousIdAsync","ANONYMOUS_USERNAME","obj","map","k","v"],"mappings":"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"}
|
|
@@ -9,12 +9,8 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
ExpoMiddleware:
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
disableResponseCache: function() {
|
|
16
|
-
return disableResponseCache;
|
|
17
|
-
}
|
|
12
|
+
ExpoMiddleware: ()=>ExpoMiddleware,
|
|
13
|
+
disableResponseCache: ()=>disableResponseCache
|
|
18
14
|
});
|
|
19
15
|
function _url() {
|
|
20
16
|
const data = require("url");
|
|
@@ -23,7 +19,7 @@ function _url() {
|
|
|
23
19
|
};
|
|
24
20
|
return data;
|
|
25
21
|
}
|
|
26
|
-
const _log = /*#__PURE__*/
|
|
22
|
+
const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../../log"));
|
|
27
23
|
function _getRequireWildcardCache(nodeInterop) {
|
|
28
24
|
if (typeof WeakMap !== "function") return null;
|
|
29
25
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -32,7 +28,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
32
28
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
33
29
|
})(nodeInterop);
|
|
34
30
|
}
|
|
35
|
-
function
|
|
31
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
36
32
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
37
33
|
return obj;
|
|
38
34
|
}
|
|
@@ -45,9 +41,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
45
41
|
if (cache && cache.has(obj)) {
|
|
46
42
|
return cache.get(obj);
|
|
47
43
|
}
|
|
48
|
-
var newObj = {
|
|
49
|
-
__proto__: null
|
|
50
|
-
};
|
|
44
|
+
var newObj = {};
|
|
51
45
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
52
46
|
for(var key in obj){
|
|
53
47
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -92,7 +86,7 @@ class ExpoMiddleware {
|
|
|
92
86
|
_log.exception(error);
|
|
93
87
|
// 5xx = Server Error HTTP code
|
|
94
88
|
res.statusCode = 500;
|
|
95
|
-
if (typeof error ===
|
|
89
|
+
if (typeof error === "object" && error !== null) {
|
|
96
90
|
res.end(JSON.stringify({
|
|
97
91
|
error: error.toString()
|
|
98
92
|
}));
|
|
@@ -112,9 +106,9 @@ class ExpoMiddleware {
|
|
|
112
106
|
}
|
|
113
107
|
}
|
|
114
108
|
function disableResponseCache(res) {
|
|
115
|
-
res.setHeader(
|
|
116
|
-
res.setHeader(
|
|
117
|
-
res.setHeader(
|
|
109
|
+
res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
|
|
110
|
+
res.setHeader("Expires", "-1");
|
|
111
|
+
res.setHeader("Pragma", "no-cache");
|
|
118
112
|
return res;
|
|
119
113
|
}
|
|
120
114
|
|