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