@expo/cli 0.22.25 → 0.22.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +91 -93
- package/build/bin/cli.map +1 -1
- package/build/metro-require/require.js +52 -53
- package/build/src/api/endpoint.js +2 -6
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +3 -5
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +12 -16
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +4 -6
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +3 -5
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +5 -7
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +26 -32
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +4 -6
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +3 -5
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +1 -3
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemResponseCache.js +8 -10
- package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/ResponseCache.js +12 -20
- package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +11 -13
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +35 -53
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/client.types.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +3 -5
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +3 -5
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +7 -11
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +3 -5
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithUserAgent.js +6 -8
- package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
- package/build/src/api/settings.js +5 -7
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +17 -23
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +21 -39
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +21 -27
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +26 -30
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +29 -35
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +30 -44
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +23 -29
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +21 -25
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +6 -8
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +16 -20
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +12 -14
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +2 -4
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +54 -58
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +7 -11
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +9 -11
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEager.js +6 -8
- package/build/src/export/embed/exportEager.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +61 -71
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +55 -57
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js +40 -44
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +36 -44
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +27 -39
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +63 -67
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +27 -35
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +9 -13
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportDomComponents.js +45 -53
- package/build/src/export/exportDomComponents.js.map +1 -1
- package/build/src/export/exportHermes.js +63 -85
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +62 -72
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +27 -33
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +5 -7
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +9 -11
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +6 -10
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +28 -32
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +30 -36
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +34 -42
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +6 -10
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +24 -28
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +46 -50
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +11 -13
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +15 -19
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +3 -5
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +2 -4
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +274 -400
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +7 -11
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +22 -26
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +12 -16
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +16 -18
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +26 -32
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +18 -22
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +19 -21
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +14 -18
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/install/utils/checkPackagesCompatibility.js +11 -13
- package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +44 -50
- package/build/src/lint/ESlintPrerequisite.js.map +1 -1
- package/build/src/lint/index.js +8 -12
- package/build/src/lint/index.js.map +1 -1
- package/build/src/lint/lintAsync.js +8 -10
- package/build/src/lint/lintAsync.js.map +1 -1
- package/build/src/log.js +16 -36
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +20 -24
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +7 -11
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +26 -38
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +14 -18
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +13 -17
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +4 -6
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +32 -36
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +25 -29
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +40 -46
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +52 -66
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +32 -36
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +13 -19
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +39 -53
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +8 -12
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +7 -11
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +3 -5
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +32 -36
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +8 -10
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +16 -18
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +15 -17
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +10 -12
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +2 -4
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +21 -23
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +5 -7
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +7 -13
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +23 -27
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +56 -74
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +63 -69
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +26 -29
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +25 -28
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +26 -29
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +21 -22
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +29 -32
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +24 -28
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +4 -7
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +27 -28
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +17 -23
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +132 -146
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +21 -29
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +21 -29
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +22 -34
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +17 -27
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +39 -53
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +9 -13
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +19 -27
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +5 -9
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +12 -14
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +21 -27
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +36 -40
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +17 -23
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/appleDestinations.js +36 -38
- package/build/src/run/ios/options/appleDestinations.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +16 -20
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +24 -30
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +23 -31
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +5 -7
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +5 -7
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +44 -48
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/ios/validateExternalBinary.js +22 -24
- package/build/src/run/ios/validateExternalBinary.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +2 -4
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +12 -16
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/serve/index.js +16 -20
- package/build/src/serve/index.js.map +1 -1
- package/build/src/serve/serveAsync.js +32 -36
- package/build/src/serve/serveAsync.js.map +1 -1
- package/build/src/start/detectDevClient.js +9 -13
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +7 -12
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +11 -13
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +19 -23
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +19 -23
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +45 -51
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +16 -18
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +19 -23
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +25 -31
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -25
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +32 -40
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +26 -32
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +31 -41
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +29 -34
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +8 -12
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +28 -32
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +17 -23
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +27 -33
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +42 -46
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +14 -18
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +80 -94
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +40 -44
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +61 -65
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +4 -6
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +6 -10
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +20 -25
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +15 -17
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +35 -39
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +16 -18
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +20 -24
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +9 -11
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +22 -26
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +83 -121
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +12 -20
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +26 -36
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +5 -7
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +28 -36
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +15 -19
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +19 -21
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +31 -37
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +7 -9
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/devicectl.js +73 -87
- package/build/src/start/platforms/ios/devicectl.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +18 -22
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +19 -29
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +10 -14
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +74 -102
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +52 -57
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +18 -22
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +9 -19
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +11 -15
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +2 -4
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +40 -48
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +51 -55
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/AsyncWsTunnel.js +36 -40
- package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +79 -81
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +38 -42
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +14 -18
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +14 -18
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +10 -16
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +33 -36
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +21 -29
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +4 -6
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +271 -269
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +56 -63
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +33 -39
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +40 -46
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +28 -32
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +92 -96
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +30 -32
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +11 -13
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +1 -3
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/attachAtlas.js +22 -26
- package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +17 -19
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +31 -25
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/getDebuggerType.js +4 -6
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +8 -14
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +5 -7
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +6 -8
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +5 -7
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +12 -14
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +10 -14
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -6
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/debugging/types.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createEventSocket.js +16 -18
- package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +21 -23
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +21 -23
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +2 -4
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +2 -4
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js +4 -8
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/externals.js +25 -33
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +12 -16
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +9 -11
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +18 -22
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +79 -85
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxLog.js +36 -40
- package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +14 -20
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js +6 -10
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +78 -88
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +4 -8
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroPrivateServer.js +7 -9
- package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +8 -10
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +22 -24
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +32 -48
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +22 -24
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +22 -24
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/symbolicate.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +29 -35
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +139 -149
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +39 -49
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +6 -8
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +15 -17
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +31 -32
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +19 -22
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DomComponentsMiddleware.js +27 -33
- package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +60 -64
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +9 -15
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +14 -15
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +2 -4
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +31 -34
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +56 -64
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +19 -23
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +19 -20
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +9 -11
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +11 -17
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
- package/build/src/start/server/middleware/inspector/CdpClient.js +10 -12
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +27 -35
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +19 -21
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +2 -6
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +96 -120
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +3 -7
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +18 -26
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +15 -23
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +9 -11
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
- package/build/src/start/server/middleware/server.types.js.map +1 -1
- package/build/src/start/server/openPlatforms.js +8 -10
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +11 -13
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +50 -58
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +7 -11
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +54 -76
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +19 -21
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +28 -36
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +24 -28
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +46 -52
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +11 -15
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +26 -28
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +12 -18
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +12 -18
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +27 -31
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +17 -20
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/ansi.js +5 -7
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +14 -24
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +6 -18
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +46 -54
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +68 -78
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +12 -16
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/createTempPath.js +13 -17
- package/build/src/utils/createTempPath.js.map +1 -1
- package/build/src/utils/delay.js +6 -12
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +28 -46
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +8 -10
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +21 -25
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +35 -41
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +59 -63
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +30 -37
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +31 -35
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/expoUpdatesCli.js +22 -32
- package/build/src/utils/expoUpdatesCli.js.map +1 -1
- package/build/src/utils/fetch.js +4 -8
- package/build/src/utils/fetch.js.map +1 -1
- package/build/src/utils/filePath.js +6 -10
- package/build/src/utils/filePath.js.map +1 -1
- package/build/src/utils/findUp.js +9 -13
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +2 -6
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +26 -32
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +21 -29
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +20 -26
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +4 -8
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +1 -3
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +19 -21
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +9 -11
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/jsonSchemaDeref.js +18 -20
- package/build/src/utils/jsonSchemaDeref.js.map +1 -1
- package/build/src/utils/link.js +13 -17
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +28 -46
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +10 -16
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +6 -10
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +6 -12
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +8 -10
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +36 -50
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +5 -11
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +8 -10
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +7 -13
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +15 -21
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +33 -43
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +7 -11
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +5 -11
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +29 -47
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +24 -36
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +32 -40
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/stream.js +3 -5
- package/build/src/utils/stream.js.map +1 -1
- package/build/src/utils/strings.js +4 -6
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +15 -19
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/Telemetry.js +27 -29
- package/build/src/utils/telemetry/Telemetry.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +13 -15
- package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js +22 -26
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderClient.js +8 -10
- package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js +22 -26
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushRudderDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushRudderDetached.js.map +1 -1
- package/build/src/utils/telemetry/events.js +2 -4
- package/build/src/utils/telemetry/events.js.map +1 -1
- package/build/src/utils/telemetry/flushDetached.js.map +1 -1
- package/build/src/utils/telemetry/index.js +29 -25
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/telemetry/types.js.map +1 -1
- package/build/src/utils/telemetry/utils/constants.js +4 -8
- package/build/src/utils/telemetry/utils/constants.js.map +1 -1
- package/build/src/utils/telemetry/utils/context.js +14 -18
- package/build/src/utils/telemetry/utils/context.js.map +1 -1
- package/build/src/utils/template.js +4 -6
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +2 -4
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +17 -21
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +14 -18
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +5 -7
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -14
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +13 -23
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +86 -108
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +16 -22
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +7 -11
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +7 -11
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +3 -3
|
@@ -9,9 +9,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
Object.defineProperty(exports, "MetroBundlerDevServer", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get:
|
|
13
|
-
return MetroBundlerDevServer;
|
|
14
|
-
}
|
|
12
|
+
get: ()=>MetroBundlerDevServer
|
|
15
13
|
});
|
|
16
14
|
function _config() {
|
|
17
15
|
const data = require("@expo/config");
|
|
@@ -28,28 +26,28 @@ function _paths() {
|
|
|
28
26
|
return data;
|
|
29
27
|
}
|
|
30
28
|
function _env() {
|
|
31
|
-
const data = /*#__PURE__*/
|
|
29
|
+
const data = /*#__PURE__*/ _interopRequireWildcard(require("@expo/env"));
|
|
32
30
|
_env = function() {
|
|
33
31
|
return data;
|
|
34
32
|
};
|
|
35
33
|
return data;
|
|
36
34
|
}
|
|
37
35
|
function _assert() {
|
|
38
|
-
const data = /*#__PURE__*/
|
|
36
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
|
|
39
37
|
_assert = function() {
|
|
40
38
|
return data;
|
|
41
39
|
};
|
|
42
40
|
return data;
|
|
43
41
|
}
|
|
44
42
|
function _chalk() {
|
|
45
|
-
const data = /*#__PURE__*/
|
|
43
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
46
44
|
_chalk = function() {
|
|
47
45
|
return data;
|
|
48
46
|
};
|
|
49
47
|
return data;
|
|
50
48
|
}
|
|
51
49
|
function _baseJSBundle() {
|
|
52
|
-
const data = /*#__PURE__*/
|
|
50
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/DeltaBundler/Serializers/baseJSBundle"));
|
|
53
51
|
_baseJSBundle = function() {
|
|
54
52
|
return data;
|
|
55
53
|
};
|
|
@@ -63,29 +61,29 @@ function _sourceMapGenerator() {
|
|
|
63
61
|
return data;
|
|
64
62
|
}
|
|
65
63
|
function _bundleToString() {
|
|
66
|
-
const data = /*#__PURE__*/
|
|
64
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/lib/bundleToString"));
|
|
67
65
|
_bundleToString = function() {
|
|
68
66
|
return data;
|
|
69
67
|
};
|
|
70
68
|
return data;
|
|
71
69
|
}
|
|
72
70
|
function _getGraphId() {
|
|
73
|
-
const data = /*#__PURE__*/
|
|
71
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/lib/getGraphId"));
|
|
74
72
|
_getGraphId = function() {
|
|
75
73
|
return data;
|
|
76
74
|
};
|
|
77
75
|
return data;
|
|
78
76
|
}
|
|
79
77
|
function _path() {
|
|
80
|
-
const data = /*#__PURE__*/
|
|
78
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
81
79
|
_path = function() {
|
|
82
80
|
return data;
|
|
83
81
|
};
|
|
84
82
|
return data;
|
|
85
83
|
}
|
|
86
|
-
function
|
|
87
|
-
const data = /*#__PURE__*/
|
|
88
|
-
|
|
84
|
+
function _resolveFrom() {
|
|
85
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
|
|
86
|
+
_resolveFrom = function() {
|
|
89
87
|
return data;
|
|
90
88
|
};
|
|
91
89
|
return data;
|
|
@@ -105,23 +103,23 @@ const _env1 = require("../../../utils/env");
|
|
|
105
103
|
const _errors = require("../../../utils/errors");
|
|
106
104
|
const _filePath = require("../../../utils/filePath");
|
|
107
105
|
const _port = require("../../../utils/port");
|
|
108
|
-
const
|
|
106
|
+
const _bundlerDevServer = require("../BundlerDevServer");
|
|
109
107
|
const _getStaticRenderFunctions = require("../getStaticRenderFunctions");
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
const
|
|
120
|
-
const
|
|
108
|
+
const _contextModuleSourceMapsMiddleware = require("../middleware/ContextModuleSourceMapsMiddleware");
|
|
109
|
+
const _createFileMiddleware = require("../middleware/CreateFileMiddleware");
|
|
110
|
+
const _devToolsPluginMiddleware = require("../middleware/DevToolsPluginMiddleware");
|
|
111
|
+
const _domComponentsMiddleware = require("../middleware/DomComponentsMiddleware");
|
|
112
|
+
const _faviconMiddleware = require("../middleware/FaviconMiddleware");
|
|
113
|
+
const _historyFallbackMiddleware = require("../middleware/HistoryFallbackMiddleware");
|
|
114
|
+
const _interstitialPageMiddleware = require("../middleware/InterstitialPageMiddleware");
|
|
115
|
+
const _manifestMiddleware = require("../middleware/ManifestMiddleware");
|
|
116
|
+
const _reactDevToolsPageMiddleware = require("../middleware/ReactDevToolsPageMiddleware");
|
|
117
|
+
const _runtimeRedirectMiddleware = require("../middleware/RuntimeRedirectMiddleware");
|
|
118
|
+
const _serveStaticMiddleware = require("../middleware/ServeStaticMiddleware");
|
|
121
119
|
const _metroOptions = require("../middleware/metroOptions");
|
|
122
120
|
const _mutations = require("../middleware/mutations");
|
|
123
121
|
const _startTypescriptTypeGeneration = require("../type-generation/startTypescriptTypeGeneration");
|
|
124
|
-
function
|
|
122
|
+
function _interopRequireDefault(obj) {
|
|
125
123
|
return obj && obj.__esModule ? obj : {
|
|
126
124
|
default: obj
|
|
127
125
|
};
|
|
@@ -134,7 +132,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
134
132
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
135
133
|
})(nodeInterop);
|
|
136
134
|
}
|
|
137
|
-
function
|
|
135
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
138
136
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
139
137
|
return obj;
|
|
140
138
|
}
|
|
@@ -147,9 +145,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
147
145
|
if (cache && cache.has(obj)) {
|
|
148
146
|
return cache.get(obj);
|
|
149
147
|
}
|
|
150
|
-
var newObj = {
|
|
151
|
-
__proto__: null
|
|
152
|
-
};
|
|
148
|
+
var newObj = {};
|
|
153
149
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
154
150
|
for(var key in obj){
|
|
155
151
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -167,12 +163,15 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
167
163
|
}
|
|
168
164
|
return newObj;
|
|
169
165
|
}
|
|
170
|
-
const debug = require(
|
|
166
|
+
const debug = require("debug")("expo:start:server:metro");
|
|
171
167
|
/** Default port to use for apps running in Expo Go. */ const EXPO_GO_METRO_PORT = 8081;
|
|
172
168
|
/** Default port to use for apps that run in standard React Native projects or Expo Dev Clients. */ const DEV_CLIENT_METRO_PORT = 8081;
|
|
173
|
-
class MetroBundlerDevServer extends
|
|
169
|
+
class MetroBundlerDevServer extends _bundlerDevServer.BundlerDevServer {
|
|
170
|
+
metro = null;
|
|
171
|
+
hmrServer = null;
|
|
172
|
+
ssrHmrClients = new Map();
|
|
174
173
|
get name() {
|
|
175
|
-
return
|
|
174
|
+
return "metro";
|
|
176
175
|
}
|
|
177
176
|
async resolvePortAsync(options = {}) {
|
|
178
177
|
const port = // If the manually defined port is busy then an error should be thrown...
|
|
@@ -180,26 +179,26 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
180
179
|
(options.devClient ? Number(process.env.RCT_METRO_PORT) || DEV_CLIENT_METRO_PORT : await (0, _port.getFreePortAsync)(EXPO_GO_METRO_PORT));
|
|
181
180
|
return port;
|
|
182
181
|
}
|
|
183
|
-
async exportExpoRouterApiRoutesAsync({ includeSourceMaps, outputDir, prerenderManifest, platform
|
|
184
|
-
const { routerRoot
|
|
185
|
-
(0, _assert().default)(routerRoot != null,
|
|
182
|
+
async exportExpoRouterApiRoutesAsync({ includeSourceMaps , outputDir , prerenderManifest , platform }) {
|
|
183
|
+
const { routerRoot } = this.instanceMetroOptions;
|
|
184
|
+
(0, _assert().default)(routerRoot != null, "The server must be started before calling exportExpoRouterApiRoutesAsync.");
|
|
186
185
|
const appDir = _path().default.join(this.projectRoot, routerRoot);
|
|
187
186
|
const manifest = await this.getExpoRouterRoutesManifestAsync({
|
|
188
187
|
appDir
|
|
189
188
|
});
|
|
190
189
|
const files = new Map();
|
|
191
190
|
// Inject RSC middleware.
|
|
192
|
-
const rscPath =
|
|
191
|
+
const rscPath = "/_flight/[...rsc]";
|
|
193
192
|
if (this.isReactServerComponentsEnabled && // If the RSC route is not already in the manifest, add it.
|
|
194
|
-
!manifest.apiRoutes.find((route)=>route.page.startsWith(
|
|
195
|
-
debug(
|
|
193
|
+
!manifest.apiRoutes.find((route)=>route.page.startsWith("/_flight/"))) {
|
|
194
|
+
debug("Adding RSC route to the manifest:", rscPath);
|
|
196
195
|
// NOTE: This might need to be sorted to the correct spot in the future.
|
|
197
196
|
manifest.apiRoutes.push({
|
|
198
|
-
file: (0,
|
|
197
|
+
file: (0, _resolveFrom().default)(this.projectRoot, "@expo/cli/static/template/[...rsc]+api.ts"),
|
|
199
198
|
page: rscPath,
|
|
200
|
-
namedRegex:
|
|
199
|
+
namedRegex: "^/_flight(?:/(?<rsc>.+?))?(?:/)?$",
|
|
201
200
|
routeKeys: {
|
|
202
|
-
rsc:
|
|
201
|
+
rsc: "rsc"
|
|
203
202
|
}
|
|
204
203
|
});
|
|
205
204
|
}
|
|
@@ -208,21 +207,21 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
208
207
|
const contents = await this.bundleApiRoute(filepath, {
|
|
209
208
|
platform
|
|
210
209
|
});
|
|
211
|
-
const artifactFilename = route.page === rscPath ? (0, _metroOptions.convertPathToModuleSpecifier)(_path().default.join(outputDir,
|
|
210
|
+
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"))));
|
|
212
211
|
if (contents) {
|
|
213
212
|
let src = contents.src;
|
|
214
213
|
if (includeSourceMaps && contents.map) {
|
|
215
214
|
// TODO(kitten): Merge the source map transformer in the future
|
|
216
215
|
// https://github.com/expo/expo/blob/0dffdb15/packages/%40expo/metro-config/src/serializer/serializeChunks.ts#L422-L439
|
|
217
216
|
// Alternatively, check whether `sourcesRoot` helps here
|
|
218
|
-
const artifactBasename = encodeURIComponent(_path().default.basename(artifactFilename) +
|
|
217
|
+
const artifactBasename = encodeURIComponent(_path().default.basename(artifactFilename) + ".map");
|
|
219
218
|
src = src.replace(/\/\/# sourceMappingURL=.*/g, `//# sourceMappingURL=${artifactBasename}`);
|
|
220
|
-
const parsedMap = typeof contents.map ===
|
|
221
|
-
files.set(artifactFilename +
|
|
219
|
+
const parsedMap = typeof contents.map === "string" ? JSON.parse(contents.map) : contents.map;
|
|
220
|
+
files.set(artifactFilename + ".map", {
|
|
222
221
|
contents: JSON.stringify({
|
|
223
222
|
version: parsedMap.version,
|
|
224
223
|
sources: parsedMap.sources.map((source)=>{
|
|
225
|
-
source = typeof source ===
|
|
224
|
+
source = typeof source === "string" && source.startsWith(this.projectRoot) ? _path().default.relative(this.projectRoot, source) : source;
|
|
226
225
|
return (0, _metroOptions.convertPathToModuleSpecifier)(source);
|
|
227
226
|
}),
|
|
228
227
|
sourcesContent: new Array(parsedMap.sources.length).fill(null),
|
|
@@ -230,13 +229,13 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
230
229
|
mappings: parsedMap.mappings
|
|
231
230
|
}),
|
|
232
231
|
apiRouteId: route.page,
|
|
233
|
-
targetDomain:
|
|
232
|
+
targetDomain: "server"
|
|
234
233
|
});
|
|
235
234
|
}
|
|
236
235
|
files.set(artifactFilename, {
|
|
237
236
|
contents: src,
|
|
238
237
|
apiRouteId: route.page,
|
|
239
|
-
targetDomain:
|
|
238
|
+
targetDomain: "server"
|
|
240
239
|
});
|
|
241
240
|
}
|
|
242
241
|
// Remap the manifest files to represent the output files.
|
|
@@ -250,25 +249,25 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
250
249
|
files
|
|
251
250
|
};
|
|
252
251
|
}
|
|
253
|
-
async getExpoRouterRoutesManifestAsync({ appDir
|
|
254
|
-
var
|
|
252
|
+
async getExpoRouterRoutesManifestAsync({ appDir }) {
|
|
253
|
+
var ref, ref1;
|
|
255
254
|
// getBuiltTimeServerManifest
|
|
256
|
-
const { exp
|
|
255
|
+
const { exp } = (0, _config().getConfig)(this.projectRoot);
|
|
257
256
|
const manifest = await (0, _fetchRouterManifest.fetchManifest)(this.projectRoot, {
|
|
258
|
-
...(
|
|
257
|
+
...(ref = exp.extra) == null ? void 0 : (ref1 = ref.router) == null ? void 0 : ref1.platformRoutes,
|
|
259
258
|
asJson: true,
|
|
260
259
|
appDir
|
|
261
260
|
});
|
|
262
261
|
if (!manifest) {
|
|
263
|
-
throw new _errors.CommandError(
|
|
262
|
+
throw new _errors.CommandError("EXPO_ROUTER_SERVER_MANIFEST", "Unexpected error: server manifest could not be fetched.");
|
|
264
263
|
}
|
|
265
264
|
return manifest;
|
|
266
265
|
}
|
|
267
266
|
async getServerManifestAsync() {
|
|
268
267
|
// NOTE: This could probably be folded back into `renderStaticContent` when expo-asset and font support RSC.
|
|
269
|
-
const { getBuildTimeServerManifestAsync, getManifest
|
|
268
|
+
const { getBuildTimeServerManifestAsync , getManifest } = await this.ssrLoadModule("expo-router/build/static/getServerManifest.js", {
|
|
270
269
|
// Only use react-server environment when the routes are using react-server rendering by default.
|
|
271
|
-
environment: this.isReactServerRoutesEnabled ?
|
|
270
|
+
environment: this.isReactServerRoutesEnabled ? "react-server" : "node"
|
|
272
271
|
});
|
|
273
272
|
return {
|
|
274
273
|
serverManifest: await getBuildTimeServerManifestAsync(),
|
|
@@ -276,20 +275,20 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
276
275
|
};
|
|
277
276
|
}
|
|
278
277
|
async getStaticRenderFunctionAsync() {
|
|
279
|
-
var
|
|
278
|
+
var ref;
|
|
280
279
|
const url = this.getDevServerUrlOrAssert();
|
|
281
|
-
const { getStaticContent, getManifest, getBuildTimeServerManifestAsync
|
|
280
|
+
const { getStaticContent , getManifest , getBuildTimeServerManifestAsync } = await this.ssrLoadModule("expo-router/node/render.js", {
|
|
282
281
|
// This must always use the legacy rendering resolution (no `react-server`) because it leverages
|
|
283
282
|
// the previous React SSG utilities which aren't available in React 19.
|
|
284
|
-
environment:
|
|
283
|
+
environment: "node"
|
|
285
284
|
});
|
|
286
|
-
const { exp
|
|
285
|
+
const { exp } = (0, _config().getConfig)(this.projectRoot);
|
|
287
286
|
return {
|
|
288
287
|
serverManifest: await getBuildTimeServerManifestAsync(),
|
|
289
288
|
// Get routes from Expo Router.
|
|
290
289
|
manifest: await getManifest({
|
|
291
290
|
preserveApiRoutes: false,
|
|
292
|
-
...(
|
|
291
|
+
...(ref = exp.extra) == null ? void 0 : ref.router
|
|
293
292
|
}),
|
|
294
293
|
// Get route generating function
|
|
295
294
|
async renderAsync (path) {
|
|
@@ -297,10 +296,10 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
297
296
|
}
|
|
298
297
|
};
|
|
299
298
|
}
|
|
300
|
-
async getStaticResourcesAsync({ includeSourceMaps, mainModuleName, clientBoundaries =
|
|
301
|
-
const { mode, minify, isExporting, baseUrl, reactCompiler, routerRoot, asyncRoutes
|
|
302
|
-
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && routerRoot != null && reactCompiler != null && asyncRoutes != null,
|
|
303
|
-
const resolvedMainModuleName = mainModuleName ??
|
|
299
|
+
async getStaticResourcesAsync({ includeSourceMaps , mainModuleName , clientBoundaries =this.instanceMetroOptions.clientBoundaries ?? [] , platform ="web" } = {}) {
|
|
300
|
+
const { mode , minify , isExporting , baseUrl , reactCompiler , routerRoot , asyncRoutes } = this.instanceMetroOptions;
|
|
301
|
+
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && routerRoot != null && reactCompiler != null && asyncRoutes != null, "The server must be started before calling getStaticResourcesAsync.");
|
|
302
|
+
const resolvedMainModuleName = mainModuleName ?? "./" + (0, _manifestMiddleware.resolveMainModuleName)(this.projectRoot, {
|
|
304
303
|
platform
|
|
305
304
|
});
|
|
306
305
|
return await this.metroImportAsArtifactsAsync(resolvedMainModuleName, {
|
|
@@ -308,7 +307,7 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
308
307
|
platform,
|
|
309
308
|
mode,
|
|
310
309
|
minify,
|
|
311
|
-
environment:
|
|
310
|
+
environment: "client",
|
|
312
311
|
serializerIncludeMaps: includeSourceMaps,
|
|
313
312
|
mainModuleName: resolvedMainModuleName,
|
|
314
313
|
lazy: (0, _metroOptions.shouldEnableAsyncImports)(this.projectRoot),
|
|
@@ -322,16 +321,16 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
322
321
|
});
|
|
323
322
|
}
|
|
324
323
|
async getStaticPageAsync(pathname) {
|
|
325
|
-
const { mode, isExporting, clientBoundaries, baseUrl, reactCompiler, routerRoot, asyncRoutes
|
|
326
|
-
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && reactCompiler != null && routerRoot != null && asyncRoutes != null,
|
|
327
|
-
const platform =
|
|
324
|
+
const { mode , isExporting , clientBoundaries , baseUrl , reactCompiler , routerRoot , asyncRoutes } = this.instanceMetroOptions;
|
|
325
|
+
(0, _assert().default)(mode != null && isExporting != null && baseUrl != null && reactCompiler != null && routerRoot != null && asyncRoutes != null, "The server must be started before calling getStaticPageAsync.");
|
|
326
|
+
const platform = "web";
|
|
328
327
|
const devBundleUrlPathname = (0, _metroOptions.createBundleUrlPath)({
|
|
329
328
|
splitChunks: isExporting && !_env1.env.EXPO_NO_BUNDLE_SPLITTING,
|
|
330
329
|
platform,
|
|
331
330
|
mode,
|
|
332
|
-
environment:
|
|
331
|
+
environment: "client",
|
|
333
332
|
reactCompiler,
|
|
334
|
-
mainModuleName: (0,
|
|
333
|
+
mainModuleName: (0, _manifestMiddleware.resolveMainModuleName)(this.projectRoot, {
|
|
335
334
|
platform
|
|
336
335
|
}),
|
|
337
336
|
lazy: (0, _metroOptions.shouldEnableAsyncImports)(this.projectRoot),
|
|
@@ -343,10 +342,10 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
343
342
|
bytecode: false
|
|
344
343
|
});
|
|
345
344
|
const bundleStaticHtml = async ()=>{
|
|
346
|
-
const { getStaticContent
|
|
345
|
+
const { getStaticContent } = await this.ssrLoadModule("expo-router/node/render.js", {
|
|
347
346
|
// This must always use the legacy rendering resolution (no `react-server`) because it leverages
|
|
348
347
|
// the previous React SSG utilities which aren't available in React 19.
|
|
349
|
-
environment:
|
|
348
|
+
environment: "node",
|
|
350
349
|
minify: false,
|
|
351
350
|
isExporting,
|
|
352
351
|
platform
|
|
@@ -354,11 +353,11 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
354
353
|
const location = new URL(pathname, this.getDevServerUrlOrAssert());
|
|
355
354
|
return await getStaticContent(location);
|
|
356
355
|
};
|
|
357
|
-
const [{ artifacts: resources
|
|
356
|
+
const [{ artifacts: resources }, staticHtml] = await Promise.all([
|
|
358
357
|
this.getStaticResourcesAsync({
|
|
359
358
|
clientBoundaries: []
|
|
360
359
|
}),
|
|
361
|
-
bundleStaticHtml()
|
|
360
|
+
bundleStaticHtml(),
|
|
362
361
|
]);
|
|
363
362
|
const content = (0, _serializeHtml.serializeHtmlWithAssets)({
|
|
364
363
|
isExporting,
|
|
@@ -373,9 +372,23 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
373
372
|
resources
|
|
374
373
|
};
|
|
375
374
|
}
|
|
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
|
+
};
|
|
376
389
|
async metroImportAsArtifactsAsync(filePath, specificOptions = {}) {
|
|
377
390
|
const results = await this.ssrLoadModuleContents(filePath, {
|
|
378
|
-
serializerOutput:
|
|
391
|
+
serializerOutput: "static",
|
|
379
392
|
...specificOptions
|
|
380
393
|
});
|
|
381
394
|
// NOTE: This could potentially need more validation in the future.
|
|
@@ -388,22 +401,22 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
388
401
|
map: results.map
|
|
389
402
|
};
|
|
390
403
|
}
|
|
391
|
-
throw new _errors.CommandError(
|
|
404
|
+
throw new _errors.CommandError("Invalid bundler results: " + results);
|
|
392
405
|
}
|
|
393
406
|
async metroLoadModuleContents(filePath, specificOptions, extraOptions = {}) {
|
|
394
|
-
const { baseUrl
|
|
395
|
-
(0, _assert().default)(baseUrl != null,
|
|
407
|
+
const { baseUrl } = this.instanceMetroOptions;
|
|
408
|
+
(0, _assert().default)(baseUrl != null, "The server must be started before calling metroLoadModuleContents.");
|
|
396
409
|
const opts = {
|
|
397
410
|
// TODO: Possibly issues with using an absolute path here...
|
|
398
411
|
// mainModuleName: filePath,
|
|
399
412
|
lazy: false,
|
|
400
413
|
asyncRoutes: false,
|
|
401
414
|
inlineSourceMap: false,
|
|
402
|
-
engine:
|
|
415
|
+
engine: "hermes",
|
|
403
416
|
minify: false,
|
|
404
417
|
// bytecode: false,
|
|
405
418
|
// Bundle in Node.js mode for SSR.
|
|
406
|
-
environment:
|
|
419
|
+
environment: "node",
|
|
407
420
|
// platform: 'web',
|
|
408
421
|
// mode: 'development',
|
|
409
422
|
//
|
|
@@ -422,10 +435,10 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
422
435
|
dev: expoBundleOptions.dev ?? true,
|
|
423
436
|
hot: true,
|
|
424
437
|
minify: expoBundleOptions.minify ?? false,
|
|
425
|
-
type:
|
|
426
|
-
unstable_transformProfile: extraOptions.unstable_transformProfile ?? expoBundleOptions.unstable_transformProfile ??
|
|
438
|
+
type: "module",
|
|
439
|
+
unstable_transformProfile: extraOptions.unstable_transformProfile ?? expoBundleOptions.unstable_transformProfile ?? "default",
|
|
427
440
|
customTransformOptions: expoBundleOptions.customTransformOptions ?? Object.create(null),
|
|
428
|
-
platform: expoBundleOptions.platform ??
|
|
441
|
+
platform: expoBundleOptions.platform ?? "web",
|
|
429
442
|
// @ts-expect-error: `runtimeBytecodeVersion` does not exist in `expoBundleOptions` or `TransformInputOptions`
|
|
430
443
|
runtimeBytecodeVersion: expoBundleOptions.runtimeBytecodeVersion
|
|
431
444
|
};
|
|
@@ -463,21 +476,21 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
463
476
|
};
|
|
464
477
|
}
|
|
465
478
|
async ssrLoadModuleContents(filePath, specificOptions = {}) {
|
|
466
|
-
const { baseUrl, routerRoot, isExporting
|
|
467
|
-
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null,
|
|
479
|
+
const { baseUrl , routerRoot , isExporting } = this.instanceMetroOptions;
|
|
480
|
+
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null, "The server must be started before calling ssrLoadModuleContents.");
|
|
468
481
|
const opts = {
|
|
469
482
|
// TODO: Possibly issues with using an absolute path here...
|
|
470
483
|
mainModuleName: (0, _metroOptions.convertPathToModuleSpecifier)(filePath),
|
|
471
484
|
lazy: false,
|
|
472
485
|
asyncRoutes: false,
|
|
473
486
|
inlineSourceMap: false,
|
|
474
|
-
engine:
|
|
487
|
+
engine: "hermes",
|
|
475
488
|
minify: false,
|
|
476
489
|
bytecode: false,
|
|
477
490
|
// Bundle in Node.js mode for SSR unless RSC is enabled.
|
|
478
|
-
environment: this.isReactServerComponentsEnabled ?
|
|
479
|
-
platform:
|
|
480
|
-
mode:
|
|
491
|
+
environment: this.isReactServerComponentsEnabled ? "react-server" : "node",
|
|
492
|
+
platform: "web",
|
|
493
|
+
mode: "development",
|
|
481
494
|
//
|
|
482
495
|
...this.instanceMetroOptions,
|
|
483
496
|
// Mostly disable compiler in SSR bundles.
|
|
@@ -488,16 +501,16 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
488
501
|
...specificOptions
|
|
489
502
|
};
|
|
490
503
|
// https://github.com/facebook/metro/blob/2405f2f6c37a1b641cc379b9c733b1eff0c1c2a1/packages/metro/src/lib/parseOptionsFromUrl.js#L55-L87
|
|
491
|
-
const { filename, bundle, map, ...rest } = await this.metroLoadModuleContents(filePath, opts);
|
|
504
|
+
const { filename , bundle , map , ...rest } = await this.metroLoadModuleContents(filePath, opts);
|
|
492
505
|
const scriptContents = wrapBundle(bundle);
|
|
493
506
|
if (map) {
|
|
494
|
-
debug(
|
|
507
|
+
debug("Registering SSR source map for:", filename);
|
|
495
508
|
_getStaticRenderFunctions.cachedSourceMaps.set(filename, {
|
|
496
509
|
url: this.projectRoot,
|
|
497
510
|
map
|
|
498
511
|
});
|
|
499
512
|
} else {
|
|
500
|
-
debug(
|
|
513
|
+
debug("No SSR source map found for:", filename);
|
|
501
514
|
}
|
|
502
515
|
return {
|
|
503
516
|
...rest,
|
|
@@ -515,20 +528,20 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
515
528
|
async singlePageReactServerComponentExportAsync(options, files, extraOptions = {}) {
|
|
516
529
|
const getReactServerReferences = (artifacts)=>{
|
|
517
530
|
// Get the React server action boundaries from the client bundle.
|
|
518
|
-
return unique(artifacts.filter((a)=>a.type ===
|
|
519
|
-
var
|
|
520
|
-
return (
|
|
531
|
+
return unique(artifacts.filter((a)=>a.type === "js").map((artifact)=>{
|
|
532
|
+
var ref;
|
|
533
|
+
return (ref = artifact.metadata.reactServerReferences) == null ? void 0 : ref.map((ref)=>(0, _createServerComponentsMiddleware.fileURLToFilePath)(ref));
|
|
521
534
|
})// TODO: Segment by module for splitting.
|
|
522
535
|
.flat().filter(Boolean));
|
|
523
536
|
};
|
|
524
537
|
// NOTE(EvanBacon): This will not support any code elimination since it's a static pass.
|
|
525
|
-
let { reactClientReferences: clientBoundaries, reactServerReferences: serverActionReferencesInServer, cssModules } = await this.rscRenderer.getExpoRouterClientReferencesAsync({
|
|
538
|
+
let { reactClientReferences: clientBoundaries , reactServerReferences: serverActionReferencesInServer , cssModules , } = await this.rscRenderer.getExpoRouterClientReferencesAsync({
|
|
526
539
|
platform: options.platform,
|
|
527
540
|
domRoot: options.domRoot
|
|
528
541
|
}, files);
|
|
529
542
|
// TODO: The output keys should be in production format or use a lookup manifest.
|
|
530
543
|
const processClientBoundaries = async (reactServerReferences)=>{
|
|
531
|
-
debug(
|
|
544
|
+
debug("Evaluated client boundaries:", clientBoundaries);
|
|
532
545
|
// Run metro bundler and create the JS bundles/source maps.
|
|
533
546
|
const bundle = await this.legacySinglePageExportBundleAsync({
|
|
534
547
|
...options,
|
|
@@ -538,15 +551,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
538
551
|
const newReactServerReferences = getReactServerReferences(bundle.artifacts);
|
|
539
552
|
if (!newReactServerReferences) {
|
|
540
553
|
// Possible issue with babel plugin / metro-config.
|
|
541
|
-
throw new Error(
|
|
554
|
+
throw new Error("Static server action references were not returned from the Metro client bundle");
|
|
542
555
|
}
|
|
543
|
-
debug(
|
|
556
|
+
debug("React server action boundaries from client:", newReactServerReferences);
|
|
544
557
|
const allKnownReactServerReferences = unique([
|
|
545
558
|
...reactServerReferences,
|
|
546
|
-
...newReactServerReferences
|
|
559
|
+
...newReactServerReferences,
|
|
547
560
|
]);
|
|
548
561
|
// 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.
|
|
549
|
-
const { clientBoundaries: nestedClientBoundaries
|
|
562
|
+
const { clientBoundaries: nestedClientBoundaries } = await this.rscRenderer.exportServerActionsAsync({
|
|
550
563
|
platform: options.platform,
|
|
551
564
|
domRoot: options.domRoot,
|
|
552
565
|
entryPoints: allKnownReactServerReferences
|
|
@@ -556,7 +569,7 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
556
569
|
if (!hasUniqueClientBoundaries) {
|
|
557
570
|
return bundle;
|
|
558
571
|
}
|
|
559
|
-
debug(
|
|
572
|
+
debug("Re-bundling client with nested client boundaries:", nestedClientBoundaries);
|
|
560
573
|
clientBoundaries = unique(clientBoundaries.concat(nestedClientBoundaries));
|
|
561
574
|
// Re-bundle the client with the new client boundaries that only exist in server actions that were imported from the client.
|
|
562
575
|
// Run metro bundler and create the JS bundles/source maps.
|
|
@@ -570,25 +583,25 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
570
583
|
const clientBoundariesAsOpaqueIds = clientBoundaries.map((boundary)=>// NOTE(cedric): relative module specifiers / IDs should always be POSIX formatted
|
|
571
584
|
(0, _filePath.toPosixPath)(_path().default.relative(serverRoot, boundary)));
|
|
572
585
|
const moduleIdToSplitBundle = bundle.artifacts.map((artifact)=>{
|
|
573
|
-
var
|
|
574
|
-
return (artifact == null ? void 0 : (
|
|
586
|
+
var ref;
|
|
587
|
+
return (artifact == null ? void 0 : (ref = artifact.metadata) == null ? void 0 : ref.paths) && Object.values(artifact.metadata.paths);
|
|
575
588
|
}).filter(Boolean).flat().reduce((acc, paths)=>({
|
|
576
589
|
...acc,
|
|
577
590
|
...paths
|
|
578
591
|
}), {});
|
|
579
|
-
debug(
|
|
592
|
+
debug("SSR Manifest:", moduleIdToSplitBundle, clientBoundariesAsOpaqueIds);
|
|
580
593
|
const ssrManifest = new Map();
|
|
581
594
|
if (Object.keys(moduleIdToSplitBundle).length) {
|
|
582
595
|
clientBoundariesAsOpaqueIds.forEach((boundary)=>{
|
|
583
596
|
if (boundary in moduleIdToSplitBundle) {
|
|
584
597
|
ssrManifest.set(boundary, moduleIdToSplitBundle[boundary]);
|
|
585
598
|
} else {
|
|
586
|
-
throw new Error(`Could not find boundary "${boundary}" in the SSR manifest. Available: ${Object.keys(moduleIdToSplitBundle).join(
|
|
599
|
+
throw new Error(`Could not find boundary "${boundary}" in the SSR manifest. Available: ${Object.keys(moduleIdToSplitBundle).join(", ")}`);
|
|
587
600
|
}
|
|
588
601
|
});
|
|
589
602
|
} else {
|
|
590
603
|
// Native apps with bundle splitting disabled.
|
|
591
|
-
debug(
|
|
604
|
+
debug("No split bundles");
|
|
592
605
|
clientBoundariesAsOpaqueIds.forEach((boundary)=>{
|
|
593
606
|
// @ts-expect-error
|
|
594
607
|
ssrManifest.set(boundary, null);
|
|
@@ -601,14 +614,14 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
601
614
|
}, files);
|
|
602
615
|
// Save the SSR manifest so we can perform more replacements in the server renderer and with server actions.
|
|
603
616
|
files.set(`_expo/rsc/${options.platform}/ssr-manifest.js`, {
|
|
604
|
-
targetDomain:
|
|
605
|
-
contents:
|
|
617
|
+
targetDomain: "server",
|
|
618
|
+
contents: "module.exports = " + JSON.stringify(// TODO: Add a less leaky version of this across the framework with just [key, value] (module ID, chunk).
|
|
606
619
|
Object.fromEntries(Array.from(ssrManifest.entries()).map(([key, value])=>[
|
|
607
620
|
_path().default.join(serverRoot, key),
|
|
608
621
|
[
|
|
609
622
|
key,
|
|
610
623
|
value
|
|
611
|
-
]
|
|
624
|
+
],
|
|
612
625
|
])))
|
|
613
626
|
});
|
|
614
627
|
return {
|
|
@@ -617,21 +630,21 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
617
630
|
};
|
|
618
631
|
}
|
|
619
632
|
async legacySinglePageExportBundleAsync(options, extraOptions = {}) {
|
|
620
|
-
const { baseUrl, routerRoot, isExporting
|
|
621
|
-
(0, _assert().default)(options.mainModuleName != null,
|
|
622
|
-
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null,
|
|
633
|
+
const { baseUrl , routerRoot , isExporting } = this.instanceMetroOptions;
|
|
634
|
+
(0, _assert().default)(options.mainModuleName != null, "mainModuleName must be provided in options.");
|
|
635
|
+
(0, _assert().default)(baseUrl != null && routerRoot != null && isExporting != null, "The server must be started before calling legacySinglePageExportBundleAsync.");
|
|
623
636
|
const opts = {
|
|
624
637
|
...this.instanceMetroOptions,
|
|
625
638
|
baseUrl,
|
|
626
639
|
routerRoot,
|
|
627
640
|
isExporting,
|
|
628
641
|
...options,
|
|
629
|
-
environment:
|
|
630
|
-
serializerOutput:
|
|
642
|
+
environment: "client",
|
|
643
|
+
serializerOutput: "static"
|
|
631
644
|
};
|
|
632
645
|
// https://github.com/facebook/metro/blob/2405f2f6c37a1b641cc379b9c733b1eff0c1c2a1/packages/metro/src/lib/parseOptionsFromUrl.js#L55-L87
|
|
633
|
-
if (!opts.mainModuleName.startsWith(
|
|
634
|
-
opts.mainModuleName =
|
|
646
|
+
if (!opts.mainModuleName.startsWith("/") && !_path().default.isAbsolute(opts.mainModuleName)) {
|
|
647
|
+
opts.mainModuleName = "./" + opts.mainModuleName;
|
|
635
648
|
}
|
|
636
649
|
const output = await this.metroLoadModuleContents(opts.mainModuleName, opts, extraOptions);
|
|
637
650
|
return {
|
|
@@ -641,12 +654,12 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
641
654
|
}
|
|
642
655
|
async watchEnvironmentVariables() {
|
|
643
656
|
if (!this.instance) {
|
|
644
|
-
throw new Error(
|
|
657
|
+
throw new Error("Cannot observe environment variable changes without a running Metro instance.");
|
|
645
658
|
}
|
|
646
659
|
if (!this.metro) {
|
|
647
660
|
// This can happen when the run command is used and the server is already running in another
|
|
648
661
|
// process.
|
|
649
|
-
debug(
|
|
662
|
+
debug("Skipping Environment Variable observation because Metro is not running (headless).");
|
|
650
663
|
return;
|
|
651
664
|
}
|
|
652
665
|
const envFiles = _env().getFiles(process.env.NODE_ENV).map((fileName)=>_path().default.join(this.projectRoot, fileName));
|
|
@@ -654,43 +667,44 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
654
667
|
metro: this.metro,
|
|
655
668
|
server: this.instance.server
|
|
656
669
|
}, envFiles, ()=>{
|
|
657
|
-
debug(
|
|
670
|
+
debug("Reloading environment variables...");
|
|
658
671
|
// Force reload the environment variables.
|
|
659
672
|
_env().load(this.projectRoot, {
|
|
660
673
|
force: true
|
|
661
674
|
});
|
|
662
675
|
});
|
|
663
676
|
}
|
|
677
|
+
rscRenderer = null;
|
|
664
678
|
async startImplementationAsync(options) {
|
|
665
|
-
var
|
|
679
|
+
var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, ref10;
|
|
666
680
|
options.port = await this.resolvePortAsync(options);
|
|
667
681
|
this.urlCreator = this.getUrlCreator(options);
|
|
668
682
|
const config = (0, _config().getConfig)(this.projectRoot, {
|
|
669
683
|
skipSDKVersionRequirement: true
|
|
670
684
|
});
|
|
671
|
-
const { exp
|
|
685
|
+
const { exp } = config;
|
|
672
686
|
// NOTE: This will change in the future when it's less experimental, we enable React 19, and turn on more RSC flags by default.
|
|
673
|
-
const isReactServerComponentsEnabled = !!((
|
|
674
|
-
const isReactServerActionsOnlyEnabled = !((
|
|
687
|
+
const isReactServerComponentsEnabled = !!((ref = exp.experiments) == null ? void 0 : ref.reactServerComponentRoutes) || !!((ref1 = exp.experiments) == null ? void 0 : ref1.reactServerFunctions);
|
|
688
|
+
const isReactServerActionsOnlyEnabled = !((ref2 = exp.experiments) == null ? void 0 : ref2.reactServerComponentRoutes) && !!((ref3 = exp.experiments) == null ? void 0 : ref3.reactServerFunctions);
|
|
675
689
|
this.isReactServerComponentsEnabled = isReactServerComponentsEnabled;
|
|
676
|
-
this.isReactServerRoutesEnabled = !!((
|
|
690
|
+
this.isReactServerRoutesEnabled = !!((ref4 = exp.experiments) == null ? void 0 : ref4.reactServerComponentRoutes);
|
|
677
691
|
const useServerRendering = [
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
].includes(((
|
|
681
|
-
const hasApiRoutes = isReactServerComponentsEnabled || ((
|
|
692
|
+
"static",
|
|
693
|
+
"server"
|
|
694
|
+
].includes(((ref5 = exp.web) == null ? void 0 : ref5.output) ?? "");
|
|
695
|
+
const hasApiRoutes = isReactServerComponentsEnabled || ((ref6 = exp.web) == null ? void 0 : ref6.output) === "server";
|
|
682
696
|
const baseUrl = (0, _metroOptions.getBaseUrlFromExpoConfig)(exp);
|
|
683
|
-
const asyncRoutes = (0, _metroOptions.getAsyncRoutesFromExpoConfig)(exp, options.mode ??
|
|
697
|
+
const asyncRoutes = (0, _metroOptions.getAsyncRoutesFromExpoConfig)(exp, options.mode ?? "development", "web");
|
|
684
698
|
const routerRoot = (0, _router.getRouterDirectoryModuleIdWithManifest)(this.projectRoot, exp);
|
|
685
|
-
const reactCompiler = !!((
|
|
699
|
+
const reactCompiler = !!((ref7 = exp.experiments) == null ? void 0 : ref7.reactCompiler);
|
|
686
700
|
const appDir = _path().default.join(this.projectRoot, routerRoot);
|
|
687
|
-
const mode = options.mode ??
|
|
688
|
-
if (isReactServerComponentsEnabled && ((
|
|
701
|
+
const mode = options.mode ?? "development";
|
|
702
|
+
if (isReactServerComponentsEnabled && ((ref8 = exp.web) == null ? void 0 : ref8.output) === "static") {
|
|
689
703
|
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.`);
|
|
690
704
|
}
|
|
691
705
|
// Error early about the window.location polyfill when React Server Components are enabled.
|
|
692
|
-
if (isReactServerComponentsEnabled && (exp == null ? void 0 : (
|
|
693
|
-
const configPath = config.dynamicConfigPath ?? config.staticConfigPath ??
|
|
706
|
+
if (isReactServerComponentsEnabled && (exp == null ? void 0 : (ref9 = exp.extra) == null ? void 0 : (ref10 = ref9.router) == null ? void 0 : ref10.origin) === false) {
|
|
707
|
+
const configPath = config.dynamicConfigPath ?? config.staticConfigPath ?? "/app.json";
|
|
694
708
|
const configFileName = _path().default.basename(configPath);
|
|
695
709
|
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.`);
|
|
696
710
|
}
|
|
@@ -711,14 +725,14 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
711
725
|
};
|
|
712
726
|
// Required for symbolication:
|
|
713
727
|
process.env.EXPO_DEV_SERVER_ORIGIN = `http://localhost:${options.port}`;
|
|
714
|
-
const { metro, hmrServer, server, middleware, messageSocket
|
|
728
|
+
const { metro , hmrServer , server , middleware , messageSocket } = await (0, _instantiateMetro.instantiateMetroAsync)(this, parsedOptions, {
|
|
715
729
|
isExporting: !!options.isExporting,
|
|
716
730
|
exp
|
|
717
731
|
});
|
|
718
732
|
if (!options.isExporting) {
|
|
719
733
|
const manifestMiddleware = await this.getManifestMiddlewareAsync(options);
|
|
720
734
|
// Important that we noop source maps for context modules as soon as possible.
|
|
721
|
-
(0, _mutations.prependMiddleware)(middleware, new
|
|
735
|
+
(0, _mutations.prependMiddleware)(middleware, new _contextModuleSourceMapsMiddleware.ContextModuleSourceMapsMiddleware().getHandler());
|
|
722
736
|
// We need the manifest handler to be the first middleware to run so our
|
|
723
737
|
// routes take precedence over static files. For example, the manifest is
|
|
724
738
|
// served from '/' and if the user has an index.html file in their project
|
|
@@ -726,41 +740,41 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
726
740
|
// and serve index.html instead of the manifest.
|
|
727
741
|
// https://github.com/expo/expo/issues/13114
|
|
728
742
|
(0, _mutations.prependMiddleware)(middleware, manifestMiddleware.getHandler());
|
|
729
|
-
middleware.use(new
|
|
743
|
+
middleware.use(new _interstitialPageMiddleware.InterstitialPageMiddleware(this.projectRoot, {
|
|
730
744
|
// TODO: Prevent this from becoming stale.
|
|
731
745
|
scheme: options.location.scheme ?? null
|
|
732
746
|
}).getHandler());
|
|
733
|
-
middleware.use(new
|
|
734
|
-
middleware.use(new
|
|
735
|
-
const deepLinkMiddleware = new
|
|
736
|
-
getLocation: ({ runtime
|
|
737
|
-
if (runtime ===
|
|
738
|
-
var
|
|
739
|
-
return (
|
|
747
|
+
middleware.use(new _reactDevToolsPageMiddleware.ReactDevToolsPageMiddleware(this.projectRoot).getHandler());
|
|
748
|
+
middleware.use(new _devToolsPluginMiddleware.DevToolsPluginMiddleware(this.projectRoot, this.devToolsPluginManager).getHandler());
|
|
749
|
+
const deepLinkMiddleware = new _runtimeRedirectMiddleware.RuntimeRedirectMiddleware(this.projectRoot, {
|
|
750
|
+
getLocation: ({ runtime })=>{
|
|
751
|
+
if (runtime === "custom") {
|
|
752
|
+
var ref;
|
|
753
|
+
return (ref = this.urlCreator) == null ? void 0 : ref.constructDevClientUrl();
|
|
740
754
|
} else {
|
|
741
|
-
var
|
|
742
|
-
return (
|
|
743
|
-
scheme:
|
|
755
|
+
var ref1;
|
|
756
|
+
return (ref1 = this.urlCreator) == null ? void 0 : ref1.constructUrl({
|
|
757
|
+
scheme: "exp"
|
|
744
758
|
});
|
|
745
759
|
}
|
|
746
760
|
}
|
|
747
761
|
});
|
|
748
762
|
middleware.use(deepLinkMiddleware.getHandler());
|
|
749
763
|
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
750
|
-
const domComponentRenderer = (0,
|
|
764
|
+
const domComponentRenderer = (0, _domComponentsMiddleware.createDomComponentsMiddleware)({
|
|
751
765
|
metroRoot: serverRoot,
|
|
752
766
|
projectRoot: this.projectRoot
|
|
753
767
|
}, instanceMetroOptions);
|
|
754
768
|
// Add support for DOM components.
|
|
755
769
|
// TODO: Maybe put behind a flag for now?
|
|
756
770
|
middleware.use(domComponentRenderer);
|
|
757
|
-
middleware.use(new
|
|
771
|
+
middleware.use(new _createFileMiddleware.CreateFileMiddleware(this.projectRoot).getHandler());
|
|
758
772
|
// Append support for redirecting unhandled requests to the index.html page on web.
|
|
759
773
|
if (this.isTargetingWeb()) {
|
|
760
774
|
// This MUST be after the manifest middleware so it doesn't have a chance to serve the template `public/index.html`.
|
|
761
|
-
middleware.use(new
|
|
775
|
+
middleware.use(new _serveStaticMiddleware.ServeStaticMiddleware(this.projectRoot).getHandler());
|
|
762
776
|
// This should come after the static middleware so it doesn't serve the favicon from `public/favicon.ico`.
|
|
763
|
-
middleware.use(new
|
|
777
|
+
middleware.use(new _faviconMiddleware.FaviconMiddleware(this.projectRoot).getHandler());
|
|
764
778
|
}
|
|
765
779
|
if (useServerRendering || isReactServerComponentsEnabled) {
|
|
766
780
|
(0, _waitForMetroToObserveTypeScriptFile.observeAnyFileChanges)({
|
|
@@ -778,8 +792,8 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
778
792
|
for (const event of events){
|
|
779
793
|
var // If the user did not delete a file that matches the Expo Router API Route convention, then we should warn that
|
|
780
794
|
// API Routes are not enabled in the project.
|
|
781
|
-
|
|
782
|
-
if (((
|
|
795
|
+
ref;
|
|
796
|
+
if (((ref = event.metadata) == null ? void 0 : ref.type) !== "d" && // Ensure the file is in the project's routes directory to prevent false positives in monorepos.
|
|
783
797
|
event.filePath.startsWith(appDir) && (0, _router.isApiRouteConvention)(event.filePath)) {
|
|
784
798
|
(0, _router.warnInvalidWebOutput)();
|
|
785
799
|
}
|
|
@@ -792,7 +806,7 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
792
806
|
this.bindRSCDevModuleInjectionHandler();
|
|
793
807
|
const rscMiddleware = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
794
808
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
795
|
-
rscPath:
|
|
809
|
+
rscPath: "/_flight",
|
|
796
810
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
797
811
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
798
812
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
@@ -806,16 +820,16 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
806
820
|
if (this.isTargetingWeb()) {
|
|
807
821
|
if (!useServerRendering) {
|
|
808
822
|
// This MUST run last since it's the fallback.
|
|
809
|
-
middleware.use(new
|
|
823
|
+
middleware.use(new _historyFallbackMiddleware.HistoryFallbackMiddleware(manifestMiddleware.getHandler().internal).getHandler());
|
|
810
824
|
} else {
|
|
811
|
-
var
|
|
825
|
+
var ref11;
|
|
812
826
|
middleware.use((0, _createServerRouteMiddleware.createRouteHandlerMiddleware)(this.projectRoot, {
|
|
813
827
|
appDir,
|
|
814
828
|
routerRoot,
|
|
815
829
|
config,
|
|
816
|
-
...(
|
|
830
|
+
...(ref11 = config.exp.extra) == null ? void 0 : ref11.router,
|
|
817
831
|
bundleApiRoute: (functionFilePath)=>this.ssrImportApiRoute(functionFilePath, {
|
|
818
|
-
platform:
|
|
832
|
+
platform: "web"
|
|
819
833
|
}),
|
|
820
834
|
getStaticPageAsync: async (pathname)=>{
|
|
821
835
|
// TODO: Add server rendering when RSC is enabled.
|
|
@@ -837,15 +851,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
837
851
|
// If React 19 is enabled, then add RSC middleware to the dev server.
|
|
838
852
|
if (isReactServerComponentsEnabled) {
|
|
839
853
|
this.bindRSCDevModuleInjectionHandler();
|
|
840
|
-
const
|
|
854
|
+
const rscMiddleware1 = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
841
855
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
842
|
-
rscPath:
|
|
856
|
+
rscPath: "/_flight",
|
|
843
857
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
844
858
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
845
859
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
846
860
|
createModuleId: metro._createModuleId.bind(metro)
|
|
847
861
|
});
|
|
848
|
-
this.rscRenderer =
|
|
862
|
+
this.rscRenderer = rscMiddleware1;
|
|
849
863
|
}
|
|
850
864
|
}
|
|
851
865
|
// Extend the close method to ensure that we clean up the local info.
|
|
@@ -868,65 +882,66 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
868
882
|
// The port is the main thing we want to send back.
|
|
869
883
|
port: options.port,
|
|
870
884
|
// localhost isn't always correct.
|
|
871
|
-
host:
|
|
885
|
+
host: "localhost",
|
|
872
886
|
// http is the only supported protocol on native.
|
|
873
887
|
url: `http://localhost:${options.port}`,
|
|
874
|
-
protocol:
|
|
888
|
+
protocol: "http"
|
|
875
889
|
},
|
|
876
890
|
middleware,
|
|
877
891
|
messageSocket
|
|
878
892
|
};
|
|
879
893
|
}
|
|
894
|
+
onReloadRscEvent = null;
|
|
880
895
|
async registerSsrHmrAsync(url, onReload) {
|
|
881
896
|
if (!this.hmrServer || this.ssrHmrClients.has(url)) {
|
|
882
897
|
return;
|
|
883
898
|
}
|
|
884
|
-
debug(
|
|
899
|
+
debug("[SSR] Register HMR:", url);
|
|
885
900
|
const sendFn = (message)=>{
|
|
886
901
|
const data = JSON.parse(String(message));
|
|
887
902
|
switch(data.type){
|
|
888
|
-
case
|
|
889
|
-
case
|
|
890
|
-
case
|
|
903
|
+
case "bundle-registered":
|
|
904
|
+
case "update-done":
|
|
905
|
+
case "update-start":
|
|
891
906
|
break;
|
|
892
|
-
case
|
|
907
|
+
case "update":
|
|
893
908
|
{
|
|
894
909
|
const update = data.body;
|
|
895
|
-
const { isInitialUpdate, added, modified, deleted } = update;
|
|
910
|
+
const { isInitialUpdate , added , modified , deleted , } = update;
|
|
896
911
|
const hasUpdate = added.length || modified.length || deleted.length;
|
|
897
912
|
// NOTE: We throw away the updates and instead simply send a trigger to the client to re-fetch the server route.
|
|
898
913
|
if (!isInitialUpdate && hasUpdate) {
|
|
899
914
|
// Clear all SSR modules before sending the reload event. This ensures that the next event will rebuild the in-memory state from scratch.
|
|
900
915
|
// @ts-expect-error
|
|
901
|
-
if (typeof globalThis.__c ===
|
|
916
|
+
if (typeof globalThis.__c === "function") globalThis.__c();
|
|
902
917
|
const allModuleIds = new Set([
|
|
903
918
|
...added,
|
|
904
919
|
...modified
|
|
905
920
|
].map((m)=>m.module[0]).concat(deleted));
|
|
906
921
|
const platforms = unique(Array.from(allModuleIds).map((moduleId)=>{
|
|
907
|
-
var
|
|
908
|
-
if (typeof moduleId !==
|
|
922
|
+
var ref;
|
|
923
|
+
if (typeof moduleId !== "string") {
|
|
909
924
|
return null;
|
|
910
925
|
}
|
|
911
926
|
// Extract platforms from the module IDs.
|
|
912
|
-
return ((
|
|
927
|
+
return ((ref = moduleId.match(/[?&]platform=([\w]+)/)) == null ? void 0 : ref[1]) ?? null;
|
|
913
928
|
}).filter(Boolean));
|
|
914
929
|
onReload(platforms);
|
|
915
930
|
}
|
|
916
931
|
}
|
|
917
932
|
break;
|
|
918
|
-
case
|
|
919
|
-
var
|
|
933
|
+
case "error":
|
|
934
|
+
var ref;
|
|
920
935
|
// GraphNotFound can mean that we have an issue in metroOptions where the URL doesn't match the object props.
|
|
921
|
-
_log.Log.error(
|
|
922
|
-
if (((
|
|
923
|
-
var
|
|
924
|
-
|
|
925
|
-
|
|
936
|
+
_log.Log.error("[SSR] HMR Error: " + JSON.stringify(data, null, 2));
|
|
937
|
+
if (((ref = data.body) == null ? void 0 : ref.type) === "GraphNotFoundError") {
|
|
938
|
+
var ref1;
|
|
939
|
+
_log.Log.error("Available SSR HMR keys:", // @ts-expect-error
|
|
940
|
+
((ref1 = this.metro) == null ? void 0 : ref1._bundler._revisionsByGraphId).keys());
|
|
926
941
|
}
|
|
927
942
|
break;
|
|
928
943
|
default:
|
|
929
|
-
debug(
|
|
944
|
+
debug("Unknown HMR message:", data);
|
|
930
945
|
break;
|
|
931
946
|
}
|
|
932
947
|
};
|
|
@@ -938,14 +953,14 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
938
953
|
}
|
|
939
954
|
async waitForTypeScriptAsync() {
|
|
940
955
|
if (!this.instance) {
|
|
941
|
-
throw new Error(
|
|
956
|
+
throw new Error("Cannot wait for TypeScript without a running server.");
|
|
942
957
|
}
|
|
943
958
|
return new Promise((resolve)=>{
|
|
944
959
|
if (!this.metro) {
|
|
945
960
|
// This can happen when the run command is used and the server is already running in another
|
|
946
961
|
// process. In this case we can't wait for the TypeScript check to complete because we don't
|
|
947
962
|
// have access to the Metro server.
|
|
948
|
-
debug(
|
|
963
|
+
debug("Skipping TypeScript check because Metro is not running (headless).");
|
|
949
964
|
return resolve(false);
|
|
950
965
|
}
|
|
951
966
|
const off = (0, _metroWatchTypeScriptFiles.metroWatchTypeScriptFiles)({
|
|
@@ -955,13 +970,13 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
955
970
|
tsconfig: true,
|
|
956
971
|
throttle: true,
|
|
957
972
|
eventTypes: [
|
|
958
|
-
|
|
959
|
-
|
|
973
|
+
"change",
|
|
974
|
+
"add"
|
|
960
975
|
],
|
|
961
976
|
callback: async ()=>{
|
|
962
977
|
// Run once, this prevents the TypeScript project prerequisite from running on every file change.
|
|
963
978
|
off();
|
|
964
|
-
const { TypeScriptProjectPrerequisite
|
|
979
|
+
const { TypeScriptProjectPrerequisite } = await Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../../doctor/typescript/TypeScriptProjectPrerequisite.js")));
|
|
965
980
|
try {
|
|
966
981
|
const req = new TypeScriptProjectPrerequisite(this.projectRoot);
|
|
967
982
|
await req.bootstrapAsync();
|
|
@@ -979,39 +994,41 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
979
994
|
});
|
|
980
995
|
}
|
|
981
996
|
async startTypeScriptServices() {
|
|
982
|
-
var
|
|
997
|
+
var ref;
|
|
983
998
|
return (0, _startTypescriptTypeGeneration.startTypescriptTypeGenerationAsync)({
|
|
984
|
-
server: (
|
|
999
|
+
server: (ref = this.instance) == null ? void 0 : ref.server,
|
|
985
1000
|
metro: this.metro,
|
|
986
1001
|
projectRoot: this.projectRoot
|
|
987
1002
|
});
|
|
988
1003
|
}
|
|
989
1004
|
getConfigModuleIds() {
|
|
990
1005
|
return [
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1006
|
+
"./metro.config.js",
|
|
1007
|
+
"./metro.config.json",
|
|
1008
|
+
"./rn-cli.config.js"
|
|
994
1009
|
];
|
|
995
1010
|
}
|
|
1011
|
+
// API Routes
|
|
1012
|
+
pendingRouteOperations = new Map();
|
|
996
1013
|
// Bundle the API Route with Metro and return the string contents to be evaluated in the server.
|
|
997
|
-
async bundleApiRoute(filePath, { platform
|
|
1014
|
+
async bundleApiRoute(filePath, { platform }) {
|
|
998
1015
|
if (this.pendingRouteOperations.has(filePath)) {
|
|
999
1016
|
return this.pendingRouteOperations.get(filePath);
|
|
1000
1017
|
}
|
|
1001
1018
|
const bundleAsync = async ()=>{
|
|
1002
1019
|
try {
|
|
1003
|
-
debug(
|
|
1020
|
+
debug("Bundle API route:", this.instanceMetroOptions.routerRoot, filePath);
|
|
1004
1021
|
return await this.ssrLoadModuleContents(filePath, {
|
|
1005
1022
|
isExporting: this.instanceMetroOptions.isExporting,
|
|
1006
1023
|
platform
|
|
1007
1024
|
});
|
|
1008
1025
|
} catch (error) {
|
|
1009
|
-
var
|
|
1010
|
-
const appDir = ((
|
|
1026
|
+
var ref;
|
|
1027
|
+
const appDir = ((ref = this.instanceMetroOptions) == null ? void 0 : ref.routerRoot) ? _path().default.join(this.projectRoot, this.instanceMetroOptions.routerRoot) : undefined;
|
|
1011
1028
|
const relativePath = appDir ? _path().default.relative(appDir, filePath) : filePath;
|
|
1012
1029
|
// Expected errors: invalid syntax, missing resolutions.
|
|
1013
1030
|
// Wrap with command error for better error messages.
|
|
1014
|
-
const err = new _errors.CommandError(
|
|
1031
|
+
const err = new _errors.CommandError("API_ROUTE", (0, _chalk().default)`Failed to bundle API Route: {bold ${relativePath}}\n\n` + error.message);
|
|
1015
1032
|
for(const key in error){
|
|
1016
1033
|
// @ts-expect-error
|
|
1017
1034
|
err[key] = error[key];
|
|
@@ -1025,7 +1042,7 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1025
1042
|
this.pendingRouteOperations.set(filePath, route);
|
|
1026
1043
|
return route;
|
|
1027
1044
|
}
|
|
1028
|
-
async ssrImportApiRoute(filePath, { platform
|
|
1045
|
+
async ssrImportApiRoute(filePath, { platform }) {
|
|
1029
1046
|
// TODO: Cache the evaluated function.
|
|
1030
1047
|
try {
|
|
1031
1048
|
const apiRoute = await this.bundleApiRoute(filePath, {
|
|
@@ -1047,11 +1064,11 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1047
1064
|
return new Response(htmlServerError, {
|
|
1048
1065
|
status: 500,
|
|
1049
1066
|
headers: {
|
|
1050
|
-
|
|
1067
|
+
"Content-Type": "text/html"
|
|
1051
1068
|
}
|
|
1052
1069
|
});
|
|
1053
1070
|
} catch (internalError) {
|
|
1054
|
-
debug(
|
|
1071
|
+
debug("Failed to generate Metro server error UI for API Route error:", internalError);
|
|
1055
1072
|
throw error;
|
|
1056
1073
|
}
|
|
1057
1074
|
} else {
|
|
@@ -1070,9 +1087,9 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1070
1087
|
}
|
|
1071
1088
|
// NOTE: This can only target a single platform at a time (web).
|
|
1072
1089
|
// used for sending RSC CSS to the root client in development.
|
|
1073
|
-
sendClientModule({ code, id
|
|
1074
|
-
this.broadcastMessage(
|
|
1075
|
-
name:
|
|
1090
|
+
sendClientModule({ code , id }) {
|
|
1091
|
+
this.broadcastMessage("sendDevCommand", {
|
|
1092
|
+
name: "module-import",
|
|
1076
1093
|
data: {
|
|
1077
1094
|
code,
|
|
1078
1095
|
id
|
|
@@ -1085,14 +1102,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1085
1102
|
// Send reload command to client from Fast Refresh code.
|
|
1086
1103
|
if (!platforms.length) {
|
|
1087
1104
|
// TODO: When is this called?
|
|
1088
|
-
this.broadcastMessage(
|
|
1089
|
-
name:
|
|
1105
|
+
this.broadcastMessage("sendDevCommand", {
|
|
1106
|
+
name: "rsc-reload"
|
|
1090
1107
|
});
|
|
1091
1108
|
} else {
|
|
1092
1109
|
for (const platform of platforms){
|
|
1093
|
-
|
|
1094
|
-
this.
|
|
1095
|
-
|
|
1110
|
+
var _obj, ref;
|
|
1111
|
+
(ref = (_obj = this).onReloadRscEvent) == null ? void 0 : ref.call(_obj, platform);
|
|
1112
|
+
this.broadcastMessage("sendDevCommand", {
|
|
1113
|
+
name: "rsc-reload",
|
|
1096
1114
|
platform
|
|
1097
1115
|
});
|
|
1098
1116
|
}
|
|
@@ -1102,19 +1120,19 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1102
1120
|
}
|
|
1103
1121
|
// Direct Metro access
|
|
1104
1122
|
// Emulates the Metro dev server .bundle endpoint without having to go through a server.
|
|
1105
|
-
async _bundleDirectAsync(resolvedEntryFilePath, { transformOptions, resolverOptions, graphOptions, serializerOptions
|
|
1106
|
-
var
|
|
1107
|
-
(0, _assert().default)(this.metro,
|
|
1123
|
+
async _bundleDirectAsync(resolvedEntryFilePath, { transformOptions , resolverOptions , graphOptions , serializerOptions }) {
|
|
1124
|
+
var ref;
|
|
1125
|
+
(0, _assert().default)(this.metro, "Metro server must be running to bundle directly.");
|
|
1108
1126
|
const config = this.metro._config;
|
|
1109
1127
|
const buildNumber = this.metro.getNewBuildNumber();
|
|
1110
|
-
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory
|
|
1128
|
+
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory("BUNDLING_REQUEST", {
|
|
1111
1129
|
key: buildNumber
|
|
1112
1130
|
});
|
|
1113
1131
|
const onProgress = (transformedFileCount, totalFileCount)=>{
|
|
1114
|
-
var
|
|
1115
|
-
(
|
|
1132
|
+
var ref, ref1;
|
|
1133
|
+
(ref = this.metro) == null ? void 0 : (ref1 = ref._reporter) == null ? void 0 : ref1.update == null ? void 0 : ref1.update({
|
|
1116
1134
|
buildID: getBuildID(buildNumber),
|
|
1117
|
-
type:
|
|
1135
|
+
type: "bundle_transform_progressed",
|
|
1118
1136
|
transformedFileCount,
|
|
1119
1137
|
totalFileCount
|
|
1120
1138
|
});
|
|
@@ -1124,13 +1142,13 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1124
1142
|
transformOptions,
|
|
1125
1143
|
resolverOptions
|
|
1126
1144
|
});
|
|
1127
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1145
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("resolvingAndTransformingDependencies_start");
|
|
1128
1146
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1129
1147
|
bool: {
|
|
1130
1148
|
initial_build: revPromise == null
|
|
1131
1149
|
}
|
|
1132
1150
|
});
|
|
1133
|
-
(
|
|
1151
|
+
(ref = this.metro) == null ? void 0 : ref._reporter.update({
|
|
1134
1152
|
buildID: getBuildID(buildNumber),
|
|
1135
1153
|
bundleDetails: {
|
|
1136
1154
|
bundleType: transformOptions.type,
|
|
@@ -1142,15 +1160,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1142
1160
|
customTransformOptions: transformOptions.customTransformOptions ?? {}
|
|
1143
1161
|
},
|
|
1144
1162
|
isPrefetch: false,
|
|
1145
|
-
type:
|
|
1163
|
+
type: "bundle_build_started"
|
|
1146
1164
|
});
|
|
1147
1165
|
try {
|
|
1148
|
-
var
|
|
1166
|
+
var ref1;
|
|
1149
1167
|
let delta;
|
|
1150
1168
|
let revision;
|
|
1151
1169
|
// TODO: Some bug in Metro/RSC causes this to break when changing imports in server components.
|
|
1152
1170
|
// We should resolve the bug because it results in ~6x faster bundling to reuse the graph revision.
|
|
1153
|
-
if (((
|
|
1171
|
+
if (((ref1 = transformOptions.customTransformOptions) == null ? void 0 : ref1.environment) === "react-server") {
|
|
1154
1172
|
const props = await this.metro.getBundler().initializeGraph(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1155
1173
|
// entryFile,
|
|
1156
1174
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
@@ -1161,30 +1179,30 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1161
1179
|
delta = props.delta;
|
|
1162
1180
|
revision = props.revision;
|
|
1163
1181
|
} else {
|
|
1164
|
-
const
|
|
1182
|
+
const props1 = 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.
|
|
1165
1183
|
// entryFile,
|
|
1166
1184
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
1167
1185
|
onProgress,
|
|
1168
1186
|
shallow: graphOptions.shallow,
|
|
1169
1187
|
lazy: graphOptions.lazy
|
|
1170
1188
|
}));
|
|
1171
|
-
delta =
|
|
1172
|
-
revision =
|
|
1189
|
+
delta = props1.delta;
|
|
1190
|
+
revision = props1.revision;
|
|
1173
1191
|
}
|
|
1174
1192
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1175
1193
|
int: {
|
|
1176
1194
|
graph_node_count: revision.graph.dependencies.size
|
|
1177
1195
|
}
|
|
1178
1196
|
});
|
|
1179
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1180
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1197
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("resolvingAndTransformingDependencies_end");
|
|
1198
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("serializingBundle_start");
|
|
1181
1199
|
const shouldAddToIgnoreList = this.metro._shouldAddModuleToIgnoreList.bind(this.metro);
|
|
1182
1200
|
const serializer = this.getMetroSerializer();
|
|
1183
1201
|
const bundle = await serializer(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1184
1202
|
// entryFile,
|
|
1185
1203
|
resolvedEntryFilePath, revision.prepend, revision.graph, {
|
|
1186
1204
|
asyncRequireModulePath: await this.metro._resolveRelativePath(config.transformer.asyncRequireModulePath, {
|
|
1187
|
-
relativeTo:
|
|
1205
|
+
relativeTo: "project",
|
|
1188
1206
|
resolverOptions,
|
|
1189
1207
|
transformOptions
|
|
1190
1208
|
}),
|
|
@@ -1208,45 +1226,45 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1208
1226
|
});
|
|
1209
1227
|
this.metro._reporter.update({
|
|
1210
1228
|
buildID: getBuildID(buildNumber),
|
|
1211
|
-
type:
|
|
1229
|
+
type: "bundle_build_done"
|
|
1212
1230
|
});
|
|
1213
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1231
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("serializingBundle_end");
|
|
1214
1232
|
let bundleCode = null;
|
|
1215
1233
|
let bundleMap = null;
|
|
1216
1234
|
// @ts-expect-error: If the output is multi-bundle...
|
|
1217
|
-
if (serializerOptions.output ===
|
|
1235
|
+
if (serializerOptions.output === "static") {
|
|
1218
1236
|
try {
|
|
1219
|
-
var
|
|
1220
|
-
const parsed = typeof bundle ===
|
|
1221
|
-
(0, _assert().default)(
|
|
1237
|
+
var ref2, ref3;
|
|
1238
|
+
const parsed = typeof bundle === "string" ? JSON.parse(bundle) : bundle;
|
|
1239
|
+
(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.");
|
|
1222
1240
|
const artifacts = parsed.artifacts;
|
|
1223
1241
|
const assets = parsed.assets;
|
|
1224
|
-
const
|
|
1225
|
-
const
|
|
1242
|
+
const bundleCode1 = artifacts.filter((asset)=>asset.type === "js")[0];
|
|
1243
|
+
const bundleMap1 = ((ref2 = artifacts.filter((asset)=>asset.type === "map")) == null ? void 0 : (ref3 = ref2[0]) == null ? void 0 : ref3.source) ?? "";
|
|
1226
1244
|
return {
|
|
1227
1245
|
numModifiedFiles: delta.reset ? delta.added.size + revision.prepend.length : delta.added.size + delta.modified.size + delta.deleted.size,
|
|
1228
1246
|
lastModifiedDate: revision.date,
|
|
1229
1247
|
nextRevId: revision.id,
|
|
1230
|
-
bundle:
|
|
1231
|
-
map:
|
|
1248
|
+
bundle: bundleCode1.source,
|
|
1249
|
+
map: bundleMap1,
|
|
1232
1250
|
artifacts,
|
|
1233
1251
|
assets
|
|
1234
1252
|
};
|
|
1235
1253
|
} catch (error) {
|
|
1236
|
-
throw new Error(
|
|
1254
|
+
throw new Error("Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: " + error.message);
|
|
1237
1255
|
}
|
|
1238
1256
|
}
|
|
1239
|
-
if (typeof bundle ===
|
|
1257
|
+
if (typeof bundle === "string") {
|
|
1240
1258
|
bundleCode = bundle;
|
|
1241
1259
|
// Create the source map in a second pass...
|
|
1242
|
-
let { prepend, graph
|
|
1260
|
+
let { prepend , graph } = revision;
|
|
1243
1261
|
if (serializerOptions.modulesOnly) {
|
|
1244
1262
|
prepend = [];
|
|
1245
1263
|
}
|
|
1246
1264
|
bundleMap = await sourceMapStringAsync([
|
|
1247
1265
|
//
|
|
1248
1266
|
...prepend,
|
|
1249
|
-
...this.metro._getSortedModules(graph)
|
|
1267
|
+
...this.metro._getSortedModules(graph),
|
|
1250
1268
|
], {
|
|
1251
1269
|
excludeSource: serializerOptions.excludeSource,
|
|
1252
1270
|
processModuleFilter: config.serializer.processModuleFilter,
|
|
@@ -1263,23 +1281,23 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1263
1281
|
bundle: bundleCode,
|
|
1264
1282
|
map: bundleMap
|
|
1265
1283
|
};
|
|
1266
|
-
} catch (
|
|
1284
|
+
} catch (error1) {
|
|
1267
1285
|
// Mark the error so we know how to format and return it later.
|
|
1268
1286
|
// @ts-expect-error
|
|
1269
|
-
|
|
1287
|
+
error1[_metroErrorInterface.IS_METRO_BUNDLE_ERROR_SYMBOL] = true;
|
|
1270
1288
|
this.metro._reporter.update({
|
|
1271
1289
|
buildID: getBuildID(buildNumber),
|
|
1272
|
-
type:
|
|
1290
|
+
type: "bundle_build_failed"
|
|
1273
1291
|
});
|
|
1274
|
-
throw
|
|
1292
|
+
throw error1;
|
|
1275
1293
|
}
|
|
1276
1294
|
}
|
|
1277
1295
|
getMetroSerializer() {
|
|
1278
|
-
var
|
|
1279
|
-
return ((
|
|
1296
|
+
var ref, ref1;
|
|
1297
|
+
return ((ref = this.metro) == null ? void 0 : (ref1 = ref._config) == null ? void 0 : ref1.serializer.customSerializer) || ((entryPoint, preModules, graph, options)=>(0, _bundleToString().default)((0, _baseJSBundle().default)(entryPoint, preModules, graph, options)).code);
|
|
1280
1298
|
}
|
|
1281
|
-
getMetroRevision(resolvedEntryFilePath, { graphOptions, transformOptions, resolverOptions
|
|
1282
|
-
(0, _assert().default)(this.metro,
|
|
1299
|
+
getMetroRevision(resolvedEntryFilePath, { graphOptions , transformOptions , resolverOptions }) {
|
|
1300
|
+
(0, _assert().default)(this.metro, "Metro server must be running to bundle directly.");
|
|
1283
1301
|
const config = this.metro._config;
|
|
1284
1302
|
const graphId = (0, _getGraphId().default)(resolvedEntryFilePath, transformOptions, {
|
|
1285
1303
|
unstable_allowRequireContext: config.transformer.unstable_allowRequireContext,
|
|
@@ -1289,30 +1307,14 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1289
1307
|
});
|
|
1290
1308
|
return this.metro.getBundler().getRevisionByGraphId(graphId);
|
|
1291
1309
|
}
|
|
1292
|
-
async resolveRelativePathAsync(moduleId, { resolverOptions, transformOptions
|
|
1293
|
-
(0, _assert().default)(this.metro,
|
|
1310
|
+
async resolveRelativePathAsync(moduleId, { resolverOptions , transformOptions }) {
|
|
1311
|
+
(0, _assert().default)(this.metro, "cannot invoke resolveRelativePathAsync without metro instance");
|
|
1294
1312
|
return await this.metro._resolveRelativePath((0, _metroOptions.convertPathToModuleSpecifier)(moduleId), {
|
|
1295
|
-
relativeTo:
|
|
1313
|
+
relativeTo: "server",
|
|
1296
1314
|
resolverOptions,
|
|
1297
1315
|
transformOptions
|
|
1298
1316
|
});
|
|
1299
1317
|
}
|
|
1300
|
-
constructor(...args){
|
|
1301
|
-
super(...args), this.metro = null, this.hmrServer = null, this.ssrHmrClients = new Map(), // Set when the server is started.
|
|
1302
|
-
this.instanceMetroOptions = {}, this.ssrLoadModule = async (filePath, specificOptions = {}, extras = {})=>{
|
|
1303
|
-
const res = await this.ssrLoadModuleContents(filePath, specificOptions);
|
|
1304
|
-
if (// TODO: hot should be a callback function for invalidating the related SSR module.
|
|
1305
|
-
extras.hot && this.instanceMetroOptions.isExporting !== true) {
|
|
1306
|
-
// Register SSR HMR
|
|
1307
|
-
const serverRoot = (0, _paths().getMetroServerRoot)(this.projectRoot);
|
|
1308
|
-
const relativePath = _path().default.relative(serverRoot, res.filename);
|
|
1309
|
-
const url = new URL(relativePath, this.getDevServerUrlOrAssert());
|
|
1310
|
-
this.setupHmr(url);
|
|
1311
|
-
}
|
|
1312
|
-
return (0, _getStaticRenderFunctions.evalMetroAndWrapFunctions)(this.projectRoot, res.src, res.filename, specificOptions.isExporting ?? this.instanceMetroOptions.isExporting);
|
|
1313
|
-
}, this.rscRenderer = null, this.onReloadRscEvent = null, // API Routes
|
|
1314
|
-
this.pendingRouteOperations = new Map();
|
|
1315
|
-
}
|
|
1316
1318
|
}
|
|
1317
1319
|
function getBuildID(buildNumber) {
|
|
1318
1320
|
return buildNumber.toString(36);
|
|
@@ -1321,7 +1323,7 @@ function wrapBundle(str) {
|
|
|
1321
1323
|
// Skip the metro runtime so debugging is a bit easier.
|
|
1322
1324
|
// Replace the __r() call with an export statement.
|
|
1323
1325
|
// Use gm to apply to the last require line. This is needed when the bundle has side-effects.
|
|
1324
|
-
return str.replace(/^(__r\(.*\);)$/gm,
|
|
1326
|
+
return str.replace(/^(__r\(.*\);)$/gm, "module.exports = $1");
|
|
1325
1327
|
}
|
|
1326
1328
|
async function sourceMapStringAsync(modules, options) {
|
|
1327
1329
|
return (await (0, _sourceMapGenerator().sourceMapGeneratorNonBlocking)(modules, options)).toString(undefined, {
|