@expo/cli 0.22.24 → 0.22.25
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 +93 -91
- package/build/bin/cli.map +1 -1
- package/build/metro-require/require.js +53 -52
- package/build/src/api/endpoint.js +6 -2
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +5 -3
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +16 -12
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +6 -4
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +5 -3
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +7 -5
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +32 -26
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +6 -4
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +5 -3
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +3 -1
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemResponseCache.js +10 -8
- package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/ResponseCache.js +20 -12
- package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +13 -11
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +53 -35
- 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 +5 -3
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +5 -3
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +11 -7
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +5 -3
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithUserAgent.js +8 -6
- package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
- package/build/src/api/settings.js +7 -5
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +23 -17
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +39 -21
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +27 -21
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +30 -26
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +35 -29
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +44 -30
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +29 -23
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +25 -21
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +8 -6
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +20 -16
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +14 -12
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +4 -2
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +58 -54
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +11 -7
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +11 -9
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEager.js +8 -6
- package/build/src/export/embed/exportEager.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +71 -61
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +57 -55
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js +44 -40
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +44 -36
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +39 -27
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +67 -63
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +35 -27
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +13 -9
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportDomComponents.js +53 -45
- package/build/src/export/exportDomComponents.js.map +1 -1
- package/build/src/export/exportHermes.js +85 -63
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +72 -62
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +33 -27
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +7 -5
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +11 -9
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +10 -6
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +32 -28
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +36 -30
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +42 -34
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +10 -6
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +28 -24
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +50 -46
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +13 -11
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +19 -15
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +5 -3
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +4 -2
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +400 -274
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +11 -7
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +26 -22
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +16 -12
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +18 -16
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +32 -26
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +22 -18
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +21 -19
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +18 -14
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/install/utils/checkPackagesCompatibility.js +13 -11
- package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +50 -44
- package/build/src/lint/ESlintPrerequisite.js.map +1 -1
- package/build/src/lint/index.js +12 -8
- package/build/src/lint/index.js.map +1 -1
- package/build/src/lint/lintAsync.js +10 -8
- package/build/src/lint/lintAsync.js.map +1 -1
- package/build/src/log.js +36 -16
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +24 -20
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +11 -7
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +38 -26
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +18 -14
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +17 -13
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +6 -4
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +36 -32
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +29 -25
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +46 -40
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +66 -52
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +36 -32
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +19 -13
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +53 -39
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +12 -8
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +11 -7
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +5 -3
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +36 -32
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +10 -8
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +18 -16
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +17 -15
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +12 -10
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +4 -2
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +23 -21
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +7 -5
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +13 -7
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +27 -23
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +74 -56
- 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 +69 -63
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +29 -26
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +28 -25
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +29 -26
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +22 -21
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +32 -29
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +28 -24
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +7 -4
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +28 -27
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +23 -17
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +146 -132
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +29 -21
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +29 -21
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +34 -22
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +27 -17
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +53 -39
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +13 -9
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +27 -19
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +9 -5
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +14 -12
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +27 -21
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +40 -36
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +23 -17
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/appleDestinations.js +38 -36
- package/build/src/run/ios/options/appleDestinations.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +20 -16
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +30 -24
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +31 -23
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +7 -5
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +7 -5
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +48 -44
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/ios/validateExternalBinary.js +24 -22
- package/build/src/run/ios/validateExternalBinary.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +4 -2
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +16 -12
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/serve/index.js +20 -16
- package/build/src/serve/index.js.map +1 -1
- package/build/src/serve/serveAsync.js +36 -32
- package/build/src/serve/serveAsync.js.map +1 -1
- package/build/src/start/detectDevClient.js +13 -9
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +12 -7
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +13 -11
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +23 -19
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +23 -19
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +51 -45
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +18 -16
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +23 -19
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +31 -25
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +25 -17
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +40 -32
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +32 -26
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +41 -31
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +34 -29
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -8
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +32 -28
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +23 -17
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +33 -27
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +46 -42
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +18 -14
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +94 -80
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +44 -40
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +65 -61
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +6 -4
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +10 -6
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +25 -20
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +17 -15
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +39 -35
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +18 -16
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +24 -20
- 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 +11 -9
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +26 -22
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +121 -83
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +20 -12
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +36 -26
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +7 -5
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +36 -28
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +19 -15
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +21 -19
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +37 -31
- 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 +9 -7
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/devicectl.js +87 -73
- package/build/src/start/platforms/ios/devicectl.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +22 -18
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +29 -19
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +14 -10
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +102 -74
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +57 -52
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +22 -18
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +19 -9
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +15 -11
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +4 -2
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +48 -40
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +55 -51
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/AsyncWsTunnel.js +40 -36
- package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +81 -79
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +42 -38
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +18 -14
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +18 -14
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +16 -10
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +36 -33
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +29 -21
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +6 -4
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +269 -271
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +63 -56
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +39 -33
- 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 +46 -40
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +32 -28
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +96 -92
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +32 -30
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +13 -11
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +3 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/attachAtlas.js +26 -22
- package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +19 -17
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +25 -31
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/getDebuggerType.js +6 -4
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +14 -8
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -5
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +8 -6
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -5
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +14 -12
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +14 -10
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +6 -4
- 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 +18 -16
- package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +23 -21
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +23 -21
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +4 -2
- 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 +4 -2
- 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 +8 -4
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/externals.js +33 -25
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +16 -12
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +11 -9
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +22 -18
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +85 -79
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxLog.js +40 -36
- package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +20 -14
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js +10 -6
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +88 -78
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +8 -4
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroPrivateServer.js +9 -7
- package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +10 -8
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +24 -22
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +48 -32
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +24 -22
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +24 -22
- 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 +35 -29
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +149 -139
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +49 -39
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +8 -6
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +17 -15
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +32 -31
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +22 -19
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DomComponentsMiddleware.js +33 -27
- package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +64 -60
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +15 -9
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +15 -14
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +4 -2
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +34 -31
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +64 -56
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +23 -19
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +20 -19
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -9
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +17 -11
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
- package/build/src/start/server/middleware/inspector/CdpClient.js +12 -10
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +35 -27
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +21 -19
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +6 -2
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +120 -96
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +7 -3
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +26 -18
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +23 -15
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +11 -9
- 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 +10 -8
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +13 -11
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +58 -50
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +11 -7
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +76 -54
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +21 -19
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +36 -28
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +28 -24
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +52 -46
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +15 -11
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +28 -26
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +18 -12
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +18 -12
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +31 -27
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +20 -17
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/ansi.js +7 -5
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +24 -14
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +18 -6
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +54 -46
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +78 -68
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +16 -12
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/createTempPath.js +17 -13
- package/build/src/utils/createTempPath.js.map +1 -1
- package/build/src/utils/delay.js +12 -6
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +46 -28
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +10 -8
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +25 -21
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +41 -35
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +63 -59
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +37 -30
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +35 -31
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/expoUpdatesCli.js +32 -22
- package/build/src/utils/expoUpdatesCli.js.map +1 -1
- package/build/src/utils/fetch.js +8 -4
- package/build/src/utils/fetch.js.map +1 -1
- package/build/src/utils/filePath.js +10 -6
- package/build/src/utils/filePath.js.map +1 -1
- package/build/src/utils/findUp.js +13 -9
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +6 -2
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +32 -26
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +29 -21
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +26 -20
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +8 -4
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +3 -1
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +21 -19
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +11 -9
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/jsonSchemaDeref.js +20 -18
- package/build/src/utils/jsonSchemaDeref.js.map +1 -1
- package/build/src/utils/link.js +17 -13
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +46 -28
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +16 -10
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +10 -6
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +12 -6
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +10 -8
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +50 -36
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +11 -5
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +10 -8
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +13 -7
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +21 -15
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +43 -33
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +11 -7
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +11 -5
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +47 -29
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +36 -24
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +40 -32
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/stream.js +5 -3
- package/build/src/utils/stream.js.map +1 -1
- package/build/src/utils/strings.js +6 -4
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +19 -15
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/Telemetry.js +29 -27
- package/build/src/utils/telemetry/Telemetry.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +15 -13
- package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js +26 -22
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderClient.js +10 -8
- package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js +26 -22
- 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 +4 -2
- 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 +25 -29
- 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 +8 -4
- package/build/src/utils/telemetry/utils/constants.js.map +1 -1
- package/build/src/utils/telemetry/utils/context.js +18 -14
- package/build/src/utils/telemetry/utils/context.js.map +1 -1
- package/build/src/utils/template.js +6 -4
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +4 -2
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +21 -17
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -14
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +7 -5
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +14 -12
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +23 -13
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +108 -86
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +22 -16
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +11 -7
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +11 -7
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +3 -3
|
@@ -14,14 +14,24 @@ function _export(target, all) {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
_export(exports, {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
exportApiRoutesStandaloneAsync: function() {
|
|
18
|
+
return exportApiRoutesStandaloneAsync;
|
|
19
|
+
},
|
|
20
|
+
exportFromServerAsync: function() {
|
|
21
|
+
return exportFromServerAsync;
|
|
22
|
+
},
|
|
23
|
+
getFilesToExportFromServerAsync: function() {
|
|
24
|
+
return getFilesToExportFromServerAsync;
|
|
25
|
+
},
|
|
26
|
+
getHtmlFiles: function() {
|
|
27
|
+
return getHtmlFiles;
|
|
28
|
+
},
|
|
29
|
+
getPathVariations: function() {
|
|
30
|
+
return getPathVariations;
|
|
31
|
+
}
|
|
22
32
|
});
|
|
23
33
|
function _chalk() {
|
|
24
|
-
const data = /*#__PURE__*/
|
|
34
|
+
const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
|
|
25
35
|
_chalk = function() {
|
|
26
36
|
return data;
|
|
27
37
|
};
|
|
@@ -35,15 +45,15 @@ function _matchers() {
|
|
|
35
45
|
return data;
|
|
36
46
|
}
|
|
37
47
|
function _path() {
|
|
38
|
-
const data = /*#__PURE__*/
|
|
48
|
+
const data = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
39
49
|
_path = function() {
|
|
40
50
|
return data;
|
|
41
51
|
};
|
|
42
52
|
return data;
|
|
43
53
|
}
|
|
44
|
-
function
|
|
45
|
-
const data = /*#__PURE__*/
|
|
46
|
-
|
|
54
|
+
function _resolvefrom() {
|
|
55
|
+
const data = /*#__PURE__*/ _interop_require_default(require("resolve-from"));
|
|
56
|
+
_resolvefrom = function() {
|
|
47
57
|
return data;
|
|
48
58
|
};
|
|
49
59
|
return data;
|
|
@@ -63,29 +73,29 @@ const _metroErrorInterface = require("../start/server/metro/metroErrorInterface"
|
|
|
63
73
|
const _router = require("../start/server/metro/router");
|
|
64
74
|
const _serializeHtml = require("../start/server/metro/serializeHtml");
|
|
65
75
|
const _link = require("../utils/link");
|
|
66
|
-
function
|
|
76
|
+
function _interop_require_default(obj) {
|
|
67
77
|
return obj && obj.__esModule ? obj : {
|
|
68
78
|
default: obj
|
|
69
79
|
};
|
|
70
80
|
}
|
|
71
|
-
const debug = require(
|
|
81
|
+
const debug = require('debug')('expo:export:generateStaticRoutes');
|
|
72
82
|
/** Match `(page)` -> `page` */ function matchGroupName(name) {
|
|
73
|
-
var
|
|
74
|
-
return (
|
|
83
|
+
var _name_match;
|
|
84
|
+
return (_name_match = name.match(/^\(([^/]+?)\)$/)) == null ? void 0 : _name_match[1];
|
|
75
85
|
}
|
|
76
|
-
async function getFilesToExportFromServerAsync(projectRoot, { manifest
|
|
86
|
+
async function getFilesToExportFromServerAsync(projectRoot, { manifest, renderAsync, // Servers can handle group routes automatically and therefore
|
|
77
87
|
// don't require the build-time generation of every possible group
|
|
78
88
|
// variation.
|
|
79
|
-
exportServer
|
|
80
|
-
files =new Map()
|
|
89
|
+
exportServer, // name : contents
|
|
90
|
+
files = new Map() }) {
|
|
81
91
|
await Promise.all(getHtmlFiles({
|
|
82
92
|
manifest,
|
|
83
93
|
includeGroupVariations: !exportServer
|
|
84
|
-
}).map(async ({ route
|
|
94
|
+
}).map(async ({ route, filePath, pathname })=>{
|
|
85
95
|
try {
|
|
86
|
-
const targetDomain = exportServer ?
|
|
96
|
+
const targetDomain = exportServer ? 'server' : 'client';
|
|
87
97
|
files.set(filePath, {
|
|
88
|
-
contents:
|
|
98
|
+
contents: '',
|
|
89
99
|
targetDomain
|
|
90
100
|
});
|
|
91
101
|
const data = await renderAsync({
|
|
@@ -103,7 +113,7 @@ files =new Map() }) {
|
|
|
103
113
|
error: e,
|
|
104
114
|
projectRoot
|
|
105
115
|
});
|
|
106
|
-
throw new Error(
|
|
116
|
+
throw new Error('Failed to statically export route: ' + pathname);
|
|
107
117
|
}
|
|
108
118
|
}));
|
|
109
119
|
return files;
|
|
@@ -111,7 +121,7 @@ files =new Map() }) {
|
|
|
111
121
|
function modifyRouteNodeInRuntimeManifest(manifest, callback) {
|
|
112
122
|
const iterateScreens = (screens)=>{
|
|
113
123
|
Object.values(screens).map((value)=>{
|
|
114
|
-
if (typeof value !==
|
|
124
|
+
if (typeof value !== 'string') {
|
|
115
125
|
if (value._route) callback(value._route);
|
|
116
126
|
iterateScreens(value.screens);
|
|
117
127
|
}
|
|
@@ -124,19 +134,19 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
124
134
|
modifyRouteNodeInRuntimeManifest(manifest, (route)=>{
|
|
125
135
|
if (Array.isArray(route.entryPoints)) {
|
|
126
136
|
route.entryPoints = route.entryPoints.map((entryPoint)=>{
|
|
127
|
-
if (entryPoint.startsWith(
|
|
137
|
+
if (entryPoint.startsWith('.')) {
|
|
128
138
|
return _path().default.resolve(appDir, entryPoint);
|
|
129
139
|
} else if (!_path().default.isAbsolute(entryPoint)) {
|
|
130
|
-
return (0,
|
|
140
|
+
return (0, _resolvefrom().default)(appDir, entryPoint);
|
|
131
141
|
}
|
|
132
142
|
return entryPoint;
|
|
133
143
|
});
|
|
134
144
|
}
|
|
135
145
|
});
|
|
136
146
|
}
|
|
137
|
-
async function exportFromServerAsync(projectRoot, devServer, { outputDir
|
|
138
|
-
_log.Log.log(`Static rendering is enabled. ` + (0, _link.learnMore)(
|
|
139
|
-
const platform =
|
|
147
|
+
async function exportFromServerAsync(projectRoot, devServer, { outputDir, baseUrl, exportServer, includeSourceMaps, routerRoot, files = new Map(), exp }) {
|
|
148
|
+
_log.Log.log(`Static rendering is enabled. ` + (0, _link.learnMore)('https://docs.expo.dev/router/reference/static-rendering/'));
|
|
149
|
+
const platform = 'web';
|
|
140
150
|
const isExporting = true;
|
|
141
151
|
const appDir = _path().default.join(projectRoot, routerRoot);
|
|
142
152
|
const injectFaviconTag = await (0, _favicon.getVirtualFaviconAssetsAsync)(projectRoot, {
|
|
@@ -145,14 +155,14 @@ async function exportFromServerAsync(projectRoot, devServer, { outputDir , baseU
|
|
|
145
155
|
files,
|
|
146
156
|
exp
|
|
147
157
|
});
|
|
148
|
-
const [resources, { manifest
|
|
158
|
+
const [resources, { manifest, serverManifest, renderAsync }] = await Promise.all([
|
|
149
159
|
devServer.getStaticResourcesAsync({
|
|
150
160
|
includeSourceMaps
|
|
151
161
|
}),
|
|
152
|
-
devServer.getStaticRenderFunctionAsync()
|
|
162
|
+
devServer.getStaticRenderFunctionAsync()
|
|
153
163
|
]);
|
|
154
164
|
makeRuntimeEntryPointsAbsolute(manifest, appDir);
|
|
155
|
-
debug(
|
|
165
|
+
debug('Routes:\n', (0, _util().inspect)(manifest, {
|
|
156
166
|
colors: true,
|
|
157
167
|
depth: null
|
|
158
168
|
}));
|
|
@@ -160,7 +170,7 @@ async function exportFromServerAsync(projectRoot, devServer, { outputDir , baseU
|
|
|
160
170
|
files,
|
|
161
171
|
manifest,
|
|
162
172
|
exportServer,
|
|
163
|
-
async renderAsync ({ pathname
|
|
173
|
+
async renderAsync ({ pathname, route }) {
|
|
164
174
|
const template = await renderAsync(pathname);
|
|
165
175
|
let html = await (0, _serializeHtml.serializeHtmlWithAssets)({
|
|
166
176
|
isExporting,
|
|
@@ -194,7 +204,7 @@ async function exportFromServerAsync(projectRoot, devServer, { outputDir , baseU
|
|
|
194
204
|
}
|
|
195
205
|
if (exportServer) {
|
|
196
206
|
const apiRoutes = await exportApiRoutesAsync({
|
|
197
|
-
platform:
|
|
207
|
+
platform: 'web',
|
|
198
208
|
server: devServer,
|
|
199
209
|
manifest: serverManifest,
|
|
200
210
|
// NOTE(kitten): For now, we always output source maps for API route exports
|
|
@@ -209,16 +219,16 @@ async function exportFromServerAsync(projectRoot, devServer, { outputDir , baseU
|
|
|
209
219
|
}
|
|
210
220
|
return files;
|
|
211
221
|
}
|
|
212
|
-
function getHtmlFiles({ manifest
|
|
222
|
+
function getHtmlFiles({ manifest, includeGroupVariations }) {
|
|
213
223
|
const htmlFiles = new Set();
|
|
214
|
-
function traverseScreens(screens, route, baseUrl =
|
|
224
|
+
function traverseScreens(screens, route, baseUrl = '') {
|
|
215
225
|
for (const [key, value] of Object.entries(screens)){
|
|
216
226
|
let leaf = null;
|
|
217
|
-
if (typeof value ===
|
|
227
|
+
if (typeof value === 'string') {
|
|
218
228
|
leaf = value;
|
|
219
229
|
} else if (Object.keys(value.screens).length === 0) {
|
|
220
230
|
// Ensure the trailing index is accounted for.
|
|
221
|
-
if (key === value.path +
|
|
231
|
+
if (key === value.path + '/index') {
|
|
222
232
|
leaf = key;
|
|
223
233
|
} else {
|
|
224
234
|
leaf = value.path;
|
|
@@ -227,11 +237,11 @@ function getHtmlFiles({ manifest , includeGroupVariations }) {
|
|
|
227
237
|
}
|
|
228
238
|
if (leaf != null) {
|
|
229
239
|
let filePath = baseUrl + leaf;
|
|
230
|
-
if (leaf ===
|
|
231
|
-
filePath = baseUrl ===
|
|
240
|
+
if (leaf === '') {
|
|
241
|
+
filePath = baseUrl === '' ? 'index' : baseUrl.endsWith('/') ? baseUrl + 'index' : baseUrl.slice(0, -1);
|
|
232
242
|
} else if (// If the path is a collection of group segments leading to an index route, append `/index`.
|
|
233
|
-
(0, _matchers().stripGroupSegmentsFromPath)(filePath) ===
|
|
234
|
-
filePath +=
|
|
243
|
+
(0, _matchers().stripGroupSegmentsFromPath)(filePath) === '') {
|
|
244
|
+
filePath += '/index';
|
|
235
245
|
}
|
|
236
246
|
// This should never happen, the type of `string | object` originally comes from React Navigation.
|
|
237
247
|
if (!route) {
|
|
@@ -246,8 +256,8 @@ function getHtmlFiles({ manifest , includeGroupVariations }) {
|
|
|
246
256
|
route
|
|
247
257
|
});
|
|
248
258
|
}
|
|
249
|
-
} else if (typeof value ===
|
|
250
|
-
const newPath = baseUrl + value.path +
|
|
259
|
+
} else if (typeof value === 'object' && (value == null ? void 0 : value.screens)) {
|
|
260
|
+
const newPath = baseUrl + value.path + '/';
|
|
251
261
|
traverseScreens(value.screens, value._route ?? null, newPath);
|
|
252
262
|
}
|
|
253
263
|
}
|
|
@@ -263,24 +273,24 @@ function getHtmlFiles({ manifest , includeGroupVariations }) {
|
|
|
263
273
|
}
|
|
264
274
|
traverseScreens(manifest.screens, null);
|
|
265
275
|
return uniqueBy(Array.from(htmlFiles), (value)=>value.filePath).map((value)=>{
|
|
266
|
-
const parts = value.filePath.split(
|
|
276
|
+
const parts = value.filePath.split('/');
|
|
267
277
|
// Replace `:foo` with `[foo]` and `*foo` with `[...foo]`
|
|
268
278
|
const partsWithGroups = parts.map((part)=>{
|
|
269
|
-
if (part ===
|
|
279
|
+
if (part === '*not-found') {
|
|
270
280
|
return `+not-found`;
|
|
271
|
-
} else if (part.startsWith(
|
|
281
|
+
} else if (part.startsWith(':')) {
|
|
272
282
|
return `[${part.slice(1)}]`;
|
|
273
|
-
} else if (part.startsWith(
|
|
283
|
+
} else if (part.startsWith('*')) {
|
|
274
284
|
return `[...${part.slice(1)}]`;
|
|
275
285
|
}
|
|
276
286
|
return part;
|
|
277
287
|
});
|
|
278
|
-
const filePathLocation = partsWithGroups.join(
|
|
279
|
-
const filePath = filePathLocation +
|
|
288
|
+
const filePathLocation = partsWithGroups.join('/');
|
|
289
|
+
const filePath = filePathLocation + '.html';
|
|
280
290
|
return {
|
|
281
291
|
...value,
|
|
282
292
|
filePath,
|
|
283
|
-
pathname: filePathLocation.replace(/(\/?index)?$/,
|
|
293
|
+
pathname: filePathLocation.replace(/(\/?index)?$/, '')
|
|
284
294
|
};
|
|
285
295
|
});
|
|
286
296
|
}
|
|
@@ -298,15 +308,15 @@ function uniqueBy(array, key) {
|
|
|
298
308
|
}
|
|
299
309
|
function getPathVariations(routePath) {
|
|
300
310
|
const variations = new Set();
|
|
301
|
-
const segments = routePath.split(
|
|
302
|
-
function generateVariations(segments, current =
|
|
311
|
+
const segments = routePath.split('/');
|
|
312
|
+
function generateVariations(segments, current = '') {
|
|
303
313
|
if (segments.length === 0) {
|
|
304
314
|
if (current) variations.add(current);
|
|
305
315
|
return;
|
|
306
316
|
}
|
|
307
317
|
const [head, ...rest] = segments;
|
|
308
318
|
if (matchGroupName(head)) {
|
|
309
|
-
const groups = head.slice(1, -1).split(
|
|
319
|
+
const groups = head.slice(1, -1).split(',');
|
|
310
320
|
if (groups.length > 1) {
|
|
311
321
|
for (const group of groups){
|
|
312
322
|
// If there are multiple groups, recurse on each group.
|
|
@@ -331,8 +341,8 @@ function getPathVariations(routePath) {
|
|
|
331
341
|
generateVariations(segments);
|
|
332
342
|
return Array.from(variations);
|
|
333
343
|
}
|
|
334
|
-
async function exportApiRoutesStandaloneAsync(devServer, { files =new Map()
|
|
335
|
-
const { serverManifest
|
|
344
|
+
async function exportApiRoutesStandaloneAsync(devServer, { files = new Map(), platform, apiRoutesOnly, templateHtml }) {
|
|
345
|
+
const { serverManifest, htmlManifest } = await devServer.getServerManifestAsync();
|
|
336
346
|
const apiRoutes = await exportApiRoutesAsync({
|
|
337
347
|
server: devServer,
|
|
338
348
|
manifest: serverManifest,
|
|
@@ -351,11 +361,11 @@ async function exportApiRoutesStandaloneAsync(devServer, { files =new Map() , pl
|
|
|
351
361
|
manifest: htmlManifest,
|
|
352
362
|
exportServer: true,
|
|
353
363
|
files,
|
|
354
|
-
renderAsync: async ({ pathname
|
|
364
|
+
renderAsync: async ({ pathname, filePath })=>{
|
|
355
365
|
files.set(filePath, {
|
|
356
366
|
contents: templateHtml,
|
|
357
367
|
routeId: pathname,
|
|
358
|
-
targetDomain:
|
|
368
|
+
targetDomain: 'server'
|
|
359
369
|
});
|
|
360
370
|
return templateHtml;
|
|
361
371
|
}
|
|
@@ -363,9 +373,9 @@ async function exportApiRoutesStandaloneAsync(devServer, { files =new Map() , pl
|
|
|
363
373
|
}
|
|
364
374
|
return files;
|
|
365
375
|
}
|
|
366
|
-
async function exportApiRoutesAsync({ includeSourceMaps
|
|
367
|
-
const { manifest
|
|
368
|
-
outputDir:
|
|
376
|
+
async function exportApiRoutesAsync({ includeSourceMaps, server, platform, apiRoutesOnly, ...props }) {
|
|
377
|
+
const { manifest, files } = await server.exportExpoRouterApiRoutesAsync({
|
|
378
|
+
outputDir: '_expo/functions',
|
|
369
379
|
prerenderManifest: props.manifest,
|
|
370
380
|
includeSourceMaps,
|
|
371
381
|
platform
|
|
@@ -375,9 +385,9 @@ async function exportApiRoutesAsync({ includeSourceMaps , server , platform , ap
|
|
|
375
385
|
manifest.htmlRoutes = [];
|
|
376
386
|
manifest.notFoundRoutes = [];
|
|
377
387
|
}
|
|
378
|
-
files.set(
|
|
388
|
+
files.set('_expo/routes.json', {
|
|
379
389
|
contents: JSON.stringify(manifest, null, 2),
|
|
380
|
-
targetDomain:
|
|
390
|
+
targetDomain: 'server'
|
|
381
391
|
});
|
|
382
392
|
return files;
|
|
383
393
|
}
|
|
@@ -385,7 +395,7 @@ function warnPossibleInvalidExportType(appDir) {
|
|
|
385
395
|
const apiRoutes = (0, _router.getApiRoutesForDirectory)(appDir);
|
|
386
396
|
if (apiRoutes.length) {
|
|
387
397
|
// TODO: Allow API Routes for native-only.
|
|
388
|
-
_log.Log.warn(_chalk().default.yellow`Skipping export for API routes because \`web.output\` is not "server". You may want to remove the routes: ${apiRoutes.map((v)=>_path().default.relative(appDir, v)).join(
|
|
398
|
+
_log.Log.warn(_chalk().default.yellow`Skipping export for API routes because \`web.output\` is not "server". You may want to remove the routes: ${apiRoutes.map((v)=>_path().default.relative(appDir, v)).join(', ')}`);
|
|
389
399
|
}
|
|
390
400
|
}
|
|
391
401
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportStaticAsync.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { ExpoConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport { RouteNode } from 'expo-router/build/Route';\nimport { stripGroupSegmentsFromPath } from 'expo-router/build/matchers';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport { inspect } from 'util';\n\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { ExportAssetMap, getFilesFromSerialAssets } from './saveAssets';\nimport { Log } from '../log';\nimport {\n ExpoRouterRuntimeManifest,\n MetroBundlerDevServer,\n} from '../start/server/metro/MetroBundlerDevServer';\nimport { ExpoRouterServerManifestV1 } from '../start/server/metro/fetchRouterManifest';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\nimport { getApiRoutesForDirectory } from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport { learnMore } from '../utils/link';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = {\n mode: 'production' | 'development';\n files?: ExportAssetMap;\n outputDir: string;\n minify: boolean;\n exportServer: boolean;\n baseUrl: string;\n includeSourceMaps: boolean;\n entryPoint?: string;\n clear: boolean;\n routerRoot: string;\n reactCompiler: boolean;\n maxWorkers?: number;\n isExporting: boolean;\n exp?: ExpoConfig;\n};\n\ntype HtmlRequestLocation = {\n /** The output file path name to use relative to the static folder. */\n filePath: string;\n /** The pathname to make requests to in order to fetch the HTML. */\n pathname: string;\n /** The runtime route node object, used to associate async modules with the static HTML. */\n route: RouteNode;\n};\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n // Servers can handle group routes automatically and therefore\n // don't require the build-time generation of every possible group\n // variation.\n exportServer,\n // name : contents\n files = new Map(),\n }: {\n manifest: ExpoRouterRuntimeManifest;\n renderAsync: (requestLocation: HtmlRequestLocation) => Promise<string>;\n exportServer?: boolean;\n files?: ExportAssetMap;\n }\n): Promise<ExportAssetMap> {\n await Promise.all(\n getHtmlFiles({ manifest, includeGroupVariations: !exportServer }).map(\n async ({ route, filePath, pathname }) => {\n try {\n const targetDomain = exportServer ? 'server' : 'client';\n files.set(filePath, { contents: '', targetDomain });\n const data = await renderAsync({ route, filePath, pathname });\n files.set(filePath, {\n contents: data,\n routeId: pathname,\n targetDomain,\n });\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n }\n )\n );\n\n return files;\n}\n\nfunction modifyRouteNodeInRuntimeManifest(\n manifest: ExpoRouterRuntimeManifest,\n callback: (route: RouteNode) => any\n) {\n const iterateScreens = (screens: ExpoRouterRuntimeManifest['screens']) => {\n Object.values(screens).map((value) => {\n if (typeof value !== 'string') {\n if (value._route) callback(value._route);\n iterateScreens(value.screens);\n }\n });\n };\n\n iterateScreens(manifest.screens);\n}\n\n// TODO: Do this earlier in the process.\nfunction makeRuntimeEntryPointsAbsolute(manifest: ExpoRouterRuntimeManifest, appDir: string) {\n modifyRouteNodeInRuntimeManifest(manifest, (route) => {\n if (Array.isArray(route.entryPoints)) {\n route.entryPoints = route.entryPoints.map((entryPoint) => {\n if (entryPoint.startsWith('.')) {\n return path.resolve(appDir, entryPoint);\n } else if (!path.isAbsolute(entryPoint)) {\n return resolveFrom(appDir, entryPoint);\n }\n return entryPoint;\n });\n }\n });\n}\n\n/** Perform all fs commits */\nexport async function exportFromServerAsync(\n projectRoot: string,\n devServer: MetroBundlerDevServer,\n {\n outputDir,\n baseUrl,\n exportServer,\n includeSourceMaps,\n routerRoot,\n files = new Map(),\n exp,\n }: Options\n): Promise<ExportAssetMap> {\n Log.log(\n `Static rendering is enabled. ` +\n learnMore('https://docs.expo.dev/router/reference/static-rendering/')\n );\n\n const platform = 'web';\n const isExporting = true;\n const appDir = path.join(projectRoot, routerRoot);\n const injectFaviconTag = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n baseUrl,\n files,\n exp,\n });\n\n const [resources, { manifest, serverManifest, renderAsync }] = await Promise.all([\n devServer.getStaticResourcesAsync({\n includeSourceMaps,\n }),\n devServer.getStaticRenderFunctionAsync(),\n ]);\n\n makeRuntimeEntryPointsAbsolute(manifest, appDir);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n await getFilesToExportFromServerAsync(projectRoot, {\n files,\n manifest,\n exportServer,\n async renderAsync({ pathname, route }) {\n const template = await renderAsync(pathname);\n let html = await serializeHtmlWithAssets({\n isExporting,\n resources: resources.artifacts,\n template,\n baseUrl,\n route,\n hydrate: true,\n });\n\n if (injectFaviconTag) {\n html = injectFaviconTag(html);\n }\n\n return html;\n },\n });\n\n getFilesFromSerialAssets(resources.artifacts, {\n platform,\n includeSourceMaps,\n files,\n isServerHosted: true,\n });\n\n if (resources.assets) {\n // TODO: Collect files without writing to disk.\n // NOTE(kitten): Re. above, this is now using `files` except for iOS catalog output, which isn't used here\n await persistMetroAssetsAsync(projectRoot, resources.assets, {\n files,\n platform,\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n if (exportServer) {\n const apiRoutes = await exportApiRoutesAsync({\n platform: 'web',\n server: devServer,\n manifest: serverManifest,\n // NOTE(kitten): For now, we always output source maps for API route exports\n includeSourceMaps: true,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n } else {\n warnPossibleInvalidExportType(appDir);\n }\n\n return files;\n}\n\nexport function getHtmlFiles({\n manifest,\n includeGroupVariations,\n}: {\n manifest: ExpoRouterRuntimeManifest;\n includeGroupVariations?: boolean;\n}): HtmlRequestLocation[] {\n const htmlFiles = new Set<Omit<HtmlRequestLocation, 'pathname'>>();\n\n function traverseScreens(\n screens: ExpoRouterRuntimeManifest['screens'],\n route: RouteNode | null,\n baseUrl = ''\n ) {\n for (const [key, value] of Object.entries(screens)) {\n let leaf: string | null = null;\n if (typeof value === 'string') {\n leaf = value;\n } else if (Object.keys(value.screens).length === 0) {\n // Ensure the trailing index is accounted for.\n if (key === value.path + '/index') {\n leaf = key;\n } else {\n leaf = value.path;\n }\n\n route = value._route ?? null;\n }\n\n if (leaf != null) {\n let filePath = baseUrl + leaf;\n\n if (leaf === '') {\n filePath =\n baseUrl === ''\n ? 'index'\n : baseUrl.endsWith('/')\n ? baseUrl + 'index'\n : baseUrl.slice(0, -1);\n } else if (\n // If the path is a collection of group segments leading to an index route, append `/index`.\n stripGroupSegmentsFromPath(filePath) === ''\n ) {\n filePath += '/index';\n }\n\n // This should never happen, the type of `string | object` originally comes from React Navigation.\n if (!route) {\n throw new Error(\n `Internal error: Route not found for \"${filePath}\" while collecting static export paths.`\n );\n }\n\n if (includeGroupVariations) {\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath, route);\n } else {\n htmlFiles.add({\n filePath,\n route,\n });\n }\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = baseUrl + value.path + '/';\n traverseScreens(value.screens, value._route ?? null, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string, route: RouteNode) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add({ filePath: variation, route });\n }\n }\n\n traverseScreens(manifest.screens, null);\n\n return uniqueBy(Array.from(htmlFiles), (value) => value.filePath).map((value) => {\n const parts = value.filePath.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part === '*not-found') {\n return `+not-found`;\n } else if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n const filePathLocation = partsWithGroups.join('/');\n const filePath = filePathLocation + '.html';\n return {\n ...value,\n filePath,\n pathname: filePathLocation.replace(/(\\/?index)?$/, ''),\n };\n });\n}\n\nfunction uniqueBy<T>(array: T[], key: (value: T) => string): T[] {\n const seen = new Set<string>();\n const result: T[] = [];\n for (const value of array) {\n const id = key(value);\n if (!seen.has(id)) {\n seen.add(id);\n result.push(value);\n }\n }\n return result;\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>();\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], current = ''): void {\n if (segments.length === 0) {\n if (current) variations.add(current);\n return;\n }\n\n const [head, ...rest] = segments;\n\n if (matchGroupName(head)) {\n const groups = head.slice(1, -1).split(',');\n\n if (groups.length > 1) {\n for (const group of groups) {\n // If there are multiple groups, recurse on each group.\n generateVariations([`(${group.trim()})`, ...rest], current);\n }\n return;\n } else {\n // Start a fork where this group is included\n generateVariations(rest, current ? `${current}/(${groups[0]})` : `(${groups[0]})`);\n // This code will continue and add paths without this group included`\n }\n } else if (current) {\n current = `${current}/${head}`;\n } else {\n current = head;\n }\n\n generateVariations(rest, current);\n }\n\n generateVariations(segments);\n\n return Array.from(variations);\n}\n\nexport async function exportApiRoutesStandaloneAsync(\n devServer: MetroBundlerDevServer,\n {\n files = new Map(),\n platform,\n apiRoutesOnly,\n templateHtml,\n }: {\n files?: ExportAssetMap;\n platform: string;\n apiRoutesOnly: boolean;\n templateHtml?: string;\n }\n) {\n const { serverManifest, htmlManifest } = await devServer.getServerManifestAsync();\n\n const apiRoutes = await exportApiRoutesAsync({\n server: devServer,\n manifest: serverManifest,\n // NOTE(kitten): For now, we always output source maps for API route exports\n includeSourceMaps: true,\n platform,\n apiRoutesOnly,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n\n if (templateHtml && devServer.isReactServerComponentsEnabled) {\n // TODO: Export an HTML entry for each file. This is a temporary solution until we have SSR/SSG for RSC.\n await getFilesToExportFromServerAsync(devServer.projectRoot, {\n manifest: htmlManifest,\n exportServer: true,\n files,\n renderAsync: async ({ pathname, filePath }) => {\n files.set(filePath, {\n contents: templateHtml!,\n routeId: pathname,\n targetDomain: 'server',\n });\n return templateHtml!;\n },\n });\n }\n\n return files;\n}\n\nasync function exportApiRoutesAsync({\n includeSourceMaps,\n server,\n platform,\n apiRoutesOnly,\n ...props\n}: Pick<Options, 'includeSourceMaps'> & {\n server: MetroBundlerDevServer;\n manifest: ExpoRouterServerManifestV1;\n platform: string;\n apiRoutesOnly?: boolean;\n}): Promise<ExportAssetMap> {\n const { manifest, files } = await server.exportExpoRouterApiRoutesAsync({\n outputDir: '_expo/functions',\n prerenderManifest: props.manifest,\n includeSourceMaps,\n platform,\n });\n\n // HACK: Clear out the HTML and 404 routes if we're only exporting API routes. This is used for native apps that are using API routes but haven't implemented web support yet.\n if (apiRoutesOnly) {\n manifest.htmlRoutes = [];\n manifest.notFoundRoutes = [];\n }\n\n files.set('_expo/routes.json', {\n contents: JSON.stringify(manifest, null, 2),\n targetDomain: 'server',\n });\n\n return files;\n}\n\nfunction warnPossibleInvalidExportType(appDir: string) {\n const apiRoutes = getApiRoutesForDirectory(appDir);\n if (apiRoutes.length) {\n // TODO: Allow API Routes for native-only.\n Log.warn(\n chalk.yellow`Skipping export for API routes because \\`web.output\\` is not \"server\". You may want to remove the routes: ${apiRoutes\n .map((v) => path.relative(appDir, v))\n .join(', ')}`\n );\n }\n}\n"],"names":["getFilesToExportFromServerAsync","exportFromServerAsync","getHtmlFiles","getPathVariations","exportApiRoutesStandaloneAsync","debug","require","matchGroupName","name","match","projectRoot","manifest","renderAsync","exportServer","files","Map","Promise","all","includeGroupVariations","map","route","filePath","pathname","targetDomain","set","contents","data","routeId","e","logMetroErrorAsync","error","Error","modifyRouteNodeInRuntimeManifest","callback","iterateScreens","screens","Object","values","value","_route","makeRuntimeEntryPointsAbsolute","appDir","Array","isArray","entryPoints","entryPoint","startsWith","path","resolve","isAbsolute","resolveFrom","devServer","outputDir","baseUrl","includeSourceMaps","routerRoot","exp","Log","log","learnMore","platform","isExporting","join","injectFaviconTag","getVirtualFaviconAssetsAsync","resources","serverManifest","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","html","serializeHtmlWithAssets","artifacts","hydrate","getFilesFromSerialAssets","isServerHosted","assets","persistMetroAssetsAsync","outputDirectory","apiRoutes","exportApiRoutesAsync","server","warnPossibleInvalidExportType","htmlFiles","Set","traverseScreens","key","entries","leaf","keys","length","endsWith","slice","stripGroupSegmentsFromPath","addOptionalGroups","add","newPath","variations","variation","uniqueBy","from","parts","split","partsWithGroups","part","filePathLocation","replace","array","seen","result","id","has","push","routePath","segments","generateVariations","current","head","rest","groups","group","trim","apiRoutesOnly","templateHtml","htmlManifest","getServerManifestAsync","isReactServerComponentsEnabled","props","exportExpoRouterApiRoutesAsync","prerenderManifest","htmlRoutes","notFoundRoutes","JSON","stringify","getApiRoutesForDirectory","warn","chalk","yellow","v","relative"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportStaticAsync.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { ExpoConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport { RouteNode } from 'expo-router/build/Route';\nimport { stripGroupSegmentsFromPath } from 'expo-router/build/matchers';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport { inspect } from 'util';\n\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { ExportAssetMap, getFilesFromSerialAssets } from './saveAssets';\nimport { Log } from '../log';\nimport {\n ExpoRouterRuntimeManifest,\n MetroBundlerDevServer,\n} from '../start/server/metro/MetroBundlerDevServer';\nimport { ExpoRouterServerManifestV1 } from '../start/server/metro/fetchRouterManifest';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\nimport { getApiRoutesForDirectory } from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport { learnMore } from '../utils/link';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = {\n mode: 'production' | 'development';\n files?: ExportAssetMap;\n outputDir: string;\n minify: boolean;\n exportServer: boolean;\n baseUrl: string;\n includeSourceMaps: boolean;\n entryPoint?: string;\n clear: boolean;\n routerRoot: string;\n reactCompiler: boolean;\n maxWorkers?: number;\n isExporting: boolean;\n exp?: ExpoConfig;\n};\n\ntype HtmlRequestLocation = {\n /** The output file path name to use relative to the static folder. */\n filePath: string;\n /** The pathname to make requests to in order to fetch the HTML. */\n pathname: string;\n /** The runtime route node object, used to associate async modules with the static HTML. */\n route: RouteNode;\n};\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n // Servers can handle group routes automatically and therefore\n // don't require the build-time generation of every possible group\n // variation.\n exportServer,\n // name : contents\n files = new Map(),\n }: {\n manifest: ExpoRouterRuntimeManifest;\n renderAsync: (requestLocation: HtmlRequestLocation) => Promise<string>;\n exportServer?: boolean;\n files?: ExportAssetMap;\n }\n): Promise<ExportAssetMap> {\n await Promise.all(\n getHtmlFiles({ manifest, includeGroupVariations: !exportServer }).map(\n async ({ route, filePath, pathname }) => {\n try {\n const targetDomain = exportServer ? 'server' : 'client';\n files.set(filePath, { contents: '', targetDomain });\n const data = await renderAsync({ route, filePath, pathname });\n files.set(filePath, {\n contents: data,\n routeId: pathname,\n targetDomain,\n });\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n }\n )\n );\n\n return files;\n}\n\nfunction modifyRouteNodeInRuntimeManifest(\n manifest: ExpoRouterRuntimeManifest,\n callback: (route: RouteNode) => any\n) {\n const iterateScreens = (screens: ExpoRouterRuntimeManifest['screens']) => {\n Object.values(screens).map((value) => {\n if (typeof value !== 'string') {\n if (value._route) callback(value._route);\n iterateScreens(value.screens);\n }\n });\n };\n\n iterateScreens(manifest.screens);\n}\n\n// TODO: Do this earlier in the process.\nfunction makeRuntimeEntryPointsAbsolute(manifest: ExpoRouterRuntimeManifest, appDir: string) {\n modifyRouteNodeInRuntimeManifest(manifest, (route) => {\n if (Array.isArray(route.entryPoints)) {\n route.entryPoints = route.entryPoints.map((entryPoint) => {\n if (entryPoint.startsWith('.')) {\n return path.resolve(appDir, entryPoint);\n } else if (!path.isAbsolute(entryPoint)) {\n return resolveFrom(appDir, entryPoint);\n }\n return entryPoint;\n });\n }\n });\n}\n\n/** Perform all fs commits */\nexport async function exportFromServerAsync(\n projectRoot: string,\n devServer: MetroBundlerDevServer,\n {\n outputDir,\n baseUrl,\n exportServer,\n includeSourceMaps,\n routerRoot,\n files = new Map(),\n exp,\n }: Options\n): Promise<ExportAssetMap> {\n Log.log(\n `Static rendering is enabled. ` +\n learnMore('https://docs.expo.dev/router/reference/static-rendering/')\n );\n\n const platform = 'web';\n const isExporting = true;\n const appDir = path.join(projectRoot, routerRoot);\n const injectFaviconTag = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n baseUrl,\n files,\n exp,\n });\n\n const [resources, { manifest, serverManifest, renderAsync }] = await Promise.all([\n devServer.getStaticResourcesAsync({\n includeSourceMaps,\n }),\n devServer.getStaticRenderFunctionAsync(),\n ]);\n\n makeRuntimeEntryPointsAbsolute(manifest, appDir);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n await getFilesToExportFromServerAsync(projectRoot, {\n files,\n manifest,\n exportServer,\n async renderAsync({ pathname, route }) {\n const template = await renderAsync(pathname);\n let html = await serializeHtmlWithAssets({\n isExporting,\n resources: resources.artifacts,\n template,\n baseUrl,\n route,\n hydrate: true,\n });\n\n if (injectFaviconTag) {\n html = injectFaviconTag(html);\n }\n\n return html;\n },\n });\n\n getFilesFromSerialAssets(resources.artifacts, {\n platform,\n includeSourceMaps,\n files,\n isServerHosted: true,\n });\n\n if (resources.assets) {\n // TODO: Collect files without writing to disk.\n // NOTE(kitten): Re. above, this is now using `files` except for iOS catalog output, which isn't used here\n await persistMetroAssetsAsync(projectRoot, resources.assets, {\n files,\n platform,\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n if (exportServer) {\n const apiRoutes = await exportApiRoutesAsync({\n platform: 'web',\n server: devServer,\n manifest: serverManifest,\n // NOTE(kitten): For now, we always output source maps for API route exports\n includeSourceMaps: true,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n } else {\n warnPossibleInvalidExportType(appDir);\n }\n\n return files;\n}\n\nexport function getHtmlFiles({\n manifest,\n includeGroupVariations,\n}: {\n manifest: ExpoRouterRuntimeManifest;\n includeGroupVariations?: boolean;\n}): HtmlRequestLocation[] {\n const htmlFiles = new Set<Omit<HtmlRequestLocation, 'pathname'>>();\n\n function traverseScreens(\n screens: ExpoRouterRuntimeManifest['screens'],\n route: RouteNode | null,\n baseUrl = ''\n ) {\n for (const [key, value] of Object.entries(screens)) {\n let leaf: string | null = null;\n if (typeof value === 'string') {\n leaf = value;\n } else if (Object.keys(value.screens).length === 0) {\n // Ensure the trailing index is accounted for.\n if (key === value.path + '/index') {\n leaf = key;\n } else {\n leaf = value.path;\n }\n\n route = value._route ?? null;\n }\n\n if (leaf != null) {\n let filePath = baseUrl + leaf;\n\n if (leaf === '') {\n filePath =\n baseUrl === ''\n ? 'index'\n : baseUrl.endsWith('/')\n ? baseUrl + 'index'\n : baseUrl.slice(0, -1);\n } else if (\n // If the path is a collection of group segments leading to an index route, append `/index`.\n stripGroupSegmentsFromPath(filePath) === ''\n ) {\n filePath += '/index';\n }\n\n // This should never happen, the type of `string | object` originally comes from React Navigation.\n if (!route) {\n throw new Error(\n `Internal error: Route not found for \"${filePath}\" while collecting static export paths.`\n );\n }\n\n if (includeGroupVariations) {\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath, route);\n } else {\n htmlFiles.add({\n filePath,\n route,\n });\n }\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = baseUrl + value.path + '/';\n traverseScreens(value.screens, value._route ?? null, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string, route: RouteNode) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add({ filePath: variation, route });\n }\n }\n\n traverseScreens(manifest.screens, null);\n\n return uniqueBy(Array.from(htmlFiles), (value) => value.filePath).map((value) => {\n const parts = value.filePath.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part === '*not-found') {\n return `+not-found`;\n } else if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n const filePathLocation = partsWithGroups.join('/');\n const filePath = filePathLocation + '.html';\n return {\n ...value,\n filePath,\n pathname: filePathLocation.replace(/(\\/?index)?$/, ''),\n };\n });\n}\n\nfunction uniqueBy<T>(array: T[], key: (value: T) => string): T[] {\n const seen = new Set<string>();\n const result: T[] = [];\n for (const value of array) {\n const id = key(value);\n if (!seen.has(id)) {\n seen.add(id);\n result.push(value);\n }\n }\n return result;\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>();\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], current = ''): void {\n if (segments.length === 0) {\n if (current) variations.add(current);\n return;\n }\n\n const [head, ...rest] = segments;\n\n if (matchGroupName(head)) {\n const groups = head.slice(1, -1).split(',');\n\n if (groups.length > 1) {\n for (const group of groups) {\n // If there are multiple groups, recurse on each group.\n generateVariations([`(${group.trim()})`, ...rest], current);\n }\n return;\n } else {\n // Start a fork where this group is included\n generateVariations(rest, current ? `${current}/(${groups[0]})` : `(${groups[0]})`);\n // This code will continue and add paths without this group included`\n }\n } else if (current) {\n current = `${current}/${head}`;\n } else {\n current = head;\n }\n\n generateVariations(rest, current);\n }\n\n generateVariations(segments);\n\n return Array.from(variations);\n}\n\nexport async function exportApiRoutesStandaloneAsync(\n devServer: MetroBundlerDevServer,\n {\n files = new Map(),\n platform,\n apiRoutesOnly,\n templateHtml,\n }: {\n files?: ExportAssetMap;\n platform: string;\n apiRoutesOnly: boolean;\n templateHtml?: string;\n }\n) {\n const { serverManifest, htmlManifest } = await devServer.getServerManifestAsync();\n\n const apiRoutes = await exportApiRoutesAsync({\n server: devServer,\n manifest: serverManifest,\n // NOTE(kitten): For now, we always output source maps for API route exports\n includeSourceMaps: true,\n platform,\n apiRoutesOnly,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n\n if (templateHtml && devServer.isReactServerComponentsEnabled) {\n // TODO: Export an HTML entry for each file. This is a temporary solution until we have SSR/SSG for RSC.\n await getFilesToExportFromServerAsync(devServer.projectRoot, {\n manifest: htmlManifest,\n exportServer: true,\n files,\n renderAsync: async ({ pathname, filePath }) => {\n files.set(filePath, {\n contents: templateHtml!,\n routeId: pathname,\n targetDomain: 'server',\n });\n return templateHtml!;\n },\n });\n }\n\n return files;\n}\n\nasync function exportApiRoutesAsync({\n includeSourceMaps,\n server,\n platform,\n apiRoutesOnly,\n ...props\n}: Pick<Options, 'includeSourceMaps'> & {\n server: MetroBundlerDevServer;\n manifest: ExpoRouterServerManifestV1;\n platform: string;\n apiRoutesOnly?: boolean;\n}): Promise<ExportAssetMap> {\n const { manifest, files } = await server.exportExpoRouterApiRoutesAsync({\n outputDir: '_expo/functions',\n prerenderManifest: props.manifest,\n includeSourceMaps,\n platform,\n });\n\n // HACK: Clear out the HTML and 404 routes if we're only exporting API routes. This is used for native apps that are using API routes but haven't implemented web support yet.\n if (apiRoutesOnly) {\n manifest.htmlRoutes = [];\n manifest.notFoundRoutes = [];\n }\n\n files.set('_expo/routes.json', {\n contents: JSON.stringify(manifest, null, 2),\n targetDomain: 'server',\n });\n\n return files;\n}\n\nfunction warnPossibleInvalidExportType(appDir: string) {\n const apiRoutes = getApiRoutesForDirectory(appDir);\n if (apiRoutes.length) {\n // TODO: Allow API Routes for native-only.\n Log.warn(\n chalk.yellow`Skipping export for API routes because \\`web.output\\` is not \"server\". You may want to remove the routes: ${apiRoutes\n .map((v) => path.relative(appDir, v))\n .join(', ')}`\n );\n }\n}\n"],"names":["exportApiRoutesStandaloneAsync","exportFromServerAsync","getFilesToExportFromServerAsync","getHtmlFiles","getPathVariations","debug","require","matchGroupName","name","match","projectRoot","manifest","renderAsync","exportServer","files","Map","Promise","all","includeGroupVariations","map","route","filePath","pathname","targetDomain","set","contents","data","routeId","e","logMetroErrorAsync","error","Error","modifyRouteNodeInRuntimeManifest","callback","iterateScreens","screens","Object","values","value","_route","makeRuntimeEntryPointsAbsolute","appDir","Array","isArray","entryPoints","entryPoint","startsWith","path","resolve","isAbsolute","resolveFrom","devServer","outputDir","baseUrl","includeSourceMaps","routerRoot","exp","Log","log","learnMore","platform","isExporting","join","injectFaviconTag","getVirtualFaviconAssetsAsync","resources","serverManifest","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","html","serializeHtmlWithAssets","artifacts","hydrate","getFilesFromSerialAssets","isServerHosted","assets","persistMetroAssetsAsync","outputDirectory","apiRoutes","exportApiRoutesAsync","server","warnPossibleInvalidExportType","htmlFiles","Set","traverseScreens","key","entries","leaf","keys","length","endsWith","slice","stripGroupSegmentsFromPath","addOptionalGroups","add","newPath","variations","variation","uniqueBy","from","parts","split","partsWithGroups","part","filePathLocation","replace","array","seen","result","id","has","push","routePath","segments","generateVariations","current","head","rest","groups","group","trim","apiRoutesOnly","templateHtml","htmlManifest","getServerManifestAsync","isReactServerComponentsEnabled","props","exportExpoRouterApiRoutesAsync","prerenderManifest","htmlRoutes","notFoundRoutes","JSON","stringify","getApiRoutesForDirectory","warn","chalk","yellow","v","relative"],"mappings":"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"}
|
|
@@ -9,9 +9,15 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
getFaviconFromExpoConfigAsync: function() {
|
|
13
|
+
return getFaviconFromExpoConfigAsync;
|
|
14
|
+
},
|
|
15
|
+
getUserDefinedFaviconFile: function() {
|
|
16
|
+
return getUserDefinedFaviconFile;
|
|
17
|
+
},
|
|
18
|
+
getVirtualFaviconAssetsAsync: function() {
|
|
19
|
+
return getVirtualFaviconAssetsAsync;
|
|
20
|
+
}
|
|
15
21
|
});
|
|
16
22
|
function _config() {
|
|
17
23
|
const data = require("@expo/config");
|
|
@@ -20,22 +26,22 @@ function _config() {
|
|
|
20
26
|
};
|
|
21
27
|
return data;
|
|
22
28
|
}
|
|
23
|
-
function
|
|
29
|
+
function _imageutils() {
|
|
24
30
|
const data = require("@expo/image-utils");
|
|
25
|
-
|
|
31
|
+
_imageutils = function() {
|
|
26
32
|
return data;
|
|
27
33
|
};
|
|
28
34
|
return data;
|
|
29
35
|
}
|
|
30
36
|
function _fs() {
|
|
31
|
-
const data = /*#__PURE__*/
|
|
37
|
+
const data = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
32
38
|
_fs = function() {
|
|
33
39
|
return data;
|
|
34
40
|
};
|
|
35
41
|
return data;
|
|
36
42
|
}
|
|
37
43
|
function _path() {
|
|
38
|
-
const data = /*#__PURE__*/
|
|
44
|
+
const data = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
39
45
|
_path = function() {
|
|
40
46
|
return data;
|
|
41
47
|
};
|
|
@@ -43,21 +49,21 @@ function _path() {
|
|
|
43
49
|
}
|
|
44
50
|
const _publicFolder = require("./publicFolder");
|
|
45
51
|
const _log = require("../log");
|
|
46
|
-
function
|
|
52
|
+
function _interop_require_default(obj) {
|
|
47
53
|
return obj && obj.__esModule ? obj : {
|
|
48
54
|
default: obj
|
|
49
55
|
};
|
|
50
56
|
}
|
|
51
|
-
const debug = require(
|
|
57
|
+
const debug = require('debug')('expo:favicon');
|
|
52
58
|
function getUserDefinedFaviconFile(projectRoot) {
|
|
53
59
|
return (0, _publicFolder.getUserDefinedFile)(projectRoot, [
|
|
54
|
-
|
|
60
|
+
'./favicon.ico'
|
|
55
61
|
]);
|
|
56
62
|
}
|
|
57
|
-
async function getVirtualFaviconAssetsAsync(projectRoot, { baseUrl
|
|
63
|
+
async function getVirtualFaviconAssetsAsync(projectRoot, { baseUrl, outputDir, files, exp }) {
|
|
58
64
|
const existing = getUserDefinedFaviconFile(projectRoot);
|
|
59
65
|
if (existing) {
|
|
60
|
-
debug(
|
|
66
|
+
debug('Using user-defined favicon.ico file.');
|
|
61
67
|
return null;
|
|
62
68
|
}
|
|
63
69
|
const data = await getFaviconFromExpoConfigAsync(projectRoot, {
|
|
@@ -71,27 +77,27 @@ async function getVirtualFaviconAssetsAsync(projectRoot, { baseUrl , outputDir ,
|
|
|
71
77
|
].map(async (asset)=>{
|
|
72
78
|
const assetPath = _path().default.join(outputDir, asset.path);
|
|
73
79
|
if (files) {
|
|
74
|
-
debug(
|
|
80
|
+
debug('Storing asset for persisting: ' + assetPath);
|
|
75
81
|
files == null ? void 0 : files.set(asset.path, {
|
|
76
82
|
contents: asset.source,
|
|
77
|
-
targetDomain:
|
|
83
|
+
targetDomain: 'client'
|
|
78
84
|
});
|
|
79
85
|
} else {
|
|
80
|
-
debug(
|
|
86
|
+
debug('Writing asset to disk: ' + assetPath);
|
|
81
87
|
await _fs().default.promises.writeFile(assetPath, asset.source);
|
|
82
88
|
}
|
|
83
89
|
}));
|
|
84
90
|
function injectFaviconTag(html) {
|
|
85
|
-
if (!html.includes(
|
|
91
|
+
if (!html.includes('</head>')) {
|
|
86
92
|
return html;
|
|
87
93
|
}
|
|
88
|
-
return html.replace(
|
|
94
|
+
return html.replace('</head>', `<link rel="shortcut icon" href="${baseUrl}/favicon.ico" /></head>`);
|
|
89
95
|
}
|
|
90
96
|
return injectFaviconTag;
|
|
91
97
|
}
|
|
92
|
-
async function getFaviconFromExpoConfigAsync(projectRoot, { force =false
|
|
93
|
-
var
|
|
94
|
-
const src = ((
|
|
98
|
+
async function getFaviconFromExpoConfigAsync(projectRoot, { force = false, exp = (0, _config().getConfig)(projectRoot).exp } = {}) {
|
|
99
|
+
var _exp_web;
|
|
100
|
+
const src = ((_exp_web = exp.web) == null ? void 0 : _exp_web.favicon) ?? null;
|
|
95
101
|
if (!src) {
|
|
96
102
|
return null;
|
|
97
103
|
}
|
|
@@ -100,28 +106,28 @@ async function getFaviconFromExpoConfigAsync(projectRoot, { force =false , exp =
|
|
|
100
106
|
32,
|
|
101
107
|
48
|
|
102
108
|
];
|
|
103
|
-
const cacheType =
|
|
109
|
+
const cacheType = 'favicon';
|
|
104
110
|
const size = dims[dims.length - 1];
|
|
105
111
|
try {
|
|
106
|
-
const { source
|
|
112
|
+
const { source } = await (0, _imageutils().generateImageAsync)({
|
|
107
113
|
projectRoot,
|
|
108
114
|
cacheType
|
|
109
115
|
}, {
|
|
110
|
-
resizeMode:
|
|
116
|
+
resizeMode: 'contain',
|
|
111
117
|
src,
|
|
112
|
-
backgroundColor:
|
|
118
|
+
backgroundColor: 'transparent',
|
|
113
119
|
width: size,
|
|
114
120
|
height: size,
|
|
115
121
|
name: `favicon-${size}.png`
|
|
116
122
|
});
|
|
117
|
-
const faviconBuffer = await (0,
|
|
123
|
+
const faviconBuffer = await (0, _imageutils().generateFaviconAsync)(source, dims);
|
|
118
124
|
return {
|
|
119
125
|
source: faviconBuffer,
|
|
120
|
-
path:
|
|
126
|
+
path: 'favicon.ico'
|
|
121
127
|
};
|
|
122
128
|
} catch (error) {
|
|
123
129
|
// Check for ENOENT
|
|
124
|
-
if (!force && error.code ===
|
|
130
|
+
if (!force && error.code === 'ENOENT') {
|
|
125
131
|
_log.Log.warn(`Favicon source file in Expo config (web.favicon) does not exist: ${src}`);
|
|
126
132
|
return null;
|
|
127
133
|
}
|