@depup/expo__cli 55.0.22-depup.1 → 57.0.9-depup.0
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/LICENSE +21 -0
- package/README.md +13 -18
- package/build/bin/cli +4 -4
- package/build/bin/cli.map +1 -1
- package/build/src/api/endpoint.js +4 -4
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoSchema.js +3 -3
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/graphql/client.js +26 -14
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/mutations/TunnelMutation.js +31 -0
- package/build/src/api/graphql/mutations/TunnelMutation.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/ResponseCache.js +5 -5
- package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
- package/build/src/api/rest/client.js +35 -20
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +6 -5
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +28 -15
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +10 -3
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +76 -24
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +4 -4
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +19 -7
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +3 -3
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +7 -4
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/templates.js +4 -6
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/events/index.js +19 -15
- package/build/src/events/index.js.map +1 -1
- package/build/src/events/stream.js +94 -24
- package/build/src/events/stream.js.map +1 -1
- package/build/src/expoUpdatesExports.js +50 -7
- package/build/src/expoUpdatesExports.js.map +1 -1
- package/build/src/export/createMetadataJson.js +2 -1
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +58 -24
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +1 -1
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js +1 -1
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +7 -6
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +7 -7
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +40 -30
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +5 -5
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportDomComponents.js +16 -9
- package/build/src/export/exportDomComponents.js.map +1 -1
- package/build/src/export/exportHermes.js +23 -13
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +30 -21
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +26 -34
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +3 -3
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +2 -0
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +4 -4
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +6 -6
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +16 -4
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +12 -13
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +3 -3
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/static.js +6 -0
- package/build/src/export/static.js.map +1 -0
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/install/checkPackages.js +1 -28
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +3 -3
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +3 -3
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/install/utils/checkPackagesCompatibility.js +32 -16
- package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js.map +1 -1
- package/build/src/log.js +32 -14
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +25 -5
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +49 -14
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +3 -3
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +3 -2
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +31 -6
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +8 -5
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +7 -7
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +10 -5
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +3 -3
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +7 -7
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js.map +1 -1
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +3 -4
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +48 -1
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +4 -1
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +4 -4
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +163 -23
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +6 -5
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +10 -16
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +2 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +3 -3
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +3 -3
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +16 -13
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +6 -6
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +5 -5
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +7 -7
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +5 -5
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +8 -8
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +5 -3
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +7 -5
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +3 -3
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +4 -4
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +8 -1
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +3 -3
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/appleDestinations.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +3 -3
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +8 -3
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +4 -4
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +9 -4
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +39 -0
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/ios/validateExternalBinary.js.map +1 -1
- package/build/src/run/startBundler.js +4 -0
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/serve/index.js +4 -1
- package/build/src/serve/index.js.map +1 -1
- package/build/src/serve/serveAsync.js +23 -11
- package/build/src/serve/serveAsync.js.map +1 -1
- package/build/src/serve/static.js +69 -0
- package/build/src/serve/static.js.map +1 -0
- package/build/src/start/checkDependenciesOnStart.js +131 -0
- package/build/src/start/checkDependenciesOnStart.js.map +1 -0
- package/build/src/start/detectDevClient.js +3 -3
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +4 -4
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +53 -91
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +3 -3
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +3 -3
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +5 -5
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -5
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/reactNativeTv.js +149 -0
- package/build/src/start/doctor/dependencies/reactNativeTv.js.map +1 -0
- package/build/src/start/doctor/dependencies/resolvePackages.js +4 -4
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +33 -8
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +14 -9
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +3 -3
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +3 -3
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +5 -12
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +2 -0
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/cliExtensionMenuItemHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +6 -6
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/createDevToolsMenuItems.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +49 -6
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +13 -4
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +4 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +13 -4
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +36 -34
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +4 -4
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +5 -5
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +5 -5
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +3 -3
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +20 -6
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +11 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/devicectl.js +7 -7
- package/build/src/start/platforms/ios/devicectl.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +26 -11
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +5 -5
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +5 -4
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +25 -19
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +3 -3
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +3 -3
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +6 -6
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +4 -3
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/resolveOptions.js +7 -7
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +1 -1
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/AsyncWsTunnel.js +120 -35
- package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
- package/build/src/start/server/Bonjour.js +8 -3
- package/build/src/start/server/Bonjour.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +23 -9
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPlugin.js +63 -3
- package/build/src/start/server/DevToolsPlugin.js.map +1 -1
- package/build/src/start/server/DevToolsPlugin.schema.js +8 -3
- package/build/src/start/server/DevToolsPlugin.schema.js.map +1 -1
- package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js +58 -23
- package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js.map +1 -1
- package/build/src/start/server/DevToolsPluginCliExtensionResults.js +29 -0
- package/build/src/start/server/DevToolsPluginCliExtensionResults.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +20 -6
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginServerHelpers.js +83 -0
- package/build/src/start/server/DevToolsPluginServerHelpers.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +41 -24
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/MCP.js +10 -3
- package/build/src/start/server/MCP.js.map +1 -1
- package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js +15 -5
- package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +14 -1
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/createMCPDevToolsExtensionSchema.js +18 -4
- package/build/src/start/server/createMCPDevToolsExtensionSchema.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +13 -24
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +245 -114
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +67 -16
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +22 -4
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/createExpoAutolinkingResolver.js +25 -12
- package/build/src/start/server/metro/createExpoAutolinkingResolver.js.map +1 -1
- package/build/src/start/server/metro/createExpoFallbackResolver.js +39 -0
- package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
- package/build/src/start/server/metro/createFileMap-fork.js +196 -0
- package/build/src/start/server/metro/createFileMap-fork.js.map +1 -0
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +22 -22
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createTypescriptResolver.js +410 -0
- package/build/src/start/server/metro/createTypescriptResolver.js.map +1 -0
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/attachAtlas.js +3 -3
- package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +6 -5
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +20 -4
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/dev-server/compression.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +13 -2
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +9 -2
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js +3 -3
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.js.map +1 -1
- package/build/src/start/server/metro/externals.js +4 -4
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +3 -3
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +3 -3
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +141 -57
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +4 -4
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js +3 -3
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +16 -13
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +3 -3
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +48 -16
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/resolveLoader.js +3 -3
- package/build/src/start/server/metro/resolveLoader.js.map +1 -1
- package/build/src/start/server/metro/router.js +23 -14
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +13 -10
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +29 -13
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +36 -34
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroErrorReportingResolver.js +53 -30
- package/build/src/start/server/metro/withMetroErrorReportingResolver.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +187 -126
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +4 -4
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +3 -3
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +60 -9
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DomComponentsMiddleware.js +30 -17
- package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +6 -4
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +3 -3
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +13 -8
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +19 -47
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/OpenMiddleware.js +150 -0
- package/build/src/start/server/middleware/OpenMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +13 -4
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +2 -9
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/domPolyfills.js +60 -0
- package/build/src/start/server/middleware/domPolyfills.js.map +1 -0
- package/build/src/start/server/middleware/inspector/JsInspector.js +6 -31
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +14 -24
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +3 -3
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +15 -14
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +3 -3
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/openHandlers.js +157 -0
- package/build/src/start/server/middleware/openHandlers.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js +4 -4
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +9 -7
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +3 -1
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +13 -36
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +3 -3
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +14 -55
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +5 -5
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +12 -10
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +3 -3
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +4 -4
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +3 -3
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +21 -11
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/types.d.ts +2 -0
- package/build/src/utils/FileNotifier.js +1 -1
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/args.js +5 -5
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +8 -8
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/build-cache-providers/helpers.js +4 -4
- package/build/src/utils/build-cache-providers/helpers.js.map +1 -1
- package/build/src/utils/build-cache-providers/index.js +5 -5
- package/build/src/utils/build-cache-providers/index.js.map +1 -1
- package/build/src/utils/cocoapods.js +5 -5
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +12 -6
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/composeMetroIgnorePatterns.js +69 -0
- package/build/src/utils/composeMetroIgnorePatterns.js.map +1 -0
- package/build/src/utils/createTempPath.js +3 -3
- package/build/src/utils/createTempPath.js.map +1 -1
- package/build/src/utils/delay.js +4 -4
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +21 -11
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +4 -4
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +4 -4
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +39 -13
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +6 -6
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +15 -19
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/expoUpdatesCli.js +5 -5
- package/build/src/utils/expoUpdatesCli.js.map +1 -1
- package/build/src/utils/fetch.js +4 -4
- package/build/src/utils/fetch.js.map +1 -1
- package/build/src/utils/filePath.js +3 -29
- package/build/src/utils/filePath.js.map +1 -1
- package/build/src/utils/findUp.js +3 -3
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +3 -3
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/freeport.js +3 -3
- package/build/src/utils/freeport.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +3 -5
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +5 -5
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +3 -3
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +3 -3
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/ip.js +4 -4
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/link.js +3 -3
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +10 -10
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +3 -3
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/net.js +23 -4
- package/build/src/utils/net.js.map +1 -1
- package/build/src/utils/nodeEnv.js +6 -6
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/npm.js +10 -9
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +4 -4
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +240 -11
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +4 -4
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +5 -4
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +12 -5
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/progress.js +4 -4
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +11 -11
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/qr.js +5 -4
- package/build/src/utils/qr.js.map +1 -1
- package/build/src/utils/resolveArgs.js +10 -9
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +4 -4
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +8 -7
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/Telemetry.js +5 -0
- package/build/src/utils/telemetry/Telemetry.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js +5 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
- package/build/src/utils/telemetry/index.js +4 -4
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/telemetry/utils/agent.js +42 -0
- package/build/src/utils/telemetry/utils/agent.js.map +1 -0
- package/build/src/utils/telemetry/utils/constants.js +3 -3
- package/build/src/utils/telemetry/utils/constants.js.map +1 -1
- package/build/src/utils/telemetry/utils/context.js +3 -2
- package/build/src/utils/telemetry/utils/context.js.map +1 -1
- package/build/src/utils/url.js +5 -17
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +12 -12
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +4 -4
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js.map +1 -1
- package/changes.json +16 -36
- package/main.js +3 -0
- package/package.json +86 -90
- package/static/loading-page/index.html +45 -3
- package/static/template/+html.tsx +14 -5
- package/add-module.js +0 -8
- package/build/src/start/server/middleware/inspector/CdpClient.js +0 -81
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +0 -1
- package/build/src/utils/resolveGlobal.js +0 -195
- package/build/src/utils/resolveGlobal.js.map +0 -1
- package/build/src/utils/resolveWatchFolders.js +0 -67
- package/build/src/utils/resolveWatchFolders.js.map +0 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +0 -87
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +0 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +0 -84
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +0 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +0 -94
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +0 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +0 -62
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +0 -1
|
@@ -113,6 +113,26 @@ function createFallbackModuleResolver({ projectRoot, originModuleNames, getStric
|
|
|
113
113
|
};
|
|
114
114
|
const fileSpecifierRe = /^[\\/]|^\.\.?(?:$|[\\/])/i;
|
|
115
115
|
return function requestFallbackModule(immutableContext, moduleName, platform) {
|
|
116
|
+
if (moduleName === '../../App') {
|
|
117
|
+
// Fix up the `../../App` relative path, escaping `node_modules/expo` for monorepos and isolated dependencies
|
|
118
|
+
// NOTE(@kitten): If `expo/AppEntry.js` changes, this will likely have to change too!
|
|
119
|
+
if (/[/\\]node_modules[/\\]expo[/\\]AppEntry\.js$/.test(immutableContext.originModulePath)) {
|
|
120
|
+
// We instead resolve from the project root
|
|
121
|
+
const context = {
|
|
122
|
+
...immutableContext,
|
|
123
|
+
nodeModulesPaths: [],
|
|
124
|
+
// NOTE(@kitten): We need to add a fake filename here. Metro performs a `path.dirname` on this path
|
|
125
|
+
// and then searches `${path.dirname(originModulePath)}/node_modules`. If we don't add it, we miss
|
|
126
|
+
// fallback resolution for packages that failed to hoist
|
|
127
|
+
originModulePath: _path().default.join(projectRoot, 'index.js')
|
|
128
|
+
};
|
|
129
|
+
const res = getStrictResolver(context, platform)('./App');
|
|
130
|
+
debug(`"../../App" resolution for ${platform}: "./App" -> from origin: ${projectRoot}`);
|
|
131
|
+
return res;
|
|
132
|
+
} else {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
116
136
|
// Early return if `moduleName` cannot be a module specifier
|
|
117
137
|
// This doesn't have to be accurate as this resolver is a fallback for failed resolutions and
|
|
118
138
|
// we're only doing this to avoid unnecessary resolution work
|
|
@@ -136,6 +156,25 @@ function createFallbackModuleResolver({ projectRoot, originModuleNames, getStric
|
|
|
136
156
|
return res;
|
|
137
157
|
}
|
|
138
158
|
}
|
|
159
|
+
// Self-resolution
|
|
160
|
+
const pkg = immutableContext.getPackageForModule(immutableContext.originModulePath);
|
|
161
|
+
const pkgName = pkg == null ? void 0 : pkg.packageJson.name;
|
|
162
|
+
if (pkgName && dependenciesToRegex([
|
|
163
|
+
pkgName
|
|
164
|
+
]).test(moduleName)) {
|
|
165
|
+
const context = {
|
|
166
|
+
...immutableContext,
|
|
167
|
+
nodeModulesPaths: [],
|
|
168
|
+
// NOTE(@kitten): Metro currently fails self-resolution, so if the package failed to resolve itself
|
|
169
|
+
// from within itself, we add a hint to where to find itself to the `extraNodeModules` lookups
|
|
170
|
+
extraNodeModules: {
|
|
171
|
+
[pkgName]: pkg.rootPath
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
const res = getStrictResolver(context, platform)(moduleName);
|
|
175
|
+
debug(`Self resolution for ${platform}: ${moduleName} -> from origin: ${pkg.rootPath}`);
|
|
176
|
+
return res;
|
|
177
|
+
}
|
|
139
178
|
return null;
|
|
140
179
|
};
|
|
141
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/createExpoFallbackResolver.ts"],"sourcesContent":["// This file creates the fallback resolver\n// The fallback resolver applies only to module imports and should be the last resolver\n// in the chain. It applies to failed Node module resolution of modules and will attempt\n// to resolve them to `expo` and `expo-router` dependencies that couldn't be resolved.\n// This resolves isolated dependency issues, where we expect dependencies of `expo`\n// and `expo-router` to be resolvable, due to hoisting, but they aren't hoisted in\n// a user's project.\n// See: https://github.com/expo/expo/pull/34286\n\nimport type { ResolutionContext, PackageJson } from '@expo/metro/metro-resolver/types';\nimport path from 'path';\n\nimport type { StrictResolver, StrictResolverFactory } from './withMetroMultiPlatform';\nimport type { ExpoCustomMetroResolver } from './withMetroResolvers';\n\n/** A record of dependencies that we know are only used for scripts and config-plugins\n * @privateRemarks\n * This includes dependencies we never resolve indirectly. Generally, we only want\n * to add fallback resolutions for dependencies of `expo` and `expo-router` that\n * are either transpiled into output code or resolved from other Expo packages\n * without them having direct dependencies on these dependencies.\n * Meaning: If you update this list, exclude what a user might use when they\n * forget to specify their own dependencies, rather than what we use ourselves\n * only in `expo` and `expo-router`.\n */\nconst EXCLUDE_ORIGIN_MODULES: Record<string, true | undefined> = {\n '@expo/config': true,\n '@expo/config-plugins': true,\n 'schema-utils': true, // Used by `expo-router/plugin`\n semver: true, // Used by `expo-router/doctor`\n};\n\ninterface PackageMetaPeerDependenciesMetaEntry {\n [propName: string]: unknown;\n optional?: boolean;\n}\n\ninterface PackageMeta extends PackageJson {\n readonly [propName: string]: unknown;\n readonly dependencies?: Record<string, unknown>;\n readonly peerDependencies?: Record<string, unknown>;\n readonly peerDependenciesMeta?: Record<\n string,\n PackageMetaPeerDependenciesMetaEntry | undefined | null\n >;\n}\n\ninterface ModuleDescription {\n originModulePath: string;\n moduleTestRe: RegExp;\n}\n\nconst debug = require('debug')('expo:start:server:metro:fallback-resolver') as typeof console.log;\n\n/** Converts a list of module names to a regex that may either match bare module names or sub-modules of modules */\nconst dependenciesToRegex = (dependencies: string[]) =>\n new RegExp(`^(?:${dependencies.join('|')})(?:$|/)`);\n\n/** Resolves an origin module and outputs a filter regex and target path for it */\nconst getModuleDescriptionWithResolver = (\n context: ResolutionContext,\n resolve: StrictResolver,\n originModuleName: string\n): ModuleDescription | null => {\n let filePath: string | undefined;\n let packageMeta: PackageMeta | undefined | null;\n try {\n const resolution = resolve(path.join(originModuleName, 'package.json'));\n if (resolution.type !== 'sourceFile') {\n debug(`Fallback module resolution failed for origin module: ${originModuleName})`);\n return null;\n }\n filePath = resolution.filePath;\n // Upcast PackageJson to PackageMeta\n packageMeta = context.getPackage(filePath) as PackageMeta | null | undefined;\n if (!packageMeta) {\n return null;\n }\n } catch (error: any) {\n debug(\n `Fallback module resolution threw: ${error.constructor.name}. (module: ${filePath || originModuleName})`\n );\n return null;\n }\n let dependencies: string[] = [];\n if (packageMeta.dependencies) dependencies.push(...Object.keys(packageMeta.dependencies));\n if (packageMeta.peerDependencies) {\n const peerDependenciesMeta = packageMeta.peerDependenciesMeta;\n let peerDependencies = Object.keys(packageMeta.peerDependencies);\n // We explicitly include non-optional peer dependencies. Non-optional peer dependencies of\n // `expo` and `expo-router` are either expected to be accessible on a project-level, since\n // both are meant to be installed is direct dependencies, or shouldn't be accessible when\n // they're fulfilled as isolated dependencies.\n // The exception are only *optional* peer dependencies, since when they're installed\n // automatically by newer package manager behaviour, they may become isolated dependencies\n // that we still wish to access.\n if (peerDependenciesMeta) {\n peerDependencies = peerDependencies.filter((dependency) => {\n const peerMeta = peerDependenciesMeta[dependency];\n return peerMeta && typeof peerMeta === 'object' && peerMeta.optional === true;\n });\n }\n dependencies.push(...peerDependencies);\n }\n // We deduplicate the dependencies and exclude modules that we know are only used for scripts or config-plugins\n dependencies = dependencies.filter((moduleName, index, dependenciesArr) => {\n if (EXCLUDE_ORIGIN_MODULES[moduleName]) return false;\n return dependenciesArr.indexOf(moduleName) === index;\n });\n // Return test regex for dependencies and full origin module path to resolve through\n const originModulePath = path.dirname(filePath);\n return dependencies.length\n ? { originModulePath, moduleTestRe: dependenciesToRegex(dependencies) }\n : null;\n};\n\n/** Creates a fallback module resolver that resolves dependencis of modules named in `originModuleNames` via their path.\n * @remarks\n * The fallback resolver targets modules dependended on by modules named in `originModuleNames` and resolves\n * them from the module root of these origin modules instead.\n * It should only be used as a fallback after normal Node resolution (and other resolvers) have failed for:\n * - the `expo` package\n * - the `expo-router` package\n * Dependencies mentioned as either optional peer dependencies or direct dependencies by these modules may be isolated\n * and inaccessible via standard Node module resolution. This may happen when either transpilation adds these\n * dependencies to other parts of the tree (e.g. `@babel/runtime`) or when a dependency fails to hoist due to either\n * a corrupted dependency tree or when a peer dependency is fulfilled incorrectly (e.g. `expo-asset`)\n * @privateRemarks\n * This does NOT follow Node resolution and is *only* intended to provide a fallback for modules that we depend on\n * ourselves and know we can resolve (via expo or expo-router)!\n */\nexport function createFallbackModuleResolver({\n projectRoot,\n originModuleNames,\n getStrictResolver,\n}: {\n projectRoot: string;\n originModuleNames: string[];\n getStrictResolver: StrictResolverFactory;\n}): ExpoCustomMetroResolver {\n const _moduleDescriptionsCache: Record<string, ModuleDescription | null> = {};\n\n const getModuleDescription = (\n immutableContext: ResolutionContext,\n originModuleName: string,\n platform: string | null\n ) => {\n if (_moduleDescriptionsCache[originModuleName] !== undefined) {\n return _moduleDescriptionsCache[originModuleName];\n }\n // Resolve the origin module itself via the project root rather than the file that requested the missing module\n // The addition of `package.json` doesn't matter here. We just need a file path that'll be turned into a directory path\n // We don't need to modify `nodeModulesPaths` since it's guaranteed to contain the project's node modules paths\n const context: ResolutionContext = {\n ...immutableContext,\n originModulePath: path.join(projectRoot, 'package.json'),\n };\n return (_moduleDescriptionsCache[originModuleName] = getModuleDescriptionWithResolver(\n context,\n getStrictResolver(context, platform),\n originModuleName\n ));\n };\n\n const fileSpecifierRe = /^[\\\\/]|^\\.\\.?(?:$|[\\\\/])/i;\n\n return function requestFallbackModule(immutableContext, moduleName, platform) {\n // Early return if `moduleName` cannot be a module specifier\n // This doesn't have to be accurate as this resolver is a fallback for failed resolutions and\n // we're only doing this to avoid unnecessary resolution work\n if (fileSpecifierRe.test(moduleName)) {\n return null;\n }\n\n for (const originModuleName of originModuleNames) {\n const moduleDescription = getModuleDescription(immutableContext, originModuleName, platform);\n if (moduleDescription && moduleDescription.moduleTestRe.test(moduleName)) {\n // We instead resolve as if it was depended on by the `originModulePath` (the module named in `originModuleNames`)\n const context: ResolutionContext = {\n ...immutableContext,\n nodeModulesPaths: [],\n // NOTE(@kitten): We need to add a fake filename here. Metro performs a `path.dirname` on this path\n // and then searches `${path.dirname(originModulePath)}/node_modules`. If we don't add it, we miss\n // fallback resolution for packages that failed to hoist\n originModulePath: path.join(moduleDescription.originModulePath, 'index.js'),\n };\n const res = getStrictResolver(context, platform)(moduleName);\n debug(\n `Fallback resolution for ${platform}: ${moduleName} -> from origin: ${originModuleName}`\n );\n return res;\n }\n }\n\n return null;\n };\n}\n"],"names":["createFallbackModuleResolver","EXCLUDE_ORIGIN_MODULES","semver","debug","require","dependenciesToRegex","dependencies","RegExp","join","getModuleDescriptionWithResolver","context","resolve","originModuleName","filePath","packageMeta","resolution","path","type","getPackage","error","constructor","name","push","Object","keys","peerDependencies","peerDependenciesMeta","filter","dependency","peerMeta","optional","moduleName","index","dependenciesArr","indexOf","originModulePath","dirname","length","moduleTestRe","projectRoot","originModuleNames","getStrictResolver","_moduleDescriptionsCache","getModuleDescription","immutableContext","platform","undefined","fileSpecifierRe","requestFallbackModule","test","moduleDescription","nodeModulesPaths","res"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/createExpoFallbackResolver.ts"],"sourcesContent":["// This file creates the fallback resolver\n// The fallback resolver applies only to module imports and should be the last resolver\n// in the chain. It applies to failed Node module resolution of modules and will attempt\n// to resolve them to `expo` and `expo-router` dependencies that couldn't be resolved.\n// This resolves isolated dependency issues, where we expect dependencies of `expo`\n// and `expo-router` to be resolvable, due to hoisting, but they aren't hoisted in\n// a user's project.\n// See: https://github.com/expo/expo/pull/34286\n\nimport type { ResolutionContext, PackageJson } from '@expo/metro/metro-resolver/types';\nimport path from 'path';\n\nimport type { StrictResolver, StrictResolverFactory } from './withMetroMultiPlatform';\nimport type { ExpoCustomMetroResolver } from './withMetroResolvers';\n\n/** A record of dependencies that we know are only used for scripts and config-plugins\n * @privateRemarks\n * This includes dependencies we never resolve indirectly. Generally, we only want\n * to add fallback resolutions for dependencies of `expo` and `expo-router` that\n * are either transpiled into output code or resolved from other Expo packages\n * without them having direct dependencies on these dependencies.\n * Meaning: If you update this list, exclude what a user might use when they\n * forget to specify their own dependencies, rather than what we use ourselves\n * only in `expo` and `expo-router`.\n */\nconst EXCLUDE_ORIGIN_MODULES: Record<string, true | undefined> = {\n '@expo/config': true,\n '@expo/config-plugins': true,\n 'schema-utils': true, // Used by `expo-router/plugin`\n semver: true, // Used by `expo-router/doctor`\n};\n\ninterface PackageMetaPeerDependenciesMetaEntry {\n [propName: string]: unknown;\n optional?: boolean;\n}\n\ninterface PackageMeta extends PackageJson {\n readonly [propName: string]: unknown;\n readonly dependencies?: Record<string, unknown>;\n readonly peerDependencies?: Record<string, unknown>;\n readonly peerDependenciesMeta?: Record<\n string,\n PackageMetaPeerDependenciesMetaEntry | undefined | null\n >;\n}\n\ninterface ModuleDescription {\n originModulePath: string;\n moduleTestRe: RegExp;\n}\n\nconst debug = require('debug')('expo:start:server:metro:fallback-resolver') as typeof console.log;\n\n/** Converts a list of module names to a regex that may either match bare module names or sub-modules of modules */\nconst dependenciesToRegex = (dependencies: string[]) =>\n new RegExp(`^(?:${dependencies.join('|')})(?:$|/)`);\n\n/** Resolves an origin module and outputs a filter regex and target path for it */\nconst getModuleDescriptionWithResolver = (\n context: ResolutionContext,\n resolve: StrictResolver,\n originModuleName: string\n): ModuleDescription | null => {\n let filePath: string | undefined;\n let packageMeta: PackageMeta | undefined | null;\n try {\n const resolution = resolve(path.join(originModuleName, 'package.json'));\n if (resolution.type !== 'sourceFile') {\n debug(`Fallback module resolution failed for origin module: ${originModuleName})`);\n return null;\n }\n filePath = resolution.filePath;\n // Upcast PackageJson to PackageMeta\n packageMeta = context.getPackage(filePath) as PackageMeta | null | undefined;\n if (!packageMeta) {\n return null;\n }\n } catch (error: any) {\n debug(\n `Fallback module resolution threw: ${error.constructor.name}. (module: ${filePath || originModuleName})`\n );\n return null;\n }\n let dependencies: string[] = [];\n if (packageMeta.dependencies) dependencies.push(...Object.keys(packageMeta.dependencies));\n if (packageMeta.peerDependencies) {\n const peerDependenciesMeta = packageMeta.peerDependenciesMeta;\n let peerDependencies = Object.keys(packageMeta.peerDependencies);\n // We explicitly include non-optional peer dependencies. Non-optional peer dependencies of\n // `expo` and `expo-router` are either expected to be accessible on a project-level, since\n // both are meant to be installed is direct dependencies, or shouldn't be accessible when\n // they're fulfilled as isolated dependencies.\n // The exception are only *optional* peer dependencies, since when they're installed\n // automatically by newer package manager behaviour, they may become isolated dependencies\n // that we still wish to access.\n if (peerDependenciesMeta) {\n peerDependencies = peerDependencies.filter((dependency) => {\n const peerMeta = peerDependenciesMeta[dependency];\n return peerMeta && typeof peerMeta === 'object' && peerMeta.optional === true;\n });\n }\n dependencies.push(...peerDependencies);\n }\n // We deduplicate the dependencies and exclude modules that we know are only used for scripts or config-plugins\n dependencies = dependencies.filter((moduleName, index, dependenciesArr) => {\n if (EXCLUDE_ORIGIN_MODULES[moduleName]) return false;\n return dependenciesArr.indexOf(moduleName) === index;\n });\n // Return test regex for dependencies and full origin module path to resolve through\n const originModulePath = path.dirname(filePath);\n return dependencies.length\n ? { originModulePath, moduleTestRe: dependenciesToRegex(dependencies) }\n : null;\n};\n\n/** Creates a fallback module resolver that resolves dependencis of modules named in `originModuleNames` via their path.\n * @remarks\n * The fallback resolver targets modules dependended on by modules named in `originModuleNames` and resolves\n * them from the module root of these origin modules instead.\n * It should only be used as a fallback after normal Node resolution (and other resolvers) have failed for:\n * - the `expo` package\n * - the `expo-router` package\n * Dependencies mentioned as either optional peer dependencies or direct dependencies by these modules may be isolated\n * and inaccessible via standard Node module resolution. This may happen when either transpilation adds these\n * dependencies to other parts of the tree (e.g. `@babel/runtime`) or when a dependency fails to hoist due to either\n * a corrupted dependency tree or when a peer dependency is fulfilled incorrectly (e.g. `expo-asset`)\n * @privateRemarks\n * This does NOT follow Node resolution and is *only* intended to provide a fallback for modules that we depend on\n * ourselves and know we can resolve (via expo or expo-router)!\n */\nexport function createFallbackModuleResolver({\n projectRoot,\n originModuleNames,\n getStrictResolver,\n}: {\n projectRoot: string;\n originModuleNames: string[];\n getStrictResolver: StrictResolverFactory;\n}): ExpoCustomMetroResolver {\n const _moduleDescriptionsCache: Record<string, ModuleDescription | null> = {};\n\n const getModuleDescription = (\n immutableContext: ResolutionContext,\n originModuleName: string,\n platform: string | null\n ) => {\n if (_moduleDescriptionsCache[originModuleName] !== undefined) {\n return _moduleDescriptionsCache[originModuleName];\n }\n // Resolve the origin module itself via the project root rather than the file that requested the missing module\n // The addition of `package.json` doesn't matter here. We just need a file path that'll be turned into a directory path\n // We don't need to modify `nodeModulesPaths` since it's guaranteed to contain the project's node modules paths\n const context: ResolutionContext = {\n ...immutableContext,\n originModulePath: path.join(projectRoot, 'package.json'),\n };\n return (_moduleDescriptionsCache[originModuleName] = getModuleDescriptionWithResolver(\n context,\n getStrictResolver(context, platform),\n originModuleName\n ));\n };\n\n const fileSpecifierRe = /^[\\\\/]|^\\.\\.?(?:$|[\\\\/])/i;\n\n return function requestFallbackModule(immutableContext, moduleName, platform) {\n if (moduleName === '../../App') {\n // Fix up the `../../App` relative path, escaping `node_modules/expo` for monorepos and isolated dependencies\n // NOTE(@kitten): If `expo/AppEntry.js` changes, this will likely have to change too!\n if (/[/\\\\]node_modules[/\\\\]expo[/\\\\]AppEntry\\.js$/.test(immutableContext.originModulePath)) {\n // We instead resolve from the project root\n const context: ResolutionContext = {\n ...immutableContext,\n nodeModulesPaths: [],\n // NOTE(@kitten): We need to add a fake filename here. Metro performs a `path.dirname` on this path\n // and then searches `${path.dirname(originModulePath)}/node_modules`. If we don't add it, we miss\n // fallback resolution for packages that failed to hoist\n originModulePath: path.join(projectRoot, 'index.js'),\n };\n const res = getStrictResolver(context, platform)('./App');\n debug(`\"../../App\" resolution for ${platform}: \"./App\" -> from origin: ${projectRoot}`);\n return res;\n } else {\n return null;\n }\n }\n\n // Early return if `moduleName` cannot be a module specifier\n // This doesn't have to be accurate as this resolver is a fallback for failed resolutions and\n // we're only doing this to avoid unnecessary resolution work\n if (fileSpecifierRe.test(moduleName)) {\n return null;\n }\n\n for (const originModuleName of originModuleNames) {\n const moduleDescription = getModuleDescription(immutableContext, originModuleName, platform);\n if (moduleDescription && moduleDescription.moduleTestRe.test(moduleName)) {\n // We instead resolve as if it was depended on by the `originModulePath` (the module named in `originModuleNames`)\n const context: ResolutionContext = {\n ...immutableContext,\n nodeModulesPaths: [],\n // NOTE(@kitten): We need to add a fake filename here. Metro performs a `path.dirname` on this path\n // and then searches `${path.dirname(originModulePath)}/node_modules`. If we don't add it, we miss\n // fallback resolution for packages that failed to hoist\n originModulePath: path.join(moduleDescription.originModulePath, 'index.js'),\n };\n const res = getStrictResolver(context, platform)(moduleName);\n debug(\n `Fallback resolution for ${platform}: ${moduleName} -> from origin: ${originModuleName}`\n );\n return res;\n }\n }\n\n // Self-resolution\n const pkg = immutableContext.getPackageForModule(immutableContext.originModulePath);\n const pkgName = pkg?.packageJson.name;\n if (pkgName && dependenciesToRegex([pkgName]).test(moduleName)) {\n const context: ResolutionContext = {\n ...immutableContext,\n nodeModulesPaths: [],\n // NOTE(@kitten): Metro currently fails self-resolution, so if the package failed to resolve itself\n // from within itself, we add a hint to where to find itself to the `extraNodeModules` lookups\n extraNodeModules: {\n [pkgName]: pkg.rootPath,\n },\n };\n const res = getStrictResolver(context, platform)(moduleName);\n debug(`Self resolution for ${platform}: ${moduleName} -> from origin: ${pkg.rootPath}`);\n return res;\n }\n\n return null;\n };\n}\n"],"names":["createFallbackModuleResolver","EXCLUDE_ORIGIN_MODULES","semver","debug","require","dependenciesToRegex","dependencies","RegExp","join","getModuleDescriptionWithResolver","context","resolve","originModuleName","filePath","packageMeta","resolution","path","type","getPackage","error","name","push","Object","keys","peerDependencies","peerDependenciesMeta","filter","dependency","peerMeta","optional","moduleName","index","dependenciesArr","indexOf","originModulePath","dirname","length","moduleTestRe","projectRoot","originModuleNames","getStrictResolver","_moduleDescriptionsCache","getModuleDescription","immutableContext","platform","undefined","fileSpecifierRe","requestFallbackModule","test","nodeModulesPaths","res","moduleDescription","pkg","getPackageForModule","pkgName","packageJson","extraNodeModules","rootPath"],"mappings":"AAAA,0CAA0C;AAC1C,uFAAuF;AACvF,wFAAwF;AACxF,sFAAsF;AACtF,mFAAmF;AACnF,kFAAkF;AAClF,oBAAoB;AACpB,+CAA+C;;;;;+BA4H/BA;;;eAAAA;;;;gEAzHC;;;;;;;;;;;AAKjB;;;;;;;;;CASC,GACD,MAAMC,yBAA2D;IAC/D,gBAAgB;IAChB,wBAAwB;IACxB,gBAAgB;IAChBC,QAAQ;AACV;AAsBA,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,iHAAiH,GACjH,MAAMC,sBAAsB,CAACC,eAC3B,IAAIC,OAAO,CAAC,IAAI,EAAED,aAAaE,IAAI,CAAC,KAAK,QAAQ,CAAC;AAEpD,gFAAgF,GAChF,MAAMC,mCAAmC,CACvCC,SACAC,SACAC;IAEA,IAAIC;IACJ,IAAIC;IACJ,IAAI;QACF,MAAMC,aAAaJ,QAAQK,eAAI,CAACR,IAAI,CAACI,kBAAkB;QACvD,IAAIG,WAAWE,IAAI,KAAK,cAAc;YACpCd,MAAM,CAAC,qDAAqD,EAAES,iBAAiB,CAAC,CAAC;YACjF,OAAO;QACT;QACAC,WAAWE,WAAWF,QAAQ;QAC9B,oCAAoC;QACpCC,cAAcJ,QAAQQ,UAAU,CAACL;QACjC,IAAI,CAACC,aAAa;YAChB,OAAO;QACT;IACF,EAAE,OAAOK,OAAY;QACnBhB,MACE,CAAC,kCAAkC,EAAEgB,MAAM,WAAW,CAACC,IAAI,CAAC,WAAW,EAAEP,YAAYD,iBAAiB,CAAC,CAAC;QAE1G,OAAO;IACT;IACA,IAAIN,eAAyB,EAAE;IAC/B,IAAIQ,YAAYR,YAAY,EAAEA,aAAae,IAAI,IAAIC,OAAOC,IAAI,CAACT,YAAYR,YAAY;IACvF,IAAIQ,YAAYU,gBAAgB,EAAE;QAChC,MAAMC,uBAAuBX,YAAYW,oBAAoB;QAC7D,IAAID,mBAAmBF,OAAOC,IAAI,CAACT,YAAYU,gBAAgB;QAC/D,0FAA0F;QAC1F,0FAA0F;QAC1F,yFAAyF;QACzF,8CAA8C;QAC9C,oFAAoF;QACpF,0FAA0F;QAC1F,gCAAgC;QAChC,IAAIC,sBAAsB;YACxBD,mBAAmBA,iBAAiBE,MAAM,CAAC,CAACC;gBAC1C,MAAMC,WAAWH,oBAAoB,CAACE,WAAW;gBACjD,OAAOC,YAAY,OAAOA,aAAa,YAAYA,SAASC,QAAQ,KAAK;YAC3E;QACF;QACAvB,aAAae,IAAI,IAAIG;IACvB;IACA,+GAA+G;IAC/GlB,eAAeA,aAAaoB,MAAM,CAAC,CAACI,YAAYC,OAAOC;QACrD,IAAI/B,sBAAsB,CAAC6B,WAAW,EAAE,OAAO;QAC/C,OAAOE,gBAAgBC,OAAO,CAACH,gBAAgBC;IACjD;IACA,oFAAoF;IACpF,MAAMG,mBAAmBlB,eAAI,CAACmB,OAAO,CAACtB;IACtC,OAAOP,aAAa8B,MAAM,GACtB;QAAEF;QAAkBG,cAAchC,oBAAoBC;IAAc,IACpE;AACN;AAiBO,SAASN,6BAA6B,EAC3CsC,WAAW,EACXC,iBAAiB,EACjBC,iBAAiB,EAKlB;IACC,MAAMC,2BAAqE,CAAC;IAE5E,MAAMC,uBAAuB,CAC3BC,kBACA/B,kBACAgC;QAEA,IAAIH,wBAAwB,CAAC7B,iBAAiB,KAAKiC,WAAW;YAC5D,OAAOJ,wBAAwB,CAAC7B,iBAAiB;QACnD;QACA,+GAA+G;QAC/G,uHAAuH;QACvH,+GAA+G;QAC/G,MAAMF,UAA6B;YACjC,GAAGiC,gBAAgB;YACnBT,kBAAkBlB,eAAI,CAACR,IAAI,CAAC8B,aAAa;QAC3C;QACA,OAAQG,wBAAwB,CAAC7B,iBAAiB,GAAGH,iCACnDC,SACA8B,kBAAkB9B,SAASkC,WAC3BhC;IAEJ;IAEA,MAAMkC,kBAAkB;IAExB,OAAO,SAASC,sBAAsBJ,gBAAgB,EAAEb,UAAU,EAAEc,QAAQ;QAC1E,IAAId,eAAe,aAAa;YAC9B,6GAA6G;YAC7G,qFAAqF;YACrF,IAAI,+CAA+CkB,IAAI,CAACL,iBAAiBT,gBAAgB,GAAG;gBAC1F,2CAA2C;gBAC3C,MAAMxB,UAA6B;oBACjC,GAAGiC,gBAAgB;oBACnBM,kBAAkB,EAAE;oBACpB,mGAAmG;oBACnG,kGAAkG;oBAClG,wDAAwD;oBACxDf,kBAAkBlB,eAAI,CAACR,IAAI,CAAC8B,aAAa;gBAC3C;gBACA,MAAMY,MAAMV,kBAAkB9B,SAASkC,UAAU;gBACjDzC,MAAM,CAAC,2BAA2B,EAAEyC,SAAS,0BAA0B,EAAEN,aAAa;gBACtF,OAAOY;YACT,OAAO;gBACL,OAAO;YACT;QACF;QAEA,4DAA4D;QAC5D,6FAA6F;QAC7F,6DAA6D;QAC7D,IAAIJ,gBAAgBE,IAAI,CAAClB,aAAa;YACpC,OAAO;QACT;QAEA,KAAK,MAAMlB,oBAAoB2B,kBAAmB;YAChD,MAAMY,oBAAoBT,qBAAqBC,kBAAkB/B,kBAAkBgC;YACnF,IAAIO,qBAAqBA,kBAAkBd,YAAY,CAACW,IAAI,CAAClB,aAAa;gBACxE,kHAAkH;gBAClH,MAAMpB,UAA6B;oBACjC,GAAGiC,gBAAgB;oBACnBM,kBAAkB,EAAE;oBACpB,mGAAmG;oBACnG,kGAAkG;oBAClG,wDAAwD;oBACxDf,kBAAkBlB,eAAI,CAACR,IAAI,CAAC2C,kBAAkBjB,gBAAgB,EAAE;gBAClE;gBACA,MAAMgB,MAAMV,kBAAkB9B,SAASkC,UAAUd;gBACjD3B,MACE,CAAC,wBAAwB,EAAEyC,SAAS,EAAE,EAAEd,WAAW,iBAAiB,EAAElB,kBAAkB;gBAE1F,OAAOsC;YACT;QACF;QAEA,kBAAkB;QAClB,MAAME,MAAMT,iBAAiBU,mBAAmB,CAACV,iBAAiBT,gBAAgB;QAClF,MAAMoB,UAAUF,uBAAAA,IAAKG,WAAW,CAACnC,IAAI;QACrC,IAAIkC,WAAWjD,oBAAoB;YAACiD;SAAQ,EAAEN,IAAI,CAAClB,aAAa;YAC9D,MAAMpB,UAA6B;gBACjC,GAAGiC,gBAAgB;gBACnBM,kBAAkB,EAAE;gBACpB,mGAAmG;gBACnG,8FAA8F;gBAC9FO,kBAAkB;oBAChB,CAACF,QAAQ,EAAEF,IAAIK,QAAQ;gBACzB;YACF;YACA,MAAMP,MAAMV,kBAAkB9B,SAASkC,UAAUd;YACjD3B,MAAM,CAAC,oBAAoB,EAAEyC,SAAS,EAAE,EAAEd,WAAW,iBAAiB,EAAEsB,IAAIK,QAAQ,EAAE;YACtF,OAAOP;QACT;QAEA,OAAO;IACT;AACF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Copyright © 2024 650 Industries.
|
|
2
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
//
|
|
4
|
+
// Forks https://github.com/facebook/metro/blob/01b4ad6/packages/metro/src/node-haste/DependencyGraph/createFileMap.js
|
|
5
|
+
// and redirects to `@expo/metro-file-map`
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
function _export(target, all) {
|
|
11
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
_export(exports, {
|
|
17
|
+
get /**
|
|
18
|
+
* Creates a `FileMap` using `@expo/metro-file-map`, matching the same config
|
|
19
|
+
* interpretation as Metro's original `createFileMap`.
|
|
20
|
+
*/ default () {
|
|
21
|
+
return createFileMap;
|
|
22
|
+
},
|
|
23
|
+
get replaceMetroFileMap () {
|
|
24
|
+
return replaceMetroFileMap;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
function _metrofilemap() {
|
|
28
|
+
const data = /*#__PURE__*/ _interop_require_wildcard(require("@expo/metro-file-map"));
|
|
29
|
+
_metrofilemap = function() {
|
|
30
|
+
return data;
|
|
31
|
+
};
|
|
32
|
+
return data;
|
|
33
|
+
}
|
|
34
|
+
function _ciinfo() {
|
|
35
|
+
const data = /*#__PURE__*/ _interop_require_default(require("ci-info"));
|
|
36
|
+
_ciinfo = function() {
|
|
37
|
+
return data;
|
|
38
|
+
};
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
function _nodepath() {
|
|
42
|
+
const data = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
43
|
+
_nodepath = function() {
|
|
44
|
+
return data;
|
|
45
|
+
};
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
const _composeMetroIgnorePatterns = require("../../../utils/composeMetroIgnorePatterns");
|
|
49
|
+
function _interop_require_default(obj) {
|
|
50
|
+
return obj && obj.__esModule ? obj : {
|
|
51
|
+
default: obj
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
55
|
+
if (typeof WeakMap !== "function") return null;
|
|
56
|
+
var cacheBabelInterop = new WeakMap();
|
|
57
|
+
var cacheNodeInterop = new WeakMap();
|
|
58
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
59
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
60
|
+
})(nodeInterop);
|
|
61
|
+
}
|
|
62
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
63
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
64
|
+
return obj;
|
|
65
|
+
}
|
|
66
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
67
|
+
return {
|
|
68
|
+
default: obj
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
72
|
+
if (cache && cache.has(obj)) {
|
|
73
|
+
return cache.get(obj);
|
|
74
|
+
}
|
|
75
|
+
var newObj = {
|
|
76
|
+
__proto__: null
|
|
77
|
+
};
|
|
78
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
79
|
+
for(var key in obj){
|
|
80
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
81
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
82
|
+
if (desc && (desc.get || desc.set)) {
|
|
83
|
+
Object.defineProperty(newObj, key, desc);
|
|
84
|
+
} else {
|
|
85
|
+
newObj[key] = obj[key];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
newObj.default = obj;
|
|
90
|
+
if (cache) {
|
|
91
|
+
cache.set(obj, newObj);
|
|
92
|
+
}
|
|
93
|
+
return newObj;
|
|
94
|
+
}
|
|
95
|
+
function getIgnorePattern(config) {
|
|
96
|
+
const { blockList, blacklistRE } = config.resolver;
|
|
97
|
+
return (0, _composeMetroIgnorePatterns.composeMetroIgnorePatterns)(blacklistRE || blockList);
|
|
98
|
+
}
|
|
99
|
+
function createFileMap(config, options) {
|
|
100
|
+
const watch = (options == null ? void 0 : options.watch) == null ? !_ciinfo().default.isCI : options.watch;
|
|
101
|
+
const { enabled: autoSaveEnabled, ...autoSaveOpts } = config.watcher.unstable_autoSaveCache ?? {};
|
|
102
|
+
const autoSave = watch && autoSaveEnabled ? autoSaveOpts : false;
|
|
103
|
+
const plugins = [
|
|
104
|
+
...config.unstable_fileMapPlugins ?? []
|
|
105
|
+
];
|
|
106
|
+
let dependencyPlugin = null;
|
|
107
|
+
if (config.resolver.dependencyExtractor != null && (options == null ? void 0 : options.extractDependencies) !== false) {
|
|
108
|
+
dependencyPlugin = new (_metrofilemap()).DependencyPlugin({
|
|
109
|
+
dependencyExtractor: config.resolver.dependencyExtractor,
|
|
110
|
+
computeDependencies: true
|
|
111
|
+
});
|
|
112
|
+
plugins.push(dependencyPlugin);
|
|
113
|
+
}
|
|
114
|
+
const hasteMap = new (_metrofilemap()).HastePlugin({
|
|
115
|
+
platforms: new Set([
|
|
116
|
+
...config.resolver.platforms,
|
|
117
|
+
_metrofilemap().default.H.NATIVE_PLATFORM
|
|
118
|
+
]),
|
|
119
|
+
hasteImplModulePath: config.resolver.hasteImplModulePath ?? null,
|
|
120
|
+
enableHastePackages: config.resolver.enableGlobalPackages,
|
|
121
|
+
rootDir: config.projectRoot,
|
|
122
|
+
failValidationOnConflicts: (options == null ? void 0 : options.throwOnModuleCollision) ?? true
|
|
123
|
+
});
|
|
124
|
+
plugins.push(hasteMap);
|
|
125
|
+
const projectRoot = config.projectRoot;
|
|
126
|
+
const serverRoot = config.server.unstable_serverRoot;
|
|
127
|
+
const enableFallback = !!config.resolver.unstable_onDemandFilesystem;
|
|
128
|
+
// NOTE(@kitten): We allow the on-demand filesystem to escape the server root and access any file,
|
|
129
|
+
// - if we're using the CLI from `expo/expo` on an external project (e.g. in CI(
|
|
130
|
+
// - if the user explicitly sets the experimental flag to 'UNSTABLE_ALLOW_ALL'
|
|
131
|
+
const scopeFallback = enableFallback && config.resolver.unstable_onDemandFilesystem !== 'UNSTABLE_ALLOW_ALL' && isDirectoryIn(__dirname, serverRoot ?? projectRoot);
|
|
132
|
+
const fileMap = new (_metrofilemap()).default({
|
|
133
|
+
// NOTE(@kitten): Dropped `config.unstable_fileMapCacheManagerFactory`
|
|
134
|
+
cacheManagerFactory: (factoryParams)=>{
|
|
135
|
+
return new (_metrofilemap()).DiskCacheManager(factoryParams, {
|
|
136
|
+
cacheDirectory: config.fileMapCacheDirectory ?? config.hasteMapCacheDirectory,
|
|
137
|
+
cacheFilePrefix: options == null ? void 0 : options.cacheFilePrefix,
|
|
138
|
+
autoSave
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
perfLoggerFactory: config.unstable_perfLoggerFactory,
|
|
142
|
+
computeSha1: !config.watcher.unstable_lazySha1,
|
|
143
|
+
enableSymlinks: true,
|
|
144
|
+
// NOTE(@kitten): @expo/metro-file-map fork adds `enableFallback` and `scopeFallback`
|
|
145
|
+
enableFallback,
|
|
146
|
+
scopeFallback,
|
|
147
|
+
extensions: Array.from(new Set([
|
|
148
|
+
...config.resolver.sourceExts,
|
|
149
|
+
...config.resolver.assetExts,
|
|
150
|
+
...config.watcher.additionalExts
|
|
151
|
+
])),
|
|
152
|
+
healthCheck: config.watcher.healthCheck,
|
|
153
|
+
ignorePattern: getIgnorePattern(config),
|
|
154
|
+
maxWorkers: config.maxWorkers,
|
|
155
|
+
plugins,
|
|
156
|
+
retainAllFiles: true,
|
|
157
|
+
resetCache: config.resetCache,
|
|
158
|
+
rootDir: projectRoot,
|
|
159
|
+
roots: config.watchFolders,
|
|
160
|
+
useWatchman: config.resolver.useWatchman ?? false,
|
|
161
|
+
watch,
|
|
162
|
+
watchmanDeferStates: config.watcher.watchman.deferStates,
|
|
163
|
+
// NOTE: (@expo/metro-file-map fork) New option is required for `scopeFallback: true` checks
|
|
164
|
+
serverRoot
|
|
165
|
+
});
|
|
166
|
+
return {
|
|
167
|
+
fileMap,
|
|
168
|
+
hasteMap,
|
|
169
|
+
dependencyPlugin
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
function isDirectoryIn(targetPath, rootPath) {
|
|
173
|
+
return targetPath === rootPath || targetPath.startsWith(rootPath + _nodepath().default.sep);
|
|
174
|
+
}
|
|
175
|
+
function assertMetroFileMapPatched(metro) {
|
|
176
|
+
var _metro_getBundler_getBundler;
|
|
177
|
+
const depGraph = (_metro_getBundler_getBundler = metro.getBundler().getBundler()) == null ? void 0 : _metro_getBundler_getBundler._depGraph;
|
|
178
|
+
const fileMap = depGraph == null ? void 0 : depGraph._haste;
|
|
179
|
+
if (!fileMap || !fileMap.__expo) {
|
|
180
|
+
throw new Error('@expo/metro-file-map was not used by Metro. ' + "The DependencyGraph's file map does not have the __expo flag, " + 'which means the createFileMap module export was not replaced before ' + 'Metro instantiated. Ensure replaceMetroFileMap() is called before runServer().');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async function replaceMetroFileMap(immediate) {
|
|
184
|
+
const createFileMapModule = require('@expo/metro/metro/node-haste/DependencyGraph/createFileMap');
|
|
185
|
+
Object.defineProperty(createFileMapModule, 'default', {
|
|
186
|
+
enumerable: true,
|
|
187
|
+
configurable: false,
|
|
188
|
+
writable: false,
|
|
189
|
+
value: createFileMap
|
|
190
|
+
});
|
|
191
|
+
const result = await immediate();
|
|
192
|
+
assertMetroFileMapPatched(result.metro);
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
//# sourceMappingURL=createFileMap-fork.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/createFileMap-fork.ts"],"sourcesContent":["// Copyright © 2024 650 Industries.\n// Copyright (c) Meta Platforms, Inc. and affiliates.\n//\n// Forks https://github.com/facebook/metro/blob/01b4ad6/packages/metro/src/node-haste/DependencyGraph/createFileMap.js\n// and redirects to `@expo/metro-file-map`\n\nimport type MetroServer from '@expo/metro/metro/Server';\nimport type { ConfigT } from '@expo/metro/metro-config';\nimport FileMap, { DependencyPlugin, DiskCacheManager, HastePlugin } from '@expo/metro-file-map';\nimport ciInfo from 'ci-info';\nimport path from 'node:path';\n\nimport { composeMetroIgnorePatterns } from '../../../utils/composeMetroIgnorePatterns';\n\nfunction getIgnorePattern(config: ConfigT): RegExp {\n const { blockList, blacklistRE } = config.resolver;\n return composeMetroIgnorePatterns(blacklistRE || blockList);\n}\n\ninterface CreateFileMapOptions {\n extractDependencies?: boolean;\n throwOnModuleCollision?: boolean;\n watch?: boolean;\n cacheFilePrefix?: string;\n}\n\n/**\n * Creates a `FileMap` using `@expo/metro-file-map`, matching the same config\n * interpretation as Metro's original `createFileMap`.\n */\nexport default function createFileMap(config: ConfigT, options?: CreateFileMapOptions) {\n const watch = options?.watch == null ? !ciInfo.isCI : options.watch;\n\n const { enabled: autoSaveEnabled, ...autoSaveOpts } = config.watcher.unstable_autoSaveCache ?? {};\n const autoSave = watch && autoSaveEnabled ? autoSaveOpts : false;\n\n const plugins = [...(config.unstable_fileMapPlugins ?? [])];\n let dependencyPlugin: DependencyPlugin | null = null;\n\n if (config.resolver.dependencyExtractor != null && options?.extractDependencies !== false) {\n dependencyPlugin = new DependencyPlugin({\n dependencyExtractor: config.resolver.dependencyExtractor,\n computeDependencies: true,\n });\n plugins.push(dependencyPlugin);\n }\n\n const hasteMap = new HastePlugin({\n platforms: new Set([...config.resolver.platforms, FileMap.H.NATIVE_PLATFORM]),\n hasteImplModulePath: config.resolver.hasteImplModulePath ?? null,\n enableHastePackages: config.resolver.enableGlobalPackages,\n rootDir: config.projectRoot,\n failValidationOnConflicts: options?.throwOnModuleCollision ?? true,\n });\n plugins.push(hasteMap);\n\n const projectRoot = config.projectRoot;\n const serverRoot = config.server.unstable_serverRoot;\n const enableFallback = !!config.resolver.unstable_onDemandFilesystem;\n\n // NOTE(@kitten): We allow the on-demand filesystem to escape the server root and access any file,\n // - if we're using the CLI from `expo/expo` on an external project (e.g. in CI(\n // - if the user explicitly sets the experimental flag to 'UNSTABLE_ALLOW_ALL'\n const scopeFallback =\n enableFallback &&\n config.resolver.unstable_onDemandFilesystem !== 'UNSTABLE_ALLOW_ALL' &&\n isDirectoryIn(__dirname, serverRoot ?? projectRoot);\n\n const fileMap = new FileMap({\n // NOTE(@kitten): Dropped `config.unstable_fileMapCacheManagerFactory`\n cacheManagerFactory: (factoryParams: any) => {\n return new DiskCacheManager(factoryParams, {\n cacheDirectory: config.fileMapCacheDirectory ?? config.hasteMapCacheDirectory,\n cacheFilePrefix: options?.cacheFilePrefix,\n autoSave,\n });\n },\n perfLoggerFactory: config.unstable_perfLoggerFactory,\n computeSha1: !config.watcher.unstable_lazySha1,\n enableSymlinks: true,\n // NOTE(@kitten): @expo/metro-file-map fork adds `enableFallback` and `scopeFallback`\n enableFallback,\n scopeFallback,\n extensions: Array.from(\n new Set([\n ...config.resolver.sourceExts,\n ...config.resolver.assetExts,\n ...config.watcher.additionalExts,\n ])\n ),\n healthCheck: config.watcher.healthCheck,\n ignorePattern: getIgnorePattern(config),\n maxWorkers: config.maxWorkers,\n plugins,\n retainAllFiles: true,\n resetCache: config.resetCache,\n rootDir: projectRoot,\n roots: config.watchFolders,\n useWatchman: config.resolver.useWatchman ?? false,\n watch,\n watchmanDeferStates: config.watcher.watchman.deferStates,\n // NOTE: (@expo/metro-file-map fork) New option is required for `scopeFallback: true` checks\n serverRoot,\n });\n\n return {\n fileMap,\n hasteMap,\n dependencyPlugin,\n };\n}\n\nfunction isDirectoryIn(targetPath: string, rootPath: string) {\n return targetPath === rootPath || targetPath.startsWith(rootPath + path.sep);\n}\n\nfunction assertMetroFileMapPatched(metro: { getBundler(): any }): void {\n const depGraph = metro.getBundler().getBundler()?._depGraph;\n const fileMap = depGraph?._haste;\n if (!fileMap || !fileMap.__expo) {\n throw new Error(\n '@expo/metro-file-map was not used by Metro. ' +\n \"The DependencyGraph's file map does not have the __expo flag, \" +\n 'which means the createFileMap module export was not replaced before ' +\n 'Metro instantiated. Ensure replaceMetroFileMap() is called before runServer().'\n );\n }\n}\n\nexport async function replaceMetroFileMap<T extends { readonly metro: MetroServer }>(\n immediate: () => T | PromiseLike<T>\n): Promise<T> {\n const createFileMapModule = require('@expo/metro/metro/node-haste/DependencyGraph/createFileMap');\n Object.defineProperty(createFileMapModule, 'default', {\n enumerable: true,\n configurable: false,\n writable: false,\n value: createFileMap,\n });\n const result = await immediate();\n assertMetroFileMapPatched(result.metro);\n return result;\n}\n"],"names":["createFileMap","replaceMetroFileMap","getIgnorePattern","config","blockList","blacklistRE","resolver","composeMetroIgnorePatterns","options","watch","ciInfo","isCI","enabled","autoSaveEnabled","autoSaveOpts","watcher","unstable_autoSaveCache","autoSave","plugins","unstable_fileMapPlugins","dependencyPlugin","dependencyExtractor","extractDependencies","DependencyPlugin","computeDependencies","push","hasteMap","HastePlugin","platforms","Set","FileMap","H","NATIVE_PLATFORM","hasteImplModulePath","enableHastePackages","enableGlobalPackages","rootDir","projectRoot","failValidationOnConflicts","throwOnModuleCollision","serverRoot","server","unstable_serverRoot","enableFallback","unstable_onDemandFilesystem","scopeFallback","isDirectoryIn","__dirname","fileMap","cacheManagerFactory","factoryParams","DiskCacheManager","cacheDirectory","fileMapCacheDirectory","hasteMapCacheDirectory","cacheFilePrefix","perfLoggerFactory","unstable_perfLoggerFactory","computeSha1","unstable_lazySha1","enableSymlinks","extensions","Array","from","sourceExts","assetExts","additionalExts","healthCheck","ignorePattern","maxWorkers","retainAllFiles","resetCache","roots","watchFolders","useWatchman","watchmanDeferStates","watchman","deferStates","targetPath","rootPath","startsWith","path","sep","assertMetroFileMapPatched","metro","depGraph","getBundler","_depGraph","_haste","__expo","Error","immediate","createFileMapModule","require","Object","defineProperty","enumerable","configurable","writable","value","result"],"mappings":"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"}
|
|
@@ -10,14 +10,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
10
10
|
function _export(target, all) {
|
|
11
11
|
for(var name in all)Object.defineProperty(target, name, {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: all
|
|
13
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
_export(exports, {
|
|
17
|
-
createServerComponentsMiddleware
|
|
17
|
+
get createServerComponentsMiddleware () {
|
|
18
18
|
return createServerComponentsMiddleware;
|
|
19
19
|
},
|
|
20
|
-
fileURLToFilePath
|
|
20
|
+
get fileURLToFilePath () {
|
|
21
21
|
return fileURLToFilePath;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
@@ -28,6 +28,13 @@ function _paths() {
|
|
|
28
28
|
};
|
|
29
29
|
return data;
|
|
30
30
|
}
|
|
31
|
+
function _router() {
|
|
32
|
+
const data = require("@expo/router-server/build/rsc/router");
|
|
33
|
+
_router = function() {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
31
38
|
function _assert() {
|
|
32
39
|
const data = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
33
40
|
_assert = function() {
|
|
@@ -72,7 +79,7 @@ function _interop_require_default(obj) {
|
|
|
72
79
|
const debug = require('debug')('expo:rsc');
|
|
73
80
|
const getMetroServerRootMemo = (0, _fn.memoize)(_paths().getMetroServerRoot);
|
|
74
81
|
function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroOptions, ssrLoadModule, ssrLoadModuleArtifacts, useClientRouter, createModuleId, routerOptions }) {
|
|
75
|
-
const routerModule =
|
|
82
|
+
const routerModule = (0, _router().resolveRouterModule)(useClientRouter);
|
|
76
83
|
const rscMiddleware = (0, _private().getRscMiddleware)({
|
|
77
84
|
config: {},
|
|
78
85
|
// Disabled in development
|
|
@@ -146,7 +153,7 @@ function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroO
|
|
|
146
153
|
const nestedServerBoundaries = [];
|
|
147
154
|
const processedEntryPoints = new Set();
|
|
148
155
|
async function processEntryPoint(entryPoint) {
|
|
149
|
-
var _contents_artifacts_filter__metadata_reactClientReferences, _contents_artifacts_filter__metadata_reactServerReferences;
|
|
156
|
+
var _contents_artifacts_filter__metadata_reactClientReferences, _contents_artifacts_filter_, _contents_artifacts_filter__metadata_reactServerReferences, _contents_artifacts_filter_1;
|
|
150
157
|
processedEntryPoints.add(entryPoint);
|
|
151
158
|
const contents = await ssrLoadModuleArtifacts(entryPoint, {
|
|
152
159
|
environment: 'react-server',
|
|
@@ -158,11 +165,11 @@ function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroO
|
|
|
158
165
|
// Required to ensure assets load as client boundaries.
|
|
159
166
|
domRoot
|
|
160
167
|
});
|
|
161
|
-
const reactClientReferences = (
|
|
168
|
+
const reactClientReferences = (_contents_artifacts_filter_ = contents.artifacts.filter((a)=>a.type === 'js')[0]) == null ? void 0 : (_contents_artifacts_filter__metadata_reactClientReferences = _contents_artifacts_filter_.metadata.reactClientReferences) == null ? void 0 : _contents_artifacts_filter__metadata_reactClientReferences.map((ref)=>fileURLToFilePath(ref));
|
|
162
169
|
if (reactClientReferences) {
|
|
163
170
|
nestedClientBoundaries.push(...reactClientReferences);
|
|
164
171
|
}
|
|
165
|
-
const reactServerReferences = (
|
|
172
|
+
const reactServerReferences = (_contents_artifacts_filter_1 = contents.artifacts.filter((a)=>a.type === 'js')[0]) == null ? void 0 : (_contents_artifacts_filter__metadata_reactServerReferences = _contents_artifacts_filter_1.metadata.reactServerReferences) == null ? void 0 : _contents_artifacts_filter__metadata_reactServerReferences.map((ref)=>fileURLToFilePath(ref));
|
|
166
173
|
if (reactServerReferences) {
|
|
167
174
|
nestedServerBoundaries.push(...reactServerReferences);
|
|
168
175
|
}
|
|
@@ -220,7 +227,7 @@ function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroO
|
|
|
220
227
|
};
|
|
221
228
|
}
|
|
222
229
|
async function getExpoRouterClientReferencesAsync({ platform, domRoot }, files) {
|
|
223
|
-
var _contents_artifacts_filter__metadata_reactServerReferences, _contents_artifacts_filter__metadata_reactClientReferences;
|
|
230
|
+
var _contents_artifacts_filter__metadata_reactServerReferences, _contents_artifacts_filter_, _contents_artifacts_filter__metadata_reactClientReferences, _contents_artifacts_filter_1;
|
|
224
231
|
const contents = await ssrLoadModuleArtifacts(routerModule, {
|
|
225
232
|
environment: 'react-server',
|
|
226
233
|
platform,
|
|
@@ -230,12 +237,12 @@ function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroO
|
|
|
230
237
|
// Extract the global CSS modules that are imported from the router.
|
|
231
238
|
// These will be injected in the head of the HTML document for the website.
|
|
232
239
|
const cssModules = contents.artifacts.filter((a)=>a.type.startsWith('css'));
|
|
233
|
-
const reactServerReferences = (
|
|
240
|
+
const reactServerReferences = (_contents_artifacts_filter_ = contents.artifacts.filter((a)=>a.type === 'js')[0]) == null ? void 0 : (_contents_artifacts_filter__metadata_reactServerReferences = _contents_artifacts_filter_.metadata.reactServerReferences) == null ? void 0 : _contents_artifacts_filter__metadata_reactServerReferences.map((ref)=>fileURLToFilePath(ref));
|
|
234
241
|
if (!reactServerReferences) {
|
|
235
242
|
throw new Error('Static server action references were not returned from the Metro SSR bundle for definedRouter');
|
|
236
243
|
}
|
|
237
244
|
debug('React client boundaries:', reactServerReferences);
|
|
238
|
-
const reactClientReferences = (
|
|
245
|
+
const reactClientReferences = (_contents_artifacts_filter_1 = contents.artifacts.filter((a)=>a.type === 'js')[0]) == null ? void 0 : (_contents_artifacts_filter__metadata_reactClientReferences = _contents_artifacts_filter_1.metadata.reactClientReferences) == null ? void 0 : _contents_artifacts_filter__metadata_reactClientReferences.map((ref)=>fileURLToFilePath(ref));
|
|
239
246
|
if (!reactClientReferences) {
|
|
240
247
|
throw new Error('Static client references were not returned from the Metro SSR bundle for definedRouter');
|
|
241
248
|
}
|
|
@@ -365,23 +372,14 @@ function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroO
|
|
|
365
372
|
rscRendererCache.set(platform, renderer);
|
|
366
373
|
return renderer;
|
|
367
374
|
}
|
|
368
|
-
const rscRenderContext = new Map();
|
|
369
|
-
function getRscRenderContext(platform) {
|
|
370
|
-
// NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.
|
|
371
|
-
if (rscRenderContext.has(platform)) {
|
|
372
|
-
return rscRenderContext.get(platform);
|
|
373
|
-
}
|
|
374
|
-
const context = {};
|
|
375
|
-
rscRenderContext.set(platform, context);
|
|
376
|
-
return context;
|
|
377
|
-
}
|
|
378
375
|
async function renderRscToReadableStream({ input, headers, method, platform, body, engine, contentType, ssrManifest, decodedBody, routerOptions }, isExporting = instanceMetroOptions.isExporting) {
|
|
379
376
|
(0, _assert().default)(isExporting != null, 'The server must be started before calling renderRscToReadableStream.');
|
|
380
377
|
if (method === 'POST') {
|
|
381
378
|
(0, _assert().default)(body, 'Server request must be provided when method is POST (server actions)');
|
|
382
379
|
}
|
|
383
|
-
const context =
|
|
384
|
-
|
|
380
|
+
const context = {
|
|
381
|
+
__expo_requestHeaders: headers
|
|
382
|
+
};
|
|
385
383
|
const { renderRsc } = await getRscRendererAsync(platform);
|
|
386
384
|
return renderRsc({
|
|
387
385
|
body,
|
|
@@ -389,6 +387,8 @@ function createServerComponentsMiddleware(projectRoot, { rscPath, instanceMetroO
|
|
|
389
387
|
context,
|
|
390
388
|
config: {},
|
|
391
389
|
input,
|
|
390
|
+
method,
|
|
391
|
+
headers: Object.fromEntries(headers.entries()),
|
|
392
392
|
contentType
|
|
393
393
|
}, {
|
|
394
394
|
isExporting,
|