@expo/cli 0.22.25 → 0.22.27
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 +8 -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 +13 -17
- 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/install/utils/parsePackageSpecifier.js +22 -0
- package/build/src/install/utils/parsePackageSpecifier.js.map +1 -0
- 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 +275 -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 +90 -52
- 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,45 @@ 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({
|
|
772
|
+
metroRoot: serverRoot,
|
|
773
|
+
projectRoot: this.projectRoot,
|
|
774
|
+
appDir
|
|
775
|
+
}).getHandler());
|
|
758
776
|
// Append support for redirecting unhandled requests to the index.html page on web.
|
|
759
777
|
if (this.isTargetingWeb()) {
|
|
760
778
|
// 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
|
|
779
|
+
middleware.use(new _serveStaticMiddleware.ServeStaticMiddleware(this.projectRoot).getHandler());
|
|
762
780
|
// This should come after the static middleware so it doesn't serve the favicon from `public/favicon.ico`.
|
|
763
|
-
middleware.use(new
|
|
781
|
+
middleware.use(new _faviconMiddleware.FaviconMiddleware(this.projectRoot).getHandler());
|
|
764
782
|
}
|
|
765
783
|
if (useServerRendering || isReactServerComponentsEnabled) {
|
|
766
784
|
(0, _waitForMetroToObserveTypeScriptFile.observeAnyFileChanges)({
|
|
@@ -778,8 +796,8 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
778
796
|
for (const event of events){
|
|
779
797
|
var // If the user did not delete a file that matches the Expo Router API Route convention, then we should warn that
|
|
780
798
|
// API Routes are not enabled in the project.
|
|
781
|
-
|
|
782
|
-
if (((
|
|
799
|
+
ref;
|
|
800
|
+
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
801
|
event.filePath.startsWith(appDir) && (0, _router.isApiRouteConvention)(event.filePath)) {
|
|
784
802
|
(0, _router.warnInvalidWebOutput)();
|
|
785
803
|
}
|
|
@@ -792,7 +810,7 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
792
810
|
this.bindRSCDevModuleInjectionHandler();
|
|
793
811
|
const rscMiddleware = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
794
812
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
795
|
-
rscPath:
|
|
813
|
+
rscPath: "/_flight",
|
|
796
814
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
797
815
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
798
816
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
@@ -806,16 +824,16 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
806
824
|
if (this.isTargetingWeb()) {
|
|
807
825
|
if (!useServerRendering) {
|
|
808
826
|
// This MUST run last since it's the fallback.
|
|
809
|
-
middleware.use(new
|
|
827
|
+
middleware.use(new _historyFallbackMiddleware.HistoryFallbackMiddleware(manifestMiddleware.getHandler().internal).getHandler());
|
|
810
828
|
} else {
|
|
811
|
-
var
|
|
829
|
+
var ref11;
|
|
812
830
|
middleware.use((0, _createServerRouteMiddleware.createRouteHandlerMiddleware)(this.projectRoot, {
|
|
813
831
|
appDir,
|
|
814
832
|
routerRoot,
|
|
815
833
|
config,
|
|
816
|
-
...(
|
|
834
|
+
...(ref11 = config.exp.extra) == null ? void 0 : ref11.router,
|
|
817
835
|
bundleApiRoute: (functionFilePath)=>this.ssrImportApiRoute(functionFilePath, {
|
|
818
|
-
platform:
|
|
836
|
+
platform: "web"
|
|
819
837
|
}),
|
|
820
838
|
getStaticPageAsync: async (pathname)=>{
|
|
821
839
|
// TODO: Add server rendering when RSC is enabled.
|
|
@@ -837,15 +855,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
837
855
|
// If React 19 is enabled, then add RSC middleware to the dev server.
|
|
838
856
|
if (isReactServerComponentsEnabled) {
|
|
839
857
|
this.bindRSCDevModuleInjectionHandler();
|
|
840
|
-
const
|
|
858
|
+
const rscMiddleware1 = (0, _createServerComponentsMiddleware.createServerComponentsMiddleware)(this.projectRoot, {
|
|
841
859
|
instanceMetroOptions: this.instanceMetroOptions,
|
|
842
|
-
rscPath:
|
|
860
|
+
rscPath: "/_flight",
|
|
843
861
|
ssrLoadModule: this.ssrLoadModule.bind(this),
|
|
844
862
|
ssrLoadModuleArtifacts: this.metroImportAsArtifactsAsync.bind(this),
|
|
845
863
|
useClientRouter: isReactServerActionsOnlyEnabled,
|
|
846
864
|
createModuleId: metro._createModuleId.bind(metro)
|
|
847
865
|
});
|
|
848
|
-
this.rscRenderer =
|
|
866
|
+
this.rscRenderer = rscMiddleware1;
|
|
849
867
|
}
|
|
850
868
|
}
|
|
851
869
|
// Extend the close method to ensure that we clean up the local info.
|
|
@@ -868,65 +886,66 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
868
886
|
// The port is the main thing we want to send back.
|
|
869
887
|
port: options.port,
|
|
870
888
|
// localhost isn't always correct.
|
|
871
|
-
host:
|
|
889
|
+
host: "localhost",
|
|
872
890
|
// http is the only supported protocol on native.
|
|
873
891
|
url: `http://localhost:${options.port}`,
|
|
874
|
-
protocol:
|
|
892
|
+
protocol: "http"
|
|
875
893
|
},
|
|
876
894
|
middleware,
|
|
877
895
|
messageSocket
|
|
878
896
|
};
|
|
879
897
|
}
|
|
898
|
+
onReloadRscEvent = null;
|
|
880
899
|
async registerSsrHmrAsync(url, onReload) {
|
|
881
900
|
if (!this.hmrServer || this.ssrHmrClients.has(url)) {
|
|
882
901
|
return;
|
|
883
902
|
}
|
|
884
|
-
debug(
|
|
903
|
+
debug("[SSR] Register HMR:", url);
|
|
885
904
|
const sendFn = (message)=>{
|
|
886
905
|
const data = JSON.parse(String(message));
|
|
887
906
|
switch(data.type){
|
|
888
|
-
case
|
|
889
|
-
case
|
|
890
|
-
case
|
|
907
|
+
case "bundle-registered":
|
|
908
|
+
case "update-done":
|
|
909
|
+
case "update-start":
|
|
891
910
|
break;
|
|
892
|
-
case
|
|
911
|
+
case "update":
|
|
893
912
|
{
|
|
894
913
|
const update = data.body;
|
|
895
|
-
const { isInitialUpdate, added, modified, deleted } = update;
|
|
914
|
+
const { isInitialUpdate , added , modified , deleted , } = update;
|
|
896
915
|
const hasUpdate = added.length || modified.length || deleted.length;
|
|
897
916
|
// NOTE: We throw away the updates and instead simply send a trigger to the client to re-fetch the server route.
|
|
898
917
|
if (!isInitialUpdate && hasUpdate) {
|
|
899
918
|
// Clear all SSR modules before sending the reload event. This ensures that the next event will rebuild the in-memory state from scratch.
|
|
900
919
|
// @ts-expect-error
|
|
901
|
-
if (typeof globalThis.__c ===
|
|
920
|
+
if (typeof globalThis.__c === "function") globalThis.__c();
|
|
902
921
|
const allModuleIds = new Set([
|
|
903
922
|
...added,
|
|
904
923
|
...modified
|
|
905
924
|
].map((m)=>m.module[0]).concat(deleted));
|
|
906
925
|
const platforms = unique(Array.from(allModuleIds).map((moduleId)=>{
|
|
907
|
-
var
|
|
908
|
-
if (typeof moduleId !==
|
|
926
|
+
var ref;
|
|
927
|
+
if (typeof moduleId !== "string") {
|
|
909
928
|
return null;
|
|
910
929
|
}
|
|
911
930
|
// Extract platforms from the module IDs.
|
|
912
|
-
return ((
|
|
931
|
+
return ((ref = moduleId.match(/[?&]platform=([\w]+)/)) == null ? void 0 : ref[1]) ?? null;
|
|
913
932
|
}).filter(Boolean));
|
|
914
933
|
onReload(platforms);
|
|
915
934
|
}
|
|
916
935
|
}
|
|
917
936
|
break;
|
|
918
|
-
case
|
|
919
|
-
var
|
|
937
|
+
case "error":
|
|
938
|
+
var ref;
|
|
920
939
|
// 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
|
-
|
|
940
|
+
_log.Log.error("[SSR] HMR Error: " + JSON.stringify(data, null, 2));
|
|
941
|
+
if (((ref = data.body) == null ? void 0 : ref.type) === "GraphNotFoundError") {
|
|
942
|
+
var ref1;
|
|
943
|
+
_log.Log.error("Available SSR HMR keys:", // @ts-expect-error
|
|
944
|
+
((ref1 = this.metro) == null ? void 0 : ref1._bundler._revisionsByGraphId).keys());
|
|
926
945
|
}
|
|
927
946
|
break;
|
|
928
947
|
default:
|
|
929
|
-
debug(
|
|
948
|
+
debug("Unknown HMR message:", data);
|
|
930
949
|
break;
|
|
931
950
|
}
|
|
932
951
|
};
|
|
@@ -938,14 +957,14 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
938
957
|
}
|
|
939
958
|
async waitForTypeScriptAsync() {
|
|
940
959
|
if (!this.instance) {
|
|
941
|
-
throw new Error(
|
|
960
|
+
throw new Error("Cannot wait for TypeScript without a running server.");
|
|
942
961
|
}
|
|
943
962
|
return new Promise((resolve)=>{
|
|
944
963
|
if (!this.metro) {
|
|
945
964
|
// This can happen when the run command is used and the server is already running in another
|
|
946
965
|
// process. In this case we can't wait for the TypeScript check to complete because we don't
|
|
947
966
|
// have access to the Metro server.
|
|
948
|
-
debug(
|
|
967
|
+
debug("Skipping TypeScript check because Metro is not running (headless).");
|
|
949
968
|
return resolve(false);
|
|
950
969
|
}
|
|
951
970
|
const off = (0, _metroWatchTypeScriptFiles.metroWatchTypeScriptFiles)({
|
|
@@ -955,13 +974,13 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
955
974
|
tsconfig: true,
|
|
956
975
|
throttle: true,
|
|
957
976
|
eventTypes: [
|
|
958
|
-
|
|
959
|
-
|
|
977
|
+
"change",
|
|
978
|
+
"add"
|
|
960
979
|
],
|
|
961
980
|
callback: async ()=>{
|
|
962
981
|
// Run once, this prevents the TypeScript project prerequisite from running on every file change.
|
|
963
982
|
off();
|
|
964
|
-
const { TypeScriptProjectPrerequisite
|
|
983
|
+
const { TypeScriptProjectPrerequisite } = await Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("../../doctor/typescript/TypeScriptProjectPrerequisite.js")));
|
|
965
984
|
try {
|
|
966
985
|
const req = new TypeScriptProjectPrerequisite(this.projectRoot);
|
|
967
986
|
await req.bootstrapAsync();
|
|
@@ -979,39 +998,41 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
979
998
|
});
|
|
980
999
|
}
|
|
981
1000
|
async startTypeScriptServices() {
|
|
982
|
-
var
|
|
1001
|
+
var ref;
|
|
983
1002
|
return (0, _startTypescriptTypeGeneration.startTypescriptTypeGenerationAsync)({
|
|
984
|
-
server: (
|
|
1003
|
+
server: (ref = this.instance) == null ? void 0 : ref.server,
|
|
985
1004
|
metro: this.metro,
|
|
986
1005
|
projectRoot: this.projectRoot
|
|
987
1006
|
});
|
|
988
1007
|
}
|
|
989
1008
|
getConfigModuleIds() {
|
|
990
1009
|
return [
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1010
|
+
"./metro.config.js",
|
|
1011
|
+
"./metro.config.json",
|
|
1012
|
+
"./rn-cli.config.js"
|
|
994
1013
|
];
|
|
995
1014
|
}
|
|
1015
|
+
// API Routes
|
|
1016
|
+
pendingRouteOperations = new Map();
|
|
996
1017
|
// Bundle the API Route with Metro and return the string contents to be evaluated in the server.
|
|
997
|
-
async bundleApiRoute(filePath, { platform
|
|
1018
|
+
async bundleApiRoute(filePath, { platform }) {
|
|
998
1019
|
if (this.pendingRouteOperations.has(filePath)) {
|
|
999
1020
|
return this.pendingRouteOperations.get(filePath);
|
|
1000
1021
|
}
|
|
1001
1022
|
const bundleAsync = async ()=>{
|
|
1002
1023
|
try {
|
|
1003
|
-
debug(
|
|
1024
|
+
debug("Bundle API route:", this.instanceMetroOptions.routerRoot, filePath);
|
|
1004
1025
|
return await this.ssrLoadModuleContents(filePath, {
|
|
1005
1026
|
isExporting: this.instanceMetroOptions.isExporting,
|
|
1006
1027
|
platform
|
|
1007
1028
|
});
|
|
1008
1029
|
} catch (error) {
|
|
1009
|
-
var
|
|
1010
|
-
const appDir = ((
|
|
1030
|
+
var ref;
|
|
1031
|
+
const appDir = ((ref = this.instanceMetroOptions) == null ? void 0 : ref.routerRoot) ? _path().default.join(this.projectRoot, this.instanceMetroOptions.routerRoot) : undefined;
|
|
1011
1032
|
const relativePath = appDir ? _path().default.relative(appDir, filePath) : filePath;
|
|
1012
1033
|
// Expected errors: invalid syntax, missing resolutions.
|
|
1013
1034
|
// Wrap with command error for better error messages.
|
|
1014
|
-
const err = new _errors.CommandError(
|
|
1035
|
+
const err = new _errors.CommandError("API_ROUTE", (0, _chalk().default)`Failed to bundle API Route: {bold ${relativePath}}\n\n` + error.message);
|
|
1015
1036
|
for(const key in error){
|
|
1016
1037
|
// @ts-expect-error
|
|
1017
1038
|
err[key] = error[key];
|
|
@@ -1025,7 +1046,7 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1025
1046
|
this.pendingRouteOperations.set(filePath, route);
|
|
1026
1047
|
return route;
|
|
1027
1048
|
}
|
|
1028
|
-
async ssrImportApiRoute(filePath, { platform
|
|
1049
|
+
async ssrImportApiRoute(filePath, { platform }) {
|
|
1029
1050
|
// TODO: Cache the evaluated function.
|
|
1030
1051
|
try {
|
|
1031
1052
|
const apiRoute = await this.bundleApiRoute(filePath, {
|
|
@@ -1047,11 +1068,11 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1047
1068
|
return new Response(htmlServerError, {
|
|
1048
1069
|
status: 500,
|
|
1049
1070
|
headers: {
|
|
1050
|
-
|
|
1071
|
+
"Content-Type": "text/html"
|
|
1051
1072
|
}
|
|
1052
1073
|
});
|
|
1053
1074
|
} catch (internalError) {
|
|
1054
|
-
debug(
|
|
1075
|
+
debug("Failed to generate Metro server error UI for API Route error:", internalError);
|
|
1055
1076
|
throw error;
|
|
1056
1077
|
}
|
|
1057
1078
|
} else {
|
|
@@ -1070,9 +1091,9 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1070
1091
|
}
|
|
1071
1092
|
// NOTE: This can only target a single platform at a time (web).
|
|
1072
1093
|
// used for sending RSC CSS to the root client in development.
|
|
1073
|
-
sendClientModule({ code, id
|
|
1074
|
-
this.broadcastMessage(
|
|
1075
|
-
name:
|
|
1094
|
+
sendClientModule({ code , id }) {
|
|
1095
|
+
this.broadcastMessage("sendDevCommand", {
|
|
1096
|
+
name: "module-import",
|
|
1076
1097
|
data: {
|
|
1077
1098
|
code,
|
|
1078
1099
|
id
|
|
@@ -1085,14 +1106,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1085
1106
|
// Send reload command to client from Fast Refresh code.
|
|
1086
1107
|
if (!platforms.length) {
|
|
1087
1108
|
// TODO: When is this called?
|
|
1088
|
-
this.broadcastMessage(
|
|
1089
|
-
name:
|
|
1109
|
+
this.broadcastMessage("sendDevCommand", {
|
|
1110
|
+
name: "rsc-reload"
|
|
1090
1111
|
});
|
|
1091
1112
|
} else {
|
|
1092
1113
|
for (const platform of platforms){
|
|
1093
|
-
|
|
1094
|
-
this.
|
|
1095
|
-
|
|
1114
|
+
var _obj, ref;
|
|
1115
|
+
(ref = (_obj = this).onReloadRscEvent) == null ? void 0 : ref.call(_obj, platform);
|
|
1116
|
+
this.broadcastMessage("sendDevCommand", {
|
|
1117
|
+
name: "rsc-reload",
|
|
1096
1118
|
platform
|
|
1097
1119
|
});
|
|
1098
1120
|
}
|
|
@@ -1102,19 +1124,19 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1102
1124
|
}
|
|
1103
1125
|
// Direct Metro access
|
|
1104
1126
|
// 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,
|
|
1127
|
+
async _bundleDirectAsync(resolvedEntryFilePath, { transformOptions , resolverOptions , graphOptions , serializerOptions }) {
|
|
1128
|
+
var ref;
|
|
1129
|
+
(0, _assert().default)(this.metro, "Metro server must be running to bundle directly.");
|
|
1108
1130
|
const config = this.metro._config;
|
|
1109
1131
|
const buildNumber = this.metro.getNewBuildNumber();
|
|
1110
|
-
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory
|
|
1132
|
+
const bundlePerfLogger = config.unstable_perfLoggerFactory == null ? void 0 : config.unstable_perfLoggerFactory("BUNDLING_REQUEST", {
|
|
1111
1133
|
key: buildNumber
|
|
1112
1134
|
});
|
|
1113
1135
|
const onProgress = (transformedFileCount, totalFileCount)=>{
|
|
1114
|
-
var
|
|
1115
|
-
(
|
|
1136
|
+
var ref, ref1;
|
|
1137
|
+
(ref = this.metro) == null ? void 0 : (ref1 = ref._reporter) == null ? void 0 : ref1.update == null ? void 0 : ref1.update({
|
|
1116
1138
|
buildID: getBuildID(buildNumber),
|
|
1117
|
-
type:
|
|
1139
|
+
type: "bundle_transform_progressed",
|
|
1118
1140
|
transformedFileCount,
|
|
1119
1141
|
totalFileCount
|
|
1120
1142
|
});
|
|
@@ -1124,13 +1146,13 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1124
1146
|
transformOptions,
|
|
1125
1147
|
resolverOptions
|
|
1126
1148
|
});
|
|
1127
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1149
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("resolvingAndTransformingDependencies_start");
|
|
1128
1150
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1129
1151
|
bool: {
|
|
1130
1152
|
initial_build: revPromise == null
|
|
1131
1153
|
}
|
|
1132
1154
|
});
|
|
1133
|
-
(
|
|
1155
|
+
(ref = this.metro) == null ? void 0 : ref._reporter.update({
|
|
1134
1156
|
buildID: getBuildID(buildNumber),
|
|
1135
1157
|
bundleDetails: {
|
|
1136
1158
|
bundleType: transformOptions.type,
|
|
@@ -1142,15 +1164,15 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1142
1164
|
customTransformOptions: transformOptions.customTransformOptions ?? {}
|
|
1143
1165
|
},
|
|
1144
1166
|
isPrefetch: false,
|
|
1145
|
-
type:
|
|
1167
|
+
type: "bundle_build_started"
|
|
1146
1168
|
});
|
|
1147
1169
|
try {
|
|
1148
|
-
var
|
|
1170
|
+
var ref1;
|
|
1149
1171
|
let delta;
|
|
1150
1172
|
let revision;
|
|
1151
1173
|
// TODO: Some bug in Metro/RSC causes this to break when changing imports in server components.
|
|
1152
1174
|
// We should resolve the bug because it results in ~6x faster bundling to reuse the graph revision.
|
|
1153
|
-
if (((
|
|
1175
|
+
if (((ref1 = transformOptions.customTransformOptions) == null ? void 0 : ref1.environment) === "react-server") {
|
|
1154
1176
|
const props = await this.metro.getBundler().initializeGraph(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1155
1177
|
// entryFile,
|
|
1156
1178
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
@@ -1161,30 +1183,30 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1161
1183
|
delta = props.delta;
|
|
1162
1184
|
revision = props.revision;
|
|
1163
1185
|
} else {
|
|
1164
|
-
const
|
|
1186
|
+
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
1187
|
// entryFile,
|
|
1166
1188
|
resolvedEntryFilePath, transformOptions, resolverOptions, {
|
|
1167
1189
|
onProgress,
|
|
1168
1190
|
shallow: graphOptions.shallow,
|
|
1169
1191
|
lazy: graphOptions.lazy
|
|
1170
1192
|
}));
|
|
1171
|
-
delta =
|
|
1172
|
-
revision =
|
|
1193
|
+
delta = props1.delta;
|
|
1194
|
+
revision = props1.revision;
|
|
1173
1195
|
}
|
|
1174
1196
|
bundlePerfLogger == null ? void 0 : bundlePerfLogger.annotate({
|
|
1175
1197
|
int: {
|
|
1176
1198
|
graph_node_count: revision.graph.dependencies.size
|
|
1177
1199
|
}
|
|
1178
1200
|
});
|
|
1179
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1180
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1201
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("resolvingAndTransformingDependencies_end");
|
|
1202
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("serializingBundle_start");
|
|
1181
1203
|
const shouldAddToIgnoreList = this.metro._shouldAddModuleToIgnoreList.bind(this.metro);
|
|
1182
1204
|
const serializer = this.getMetroSerializer();
|
|
1183
1205
|
const bundle = await serializer(// NOTE: Using absolute path instead of relative input path is a breaking change.
|
|
1184
1206
|
// entryFile,
|
|
1185
1207
|
resolvedEntryFilePath, revision.prepend, revision.graph, {
|
|
1186
1208
|
asyncRequireModulePath: await this.metro._resolveRelativePath(config.transformer.asyncRequireModulePath, {
|
|
1187
|
-
relativeTo:
|
|
1209
|
+
relativeTo: "project",
|
|
1188
1210
|
resolverOptions,
|
|
1189
1211
|
transformOptions
|
|
1190
1212
|
}),
|
|
@@ -1208,45 +1230,45 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1208
1230
|
});
|
|
1209
1231
|
this.metro._reporter.update({
|
|
1210
1232
|
buildID: getBuildID(buildNumber),
|
|
1211
|
-
type:
|
|
1233
|
+
type: "bundle_build_done"
|
|
1212
1234
|
});
|
|
1213
|
-
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point(
|
|
1235
|
+
bundlePerfLogger == null ? void 0 : bundlePerfLogger.point("serializingBundle_end");
|
|
1214
1236
|
let bundleCode = null;
|
|
1215
1237
|
let bundleMap = null;
|
|
1216
1238
|
// @ts-expect-error: If the output is multi-bundle...
|
|
1217
|
-
if (serializerOptions.output ===
|
|
1239
|
+
if (serializerOptions.output === "static") {
|
|
1218
1240
|
try {
|
|
1219
|
-
var
|
|
1220
|
-
const parsed = typeof bundle ===
|
|
1221
|
-
(0, _assert().default)(
|
|
1241
|
+
var ref2, ref3;
|
|
1242
|
+
const parsed = typeof bundle === "string" ? JSON.parse(bundle) : bundle;
|
|
1243
|
+
(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
1244
|
const artifacts = parsed.artifacts;
|
|
1223
1245
|
const assets = parsed.assets;
|
|
1224
|
-
const
|
|
1225
|
-
const
|
|
1246
|
+
const bundleCode1 = artifacts.filter((asset)=>asset.type === "js")[0];
|
|
1247
|
+
const bundleMap1 = ((ref2 = artifacts.filter((asset)=>asset.type === "map")) == null ? void 0 : (ref3 = ref2[0]) == null ? void 0 : ref3.source) ?? "";
|
|
1226
1248
|
return {
|
|
1227
1249
|
numModifiedFiles: delta.reset ? delta.added.size + revision.prepend.length : delta.added.size + delta.modified.size + delta.deleted.size,
|
|
1228
1250
|
lastModifiedDate: revision.date,
|
|
1229
1251
|
nextRevId: revision.id,
|
|
1230
|
-
bundle:
|
|
1231
|
-
map:
|
|
1252
|
+
bundle: bundleCode1.source,
|
|
1253
|
+
map: bundleMap1,
|
|
1232
1254
|
artifacts,
|
|
1233
1255
|
assets
|
|
1234
1256
|
};
|
|
1235
1257
|
} catch (error) {
|
|
1236
|
-
throw new Error(
|
|
1258
|
+
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
1259
|
}
|
|
1238
1260
|
}
|
|
1239
|
-
if (typeof bundle ===
|
|
1261
|
+
if (typeof bundle === "string") {
|
|
1240
1262
|
bundleCode = bundle;
|
|
1241
1263
|
// Create the source map in a second pass...
|
|
1242
|
-
let { prepend, graph
|
|
1264
|
+
let { prepend , graph } = revision;
|
|
1243
1265
|
if (serializerOptions.modulesOnly) {
|
|
1244
1266
|
prepend = [];
|
|
1245
1267
|
}
|
|
1246
1268
|
bundleMap = await sourceMapStringAsync([
|
|
1247
1269
|
//
|
|
1248
1270
|
...prepend,
|
|
1249
|
-
...this.metro._getSortedModules(graph)
|
|
1271
|
+
...this.metro._getSortedModules(graph),
|
|
1250
1272
|
], {
|
|
1251
1273
|
excludeSource: serializerOptions.excludeSource,
|
|
1252
1274
|
processModuleFilter: config.serializer.processModuleFilter,
|
|
@@ -1263,23 +1285,23 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1263
1285
|
bundle: bundleCode,
|
|
1264
1286
|
map: bundleMap
|
|
1265
1287
|
};
|
|
1266
|
-
} catch (
|
|
1288
|
+
} catch (error1) {
|
|
1267
1289
|
// Mark the error so we know how to format and return it later.
|
|
1268
1290
|
// @ts-expect-error
|
|
1269
|
-
|
|
1291
|
+
error1[_metroErrorInterface.IS_METRO_BUNDLE_ERROR_SYMBOL] = true;
|
|
1270
1292
|
this.metro._reporter.update({
|
|
1271
1293
|
buildID: getBuildID(buildNumber),
|
|
1272
|
-
type:
|
|
1294
|
+
type: "bundle_build_failed"
|
|
1273
1295
|
});
|
|
1274
|
-
throw
|
|
1296
|
+
throw error1;
|
|
1275
1297
|
}
|
|
1276
1298
|
}
|
|
1277
1299
|
getMetroSerializer() {
|
|
1278
|
-
var
|
|
1279
|
-
return ((
|
|
1300
|
+
var ref, ref1;
|
|
1301
|
+
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
1302
|
}
|
|
1281
|
-
getMetroRevision(resolvedEntryFilePath, { graphOptions, transformOptions, resolverOptions
|
|
1282
|
-
(0, _assert().default)(this.metro,
|
|
1303
|
+
getMetroRevision(resolvedEntryFilePath, { graphOptions , transformOptions , resolverOptions }) {
|
|
1304
|
+
(0, _assert().default)(this.metro, "Metro server must be running to bundle directly.");
|
|
1283
1305
|
const config = this.metro._config;
|
|
1284
1306
|
const graphId = (0, _getGraphId().default)(resolvedEntryFilePath, transformOptions, {
|
|
1285
1307
|
unstable_allowRequireContext: config.transformer.unstable_allowRequireContext,
|
|
@@ -1289,30 +1311,14 @@ class MetroBundlerDevServer extends _BundlerDevServer.BundlerDevServer {
|
|
|
1289
1311
|
});
|
|
1290
1312
|
return this.metro.getBundler().getRevisionByGraphId(graphId);
|
|
1291
1313
|
}
|
|
1292
|
-
async resolveRelativePathAsync(moduleId, { resolverOptions, transformOptions
|
|
1293
|
-
(0, _assert().default)(this.metro,
|
|
1314
|
+
async resolveRelativePathAsync(moduleId, { resolverOptions , transformOptions }) {
|
|
1315
|
+
(0, _assert().default)(this.metro, "cannot invoke resolveRelativePathAsync without metro instance");
|
|
1294
1316
|
return await this.metro._resolveRelativePath((0, _metroOptions.convertPathToModuleSpecifier)(moduleId), {
|
|
1295
|
-
relativeTo:
|
|
1317
|
+
relativeTo: "server",
|
|
1296
1318
|
resolverOptions,
|
|
1297
1319
|
transformOptions
|
|
1298
1320
|
});
|
|
1299
1321
|
}
|
|
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
1322
|
}
|
|
1317
1323
|
function getBuildID(buildNumber) {
|
|
1318
1324
|
return buildNumber.toString(36);
|
|
@@ -1321,7 +1327,7 @@ function wrapBundle(str) {
|
|
|
1321
1327
|
// Skip the metro runtime so debugging is a bit easier.
|
|
1322
1328
|
// Replace the __r() call with an export statement.
|
|
1323
1329
|
// Use gm to apply to the last require line. This is needed when the bundle has side-effects.
|
|
1324
|
-
return str.replace(/^(__r\(.*\);)$/gm,
|
|
1330
|
+
return str.replace(/^(__r\(.*\);)$/gm, "module.exports = $1");
|
|
1325
1331
|
}
|
|
1326
1332
|
async function sourceMapStringAsync(modules, options) {
|
|
1327
1333
|
return (await (0, _sourceMapGenerator().sourceMapGeneratorNonBlocking)(modules, options)).toString(undefined, {
|