@expo/cli 1.0.0-canary-20250306-d9d3e02 → 1.0.0-canary-20250331-817737a
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 +58 -36
- 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 +71 -61
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +57 -55
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js +44 -40
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +44 -36
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +39 -27
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +76 -68
- 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 +80 -72
- 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 +70 -33
- 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 +6 -4
- 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 +269 -271
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +63 -56
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +39 -33
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoFallbackResolver.js +13 -11
- package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +47 -40
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +31 -31
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +96 -92
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +31 -29
- 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 -11
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -5
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +8 -6
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -5
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +14 -12
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +14 -10
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +6 -4
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/debugging/types.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createEventSocket.js +18 -16
- package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +23 -21
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +23 -21
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +4 -2
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +4 -2
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js +8 -4
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/externals.js +33 -25
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +16 -12
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +11 -9
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +24 -20
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +87 -84
- 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 +161 -147
- 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 +19 -14
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +4 -2
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +34 -31
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +64 -56
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +23 -19
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +20 -19
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -9
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +17 -11
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
- package/build/src/start/server/middleware/inspector/CdpClient.js +12 -10
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +35 -27
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +21 -19
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +6 -2
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +122 -97
- 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 +16 -17
|
@@ -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,25 +250,25 @@ 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_router, _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 = _exp_extra.router) == null ? void 0 : _exp_extra_router.platformRoutes,
|
|
258
259
|
asJson: true,
|
|
259
260
|
appDir
|
|
260
261
|
});
|
|
261
262
|
if (!manifest) {
|
|
262
|
-
throw new _errors.CommandError(
|
|
263
|
+
throw new _errors.CommandError('EXPO_ROUTER_SERVER_MANIFEST', 'Unexpected error: server manifest could not be fetched.');
|
|
263
264
|
}
|
|
264
265
|
return manifest;
|
|
265
266
|
}
|
|
266
267
|
async getServerManifestAsync() {
|
|
267
268
|
// NOTE: This could probably be folded back into `renderStaticContent` when expo-asset and font support RSC.
|
|
268
|
-
const { getBuildTimeServerManifestAsync
|
|
269
|
+
const { getBuildTimeServerManifestAsync, getManifest } = await this.ssrLoadModule('expo-router/build/static/getServerManifest.js', {
|
|
269
270
|
// Only use react-server environment when the routes are using react-server rendering by default.
|
|
270
|
-
environment: this.isReactServerRoutesEnabled ?
|
|
271
|
+
environment: this.isReactServerRoutesEnabled ? 'react-server' : 'node'
|
|
271
272
|
});
|
|
272
273
|
return {
|
|
273
274
|
serverManifest: await getBuildTimeServerManifestAsync(),
|
|
@@ -275,20 +276,20 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
275
276
|
};
|
|
276
277
|
}
|
|
277
278
|
async getStaticRenderFunctionAsync() {
|
|
278
|
-
var
|
|
279
|
+
var _exp_extra;
|
|
279
280
|
const url = this.getDevServerUrlOrAssert();
|
|
280
|
-
const { getStaticContent
|
|
281
|
+
const { getStaticContent, getManifest, getBuildTimeServerManifestAsync } = await this.ssrLoadModule('expo-router/node/render.js', {
|
|
281
282
|
// This must always use the legacy rendering resolution (no `react-server`) because it leverages
|
|
282
283
|
// the previous React SSG utilities which aren't available in React 19.
|
|
283
|
-
environment:
|
|
284
|
+
environment: 'node'
|
|
284
285
|
});
|
|
285
|
-
const { exp
|
|
286
|
+
const { exp } = (0, _config().getConfig)(this.projectRoot);
|
|
286
287
|
return {
|
|
287
288
|
serverManifest: await getBuildTimeServerManifestAsync(),
|
|
288
289
|
// Get routes from Expo Router.
|
|
289
290
|
manifest: await getManifest({
|
|
290
291
|
preserveApiRoutes: false,
|
|
291
|
-
...(
|
|
292
|
+
...(_exp_extra = exp.extra) == null ? void 0 : _exp_extra.router
|
|
292
293
|
}),
|
|
293
294
|
// Get route generating function
|
|
294
295
|
async renderAsync (path) {
|
|
@@ -296,10 +297,10 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
296
297
|
}
|
|
297
298
|
};
|
|
298
299
|
}
|
|
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 ??
|
|
300
|
+
async getStaticResourcesAsync({ includeSourceMaps, mainModuleName, clientBoundaries = this.instanceMetroOptions.clientBoundaries ?? [], platform = 'web' } = {}) {
|
|
301
|
+
const { mode, minify, isExporting, baseUrl, reactCompiler, routerRoot, asyncRoutes } = this.instanceMetroOptions;
|
|
302
|
+
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && routerRoot != null && reactCompiler != null && asyncRoutes != null, 'The server must be started before calling getStaticResourcesAsync.');
|
|
303
|
+
const resolvedMainModuleName = mainModuleName ?? './' + (0, _ManifestMiddleware.resolveMainModuleName)(this.projectRoot, {
|
|
303
304
|
platform
|
|
304
305
|
});
|
|
305
306
|
return await this.metroImportAsArtifactsAsync(resolvedMainModuleName, {
|
|
@@ -307,7 +308,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
307
308
|
platform,
|
|
308
309
|
mode,
|
|
309
310
|
minify,
|
|
310
|
-
environment:
|
|
311
|
+
environment: 'client',
|
|
311
312
|
serializerIncludeMaps: includeSourceMaps,
|
|
312
313
|
mainModuleName: resolvedMainModuleName,
|
|
313
314
|
lazy: (0, _metroOptions.shouldEnableAsyncImports)(this.projectRoot),
|
|
@@ -321,16 +322,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
321
322
|
});
|
|
322
323
|
}
|
|
323
324
|
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 =
|
|
325
|
+
const { mode, isExporting, clientBoundaries, baseUrl, reactCompiler, routerRoot, asyncRoutes } = this.instanceMetroOptions;
|
|
326
|
+
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && reactCompiler != null && routerRoot != null && asyncRoutes != null, 'The server must be started before calling getStaticPageAsync.');
|
|
327
|
+
const platform = 'web';
|
|
327
328
|
const devBundleUrlPathname = (0, _metroOptions.createBundleUrlPath)({
|
|
328
329
|
splitChunks: isExporting && !_env1.env.EXPO_NO_BUNDLE_SPLITTING,
|
|
329
330
|
platform,
|
|
330
331
|
mode,
|
|
331
|
-
environment:
|
|
332
|
+
environment: 'client',
|
|
332
333
|
reactCompiler,
|
|
333
|
-
mainModuleName: (0,
|
|
334
|
+
mainModuleName: (0, _ManifestMiddleware.resolveMainModuleName)(this.projectRoot, {
|
|
334
335
|
platform
|
|
335
336
|
}),
|
|
336
337
|
lazy: (0, _metroOptions.shouldEnableAsyncImports)(this.projectRoot),
|
|
@@ -342,10 +343,10 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
342
343
|
bytecode: false
|
|
343
344
|
});
|
|
344
345
|
const bundleStaticHtml = async ()=>{
|
|
345
|
-
const { getStaticContent
|
|
346
|
+
const { getStaticContent } = await this.ssrLoadModule('expo-router/node/render.js', {
|
|
346
347
|
// This must always use the legacy rendering resolution (no `react-server`) because it leverages
|
|
347
348
|
// the previous React SSG utilities which aren't available in React 19.
|
|
348
|
-
environment:
|
|
349
|
+
environment: 'node',
|
|
349
350
|
minify: false,
|
|
350
351
|
isExporting,
|
|
351
352
|
platform
|
|
@@ -353,11 +354,11 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
353
354
|
const location = new URL(pathname, this.getDevServerUrlOrAssert());
|
|
354
355
|
return await getStaticContent(location);
|
|
355
356
|
};
|
|
356
|
-
const [{ artifacts: resources
|
|
357
|
+
const [{ artifacts: resources }, staticHtml] = await Promise.all([
|
|
357
358
|
this.getStaticResourcesAsync({
|
|
358
359
|
clientBoundaries: []
|
|
359
360
|
}),
|
|
360
|
-
bundleStaticHtml()
|
|
361
|
+
bundleStaticHtml()
|
|
361
362
|
]);
|
|
362
363
|
const content = (0, _serializeHtml.serializeHtmlWithAssets)({
|
|
363
364
|
isExporting,
|
|
@@ -372,23 +373,9 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
372
373
|
resources
|
|
373
374
|
};
|
|
374
375
|
}
|
|
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
376
|
async metroImportAsArtifactsAsync(filePath, specificOptions = {}) {
|
|
390
377
|
const results = await this.ssrLoadModuleContents(filePath, {
|
|
391
|
-
serializerOutput:
|
|
378
|
+
serializerOutput: 'static',
|
|
392
379
|
...specificOptions
|
|
393
380
|
});
|
|
394
381
|
// NOTE: This could potentially need more validation in the future.
|
|
@@ -401,22 +388,22 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
401
388
|
map: results.map
|
|
402
389
|
};
|
|
403
390
|
}
|
|
404
|
-
throw new _errors.CommandError(
|
|
391
|
+
throw new _errors.CommandError('Invalid bundler results: ' + results);
|
|
405
392
|
}
|
|
406
393
|
async metroLoadModuleContents(filePath, specificOptions, extraOptions = {}) {
|
|
407
|
-
const { baseUrl
|
|
408
|
-
(0, _assert().default)(baseUrl != null,
|
|
394
|
+
const { baseUrl } = this.instanceMetroOptions;
|
|
395
|
+
(0, _assert().default)(baseUrl != null, 'The server must be started before calling metroLoadModuleContents.');
|
|
409
396
|
const opts = {
|
|
410
397
|
// TODO: Possibly issues with using an absolute path here...
|
|
411
398
|
// mainModuleName: filePath,
|
|
412
399
|
lazy: false,
|
|
413
400
|
asyncRoutes: false,
|
|
414
401
|
inlineSourceMap: false,
|
|
415
|
-
engine:
|
|
402
|
+
engine: 'hermes',
|
|
416
403
|
minify: false,
|
|
417
404
|
// bytecode: false,
|
|
418
405
|
// Bundle in Node.js mode for SSR.
|
|
419
|
-
environment:
|
|
406
|
+
environment: 'node',
|
|
420
407
|
// platform: 'web',
|
|
421
408
|
// mode: 'development',
|
|
422
409
|
//
|
|
@@ -435,10 +422,10 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
435
422
|
dev: expoBundleOptions.dev ?? true,
|
|
436
423
|
hot: true,
|
|
437
424
|
minify: expoBundleOptions.minify ?? false,
|
|
438
|
-
type:
|
|
439
|
-
unstable_transformProfile: extraOptions.unstable_transformProfile ?? expoBundleOptions.unstable_transformProfile ??
|
|
425
|
+
type: 'module',
|
|
426
|
+
unstable_transformProfile: extraOptions.unstable_transformProfile ?? expoBundleOptions.unstable_transformProfile ?? 'default',
|
|
440
427
|
customTransformOptions: expoBundleOptions.customTransformOptions ?? Object.create(null),
|
|
441
|
-
platform: expoBundleOptions.platform ??
|
|
428
|
+
platform: expoBundleOptions.platform ?? 'web',
|
|
442
429
|
// @ts-expect-error: `runtimeBytecodeVersion` does not exist in `expoBundleOptions` or `TransformInputOptions`
|
|
443
430
|
runtimeBytecodeVersion: expoBundleOptions.runtimeBytecodeVersion
|
|
444
431
|
};
|
|
@@ -475,21 +462,21 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
475
462
|
};
|
|
476
463
|
}
|
|
477
464
|
async ssrLoadModuleContents(filePath, specificOptions = {}) {
|
|
478
|
-
const { baseUrl
|
|
479
|
-
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null,
|
|
465
|
+
const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;
|
|
466
|
+
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null, 'The server must be started before calling ssrLoadModuleContents.');
|
|
480
467
|
const opts = {
|
|
481
468
|
// TODO: Possibly issues with using an absolute path here...
|
|
482
469
|
mainModuleName: (0, _metroOptions.convertPathToModuleSpecifier)(filePath),
|
|
483
470
|
lazy: false,
|
|
484
471
|
asyncRoutes: false,
|
|
485
472
|
inlineSourceMap: false,
|
|
486
|
-
engine:
|
|
473
|
+
engine: 'hermes',
|
|
487
474
|
minify: false,
|
|
488
475
|
bytecode: false,
|
|
489
476
|
// Bundle in Node.js mode for SSR unless RSC is enabled.
|
|
490
|
-
environment: this.isReactServerComponentsEnabled ?
|
|
491
|
-
platform:
|
|
492
|
-
mode:
|
|
477
|
+
environment: this.isReactServerComponentsEnabled ? 'react-server' : 'node',
|
|
478
|
+
platform: 'web',
|
|
479
|
+
mode: 'development',
|
|
493
480
|
//
|
|
494
481
|
...this.instanceMetroOptions,
|
|
495
482
|
// Mostly disable compiler in SSR bundles.
|
|
@@ -500,16 +487,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
500
487
|
...specificOptions
|
|
501
488
|
};
|
|
502
489
|
// https://github.com/facebook/metro/blob/2405f2f6c37a1b641cc379b9c733b1eff0c1c2a1/packages/metro/src/lib/parseOptionsFromUrl.js#L55-L87
|
|
503
|
-
const { filename
|
|
490
|
+
const { filename, bundle, map, ...rest } = await this.metroLoadModuleContents(filePath, opts);
|
|
504
491
|
const scriptContents = wrapBundle(bundle);
|
|
505
492
|
if (map) {
|
|
506
|
-
debug(
|
|
493
|
+
debug('Registering SSR source map for:', filename);
|
|
507
494
|
_getStaticRenderFunctions.cachedSourceMaps.set(filename, {
|
|
508
495
|
url: this.projectRoot,
|
|
509
496
|
map
|
|
510
497
|
});
|
|
511
498
|
} else {
|
|
512
|
-
debug(
|
|
499
|
+
debug('No SSR source map found for:', filename);
|
|
513
500
|
}
|
|
514
501
|
return {
|
|
515
502
|
...rest,
|
|
@@ -527,20 +514,20 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
527
514
|
async singlePageReactServerComponentExportAsync(options, files, extraOptions = {}) {
|
|
528
515
|
const getReactServerReferences = (artifacts)=>{
|
|
529
516
|
// Get the React server action boundaries from the client bundle.
|
|
530
|
-
return unique(artifacts.filter((a)=>a.type ===
|
|
531
|
-
var
|
|
532
|
-
return (
|
|
517
|
+
return unique(artifacts.filter((a)=>a.type === 'js').map((artifact)=>{
|
|
518
|
+
var _artifact_metadata_reactServerReferences;
|
|
519
|
+
return (_artifact_metadata_reactServerReferences = artifact.metadata.reactServerReferences) == null ? void 0 : _artifact_metadata_reactServerReferences.map((ref)=>(0, _createServerComponentsMiddleware.fileURLToFilePath)(ref));
|
|
533
520
|
})// TODO: Segment by module for splitting.
|
|
534
521
|
.flat().filter(Boolean));
|
|
535
522
|
};
|
|
536
523
|
// NOTE(EvanBacon): This will not support any code elimination since it's a static pass.
|
|
537
|
-
let { reactClientReferences: clientBoundaries
|
|
524
|
+
let { reactClientReferences: clientBoundaries, reactServerReferences: serverActionReferencesInServer, cssModules } = await this.rscRenderer.getExpoRouterClientReferencesAsync({
|
|
538
525
|
platform: options.platform,
|
|
539
526
|
domRoot: options.domRoot
|
|
540
527
|
}, files);
|
|
541
528
|
// TODO: The output keys should be in production format or use a lookup manifest.
|
|
542
529
|
const processClientBoundaries = async (reactServerReferences)=>{
|
|
543
|
-
debug(
|
|
530
|
+
debug('Evaluated client boundaries:', clientBoundaries);
|
|
544
531
|
// Run metro bundler and create the JS bundles/source maps.
|
|
545
532
|
const bundle = await this.legacySinglePageExportBundleAsync({
|
|
546
533
|
...options,
|
|
@@ -550,15 +537,15 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
550
537
|
const newReactServerReferences = getReactServerReferences(bundle.artifacts);
|
|
551
538
|
if (!newReactServerReferences) {
|
|
552
539
|
// Possible issue with babel plugin / metro-config.
|
|
553
|
-
throw new Error(
|
|
540
|
+
throw new Error('Static server action references were not returned from the Metro client bundle');
|
|
554
541
|
}
|
|
555
|
-
debug(
|
|
542
|
+
debug('React server action boundaries from client:', newReactServerReferences);
|
|
556
543
|
const allKnownReactServerReferences = unique([
|
|
557
544
|
...reactServerReferences,
|
|
558
|
-
...newReactServerReferences
|
|
545
|
+
...newReactServerReferences
|
|
559
546
|
]);
|
|
560
547
|
// 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
|
|
548
|
+
const { clientBoundaries: nestedClientBoundaries } = await this.rscRenderer.exportServerActionsAsync({
|
|
562
549
|
platform: options.platform,
|
|
563
550
|
domRoot: options.domRoot,
|
|
564
551
|
entryPoints: allKnownReactServerReferences
|
|
@@ -568,7 +555,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
568
555
|
if (!hasUniqueClientBoundaries) {
|
|
569
556
|
return bundle;
|
|
570
557
|
}
|
|
571
|
-
debug(
|
|
558
|
+
debug('Re-bundling client with nested client boundaries:', nestedClientBoundaries);
|
|
572
559
|
clientBoundaries = unique(clientBoundaries.concat(nestedClientBoundaries));
|
|
573
560
|
// Re-bundle the client with the new client boundaries that only exist in server actions that were imported from the client.
|
|
574
561
|
// Run metro bundler and create the JS bundles/source maps.
|
|
@@ -582,25 +569,25 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
582
569
|
const clientBoundariesAsOpaqueIds = clientBoundaries.map((boundary)=>// NOTE(cedric): relative module specifiers / IDs should always be POSIX formatted
|
|
583
570
|
(0, _filePath.toPosixPath)(_path().default.relative(serverRoot, boundary)));
|
|
584
571
|
const moduleIdToSplitBundle = bundle.artifacts.map((artifact)=>{
|
|
585
|
-
var
|
|
586
|
-
return (artifact == null ? void 0 : (
|
|
572
|
+
var _artifact_metadata;
|
|
573
|
+
return (artifact == null ? void 0 : (_artifact_metadata = artifact.metadata) == null ? void 0 : _artifact_metadata.paths) && Object.values(artifact.metadata.paths);
|
|
587
574
|
}).filter(Boolean).flat().reduce((acc, paths)=>({
|
|
588
575
|
...acc,
|
|
589
576
|
...paths
|
|
590
577
|
}), {});
|
|
591
|
-
debug(
|
|
578
|
+
debug('SSR Manifest:', moduleIdToSplitBundle, clientBoundariesAsOpaqueIds);
|
|
592
579
|
const ssrManifest = new Map();
|
|
593
580
|
if (Object.keys(moduleIdToSplitBundle).length) {
|
|
594
581
|
clientBoundariesAsOpaqueIds.forEach((boundary)=>{
|
|
595
582
|
if (boundary in moduleIdToSplitBundle) {
|
|
596
583
|
ssrManifest.set(boundary, moduleIdToSplitBundle[boundary]);
|
|
597
584
|
} else {
|
|
598
|
-
throw new Error(`Could not find boundary "${boundary}" in the SSR manifest. Available: ${Object.keys(moduleIdToSplitBundle).join(
|
|
585
|
+
throw new Error(`Could not find boundary "${boundary}" in the SSR manifest. Available: ${Object.keys(moduleIdToSplitBundle).join(', ')}`);
|
|
599
586
|
}
|
|
600
587
|
});
|
|
601
588
|
} else {
|
|
602
589
|
// Native apps with bundle splitting disabled.
|
|
603
|
-
debug(
|
|
590
|
+
debug('No split bundles');
|
|
604
591
|
clientBoundariesAsOpaqueIds.forEach((boundary)=>{
|
|
605
592
|
// @ts-expect-error
|
|
606
593
|
ssrManifest.set(boundary, null);
|
|
@@ -613,14 +600,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
613
600
|
}, files);
|
|
614
601
|
// Save the SSR manifest so we can perform more replacements in the server renderer and with server actions.
|
|
615
602
|
files.set(`_expo/rsc/${options.platform}/ssr-manifest.js`, {
|
|
616
|
-
targetDomain:
|
|
617
|
-
contents:
|
|
603
|
+
targetDomain: 'server',
|
|
604
|
+
contents: 'module.exports = ' + JSON.stringify(// TODO: Add a less leaky version of this across the framework with just [key, value] (module ID, chunk).
|
|
618
605
|
Object.fromEntries(Array.from(ssrManifest.entries()).map(([key, value])=>[
|
|
619
606
|
_path().default.join(serverRoot, key),
|
|
620
607
|
[
|
|
621
608
|
key,
|
|
622
609
|
value
|
|
623
|
-
]
|
|
610
|
+
]
|
|
624
611
|
])))
|
|
625
612
|
});
|
|
626
613
|
return {
|
|
@@ -629,21 +616,21 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
629
616
|
};
|
|
630
617
|
}
|
|
631
618
|
async legacySinglePageExportBundleAsync(options, extraOptions = {}) {
|
|
632
|
-
const { baseUrl
|
|
633
|
-
(0, _assert().default)(options.mainModuleName != null,
|
|
634
|
-
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null,
|
|
619
|
+
const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;
|
|
620
|
+
(0, _assert().default)(options.mainModuleName != null, 'mainModuleName must be provided in options.');
|
|
621
|
+
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null, 'The server must be started before calling legacySinglePageExportBundleAsync.');
|
|
635
622
|
const opts = {
|
|
636
623
|
...this.instanceMetroOptions,
|
|
637
624
|
baseUrl,
|
|
638
625
|
routerRoot,
|
|
639
626
|
isExporting,
|
|
640
627
|
...options,
|
|
641
|
-
environment:
|
|
642
|
-
serializerOutput:
|
|
628
|
+
environment: 'client',
|
|
629
|
+
serializerOutput: 'static'
|
|
643
630
|
};
|
|
644
631
|
// https://github.com/facebook/metro/blob/2405f2f6c37a1b641cc379b9c733b1eff0c1c2a1/packages/metro/src/lib/parseOptionsFromUrl.js#L55-L87
|
|
645
|
-
if (!opts.mainModuleName.startsWith(
|
|
646
|
-
opts.mainModuleName =
|
|
632
|
+
if (!opts.mainModuleName.startsWith('/') && !_path().default.isAbsolute(opts.mainModuleName)) {
|
|
633
|
+
opts.mainModuleName = './' + opts.mainModuleName;
|
|
647
634
|
}
|
|
648
635
|
const output = await this.metroLoadModuleContents(opts.mainModuleName, opts, extraOptions);
|
|
649
636
|
return {
|
|
@@ -653,12 +640,12 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
653
640
|
}
|
|
654
641
|
async watchEnvironmentVariables() {
|
|
655
642
|
if (!this.instance) {
|
|
656
|
-
throw new Error(
|
|
643
|
+
throw new Error('Cannot observe environment variable changes without a running Metro instance.');
|
|
657
644
|
}
|
|
658
645
|
if (!this.metro) {
|
|
659
646
|
// This can happen when the run command is used and the server is already running in another
|
|
660
647
|
// process.
|
|
661
|
-
debug(
|
|
648
|
+
debug('Skipping Environment Variable observation because Metro is not running (headless).');
|
|
662
649
|
return;
|
|
663
650
|
}
|
|
664
651
|
const envFiles = _env().getFiles(process.env.NODE_ENV).map((fileName)=>_path().default.join(this.projectRoot, fileName));
|
|
@@ -666,44 +653,43 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
666
653
|
metro: this.metro,
|
|
667
654
|
server: this.instance.server
|
|
668
655
|
}, envFiles, ()=>{
|
|
669
|
-
debug(
|
|
656
|
+
debug('Reloading environment variables...');
|
|
670
657
|
// Force reload the environment variables.
|
|
671
658
|
_env().load(this.projectRoot, {
|
|
672
659
|
force: true
|
|
673
660
|
});
|
|
674
661
|
});
|
|
675
662
|
}
|
|
676
|
-
rscRenderer = null;
|
|
677
663
|
async startImplementationAsync(options) {
|
|
678
|
-
var
|
|
664
|
+
var _exp_experiments, _exp_experiments1, _exp_experiments2, _exp_experiments3, _exp_experiments4, _exp_web, _exp_web1, _exp_experiments5, _exp_web2, _exp_extra_router, _exp_extra;
|
|
679
665
|
options.port = await this.resolvePortAsync(options);
|
|
680
666
|
this.urlCreator = this.getUrlCreator(options);
|
|
681
667
|
const config = (0, _config().getConfig)(this.projectRoot, {
|
|
682
668
|
skipSDKVersionRequirement: true
|
|
683
669
|
});
|
|
684
|
-
const { exp
|
|
670
|
+
const { exp } = config;
|
|
685
671
|
// 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 = !((
|
|
672
|
+
const isReactServerComponentsEnabled = !!((_exp_experiments = exp.experiments) == null ? void 0 : _exp_experiments.reactServerComponentRoutes) || !!((_exp_experiments1 = exp.experiments) == null ? void 0 : _exp_experiments1.reactServerFunctions);
|
|
673
|
+
const isReactServerActionsOnlyEnabled = !((_exp_experiments2 = exp.experiments) == null ? void 0 : _exp_experiments2.reactServerComponentRoutes) && !!((_exp_experiments3 = exp.experiments) == null ? void 0 : _exp_experiments3.reactServerFunctions);
|
|
688
674
|
this.isReactServerComponentsEnabled = isReactServerComponentsEnabled;
|
|
689
|
-
this.isReactServerRoutesEnabled = !!((
|
|
675
|
+
this.isReactServerRoutesEnabled = !!((_exp_experiments4 = exp.experiments) == null ? void 0 : _exp_experiments4.reactServerComponentRoutes);
|
|
690
676
|
const useServerRendering = [
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
].includes(((
|
|
694
|
-
const hasApiRoutes = isReactServerComponentsEnabled || ((
|
|
677
|
+
'static',
|
|
678
|
+
'server'
|
|
679
|
+
].includes(((_exp_web = exp.web) == null ? void 0 : _exp_web.output) ?? '');
|
|
680
|
+
const hasApiRoutes = isReactServerComponentsEnabled || ((_exp_web1 = exp.web) == null ? void 0 : _exp_web1.output) === 'server';
|
|
695
681
|
const baseUrl = (0, _metroOptions.getBaseUrlFromExpoConfig)(exp);
|
|
696
|
-
const asyncRoutes = (0, _metroOptions.getAsyncRoutesFromExpoConfig)(exp, options.mode ??
|
|
682
|
+
const asyncRoutes = (0, _metroOptions.getAsyncRoutesFromExpoConfig)(exp, options.mode ?? 'development', 'web');
|
|
697
683
|
const routerRoot = (0, _router.getRouterDirectoryModuleIdWithManifest)(this.projectRoot, exp);
|
|
698
|
-
const reactCompiler = !!((
|
|
684
|
+
const reactCompiler = !!((_exp_experiments5 = exp.experiments) == null ? void 0 : _exp_experiments5.reactCompiler);
|
|
699
685
|
const appDir = _path().default.join(this.projectRoot, routerRoot);
|
|
700
|
-
const mode = options.mode ??
|
|
701
|
-
if (isReactServerComponentsEnabled && ((
|
|
686
|
+
const mode = options.mode ?? 'development';
|
|
687
|
+
if (isReactServerComponentsEnabled && ((_exp_web2 = exp.web) == null ? void 0 : _exp_web2.output) === 'static') {
|
|
702
688
|
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
689
|
}
|
|
704
690
|
// 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 ??
|
|
691
|
+
if (isReactServerComponentsEnabled && (exp == null ? void 0 : (_exp_extra = exp.extra) == null ? void 0 : (_exp_extra_router = _exp_extra.router) == null ? void 0 : _exp_extra_router.origin) === false) {
|
|
692
|
+
const configPath = config.dynamicConfigPath ?? config.staticConfigPath ?? '/app.json';
|
|
707
693
|
const configFileName = _path().default.basename(configPath);
|
|
708
694
|
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
695
|
}
|
|
@@ -724,14 +710,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
724
710
|
};
|
|
725
711
|
// Required for symbolication:
|
|
726
712
|
process.env.EXPO_DEV_SERVER_ORIGIN = `http://localhost:${options.port}`;
|
|
727
|
-
const { metro
|
|
713
|
+
const { metro, hmrServer, server, middleware, messageSocket } = await (0, _instantiateMetro.instantiateMetroAsync)(this, parsedOptions, {
|
|
728
714
|
isExporting: !!options.isExporting,
|
|
729
715
|
exp
|
|
730
716
|
});
|
|
731
717
|
if (!options.isExporting) {
|
|
732
718
|
const manifestMiddleware = await this.getManifestMiddlewareAsync(options);
|
|
733
719
|
// Important that we noop source maps for context modules as soon as possible.
|
|
734
|
-
(0, _mutations.prependMiddleware)(middleware, new
|
|
720
|
+
(0, _mutations.prependMiddleware)(middleware, new _ContextModuleSourceMapsMiddleware.ContextModuleSourceMapsMiddleware().getHandler());
|
|
735
721
|
// We need the manifest handler to be the first middleware to run so our
|
|
736
722
|
// routes take precedence over static files. For example, the manifest is
|
|
737
723
|
// served from '/' and if the user has an index.html file in their project
|
|
@@ -739,41 +725,41 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
739
725
|
// and serve index.html instead of the manifest.
|
|
740
726
|
// https://github.com/expo/expo/issues/13114
|
|
741
727
|
(0, _mutations.prependMiddleware)(middleware, manifestMiddleware.getHandler());
|
|
742
|
-
middleware.use(new
|
|
728
|
+
middleware.use(new _InterstitialPageMiddleware.InterstitialPageMiddleware(this.projectRoot, {
|
|
743
729
|
// TODO: Prevent this from becoming stale.
|
|
744
730
|
scheme: options.location.scheme ?? null
|
|
745
731
|
}).getHandler());
|
|
746
|
-
middleware.use(new
|
|
747
|
-
middleware.use(new
|
|
748
|
-
const deepLinkMiddleware = new
|
|
749
|
-
getLocation: ({ runtime
|
|
750
|
-
if (runtime ===
|
|
751
|
-
var
|
|
752
|
-
return (
|
|
732
|
+
middleware.use(new _ReactDevToolsPageMiddleware.ReactDevToolsPageMiddleware(this.projectRoot).getHandler());
|
|
733
|
+
middleware.use(new _DevToolsPluginMiddleware.DevToolsPluginMiddleware(this.projectRoot, this.devToolsPluginManager).getHandler());
|
|
734
|
+
const deepLinkMiddleware = new _RuntimeRedirectMiddleware.RuntimeRedirectMiddleware(this.projectRoot, {
|
|
735
|
+
getLocation: ({ runtime })=>{
|
|
736
|
+
if (runtime === 'custom') {
|
|
737
|
+
var _this_urlCreator;
|
|
738
|
+
return (_this_urlCreator = this.urlCreator) == null ? void 0 : _this_urlCreator.constructDevClientUrl();
|
|
753
739
|
} else {
|
|
754
|
-
var
|
|
755
|
-
return (
|
|
756
|
-
scheme:
|
|
740
|
+
var _this_urlCreator1;
|
|
741
|
+
return (_this_urlCreator1 = this.urlCreator) == null ? void 0 : _this_urlCreator1.constructUrl({
|
|
742
|
+
scheme: 'exp'
|
|
757
743
|
});
|
|
758
744
|
}
|
|
759
745
|
}
|
|
760
746
|
});
|
|
761
747
|
middleware.use(deepLinkMiddleware.getHandler());
|
|
762
748
|
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
763
|
-
const domComponentRenderer = (0,
|
|
749
|
+
const domComponentRenderer = (0, _DomComponentsMiddleware.createDomComponentsMiddleware)({
|
|
764
750
|
metroRoot: serverRoot,
|
|
765
751
|
projectRoot: this.projectRoot
|
|
766
752
|
}, instanceMetroOptions);
|
|
767
753
|
// Add support for DOM components.
|
|
768
754
|
// TODO: Maybe put behind a flag for now?
|
|
769
755
|
middleware.use(domComponentRenderer);
|
|
770
|
-
middleware.use(new
|
|
756
|
+
middleware.use(new _CreateFileMiddleware.CreateFileMiddleware(this.projectRoot).getHandler());
|
|
771
757
|
// Append support for redirecting unhandled requests to the index.html page on web.
|
|
772
758
|
if (this.isTargetingWeb()) {
|
|
773
759
|
// 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
|
|
760
|
+
middleware.use(new _ServeStaticMiddleware.ServeStaticMiddleware(this.projectRoot).getHandler());
|
|
775
761
|
// This should come after the static middleware so it doesn't serve the favicon from `public/favicon.ico`.
|
|
776
|
-
middleware.use(new
|
|
762
|
+
middleware.use(new _FaviconMiddleware.FaviconMiddleware(this.projectRoot).getHandler());
|
|
777
763
|
}
|
|
778
764
|
if (useServerRendering || isReactServerComponentsEnabled) {
|
|
779
765
|
(0, _waitForMetroToObserveTypeScriptFile.observeAnyFileChanges)({
|
|
@@ -791,8 +777,8 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
791
777
|
for (const event of events){
|
|
792
778
|
var // If the user did not delete a file that matches the Expo Router API Route convention, then we should warn that
|
|
793
779
|
// API Routes are not enabled in the project.
|
|
794
|
-
|
|
795
|
-
if (((
|
|
780
|
+
_event_metadata;
|
|
781
|
+
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
782
|
event.filePath.startsWith(appDir) && (0, _router.isApiRouteConvention)(event.filePath)) {
|
|
797
783
|
(0, _router.warnInvalidWebOutput)();
|
|
798
784
|
}
|
|
@@ -805,7 +791,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
805
791
|
this.bindRSCDevModuleInjectionHandler();
|
|
806
792
|
const rscMiddleware = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
807
793
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
808
|
-
rscPath:
|
|
794
|
+
rscPath: '/_flight',
|
|
809
795
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
810
796
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
811
797
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
@@ -819,16 +805,16 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
819
805
|
if (this.isTargetingWeb()) {
|
|
820
806
|
if (!useServerRendering) {
|
|
821
807
|
// This MUST run last since it's the fallback.
|
|
822
|
-
middleware.use(new
|
|
808
|
+
middleware.use(new _HistoryFallbackMiddleware.HistoryFallbackMiddleware(manifestMiddleware.getHandler().internal).getHandler());
|
|
823
809
|
} else {
|
|
824
|
-
var
|
|
810
|
+
var _config_exp_extra;
|
|
825
811
|
middleware.use((0, _createServerRouteMiddleware.createRouteHandlerMiddleware)(this.projectRoot, {
|
|
826
812
|
appDir,
|
|
827
813
|
routerRoot,
|
|
828
814
|
config,
|
|
829
|
-
...(
|
|
815
|
+
...(_config_exp_extra = config.exp.extra) == null ? void 0 : _config_exp_extra.router,
|
|
830
816
|
bundleApiRoute: (functionFilePath)=>this.ssrImportApiRoute(functionFilePath, {
|
|
831
|
-
platform:
|
|
817
|
+
platform: 'web'
|
|
832
818
|
}),
|
|
833
819
|
getStaticPageAsync: async (pathname)=>{
|
|
834
820
|
// TODO: Add server rendering when RSC is enabled.
|
|
@@ -850,15 +836,15 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
850
836
|
// If React 19 is enabled, then add RSC middleware to the dev server.
|
|
851
837
|
if (isReactServerComponentsEnabled) {
|
|
852
838
|
this.bindRSCDevModuleInjectionHandler();
|
|
853
|
-
const
|
|
839
|
+
const rscMiddleware = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
854
840
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
855
|
-
rscPath:
|
|
841
|
+
rscPath: '/_flight',
|
|
856
842
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
857
843
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
858
844
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
859
845
|
createModuleId: metro._createModuleId.bind(metro)
|
|
860
846
|
});
|
|
861
|
-
this.rscRenderer =
|
|
847
|
+
this.rscRenderer = rscMiddleware;
|
|
862
848
|
}
|
|
863
849
|
}
|
|
864
850
|
// Extend the close method to ensure that we clean up the local info.
|
|
@@ -881,66 +867,65 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
881
867
|
// The port is the main thing we want to send back.
|
|
882
868
|
port: options.port,
|
|
883
869
|
// localhost isn't always correct.
|
|
884
|
-
host:
|
|
870
|
+
host: 'localhost',
|
|
885
871
|
// http is the only supported protocol on native.
|
|
886
872
|
url: `http://localhost:${options.port}`,
|
|
887
|
-
protocol:
|
|
873
|
+
protocol: 'http'
|
|
888
874
|
},
|
|
889
875
|
middleware,
|
|
890
876
|
messageSocket
|
|
891
877
|
};
|
|
892
878
|
}
|
|
893
|
-
onReloadRscEvent = null;
|
|
894
879
|
async registerSsrHmrAsync(url, onReload) {
|
|
895
880
|
if (!this.hmrServer || this.ssrHmrClients.has(url)) {
|
|
896
881
|
return;
|
|
897
882
|
}
|
|
898
|
-
debug(
|
|
883
|
+
debug('[SSR] Register HMR:', url);
|
|
899
884
|
const sendFn = (message)=>{
|
|
900
885
|
const data = JSON.parse(String(message));
|
|
901
886
|
switch(data.type){
|
|
902
|
-
case
|
|
903
|
-
case
|
|
904
|
-
case
|
|
887
|
+
case 'bundle-registered':
|
|
888
|
+
case 'update-done':
|
|
889
|
+
case 'update-start':
|
|
905
890
|
break;
|
|
906
|
-
case
|
|
891
|
+
case 'update':
|
|
907
892
|
{
|
|
908
893
|
const update = data.body;
|
|
909
|
-
const { isInitialUpdate
|
|
894
|
+
const { isInitialUpdate, added, modified, deleted } = update;
|
|
910
895
|
const hasUpdate = added.length || modified.length || deleted.length;
|
|
911
896
|
// NOTE: We throw away the updates and instead simply send a trigger to the client to re-fetch the server route.
|
|
912
897
|
if (!isInitialUpdate && hasUpdate) {
|
|
913
898
|
// Clear all SSR modules before sending the reload event. This ensures that the next event will rebuild the in-memory state from scratch.
|
|
914
899
|
// @ts-expect-error
|
|
915
|
-
if (typeof globalThis.__c ===
|
|
900
|
+
if (typeof globalThis.__c === 'function') globalThis.__c();
|
|
916
901
|
const allModuleIds = new Set([
|
|
917
902
|
...added,
|
|
918
903
|
...modified
|
|
919
904
|
].map((m)=>m.module[0]).concat(deleted));
|
|
920
905
|
const platforms = unique(Array.from(allModuleIds).map((moduleId)=>{
|
|
921
|
-
var
|
|
922
|
-
if (typeof moduleId !==
|
|
906
|
+
var _moduleId_match;
|
|
907
|
+
if (typeof moduleId !== 'string') {
|
|
923
908
|
return null;
|
|
924
909
|
}
|
|
925
910
|
// Extract platforms from the module IDs.
|
|
926
|
-
return ((
|
|
911
|
+
return ((_moduleId_match = moduleId.match(/[?&]platform=([\w]+)/)) == null ? void 0 : _moduleId_match[1]) ?? null;
|
|
927
912
|
}).filter(Boolean));
|
|
928
913
|
onReload(platforms);
|
|
929
914
|
}
|
|
930
915
|
}
|
|
931
916
|
break;
|
|
932
|
-
case
|
|
933
|
-
var
|
|
917
|
+
case 'error':
|
|
918
|
+
var _data_body;
|
|
934
919
|
// 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
|
-
((
|
|
920
|
+
_log.Log.error('[SSR] HMR Error: ' + JSON.stringify(data, null, 2));
|
|
921
|
+
if (((_data_body = data.body) == null ? void 0 : _data_body.type) === 'GraphNotFoundError') {
|
|
922
|
+
var // @ts-expect-error
|
|
923
|
+
_this_metro;
|
|
924
|
+
_log.Log.error('Available SSR HMR keys:', ((_this_metro = this.metro) == null ? void 0 : _this_metro._bundler._revisionsByGraphId).keys());
|
|
940
925
|
}
|
|
941
926
|
break;
|
|
942
927
|
default:
|
|
943
|
-
debug(
|
|
928
|
+
debug('Unknown HMR message:', data);
|
|
944
929
|
break;
|
|
945
930
|
}
|
|
946
931
|
};
|
|
@@ -952,14 +937,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
952
937
|
}
|
|
953
938
|
async waitForTypeScriptAsync() {
|
|
954
939
|
if (!this.instance) {
|
|
955
|
-
throw new Error(
|
|
940
|
+
throw new Error('Cannot wait for TypeScript without a running server.');
|
|
956
941
|
}
|
|
957
942
|
return new Promise((resolve)=>{
|
|
958
943
|
if (!this.metro) {
|
|
959
944
|
// This can happen when the run command is used and the server is already running in another
|
|
960
945
|
// process. In this case we can't wait for the TypeScript check to complete because we don't
|
|
961
946
|
// have access to the Metro server.
|
|
962
|
-
debug(
|
|
947
|
+
debug('Skipping TypeScript check because Metro is not running (headless).');
|
|
963
948
|
return resolve(false);
|
|
964
949
|
}
|
|
965
950
|
const off = (0, _metroWatchTypeScriptFiles.metroWatchTypeScriptFiles)({
|
|
@@ -969,13 +954,13 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
969
954
|
tsconfig: true,
|
|
970
955
|
throttle: true,
|
|
971
956
|
eventTypes: [
|
|
972
|
-
|
|
973
|
-
|
|
957
|
+
'change',
|
|
958
|
+
'add'
|
|
974
959
|
],
|
|
975
960
|
callback: async ()=>{
|
|
976
961
|
// Run once, this prevents the TypeScript project prerequisite from running on every file change.
|
|
977
962
|
off();
|
|
978
|
-
const { TypeScriptProjectPrerequisite
|
|
963
|
+
const { TypeScriptProjectPrerequisite } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../../doctor/typescript/TypeScriptProjectPrerequisite.js")));
|
|
979
964
|
try {
|
|
980
965
|
const req = new TypeScriptProjectPrerequisite(this.projectRoot);
|
|
981
966
|
await req.bootstrapAsync();
|
|
@@ -993,41 +978,39 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
993
978
|
});
|
|
994
979
|
}
|
|
995
980
|
async startTypeScriptServices() {
|
|
996
|
-
var
|
|
981
|
+
var _this_instance;
|
|
997
982
|
return (0, _startTypescriptTypeGeneration.startTypescriptTypeGenerationAsync)({
|
|
998
|
-
server: (
|
|
983
|
+
server: (_this_instance = this.instance) == null ? void 0 : _this_instance.server,
|
|
999
984
|
metro: this.metro,
|
|
1000
985
|
projectRoot: this.projectRoot
|
|
1001
986
|
});
|
|
1002
987
|
}
|
|
1003
988
|
getConfigModuleIds() {
|
|
1004
989
|
return [
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
990
|
+
'./metro.config.js',
|
|
991
|
+
'./metro.config.json',
|
|
992
|
+
'./rn-cli.config.js'
|
|
1008
993
|
];
|
|
1009
994
|
}
|
|
1010
|
-
// API Routes
|
|
1011
|
-
pendingRouteOperations = new Map();
|
|
1012
995
|
// Bundle the API Route with Metro and return the string contents to be evaluated in the server.
|
|
1013
|
-
async bundleApiRoute(filePath, { platform
|
|
996
|
+
async bundleApiRoute(filePath, { platform }) {
|
|
1014
997
|
if (this.pendingRouteOperations.has(filePath)) {
|
|
1015
998
|
return this.pendingRouteOperations.get(filePath);
|
|
1016
999
|
}
|
|
1017
1000
|
const bundleAsync = async ()=>{
|
|
1018
1001
|
try {
|
|
1019
|
-
debug(
|
|
1002
|
+
debug('Bundle API route:', this.instanceMetroOptions.routerRoot, filePath);
|
|
1020
1003
|
return await this.ssrLoadModuleContents(filePath, {
|
|
1021
1004
|
isExporting: this.instanceMetroOptions.isExporting,
|
|
1022
1005
|
platform
|
|
1023
1006
|
});
|
|
1024
1007
|
} catch (error) {
|
|
1025
|
-
var
|
|
1026
|
-
const appDir = ((
|
|
1008
|
+
var _this_instanceMetroOptions;
|
|
1009
|
+
const appDir = ((_this_instanceMetroOptions = this.instanceMetroOptions) == null ? void 0 : _this_instanceMetroOptions.routerRoot) ? _path().default.join(this.projectRoot, this.instanceMetroOptions.routerRoot) : undefined;
|
|
1027
1010
|
const relativePath = appDir ? _path().default.relative(appDir, filePath) : filePath;
|
|
1028
1011
|
// Expected errors: invalid syntax, missing resolutions.
|
|
1029
1012
|
// Wrap with command error for better error messages.
|
|
1030
|
-
const err = new _errors.CommandError(
|
|
1013
|
+
const err = new _errors.CommandError('API_ROUTE', (0, _chalk().default)`Failed to bundle API Route: {bold ${relativePath}}\n\n` + error.message);
|
|
1031
1014
|
for(const key in error){
|
|
1032
1015
|
// @ts-expect-error
|
|
1033
1016
|
err[key] = error[key];
|
|
@@ -1041,7 +1024,7 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1041
1024
|
this.pendingRouteOperations.set(filePath, route);
|
|
1042
1025
|
return route;
|
|
1043
1026
|
}
|
|
1044
|
-
async ssrImportApiRoute(filePath, { platform
|
|
1027
|
+
async ssrImportApiRoute(filePath, { platform }) {
|
|
1045
1028
|
// TODO: Cache the evaluated function.
|
|
1046
1029
|
try {
|
|
1047
1030
|
const apiRoute = await this.bundleApiRoute(filePath, {
|
|
@@ -1063,11 +1046,11 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1063
1046
|
return new Response(htmlServerError, {
|
|
1064
1047
|
status: 500,
|
|
1065
1048
|
headers: {
|
|
1066
|
-
|
|
1049
|
+
'Content-Type': 'text/html'
|
|
1067
1050
|
}
|
|
1068
1051
|
});
|
|
1069
1052
|
} catch (internalError) {
|
|
1070
|
-
debug(
|
|
1053
|
+
debug('Failed to generate Metro server error UI for API Route error:', internalError);
|
|
1071
1054
|
throw error;
|
|
1072
1055
|
}
|
|
1073
1056
|
} else {
|
|
@@ -1086,9 +1069,9 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1086
1069
|
}
|
|
1087
1070
|
// NOTE: This can only target a single platform at a time (web).
|
|
1088
1071
|
// used for sending RSC CSS to the root client in development.
|
|
1089
|
-
sendClientModule({ code
|
|
1090
|
-
this.broadcastMessage(
|
|
1091
|
-
name:
|
|
1072
|
+
sendClientModule({ code, id }) {
|
|
1073
|
+
this.broadcastMessage('sendDevCommand', {
|
|
1074
|
+
name: 'module-import',
|
|
1092
1075
|
data: {
|
|
1093
1076
|
code,
|
|
1094
1077
|
id
|
|
@@ -1101,15 +1084,14 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1101
1084
|
// Send reload command to client from Fast Refresh code.
|
|
1102
1085
|
if (!platforms.length) {
|
|
1103
1086
|
// TODO: When is this called?
|
|
1104
|
-
this.broadcastMessage(
|
|
1105
|
-
name:
|
|
1087
|
+
this.broadcastMessage('sendDevCommand', {
|
|
1088
|
+
name: 'rsc-reload'
|
|
1106
1089
|
});
|
|
1107
1090
|
} else {
|
|
1108
1091
|
for (const platform of platforms){
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
name: "rsc-reload",
|
|
1092
|
+
this.onReloadRscEvent == null ? void 0 : this.onReloadRscEvent.call(this, platform);
|
|
1093
|
+
this.broadcastMessage('sendDevCommand', {
|
|
1094
|
+
name: 'rsc-reload',
|
|
1113
1095
|
platform
|
|
1114
1096
|
});
|
|
1115
1097
|
}
|
|
@@ -1119,19 +1101,19 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1119
1101
|
}
|
|
1120
1102
|
// Direct Metro access
|
|
1121
1103
|
// 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,
|
|
1104
|
+
async _bundleDirectAsync(resolvedEntryFilePath, { transformOptions, resolverOptions, graphOptions, serializerOptions }) {
|
|
1105
|
+
var _this_metro;
|
|
1106
|
+
(0, _assert().default)(this.metro, 'Metro server must be running to bundle directly.');
|
|
1125
1107
|
const config = this.metro._config;
|
|
1126
1108
|
const buildNumber = this.metro.getNewBuildNumber();
|
|
1127
|
-
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory(
|
|
1109
|
+
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory.call(config, 'BUNDLING_REQUEST', {
|
|
1128
1110
|
key: buildNumber
|
|
1129
1111
|
});
|
|
1130
1112
|
const onProgress = (transformedFileCount, totalFileCount)=>{
|
|
1131
|
-
var
|
|
1132
|
-
(
|
|
1113
|
+
var _this_metro__reporter_update, _this_metro__reporter, _this_metro;
|
|
1114
|
+
(_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
1115
|
buildID: getBuildID(buildNumber),
|
|
1134
|
-
type:
|
|
1116
|
+
type: 'bundle_transform_progressed',
|
|
1135
1117
|
transformedFileCount,
|
|
1136
1118
|
totalFileCount
|
|
1137
1119
|
});
|
|
@@ -1141,13 +1123,13 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1141
1123
|
transformOptions,
|
|
1142
1124
|
resolverOptions
|
|
1143
1125
|
});
|
|
1144
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1126
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('resolvingAndTransformingDependencies_start');
|
|
1145
1127
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1146
1128
|
bool: {
|
|
1147
1129
|
initial_build: revPromise == null
|
|
1148
1130
|
}
|
|
1149
1131
|
});
|
|
1150
|
-
(
|
|
1132
|
+
(_this_metro = this.metro) == null ? void 0 : _this_metro._reporter.update({
|
|
1151
1133
|
buildID: getBuildID(buildNumber),
|
|
1152
1134
|
bundleDetails: {
|
|
1153
1135
|
bundleType: transformOptions.type,
|
|
@@ -1159,15 +1141,15 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1159
1141
|
customTransformOptions: transformOptions.customTransformOptions ?? {}
|
|
1160
1142
|
},
|
|
1161
1143
|
isPrefetch: false,
|
|
1162
|
-
type:
|
|
1144
|
+
type: 'bundle_build_started'
|
|
1163
1145
|
});
|
|
1164
1146
|
try {
|
|
1165
|
-
var
|
|
1147
|
+
var _transformOptions_customTransformOptions;
|
|
1166
1148
|
let delta;
|
|
1167
1149
|
let revision;
|
|
1168
1150
|
// TODO: Some bug in Metro/RSC causes this to break when changing imports in server components.
|
|
1169
1151
|
// We should resolve the bug because it results in ~6x faster bundling to reuse the graph revision.
|
|
1170
|
-
if (((
|
|
1152
|
+
if (((_transformOptions_customTransformOptions = transformOptions.customTransformOptions) == null ? void 0 : _transformOptions_customTransformOptions.environment) === 'react-server') {
|
|
1171
1153
|
const props = await this.metro.getBundler().initializeGraph(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1172
1154
|
// entryFile,
|
|
1173
1155
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
@@ -1178,30 +1160,30 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1178
1160
|
delta = props.delta;
|
|
1179
1161
|
revision = props.revision;
|
|
1180
1162
|
} else {
|
|
1181
|
-
const
|
|
1163
|
+
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
1164
|
// entryFile,
|
|
1183
1165
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
1184
1166
|
onProgress,
|
|
1185
1167
|
shallow: graphOptions.shallow,
|
|
1186
1168
|
lazy: graphOptions.lazy
|
|
1187
1169
|
}));
|
|
1188
|
-
delta =
|
|
1189
|
-
revision =
|
|
1170
|
+
delta = props.delta;
|
|
1171
|
+
revision = props.revision;
|
|
1190
1172
|
}
|
|
1191
1173
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1192
1174
|
int: {
|
|
1193
1175
|
graph_node_count: revision.graph.dependencies.size
|
|
1194
1176
|
}
|
|
1195
1177
|
});
|
|
1196
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1197
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1178
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('resolvingAndTransformingDependencies_end');
|
|
1179
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('serializingBundle_start');
|
|
1198
1180
|
const shouldAddToIgnoreList = this.metro._shouldAddModuleToIgnoreList.bind(this.metro);
|
|
1199
1181
|
const serializer = this.getMetroSerializer();
|
|
1200
1182
|
const bundle = await serializer(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1201
1183
|
// entryFile,
|
|
1202
1184
|
resolvedEntryFilePath, revision.prepend, revision.graph, {
|
|
1203
1185
|
asyncRequireModulePath: await this.metro._resolveRelativePath(config.transformer.asyncRequireModulePath, {
|
|
1204
|
-
relativeTo:
|
|
1186
|
+
relativeTo: 'project',
|
|
1205
1187
|
resolverOptions,
|
|
1206
1188
|
transformOptions
|
|
1207
1189
|
}),
|
|
@@ -1225,45 +1207,45 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1225
1207
|
});
|
|
1226
1208
|
this.metro._reporter.update({
|
|
1227
1209
|
buildID: getBuildID(buildNumber),
|
|
1228
|
-
type:
|
|
1210
|
+
type: 'bundle_build_done'
|
|
1229
1211
|
});
|
|
1230
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1212
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point('serializingBundle_end');
|
|
1231
1213
|
let bundleCode = null;
|
|
1232
1214
|
let bundleMap = null;
|
|
1233
1215
|
// @ts-expect-error: If the output is multi-bundle...
|
|
1234
|
-
if (serializerOptions.output ===
|
|
1216
|
+
if (serializerOptions.output === 'static') {
|
|
1235
1217
|
try {
|
|
1236
|
-
var
|
|
1237
|
-
const parsed = typeof bundle ===
|
|
1238
|
-
(0, _assert().default)(
|
|
1218
|
+
var _artifacts_filter_, _artifacts_filter;
|
|
1219
|
+
const parsed = typeof bundle === 'string' ? JSON.parse(bundle) : bundle;
|
|
1220
|
+
(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
1221
|
const artifacts = parsed.artifacts;
|
|
1240
1222
|
const assets = parsed.assets;
|
|
1241
|
-
const
|
|
1242
|
-
const
|
|
1223
|
+
const bundleCode = artifacts.filter((asset)=>asset.type === 'js')[0];
|
|
1224
|
+
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
1225
|
return {
|
|
1244
1226
|
numModifiedFiles: delta.reset ? delta.added.size + revision.prepend.length : delta.added.size + delta.modified.size + delta.deleted.size,
|
|
1245
1227
|
lastModifiedDate: revision.date,
|
|
1246
1228
|
nextRevId: revision.id,
|
|
1247
|
-
bundle:
|
|
1248
|
-
map:
|
|
1229
|
+
bundle: bundleCode.source,
|
|
1230
|
+
map: bundleMap,
|
|
1249
1231
|
artifacts,
|
|
1250
1232
|
assets
|
|
1251
1233
|
};
|
|
1252
1234
|
} catch (error) {
|
|
1253
|
-
throw new Error(
|
|
1235
|
+
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
1236
|
}
|
|
1255
1237
|
}
|
|
1256
|
-
if (typeof bundle ===
|
|
1238
|
+
if (typeof bundle === 'string') {
|
|
1257
1239
|
bundleCode = bundle;
|
|
1258
1240
|
// Create the source map in a second pass...
|
|
1259
|
-
let { prepend
|
|
1241
|
+
let { prepend, graph } = revision;
|
|
1260
1242
|
if (serializerOptions.modulesOnly) {
|
|
1261
1243
|
prepend = [];
|
|
1262
1244
|
}
|
|
1263
1245
|
bundleMap = await sourceMapStringAsync([
|
|
1264
1246
|
//
|
|
1265
1247
|
...prepend,
|
|
1266
|
-
...this.metro._getSortedModules(graph)
|
|
1248
|
+
...this.metro._getSortedModules(graph)
|
|
1267
1249
|
], {
|
|
1268
1250
|
excludeSource: serializerOptions.excludeSource,
|
|
1269
1251
|
processModuleFilter: config.serializer.processModuleFilter,
|
|
@@ -1280,23 +1262,23 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1280
1262
|
bundle: bundleCode,
|
|
1281
1263
|
map: bundleMap
|
|
1282
1264
|
};
|
|
1283
|
-
} catch (
|
|
1265
|
+
} catch (error) {
|
|
1284
1266
|
// Mark the error so we know how to format and return it later.
|
|
1285
1267
|
// @ts-expect-error
|
|
1286
|
-
|
|
1268
|
+
error[_metroErrorInterface.IS_METRO_BUNDLE_ERROR_SYMBOL] = true;
|
|
1287
1269
|
this.metro._reporter.update({
|
|
1288
1270
|
buildID: getBuildID(buildNumber),
|
|
1289
|
-
type:
|
|
1271
|
+
type: 'bundle_build_failed'
|
|
1290
1272
|
});
|
|
1291
|
-
throw
|
|
1273
|
+
throw error;
|
|
1292
1274
|
}
|
|
1293
1275
|
}
|
|
1294
1276
|
getMetroSerializer() {
|
|
1295
|
-
var
|
|
1296
|
-
return ((
|
|
1277
|
+
var _this_metro__config, _this_metro;
|
|
1278
|
+
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
1279
|
}
|
|
1298
|
-
getMetroRevision(resolvedEntryFilePath, { graphOptions
|
|
1299
|
-
(0, _assert().default)(this.metro,
|
|
1280
|
+
getMetroRevision(resolvedEntryFilePath, { graphOptions, transformOptions, resolverOptions }) {
|
|
1281
|
+
(0, _assert().default)(this.metro, 'Metro server must be running to bundle directly.');
|
|
1300
1282
|
const config = this.metro._config;
|
|
1301
1283
|
const graphId = (0, _getGraphId().default)(resolvedEntryFilePath, transformOptions, {
|
|
1302
1284
|
unstable_allowRequireContext: config.transformer.unstable_allowRequireContext,
|
|
@@ -1306,14 +1288,30 @@ class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
|
1306
1288
|
});
|
|
1307
1289
|
return this.metro.getBundler().getRevisionByGraphId(graphId);
|
|
1308
1290
|
}
|
|
1309
|
-
async resolveRelativePathAsync(moduleId, { resolverOptions
|
|
1310
|
-
(0, _assert().default)(this.metro,
|
|
1291
|
+
async resolveRelativePathAsync(moduleId, { resolverOptions, transformOptions }) {
|
|
1292
|
+
(0, _assert().default)(this.metro, 'cannot invoke resolveRelativePathAsync without metro instance');
|
|
1311
1293
|
return await this.metro._resolveRelativePath((0, _metroOptions.convertPathToModuleSpecifier)(moduleId), {
|
|
1312
|
-
relativeTo:
|
|
1294
|
+
relativeTo: 'server',
|
|
1313
1295
|
resolverOptions,
|
|
1314
1296
|
transformOptions
|
|
1315
1297
|
});
|
|
1316
1298
|
}
|
|
1299
|
+
constructor(...args){
|
|
1300
|
+
super(...args), this.metro = null, this.hmrServer = null, this.ssrHmrClients = new Map(), // Set when the server is started.
|
|
1301
|
+
this.instanceMetroOptions = {}, this.ssrLoadModule = async (filePath, specificOptions = {}, extras = {})=>{
|
|
1302
|
+
const res = await this.ssrLoadModuleContents(filePath, specificOptions);
|
|
1303
|
+
if (// TODO: hot should be a callback function for invalidating the related SSR module.
|
|
1304
|
+
extras.hot && this.instanceMetroOptions.isExporting !== true) {
|
|
1305
|
+
// Register SSR HMR
|
|
1306
|
+
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
1307
|
+
const relativePath = _path().default.relative(serverRoot, res.filename);
|
|
1308
|
+
const url = new URL(relativePath, this.getDevServerUrlOrAssert());
|
|
1309
|
+
this.setupHmr(url);
|
|
1310
|
+
}
|
|
1311
|
+
return (0, _getStaticRenderFunctions.evalMetroAndWrapFunctions)(this.projectRoot, res.src, res.filename, specificOptions.isExporting ?? this.instanceMetroOptions.isExporting);
|
|
1312
|
+
}, this.rscRenderer = null, this.onReloadRscEvent = null, // API Routes
|
|
1313
|
+
this.pendingRouteOperations = new Map();
|
|
1314
|
+
}
|
|
1317
1315
|
}
|
|
1318
1316
|
function getBuildID(buildNumber) {
|
|
1319
1317
|
return buildNumber.toString(36);
|
|
@@ -1322,7 +1320,7 @@ function wrapBundle(str) {
|
|
|
1322
1320
|
// Skip the metro runtime so debugging is a bit easier.
|
|
1323
1321
|
// Replace the __r() call with an export statement.
|
|
1324
1322
|
// Use gm to apply to the last require line. This is needed when the bundle has side-effects.
|
|
1325
|
-
return str.replace(/^(__r\(.*\);)$/gm,
|
|
1323
|
+
return str.replace(/^(__r\(.*\);)$/gm, 'module.exports = $1');
|
|
1326
1324
|
}
|
|
1327
1325
|
async function sourceMapStringAsync(modules, options) {
|
|
1328
1326
|
return (await (0, _sourceMapGenerator().sourceMapGeneratorNonBlocking)(modules, options)).toString(undefined, {
|