@expo/cli 1.0.0-canary-20250320-7a205d3 → 1.0.0-canary-20250402-161f57b
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 +36 -32
- 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 +55 -37
- 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 +53 -31
- 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 +72 -62
- 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 +68 -64
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +34 -26
- 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 +75 -53
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +73 -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 +64 -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 +705 -479
- 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 +14 -12
- 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 +43 -37
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +70 -53
- 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 +80 -60
- 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 +88 -74
- 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 +37 -33
- 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 +30 -22
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +9 -5
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +293 -280
- 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/createExpoFallbackResolver.js +13 -11
- package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +47 -41
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +31 -27
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +110 -98
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +34 -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 +28 -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 +24 -20
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +87 -81
- 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 +150 -140
- 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 +61 -57
- 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 +16 -15
- 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 +72 -50
- 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 +79 -69
- 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 +12 -8
- 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 +40 -22
- 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 +27 -23
- 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 +41 -35
- 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/multipartMixed.js +13 -11
- package/build/src/utils/multipartMixed.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 +49 -35
- 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 +18 -14
- 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/flushFetchDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushFetchDetached.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/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 +17 -16
|
@@ -9,7 +9,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
Object.defineProperty(exports, "MetroBundlerDevServer", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: ()
|
|
12
|
+
get: function() {
|
|
13
|
+
return MetroBundlerDevServer;
|
|
14
|
+
}
|
|
13
15
|
});
|
|
14
16
|
function _config() {
|
|
15
17
|
const data = require("@expo/config");
|
|
@@ -26,28 +28,28 @@ function _paths() {
|
|
|
26
28
|
return data;
|
|
27
29
|
}
|
|
28
30
|
function _env() {
|
|
29
|
-
const data = /*#__PURE__*/
|
|
31
|
+
const data = /*#__PURE__*/ _interop_require_wildcard(require("@expo/env"));
|
|
30
32
|
_env = function() {
|
|
31
33
|
return data;
|
|
32
34
|
};
|
|
33
35
|
return data;
|
|
34
36
|
}
|
|
35
37
|
function _assert() {
|
|
36
|
-
const data = /*#__PURE__*/
|
|
38
|
+
const data = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
37
39
|
_assert = function() {
|
|
38
40
|
return data;
|
|
39
41
|
};
|
|
40
42
|
return data;
|
|
41
43
|
}
|
|
42
44
|
function _chalk() {
|
|
43
|
-
const data = /*#__PURE__*/
|
|
45
|
+
const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
|
|
44
46
|
_chalk = function() {
|
|
45
47
|
return data;
|
|
46
48
|
};
|
|
47
49
|
return data;
|
|
48
50
|
}
|
|
49
51
|
function _baseJSBundle() {
|
|
50
|
-
const data = /*#__PURE__*/
|
|
52
|
+
const data = /*#__PURE__*/ _interop_require_default(require("metro/src/DeltaBundler/Serializers/baseJSBundle"));
|
|
51
53
|
_baseJSBundle = function() {
|
|
52
54
|
return data;
|
|
53
55
|
};
|
|
@@ -61,29 +63,29 @@ function _sourceMapGenerator() {
|
|
|
61
63
|
return data;
|
|
62
64
|
}
|
|
63
65
|
function _bundleToString() {
|
|
64
|
-
const data = /*#__PURE__*/
|
|
66
|
+
const data = /*#__PURE__*/ _interop_require_default(require("metro/src/lib/bundleToString"));
|
|
65
67
|
_bundleToString = function() {
|
|
66
68
|
return data;
|
|
67
69
|
};
|
|
68
70
|
return data;
|
|
69
71
|
}
|
|
70
72
|
function _getGraphId() {
|
|
71
|
-
const data = /*#__PURE__*/
|
|
73
|
+
const data = /*#__PURE__*/ _interop_require_default(require("metro/src/lib/getGraphId"));
|
|
72
74
|
_getGraphId = function() {
|
|
73
75
|
return data;
|
|
74
76
|
};
|
|
75
77
|
return data;
|
|
76
78
|
}
|
|
77
79
|
function _path() {
|
|
78
|
-
const data = /*#__PURE__*/
|
|
80
|
+
const data = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
79
81
|
_path = function() {
|
|
80
82
|
return data;
|
|
81
83
|
};
|
|
82
84
|
return data;
|
|
83
85
|
}
|
|
84
|
-
function
|
|
85
|
-
const data = /*#__PURE__*/
|
|
86
|
-
|
|
86
|
+
function _resolvefrom() {
|
|
87
|
+
const data = /*#__PURE__*/ _interop_require_default(require("resolve-from"));
|
|
88
|
+
_resolvefrom = function() {
|
|
87
89
|
return data;
|
|
88
90
|
};
|
|
89
91
|
return data;
|
|
@@ -103,23 +105,23 @@ const _env1 = require("../../../utils/env");
|
|
|
103
105
|
const _errors = require("../../../utils/errors");
|
|
104
106
|
const _filePath = require("../../../utils/filePath");
|
|
105
107
|
const _port = require("../../../utils/port");
|
|
106
|
-
const
|
|
108
|
+
const _BundlerDevServer = require("../BundlerDevServer");
|
|
107
109
|
const _getStaticRenderFunctions = require("../getStaticRenderFunctions");
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
const
|
|
110
|
+
const _ContextModuleSourceMapsMiddleware = require("../middleware/ContextModuleSourceMapsMiddleware");
|
|
111
|
+
const _CreateFileMiddleware = require("../middleware/CreateFileMiddleware");
|
|
112
|
+
const _DevToolsPluginMiddleware = require("../middleware/DevToolsPluginMiddleware");
|
|
113
|
+
const _DomComponentsMiddleware = require("../middleware/DomComponentsMiddleware");
|
|
114
|
+
const _FaviconMiddleware = require("../middleware/FaviconMiddleware");
|
|
115
|
+
const _HistoryFallbackMiddleware = require("../middleware/HistoryFallbackMiddleware");
|
|
116
|
+
const _InterstitialPageMiddleware = require("../middleware/InterstitialPageMiddleware");
|
|
117
|
+
const _ManifestMiddleware = require("../middleware/ManifestMiddleware");
|
|
118
|
+
const _ReactDevToolsPageMiddleware = require("../middleware/ReactDevToolsPageMiddleware");
|
|
119
|
+
const _RuntimeRedirectMiddleware = require("../middleware/RuntimeRedirectMiddleware");
|
|
120
|
+
const _ServeStaticMiddleware = require("../middleware/ServeStaticMiddleware");
|
|
119
121
|
const _metroOptions = require("../middleware/metroOptions");
|
|
120
122
|
const _mutations = require("../middleware/mutations");
|
|
121
123
|
const _startTypescriptTypeGeneration = require("../type-generation/startTypescriptTypeGeneration");
|
|
122
|
-
function
|
|
124
|
+
function _interop_require_default(obj) {
|
|
123
125
|
return obj && obj.__esModule ? obj : {
|
|
124
126
|
default: obj
|
|
125
127
|
};
|
|
@@ -132,7 +134,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
132
134
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
133
135
|
})(nodeInterop);
|
|
134
136
|
}
|
|
135
|
-
function
|
|
137
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
136
138
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
137
139
|
return obj;
|
|
138
140
|
}
|
|
@@ -145,7 +147,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
145
147
|
if (cache && cache.has(obj)) {
|
|
146
148
|
return cache.get(obj);
|
|
147
149
|
}
|
|
148
|
-
var newObj = {
|
|
150
|
+
var newObj = {
|
|
151
|
+
__proto__: null
|
|
152
|
+
};
|
|
149
153
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
150
154
|
for(var key in obj){
|
|
151
155
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -163,15 +167,12 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
163
167
|
}
|
|
164
168
|
return newObj;
|
|
165
169
|
}
|
|
166
|
-
const debug = require(
|
|
170
|
+
const debug = require('debug')('expo:start:server:metro');
|
|
167
171
|
/** Default port to use for apps running in Expo Go. */ const EXPO_GO_METRO_PORT = 8081;
|
|
168
172
|
/** Default port to use for apps that run in standard React Native projects or Expo Dev Clients. */ const DEV_CLIENT_METRO_PORT = 8081;
|
|
169
|
-
class MetroBundlerDevServer extends
|
|
170
|
-
metro = null;
|
|
171
|
-
hmrServer = null;
|
|
172
|
-
ssrHmrClients = new Map();
|
|
173
|
+
class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
173
174
|
get name() {
|
|
174
|
-
return
|
|
175
|
+
return 'metro';
|
|
175
176
|
}
|
|
176
177
|
async resolvePortAsync(options = {}) {
|
|
177
178
|
const port = // If the manually defined port is busy then an error should be thrown...
|
|
@@ -179,26 +180,26 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
179
180
|
(options.devClient ? Number(process.env.RCT_METRO_PORT) || DEV_CLIENT_METRO_PORT : await (0, _port.getFreePortAsync)(EXPO_GO_METRO_PORT));
|
|
180
181
|
return port;
|
|
181
182
|
}
|
|
182
|
-
async exportExpoRouterApiRoutesAsync({ includeSourceMaps
|
|
183
|
-
const { routerRoot
|
|
184
|
-
(0, _assert().default)(routerRoot != null,
|
|
183
|
+
async exportExpoRouterApiRoutesAsync({ includeSourceMaps, outputDir, prerenderManifest, platform }) {
|
|
184
|
+
const { routerRoot } = this.instanceMetroOptions;
|
|
185
|
+
(0, _assert().default)(routerRoot != null, 'The server must be started before calling exportExpoRouterApiRoutesAsync.');
|
|
185
186
|
const appDir = _path().default.join(this.projectRoot, routerRoot);
|
|
186
187
|
const manifest = await this.getExpoRouterRoutesManifestAsync({
|
|
187
188
|
appDir
|
|
188
189
|
});
|
|
189
190
|
const files = new Map();
|
|
190
191
|
// Inject RSC middleware.
|
|
191
|
-
const rscPath =
|
|
192
|
+
const rscPath = '/_flight/[...rsc]';
|
|
192
193
|
if (this.isReactServerComponentsEnabled && // If the RSC route is not already in the manifest, add it.
|
|
193
|
-
!manifest.apiRoutes.find((route)=>route.page.startsWith(
|
|
194
|
-
debug(
|
|
194
|
+
!manifest.apiRoutes.find((route)=>route.page.startsWith('/_flight/'))) {
|
|
195
|
+
debug('Adding RSC route to the manifest:', rscPath);
|
|
195
196
|
// NOTE: This might need to be sorted to the correct spot in the future.
|
|
196
197
|
manifest.apiRoutes.push({
|
|
197
|
-
file: (0,
|
|
198
|
+
file: (0, _resolvefrom().default)(this.projectRoot, '@expo/cli/static/template/[...rsc]+api.ts'),
|
|
198
199
|
page: rscPath,
|
|
199
|
-
namedRegex:
|
|
200
|
+
namedRegex: '^/_flight(?:/(?<rsc>.+?))?(?:/)?$',
|
|
200
201
|
routeKeys: {
|
|
201
|
-
rsc:
|
|
202
|
+
rsc: 'rsc'
|
|
202
203
|
}
|
|
203
204
|
});
|
|
204
205
|
}
|
|
@@ -207,21 +208,21 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
207
208
|
const contents = await this.bundleApiRoute(filepath, {
|
|
208
209
|
platform
|
|
209
210
|
});
|
|
210
|
-
const artifactFilename = route.page === rscPath ? (0, _metroOptions.convertPathToModuleSpecifier)(_path().default.join(outputDir,
|
|
211
|
+
const artifactFilename = route.page === rscPath ? (0, _metroOptions.convertPathToModuleSpecifier)(_path().default.join(outputDir, '.' + rscPath + '.js')) : (0, _metroOptions.convertPathToModuleSpecifier)(_path().default.join(outputDir, _path().default.relative(appDir, filepath.replace(/\.[tj]sx?$/, '.js'))));
|
|
211
212
|
if (contents) {
|
|
212
213
|
let src = contents.src;
|
|
213
214
|
if (includeSourceMaps && contents.map) {
|
|
214
215
|
// TODO(kitten): Merge the source map transformer in the future
|
|
215
216
|
// https://github.com/expo/expo/blob/0dffdb15/packages/%40expo/metro-config/src/serializer/serializeChunks.ts#L422-L439
|
|
216
217
|
// Alternatively, check whether `sourcesRoot` helps here
|
|
217
|
-
const artifactBasename = encodeURIComponent(_path().default.basename(artifactFilename) +
|
|
218
|
+
const artifactBasename = encodeURIComponent(_path().default.basename(artifactFilename) + '.map');
|
|
218
219
|
src = src.replace(/\/\/# sourceMappingURL=.*/g, `//# sourceMappingURL=${artifactBasename}`);
|
|
219
|
-
const parsedMap = typeof contents.map ===
|
|
220
|
-
files.set(artifactFilename +
|
|
220
|
+
const parsedMap = typeof contents.map === 'string' ? JSON.parse(contents.map) : contents.map;
|
|
221
|
+
files.set(artifactFilename + '.map', {
|
|
221
222
|
contents: JSON.stringify({
|
|
222
223
|
version: parsedMap.version,
|
|
223
224
|
sources: parsedMap.sources.map((source)=>{
|
|
224
|
-
source = typeof source ===
|
|
225
|
+
source = typeof source === 'string' && source.startsWith(this.projectRoot) ? _path().default.relative(this.projectRoot, source) : source;
|
|
225
226
|
return (0, _metroOptions.convertPathToModuleSpecifier)(source);
|
|
226
227
|
}),
|
|
227
228
|
sourcesContent: new Array(parsedMap.sources.length).fill(null),
|
|
@@ -229,13 +230,13 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
229
230
|
mappings: parsedMap.mappings
|
|
230
231
|
}),
|
|
231
232
|
apiRouteId: route.page,
|
|
232
|
-
targetDomain:
|
|
233
|
+
targetDomain: 'server'
|
|
233
234
|
});
|
|
234
235
|
}
|
|
235
236
|
files.set(artifactFilename, {
|
|
236
237
|
contents: src,
|
|
237
238
|
apiRouteId: route.page,
|
|
238
|
-
targetDomain:
|
|
239
|
+
targetDomain: 'server'
|
|
239
240
|
});
|
|
240
241
|
}
|
|
241
242
|
// Remap the manifest files to represent the output files.
|
|
@@ -249,46 +250,55 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
249
250
|
files
|
|
250
251
|
};
|
|
251
252
|
}
|
|
252
|
-
async getExpoRouterRoutesManifestAsync({ appDir
|
|
253
|
-
var
|
|
253
|
+
async getExpoRouterRoutesManifestAsync({ appDir }) {
|
|
254
|
+
var _exp_extra;
|
|
254
255
|
// getBuiltTimeServerManifest
|
|
255
|
-
const { exp
|
|
256
|
+
const { exp } = (0, _config().getConfig)(this.projectRoot);
|
|
256
257
|
const manifest = await (0, _fetchRouterManifest.fetchManifest)(this.projectRoot, {
|
|
257
|
-
...(
|
|
258
|
+
...(_exp_extra = exp.extra) == null ? void 0 : _exp_extra.router,
|
|
259
|
+
preserveRedirectAndRewrites: true,
|
|
258
260
|
asJson: true,
|
|
259
261
|
appDir
|
|
260
262
|
});
|
|
261
263
|
if (!manifest) {
|
|
262
|
-
throw new _errors.CommandError(
|
|
264
|
+
throw new _errors.CommandError('EXPO_ROUTER_SERVER_MANIFEST', 'Unexpected error: server manifest could not be fetched.');
|
|
263
265
|
}
|
|
264
266
|
return manifest;
|
|
265
267
|
}
|
|
266
268
|
async getServerManifestAsync() {
|
|
269
|
+
var _exp_extra, _exp_extra1;
|
|
270
|
+
const { exp } = (0, _config().getConfig)(this.projectRoot);
|
|
267
271
|
// NOTE: This could probably be folded back into `renderStaticContent` when expo-asset and font support RSC.
|
|
268
|
-
const { getBuildTimeServerManifestAsync
|
|
272
|
+
const { getBuildTimeServerManifestAsync, getManifest } = await this.ssrLoadModule('expo-router/build/static/getServerManifest.js', {
|
|
269
273
|
// Only use react-server environment when the routes are using react-server rendering by default.
|
|
270
|
-
environment: this.isReactServerRoutesEnabled ?
|
|
274
|
+
environment: this.isReactServerRoutesEnabled ? 'react-server' : 'node'
|
|
271
275
|
});
|
|
272
276
|
return {
|
|
273
|
-
serverManifest: await getBuildTimeServerManifestAsync(
|
|
274
|
-
|
|
277
|
+
serverManifest: await getBuildTimeServerManifestAsync({
|
|
278
|
+
...(_exp_extra = exp.extra) == null ? void 0 : _exp_extra.router
|
|
279
|
+
}),
|
|
280
|
+
htmlManifest: await getManifest({
|
|
281
|
+
...(_exp_extra1 = exp.extra) == null ? void 0 : _exp_extra1.router
|
|
282
|
+
})
|
|
275
283
|
};
|
|
276
284
|
}
|
|
277
285
|
async getStaticRenderFunctionAsync() {
|
|
278
|
-
var
|
|
286
|
+
var _exp_extra, _exp_extra1;
|
|
279
287
|
const url = this.getDevServerUrlOrAssert();
|
|
280
|
-
const { getStaticContent
|
|
288
|
+
const { getStaticContent, getManifest, getBuildTimeServerManifestAsync } = await this.ssrLoadModule('expo-router/node/render.js', {
|
|
281
289
|
// This must always use the legacy rendering resolution (no `react-server`) because it leverages
|
|
282
290
|
// the previous React SSG utilities which aren't available in React 19.
|
|
283
|
-
environment:
|
|
291
|
+
environment: 'node'
|
|
284
292
|
});
|
|
285
|
-
const { exp
|
|
293
|
+
const { exp } = (0, _config().getConfig)(this.projectRoot);
|
|
286
294
|
return {
|
|
287
|
-
serverManifest: await getBuildTimeServerManifestAsync(
|
|
295
|
+
serverManifest: await getBuildTimeServerManifestAsync({
|
|
296
|
+
...(_exp_extra = exp.extra) == null ? void 0 : _exp_extra.router
|
|
297
|
+
}),
|
|
288
298
|
// Get routes from Expo Router.
|
|
289
299
|
manifest: await getManifest({
|
|
290
300
|
preserveApiRoutes: false,
|
|
291
|
-
...(
|
|
301
|
+
...(_exp_extra1 = exp.extra) == null ? void 0 : _exp_extra1.router
|
|
292
302
|
}),
|
|
293
303
|
// Get route generating function
|
|
294
304
|
async renderAsync (path) {
|
|
@@ -296,10 +306,10 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
296
306
|
}
|
|
297
307
|
};
|
|
298
308
|
}
|
|
299
|
-
async getStaticResourcesAsync({ includeSourceMaps
|
|
300
|
-
const { mode
|
|
301
|
-
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && routerRoot != null && reactCompiler != null && asyncRoutes != null,
|
|
302
|
-
const resolvedMainModuleName = mainModuleName ??
|
|
309
|
+
async getStaticResourcesAsync({ includeSourceMaps, mainModuleName, clientBoundaries = this.instanceMetroOptions.clientBoundaries ?? [], platform = 'web' } = {}) {
|
|
310
|
+
const { mode, minify, isExporting, baseUrl, reactCompiler, routerRoot, asyncRoutes } = this.instanceMetroOptions;
|
|
311
|
+
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && routerRoot != null && reactCompiler != null && asyncRoutes != null, 'The server must be started before calling getStaticResourcesAsync.');
|
|
312
|
+
const resolvedMainModuleName = mainModuleName ?? './' + (0, _ManifestMiddleware.resolveMainModuleName)(this.projectRoot, {
|
|
303
313
|
platform
|
|
304
314
|
});
|
|
305
315
|
return await this.metroImportAsArtifactsAsync(resolvedMainModuleName, {
|
|
@@ -307,7 +317,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
307
317
|
platform,
|
|
308
318
|
mode,
|
|
309
319
|
minify,
|
|
310
|
-
environment:
|
|
320
|
+
environment: 'client',
|
|
311
321
|
serializerIncludeMaps: includeSourceMaps,
|
|
312
322
|
mainModuleName: resolvedMainModuleName,
|
|
313
323
|
lazy: (0, _metroOptions.shouldEnableAsyncImports)(this.projectRoot),
|
|
@@ -321,16 +331,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
321
331
|
});
|
|
322
332
|
}
|
|
323
333
|
async getStaticPageAsync(pathname) {
|
|
324
|
-
const { mode
|
|
325
|
-
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && reactCompiler != null && routerRoot != null && asyncRoutes != null,
|
|
326
|
-
const platform =
|
|
334
|
+
const { mode, isExporting, clientBoundaries, baseUrl, reactCompiler, routerRoot, asyncRoutes } = this.instanceMetroOptions;
|
|
335
|
+
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && reactCompiler != null && routerRoot != null && asyncRoutes != null, 'The server must be started before calling getStaticPageAsync.');
|
|
336
|
+
const platform = 'web';
|
|
327
337
|
const devBundleUrlPathname = (0, _metroOptions.createBundleUrlPath)({
|
|
328
338
|
splitChunks: isExporting && !_env1.env.EXPO_NO_BUNDLE_SPLITTING,
|
|
329
339
|
platform,
|
|
330
340
|
mode,
|
|
331
|
-
environment:
|
|
341
|
+
environment: 'client',
|
|
332
342
|
reactCompiler,
|
|
333
|
-
mainModuleName: (0,
|
|
343
|
+
mainModuleName: (0, _ManifestMiddleware.resolveMainModuleName)(this.projectRoot, {
|
|
334
344
|
platform
|
|
335
345
|
}),
|
|
336
346
|
lazy: (0, _metroOptions.shouldEnableAsyncImports)(this.projectRoot),
|
|
@@ -342,10 +352,10 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
342
352
|
bytecode: false
|
|
343
353
|
});
|
|
344
354
|
const bundleStaticHtml = async ()=>{
|
|
345
|
-
const { getStaticContent
|
|
355
|
+
const { getStaticContent } = await this.ssrLoadModule('expo-router/node/render.js', {
|
|
346
356
|
// This must always use the legacy rendering resolution (no `react-server`) because it leverages
|
|
347
357
|
// the previous React SSG utilities which aren't available in React 19.
|
|
348
|
-
environment:
|
|
358
|
+
environment: 'node',
|
|
349
359
|
minify: false,
|
|
350
360
|
isExporting,
|
|
351
361
|
platform
|
|
@@ -353,11 +363,11 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
353
363
|
const location = new URL(pathname, this.getDevServerUrlOrAssert());
|
|
354
364
|
return await getStaticContent(location);
|
|
355
365
|
};
|
|
356
|
-
const [{ artifacts: resources
|
|
366
|
+
const [{ artifacts: resources }, staticHtml] = await Promise.all([
|
|
357
367
|
this.getStaticResourcesAsync({
|
|
358
368
|
clientBoundaries: []
|
|
359
369
|
}),
|
|
360
|
-
bundleStaticHtml()
|
|
370
|
+
bundleStaticHtml()
|
|
361
371
|
]);
|
|
362
372
|
const content = (0, _serializeHtml.serializeHtmlWithAssets)({
|
|
363
373
|
isExporting,
|
|
@@ -372,23 +382,9 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
372
382
|
resources
|
|
373
383
|
};
|
|
374
384
|
}
|
|
375
|
-
// Set when the server is started.
|
|
376
|
-
instanceMetroOptions = {};
|
|
377
|
-
ssrLoadModule = async (filePath, specificOptions = {}, extras = {})=>{
|
|
378
|
-
const res = await this.ssrLoadModuleContents(filePath, specificOptions);
|
|
379
|
-
if (// TODO: hot should be a callback function for invalidating the related SSR module.
|
|
380
|
-
extras.hot && this.instanceMetroOptions.isExporting !== true) {
|
|
381
|
-
// Register SSR HMR
|
|
382
|
-
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
383
|
-
const relativePath = _path().default.relative(serverRoot, res.filename);
|
|
384
|
-
const url = new URL(relativePath, this.getDevServerUrlOrAssert());
|
|
385
|
-
this.setupHmr(url);
|
|
386
|
-
}
|
|
387
|
-
return (0, _getStaticRenderFunctions.evalMetroAndWrapFunctions)(this.projectRoot, res.src, res.filename, specificOptions.isExporting ?? this.instanceMetroOptions.isExporting);
|
|
388
|
-
};
|
|
389
385
|
async metroImportAsArtifactsAsync(filePath, specificOptions = {}) {
|
|
390
386
|
const results = await this.ssrLoadModuleContents(filePath, {
|
|
391
|
-
serializerOutput:
|
|
387
|
+
serializerOutput: 'static',
|
|
392
388
|
...specificOptions
|
|
393
389
|
});
|
|
394
390
|
// NOTE: This could potentially need more validation in the future.
|
|
@@ -401,22 +397,22 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
401
397
|
map: results.map
|
|
402
398
|
};
|
|
403
399
|
}
|
|
404
|
-
throw new _errors.CommandError(
|
|
400
|
+
throw new _errors.CommandError('Invalid bundler results: ' + results);
|
|
405
401
|
}
|
|
406
402
|
async metroLoadModuleContents(filePath, specificOptions, extraOptions = {}) {
|
|
407
|
-
const { baseUrl
|
|
408
|
-
(0, _assert().default)(baseUrl != null,
|
|
403
|
+
const { baseUrl } = this.instanceMetroOptions;
|
|
404
|
+
(0, _assert().default)(baseUrl != null, 'The server must be started before calling metroLoadModuleContents.');
|
|
409
405
|
const opts = {
|
|
410
406
|
// TODO: Possibly issues with using an absolute path here...
|
|
411
407
|
// mainModuleName: filePath,
|
|
412
408
|
lazy: false,
|
|
413
409
|
asyncRoutes: false,
|
|
414
410
|
inlineSourceMap: false,
|
|
415
|
-
engine:
|
|
411
|
+
engine: 'hermes',
|
|
416
412
|
minify: false,
|
|
417
413
|
// bytecode: false,
|
|
418
414
|
// Bundle in Node.js mode for SSR.
|
|
419
|
-
environment:
|
|
415
|
+
environment: 'node',
|
|
420
416
|
// platform: 'web',
|
|
421
417
|
// mode: 'development',
|
|
422
418
|
//
|
|
@@ -435,10 +431,10 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
435
431
|
dev: expoBundleOptions.dev ?? true,
|
|
436
432
|
hot: true,
|
|
437
433
|
minify: expoBundleOptions.minify ?? false,
|
|
438
|
-
type:
|
|
439
|
-
unstable_transformProfile: extraOptions.unstable_transformProfile ?? expoBundleOptions.unstable_transformProfile ??
|
|
434
|
+
type: 'module',
|
|
435
|
+
unstable_transformProfile: extraOptions.unstable_transformProfile ?? expoBundleOptions.unstable_transformProfile ?? 'default',
|
|
440
436
|
customTransformOptions: expoBundleOptions.customTransformOptions ?? Object.create(null),
|
|
441
|
-
platform: expoBundleOptions.platform ??
|
|
437
|
+
platform: expoBundleOptions.platform ?? 'web',
|
|
442
438
|
// @ts-expect-error: `runtimeBytecodeVersion` does not exist in `expoBundleOptions` or `TransformInputOptions`
|
|
443
439
|
runtimeBytecodeVersion: expoBundleOptions.runtimeBytecodeVersion
|
|
444
440
|
};
|
|
@@ -475,21 +471,21 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
475
471
|
};
|
|
476
472
|
}
|
|
477
473
|
async ssrLoadModuleContents(filePath, specificOptions = {}) {
|
|
478
|
-
const { baseUrl
|
|
479
|
-
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null,
|
|
474
|
+
const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;
|
|
475
|
+
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null, 'The server must be started before calling ssrLoadModuleContents.');
|
|
480
476
|
const opts = {
|
|
481
477
|
// TODO: Possibly issues with using an absolute path here...
|
|
482
478
|
mainModuleName: (0, _metroOptions.convertPathToModuleSpecifier)(filePath),
|
|
483
479
|
lazy: false,
|
|
484
480
|
asyncRoutes: false,
|
|
485
481
|
inlineSourceMap: false,
|
|
486
|
-
engine:
|
|
482
|
+
engine: 'hermes',
|
|
487
483
|
minify: false,
|
|
488
484
|
bytecode: false,
|
|
489
485
|
// Bundle in Node.js mode for SSR unless RSC is enabled.
|
|
490
|
-
environment: this.isReactServerComponentsEnabled ?
|
|
491
|
-
platform:
|
|
492
|
-
mode:
|
|
486
|
+
environment: this.isReactServerComponentsEnabled ? 'react-server' : 'node',
|
|
487
|
+
platform: 'web',
|
|
488
|
+
mode: 'development',
|
|
493
489
|
//
|
|
494
490
|
...this.instanceMetroOptions,
|
|
495
491
|
// Mostly disable compiler in SSR bundles.
|
|
@@ -500,16 +496,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
500
496
|
...specificOptions
|
|
501
497
|
};
|
|
502
498
|
// https://github.com/facebook/metro/blob/2405f2f6c37a1b641cc379b9c733b1eff0c1c2a1/packages/metro/src/lib/parseOptionsFromUrl.js#L55-L87
|
|
503
|
-
const { filename
|
|
499
|
+
const { filename, bundle, map, ...rest } = await this.metroLoadModuleContents(filePath, opts);
|
|
504
500
|
const scriptContents = wrapBundle(bundle);
|
|
505
501
|
if (map) {
|
|
506
|
-
debug(
|
|
502
|
+
debug('Registering SSR source map for:', filename);
|
|
507
503
|
_getStaticRenderFunctions.cachedSourceMaps.set(filename, {
|
|
508
504
|
url: this.projectRoot,
|
|
509
505
|
map
|
|
510
506
|
});
|
|
511
507
|
} else {
|
|
512
|
-
debug(
|
|
508
|
+
debug('No SSR source map found for:', filename);
|
|
513
509
|
}
|
|
514
510
|
return {
|
|
515
511
|
...rest,
|
|
@@ -518,29 +514,30 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
518
514
|
map
|
|
519
515
|
};
|
|
520
516
|
}
|
|
521
|
-
async nativeExportBundleAsync(options, files, extraOptions = {}) {
|
|
517
|
+
async nativeExportBundleAsync(exp, options, files, extraOptions = {}) {
|
|
522
518
|
if (this.isReactServerComponentsEnabled) {
|
|
523
|
-
return this.singlePageReactServerComponentExportAsync(options, files, extraOptions);
|
|
519
|
+
return this.singlePageReactServerComponentExportAsync(exp, options, files, extraOptions);
|
|
524
520
|
}
|
|
525
521
|
return this.legacySinglePageExportBundleAsync(options, extraOptions);
|
|
526
522
|
}
|
|
527
|
-
async singlePageReactServerComponentExportAsync(options, files, extraOptions = {}) {
|
|
523
|
+
async singlePageReactServerComponentExportAsync(exp, options, files, extraOptions = {}) {
|
|
524
|
+
var _exp_extra;
|
|
528
525
|
const getReactServerReferences = (artifacts)=>{
|
|
529
526
|
// Get the React server action boundaries from the client bundle.
|
|
530
|
-
return unique(artifacts.filter((a)=>a.type ===
|
|
531
|
-
var
|
|
532
|
-
return (
|
|
527
|
+
return unique(artifacts.filter((a)=>a.type === 'js').map((artifact)=>{
|
|
528
|
+
var _artifact_metadata_reactServerReferences;
|
|
529
|
+
return (_artifact_metadata_reactServerReferences = artifact.metadata.reactServerReferences) == null ? void 0 : _artifact_metadata_reactServerReferences.map((ref)=>(0, _createServerComponentsMiddleware.fileURLToFilePath)(ref));
|
|
533
530
|
})// TODO: Segment by module for splitting.
|
|
534
531
|
.flat().filter(Boolean));
|
|
535
532
|
};
|
|
536
533
|
// NOTE(EvanBacon): This will not support any code elimination since it's a static pass.
|
|
537
|
-
let { reactClientReferences: clientBoundaries
|
|
534
|
+
let { reactClientReferences: clientBoundaries, reactServerReferences: serverActionReferencesInServer, cssModules } = await this.rscRenderer.getExpoRouterClientReferencesAsync({
|
|
538
535
|
platform: options.platform,
|
|
539
536
|
domRoot: options.domRoot
|
|
540
537
|
}, files);
|
|
541
538
|
// TODO: The output keys should be in production format or use a lookup manifest.
|
|
542
539
|
const processClientBoundaries = async (reactServerReferences)=>{
|
|
543
|
-
debug(
|
|
540
|
+
debug('Evaluated client boundaries:', clientBoundaries);
|
|
544
541
|
// Run metro bundler and create the JS bundles/source maps.
|
|
545
542
|
const bundle = await this.legacySinglePageExportBundleAsync({
|
|
546
543
|
...options,
|
|
@@ -550,15 +547,15 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
550
547
|
const newReactServerReferences = getReactServerReferences(bundle.artifacts);
|
|
551
548
|
if (!newReactServerReferences) {
|
|
552
549
|
// Possible issue with babel plugin / metro-config.
|
|
553
|
-
throw new Error(
|
|
550
|
+
throw new Error('Static server action references were not returned from the Metro client bundle');
|
|
554
551
|
}
|
|
555
|
-
debug(
|
|
552
|
+
debug('React server action boundaries from client:', newReactServerReferences);
|
|
556
553
|
const allKnownReactServerReferences = unique([
|
|
557
554
|
...reactServerReferences,
|
|
558
|
-
...newReactServerReferences
|
|
555
|
+
...newReactServerReferences
|
|
559
556
|
]);
|
|
560
557
|
// When we export the server actions that were imported from the client, we may need to re-bundle the client with the new client boundaries.
|
|
561
|
-
const { clientBoundaries: nestedClientBoundaries
|
|
558
|
+
const { clientBoundaries: nestedClientBoundaries } = await this.rscRenderer.exportServerActionsAsync({
|
|
562
559
|
platform: options.platform,
|
|
563
560
|
domRoot: options.domRoot,
|
|
564
561
|
entryPoints: allKnownReactServerReferences
|
|
@@ -568,7 +565,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
568
565
|
if (!hasUniqueClientBoundaries) {
|
|
569
566
|
return bundle;
|
|
570
567
|
}
|
|
571
|
-
debug(
|
|
568
|
+
debug('Re-bundling client with nested client boundaries:', nestedClientBoundaries);
|
|
572
569
|
clientBoundaries = unique(clientBoundaries.concat(nestedClientBoundaries));
|
|
573
570
|
// Re-bundle the client with the new client boundaries that only exist in server actions that were imported from the client.
|
|
574
571
|
// Run metro bundler and create the JS bundles/source maps.
|
|
@@ -582,45 +579,47 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
582
579
|
const clientBoundariesAsOpaqueIds = clientBoundaries.map((boundary)=>// NOTE(cedric): relative module specifiers / IDs should always be POSIX formatted
|
|
583
580
|
(0, _filePath.toPosixPath)(_path().default.relative(serverRoot, boundary)));
|
|
584
581
|
const moduleIdToSplitBundle = bundle.artifacts.map((artifact)=>{
|
|
585
|
-
var
|
|
586
|
-
return (artifact == null ? void 0 : (
|
|
582
|
+
var _artifact_metadata;
|
|
583
|
+
return (artifact == null ? void 0 : (_artifact_metadata = artifact.metadata) == null ? void 0 : _artifact_metadata.paths) && Object.values(artifact.metadata.paths);
|
|
587
584
|
}).filter(Boolean).flat().reduce((acc, paths)=>({
|
|
588
585
|
...acc,
|
|
589
586
|
...paths
|
|
590
587
|
}), {});
|
|
591
|
-
debug(
|
|
588
|
+
debug('SSR Manifest:', moduleIdToSplitBundle, clientBoundariesAsOpaqueIds);
|
|
592
589
|
const ssrManifest = new Map();
|
|
593
590
|
if (Object.keys(moduleIdToSplitBundle).length) {
|
|
594
591
|
clientBoundariesAsOpaqueIds.forEach((boundary)=>{
|
|
595
592
|
if (boundary in moduleIdToSplitBundle) {
|
|
596
593
|
ssrManifest.set(boundary, moduleIdToSplitBundle[boundary]);
|
|
597
594
|
} else {
|
|
598
|
-
throw new Error(`Could not find boundary "${boundary}" in the SSR manifest. Available: ${Object.keys(moduleIdToSplitBundle).join(
|
|
595
|
+
throw new Error(`Could not find boundary "${boundary}" in the SSR manifest. Available: ${Object.keys(moduleIdToSplitBundle).join(', ')}`);
|
|
599
596
|
}
|
|
600
597
|
});
|
|
601
598
|
} else {
|
|
602
599
|
// Native apps with bundle splitting disabled.
|
|
603
|
-
debug(
|
|
600
|
+
debug('No split bundles');
|
|
604
601
|
clientBoundariesAsOpaqueIds.forEach((boundary)=>{
|
|
605
602
|
// @ts-expect-error
|
|
606
603
|
ssrManifest.set(boundary, null);
|
|
607
604
|
});
|
|
608
605
|
}
|
|
606
|
+
const routerOptions = (_exp_extra = exp.extra) == null ? void 0 : _exp_extra.router;
|
|
609
607
|
// Export the static RSC files
|
|
610
608
|
await this.rscRenderer.exportRoutesAsync({
|
|
611
609
|
platform: options.platform,
|
|
612
|
-
ssrManifest
|
|
610
|
+
ssrManifest,
|
|
611
|
+
routerOptions
|
|
613
612
|
}, files);
|
|
614
613
|
// Save the SSR manifest so we can perform more replacements in the server renderer and with server actions.
|
|
615
614
|
files.set(`_expo/rsc/${options.platform}/ssr-manifest.js`, {
|
|
616
|
-
targetDomain:
|
|
617
|
-
contents:
|
|
615
|
+
targetDomain: 'server',
|
|
616
|
+
contents: 'module.exports = ' + JSON.stringify(// TODO: Add a less leaky version of this across the framework with just [key, value] (module ID, chunk).
|
|
618
617
|
Object.fromEntries(Array.from(ssrManifest.entries()).map(([key, value])=>[
|
|
619
618
|
_path().default.join(serverRoot, key),
|
|
620
619
|
[
|
|
621
620
|
key,
|
|
622
621
|
value
|
|
623
|
-
]
|
|
622
|
+
]
|
|
624
623
|
])))
|
|
625
624
|
});
|
|
626
625
|
return {
|
|
@@ -629,21 +628,21 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
629
628
|
};
|
|
630
629
|
}
|
|
631
630
|
async legacySinglePageExportBundleAsync(options, extraOptions = {}) {
|
|
632
|
-
const { baseUrl
|
|
633
|
-
(0, _assert().default)(options.mainModuleName != null,
|
|
634
|
-
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null,
|
|
631
|
+
const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;
|
|
632
|
+
(0, _assert().default)(options.mainModuleName != null, 'mainModuleName must be provided in options.');
|
|
633
|
+
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null, 'The server must be started before calling legacySinglePageExportBundleAsync.');
|
|
635
634
|
const opts = {
|
|
636
635
|
...this.instanceMetroOptions,
|
|
637
636
|
baseUrl,
|
|
638
637
|
routerRoot,
|
|
639
638
|
isExporting,
|
|
640
639
|
...options,
|
|
641
|
-
environment:
|
|
642
|
-
serializerOutput:
|
|
640
|
+
environment: 'client',
|
|
641
|
+
serializerOutput: 'static'
|
|
643
642
|
};
|
|
644
643
|
// https://github.com/facebook/metro/blob/2405f2f6c37a1b641cc379b9c733b1eff0c1c2a1/packages/metro/src/lib/parseOptionsFromUrl.js#L55-L87
|
|
645
|
-
if (!opts.mainModuleName.startsWith(
|
|
646
|
-
opts.mainModuleName =
|
|
644
|
+
if (!opts.mainModuleName.startsWith('/') && !_path().default.isAbsolute(opts.mainModuleName)) {
|
|
645
|
+
opts.mainModuleName = './' + opts.mainModuleName;
|
|
647
646
|
}
|
|
648
647
|
const output = await this.metroLoadModuleContents(opts.mainModuleName, opts, extraOptions);
|
|
649
648
|
return {
|
|
@@ -653,12 +652,12 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
653
652
|
}
|
|
654
653
|
async watchEnvironmentVariables() {
|
|
655
654
|
if (!this.instance) {
|
|
656
|
-
throw new Error(
|
|
655
|
+
throw new Error('Cannot observe environment variable changes without a running Metro instance.');
|
|
657
656
|
}
|
|
658
657
|
if (!this.metro) {
|
|
659
658
|
// This can happen when the run command is used and the server is already running in another
|
|
660
659
|
// process.
|
|
661
|
-
debug(
|
|
660
|
+
debug('Skipping Environment Variable observation because Metro is not running (headless).');
|
|
662
661
|
return;
|
|
663
662
|
}
|
|
664
663
|
const envFiles = _env().getFiles(process.env.NODE_ENV).map((fileName)=>_path().default.join(this.projectRoot, fileName));
|
|
@@ -666,44 +665,44 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
666
665
|
metro: this.metro,
|
|
667
666
|
server: this.instance.server
|
|
668
667
|
}, envFiles, ()=>{
|
|
669
|
-
debug(
|
|
668
|
+
debug('Reloading environment variables...');
|
|
670
669
|
// Force reload the environment variables.
|
|
671
670
|
_env().load(this.projectRoot, {
|
|
672
671
|
force: true
|
|
673
672
|
});
|
|
674
673
|
});
|
|
675
674
|
}
|
|
676
|
-
rscRenderer = null;
|
|
677
675
|
async startImplementationAsync(options) {
|
|
678
|
-
var
|
|
676
|
+
var _exp_experiments, _exp_experiments1, _exp_experiments2, _exp_experiments3, _exp_experiments4, _exp_web, _exp_web1, _exp_experiments5, _exp_extra, _exp_web2, _exp_extra_router, _exp_extra1;
|
|
679
677
|
options.port = await this.resolvePortAsync(options);
|
|
680
678
|
this.urlCreator = this.getUrlCreator(options);
|
|
681
679
|
const config = (0, _config().getConfig)(this.projectRoot, {
|
|
682
680
|
skipSDKVersionRequirement: true
|
|
683
681
|
});
|
|
684
|
-
const { exp
|
|
682
|
+
const { exp } = config;
|
|
685
683
|
// NOTE: This will change in the future when it's less experimental, we enable React 19, and turn on more RSC flags by default.
|
|
686
|
-
const isReactServerComponentsEnabled = !!((
|
|
687
|
-
const isReactServerActionsOnlyEnabled = !((
|
|
684
|
+
const isReactServerComponentsEnabled = !!((_exp_experiments = exp.experiments) == null ? void 0 : _exp_experiments.reactServerComponentRoutes) || !!((_exp_experiments1 = exp.experiments) == null ? void 0 : _exp_experiments1.reactServerFunctions);
|
|
685
|
+
const isReactServerActionsOnlyEnabled = !((_exp_experiments2 = exp.experiments) == null ? void 0 : _exp_experiments2.reactServerComponentRoutes) && !!((_exp_experiments3 = exp.experiments) == null ? void 0 : _exp_experiments3.reactServerFunctions);
|
|
688
686
|
this.isReactServerComponentsEnabled = isReactServerComponentsEnabled;
|
|
689
|
-
this.isReactServerRoutesEnabled = !!((
|
|
687
|
+
this.isReactServerRoutesEnabled = !!((_exp_experiments4 = exp.experiments) == null ? void 0 : _exp_experiments4.reactServerComponentRoutes);
|
|
690
688
|
const useServerRendering = [
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
].includes(((
|
|
694
|
-
const hasApiRoutes = isReactServerComponentsEnabled || ((
|
|
689
|
+
'static',
|
|
690
|
+
'server'
|
|
691
|
+
].includes(((_exp_web = exp.web) == null ? void 0 : _exp_web.output) ?? '');
|
|
692
|
+
const hasApiRoutes = isReactServerComponentsEnabled || ((_exp_web1 = exp.web) == null ? void 0 : _exp_web1.output) === 'server';
|
|
695
693
|
const baseUrl = (0, _metroOptions.getBaseUrlFromExpoConfig)(exp);
|
|
696
|
-
const asyncRoutes = (0, _metroOptions.getAsyncRoutesFromExpoConfig)(exp, options.mode ??
|
|
694
|
+
const asyncRoutes = (0, _metroOptions.getAsyncRoutesFromExpoConfig)(exp, options.mode ?? 'development', 'web');
|
|
697
695
|
const routerRoot = (0, _router.getRouterDirectoryModuleIdWithManifest)(this.projectRoot, exp);
|
|
698
|
-
const reactCompiler = !!((
|
|
696
|
+
const reactCompiler = !!((_exp_experiments5 = exp.experiments) == null ? void 0 : _exp_experiments5.reactCompiler);
|
|
699
697
|
const appDir = _path().default.join(this.projectRoot, routerRoot);
|
|
700
|
-
const mode = options.mode ??
|
|
701
|
-
|
|
698
|
+
const mode = options.mode ?? 'development';
|
|
699
|
+
const routerOptions = (_exp_extra = exp.extra) == null ? void 0 : _exp_extra.router;
|
|
700
|
+
if (isReactServerComponentsEnabled && ((_exp_web2 = exp.web) == null ? void 0 : _exp_web2.output) === 'static') {
|
|
702
701
|
throw new _errors.CommandError(`Experimental server component support does not support 'web.output: ${exp.web.output}' yet. Use 'web.output: "server"' during the experimental phase.`);
|
|
703
702
|
}
|
|
704
703
|
// Error early about the window.location polyfill when React Server Components are enabled.
|
|
705
|
-
if (isReactServerComponentsEnabled && (exp == null ? void 0 : (
|
|
706
|
-
const configPath = config.dynamicConfigPath ?? config.staticConfigPath ??
|
|
704
|
+
if (isReactServerComponentsEnabled && (exp == null ? void 0 : (_exp_extra1 = exp.extra) == null ? void 0 : (_exp_extra_router = _exp_extra1.router) == null ? void 0 : _exp_extra_router.origin) === false) {
|
|
705
|
+
const configPath = config.dynamicConfigPath ?? config.staticConfigPath ?? '/app.json';
|
|
707
706
|
const configFileName = _path().default.basename(configPath);
|
|
708
707
|
throw new _errors.CommandError(`The Expo Router "origin" property in the Expo config (${configFileName}) cannot be "false" when React Server Components is enabled. Remove it from the ${configFileName} file and try again.`);
|
|
709
708
|
}
|
|
@@ -724,14 +723,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
724
723
|
};
|
|
725
724
|
// Required for symbolication:
|
|
726
725
|
process.env.EXPO_DEV_SERVER_ORIGIN = `http://localhost:${options.port}`;
|
|
727
|
-
const { metro
|
|
726
|
+
const { metro, hmrServer, server, middleware, messageSocket } = await (0, _instantiateMetro.instantiateMetroAsync)(this, parsedOptions, {
|
|
728
727
|
isExporting: !!options.isExporting,
|
|
729
728
|
exp
|
|
730
729
|
});
|
|
731
730
|
if (!options.isExporting) {
|
|
732
731
|
const manifestMiddleware = await this.getManifestMiddlewareAsync(options);
|
|
733
732
|
// Important that we noop source maps for context modules as soon as possible.
|
|
734
|
-
(0, _mutations.prependMiddleware)(middleware, new
|
|
733
|
+
(0, _mutations.prependMiddleware)(middleware, new _ContextModuleSourceMapsMiddleware.ContextModuleSourceMapsMiddleware().getHandler());
|
|
735
734
|
// We need the manifest handler to be the first middleware to run so our
|
|
736
735
|
// routes take precedence over static files. For example, the manifest is
|
|
737
736
|
// served from '/' and if the user has an index.html file in their project
|
|
@@ -739,41 +738,41 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
739
738
|
// and serve index.html instead of the manifest.
|
|
740
739
|
// https://github.com/expo/expo/issues/13114
|
|
741
740
|
(0, _mutations.prependMiddleware)(middleware, manifestMiddleware.getHandler());
|
|
742
|
-
middleware.use(new
|
|
741
|
+
middleware.use(new _InterstitialPageMiddleware.InterstitialPageMiddleware(this.projectRoot, {
|
|
743
742
|
// TODO: Prevent this from becoming stale.
|
|
744
743
|
scheme: options.location.scheme ?? null
|
|
745
744
|
}).getHandler());
|
|
746
|
-
middleware.use(new
|
|
747
|
-
middleware.use(new
|
|
748
|
-
const deepLinkMiddleware = new
|
|
749
|
-
getLocation: ({ runtime
|
|
750
|
-
if (runtime ===
|
|
751
|
-
var
|
|
752
|
-
return (
|
|
745
|
+
middleware.use(new _ReactDevToolsPageMiddleware.ReactDevToolsPageMiddleware(this.projectRoot).getHandler());
|
|
746
|
+
middleware.use(new _DevToolsPluginMiddleware.DevToolsPluginMiddleware(this.projectRoot, this.devToolsPluginManager).getHandler());
|
|
747
|
+
const deepLinkMiddleware = new _RuntimeRedirectMiddleware.RuntimeRedirectMiddleware(this.projectRoot, {
|
|
748
|
+
getLocation: ({ runtime })=>{
|
|
749
|
+
if (runtime === 'custom') {
|
|
750
|
+
var _this_urlCreator;
|
|
751
|
+
return (_this_urlCreator = this.urlCreator) == null ? void 0 : _this_urlCreator.constructDevClientUrl();
|
|
753
752
|
} else {
|
|
754
|
-
var
|
|
755
|
-
return (
|
|
756
|
-
scheme:
|
|
753
|
+
var _this_urlCreator1;
|
|
754
|
+
return (_this_urlCreator1 = this.urlCreator) == null ? void 0 : _this_urlCreator1.constructUrl({
|
|
755
|
+
scheme: 'exp'
|
|
757
756
|
});
|
|
758
757
|
}
|
|
759
758
|
}
|
|
760
759
|
});
|
|
761
760
|
middleware.use(deepLinkMiddleware.getHandler());
|
|
762
761
|
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
763
|
-
const domComponentRenderer = (0,
|
|
762
|
+
const domComponentRenderer = (0, _DomComponentsMiddleware.createDomComponentsMiddleware)({
|
|
764
763
|
metroRoot: serverRoot,
|
|
765
764
|
projectRoot: this.projectRoot
|
|
766
765
|
}, instanceMetroOptions);
|
|
767
766
|
// Add support for DOM components.
|
|
768
767
|
// TODO: Maybe put behind a flag for now?
|
|
769
768
|
middleware.use(domComponentRenderer);
|
|
770
|
-
middleware.use(new
|
|
769
|
+
middleware.use(new _CreateFileMiddleware.CreateFileMiddleware(this.projectRoot).getHandler());
|
|
771
770
|
// Append support for redirecting unhandled requests to the index.html page on web.
|
|
772
771
|
if (this.isTargetingWeb()) {
|
|
773
772
|
// This MUST be after the manifest middleware so it doesn't have a chance to serve the template `public/index.html`.
|
|
774
|
-
middleware.use(new
|
|
773
|
+
middleware.use(new _ServeStaticMiddleware.ServeStaticMiddleware(this.projectRoot).getHandler());
|
|
775
774
|
// This should come after the static middleware so it doesn't serve the favicon from `public/favicon.ico`.
|
|
776
|
-
middleware.use(new
|
|
775
|
+
middleware.use(new _FaviconMiddleware.FaviconMiddleware(this.projectRoot).getHandler());
|
|
777
776
|
}
|
|
778
777
|
if (useServerRendering || isReactServerComponentsEnabled) {
|
|
779
778
|
(0, _waitForMetroToObserveTypeScriptFile.observeAnyFileChanges)({
|
|
@@ -791,8 +790,8 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
791
790
|
for (const event of events){
|
|
792
791
|
var // If the user did not delete a file that matches the Expo Router API Route convention, then we should warn that
|
|
793
792
|
// API Routes are not enabled in the project.
|
|
794
|
-
|
|
795
|
-
if (((
|
|
793
|
+
_event_metadata;
|
|
794
|
+
if (((_event_metadata = event.metadata) == null ? void 0 : _event_metadata.type) !== 'd' && // Ensure the file is in the project's routes directory to prevent false positives in monorepos.
|
|
796
795
|
event.filePath.startsWith(appDir) && (0, _router.isApiRouteConvention)(event.filePath)) {
|
|
797
796
|
(0, _router.warnInvalidWebOutput)();
|
|
798
797
|
}
|
|
@@ -805,11 +804,12 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
805
804
|
this.bindRSCDevModuleInjectionHandler();
|
|
806
805
|
const rscMiddleware = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
807
806
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
808
|
-
rscPath:
|
|
807
|
+
rscPath: '/_flight',
|
|
809
808
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
810
809
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
811
810
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
812
|
-
createModuleId: metro._createModuleId.bind(metro)
|
|
811
|
+
createModuleId: metro._createModuleId.bind(metro),
|
|
812
|
+
routerOptions
|
|
813
813
|
});
|
|
814
814
|
this.rscRenderer = rscMiddleware;
|
|
815
815
|
middleware.use(rscMiddleware.middleware);
|
|
@@ -819,16 +819,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
819
819
|
if (this.isTargetingWeb()) {
|
|
820
820
|
if (!useServerRendering) {
|
|
821
821
|
// This MUST run last since it's the fallback.
|
|
822
|
-
middleware.use(new
|
|
822
|
+
middleware.use(new _HistoryFallbackMiddleware.HistoryFallbackMiddleware(manifestMiddleware.getHandler().internal).getHandler());
|
|
823
823
|
} else {
|
|
824
|
-
var
|
|
824
|
+
var _config_exp_extra;
|
|
825
825
|
middleware.use((0, _createServerRouteMiddleware.createRouteHandlerMiddleware)(this.projectRoot, {
|
|
826
826
|
appDir,
|
|
827
827
|
routerRoot,
|
|
828
828
|
config,
|
|
829
|
-
...(
|
|
829
|
+
...(_config_exp_extra = config.exp.extra) == null ? void 0 : _config_exp_extra.router,
|
|
830
830
|
bundleApiRoute: (functionFilePath)=>this.ssrImportApiRoute(functionFilePath, {
|
|
831
|
-
platform:
|
|
831
|
+
platform: 'web'
|
|
832
832
|
}),
|
|
833
833
|
getStaticPageAsync: async (pathname)=>{
|
|
834
834
|
// TODO: Add server rendering when RSC is enabled.
|
|
@@ -850,15 +850,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
850
850
|
// If React 19 is enabled, then add RSC middleware to the dev server.
|
|
851
851
|
if (isReactServerComponentsEnabled) {
|
|
852
852
|
this.bindRSCDevModuleInjectionHandler();
|
|
853
|
-
const
|
|
853
|
+
const rscMiddleware = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
854
854
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
855
|
-
rscPath:
|
|
855
|
+
rscPath: '/_flight',
|
|
856
856
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
857
857
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
858
858
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
859
|
-
createModuleId: metro._createModuleId.bind(metro)
|
|
859
|
+
createModuleId: metro._createModuleId.bind(metro),
|
|
860
|
+
routerOptions
|
|
860
861
|
});
|
|
861
|
-
this.rscRenderer =
|
|
862
|
+
this.rscRenderer = rscMiddleware;
|
|
862
863
|
}
|
|
863
864
|
}
|
|
864
865
|
// Extend the close method to ensure that we clean up the local info.
|
|
@@ -881,66 +882,65 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
881
882
|
// The port is the main thing we want to send back.
|
|
882
883
|
port: options.port,
|
|
883
884
|
// localhost isn't always correct.
|
|
884
|
-
host:
|
|
885
|
+
host: 'localhost',
|
|
885
886
|
// http is the only supported protocol on native.
|
|
886
887
|
url: `http://localhost:${options.port}`,
|
|
887
|
-
protocol:
|
|
888
|
+
protocol: 'http'
|
|
888
889
|
},
|
|
889
890
|
middleware,
|
|
890
891
|
messageSocket
|
|
891
892
|
};
|
|
892
893
|
}
|
|
893
|
-
onReloadRscEvent = null;
|
|
894
894
|
async registerSsrHmrAsync(url, onReload) {
|
|
895
895
|
if (!this.hmrServer || this.ssrHmrClients.has(url)) {
|
|
896
896
|
return;
|
|
897
897
|
}
|
|
898
|
-
debug(
|
|
898
|
+
debug('[SSR] Register HMR:', url);
|
|
899
899
|
const sendFn = (message)=>{
|
|
900
900
|
const data = JSON.parse(String(message));
|
|
901
901
|
switch(data.type){
|
|
902
|
-
case
|
|
903
|
-
case
|
|
904
|
-
case
|
|
902
|
+
case 'bundle-registered':
|
|
903
|
+
case 'update-done':
|
|
904
|
+
case 'update-start':
|
|
905
905
|
break;
|
|
906
|
-
case
|
|
906
|
+
case 'update':
|
|
907
907
|
{
|
|
908
908
|
const update = data.body;
|
|
909
|
-
const { isInitialUpdate
|
|
909
|
+
const { isInitialUpdate, added, modified, deleted } = update;
|
|
910
910
|
const hasUpdate = added.length || modified.length || deleted.length;
|
|
911
911
|
// NOTE: We throw away the updates and instead simply send a trigger to the client to re-fetch the server route.
|
|
912
912
|
if (!isInitialUpdate && hasUpdate) {
|
|
913
913
|
// Clear all SSR modules before sending the reload event. This ensures that the next event will rebuild the in-memory state from scratch.
|
|
914
914
|
// @ts-expect-error
|
|
915
|
-
if (typeof globalThis.__c ===
|
|
915
|
+
if (typeof globalThis.__c === 'function') globalThis.__c();
|
|
916
916
|
const allModuleIds = new Set([
|
|
917
917
|
...added,
|
|
918
918
|
...modified
|
|
919
919
|
].map((m)=>m.module[0]).concat(deleted));
|
|
920
920
|
const platforms = unique(Array.from(allModuleIds).map((moduleId)=>{
|
|
921
|
-
var
|
|
922
|
-
if (typeof moduleId !==
|
|
921
|
+
var _moduleId_match;
|
|
922
|
+
if (typeof moduleId !== 'string') {
|
|
923
923
|
return null;
|
|
924
924
|
}
|
|
925
925
|
// Extract platforms from the module IDs.
|
|
926
|
-
return ((
|
|
926
|
+
return ((_moduleId_match = moduleId.match(/[?&]platform=([\w]+)/)) == null ? void 0 : _moduleId_match[1]) ?? null;
|
|
927
927
|
}).filter(Boolean));
|
|
928
928
|
onReload(platforms);
|
|
929
929
|
}
|
|
930
930
|
}
|
|
931
931
|
break;
|
|
932
|
-
case
|
|
933
|
-
var
|
|
932
|
+
case 'error':
|
|
933
|
+
var _data_body;
|
|
934
934
|
// GraphNotFound can mean that we have an issue in metroOptions where the URL doesn't match the object props.
|
|
935
|
-
_log.Log.error(
|
|
936
|
-
if (((
|
|
937
|
-
var
|
|
938
|
-
|
|
939
|
-
((
|
|
935
|
+
_log.Log.error('[SSR] HMR Error: ' + JSON.stringify(data, null, 2));
|
|
936
|
+
if (((_data_body = data.body) == null ? void 0 : _data_body.type) === 'GraphNotFoundError') {
|
|
937
|
+
var // @ts-expect-error
|
|
938
|
+
_this_metro;
|
|
939
|
+
_log.Log.error('Available SSR HMR keys:', ((_this_metro = this.metro) == null ? void 0 : _this_metro._bundler._revisionsByGraphId).keys());
|
|
940
940
|
}
|
|
941
941
|
break;
|
|
942
942
|
default:
|
|
943
|
-
debug(
|
|
943
|
+
debug('Unknown HMR message:', data);
|
|
944
944
|
break;
|
|
945
945
|
}
|
|
946
946
|
};
|
|
@@ -952,14 +952,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
952
952
|
}
|
|
953
953
|
async waitForTypeScriptAsync() {
|
|
954
954
|
if (!this.instance) {
|
|
955
|
-
throw new Error(
|
|
955
|
+
throw new Error('Cannot wait for TypeScript without a running server.');
|
|
956
956
|
}
|
|
957
957
|
return new Promise((resolve)=>{
|
|
958
958
|
if (!this.metro) {
|
|
959
959
|
// This can happen when the run command is used and the server is already running in another
|
|
960
960
|
// process. In this case we can't wait for the TypeScript check to complete because we don't
|
|
961
961
|
// have access to the Metro server.
|
|
962
|
-
debug(
|
|
962
|
+
debug('Skipping TypeScript check because Metro is not running (headless).');
|
|
963
963
|
return resolve(false);
|
|
964
964
|
}
|
|
965
965
|
const off = (0, _metroWatchTypeScriptFiles.metroWatchTypeScriptFiles)({
|
|
@@ -969,13 +969,13 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
969
969
|
tsconfig: true,
|
|
970
970
|
throttle: true,
|
|
971
971
|
eventTypes: [
|
|
972
|
-
|
|
973
|
-
|
|
972
|
+
'change',
|
|
973
|
+
'add'
|
|
974
974
|
],
|
|
975
975
|
callback: async ()=>{
|
|
976
976
|
// Run once, this prevents the TypeScript project prerequisite from running on every file change.
|
|
977
977
|
off();
|
|
978
|
-
const { TypeScriptProjectPrerequisite
|
|
978
|
+
const { TypeScriptProjectPrerequisite } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../../doctor/typescript/TypeScriptProjectPrerequisite.js")));
|
|
979
979
|
try {
|
|
980
980
|
const req = new TypeScriptProjectPrerequisite(this.projectRoot);
|
|
981
981
|
await req.bootstrapAsync();
|
|
@@ -993,41 +993,39 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
993
993
|
});
|
|
994
994
|
}
|
|
995
995
|
async startTypeScriptServices() {
|
|
996
|
-
var
|
|
996
|
+
var _this_instance;
|
|
997
997
|
return (0, _startTypescriptTypeGeneration.startTypescriptTypeGenerationAsync)({
|
|
998
|
-
server: (
|
|
998
|
+
server: (_this_instance = this.instance) == null ? void 0 : _this_instance.server,
|
|
999
999
|
metro: this.metro,
|
|
1000
1000
|
projectRoot: this.projectRoot
|
|
1001
1001
|
});
|
|
1002
1002
|
}
|
|
1003
1003
|
getConfigModuleIds() {
|
|
1004
1004
|
return [
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1005
|
+
'./metro.config.js',
|
|
1006
|
+
'./metro.config.json',
|
|
1007
|
+
'./rn-cli.config.js'
|
|
1008
1008
|
];
|
|
1009
1009
|
}
|
|
1010
|
-
// API Routes
|
|
1011
|
-
pendingRouteOperations = new Map();
|
|
1012
1010
|
// Bundle the API Route with Metro and return the string contents to be evaluated in the server.
|
|
1013
|
-
async bundleApiRoute(filePath, { platform
|
|
1011
|
+
async bundleApiRoute(filePath, { platform }) {
|
|
1014
1012
|
if (this.pendingRouteOperations.has(filePath)) {
|
|
1015
1013
|
return this.pendingRouteOperations.get(filePath);
|
|
1016
1014
|
}
|
|
1017
1015
|
const bundleAsync = async ()=>{
|
|
1018
1016
|
try {
|
|
1019
|
-
debug(
|
|
1017
|
+
debug('Bundle API route:', this.instanceMetroOptions.routerRoot, filePath);
|
|
1020
1018
|
return await this.ssrLoadModuleContents(filePath, {
|
|
1021
1019
|
isExporting: this.instanceMetroOptions.isExporting,
|
|
1022
1020
|
platform
|
|
1023
1021
|
});
|
|
1024
1022
|
} catch (error) {
|
|
1025
|
-
var
|
|
1026
|
-
const appDir = ((
|
|
1023
|
+
var _this_instanceMetroOptions;
|
|
1024
|
+
const appDir = ((_this_instanceMetroOptions = this.instanceMetroOptions) == null ? void 0 : _this_instanceMetroOptions.routerRoot) ? _path().default.join(this.projectRoot, this.instanceMetroOptions.routerRoot) : undefined;
|
|
1027
1025
|
const relativePath = appDir ? _path().default.relative(appDir, filePath) : filePath;
|
|
1028
1026
|
// Expected errors: invalid syntax, missing resolutions.
|
|
1029
1027
|
// Wrap with command error for better error messages.
|
|
1030
|
-
const err = new _errors.CommandError(
|
|
1028
|
+
const err = new _errors.CommandError('API_ROUTE', (0, _chalk().default)`Failed to bundle API Route: {bold ${relativePath}}\n\n` + error.message);
|
|
1031
1029
|
for(const key in error){
|
|
1032
1030
|
// @ts-expect-error
|
|
1033
1031
|
err[key] = error[key];
|
|
@@ -1041,7 +1039,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1041
1039
|
this.pendingRouteOperations.set(filePath, route);
|
|
1042
1040
|
return route;
|
|
1043
1041
|
}
|
|
1044
|
-
async ssrImportApiRoute(filePath, { platform
|
|
1042
|
+
async ssrImportApiRoute(filePath, { platform }) {
|
|
1045
1043
|
// TODO: Cache the evaluated function.
|
|
1046
1044
|
try {
|
|
1047
1045
|
const apiRoute = await this.bundleApiRoute(filePath, {
|
|
@@ -1063,11 +1061,11 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1063
1061
|
return new Response(htmlServerError, {
|
|
1064
1062
|
status: 500,
|
|
1065
1063
|
headers: {
|
|
1066
|
-
|
|
1064
|
+
'Content-Type': 'text/html'
|
|
1067
1065
|
}
|
|
1068
1066
|
});
|
|
1069
1067
|
} catch (internalError) {
|
|
1070
|
-
debug(
|
|
1068
|
+
debug('Failed to generate Metro server error UI for API Route error:', internalError);
|
|
1071
1069
|
throw error;
|
|
1072
1070
|
}
|
|
1073
1071
|
} else {
|
|
@@ -1086,9 +1084,9 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1086
1084
|
}
|
|
1087
1085
|
// NOTE: This can only target a single platform at a time (web).
|
|
1088
1086
|
// used for sending RSC CSS to the root client in development.
|
|
1089
|
-
sendClientModule({ code
|
|
1090
|
-
this.broadcastMessage(
|
|
1091
|
-
name:
|
|
1087
|
+
sendClientModule({ code, id }) {
|
|
1088
|
+
this.broadcastMessage('sendDevCommand', {
|
|
1089
|
+
name: 'module-import',
|
|
1092
1090
|
data: {
|
|
1093
1091
|
code,
|
|
1094
1092
|
id
|
|
@@ -1101,15 +1099,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1101
1099
|
// Send reload command to client from Fast Refresh code.
|
|
1102
1100
|
if (!platforms.length) {
|
|
1103
1101
|
// TODO: When is this called?
|
|
1104
|
-
this.broadcastMessage(
|
|
1105
|
-
name:
|
|
1102
|
+
this.broadcastMessage('sendDevCommand', {
|
|
1103
|
+
name: 'rsc-reload'
|
|
1106
1104
|
});
|
|
1107
1105
|
} else {
|
|
1108
1106
|
for (const platform of platforms){
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
name: "rsc-reload",
|
|
1107
|
+
this.onReloadRscEvent == null ? void 0 : this.onReloadRscEvent.call(this, platform);
|
|
1108
|
+
this.broadcastMessage('sendDevCommand', {
|
|
1109
|
+
name: 'rsc-reload',
|
|
1113
1110
|
platform
|
|
1114
1111
|
});
|
|
1115
1112
|
}
|
|
@@ -1119,19 +1116,19 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1119
1116
|
}
|
|
1120
1117
|
// Direct Metro access
|
|
1121
1118
|
// Emulates the Metro dev server .bundle endpoint without having to go through a server.
|
|
1122
|
-
async _bundleDirectAsync(resolvedEntryFilePath, { transformOptions
|
|
1123
|
-
var
|
|
1124
|
-
(0, _assert().default)(this.metro,
|
|
1119
|
+
async _bundleDirectAsync(resolvedEntryFilePath, { transformOptions, resolverOptions, graphOptions, serializerOptions }) {
|
|
1120
|
+
var _this_metro;
|
|
1121
|
+
(0, _assert().default)(this.metro, 'Metro server must be running to bundle directly.');
|
|
1125
1122
|
const config = this.metro._config;
|
|
1126
1123
|
const buildNumber = this.metro.getNewBuildNumber();
|
|
1127
|
-
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory(
|
|
1124
|
+
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory.call(config, 'BUNDLING_REQUEST', {
|
|
1128
1125
|
key: buildNumber
|
|
1129
1126
|
});
|
|
1130
1127
|
const onProgress = (transformedFileCount, totalFileCount)=>{
|
|
1131
|
-
var
|
|
1132
|
-
(
|
|
1128
|
+
var _this_metro__reporter_update, _this_metro__reporter, _this_metro;
|
|
1129
|
+
(_this_metro = this.metro) == null ? void 0 : (_this_metro__reporter = _this_metro._reporter) == null ? void 0 : (_this_metro__reporter_update = _this_metro__reporter.update) == null ? void 0 : _this_metro__reporter_update.call(_this_metro__reporter, {
|
|
1133
1130
|
buildID: getBuildID(buildNumber),
|
|
1134
|
-
type:
|
|
1131
|
+
type: 'bundle_transform_progressed',
|
|
1135
1132
|
transformedFileCount,
|
|
1136
1133
|
totalFileCount
|
|
1137
1134
|
});
|
|
@@ -1141,13 +1138,13 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1141
1138
|
transformOptions,
|
|
1142
1139
|
resolverOptions
|
|
1143
1140
|
});
|
|
1144
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1141
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('resolvingAndTransformingDependencies_start');
|
|
1145
1142
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1146
1143
|
bool: {
|
|
1147
1144
|
initial_build: revPromise == null
|
|
1148
1145
|
}
|
|
1149
1146
|
});
|
|
1150
|
-
(
|
|
1147
|
+
(_this_metro = this.metro) == null ? void 0 : _this_metro._reporter.update({
|
|
1151
1148
|
buildID: getBuildID(buildNumber),
|
|
1152
1149
|
bundleDetails: {
|
|
1153
1150
|
bundleType: transformOptions.type,
|
|
@@ -1159,15 +1156,15 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1159
1156
|
customTransformOptions: transformOptions.customTransformOptions ?? {}
|
|
1160
1157
|
},
|
|
1161
1158
|
isPrefetch: false,
|
|
1162
|
-
type:
|
|
1159
|
+
type: 'bundle_build_started'
|
|
1163
1160
|
});
|
|
1164
1161
|
try {
|
|
1165
|
-
var
|
|
1162
|
+
var _transformOptions_customTransformOptions;
|
|
1166
1163
|
let delta;
|
|
1167
1164
|
let revision;
|
|
1168
1165
|
// TODO: Some bug in Metro/RSC causes this to break when changing imports in server components.
|
|
1169
1166
|
// We should resolve the bug because it results in ~6x faster bundling to reuse the graph revision.
|
|
1170
|
-
if (((
|
|
1167
|
+
if (((_transformOptions_customTransformOptions = transformOptions.customTransformOptions) == null ? void 0 : _transformOptions_customTransformOptions.environment) === 'react-server') {
|
|
1171
1168
|
const props = await this.metro.getBundler().initializeGraph(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1172
1169
|
// entryFile,
|
|
1173
1170
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
@@ -1178,30 +1175,30 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1178
1175
|
delta = props.delta;
|
|
1179
1176
|
revision = props.revision;
|
|
1180
1177
|
} else {
|
|
1181
|
-
const
|
|
1178
|
+
const props = await (revPromise != null ? this.metro.getBundler().updateGraph(await revPromise, false) : this.metro.getBundler().initializeGraph(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1182
1179
|
// entryFile,
|
|
1183
1180
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
1184
1181
|
onProgress,
|
|
1185
1182
|
shallow: graphOptions.shallow,
|
|
1186
1183
|
lazy: graphOptions.lazy
|
|
1187
1184
|
}));
|
|
1188
|
-
delta =
|
|
1189
|
-
revision =
|
|
1185
|
+
delta = props.delta;
|
|
1186
|
+
revision = props.revision;
|
|
1190
1187
|
}
|
|
1191
1188
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1192
1189
|
int: {
|
|
1193
1190
|
graph_node_count: revision.graph.dependencies.size
|
|
1194
1191
|
}
|
|
1195
1192
|
});
|
|
1196
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1197
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1193
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('resolvingAndTransformingDependencies_end');
|
|
1194
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('serializingBundle_start');
|
|
1198
1195
|
const shouldAddToIgnoreList = this.metro._shouldAddModuleToIgnoreList.bind(this.metro);
|
|
1199
1196
|
const serializer = this.getMetroSerializer();
|
|
1200
1197
|
const bundle = await serializer(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1201
1198
|
// entryFile,
|
|
1202
1199
|
resolvedEntryFilePath, revision.prepend, revision.graph, {
|
|
1203
1200
|
asyncRequireModulePath: await this.metro._resolveRelativePath(config.transformer.asyncRequireModulePath, {
|
|
1204
|
-
relativeTo:
|
|
1201
|
+
relativeTo: 'project',
|
|
1205
1202
|
resolverOptions,
|
|
1206
1203
|
transformOptions
|
|
1207
1204
|
}),
|
|
@@ -1225,45 +1222,45 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1225
1222
|
});
|
|
1226
1223
|
this.metro._reporter.update({
|
|
1227
1224
|
buildID: getBuildID(buildNumber),
|
|
1228
|
-
type:
|
|
1225
|
+
type: 'bundle_build_done'
|
|
1229
1226
|
});
|
|
1230
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1227
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('serializingBundle_end');
|
|
1231
1228
|
let bundleCode = null;
|
|
1232
1229
|
let bundleMap = null;
|
|
1233
1230
|
// @ts-expect-error: If the output is multi-bundle...
|
|
1234
|
-
if (serializerOptions.output ===
|
|
1231
|
+
if (serializerOptions.output === 'static') {
|
|
1235
1232
|
try {
|
|
1236
|
-
var
|
|
1237
|
-
const parsed = typeof bundle ===
|
|
1238
|
-
(0, _assert().default)(
|
|
1233
|
+
var _artifacts_filter_, _artifacts_filter;
|
|
1234
|
+
const parsed = typeof bundle === 'string' ? JSON.parse(bundle) : bundle;
|
|
1235
|
+
(0, _assert().default)('artifacts' in parsed && Array.isArray(parsed.artifacts), 'Expected serializer to return an object with key artifacts to contain an array of serial assets.');
|
|
1239
1236
|
const artifacts = parsed.artifacts;
|
|
1240
1237
|
const assets = parsed.assets;
|
|
1241
|
-
const
|
|
1242
|
-
const
|
|
1238
|
+
const bundleCode = artifacts.filter((asset)=>asset.type === 'js')[0];
|
|
1239
|
+
const bundleMap = ((_artifacts_filter = artifacts.filter((asset)=>asset.type === 'map')) == null ? void 0 : (_artifacts_filter_ = _artifacts_filter[0]) == null ? void 0 : _artifacts_filter_.source) ?? '';
|
|
1243
1240
|
return {
|
|
1244
1241
|
numModifiedFiles: delta.reset ? delta.added.size + revision.prepend.length : delta.added.size + delta.modified.size + delta.deleted.size,
|
|
1245
1242
|
lastModifiedDate: revision.date,
|
|
1246
1243
|
nextRevId: revision.id,
|
|
1247
|
-
bundle:
|
|
1248
|
-
map:
|
|
1244
|
+
bundle: bundleCode.source,
|
|
1245
|
+
map: bundleMap,
|
|
1249
1246
|
artifacts,
|
|
1250
1247
|
assets
|
|
1251
1248
|
};
|
|
1252
1249
|
} catch (error) {
|
|
1253
|
-
throw new Error(
|
|
1250
|
+
throw new Error('Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: ' + error.message);
|
|
1254
1251
|
}
|
|
1255
1252
|
}
|
|
1256
|
-
if (typeof bundle ===
|
|
1253
|
+
if (typeof bundle === 'string') {
|
|
1257
1254
|
bundleCode = bundle;
|
|
1258
1255
|
// Create the source map in a second pass...
|
|
1259
|
-
let { prepend
|
|
1256
|
+
let { prepend, graph } = revision;
|
|
1260
1257
|
if (serializerOptions.modulesOnly) {
|
|
1261
1258
|
prepend = [];
|
|
1262
1259
|
}
|
|
1263
1260
|
bundleMap = await sourceMapStringAsync([
|
|
1264
1261
|
//
|
|
1265
1262
|
...prepend,
|
|
1266
|
-
...this.metro._getSortedModules(graph)
|
|
1263
|
+
...this.metro._getSortedModules(graph)
|
|
1267
1264
|
], {
|
|
1268
1265
|
excludeSource: serializerOptions.excludeSource,
|
|
1269
1266
|
processModuleFilter: config.serializer.processModuleFilter,
|
|
@@ -1280,23 +1277,23 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1280
1277
|
bundle: bundleCode,
|
|
1281
1278
|
map: bundleMap
|
|
1282
1279
|
};
|
|
1283
|
-
} catch (
|
|
1280
|
+
} catch (error) {
|
|
1284
1281
|
// Mark the error so we know how to format and return it later.
|
|
1285
1282
|
// @ts-expect-error
|
|
1286
|
-
|
|
1283
|
+
error[_metroErrorInterface.IS_METRO_BUNDLE_ERROR_SYMBOL] = true;
|
|
1287
1284
|
this.metro._reporter.update({
|
|
1288
1285
|
buildID: getBuildID(buildNumber),
|
|
1289
|
-
type:
|
|
1286
|
+
type: 'bundle_build_failed'
|
|
1290
1287
|
});
|
|
1291
|
-
throw
|
|
1288
|
+
throw error;
|
|
1292
1289
|
}
|
|
1293
1290
|
}
|
|
1294
1291
|
getMetroSerializer() {
|
|
1295
|
-
var
|
|
1296
|
-
return ((
|
|
1292
|
+
var _this_metro__config, _this_metro;
|
|
1293
|
+
return ((_this_metro = this.metro) == null ? void 0 : (_this_metro__config = _this_metro._config) == null ? void 0 : _this_metro__config.serializer.customSerializer) || ((entryPoint, preModules, graph, options)=>(0, _bundleToString().default)((0, _baseJSBundle().default)(entryPoint, preModules, graph, options)).code);
|
|
1297
1294
|
}
|
|
1298
|
-
getMetroRevision(resolvedEntryFilePath, { graphOptions
|
|
1299
|
-
(0, _assert().default)(this.metro,
|
|
1295
|
+
getMetroRevision(resolvedEntryFilePath, { graphOptions, transformOptions, resolverOptions }) {
|
|
1296
|
+
(0, _assert().default)(this.metro, 'Metro server must be running to bundle directly.');
|
|
1300
1297
|
const config = this.metro._config;
|
|
1301
1298
|
const graphId = (0, _getGraphId().default)(resolvedEntryFilePath, transformOptions, {
|
|
1302
1299
|
unstable_allowRequireContext: config.transformer.unstable_allowRequireContext,
|
|
@@ -1306,14 +1303,30 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1306
1303
|
});
|
|
1307
1304
|
return this.metro.getBundler().getRevisionByGraphId(graphId);
|
|
1308
1305
|
}
|
|
1309
|
-
async resolveRelativePathAsync(moduleId, { resolverOptions
|
|
1310
|
-
(0, _assert().default)(this.metro,
|
|
1306
|
+
async resolveRelativePathAsync(moduleId, { resolverOptions, transformOptions }) {
|
|
1307
|
+
(0, _assert().default)(this.metro, 'cannot invoke resolveRelativePathAsync without metro instance');
|
|
1311
1308
|
return await this.metro._resolveRelativePath((0, _metroOptions.convertPathToModuleSpecifier)(moduleId), {
|
|
1312
|
-
relativeTo:
|
|
1309
|
+
relativeTo: 'server',
|
|
1313
1310
|
resolverOptions,
|
|
1314
1311
|
transformOptions
|
|
1315
1312
|
});
|
|
1316
1313
|
}
|
|
1314
|
+
constructor(...args){
|
|
1315
|
+
super(...args), this.metro = null, this.hmrServer = null, this.ssrHmrClients = new Map(), // Set when the server is started.
|
|
1316
|
+
this.instanceMetroOptions = {}, this.ssrLoadModule = async (filePath, specificOptions = {}, extras = {})=>{
|
|
1317
|
+
const res = await this.ssrLoadModuleContents(filePath, specificOptions);
|
|
1318
|
+
if (// TODO: hot should be a callback function for invalidating the related SSR module.
|
|
1319
|
+
extras.hot && this.instanceMetroOptions.isExporting !== true) {
|
|
1320
|
+
// Register SSR HMR
|
|
1321
|
+
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
1322
|
+
const relativePath = _path().default.relative(serverRoot, res.filename);
|
|
1323
|
+
const url = new URL(relativePath, this.getDevServerUrlOrAssert());
|
|
1324
|
+
this.setupHmr(url);
|
|
1325
|
+
}
|
|
1326
|
+
return (0, _getStaticRenderFunctions.evalMetroAndWrapFunctions)(this.projectRoot, res.src, res.filename, specificOptions.isExporting ?? this.instanceMetroOptions.isExporting);
|
|
1327
|
+
}, this.rscRenderer = null, this.onReloadRscEvent = null, // API Routes
|
|
1328
|
+
this.pendingRouteOperations = new Map();
|
|
1329
|
+
}
|
|
1317
1330
|
}
|
|
1318
1331
|
function getBuildID(buildNumber) {
|
|
1319
1332
|
return buildNumber.toString(36);
|
|
@@ -1322,7 +1335,7 @@ function wrapBundle(str) {
|
|
|
1322
1335
|
// Skip the metro runtime so debugging is a bit easier.
|
|
1323
1336
|
// Replace the __r() call with an export statement.
|
|
1324
1337
|
// Use gm to apply to the last require line. This is needed when the bundle has side-effects.
|
|
1325
|
-
return str.replace(/^(__r\(.*\);)$/gm,
|
|
1338
|
+
return str.replace(/^(__r\(.*\);)$/gm, 'module.exports = $1');
|
|
1326
1339
|
}
|
|
1327
1340
|
async function sourceMapStringAsync(modules, options) {
|
|
1328
1341
|
return (await (0, _sourceMapGenerator().sourceMapGeneratorNonBlocking)(modules, options)).toString(undefined, {
|