@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/start/server/metro/debugging/createHandlersFactory.ts"],"sourcesContent":["import type { CreateCustomMessageHandlerFn } from '@react-native/dev-middleware';\n\nimport { NetworkResponseHandler } from './messageHandlers/NetworkResponse';\nimport { VscodeDebuggerGetPossibleBreakpointsHandler } from './messageHandlers/VscodeDebuggerGetPossibleBreakpoints';\nimport { VscodeDebuggerSetBreakpointByUrlHandler } from './messageHandlers/VscodeDebuggerSetBreakpointByUrl';\nimport { VscodeRuntimeCallFunctionOnHandler } from './messageHandlers/VscodeRuntimeCallFunctionOn';\nimport { VscodeRuntimeEvaluateHandler } from './messageHandlers/VscodeRuntimeEvaluate';\nimport { VscodeRuntimeGetPropertiesHandler } from './messageHandlers/VscodeRuntimeGetProperties';\nimport { pageIsSupported } from './pageIsSupported';\n\nconst debug = require('debug')('expo:metro:debugging:messageHandlers') as typeof console.log;\n\nexport function createHandlersFactory(): CreateCustomMessageHandlerFn {\n return (connection) => {\n debug('Initializing for connection: ', connection.page.title);\n\n if (!pageIsSupported(connection.page)) {\n debug('Aborted, unsupported page capabiltiies:', connection.page.capabilities);\n return null;\n }\n\n const handlers = [\n // Generic handlers\n new NetworkResponseHandler(connection),\n // Vscode-specific handlers\n new VscodeDebuggerGetPossibleBreakpointsHandler(connection),\n new VscodeDebuggerSetBreakpointByUrlHandler(connection),\n new VscodeRuntimeGetPropertiesHandler(connection),\n new VscodeRuntimeCallFunctionOnHandler(connection),\n new VscodeRuntimeEvaluateHandler(connection),\n ].filter((middleware) => middleware.isEnabled());\n\n if (!handlers.length) {\n debug('Aborted, all handlers are disabled');\n return null;\n }\n\n debug(\n 'Initialized with handlers: ',\n handlers.map((middleware) => middleware.constructor.name).join(', ')\n );\n\n return {\n handleDeviceMessage: (message: any) =>\n withMessageDebug(\n 'device',\n message,\n handlers.some((middleware) => middleware.handleDeviceMessage?.(message))\n ),\n handleDebuggerMessage: (message: any) =>\n withMessageDebug(\n 'debugger',\n message,\n handlers.some((middleware) => middleware.handleDebuggerMessage?.(message))\n ),\n };\n };\n}\n\nfunction withMessageDebug(type: 'device' | 'debugger', message: any, result?: null | boolean) {\n const status = result ? 'handled' : 'ignored';\n const prefix = type === 'device' ? '(debugger) <- (device)' : '(debugger) -> (device)';\n\n try {\n debug(`%s = %s:`, prefix, status, JSON.stringify(message));\n } catch {\n debug(`%s = %s:`, prefix, status, 'message not serializable');\n }\n\n return result || undefined;\n}\n"],"names":["createHandlersFactory","debug","require","connection","page","title","pageIsSupported","capabilities","handlers","NetworkResponseHandler","VscodeDebuggerGetPossibleBreakpointsHandler","VscodeDebuggerSetBreakpointByUrlHandler","VscodeRuntimeGetPropertiesHandler","VscodeRuntimeCallFunctionOnHandler","VscodeRuntimeEvaluateHandler","filter","middleware","isEnabled","length","map","
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/debugging/createHandlersFactory.ts"],"sourcesContent":["import type { CreateCustomMessageHandlerFn } from '@react-native/dev-middleware';\n\nimport { NetworkResponseHandler } from './messageHandlers/NetworkResponse';\nimport { VscodeDebuggerGetPossibleBreakpointsHandler } from './messageHandlers/VscodeDebuggerGetPossibleBreakpoints';\nimport { VscodeDebuggerSetBreakpointByUrlHandler } from './messageHandlers/VscodeDebuggerSetBreakpointByUrl';\nimport { VscodeRuntimeCallFunctionOnHandler } from './messageHandlers/VscodeRuntimeCallFunctionOn';\nimport { VscodeRuntimeEvaluateHandler } from './messageHandlers/VscodeRuntimeEvaluate';\nimport { VscodeRuntimeGetPropertiesHandler } from './messageHandlers/VscodeRuntimeGetProperties';\nimport { pageIsSupported } from './pageIsSupported';\n\nconst debug = require('debug')('expo:metro:debugging:messageHandlers') as typeof console.log;\n\nexport function createHandlersFactory(): CreateCustomMessageHandlerFn {\n return (connection) => {\n debug('Initializing for connection: ', connection.page.title);\n\n if (!pageIsSupported(connection.page)) {\n debug('Aborted, unsupported page capabiltiies:', connection.page.capabilities);\n return null;\n }\n\n const handlers = [\n // Generic handlers\n new NetworkResponseHandler(connection),\n // Vscode-specific handlers\n new VscodeDebuggerGetPossibleBreakpointsHandler(connection),\n new VscodeDebuggerSetBreakpointByUrlHandler(connection),\n new VscodeRuntimeGetPropertiesHandler(connection),\n new VscodeRuntimeCallFunctionOnHandler(connection),\n new VscodeRuntimeEvaluateHandler(connection),\n ].filter((middleware) => middleware.isEnabled());\n\n if (!handlers.length) {\n debug('Aborted, all handlers are disabled');\n return null;\n }\n\n debug(\n 'Initialized with handlers: ',\n handlers.map((middleware) => middleware.constructor.name).join(', ')\n );\n\n return {\n handleDeviceMessage: (message: any) =>\n withMessageDebug(\n 'device',\n message,\n handlers.some((middleware) => middleware.handleDeviceMessage?.(message))\n ),\n handleDebuggerMessage: (message: any) =>\n withMessageDebug(\n 'debugger',\n message,\n handlers.some((middleware) => middleware.handleDebuggerMessage?.(message))\n ),\n };\n };\n}\n\nfunction withMessageDebug(type: 'device' | 'debugger', message: any, result?: null | boolean) {\n const status = result ? 'handled' : 'ignored';\n const prefix = type === 'device' ? '(debugger) <- (device)' : '(debugger) -> (device)';\n\n try {\n debug(`%s = %s:`, prefix, status, JSON.stringify(message));\n } catch {\n debug(`%s = %s:`, prefix, status, 'message not serializable');\n }\n\n return result || undefined;\n}\n"],"names":["createHandlersFactory","debug","require","connection","page","title","pageIsSupported","capabilities","handlers","NetworkResponseHandler","VscodeDebuggerGetPossibleBreakpointsHandler","VscodeDebuggerSetBreakpointByUrlHandler","VscodeRuntimeGetPropertiesHandler","VscodeRuntimeCallFunctionOnHandler","VscodeRuntimeEvaluateHandler","filter","middleware","isEnabled","length","map","name","join","handleDeviceMessage","message","withMessageDebug","some","handleDebuggerMessage","type","result","status","prefix","JSON","stringify","undefined"],"mappings":";;;;+BAYgBA;;;eAAAA;;;iCAVuB;sDACqB;kDACJ;6CACL;uCACN;4CACK;iCAClB;AAEhC,MAAMC,QAAQC,QAAQ,SAAS;AAExB,SAASF;IACd,OAAO,CAACG;QACNF,MAAM,iCAAiCE,WAAWC,IAAI,CAACC,KAAK;QAE5D,IAAI,CAACC,IAAAA,gCAAe,EAACH,WAAWC,IAAI,GAAG;YACrCH,MAAM,2CAA2CE,WAAWC,IAAI,CAACG,YAAY;YAC7E,OAAO;QACT;QAEA,MAAMC,WAAW;YACf,mBAAmB;YACnB,IAAIC,uCAAsB,CAACN;YAC3B,2BAA2B;YAC3B,IAAIO,iFAA2C,CAACP;YAChD,IAAIQ,yEAAuC,CAACR;YAC5C,IAAIS,6DAAiC,CAACT;YACtC,IAAIU,+DAAkC,CAACV;YACvC,IAAIW,mDAA4B,CAACX;SAClC,CAACY,MAAM,CAAC,CAACC,aAAeA,WAAWC,SAAS;QAE7C,IAAI,CAACT,SAASU,MAAM,EAAE;YACpBjB,MAAM;YACN,OAAO;QACT;QAEAA,MACE,+BACAO,SAASW,GAAG,CAAC,CAACH,aAAeA,WAAW,WAAW,CAACI,IAAI,EAAEC,IAAI,CAAC;QAGjE,OAAO;YACLC,qBAAqB,CAACC,UACpBC,iBACE,UACAD,SACAf,SAASiB,IAAI,CAAC,CAACT,aAAeA,WAAWM,mBAAmB,oBAA9BN,WAAWM,mBAAmB,MAA9BN,YAAiCO;YAEnEG,uBAAuB,CAACH,UACtBC,iBACE,YACAD,SACAf,SAASiB,IAAI,CAAC,CAACT,aAAeA,WAAWU,qBAAqB,oBAAhCV,WAAWU,qBAAqB,MAAhCV,YAAmCO;QAEvE;IACF;AACF;AAEA,SAASC,iBAAiBG,IAA2B,EAAEJ,OAAY,EAAEK,MAAuB;IAC1F,MAAMC,SAASD,SAAS,YAAY;IACpC,MAAME,SAASH,SAAS,WAAW,2BAA2B;IAE9D,IAAI;QACF1B,MAAM,CAAC,QAAQ,CAAC,EAAE6B,QAAQD,QAAQE,KAAKC,SAAS,CAACT;IACnD,EAAE,OAAM;QACNtB,MAAM,CAAC,QAAQ,CAAC,EAAE6B,QAAQD,QAAQ;IACpC;IAEA,OAAOD,UAAUK;AACnB"}
|
|
@@ -5,24 +5,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
NETWORK_RESPONSE_STORAGE
|
|
12
|
+
get NETWORK_RESPONSE_STORAGE () {
|
|
13
13
|
return NETWORK_RESPONSE_STORAGE;
|
|
14
14
|
},
|
|
15
|
-
NetworkResponseHandler
|
|
15
|
+
get NetworkResponseHandler () {
|
|
16
16
|
return NetworkResponseHandler;
|
|
17
|
+
},
|
|
18
|
+
get recordNetworkResponse () {
|
|
19
|
+
return recordNetworkResponse;
|
|
17
20
|
}
|
|
18
21
|
});
|
|
19
22
|
const _MessageHandler = require("../MessageHandler");
|
|
20
23
|
const NETWORK_RESPONSE_STORAGE = new Map();
|
|
24
|
+
// Bounded so an unauthenticated client on `/inspector/network` cannot grow this
|
|
25
|
+
// map without limit. `Map` preserves insertion order, so the first key is the
|
|
26
|
+
// oldest entry — drop it on overflow (FIFO).
|
|
27
|
+
const MAX_NETWORK_RESPONSES = 512;
|
|
28
|
+
function recordNetworkResponse(requestId, info) {
|
|
29
|
+
NETWORK_RESPONSE_STORAGE.set(requestId, info);
|
|
30
|
+
if (NETWORK_RESPONSE_STORAGE.size > MAX_NETWORK_RESPONSES) {
|
|
31
|
+
const oldestKey = NETWORK_RESPONSE_STORAGE.keys().next().value;
|
|
32
|
+
if (oldestKey !== undefined) {
|
|
33
|
+
NETWORK_RESPONSE_STORAGE.delete(oldestKey);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
21
37
|
class NetworkResponseHandler extends _MessageHandler.MessageHandler {
|
|
22
38
|
handleDeviceMessage(message) {
|
|
23
39
|
if (message.method === 'Expo(Network.receivedResponseBody)') {
|
|
24
40
|
const { requestId, ...requestInfo } = message.params;
|
|
25
|
-
|
|
41
|
+
recordNetworkResponse(requestId, requestInfo);
|
|
26
42
|
return true;
|
|
27
43
|
}
|
|
28
44
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/messageHandlers/NetworkResponse.ts"],"sourcesContent":["import type { Protocol } from 'devtools-protocol';\n\nimport { MessageHandler } from '../MessageHandler';\nimport type {\n CdpMessage,\n DeviceRequest,\n DebuggerRequest,\n DebuggerResponse,\n DeviceResponse,\n} from '../types';\n\n/**\n * The global network response storage, as a workaround for the network inspector.\n * @see createDebugMiddleware#createNetworkWebsocket\n */\nexport const NETWORK_RESPONSE_STORAGE = new Map<\n string,\n DebuggerResponse<NetworkGetResponseBody>['result']\n>();\n\nexport class NetworkResponseHandler extends MessageHandler {\n /** All known responses, mapped by request id */\n storage = NETWORK_RESPONSE_STORAGE;\n\n handleDeviceMessage(message: DeviceRequest<NetworkReceivedResponseBody>) {\n if (message.method === 'Expo(Network.receivedResponseBody)') {\n const { requestId, ...requestInfo } = message.params;\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/messageHandlers/NetworkResponse.ts"],"sourcesContent":["import type { Protocol } from 'devtools-protocol';\n\nimport { MessageHandler } from '../MessageHandler';\nimport type {\n CdpMessage,\n DeviceRequest,\n DebuggerRequest,\n DebuggerResponse,\n DeviceResponse,\n} from '../types';\n\n/**\n * The global network response storage, as a workaround for the network inspector.\n * @see createDebugMiddleware#createNetworkWebsocket\n */\nexport const NETWORK_RESPONSE_STORAGE = new Map<\n string,\n DebuggerResponse<NetworkGetResponseBody>['result']\n>();\n\n// Bounded so an unauthenticated client on `/inspector/network` cannot grow this\n// map without limit. `Map` preserves insertion order, so the first key is the\n// oldest entry — drop it on overflow (FIFO).\nconst MAX_NETWORK_RESPONSES = 512;\n\nexport function recordNetworkResponse(\n requestId: string,\n info: DebuggerResponse<NetworkGetResponseBody>['result']\n) {\n NETWORK_RESPONSE_STORAGE.set(requestId, info);\n if (NETWORK_RESPONSE_STORAGE.size > MAX_NETWORK_RESPONSES) {\n const oldestKey = NETWORK_RESPONSE_STORAGE.keys().next().value;\n if (oldestKey !== undefined) {\n NETWORK_RESPONSE_STORAGE.delete(oldestKey);\n }\n }\n}\n\nexport class NetworkResponseHandler extends MessageHandler {\n /** All known responses, mapped by request id */\n storage = NETWORK_RESPONSE_STORAGE;\n\n handleDeviceMessage(message: DeviceRequest<NetworkReceivedResponseBody>) {\n if (message.method === 'Expo(Network.receivedResponseBody)') {\n const { requestId, ...requestInfo } = message.params;\n recordNetworkResponse(requestId, requestInfo);\n return true;\n }\n\n return false;\n }\n\n handleDebuggerMessage(message: DebuggerRequest<NetworkGetResponseBody>) {\n if (\n message.method === 'Network.getResponseBody' &&\n this.storage.has(message.params.requestId)\n ) {\n return this.sendToDebugger<DeviceResponse<NetworkGetResponseBody>>({\n id: message.id,\n result: this.storage.get(message.params.requestId)!,\n });\n }\n\n return false;\n }\n}\n\n/** Custom message to transfer the response body data to the proxy */\nexport type NetworkReceivedResponseBody = CdpMessage<\n 'Expo(Network.receivedResponseBody)',\n Protocol.Network.GetResponseBodyRequest & Protocol.Network.GetResponseBodyResponse,\n never\n>;\n\n/** @see https://chromedevtools.github.io/devtools-protocol/1-2/Network/#method-getResponseBody */\nexport type NetworkGetResponseBody = CdpMessage<\n 'Network.getResponseBody',\n Protocol.Network.GetResponseBodyRequest,\n Protocol.Network.GetResponseBodyResponse\n>;\n"],"names":["NETWORK_RESPONSE_STORAGE","NetworkResponseHandler","recordNetworkResponse","Map","MAX_NETWORK_RESPONSES","requestId","info","set","size","oldestKey","keys","next","value","undefined","delete","MessageHandler","handleDeviceMessage","message","method","requestInfo","params","handleDebuggerMessage","storage","has","sendToDebugger","id","result","get"],"mappings":";;;;;;;;;;;QAeaA;eAAAA;;QAuBAC;eAAAA;;QAbGC;eAAAA;;;gCAvBe;AAaxB,MAAMF,2BAA2B,IAAIG;AAK5C,gFAAgF;AAChF,8EAA8E;AAC9E,6CAA6C;AAC7C,MAAMC,wBAAwB;AAEvB,SAASF,sBACdG,SAAiB,EACjBC,IAAwD;IAExDN,yBAAyBO,GAAG,CAACF,WAAWC;IACxC,IAAIN,yBAAyBQ,IAAI,GAAGJ,uBAAuB;QACzD,MAAMK,YAAYT,yBAAyBU,IAAI,GAAGC,IAAI,GAAGC,KAAK;QAC9D,IAAIH,cAAcI,WAAW;YAC3Bb,yBAAyBc,MAAM,CAACL;QAClC;IACF;AACF;AAEO,MAAMR,+BAA+Bc,8BAAc;IAIxDC,oBAAoBC,OAAmD,EAAE;QACvE,IAAIA,QAAQC,MAAM,KAAK,sCAAsC;YAC3D,MAAM,EAAEb,SAAS,EAAE,GAAGc,aAAa,GAAGF,QAAQG,MAAM;YACpDlB,sBAAsBG,WAAWc;YACjC,OAAO;QACT;QAEA,OAAO;IACT;IAEAE,sBAAsBJ,OAAgD,EAAE;QACtE,IACEA,QAAQC,MAAM,KAAK,6BACnB,IAAI,CAACI,OAAO,CAACC,GAAG,CAACN,QAAQG,MAAM,CAACf,SAAS,GACzC;YACA,OAAO,IAAI,CAACmB,cAAc,CAAyC;gBACjEC,IAAIR,QAAQQ,EAAE;gBACdC,QAAQ,IAAI,CAACJ,OAAO,CAACK,GAAG,CAACV,QAAQG,MAAM,CAACf,SAAS;YACnD;QACF;QAEA,OAAO;IACT;;QA1BK,gBACL,8CAA8C,QAC9CiB,UAAUtB;;AAyBZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/start/server/metro/debugging/pageIsSupported.ts"],"sourcesContent":["import { Page } from './types';\n\ntype DevicePageInternal = Pick<Page, 'title' | 'capabilities'>;\ntype DevicePageResponse = {\n title: string;\n reactNative?: {\n logicalDeviceId: string;\n capabilities: Page['capabilities'];\n };\n};\n\n/**\n * Determine if a page debug target is supported by our debugging extensions.\n * If it's not, the extended CDP handlers will not be enabled.\n */\nexport function pageIsSupported(page: DevicePageInternal | DevicePageResponse): boolean {\n const capabilities =\n (page as DevicePageInternal).capabilities ??\n (page as DevicePageResponse).reactNative?.capabilities ??\n {};\n\n return (\n page.title === 'React Native Experimental (Improved Chrome Reloads)' ||\n capabilities.nativePageReloads === true\n );\n}\n"],"names":["pageIsSupported","page","capabilities","reactNative","title","nativePageReloads"],"mappings":";;;;+BAegBA;;;eAAAA;;;AAAT,SAASA,gBAAgBC,IAA6C;QAGzE;IAFF,MAAMC,eACJ,AAACD,KAA4BC,YAAY,MACzC,oBAAA,AAACD,KAA4BE,WAAW,qBAAxC,kBAA0CD,YAAY,KACtD,CAAC;IAEH,OACED,KAAKG,KAAK,KAAK,yDACfF,aAAaG,iBAAiB,KAAK;AAEvC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/debugging/pageIsSupported.ts"],"sourcesContent":["import type { Page } from './types';\n\ntype DevicePageInternal = Pick<Page, 'title' | 'capabilities'>;\ntype DevicePageResponse = {\n title: string;\n reactNative?: {\n logicalDeviceId: string;\n capabilities: Page['capabilities'];\n };\n};\n\n/**\n * Determine if a page debug target is supported by our debugging extensions.\n * If it's not, the extended CDP handlers will not be enabled.\n */\nexport function pageIsSupported(page: DevicePageInternal | DevicePageResponse): boolean {\n const capabilities =\n (page as DevicePageInternal).capabilities ??\n (page as DevicePageResponse).reactNative?.capabilities ??\n {};\n\n return (\n page.title === 'React Native Experimental (Improved Chrome Reloads)' ||\n capabilities.nativePageReloads === true\n );\n}\n"],"names":["pageIsSupported","page","capabilities","reactNative","title","nativePageReloads"],"mappings":";;;;+BAegBA;;;eAAAA;;;AAAT,SAASA,gBAAgBC,IAA6C;QAGzE;IAFF,MAAMC,eACJ,AAACD,KAA4BC,YAAY,MACzC,oBAAA,AAACD,KAA4BE,WAAW,qBAAxC,kBAA0CD,YAAY,KACtD,CAAC;IAEH,OACED,KAAKG,KAAK,KAAK,yDACfF,aAAaG,iBAAiB,KAAK;AAEvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/compression.ts"],"sourcesContent":["import { NextHandleFunction } from 'connect';\n\nconst createCompressionMiddleware = require('compression');\n\nconst compressionMiddleware = createCompressionMiddleware();\n\n/**\n * Compression middleware that allows compression for bundles and source maps only.\n */\nexport const compression: NextHandleFunction = (req, res, next) => {\n // We need to make compression decision based on request,\n // because resposnse is not ready when the middleware is executed.\n\n if (!req.url) {\n return next();\n }\n\n const pathname = getPathname(req.url);\n\n // Detection based on Metro Server implementation\n // All pathnames ending with .bundle or .map are handled as bundles and source maps respectively.\n // https://github.com/facebook/metro/blob/83fd895c567207efb6568cb8850bf05a238d83d2/packages/metro/src/Server.js#L649\n if (isBundle(pathname) || isSourceMap(pathname)) {\n return compressionMiddleware(req, res, next);\n }\n\n // For all other pathnames, we skip compression.\n return next();\n};\n\nfunction getPathname(url: string): string {\n let pathname: string;\n try {\n pathname = new URL(url, 'https://expo.dev').pathname;\n } catch {\n pathname = '';\n }\n return pathname;\n}\n\nfunction isBundle(pathname: string): boolean {\n return pathname.endsWith('.bundle');\n}\n\nfunction isSourceMap(pathname: string): boolean {\n return pathname.endsWith('.map');\n}\n"],"names":["compression","createCompressionMiddleware","require","compressionMiddleware","req","res","next","url","pathname","getPathname","isBundle","isSourceMap","URL","endsWith"],"mappings":";;;;+BASaA;;;eAAAA;;;AAPb,MAAMC,8BAA8BC,QAAQ;AAE5C,MAAMC,wBAAwBF;AAKvB,MAAMD,cAAkC,CAACI,KAAKC,KAAKC;IACxD,yDAAyD;IACzD,kEAAkE;IAElE,IAAI,CAACF,IAAIG,GAAG,EAAE;QACZ,OAAOD;IACT;IAEA,MAAME,WAAWC,YAAYL,IAAIG,GAAG;IAEpC,iDAAiD;IACjD,iGAAiG;IACjG,oHAAoH;IACpH,IAAIG,SAASF,aAAaG,YAAYH,WAAW;QAC/C,OAAOL,sBAAsBC,KAAKC,KAAKC;IACzC;IAEA,gDAAgD;IAChD,OAAOA;AACT;AAEA,SAASG,YAAYF,GAAW;IAC9B,IAAIC;IACJ,IAAI;QACFA,WAAW,IAAII,IAAIL,KAAK,oBAAoBC,QAAQ;IACtD,EAAE,OAAM;QACNA,WAAW;IACb;IACA,OAAOA;AACT;AAEA,SAASE,SAASF,QAAgB;IAChC,OAAOA,SAASK,QAAQ,CAAC;AAC3B;AAEA,SAASF,YAAYH,QAAgB;IACnC,OAAOA,SAASK,QAAQ,CAAC;AAC3B"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/compression.ts"],"sourcesContent":["import type { NextHandleFunction } from 'connect';\n\nconst createCompressionMiddleware = require('compression');\n\nconst compressionMiddleware = createCompressionMiddleware();\n\n/**\n * Compression middleware that allows compression for bundles and source maps only.\n */\nexport const compression: NextHandleFunction = (req, res, next) => {\n // We need to make compression decision based on request,\n // because resposnse is not ready when the middleware is executed.\n\n if (!req.url) {\n return next();\n }\n\n const pathname = getPathname(req.url);\n\n // Detection based on Metro Server implementation\n // All pathnames ending with .bundle or .map are handled as bundles and source maps respectively.\n // https://github.com/facebook/metro/blob/83fd895c567207efb6568cb8850bf05a238d83d2/packages/metro/src/Server.js#L649\n if (isBundle(pathname) || isSourceMap(pathname)) {\n return compressionMiddleware(req, res, next);\n }\n\n // For all other pathnames, we skip compression.\n return next();\n};\n\nfunction getPathname(url: string): string {\n let pathname: string;\n try {\n pathname = new URL(url, 'https://expo.dev').pathname;\n } catch {\n pathname = '';\n }\n return pathname;\n}\n\nfunction isBundle(pathname: string): boolean {\n return pathname.endsWith('.bundle');\n}\n\nfunction isSourceMap(pathname: string): boolean {\n return pathname.endsWith('.map');\n}\n"],"names":["compression","createCompressionMiddleware","require","compressionMiddleware","req","res","next","url","pathname","getPathname","isBundle","isSourceMap","URL","endsWith"],"mappings":";;;;+BASaA;;;eAAAA;;;AAPb,MAAMC,8BAA8BC,QAAQ;AAE5C,MAAMC,wBAAwBF;AAKvB,MAAMD,cAAkC,CAACI,KAAKC,KAAKC;IACxD,yDAAyD;IACzD,kEAAkE;IAElE,IAAI,CAACF,IAAIG,GAAG,EAAE;QACZ,OAAOD;IACT;IAEA,MAAME,WAAWC,YAAYL,IAAIG,GAAG;IAEpC,iDAAiD;IACjD,iGAAiG;IACjG,oHAAoH;IACpH,IAAIG,SAASF,aAAaG,YAAYH,WAAW;QAC/C,OAAOL,sBAAsBC,KAAKC,KAAKC;IACzC;IAEA,gDAAgD;IAChD,OAAOA;AACT;AAEA,SAASG,YAAYF,GAAW;IAC9B,IAAIC;IACJ,IAAI;QACFA,WAAW,IAAII,IAAIL,KAAK,oBAAoBC,QAAQ;IACtD,EAAE,OAAM;QACNA,WAAW;IACb;IACA,OAAOA;AACT;AAEA,SAASE,SAASF,QAAgB;IAChC,OAAOA,SAASK,QAAQ,CAAC;AAC3B;AAEA,SAASF,YAAYH,QAAgB;IACnC,OAAOA,SAASK,QAAQ,CAAC;AAC3B"}
|
|
@@ -25,6 +25,12 @@ function _ws() {
|
|
|
25
25
|
const _createSocketBroadcaster = require("./utils/createSocketBroadcaster");
|
|
26
26
|
const _createSocketMap = require("./utils/createSocketMap");
|
|
27
27
|
const _socketMessages = require("./utils/socketMessages");
|
|
28
|
+
const _net = require("../../../../utils/net");
|
|
29
|
+
const debug = require('debug')('expo:metro:devserver:messageSocket');
|
|
30
|
+
const CLIENT_BROADCAST_ALLOWED_METHODS = new Set([
|
|
31
|
+
'reload',
|
|
32
|
+
'devMenu'
|
|
33
|
+
]);
|
|
28
34
|
function createMessagesSocket(options) {
|
|
29
35
|
const clients = (0, _createSocketMap.createSocketMap)();
|
|
30
36
|
const broadcast = (0, _createSocketBroadcaster.createBroadcaster)(clients.map);
|
|
@@ -33,6 +39,7 @@ function createMessagesSocket(options) {
|
|
|
33
39
|
});
|
|
34
40
|
server.on('connection', (socket, req)=>{
|
|
35
41
|
const client = clients.registerSocket(socket);
|
|
42
|
+
const isTrustedClient = (0, _net.isLocalSocket)(req.socket) && (0, _net.isMatchingOrigin)(req, options.serverBaseUrl);
|
|
36
43
|
// Assign the query parameters to the socket, used for `getpeers` requests
|
|
37
44
|
// NOTE(cedric): this looks like a legacy feature, might be able to drop it
|
|
38
45
|
if (req.url) {
|
|
@@ -44,7 +51,7 @@ function createMessagesSocket(options) {
|
|
|
44
51
|
socket.on('close', client.terminate);
|
|
45
52
|
socket.on('error', client.terminate);
|
|
46
53
|
// Register message handler
|
|
47
|
-
socket.on('message', createClientMessageHandler(socket, client.id, clients, broadcast));
|
|
54
|
+
socket.on('message', createClientMessageHandler(socket, client.id, clients, broadcast, isTrustedClient));
|
|
48
55
|
});
|
|
49
56
|
return {
|
|
50
57
|
endpoint: '/message',
|
|
@@ -60,7 +67,7 @@ function createMessagesSocket(options) {
|
|
|
60
67
|
}
|
|
61
68
|
};
|
|
62
69
|
}
|
|
63
|
-
function createClientMessageHandler(socket, clientId, clients, broadcast) {
|
|
70
|
+
function createClientMessageHandler(socket, clientId, clients, broadcast, isTrustedClient) {
|
|
64
71
|
function handleServerRequest(message) {
|
|
65
72
|
// Ignore messages without identifiers, unable to link responses
|
|
66
73
|
if (!message.id) return;
|
|
@@ -88,6 +95,10 @@ function createClientMessageHandler(socket, clientId, clients, broadcast) {
|
|
|
88
95
|
if (!message) return;
|
|
89
96
|
// Handle broadcast messages
|
|
90
97
|
if (messageIsBroadcast(message)) {
|
|
98
|
+
if (!isTrustedClient || !CLIENT_BROADCAST_ALLOWED_METHODS.has(message.method)) {
|
|
99
|
+
debug(`Refused broadcast message from untrusted client (method: ${message.method})`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
91
102
|
return broadcast(null, data.toString());
|
|
92
103
|
}
|
|
93
104
|
// Handle incoming requests from clients
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/createMessageSocket.ts"],"sourcesContent":["import { parse } from 'node:url';\nimport { type WebSocket, WebSocketServer, type RawData as WebSocketRawData } from 'ws';\n\nimport { createBroadcaster } from './utils/createSocketBroadcaster';\nimport { createSocketMap, type SocketId } from './utils/createSocketMap';\nimport { parseRawMessage, serializeMessage } from './utils/socketMessages';\n\ntype MessageSocketOptions = {\n logger: {\n warn: (message: string) => any;\n };\n};\n\n/**\n * Client \"command\" server that dispatches basic commands to connected clients.\n * This basic client to client communication, reload, or open dev menu cli commands.\n */\nexport function createMessagesSocket(options: MessageSocketOptions) {\n const clients = createSocketMap();\n const broadcast = createBroadcaster(clients.map);\n\n const server = new WebSocketServer({ noServer: true });\n\n server.on('connection', (socket, req) => {\n const client = clients.registerSocket(socket);\n\n // Assign the query parameters to the socket, used for `getpeers` requests\n // NOTE(cedric): this looks like a legacy feature, might be able to drop it\n if (req.url) {\n Object.defineProperty(socket, '_upgradeQuery', {\n value: parse(req.url).query,\n });\n }\n\n // Register disconnect handlers\n socket.on('close', client.terminate);\n socket.on('error', client.terminate);\n // Register message handler\n socket.on('message', createClientMessageHandler(socket, client.id, clients, broadcast));\n });\n\n return {\n endpoint: '/message' as const,\n server,\n broadcast: (method: BroadcastMessage['method'], params?: BroadcastMessage['params']) => {\n if (clients.map.size === 0) {\n return options.logger.warn(\n `No apps connected. Sending \"${method}\" to all React Native apps failed. Make sure your app is running in the simulator or on a phone connected via USB.`\n );\n }\n\n broadcast(null, serializeMessage({ method, params }));\n },\n };\n}\n\nfunction createClientMessageHandler(\n socket: WebSocket,\n clientId: SocketId,\n clients: ReturnType<typeof createSocketMap>,\n broadcast: ReturnType<typeof createBroadcaster>\n) {\n function handleServerRequest(message: RequestMessage) {\n // Ignore messages without identifiers, unable to link responses\n if (!message.id) return;\n\n if (message.method === 'getid') {\n return socket.send(serializeMessage({ id: message.id, result: clientId }));\n }\n\n if (message.method === 'getpeers') {\n const peers: Record<string, any> = {};\n clients.map.forEach((peerSocket, peerSocketId) => {\n if (peerSocketId !== clientId) {\n peers[peerSocketId] = '_upgradeQuery' in peerSocket ? peerSocket._upgradeQuery : {};\n }\n });\n return socket.send(serializeMessage({ id: message.id, result: peers }));\n }\n }\n\n return (data: WebSocketRawData, isBinary: boolean) => {\n const message = parseRawMessage<IncomingMessage>(data, isBinary);\n if (!message) return;\n\n // Handle broadcast messages\n if (messageIsBroadcast(message)) {\n return broadcast(null, data.toString());\n }\n\n // Handle incoming requests from clients\n if (messageIsRequest(message)) {\n if (message.target === 'server') {\n return handleServerRequest(message);\n }\n\n return clients.findSocket(message.target)?.send(\n serializeMessage({\n method: message.method,\n params: message.params,\n id: !message.id\n ? undefined\n : {\n requestId: message.id,\n clientId,\n },\n })\n );\n }\n\n // Handle incoming responses\n if (messageIsResponse(message)) {\n return clients.findSocket(message.id.clientId)?.send(\n serializeMessage({\n id: message.id.requestId,\n result: message.result,\n error: message.error,\n })\n );\n }\n };\n}\n\ntype MessageId = {\n requestId: string;\n clientId: SocketId;\n};\n\ntype IncomingMessage = BroadcastMessage | RequestMessage | ResponseMessage;\n\ntype BroadcastMessage = {\n method: string;\n params?: Record<string, any>;\n};\n\ntype RequestMessage = {\n method: string;\n params?: Record<string, any>;\n target: string;\n id?: string;\n};\n\ntype ResponseMessage = {\n result?: any;\n error?: Error;\n id: MessageId;\n};\n\nfunction messageIsBroadcast(message: IncomingMessage): message is BroadcastMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n (!('id' in message) || message.id === undefined) &&\n (!('target' in message) || message.target === undefined)\n );\n}\n\nfunction messageIsRequest(message: IncomingMessage): message is RequestMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n 'target' in message &&\n typeof message.target === 'string'\n );\n}\n\nfunction messageIsResponse(message: IncomingMessage): message is ResponseMessage {\n return (\n 'id' in message &&\n typeof message.id === 'object' &&\n typeof message.id.requestId !== 'undefined' &&\n typeof message.id.clientId === 'string' &&\n (('result' in message && !!message.result) || ('error' in message && !!message.error))\n );\n}\n"],"names":["createMessagesSocket","options","clients","createSocketMap","broadcast","createBroadcaster","map","server","WebSocketServer","noServer","on","socket","req","client","registerSocket","url","Object","defineProperty","value","parse","query","terminate","createClientMessageHandler","id","endpoint","method","params","size","logger","warn","serializeMessage","clientId","handleServerRequest","message","send","result","peers","forEach","peerSocket","peerSocketId","_upgradeQuery","data","isBinary","parseRawMessage","messageIsBroadcast","toString","messageIsRequest","target","findSocket","undefined","requestId","messageIsResponse","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/createMessageSocket.ts"],"sourcesContent":["import { parse } from 'node:url';\nimport { type WebSocket, WebSocketServer, type RawData as WebSocketRawData } from 'ws';\n\nimport { createBroadcaster } from './utils/createSocketBroadcaster';\nimport { createSocketMap, type SocketId } from './utils/createSocketMap';\nimport { parseRawMessage, serializeMessage } from './utils/socketMessages';\nimport { isLocalSocket, isMatchingOrigin } from '../../../../utils/net';\n\ntype MessageSocketOptions = {\n logger: {\n warn: (message: string) => any;\n };\n serverBaseUrl: string;\n};\n\nconst debug = require('debug')('expo:metro:devserver:messageSocket') as typeof console.log;\n\nconst CLIENT_BROADCAST_ALLOWED_METHODS = new Set(['reload', 'devMenu']);\n\n/**\n * Client \"command\" server that dispatches basic commands to connected clients.\n * This basic client to client communication, reload, or open dev menu cli commands.\n */\nexport function createMessagesSocket(options: MessageSocketOptions) {\n const clients = createSocketMap();\n const broadcast = createBroadcaster(clients.map);\n\n const server = new WebSocketServer({ noServer: true });\n\n server.on('connection', (socket, req) => {\n const client = clients.registerSocket(socket);\n const isTrustedClient =\n isLocalSocket(req.socket) && isMatchingOrigin(req, options.serverBaseUrl);\n\n // Assign the query parameters to the socket, used for `getpeers` requests\n // NOTE(cedric): this looks like a legacy feature, might be able to drop it\n if (req.url) {\n Object.defineProperty(socket, '_upgradeQuery', {\n value: parse(req.url).query,\n });\n }\n\n // Register disconnect handlers\n socket.on('close', client.terminate);\n socket.on('error', client.terminate);\n // Register message handler\n socket.on(\n 'message',\n createClientMessageHandler(socket, client.id, clients, broadcast, isTrustedClient)\n );\n });\n\n return {\n endpoint: '/message' as const,\n server,\n broadcast: (method: BroadcastMessage['method'], params?: BroadcastMessage['params']) => {\n if (clients.map.size === 0) {\n return options.logger.warn(\n `No apps connected. Sending \"${method}\" to all React Native apps failed. Make sure your app is running in the simulator or on a phone connected via USB.`\n );\n }\n\n broadcast(null, serializeMessage({ method, params }));\n },\n };\n}\n\nfunction createClientMessageHandler(\n socket: WebSocket,\n clientId: SocketId,\n clients: ReturnType<typeof createSocketMap>,\n broadcast: ReturnType<typeof createBroadcaster>,\n isTrustedClient: boolean\n) {\n function handleServerRequest(message: RequestMessage) {\n // Ignore messages without identifiers, unable to link responses\n if (!message.id) return;\n\n if (message.method === 'getid') {\n return socket.send(serializeMessage({ id: message.id, result: clientId }));\n }\n\n if (message.method === 'getpeers') {\n const peers: Record<string, any> = {};\n clients.map.forEach((peerSocket, peerSocketId) => {\n if (peerSocketId !== clientId) {\n peers[peerSocketId] = '_upgradeQuery' in peerSocket ? peerSocket._upgradeQuery : {};\n }\n });\n return socket.send(serializeMessage({ id: message.id, result: peers }));\n }\n }\n\n return (data: WebSocketRawData, isBinary: boolean) => {\n const message = parseRawMessage<IncomingClientMessage>(data, isBinary);\n if (!message) return;\n\n // Handle broadcast messages\n if (messageIsBroadcast(message)) {\n if (!isTrustedClient || !CLIENT_BROADCAST_ALLOWED_METHODS.has(message.method)) {\n debug(`Refused broadcast message from untrusted client (method: ${message.method})`);\n return;\n }\n return broadcast(null, data.toString());\n }\n\n // Handle incoming requests from clients\n if (messageIsRequest(message)) {\n if (message.target === 'server') {\n return handleServerRequest(message);\n }\n\n return clients.findSocket(message.target)?.send(\n serializeMessage({\n method: message.method,\n params: message.params,\n id: !message.id\n ? undefined\n : {\n requestId: message.id,\n clientId,\n },\n })\n );\n }\n\n // Handle incoming responses\n if (messageIsResponse(message)) {\n return clients.findSocket(message.id.clientId)?.send(\n serializeMessage({\n id: message.id.requestId,\n result: message.result,\n error: message.error,\n })\n );\n }\n };\n}\n\ntype MessageId = {\n requestId: string;\n clientId: SocketId;\n};\n\ntype IncomingClientMessage = BroadcastMessage | RequestMessage | ResponseMessage;\n\ntype BroadcastMessage = {\n method: string;\n params?: Record<string, any>;\n};\n\ntype RequestMessage = {\n method: string;\n params?: Record<string, any>;\n target: string;\n id?: string;\n};\n\ntype ResponseMessage = {\n result?: any;\n error?: Error;\n id: MessageId;\n};\n\nfunction messageIsBroadcast(message: IncomingClientMessage): message is BroadcastMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n (!('id' in message) || message.id === undefined) &&\n (!('target' in message) || message.target === undefined)\n );\n}\n\nfunction messageIsRequest(message: IncomingClientMessage): message is RequestMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n 'target' in message &&\n typeof message.target === 'string'\n );\n}\n\nfunction messageIsResponse(message: IncomingClientMessage): message is ResponseMessage {\n return (\n 'id' in message &&\n typeof message.id === 'object' &&\n typeof message.id.requestId !== 'undefined' &&\n typeof message.id.clientId === 'string' &&\n (('result' in message && !!message.result) || ('error' in message && !!message.error))\n );\n}\n"],"names":["createMessagesSocket","debug","require","CLIENT_BROADCAST_ALLOWED_METHODS","Set","options","clients","createSocketMap","broadcast","createBroadcaster","map","server","WebSocketServer","noServer","on","socket","req","client","registerSocket","isTrustedClient","isLocalSocket","isMatchingOrigin","serverBaseUrl","url","Object","defineProperty","value","parse","query","terminate","createClientMessageHandler","id","endpoint","method","params","size","logger","warn","serializeMessage","clientId","handleServerRequest","message","send","result","peers","forEach","peerSocket","peerSocketId","_upgradeQuery","data","isBinary","parseRawMessage","messageIsBroadcast","has","toString","messageIsRequest","target","findSocket","undefined","requestId","messageIsResponse","error"],"mappings":"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"}
|
|
@@ -47,7 +47,9 @@ const _compression = require("./compression");
|
|
|
47
47
|
const _createEventSocket = require("./createEventSocket");
|
|
48
48
|
const _createMessageSocket = require("./createMessageSocket");
|
|
49
49
|
const _log = require("../../../../log");
|
|
50
|
+
const _dir = require("../../../../utils/dir");
|
|
50
51
|
const _editor = require("../../../../utils/editor");
|
|
52
|
+
const _net = require("../../../../utils/net");
|
|
51
53
|
function _interop_require_default(obj) {
|
|
52
54
|
return obj && obj.__esModule ? obj : {
|
|
53
55
|
default: obj
|
|
@@ -55,7 +57,8 @@ function _interop_require_default(obj) {
|
|
|
55
57
|
}
|
|
56
58
|
function createMetroMiddleware(metroConfig, options) {
|
|
57
59
|
const messages = (0, _createMessageSocket.createMessagesSocket)({
|
|
58
|
-
logger: _log.Log
|
|
60
|
+
logger: _log.Log,
|
|
61
|
+
serverBaseUrl: options.serverBaseUrl
|
|
59
62
|
});
|
|
60
63
|
const events = (0, _createEventSocket.createEventsSocket)(messages);
|
|
61
64
|
const middleware = (0, _connect().default)().use(noCacheMiddleware).use(_compression.compression)// Support opening stack frames from clients directly in the editor
|
|
@@ -111,6 +114,10 @@ function createMetroOpenStackFrameMiddleware(metroConfig) {
|
|
|
111
114
|
res.statusCode = 400;
|
|
112
115
|
return res.end('Open stack frame requires target file to be in server root');
|
|
113
116
|
}
|
|
117
|
+
if ((0, _net.shouldThrottleRemoteDevCall)()) {
|
|
118
|
+
res.statusCode = 429;
|
|
119
|
+
return res.end();
|
|
120
|
+
}
|
|
114
121
|
try {
|
|
115
122
|
await (0, _editor.openInEditorAsync)(file, frame.lineNumber);
|
|
116
123
|
return res.end('OK');
|
|
@@ -126,7 +133,7 @@ const ensureFileInRootDirectory = async (root, file)=>{
|
|
|
126
133
|
file = await _nodefs().default.promises.realpath(file);
|
|
127
134
|
// Cannot be accessed using Metro's server API, we need to move the file
|
|
128
135
|
// into the project root and try again.
|
|
129
|
-
if (
|
|
136
|
+
if ((0, _dir.isPathInside)(file, root)) {
|
|
130
137
|
return file;
|
|
131
138
|
} else {
|
|
132
139
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/createMetroMiddleware.ts"],"sourcesContent":["import { getMetroServerRoot } from '@expo/config/paths';\nimport type { MetroConfig } from '@expo/metro/metro';\nimport type MetroBundler from '@expo/metro/metro/Bundler';\nimport connect from 'connect';\nimport { Body } from 'fetch-nodeshim';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { compression } from './compression';\nimport { createEventsSocket } from './createEventSocket';\nimport { createMessagesSocket } from './createMessageSocket';\nimport { Log } from '../../../../log';\nimport { openInEditorAsync } from '../../../../utils/editor';\n\ninterface MetroMiddlewareOptions {\n getMetroBundler(): MetroBundler;\n}\n\ninterface StackFrame {\n file: string;\n lineNumber?: number | undefined;\n}\n\nexport function createMetroMiddleware(\n metroConfig: Pick<MetroConfig, 'projectRoot'>,\n options: MetroMiddlewareOptions\n) {\n const messages = createMessagesSocket({ logger: Log });\n const events = createEventsSocket(messages);\n\n const middleware = connect()\n .use(noCacheMiddleware)\n .use(compression)\n // Support opening stack frames from clients directly in the editor\n .use('/open-stack-frame', createMetroOpenStackFrameMiddleware(metroConfig))\n // Support status check to detect if the packager needs to be started from the native side\n .use('/status', createMetroStatusMiddleware(metroConfig, options));\n\n return {\n middleware,\n messagesSocket: messages,\n eventsSocket: events,\n websocketEndpoints: {\n [messages.endpoint]: messages.server,\n [events.endpoint]: events.server,\n },\n };\n}\n\nconst noCacheMiddleware: connect.NextHandleFunction = (_req, res, next) => {\n res.setHeader('Surrogate-Control', 'no-store');\n res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');\n res.setHeader('Pragma', 'no-cache');\n res.setHeader('Expires', '0');\n next();\n};\n\nfunction createMetroStatusMiddleware(\n metroConfig: Pick<MetroConfig, 'projectRoot'>,\n options: MetroMiddlewareOptions\n): connect.NextHandleFunction {\n return async (_req, res) => {\n res.setHeader('X-React-Native-Project-Root', encodeURI(metroConfig.projectRoot!));\n res.flushHeaders();\n await options.getMetroBundler().ready();\n res.end('packager-status:running');\n };\n}\n\nfunction createMetroOpenStackFrameMiddleware(\n metroConfig: Pick<MetroConfig, 'projectRoot'>\n): connect.NextHandleFunction {\n return async (req, res, next) => {\n if (req.method !== 'POST') {\n return next();\n }\n\n let frame: StackFrame | undefined;\n try {\n const json = await new Body(req).json();\n if (typeof json === 'object' && json != null && typeof json.file === 'string') {\n frame = {\n file: json.file,\n lineNumber:\n typeof json.lineNumber === 'number' && Number.isSafeInteger(json.lineNumber)\n ? json.lineNumber\n : undefined,\n };\n }\n } catch {}\n if (!frame) {\n res.statusCode = 400;\n return res.end('Open stack frame requires the JSON stack frame as request body');\n }\n\n const root = getMetroServerRoot(metroConfig.projectRoot!);\n const file = await ensureFileInRootDirectory(root, frame.file);\n if (!file) {\n res.statusCode = 400;\n return res.end('Open stack frame requires target file to be in server root');\n }\n\n try {\n await openInEditorAsync(file, frame.lineNumber);\n return res.end('OK');\n } catch {\n res.statusCode = 5006;\n return res.end('Open stack frame failed to open local editor');\n }\n };\n}\n\nconst ensureFileInRootDirectory = async (root: string, file: string): Promise<string | null> => {\n try {\n file = path.resolve(root, file);\n file = await fs.promises.realpath(file);\n // Cannot be accessed using Metro's server API, we need to move the file\n // into the project root and try again.\n if (
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/createMetroMiddleware.ts"],"sourcesContent":["import { getMetroServerRoot } from '@expo/config/paths';\nimport type { MetroConfig } from '@expo/metro/metro';\nimport type MetroBundler from '@expo/metro/metro/Bundler';\nimport connect from 'connect';\nimport { Body } from 'fetch-nodeshim';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { compression } from './compression';\nimport { createEventsSocket } from './createEventSocket';\nimport { createMessagesSocket } from './createMessageSocket';\nimport { Log } from '../../../../log';\nimport { isPathInside } from '../../../../utils/dir';\nimport { openInEditorAsync } from '../../../../utils/editor';\nimport { shouldThrottleRemoteDevCall } from '../../../../utils/net';\n\ninterface MetroMiddlewareOptions {\n getMetroBundler(): MetroBundler;\n serverBaseUrl: string;\n}\n\ninterface StackFrame {\n file: string;\n lineNumber?: number | undefined;\n}\n\nexport function createMetroMiddleware(\n metroConfig: Pick<MetroConfig, 'projectRoot'>,\n options: MetroMiddlewareOptions\n) {\n const messages = createMessagesSocket({ logger: Log, serverBaseUrl: options.serverBaseUrl });\n const events = createEventsSocket(messages);\n\n const middleware = connect()\n .use(noCacheMiddleware)\n .use(compression)\n // Support opening stack frames from clients directly in the editor\n .use('/open-stack-frame', createMetroOpenStackFrameMiddleware(metroConfig))\n // Support status check to detect if the packager needs to be started from the native side\n .use('/status', createMetroStatusMiddleware(metroConfig, options));\n\n return {\n middleware,\n messagesSocket: messages,\n eventsSocket: events,\n websocketEndpoints: {\n [messages.endpoint]: messages.server,\n [events.endpoint]: events.server,\n },\n };\n}\n\nconst noCacheMiddleware: connect.NextHandleFunction = (_req, res, next) => {\n res.setHeader('Surrogate-Control', 'no-store');\n res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');\n res.setHeader('Pragma', 'no-cache');\n res.setHeader('Expires', '0');\n next();\n};\n\nfunction createMetroStatusMiddleware(\n metroConfig: Pick<MetroConfig, 'projectRoot'>,\n options: MetroMiddlewareOptions\n): connect.NextHandleFunction {\n return async (_req, res) => {\n res.setHeader('X-React-Native-Project-Root', encodeURI(metroConfig.projectRoot!));\n res.flushHeaders();\n await options.getMetroBundler().ready();\n res.end('packager-status:running');\n };\n}\n\nfunction createMetroOpenStackFrameMiddleware(\n metroConfig: Pick<MetroConfig, 'projectRoot'>\n): connect.NextHandleFunction {\n return async (req, res, next) => {\n if (req.method !== 'POST') {\n return next();\n }\n\n let frame: StackFrame | undefined;\n try {\n const json = await new Body(req).json();\n if (typeof json === 'object' && json != null && typeof json.file === 'string') {\n frame = {\n file: json.file,\n lineNumber:\n typeof json.lineNumber === 'number' && Number.isSafeInteger(json.lineNumber)\n ? json.lineNumber\n : undefined,\n };\n }\n } catch {}\n if (!frame) {\n res.statusCode = 400;\n return res.end('Open stack frame requires the JSON stack frame as request body');\n }\n\n const root = getMetroServerRoot(metroConfig.projectRoot!);\n const file = await ensureFileInRootDirectory(root, frame.file);\n if (!file) {\n res.statusCode = 400;\n return res.end('Open stack frame requires target file to be in server root');\n }\n\n if (shouldThrottleRemoteDevCall()) {\n res.statusCode = 429;\n return res.end();\n }\n\n try {\n await openInEditorAsync(file, frame.lineNumber);\n return res.end('OK');\n } catch {\n res.statusCode = 5006;\n return res.end('Open stack frame failed to open local editor');\n }\n };\n}\n\nconst ensureFileInRootDirectory = async (root: string, file: string): Promise<string | null> => {\n try {\n file = path.resolve(root, file);\n file = await fs.promises.realpath(file);\n // Cannot be accessed using Metro's server API, we need to move the file\n // into the project root and try again.\n if (isPathInside(file, root)) {\n return file;\n } else {\n return null;\n }\n } catch {\n return null;\n }\n};\n"],"names":["createMetroMiddleware","metroConfig","options","messages","createMessagesSocket","logger","Log","serverBaseUrl","events","createEventsSocket","middleware","connect","use","noCacheMiddleware","compression","createMetroOpenStackFrameMiddleware","createMetroStatusMiddleware","messagesSocket","eventsSocket","websocketEndpoints","endpoint","server","_req","res","next","setHeader","encodeURI","projectRoot","flushHeaders","getMetroBundler","ready","end","req","method","frame","json","Body","file","lineNumber","Number","isSafeInteger","undefined","statusCode","root","getMetroServerRoot","ensureFileInRootDirectory","shouldThrottleRemoteDevCall","openInEditorAsync","path","resolve","fs","promises","realpath","isPathInside"],"mappings":"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"}
|
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
function _export(target, all) {
|
|
6
6
|
for(var name in all)Object.defineProperty(target, name, {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: all
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
parseRawMessage
|
|
12
|
+
get parseRawMessage () {
|
|
13
13
|
return parseRawMessage;
|
|
14
14
|
},
|
|
15
|
-
serializeMessage
|
|
15
|
+
get serializeMessage () {
|
|
16
16
|
return serializeMessage;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/start/server/metro/dev-server/utils/socketMessages.ts"],"sourcesContent":["import type { RawData as WebSocketRawData } from 'ws';\n\nconst debug = require('debug')('expo:metro:dev-server:messages') as typeof console.log;\n\n/** The current websocket-based communication between Metro, CLI, and client devices */\nconst PROTOCOL_VERSION = 2;\n\n/**\n * Parse the incoming raw message data and return the parsed object.\n * This returns null if the protocol version did not match expected version.\n */\nexport function parseRawMessage<T = Record<string, any>>(\n data: WebSocketRawData,\n isBinary: boolean\n): null | T {\n if (isBinary) return null;\n\n try {\n const { version, ...message } = JSON.parse(data.toString()) ?? {};\n if (version === PROTOCOL_VERSION) {\n return message;\n }\n\n debug(\n `Received message protocol version did not match supported \"${PROTOCOL_VERSION}\", received: ${message.version}`\n );\n } catch (error) {\n debug(`Failed to parse message: ${error}`);\n }\n\n return null;\n}\n\n/**\n * Serialize any of the messages to send over websockets.\n * This adds the protocol version to the message.\n */\nexport function serializeMessage(message: Record<string, any>): string {\n return JSON.stringify({ ...message, version: PROTOCOL_VERSION });\n}\n"],"names":["parseRawMessage","serializeMessage","debug","require","PROTOCOL_VERSION","data","isBinary","version","message","JSON","parse","toString","error","stringify"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/dev-server/utils/socketMessages.ts"],"sourcesContent":["import type { RawData as WebSocketRawData } from 'ws';\n\nconst debug = require('debug')('expo:metro:dev-server:messages') as typeof console.log;\n\n/** The current websocket-based communication between Metro, CLI, and client devices */\nconst PROTOCOL_VERSION = 2;\n\n/**\n * Parse the incoming raw message data and return the parsed object.\n * This returns null if the protocol version did not match expected version.\n */\nexport function parseRawMessage<T = Record<string, any>>(\n data: WebSocketRawData,\n isBinary: boolean\n): null | T {\n if (isBinary) return null;\n\n try {\n const { version, ...message } = JSON.parse(data.toString()) ?? {};\n if (version === PROTOCOL_VERSION) {\n return message;\n }\n\n debug(\n `Received message protocol version did not match supported \"${PROTOCOL_VERSION}\", received: ${message.version}`\n );\n } catch (error) {\n debug(`Failed to parse message: ${error}`);\n }\n\n return null;\n}\n\n/**\n * Serialize any of the messages to send over websockets.\n * This adds the protocol version to the message.\n */\nexport function serializeMessage(message: Record<string, any>): string {\n return JSON.stringify({ ...message, version: PROTOCOL_VERSION });\n}\n"],"names":["parseRawMessage","serializeMessage","debug","require","PROTOCOL_VERSION","data","isBinary","version","message","JSON","parse","toString","error","stringify"],"mappings":";;;;;;;;;;;QAWgBA;eAAAA;;QA0BAC;eAAAA;;;AAnChB,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,qFAAqF,GACrF,MAAMC,mBAAmB;AAMlB,SAASJ,gBACdK,IAAsB,EACtBC,QAAiB;IAEjB,IAAIA,UAAU,OAAO;IAErB,IAAI;QACF,MAAM,EAAEC,OAAO,EAAE,GAAGC,SAAS,GAAGC,KAAKC,KAAK,CAACL,KAAKM,QAAQ,OAAO,CAAC;QAChE,IAAIJ,YAAYH,kBAAkB;YAChC,OAAOI;QACT;QAEAN,MACE,CAAC,2DAA2D,EAAEE,iBAAiB,aAAa,EAAEI,QAAQD,OAAO,EAAE;IAEnH,EAAE,OAAOK,OAAO;QACdV,MAAM,CAAC,yBAAyB,EAAEU,OAAO;IAC3C;IAEA,OAAO;AACT;AAMO,SAASX,iBAAiBO,OAA4B;IAC3D,OAAOC,KAAKI,SAAS,CAAC;QAAE,GAAGL,OAAO;QAAED,SAASH;IAAiB;AAChE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.ts"],"sourcesContent":["export class FailedToResolveNativeOnlyModuleError extends Error {\n constructor(moduleName: string, relativePath: string) {\n super(`Importing native-only module \"${moduleName}\" on web from: ${relativePath}`);\n }\n}\n"],"names":["FailedToResolveNativeOnlyModuleError","Error","
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.ts"],"sourcesContent":["export class FailedToResolveNativeOnlyModuleError extends Error {\n constructor(moduleName: string, relativePath: string) {\n super(`Importing native-only module \"${moduleName}\" on web from: ${relativePath}`);\n }\n}\n"],"names":["FailedToResolveNativeOnlyModuleError","Error","moduleName","relativePath"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,6CAA6CC;IACxD,YAAYC,UAAkB,EAAEC,YAAoB,CAAE;QACpD,KAAK,CAAC,CAAC,8BAA8B,EAAED,WAAW,eAAe,EAAEC,cAAc;IACnF;AACF"}
|
|
@@ -10,17 +10,17 @@ 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
|
-
NODE_STDLIB_MODULES
|
|
17
|
+
get NODE_STDLIB_MODULES () {
|
|
18
18
|
return NODE_STDLIB_MODULES;
|
|
19
19
|
},
|
|
20
|
-
isNodeExternal
|
|
20
|
+
get isNodeExternal () {
|
|
21
21
|
return isNodeExternal;
|
|
22
22
|
},
|
|
23
|
-
shouldCreateVirtualShim
|
|
23
|
+
get shouldCreateVirtualShim () {
|
|
24
24
|
return shouldCreateVirtualShim;
|
|
25
25
|
}
|
|
26
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/externals.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport { builtinModules } from 'module';\nimport path from 'path';\n\n// TODO(@kitten): When `builtinModules` isn't present, we instead use the `process.binding('natives')` internal\n// call which is almost equivalent. It's unclear from the History in Node.js' docs whether this fallback is still necessary\n// https://nodejs.org/api/module.html#modulebuiltinmodules\ndeclare global {\n namespace NodeJS {\n interface Process {\n binding?(key: 'natives'): Record<string, unknown>;\n }\n }\n}\n\n// A list of the Node.js standard library modules that are currently\n// available,\nexport const NODE_STDLIB_MODULES: string[] = [\n // Add all nested imports...\n 'assert/strict',\n 'dns/promises',\n 'inspector/promises',\n 'fs/promises',\n 'stream/web',\n 'stream/promises',\n 'path/posix',\n 'path/win32',\n 'readline/promises',\n 'stream/consumers',\n 'timers/promises',\n 'util/types',\n 'sqlite',\n\n // Collect all builtin modules...\n ...(\n builtinModules ||\n (process.binding ? Object.keys(process.binding('natives')) : []) ||\n []\n ).filter((x) => !/^(internal|v8|node-inspect)\\/|\\//.test(x) && !['sys'].includes(x)),\n].sort();\n\nconst shimsFolder = path.join(require.resolve('@expo/cli/package.json'), '../static/shims');\n\nexport function shouldCreateVirtualShim(normalName: string) {\n const shimPath = path.join(shimsFolder, normalName);\n if (fs.existsSync(shimPath)) {\n return shimPath;\n }\n return null;\n}\n\nexport function isNodeExternal(moduleName: string): string | null {\n const moduleId = moduleName.replace(/^node:/, '');\n if (NODE_STDLIB_MODULES.includes(moduleId)) {\n return moduleId;\n }\n return null;\n}\n"],"names":["NODE_STDLIB_MODULES","isNodeExternal","shouldCreateVirtualShim","builtinModules","process","binding","Object","keys","filter","x","test","includes","sort","shimsFolder","path","join","require","resolve","normalName","shimPath","fs","existsSync","moduleName","moduleId","replace"],"mappings":"AAAA;;;;;CAKC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/externals.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport { builtinModules } from 'module';\nimport path from 'path';\n\n// TODO(@kitten): When `builtinModules` isn't present, we instead use the `process.binding('natives')` internal\n// call which is almost equivalent. It's unclear from the History in Node.js' docs whether this fallback is still necessary\n// https://nodejs.org/api/module.html#modulebuiltinmodules\ndeclare global {\n namespace NodeJS {\n interface Process {\n binding?(key: 'natives'): Record<string, unknown>;\n }\n }\n}\n\n// A list of the Node.js standard library modules that are currently\n// available,\nexport const NODE_STDLIB_MODULES: string[] = [\n // Add all nested imports...\n 'assert/strict',\n 'dns/promises',\n 'inspector/promises',\n 'fs/promises',\n 'stream/web',\n 'stream/promises',\n 'path/posix',\n 'path/win32',\n 'readline/promises',\n 'stream/consumers',\n 'timers/promises',\n 'util/types',\n 'sqlite',\n\n // Collect all builtin modules...\n ...(\n builtinModules ||\n (process.binding ? Object.keys(process.binding('natives')) : []) ||\n []\n ).filter((x) => !/^(internal|v8|node-inspect)\\/|\\//.test(x) && !['sys'].includes(x)),\n].sort();\n\nconst shimsFolder = path.join(require.resolve('@expo/cli/package.json'), '../static/shims');\n\nexport function shouldCreateVirtualShim(normalName: string) {\n const shimPath = path.join(shimsFolder, normalName);\n if (fs.existsSync(shimPath)) {\n return shimPath;\n }\n return null;\n}\n\nexport function isNodeExternal(moduleName: string): string | null {\n const moduleId = moduleName.replace(/^node:/, '');\n if (NODE_STDLIB_MODULES.includes(moduleId)) {\n return moduleId;\n }\n return null;\n}\n"],"names":["NODE_STDLIB_MODULES","isNodeExternal","shouldCreateVirtualShim","builtinModules","process","binding","Object","keys","filter","x","test","includes","sort","shimsFolder","path","join","require","resolve","normalName","shimPath","fs","existsSync","moduleName","moduleId","replace"],"mappings":"AAAA;;;;;CAKC;;;;;;;;;;;QAkBYA;eAAAA;;QAkCGC;eAAAA;;QARAC;eAAAA;;;;gEA3CD;;;;;;;yBACgB;;;;;;;gEACd;;;;;;;;;;;AAeV,MAAMF,sBAAgC;IAC3C,4BAA4B;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA,iCAAiC;OAC9B,AACDG,CAAAA,wBAAc,IACbC,CAAAA,QAAQC,OAAO,GAAGC,OAAOC,IAAI,CAACH,QAAQC,OAAO,CAAC,cAAc,EAAE,AAAD,KAC9D,EAAE,AAAD,EACDG,MAAM,CAAC,CAACC,IAAM,CAAC,mCAAmCC,IAAI,CAACD,MAAM,CAAC;YAAC;SAAM,CAACE,QAAQ,CAACF;CAClF,CAACG,IAAI;AAEN,MAAMC,cAAcC,eAAI,CAACC,IAAI,CAACC,QAAQC,OAAO,CAAC,2BAA2B;AAElE,SAASf,wBAAwBgB,UAAkB;IACxD,MAAMC,WAAWL,eAAI,CAACC,IAAI,CAACF,aAAaK;IACxC,IAAIE,aAAE,CAACC,UAAU,CAACF,WAAW;QAC3B,OAAOA;IACT;IACA,OAAO;AACT;AAEO,SAASlB,eAAeqB,UAAkB;IAC/C,MAAMC,WAAWD,WAAWE,OAAO,CAAC,UAAU;IAC9C,IAAIxB,oBAAoBW,QAAQ,CAACY,WAAW;QAC1C,OAAOA;IACT;IACA,OAAO;AACT"}
|
|
@@ -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
|
-
fetchManifest
|
|
17
|
+
get fetchManifest () {
|
|
18
18
|
return fetchManifest;
|
|
19
19
|
},
|
|
20
|
-
inflateManifest
|
|
20
|
+
get inflateManifest () {
|
|
21
21
|
return inflateManifest;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/fetchRouterManifest.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport type { Options as RoutesManifestOptions } from '@expo/router-server/build/routes-manifest';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/fetchRouterManifest.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport type { Options as RoutesManifestOptions } from '@expo/router-server/build/routes-manifest';\nimport type { RoutesManifest } from 'expo-server/private';\n\nimport { getRoutePaths } from './router';\n\nfunction getExpoRouteManifestBuilderAsync(projectRoot: string) {\n return require('@expo/router-server/build/routes-manifest')\n .createRoutesManifest as typeof import('@expo/router-server/build/routes-manifest').createRoutesManifest;\n}\n\ninterface FetchManifestOptions extends RoutesManifestOptions {\n asJson?: boolean;\n appDir: string;\n}\n\n// TODO: Simplify this now that we use Node.js directly, no need for the Metro bundler caching layer.\nasync function fetchManifest(\n projectRoot: string,\n options: FetchManifestOptions & { asJson: true }\n): Promise<RoutesManifest<string> | null>;\nasync function fetchManifest(\n projectRoot: string,\n options: FetchManifestOptions & { asJson?: false | undefined }\n): Promise<RoutesManifest<RegExp> | null>;\nasync function fetchManifest(\n projectRoot: string,\n options: FetchManifestOptions\n): Promise<RoutesManifest | null> {\n const getManifest = getExpoRouteManifestBuilderAsync(projectRoot);\n const paths = getRoutePaths(options.appDir);\n // Get the serialized manifest\n const jsonManifest = getManifest(paths, options);\n if (!jsonManifest) {\n return null;\n }\n\n if (!jsonManifest.htmlRoutes || !jsonManifest.apiRoutes) {\n throw new Error('Routes manifest is malformed: ' + JSON.stringify(jsonManifest, null, 2));\n }\n\n if (!options.asJson) {\n return inflateManifest(jsonManifest);\n } else {\n return jsonManifest;\n }\n}\n\nexport { fetchManifest };\n\n// Convert the serialized manifest to a usable format\nexport function inflateManifest(json: RoutesManifest<string>): RoutesManifest<RegExp> {\n return {\n ...json,\n middleware: json.middleware,\n htmlRoutes: json.htmlRoutes?.map((value) => {\n return {\n ...value,\n namedRegex: new RegExp(value.namedRegex),\n };\n }),\n apiRoutes: json.apiRoutes?.map((value) => {\n return {\n ...value,\n namedRegex: new RegExp(value.namedRegex),\n };\n }),\n notFoundRoutes: json.notFoundRoutes?.map((value) => {\n return {\n ...value,\n namedRegex: new RegExp(value.namedRegex),\n };\n }),\n redirects: json.redirects?.map((value: any) => {\n return {\n ...value,\n namedRegex: new RegExp(value.namedRegex),\n };\n }),\n rewrites: json.rewrites?.map((value: any) => {\n return {\n ...value,\n namedRegex: new RegExp(value.namedRegex),\n };\n }),\n };\n}\n"],"names":["fetchManifest","inflateManifest","getExpoRouteManifestBuilderAsync","projectRoot","require","createRoutesManifest","options","getManifest","paths","getRoutePaths","appDir","jsonManifest","htmlRoutes","apiRoutes","Error","JSON","stringify","asJson","json","middleware","map","value","namedRegex","RegExp","notFoundRoutes","redirects","rewrites"],"mappings":"AAAA;;;;;CAKC;;;;;;;;;;;QAgDQA;eAAAA;;QAGOC;eAAAA;;;wBA/Cc;AAE9B,SAASC,iCAAiCC,WAAmB;IAC3D,OAAOC,QAAQ,6CACZC,oBAAoB;AACzB;AAgBA,eAAeL,cACbG,WAAmB,EACnBG,OAA6B;IAE7B,MAAMC,cAAcL,iCAAiCC;IACrD,MAAMK,QAAQC,IAAAA,qBAAa,EAACH,QAAQI,MAAM;IAC1C,8BAA8B;IAC9B,MAAMC,eAAeJ,YAAYC,OAAOF;IACxC,IAAI,CAACK,cAAc;QACjB,OAAO;IACT;IAEA,IAAI,CAACA,aAAaC,UAAU,IAAI,CAACD,aAAaE,SAAS,EAAE;QACvD,MAAM,IAAIC,MAAM,mCAAmCC,KAAKC,SAAS,CAACL,cAAc,MAAM;IACxF;IAEA,IAAI,CAACL,QAAQW,MAAM,EAAE;QACnB,OAAOhB,gBAAgBU;IACzB,OAAO;QACL,OAAOA;IACT;AACF;AAKO,SAASV,gBAAgBiB,IAA4B;QAI5CA,kBAMDA,iBAMKA,sBAMLA,iBAMDA;IA3BZ,OAAO;QACL,GAAGA,IAAI;QACPC,YAAYD,KAAKC,UAAU;QAC3BP,UAAU,GAAEM,mBAAAA,KAAKN,UAAU,qBAAfM,iBAAiBE,GAAG,CAAC,CAACC;YAChC,OAAO;gBACL,GAAGA,KAAK;gBACRC,YAAY,IAAIC,OAAOF,MAAMC,UAAU;YACzC;QACF;QACAT,SAAS,GAAEK,kBAAAA,KAAKL,SAAS,qBAAdK,gBAAgBE,GAAG,CAAC,CAACC;YAC9B,OAAO;gBACL,GAAGA,KAAK;gBACRC,YAAY,IAAIC,OAAOF,MAAMC,UAAU;YACzC;QACF;QACAE,cAAc,GAAEN,uBAAAA,KAAKM,cAAc,qBAAnBN,qBAAqBE,GAAG,CAAC,CAACC;YACxC,OAAO;gBACL,GAAGA,KAAK;gBACRC,YAAY,IAAIC,OAAOF,MAAMC,UAAU;YACzC;QACF;QACAG,SAAS,GAAEP,kBAAAA,KAAKO,SAAS,qBAAdP,gBAAgBE,GAAG,CAAC,CAACC;YAC9B,OAAO;gBACL,GAAGA,KAAK;gBACRC,YAAY,IAAIC,OAAOF,MAAMC,UAAU;YACzC;QACF;QACAI,QAAQ,GAAER,iBAAAA,KAAKQ,QAAQ,qBAAbR,eAAeE,GAAG,CAAC,CAACC;YAC5B,OAAO;gBACL,GAAGA,KAAK;gBACRC,YAAY,IAAIC,OAAOF,MAAMC,UAAU;YACzC;QACF;IACF;AACF"}
|
|
@@ -6,14 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
function _export(target, all) {
|
|
7
7
|
for(var name in all)Object.defineProperty(target, name, {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: all
|
|
9
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
_export(exports, {
|
|
13
|
-
getCssModulesFromBundler
|
|
13
|
+
get getCssModulesFromBundler () {
|
|
14
14
|
return getCssModulesFromBundler;
|
|
15
15
|
},
|
|
16
|
-
getFileName
|
|
16
|
+
get getFileName () {
|
|
17
17
|
return getFileName;
|
|
18
18
|
}
|
|
19
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/getCssModulesFromBundler.ts"],"sourcesContent":["// NOTE(@kitten): jest-resolver -> resolve.exports bug (https://github.com/lukeed/resolve.exports/issues/40)\nimport { getJsOutput, isJsModule } from '@expo/metro/metro/DeltaBundler/Serializers/helpers/js.js';\nimport type { Module, ReadOnlyDependencies } from '@expo/metro/metro/DeltaBundler/types';\nimport type IncrementalBundler from '@expo/metro/metro/IncrementalBundler';\nimport splitBundleOptions from '@expo/metro/metro/lib/splitBundleOptions';\nimport type { MetroConfig } from '@expo/metro-config';\nimport crypto from 'crypto';\nimport path from 'path';\n\ntype Options = {\n processModuleFilter: (modules: Module) => boolean;\n assetPlugins: readonly string[];\n platform?: string | null;\n projectRoot: string;\n publicPath: string;\n};\n\ntype MetroModuleCSSMetadata = {\n code: string;\n lineCount: number;\n map: any[];\n};\n\nexport type CSSAsset = {\n // 'styles.css'\n originFilename: string;\n // '_expo/static/css/bc6aa0a69dcebf8e8cac1faa76705756.css'\n filename: string;\n // '\\ndiv {\\n background: cyan;\\n}\\n\\n'\n source: string;\n};\n\n// s = static\nconst STATIC_EXPORT_DIRECTORY = '_expo/static/css';\n\n/** @returns the static CSS assets used in a given bundle. CSS assets are only enabled if the `@expo/metro-config` `transformerPath` is used. */\nexport async function getCssModulesFromBundler(\n config: MetroConfig,\n incrementalBundler: IncrementalBundler,\n options: any\n): Promise<CSSAsset[]> {\n // Static CSS is a web-only feature.\n if (options.platform !== 'web') {\n return [];\n }\n\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n const dependencies = await incrementalBundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false, lazy: false }\n );\n\n return getCssModules(dependencies, {\n processModuleFilter: config.serializer.processModuleFilter,\n assetPlugins: config.transformer.assetPlugins,\n platform: transformOptions.platform,\n projectRoot: config.server.unstable_serverRoot ?? config.projectRoot,\n publicPath: config.transformer.publicPath,\n });\n}\n\nfunction hashString(str: string) {\n return crypto.createHash('md5').update(str).digest('hex');\n}\n\nfunction getCssModules(\n dependencies: ReadOnlyDependencies,\n { processModuleFilter, projectRoot }: Options\n) {\n const promises = [];\n\n for (const module of dependencies.values()) {\n if (\n isJsModule(module) &&\n processModuleFilter(module) &&\n getJsOutput(module).type === 'js/module' &&\n path.relative(projectRoot, module.path) !== 'package.json'\n ) {\n const cssMetadata = getCssMetadata(module);\n if (cssMetadata) {\n const contents = cssMetadata.code;\n const filename = path.join(\n // Consistent location\n STATIC_EXPORT_DIRECTORY,\n // Hashed file contents + name for caching\n getFileName(module.path) + '-' + hashString(module.path + contents) + '.css'\n );\n promises.push({\n originFilename: path.relative(projectRoot, module.path),\n filename,\n source: contents,\n });\n }\n }\n }\n\n return promises;\n}\n\nfunction getCssMetadata(module: Module): MetroModuleCSSMetadata | null {\n const data = module.output[0]?.data;\n if (data && typeof data === 'object' && 'css' in data) {\n if (typeof data.css !== 'object' || !('code' in (data as any).css)) {\n throw new Error(\n `Unexpected CSS metadata in Metro module (${module.path}): ${JSON.stringify(data.css)}`\n );\n }\n return data.css as MetroModuleCSSMetadata;\n }\n return null;\n}\n\nexport function getFileName(module: string) {\n return path.basename(module).replace(/\\.[^.]+$/, '');\n}\n"],"names":["getCssModulesFromBundler","getFileName","STATIC_EXPORT_DIRECTORY","config","incrementalBundler","options","platform","entryFile","onProgress","resolverOptions","transformOptions","splitBundleOptions","dependencies","getDependencies","shallow","lazy","getCssModules","processModuleFilter","serializer","assetPlugins","transformer","projectRoot","server","unstable_serverRoot","publicPath","hashString","str","crypto","createHash","update","digest","promises","module","values","isJsModule","getJsOutput","type","path","relative","cssMetadata","getCssMetadata","contents","code","filename","join","push","originFilename","source","data","output","css","Error","JSON","stringify","basename","replace"],"mappings":"AAAA,4GAA4G;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/getCssModulesFromBundler.ts"],"sourcesContent":["// NOTE(@kitten): jest-resolver -> resolve.exports bug (https://github.com/lukeed/resolve.exports/issues/40)\nimport { getJsOutput, isJsModule } from '@expo/metro/metro/DeltaBundler/Serializers/helpers/js.js';\nimport type { Module, ReadOnlyDependencies } from '@expo/metro/metro/DeltaBundler/types';\nimport type IncrementalBundler from '@expo/metro/metro/IncrementalBundler';\nimport splitBundleOptions from '@expo/metro/metro/lib/splitBundleOptions';\nimport type { MetroConfig } from '@expo/metro-config';\nimport crypto from 'crypto';\nimport path from 'path';\n\ntype Options = {\n processModuleFilter: (modules: Module) => boolean;\n assetPlugins: readonly string[];\n platform?: string | null;\n projectRoot: string;\n publicPath: string;\n};\n\ntype MetroModuleCSSMetadata = {\n code: string;\n lineCount: number;\n map: any[];\n};\n\nexport type CSSAsset = {\n // 'styles.css'\n originFilename: string;\n // '_expo/static/css/bc6aa0a69dcebf8e8cac1faa76705756.css'\n filename: string;\n // '\\ndiv {\\n background: cyan;\\n}\\n\\n'\n source: string;\n};\n\n// s = static\nconst STATIC_EXPORT_DIRECTORY = '_expo/static/css';\n\n/** @returns the static CSS assets used in a given bundle. CSS assets are only enabled if the `@expo/metro-config` `transformerPath` is used. */\nexport async function getCssModulesFromBundler(\n config: MetroConfig,\n incrementalBundler: IncrementalBundler,\n options: any\n): Promise<CSSAsset[]> {\n // Static CSS is a web-only feature.\n if (options.platform !== 'web') {\n return [];\n }\n\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n const dependencies = await incrementalBundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false, lazy: false }\n );\n\n return getCssModules(dependencies, {\n processModuleFilter: config.serializer.processModuleFilter,\n assetPlugins: config.transformer.assetPlugins,\n platform: transformOptions.platform,\n projectRoot: config.server.unstable_serverRoot ?? config.projectRoot,\n publicPath: config.transformer.publicPath,\n });\n}\n\nfunction hashString(str: string) {\n return crypto.createHash('md5').update(str).digest('hex');\n}\n\nfunction getCssModules(\n dependencies: ReadOnlyDependencies,\n { processModuleFilter, projectRoot }: Options\n) {\n const promises = [];\n\n for (const module of dependencies.values()) {\n if (\n isJsModule(module) &&\n processModuleFilter(module) &&\n getJsOutput(module).type === 'js/module' &&\n path.relative(projectRoot, module.path) !== 'package.json'\n ) {\n const cssMetadata = getCssMetadata(module);\n if (cssMetadata) {\n const contents = cssMetadata.code;\n const filename = path.join(\n // Consistent location\n STATIC_EXPORT_DIRECTORY,\n // Hashed file contents + name for caching\n getFileName(module.path) + '-' + hashString(module.path + contents) + '.css'\n );\n promises.push({\n originFilename: path.relative(projectRoot, module.path),\n filename,\n source: contents,\n });\n }\n }\n }\n\n return promises;\n}\n\nfunction getCssMetadata(module: Module): MetroModuleCSSMetadata | null {\n const data = module.output[0]?.data;\n if (data && typeof data === 'object' && 'css' in data) {\n if (typeof data.css !== 'object' || !('code' in (data as any).css)) {\n throw new Error(\n `Unexpected CSS metadata in Metro module (${module.path}): ${JSON.stringify(data.css)}`\n );\n }\n return data.css as MetroModuleCSSMetadata;\n }\n return null;\n}\n\nexport function getFileName(module: string) {\n return path.basename(module).replace(/\\.[^.]+$/, '');\n}\n"],"names":["getCssModulesFromBundler","getFileName","STATIC_EXPORT_DIRECTORY","config","incrementalBundler","options","platform","entryFile","onProgress","resolverOptions","transformOptions","splitBundleOptions","dependencies","getDependencies","shallow","lazy","getCssModules","processModuleFilter","serializer","assetPlugins","transformer","projectRoot","server","unstable_serverRoot","publicPath","hashString","str","crypto","createHash","update","digest","promises","module","values","isJsModule","getJsOutput","type","path","relative","cssMetadata","getCssMetadata","contents","code","filename","join","push","originFilename","source","data","output","css","Error","JSON","stringify","basename","replace"],"mappings":"AAAA,4GAA4G;;;;;;;;;;;;QAoCtFA;eAAAA;;QA+ENC;eAAAA;;;;yBAlHwB;;;;;;;gEAGT;;;;;;;gEAEZ;;;;;;;gEACF;;;;;;;;;;;AAyBjB,aAAa;AACb,MAAMC,0BAA0B;AAGzB,eAAeF,yBACpBG,MAAmB,EACnBC,kBAAsC,EACtCC,OAAY;IAEZ,oCAAoC;IACpC,IAAIA,QAAQC,QAAQ,KAAK,OAAO;QAC9B,OAAO,EAAE;IACX;IAEA,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAEC,eAAe,EAAEC,gBAAgB,EAAE,GAAGC,IAAAA,6BAAkB,EAACN;IAExF,MAAMO,eAAe,MAAMR,mBAAmBS,eAAe,CAC3D;QAACN;KAAU,EACXG,kBACAD,iBACA;QAAED;QAAYM,SAAS;QAAOC,MAAM;IAAM;IAG5C,OAAOC,cAAcJ,cAAc;QACjCK,qBAAqBd,OAAOe,UAAU,CAACD,mBAAmB;QAC1DE,cAAchB,OAAOiB,WAAW,CAACD,YAAY;QAC7Cb,UAAUI,iBAAiBJ,QAAQ;QACnCe,aAAalB,OAAOmB,MAAM,CAACC,mBAAmB,IAAIpB,OAAOkB,WAAW;QACpEG,YAAYrB,OAAOiB,WAAW,CAACI,UAAU;IAC3C;AACF;AAEA,SAASC,WAAWC,GAAW;IAC7B,OAAOC,iBAAM,CAACC,UAAU,CAAC,OAAOC,MAAM,CAACH,KAAKI,MAAM,CAAC;AACrD;AAEA,SAASd,cACPJ,YAAkC,EAClC,EAAEK,mBAAmB,EAAEI,WAAW,EAAW;IAE7C,MAAMU,WAAW,EAAE;IAEnB,KAAK,MAAMC,UAAUpB,aAAaqB,MAAM,GAAI;QAC1C,IACEC,IAAAA,gBAAU,EAACF,WACXf,oBAAoBe,WACpBG,IAAAA,iBAAW,EAACH,QAAQI,IAAI,KAAK,eAC7BC,eAAI,CAACC,QAAQ,CAACjB,aAAaW,OAAOK,IAAI,MAAM,gBAC5C;YACA,MAAME,cAAcC,eAAeR;YACnC,IAAIO,aAAa;gBACf,MAAME,WAAWF,YAAYG,IAAI;gBACjC,MAAMC,WAAWN,eAAI,CAACO,IAAI,CACxB,sBAAsB;gBACtB1C,yBACA,0CAA0C;gBAC1CD,YAAY+B,OAAOK,IAAI,IAAI,MAAMZ,WAAWO,OAAOK,IAAI,GAAGI,YAAY;gBAExEV,SAASc,IAAI,CAAC;oBACZC,gBAAgBT,eAAI,CAACC,QAAQ,CAACjB,aAAaW,OAAOK,IAAI;oBACtDM;oBACAI,QAAQN;gBACV;YACF;QACF;IACF;IAEA,OAAOV;AACT;AAEA,SAASS,eAAeR,MAAc;QACvBA;IAAb,MAAMgB,QAAOhB,kBAAAA,OAAOiB,MAAM,CAAC,EAAE,qBAAhBjB,gBAAkBgB,IAAI;IACnC,IAAIA,QAAQ,OAAOA,SAAS,YAAY,SAASA,MAAM;QACrD,IAAI,OAAOA,KAAKE,GAAG,KAAK,YAAY,CAAE,CAAA,UAAU,AAACF,KAAaE,GAAG,AAAD,GAAI;YAClE,MAAM,IAAIC,MACR,CAAC,yCAAyC,EAAEnB,OAAOK,IAAI,CAAC,GAAG,EAAEe,KAAKC,SAAS,CAACL,KAAKE,GAAG,GAAG;QAE3F;QACA,OAAOF,KAAKE,GAAG;IACjB;IACA,OAAO;AACT;AAEO,SAASjD,YAAY+B,MAAc;IACxC,OAAOK,eAAI,CAACiB,QAAQ,CAACtB,QAAQuB,OAAO,CAAC,YAAY;AACnD"}
|