@expo/cli 0.0.0-canary-20231122-1af9191
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/README.md +144 -0
- package/build/bin/cli +272 -0
- package/build/bin/cli.map +1 -0
- package/build/src/api/endpoint.js +27 -0
- package/build/src/api/endpoint.js.map +1 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js +19 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
- package/build/src/api/getExpoSchema.js +69 -0
- package/build/src/api/getExpoSchema.js.map +1 -0
- package/build/src/api/getNativeModuleVersions.js +31 -0
- package/build/src/api/getNativeModuleVersions.js.map +1 -0
- package/build/src/api/getProjectDevelopmentCertificate.js +22 -0
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
- package/build/src/api/getVersions.js +24 -0
- package/build/src/api/getVersions.js.map +1 -0
- package/build/src/api/graphql/client.js +106 -0
- package/build/src/api/graphql/client.js.map +1 -0
- package/build/src/api/graphql/queries/AppQuery.js +39 -0
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -0
- package/build/src/api/graphql/queries/UserQuery.js +51 -0
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
- package/build/src/api/graphql/types/App.js +23 -0
- package/build/src/api/graphql/types/App.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemCache.js +79 -0
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
- package/build/src/api/rest/cache/response.js +31 -0
- package/build/src/api/rest/cache/response.js.map +1 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
- package/build/src/api/rest/client.js +109 -0
- package/build/src/api/rest/client.js.map +1 -0
- package/build/src/api/rest/client.types.js +6 -0
- package/build/src/api/rest/client.types.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +23 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithOffline.js +19 -0
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProgress.js +64 -0
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProxy.js +26 -0
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -0
- package/build/src/api/settings.js +20 -0
- package/build/src/api/settings.js.map +1 -0
- package/build/src/api/updateDevelopmentSession.js +74 -0
- package/build/src/api/updateDevelopmentSession.js.map +1 -0
- package/build/src/api/user/UserSettings.js +71 -0
- package/build/src/api/user/UserSettings.js.map +1 -0
- package/build/src/api/user/actions.js +107 -0
- package/build/src/api/user/actions.js.map +1 -0
- package/build/src/api/user/expoSsoLauncher.js +127 -0
- package/build/src/api/user/expoSsoLauncher.js.map +1 -0
- package/build/src/api/user/otp.js +139 -0
- package/build/src/api/user/otp.js.map +1 -0
- package/build/src/api/user/user.js +144 -0
- package/build/src/api/user/user.js.map +1 -0
- package/build/src/config/configAsync.js +137 -0
- package/build/src/config/configAsync.js.map +1 -0
- package/build/src/config/index.js +75 -0
- package/build/src/config/index.js.map +1 -0
- package/build/src/customize/customizeAsync.js +43 -0
- package/build/src/customize/customizeAsync.js.map +1 -0
- package/build/src/customize/generate.js +104 -0
- package/build/src/customize/generate.js.map +1 -0
- package/build/src/customize/index.js +41 -0
- package/build/src/customize/index.js.map +1 -0
- package/build/src/customize/resolveOptions.js +18 -0
- package/build/src/customize/resolveOptions.js.map +1 -0
- package/build/src/customize/templates.js +126 -0
- package/build/src/customize/templates.js.map +1 -0
- package/build/src/customize/typescript.js +56 -0
- package/build/src/customize/typescript.js.map +1 -0
- package/build/src/export/createMetadataJson.js +42 -0
- package/build/src/export/createMetadataJson.js.map +1 -0
- package/build/src/export/embed/exportEmbedAsync.js +146 -0
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -0
- package/build/src/export/embed/index.js +115 -0
- package/build/src/export/embed/index.js.map +1 -0
- package/build/src/export/embed/resolveOptions.js +59 -0
- package/build/src/export/embed/resolveOptions.js.map +1 -0
- package/build/src/export/embed/xcodeCompilerLogger.js +97 -0
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -0
- package/build/src/export/exportApp.js +192 -0
- package/build/src/export/exportApp.js.map +1 -0
- package/build/src/export/exportAssets.js +176 -0
- package/build/src/export/exportAssets.js.map +1 -0
- package/build/src/export/exportAsync.js +52 -0
- package/build/src/export/exportAsync.js.map +1 -0
- package/build/src/export/exportHermes.js +124 -0
- package/build/src/export/exportHermes.js.map +1 -0
- package/build/src/export/exportStaticAsync.js +278 -0
- package/build/src/export/exportStaticAsync.js.map +1 -0
- package/build/src/export/favicon.js +89 -0
- package/build/src/export/favicon.js.map +1 -0
- package/build/src/export/fork-bundleAsync.js +215 -0
- package/build/src/export/fork-bundleAsync.js.map +1 -0
- package/build/src/export/getPublicExpoManifest.js +28 -0
- package/build/src/export/getPublicExpoManifest.js.map +1 -0
- package/build/src/export/getResolvedLocales.js +35 -0
- package/build/src/export/getResolvedLocales.js.map +1 -0
- package/build/src/export/html.js +21 -0
- package/build/src/export/html.js.map +1 -0
- package/build/src/export/index.js +91 -0
- package/build/src/export/index.js.map +1 -0
- package/build/src/export/metroAssetLocalPath.js +101 -0
- package/build/src/export/metroAssetLocalPath.js.map +1 -0
- package/build/src/export/persistMetroAssets.js +190 -0
- package/build/src/export/persistMetroAssets.js.map +1 -0
- package/build/src/export/publicFolder.js +34 -0
- package/build/src/export/publicFolder.js.map +1 -0
- package/build/src/export/resolveOptions.js +63 -0
- package/build/src/export/resolveOptions.js.map +1 -0
- package/build/src/export/saveAssets.js +189 -0
- package/build/src/export/saveAssets.js.map +1 -0
- package/build/src/export/web/exportWebAsync.js +40 -0
- package/build/src/export/web/exportWebAsync.js.map +1 -0
- package/build/src/export/web/index.js +66 -0
- package/build/src/export/web/index.js.map +1 -0
- package/build/src/export/web/resolveOptions.js +13 -0
- package/build/src/export/web/resolveOptions.js.map +1 -0
- package/build/src/export/writeContents.js +26 -0
- package/build/src/export/writeContents.js.map +1 -0
- package/build/src/graphql/generated.js +486 -0
- package/build/src/graphql/generated.js.map +1 -0
- package/build/src/install/applyPlugins.js +52 -0
- package/build/src/install/applyPlugins.js.map +1 -0
- package/build/src/install/checkPackages.js +78 -0
- package/build/src/install/checkPackages.js.map +1 -0
- package/build/src/install/fixPackages.js +84 -0
- package/build/src/install/fixPackages.js.map +1 -0
- package/build/src/install/index.js +51 -0
- package/build/src/install/index.js.map +1 -0
- package/build/src/install/installAsync.js +134 -0
- package/build/src/install/installAsync.js.map +1 -0
- package/build/src/install/installExpoPackage.js +79 -0
- package/build/src/install/installExpoPackage.js.map +1 -0
- package/build/src/install/resolveOptions.js +53 -0
- package/build/src/install/resolveOptions.js.map +1 -0
- package/build/src/install/utils/autoAddConfigPlugins.js +66 -0
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
- package/build/src/log.js +74 -0
- package/build/src/log.js.map +1 -0
- package/build/src/login/index.js +67 -0
- package/build/src/login/index.js.map +1 -0
- package/build/src/logout/index.js +48 -0
- package/build/src/logout/index.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +143 -0
- package/build/src/prebuild/clearNativeFolder.js.map +1 -0
- package/build/src/prebuild/configureProjectAsync.js +64 -0
- package/build/src/prebuild/configureProjectAsync.js.map +1 -0
- package/build/src/prebuild/copyTemplateFiles.js +67 -0
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
- package/build/src/prebuild/ensureConfigAsync.js +75 -0
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
- package/build/src/prebuild/index.js +98 -0
- package/build/src/prebuild/index.js.map +1 -0
- package/build/src/prebuild/prebuildAsync.js +146 -0
- package/build/src/prebuild/prebuildAsync.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +115 -0
- package/build/src/prebuild/resolveOptions.js.map +1 -0
- package/build/src/prebuild/resolveTemplate.js +163 -0
- package/build/src/prebuild/resolveTemplate.js.map +1 -0
- package/build/src/prebuild/updateFromTemplate.js +103 -0
- package/build/src/prebuild/updateFromTemplate.js.map +1 -0
- package/build/src/prebuild/updatePackageJson.js +227 -0
- package/build/src/prebuild/updatePackageJson.js.map +1 -0
- package/build/src/prebuild/validateTemplatePlatforms.js +48 -0
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -0
- package/build/src/register/index.js +48 -0
- package/build/src/register/index.js.map +1 -0
- package/build/src/register/registerAsync.js +34 -0
- package/build/src/register/registerAsync.js.map +1 -0
- package/build/src/run/android/index.js +97 -0
- package/build/src/run/android/index.js.map +1 -0
- package/build/src/run/android/resolveDevice.js +23 -0
- package/build/src/run/android/resolveDevice.js.map +1 -0
- package/build/src/run/android/resolveGradleProps.js +37 -0
- package/build/src/run/android/resolveGradleProps.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +51 -0
- package/build/src/run/android/resolveInstallApkName.js.map +1 -0
- package/build/src/run/android/resolveLaunchProps.js +32 -0
- package/build/src/run/android/resolveLaunchProps.js.map +1 -0
- package/build/src/run/android/resolveOptions.js +25 -0
- package/build/src/run/android/resolveOptions.js.map +1 -0
- package/build/src/run/android/runAndroidAsync.js +83 -0
- package/build/src/run/android/runAndroidAsync.js.map +1 -0
- package/build/src/run/ensureNativeProject.js +36 -0
- package/build/src/run/ensureNativeProject.js.map +1 -0
- package/build/src/run/hints.js +22 -0
- package/build/src/run/hints.js.map +1 -0
- package/build/src/run/ios/XcodeBuild.js +276 -0
- package/build/src/run/ios/XcodeBuild.js.map +1 -0
- package/build/src/run/ios/XcodeBuild.types.js +6 -0
- package/build/src/run/ios/XcodeBuild.types.js.map +1 -0
- package/build/src/run/ios/appleDevice/AppleDevice.js +195 -0
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -0
- package/build/src/run/ios/appleDevice/ClientManager.js +165 -0
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/AFCClient.js +195 -0
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +107 -0
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +97 -0
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +144 -0
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +91 -0
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +21 -0
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +117 -0
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -0
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +90 -0
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +332 -0
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +133 -0
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +126 -0
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +74 -0
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -0
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +65 -0
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -0
- package/build/src/run/ios/codeSigning/Security.js +85 -0
- package/build/src/run/ios/codeSigning/Security.js.map +1 -0
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +77 -0
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -0
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +102 -0
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -0
- package/build/src/run/ios/codeSigning/settings.js +21 -0
- package/build/src/run/ios/codeSigning/settings.js.map +1 -0
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +45 -0
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +79 -0
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -0
- package/build/src/run/ios/index.js +98 -0
- package/build/src/run/ios/index.js.map +1 -0
- package/build/src/run/ios/launchApp.js +75 -0
- package/build/src/run/ios/launchApp.js.map +1 -0
- package/build/src/run/ios/options/promptDevice.js +50 -0
- package/build/src/run/ios/options/promptDevice.js.map +1 -0
- package/build/src/run/ios/options/resolveDevice.js +92 -0
- package/build/src/run/ios/options/resolveDevice.js.map +1 -0
- package/build/src/run/ios/options/resolveNativeScheme.js +101 -0
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -0
- package/build/src/run/ios/options/resolveOptions.js +44 -0
- package/build/src/run/ios/options/resolveOptions.js.map +1 -0
- package/build/src/run/ios/options/resolveXcodeProject.js +39 -0
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -0
- package/build/src/run/ios/runIosAsync.js +93 -0
- package/build/src/run/ios/runIosAsync.js.map +1 -0
- package/build/src/run/resolveBundlerProps.js +34 -0
- package/build/src/run/resolveBundlerProps.js.map +1 -0
- package/build/src/run/startBundler.js +82 -0
- package/build/src/run/startBundler.js.map +1 -0
- package/build/src/start/doctor/Prerequisite.js +47 -0
- package/build/src/start/doctor/Prerequisite.js.map +1 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js +27 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +70 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +69 -0
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js +158 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +69 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js +74 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +136 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +195 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js +169 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js +22 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +165 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js +99 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +111 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
- package/build/src/start/index.js +123 -0
- package/build/src/start/index.js.map +1 -0
- package/build/src/start/interface/KeyPressHandler.js +101 -0
- package/build/src/start/interface/KeyPressHandler.js.map +1 -0
- package/build/src/start/interface/commandsTable.js +195 -0
- package/build/src/start/interface/commandsTable.js.map +1 -0
- package/build/src/start/interface/interactiveActions.js +194 -0
- package/build/src/start/interface/interactiveActions.js.map +1 -0
- package/build/src/start/interface/startInterface.js +227 -0
- package/build/src/start/interface/startInterface.js.map +1 -0
- package/build/src/start/platforms/AppIdResolver.js +44 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -0
- package/build/src/start/platforms/DeviceManager.js +43 -0
- package/build/src/start/platforms/DeviceManager.js.map +1 -0
- package/build/src/start/platforms/ExpoGoInstaller.js +127 -0
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
- package/build/src/start/platforms/PlatformManager.js +131 -0
- package/build/src/start/platforms/PlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/ADBServer.js +114 -0
- package/build/src/start/platforms/android/ADBServer.js.map +1 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +44 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidSdk.js +41 -0
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -0
- package/build/src/start/platforms/android/activateWindow.js +80 -0
- package/build/src/start/platforms/android/activateWindow.js.map +1 -0
- package/build/src/start/platforms/android/adb.js +269 -0
- package/build/src/start/platforms/android/adb.js.map +1 -0
- package/build/src/start/platforms/android/adbReverse.js +95 -0
- package/build/src/start/platforms/android/adbReverse.js.map +1 -0
- package/build/src/start/platforms/android/emulator.js +126 -0
- package/build/src/start/platforms/android/emulator.js.map +1 -0
- package/build/src/start/platforms/android/getDevices.js +36 -0
- package/build/src/start/platforms/android/getDevices.js.map +1 -0
- package/build/src/start/platforms/android/gradle.js +86 -0
- package/build/src/start/platforms/android/gradle.js.map +1 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js +56 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +53 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js +216 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
- package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js +56 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
- package/build/src/start/platforms/ios/simctl.js +243 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -0
- package/build/src/start/platforms/ios/simctlLogging.js +220 -0
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -0
- package/build/src/start/platforms/ios/xcrun.js +46 -0
- package/build/src/start/platforms/ios/xcrun.js.map +1 -0
- package/build/src/start/project/devices.js +79 -0
- package/build/src/start/project/devices.js.map +1 -0
- package/build/src/start/project/dotExpo.js +74 -0
- package/build/src/start/project/dotExpo.js.map +1 -0
- package/build/src/start/project/settings.js +13 -0
- package/build/src/start/project/settings.js.map +1 -0
- package/build/src/start/resolveOptions.js +135 -0
- package/build/src/start/resolveOptions.js.map +1 -0
- package/build/src/start/server/AsyncNgrok.js +220 -0
- package/build/src/start/server/AsyncNgrok.js.map +1 -0
- package/build/src/start/server/BundlerDevServer.js +356 -0
- package/build/src/start/server/BundlerDevServer.js.map +1 -0
- package/build/src/start/server/DevServerManager.js +214 -0
- package/build/src/start/server/DevServerManager.js.map +1 -0
- package/build/src/start/server/DevToolsPluginManager.js +63 -0
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +114 -0
- package/build/src/start/server/DevelopmentSession.js.map +1 -0
- package/build/src/start/server/ReactDevToolsProxy.js +73 -0
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -0
- package/build/src/start/server/UrlCreator.js +175 -0
- package/build/src/start/server/UrlCreator.js.map +1 -0
- package/build/src/start/server/getStaticRenderFunctions.js +164 -0
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js +485 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js +165 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.js +92 -0
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
- package/build/src/start/server/metro/bundleApiRoutes.js +52 -0
- package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -0
- package/build/src/start/server/metro/createExpoMetroResolver.js +187 -0
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -0
- package/build/src/start/server/metro/createJResolver.js +149 -0
- package/build/src/start/server/metro/createJResolver.js.map +1 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js +124 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -0
- package/build/src/start/server/metro/externals.js +94 -0
- package/build/src/start/server/metro/externals.js.map +1 -0
- package/build/src/start/server/metro/fetchRouterManifest.js +60 -0
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -0
- package/build/src/start/server/metro/formatFileCandidates.js +72 -0
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -0
- package/build/src/start/server/metro/getCssModulesFromBundler.js +77 -0
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/device.js +110 -0
- package/build/src/start/server/metro/inspector-proxy/device.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js +29 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js +22 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js +21 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js +55 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js +17 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js +24 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js +39 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js +6 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/utils.js +11 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/utils.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/index.js +24 -0
- package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/proxy.js +169 -0
- package/build/src/start/server/metro/inspector-proxy/proxy.js.map +1 -0
- package/build/src/start/server/metro/instantiateMetro.js +194 -0
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
- package/build/src/start/server/metro/metroErrorInterface.js +198 -0
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -0
- package/build/src/start/server/metro/metroErrors.js +14 -0
- package/build/src/start/server/metro/metroErrors.js.map +1 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +51 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -0
- package/build/src/start/server/metro/router.js +83 -0
- package/build/src/start/server/metro/router.js.map +1 -0
- package/build/src/start/server/metro/runServer-fork.js +96 -0
- package/build/src/start/server/metro/runServer-fork.js.map +1 -0
- package/build/src/start/server/metro/serializeHtml.js +43 -0
- package/build/src/start/server/metro/serializeHtml.js.map +1 -0
- package/build/src/start/server/metro/symbolicate.js +6 -0
- package/build/src/start/server/metro/symbolicate.js.map +1 -0
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +91 -0
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -0
- package/build/src/start/server/metro/withMetroMultiPlatform.js +402 -0
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -0
- package/build/src/start/server/metro/withMetroResolvers.js +272 -0
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -0
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +27 -0
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/CreateFileMiddleware.js +106 -0
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +61 -0
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +236 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +83 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/FaviconMiddleware.js +42 -0
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +24 -0
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +81 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js +300 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +35 -0
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +75 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +62 -0
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/inspector/JsInspector.js +69 -0
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +61 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +13 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +82 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +79 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +124 -0
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -0
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +64 -0
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +19 -0
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -0
- package/build/src/start/server/middleware/metroOptions.js +128 -0
- package/build/src/start/server/middleware/metroOptions.js.map +1 -0
- package/build/src/start/server/middleware/mutations.js +19 -0
- package/build/src/start/server/middleware/mutations.js.map +1 -0
- package/build/src/start/server/middleware/remoteDevtoolsCorsMiddleware.js +31 -0
- package/build/src/start/server/middleware/remoteDevtoolsCorsMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/remoteDevtoolsSecurityHeadersMiddleware.js +17 -0
- package/build/src/start/server/middleware/remoteDevtoolsSecurityHeadersMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js +110 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
- package/build/src/start/server/middleware/resolvePlatform.js +47 -0
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
- package/build/src/start/server/middleware/server.types.js +6 -0
- package/build/src/start/server/middleware/server.types.js.map +1 -0
- package/build/src/start/server/middleware/suppressErrorMiddleware.js +16 -0
- package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -0
- package/build/src/start/server/openPlatforms.js +30 -0
- package/build/src/start/server/openPlatforms.js.map +1 -0
- package/build/src/start/server/platformBundlers.js +18 -0
- package/build/src/start/server/platformBundlers.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +38 -0
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +38 -0
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/route.test.js +176 -0
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +1 -0
- package/build/src/start/server/type-generation/expo-env.js +27 -0
- package/build/src/start/server/type-generation/expo-env.js.map +1 -0
- package/build/src/start/server/type-generation/routes.js +474 -0
- package/build/src/start/server/type-generation/routes.js.map +1 -0
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +56 -0
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -0
- package/build/src/start/server/type-generation/tsconfig.js +89 -0
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -0
- package/build/src/start/server/webTemplate.js +84 -0
- package/build/src/start/server/webTemplate.js.map +1 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +266 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
- package/build/src/start/server/webpack/compile.js +64 -0
- package/build/src/start/server/webpack/compile.js.map +1 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
- package/build/src/start/server/webpack/resolveFromProject.js +43 -0
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
- package/build/src/start/server/webpack/tls.js +72 -0
- package/build/src/start/server/webpack/tls.js.map +1 -0
- package/build/src/start/startAsync.js +154 -0
- package/build/src/start/startAsync.js.map +1 -0
- package/build/src/utils/FileNotifier.js +90 -0
- package/build/src/utils/FileNotifier.js.map +1 -0
- package/build/src/utils/analytics/getDevClientProperties.js +47 -0
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
- package/build/src/utils/analytics/getMetroDebugProperties.js +15 -0
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -0
- package/build/src/utils/analytics/getMetroProperties.js +28 -0
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -0
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +55 -0
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -0
- package/build/src/utils/analytics/rudderstackClient.js +147 -0
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
- package/build/src/utils/ansi.js +17 -0
- package/build/src/utils/ansi.js.map +1 -0
- package/build/src/utils/args.js +79 -0
- package/build/src/utils/args.js.map +1 -0
- package/build/src/utils/array.js +67 -0
- package/build/src/utils/array.js.map +1 -0
- package/build/src/utils/cocoapods.js +191 -0
- package/build/src/utils/cocoapods.js.map +1 -0
- package/build/src/utils/codesigning.js +311 -0
- package/build/src/utils/codesigning.js.map +1 -0
- package/build/src/utils/createFileTransform.js +89 -0
- package/build/src/utils/createFileTransform.js.map +1 -0
- package/build/src/utils/delay.js +39 -0
- package/build/src/utils/delay.js.map +1 -0
- package/build/src/utils/dir.js +63 -0
- package/build/src/utils/dir.js.map +1 -0
- package/build/src/utils/downloadAppAsync.js +73 -0
- package/build/src/utils/downloadAppAsync.js.map +1 -0
- package/build/src/utils/downloadExpoGoAsync.js +116 -0
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
- package/build/src/utils/editor.js +69 -0
- package/build/src/utils/editor.js.map +1 -0
- package/build/src/utils/env.js +131 -0
- package/build/src/utils/env.js.map +1 -0
- package/build/src/utils/errors.js +70 -0
- package/build/src/utils/errors.js.map +1 -0
- package/build/src/utils/exit.js +69 -0
- package/build/src/utils/exit.js.map +1 -0
- package/build/src/utils/findUp.js +33 -0
- package/build/src/utils/findUp.js.map +1 -0
- package/build/src/utils/fn.js +32 -0
- package/build/src/utils/fn.js.map +1 -0
- package/build/src/utils/getOrPromptApplicationId.js +181 -0
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
- package/build/src/utils/getRunningProcess.js +96 -0
- package/build/src/utils/getRunningProcess.js.map +1 -0
- package/build/src/utils/git.js +89 -0
- package/build/src/utils/git.js.map +1 -0
- package/build/src/utils/glob.js +65 -0
- package/build/src/utils/glob.js.map +1 -0
- package/build/src/utils/interactive.js +11 -0
- package/build/src/utils/interactive.js.map +1 -0
- package/build/src/utils/ip.js +16 -0
- package/build/src/utils/ip.js.map +1 -0
- package/build/src/utils/isModuleSymlinked.js +37 -0
- package/build/src/utils/isModuleSymlinked.js.map +1 -0
- package/build/src/utils/link.js +31 -0
- package/build/src/utils/link.js.map +1 -0
- package/build/src/utils/mergeGitIgnorePaths.js +154 -0
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
- package/build/src/utils/modifyConfigAsync.js +68 -0
- package/build/src/utils/modifyConfigAsync.js.map +1 -0
- package/build/src/utils/modifyConfigPlugins.js +51 -0
- package/build/src/utils/modifyConfigPlugins.js.map +1 -0
- package/build/src/utils/nodeEnv.js +11 -0
- package/build/src/utils/nodeEnv.js.map +1 -0
- package/build/src/utils/nodeModules.js +29 -0
- package/build/src/utils/nodeModules.js.map +1 -0
- package/build/src/utils/npm.js +116 -0
- package/build/src/utils/npm.js.map +1 -0
- package/build/src/utils/obj.js +45 -0
- package/build/src/utils/obj.js.map +1 -0
- package/build/src/utils/open.js +26 -0
- package/build/src/utils/open.js.map +1 -0
- package/build/src/utils/ora.js +91 -0
- package/build/src/utils/ora.js.map +1 -0
- package/build/src/utils/plist.js +59 -0
- package/build/src/utils/plist.js.map +1 -0
- package/build/src/utils/port.js +160 -0
- package/build/src/utils/port.js.map +1 -0
- package/build/src/utils/profile.js +63 -0
- package/build/src/utils/profile.js.map +1 -0
- package/build/src/utils/progress.js +61 -0
- package/build/src/utils/progress.js.map +1 -0
- package/build/src/utils/prompts.js +116 -0
- package/build/src/utils/prompts.js.map +1 -0
- package/build/src/utils/resolveArgs.js +140 -0
- package/build/src/utils/resolveArgs.js.map +1 -0
- package/build/src/utils/scheme.js +128 -0
- package/build/src/utils/scheme.js.map +1 -0
- package/build/src/utils/strings.js +24 -0
- package/build/src/utils/strings.js.map +1 -0
- package/build/src/utils/tar.js +62 -0
- package/build/src/utils/tar.js.map +1 -0
- package/build/src/utils/template.js +21 -0
- package/build/src/utils/template.js.map +1 -0
- package/build/src/utils/terminal.js +10 -0
- package/build/src/utils/terminal.js.map +1 -0
- package/build/src/utils/tsconfig/evaluateTsConfig.js +61 -0
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -0
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +61 -0
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -0
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +88 -0
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -0
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +51 -0
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -0
- package/build/src/utils/url.js +67 -0
- package/build/src/utils/url.js.map +1 -0
- package/build/src/utils/validateApplicationId.js +179 -0
- package/build/src/utils/validateApplicationId.js.map +1 -0
- package/build/src/utils/variadic.js +65 -0
- package/build/src/utils/variadic.js.map +1 -0
- package/build/src/whoami/index.js +47 -0
- package/build/src/whoami/index.js.map +1 -0
- package/build/src/whoami/whoamiAsync.js +44 -0
- package/build/src/whoami/whoamiAsync.js.map +1 -0
- package/package.json +163 -0
- package/static/loading-page/index.html +363 -0
- package/static/react-devtools-page/index.html +144 -0
- package/static/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
- package/static/shims/react-native-web/dist/cjs/exports/BackHandler/index.js +10 -0
- package/static/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
- package/static/shims/react-native-web/dist/exports/BackHandler/index.js +7 -0
- package/static/template/babel.config.js +6 -0
- package/static/template/index.html +36 -0
- package/static/template/metro.config.js +7 -0
- package/static/template/serve.json +13 -0
- package/static/template/webpack.config.js +7 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _url = require("url");
|
|
6
|
+
var _ws = _interopRequireDefault(require("ws"));
|
|
7
|
+
var _log = require("../../../../log");
|
|
8
|
+
function _interopRequireDefault(obj) {
|
|
9
|
+
return obj && obj.__esModule ? obj : {
|
|
10
|
+
default: obj
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const WS_DEVICE_URL = "/inspector/device";
|
|
14
|
+
const WS_DEBUGGER_URL = "/inspector/debug";
|
|
15
|
+
const WS_GENERIC_ERROR_STATUS = 1011;
|
|
16
|
+
const debug = require("debug")("expo:metro:inspector-proxy:proxy");
|
|
17
|
+
class ExpoInspectorProxy {
|
|
18
|
+
constructor(metroProxy, DeviceClass, devices = new Map()){
|
|
19
|
+
this.metroProxy = metroProxy;
|
|
20
|
+
this.DeviceClass = DeviceClass;
|
|
21
|
+
this.devices = devices;
|
|
22
|
+
// monkey-patch the device list to expose it within the metro inspector
|
|
23
|
+
// See https://github.com/facebook/metro/pull/991
|
|
24
|
+
// @ts-expect-error - Device ID is changing from `number` to `string`
|
|
25
|
+
this.metroProxy._devices = this.devices;
|
|
26
|
+
// force httpEndpointMiddleware to be bound to this proxy instance
|
|
27
|
+
this.processRequest = this.processRequest.bind(this);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Normalize the server address for clients to connect to.
|
|
31
|
+
* @param addressInfo the server address returned by `HttpServer.address()` or `HttpsServer.address()`.
|
|
32
|
+
* @returns "address:port"
|
|
33
|
+
*/ static normalizeServerAddress(addressInfo) {
|
|
34
|
+
if (typeof addressInfo === "string") {
|
|
35
|
+
throw new Error(`Inspector proxy could not resolve the server address, got "${addressInfo}"`);
|
|
36
|
+
} else if (addressInfo === null) {
|
|
37
|
+
throw new Error(`Inspector proxy could not resolve the server address, got "null"`);
|
|
38
|
+
}
|
|
39
|
+
let address = addressInfo.address;
|
|
40
|
+
if (addressInfo.family === "IPv6") {
|
|
41
|
+
address = address === "::" ? `[::1]` : `[${address}]`;
|
|
42
|
+
} else {
|
|
43
|
+
address = address === "0.0.0.0" ? "localhost" : address;
|
|
44
|
+
}
|
|
45
|
+
return `${address}:${addressInfo.port}`;
|
|
46
|
+
}
|
|
47
|
+
/** @see https://chromedevtools.github.io/devtools-protocol/#endpoints */ processRequest(req, res, next) {
|
|
48
|
+
this.metroProxy.processRequest(req, res, next);
|
|
49
|
+
}
|
|
50
|
+
createWebSocketListeners(server) {
|
|
51
|
+
// Initialize the server address from the metro server.
|
|
52
|
+
// This is required to properly reference sourcemaps for the debugger.
|
|
53
|
+
this.metroProxy._serverAddressWithPort = ExpoInspectorProxy.normalizeServerAddress(server.address());
|
|
54
|
+
return {
|
|
55
|
+
[WS_DEVICE_URL]: this.createDeviceWebSocketServer(),
|
|
56
|
+
[WS_DEBUGGER_URL]: this.createDebuggerWebSocketServer()
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
createDeviceWebSocketServer() {
|
|
60
|
+
const wss = new _ws.default.Server({
|
|
61
|
+
noServer: true,
|
|
62
|
+
perMessageDeflate: false
|
|
63
|
+
});
|
|
64
|
+
// See: https://github.com/facebook/metro/blob/eeb211fdcfdcb9e7f8a51721bd0f48bc7d0d211f/packages/metro-inspector-proxy/src/InspectorProxy.js#L157
|
|
65
|
+
wss.on("connection", (socket, request)=>{
|
|
66
|
+
try {
|
|
67
|
+
const fallbackDeviceId = String(this.metroProxy._deviceCounter++);
|
|
68
|
+
const { deviceId: newDeviceId , deviceName , appName } = getDeviceInfo(request.url);
|
|
69
|
+
const deviceId = newDeviceId != null ? newDeviceId : fallbackDeviceId;
|
|
70
|
+
const oldDevice = this.devices.get(deviceId);
|
|
71
|
+
const newDevice = new this.DeviceClass(deviceId, deviceName, appName, socket, this.metroProxy._projectRoot);
|
|
72
|
+
if (oldDevice) {
|
|
73
|
+
debug("Device reconnected: device=%s, app=%s, id=%s", deviceName, appName, deviceId);
|
|
74
|
+
// See: https://github.com/facebook/metro/pull/991
|
|
75
|
+
// @ts-expect-error - Newly introduced method coming to @react-native/dev-middleware soon
|
|
76
|
+
oldDevice.handleDuplicateDeviceConnection(newDevice);
|
|
77
|
+
} else {
|
|
78
|
+
debug("New device connected: device=%s, app=%s, id=%s", deviceName, appName, deviceId);
|
|
79
|
+
}
|
|
80
|
+
this.devices.set(deviceId, newDevice);
|
|
81
|
+
socket.on("close", ()=>{
|
|
82
|
+
if (this.devices.get(deviceId) === newDevice) {
|
|
83
|
+
this.devices.delete(deviceId);
|
|
84
|
+
debug("Device disconnected: device=%s, app=%s, id=%s", deviceName, appName, deviceId);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
} catch (error) {
|
|
88
|
+
let message = "";
|
|
89
|
+
debug("Could not establish a connection to on-device debugger:", error);
|
|
90
|
+
if (error instanceof Error) {
|
|
91
|
+
message = error.toString();
|
|
92
|
+
_log.Log.error("Failed to create a socket connection to on-device debugger (Hermes engine).");
|
|
93
|
+
_log.Log.exception(error);
|
|
94
|
+
} else {
|
|
95
|
+
_log.Log.error("Failed to create a socket connection to on-device debugger (Hermes engine), unknown error.");
|
|
96
|
+
}
|
|
97
|
+
socket.close(WS_GENERIC_ERROR_STATUS, message || "Unknown error");
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return wss;
|
|
101
|
+
}
|
|
102
|
+
createDebuggerWebSocketServer() {
|
|
103
|
+
const wss = new _ws.default.Server({
|
|
104
|
+
noServer: true,
|
|
105
|
+
perMessageDeflate: false
|
|
106
|
+
});
|
|
107
|
+
// See: https://github.com/facebook/metro/blob/eeb211fdcfdcb9e7f8a51721bd0f48bc7d0d211f/packages/metro-inspector-proxy/src/InspectorProxy.js#L193
|
|
108
|
+
wss.on("connection", (socket, request)=>{
|
|
109
|
+
try {
|
|
110
|
+
const { deviceId , pageId , debuggerType } = getDebuggerInfo(request.url);
|
|
111
|
+
if (!deviceId || !pageId) {
|
|
112
|
+
// TODO(cedric): change these errors to proper error types
|
|
113
|
+
throw new Error(`Missing "device" and/or "page" IDs in query parameters`);
|
|
114
|
+
}
|
|
115
|
+
const device = this.devices.get(deviceId);
|
|
116
|
+
if (!device) {
|
|
117
|
+
// TODO(cedric): change these errors to proper error types
|
|
118
|
+
throw new Error(`Device with ID "${deviceId}" not found.`);
|
|
119
|
+
}
|
|
120
|
+
debug("New debugger connected: device=%s, app=%s", device._name, device._app);
|
|
121
|
+
// @ts-expect-error The `handleDebuggerConnectionWithType` is part of our device implementation, not Metro's device
|
|
122
|
+
if (debuggerType && typeof device.handleDebuggerConnectionWithType === "function") {
|
|
123
|
+
// @ts-expect-error The `handleDebuggerConnectionWithType` is part of our device implementation, not Metro's device
|
|
124
|
+
device.handleDebuggerConnectionWithType(socket, pageId, debuggerType);
|
|
125
|
+
} else {
|
|
126
|
+
device.handleDebuggerConnection(socket, pageId);
|
|
127
|
+
}
|
|
128
|
+
socket.on("close", ()=>{
|
|
129
|
+
debug("Debugger disconnected: device=%s, app=%s", device._name, device._app);
|
|
130
|
+
});
|
|
131
|
+
} catch (error) {
|
|
132
|
+
let message = "";
|
|
133
|
+
debug("Could not establish a connection to debugger:", error);
|
|
134
|
+
if (error instanceof Error) {
|
|
135
|
+
message = error.toString();
|
|
136
|
+
_log.Log.error("Failed to create a socket connection to the debugger.");
|
|
137
|
+
_log.Log.exception(error);
|
|
138
|
+
} else {
|
|
139
|
+
_log.Log.error("Failed to create a socket connection to the debugger, unkown error.");
|
|
140
|
+
}
|
|
141
|
+
socket.close(WS_GENERIC_ERROR_STATUS, message || "Unknown error");
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return wss;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.ExpoInspectorProxy = ExpoInspectorProxy;
|
|
148
|
+
function asString(value = "") {
|
|
149
|
+
return Array.isArray(value) ? value.join() : value;
|
|
150
|
+
}
|
|
151
|
+
function getDeviceInfo(url) {
|
|
152
|
+
const { query } = (0, _url).parse(url != null ? url : "", true);
|
|
153
|
+
return {
|
|
154
|
+
deviceId: asString(query.device) || undefined,
|
|
155
|
+
deviceName: asString(query.name) || "Unknown device name",
|
|
156
|
+
appName: asString(query.app) || "Unknown app name"
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function getDebuggerInfo(url) {
|
|
160
|
+
const { query } = (0, _url).parse(url != null ? url : "", true);
|
|
161
|
+
var ref;
|
|
162
|
+
return {
|
|
163
|
+
deviceId: asString(query.device),
|
|
164
|
+
pageId: asString(query.page),
|
|
165
|
+
debuggerType: (ref = asString(query.type)) != null ? ref : undefined
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/start/server/metro/inspector-proxy/proxy.ts"],"sourcesContent":["import type {\n unstable_Device as MetroDevice,\n unstable_InspectorProxy as MetroProxy,\n} from '@react-native/dev-middleware';\nimport type { Server as HttpServer, IncomingMessage, ServerResponse } from 'http';\nimport type { Server as HttpsServer } from 'https';\nimport { parse } from 'url';\nimport WS, { Server as WSServer } from 'ws';\n\nimport { Log } from '../../../../log';\n\nconst WS_DEVICE_URL = '/inspector/device';\nconst WS_DEBUGGER_URL = '/inspector/debug';\nconst WS_GENERIC_ERROR_STATUS = 1011;\n\nconst debug = require('debug')('expo:metro:inspector-proxy:proxy') as typeof console.log;\n\n// This is a workaround for `ConstructorType` not working on dynamically generated classes\ntype Instantiatable<Instance> = new (...args: any) => Instance;\n\nexport class ExpoInspectorProxy<D extends MetroDevice = MetroDevice> {\n constructor(\n public readonly metroProxy: MetroProxy,\n private DeviceClass: Instantiatable<D>,\n public readonly devices: Map<string, D> = new Map()\n ) {\n // monkey-patch the device list to expose it within the metro inspector\n // See https://github.com/facebook/metro/pull/991\n // @ts-expect-error - Device ID is changing from `number` to `string`\n this.metroProxy._devices = this.devices;\n\n // force httpEndpointMiddleware to be bound to this proxy instance\n this.processRequest = this.processRequest.bind(this);\n }\n\n /**\n * Normalize the server address for clients to connect to.\n * @param addressInfo the server address returned by `HttpServer.address()` or `HttpsServer.address()`.\n * @returns \"address:port\"\n */\n public static normalizeServerAddress(addressInfo: ReturnType<HttpServer['address']>): string {\n if (typeof addressInfo === 'string') {\n throw new Error(`Inspector proxy could not resolve the server address, got \"${addressInfo}\"`);\n } else if (addressInfo === null) {\n throw new Error(`Inspector proxy could not resolve the server address, got \"null\"`);\n }\n\n let address = addressInfo.address;\n if (addressInfo.family === 'IPv6') {\n address = address === '::' ? `[::1]` : `[${address}]`;\n } else {\n address = address === '0.0.0.0' ? 'localhost' : address;\n }\n return `${address}:${addressInfo.port}`;\n }\n\n /** @see https://chromedevtools.github.io/devtools-protocol/#endpoints */\n public processRequest(\n req: IncomingMessage,\n res: ServerResponse,\n next: (error?: Error | null) => any\n ) {\n this.metroProxy.processRequest(req, res, next);\n }\n\n public createWebSocketListeners(server: HttpServer | HttpsServer): Record<string, WSServer> {\n // Initialize the server address from the metro server.\n // This is required to properly reference sourcemaps for the debugger.\n this.metroProxy._serverAddressWithPort = ExpoInspectorProxy.normalizeServerAddress(\n server.address()\n );\n\n return {\n [WS_DEVICE_URL]: this.createDeviceWebSocketServer(),\n [WS_DEBUGGER_URL]: this.createDebuggerWebSocketServer(),\n };\n }\n\n private createDeviceWebSocketServer() {\n const wss = new WS.Server({\n noServer: true,\n perMessageDeflate: false,\n });\n\n // See: https://github.com/facebook/metro/blob/eeb211fdcfdcb9e7f8a51721bd0f48bc7d0d211f/packages/metro-inspector-proxy/src/InspectorProxy.js#L157\n wss.on('connection', (socket, request) => {\n try {\n const fallbackDeviceId = String(this.metroProxy._deviceCounter++);\n const { deviceId: newDeviceId, deviceName, appName } = getDeviceInfo(request.url);\n\n const deviceId = newDeviceId ?? fallbackDeviceId;\n\n const oldDevice = this.devices.get(deviceId);\n const newDevice = new this.DeviceClass(\n deviceId,\n deviceName,\n appName,\n socket,\n this.metroProxy._projectRoot\n );\n\n if (oldDevice) {\n debug('Device reconnected: device=%s, app=%s, id=%s', deviceName, appName, deviceId);\n // See: https://github.com/facebook/metro/pull/991\n // @ts-expect-error - Newly introduced method coming to @react-native/dev-middleware soon\n oldDevice.handleDuplicateDeviceConnection(newDevice);\n } else {\n debug('New device connected: device=%s, app=%s, id=%s', deviceName, appName, deviceId);\n }\n\n this.devices.set(deviceId, newDevice);\n\n socket.on('close', () => {\n if (this.devices.get(deviceId) === newDevice) {\n this.devices.delete(deviceId);\n debug('Device disconnected: device=%s, app=%s, id=%s', deviceName, appName, deviceId);\n }\n });\n } catch (error: unknown) {\n let message = '';\n\n debug('Could not establish a connection to on-device debugger:', error);\n\n if (error instanceof Error) {\n message = error.toString();\n Log.error('Failed to create a socket connection to on-device debugger (Hermes engine).');\n Log.exception(error);\n } else {\n Log.error(\n 'Failed to create a socket connection to on-device debugger (Hermes engine), unknown error.'\n );\n }\n\n socket.close(WS_GENERIC_ERROR_STATUS, message || 'Unknown error');\n }\n });\n\n return wss;\n }\n\n private createDebuggerWebSocketServer() {\n const wss = new WS.Server({\n noServer: true,\n perMessageDeflate: false,\n });\n\n // See: https://github.com/facebook/metro/blob/eeb211fdcfdcb9e7f8a51721bd0f48bc7d0d211f/packages/metro-inspector-proxy/src/InspectorProxy.js#L193\n wss.on('connection', (socket, request) => {\n try {\n const { deviceId, pageId, debuggerType } = getDebuggerInfo(request.url);\n if (!deviceId || !pageId) {\n // TODO(cedric): change these errors to proper error types\n throw new Error(`Missing \"device\" and/or \"page\" IDs in query parameters`);\n }\n\n const device = this.devices.get(deviceId);\n if (!device) {\n // TODO(cedric): change these errors to proper error types\n throw new Error(`Device with ID \"${deviceId}\" not found.`);\n }\n\n debug('New debugger connected: device=%s, app=%s', device._name, device._app);\n\n // @ts-expect-error The `handleDebuggerConnectionWithType` is part of our device implementation, not Metro's device\n if (debuggerType && typeof device.handleDebuggerConnectionWithType === 'function') {\n // @ts-expect-error The `handleDebuggerConnectionWithType` is part of our device implementation, not Metro's device\n device.handleDebuggerConnectionWithType(socket, pageId, debuggerType);\n } else {\n device.handleDebuggerConnection(socket, pageId);\n }\n\n socket.on('close', () => {\n debug('Debugger disconnected: device=%s, app=%s', device._name, device._app);\n });\n } catch (error: unknown) {\n let message = '';\n\n debug('Could not establish a connection to debugger:', error);\n\n if (error instanceof Error) {\n message = error.toString();\n Log.error('Failed to create a socket connection to the debugger.');\n Log.exception(error);\n } else {\n Log.error('Failed to create a socket connection to the debugger, unkown error.');\n }\n\n socket.close(WS_GENERIC_ERROR_STATUS, message || 'Unknown error');\n }\n });\n\n return wss;\n }\n}\n\nfunction asString(value: string | string[] = ''): string {\n return Array.isArray(value) ? value.join() : value;\n}\n\nfunction getDeviceInfo(url: IncomingMessage['url']) {\n const { query } = parse(url ?? '', true);\n return {\n deviceId: asString(query.device) || undefined,\n deviceName: asString(query.name) || 'Unknown device name',\n appName: asString(query.app) || 'Unknown app name',\n };\n}\n\nfunction getDebuggerInfo(url: IncomingMessage['url']) {\n const { query } = parse(url ?? '', true);\n return {\n deviceId: asString(query.device),\n pageId: asString(query.page),\n debuggerType: asString(query.type) ?? undefined,\n };\n}\n"],"names":["WS_DEVICE_URL","WS_DEBUGGER_URL","WS_GENERIC_ERROR_STATUS","debug","require","ExpoInspectorProxy","constructor","metroProxy","DeviceClass","devices","Map","_devices","processRequest","bind","normalizeServerAddress","addressInfo","Error","address","family","port","req","res","next","createWebSocketListeners","server","_serverAddressWithPort","createDeviceWebSocketServer","createDebuggerWebSocketServer","wss","WS","Server","noServer","perMessageDeflate","on","socket","request","fallbackDeviceId","String","_deviceCounter","deviceId","newDeviceId","deviceName","appName","getDeviceInfo","url","oldDevice","get","newDevice","_projectRoot","handleDuplicateDeviceConnection","set","delete","error","message","toString","Log","exception","close","pageId","debuggerType","getDebuggerInfo","device","_name","_app","handleDebuggerConnectionWithType","handleDebuggerConnection","asString","value","Array","isArray","join","query","parse","undefined","name","app","page","type"],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.loadMetroConfigAsync = loadMetroConfigAsync;
|
|
6
|
+
exports.instantiateMetroAsync = instantiateMetroAsync;
|
|
7
|
+
exports.isWatchEnabled = isWatchEnabled;
|
|
8
|
+
var _config = require("@expo/config");
|
|
9
|
+
var ExpoMetroConfig = _interopRequireWildcard(require("@expo/metro-config"));
|
|
10
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
11
|
+
var _metroCore = require("metro-core");
|
|
12
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
13
|
+
var _url = require("url");
|
|
14
|
+
var _metroTerminalReporter = require("./MetroTerminalReporter");
|
|
15
|
+
var _router = require("./router");
|
|
16
|
+
var _runServerFork = require("./runServer-fork");
|
|
17
|
+
var _withMetroMultiPlatform = require("./withMetroMultiPlatform");
|
|
18
|
+
var _log = require("../../../log");
|
|
19
|
+
var _getMetroProperties = require("../../../utils/analytics/getMetroProperties");
|
|
20
|
+
var _metroDebuggerMiddleware = require("../../../utils/analytics/metroDebuggerMiddleware");
|
|
21
|
+
var _rudderstackClient = require("../../../utils/analytics/rudderstackClient");
|
|
22
|
+
var _env = require("../../../utils/env");
|
|
23
|
+
var _manifestMiddleware = require("../middleware/ManifestMiddleware");
|
|
24
|
+
var _createJsInspectorMiddleware = _interopRequireDefault(require("../middleware/inspector/createJsInspectorMiddleware"));
|
|
25
|
+
var _mutations = require("../middleware/mutations");
|
|
26
|
+
var _remoteDevtoolsCorsMiddleware = require("../middleware/remoteDevtoolsCorsMiddleware");
|
|
27
|
+
var _remoteDevtoolsSecurityHeadersMiddleware = require("../middleware/remoteDevtoolsSecurityHeadersMiddleware");
|
|
28
|
+
var _suppressErrorMiddleware = require("../middleware/suppressErrorMiddleware");
|
|
29
|
+
var _platformBundlers = require("../platformBundlers");
|
|
30
|
+
function _interopRequireDefault(obj) {
|
|
31
|
+
return obj && obj.__esModule ? obj : {
|
|
32
|
+
default: obj
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function _interopRequireWildcard(obj) {
|
|
36
|
+
if (obj && obj.__esModule) {
|
|
37
|
+
return obj;
|
|
38
|
+
} else {
|
|
39
|
+
var newObj = {};
|
|
40
|
+
if (obj != null) {
|
|
41
|
+
for(var key in obj){
|
|
42
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
43
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
44
|
+
if (desc.get || desc.set) {
|
|
45
|
+
Object.defineProperty(newObj, key, desc);
|
|
46
|
+
} else {
|
|
47
|
+
newObj[key] = obj[key];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
newObj.default = obj;
|
|
53
|
+
return newObj;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function gteSdkVersion(exp, sdkVersion) {
|
|
57
|
+
if (!exp.sdkVersion) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (exp.sdkVersion === "UNVERSIONED") {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
return _semver.default.gte(exp.sdkVersion, sdkVersion);
|
|
65
|
+
} catch {
|
|
66
|
+
throw new Error(`${exp.sdkVersion} is not a valid version. Must be in the form of x.y.z`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function loadMetroConfigAsync(projectRoot, options, { exp =(0, _config).getConfig(projectRoot, {
|
|
70
|
+
skipSDKVersionRequirement: true
|
|
71
|
+
}).exp , isExporting }) {
|
|
72
|
+
var ref, ref1;
|
|
73
|
+
let reportEvent;
|
|
74
|
+
const serverRoot = (0, _manifestMiddleware).getMetroServerRoot(projectRoot);
|
|
75
|
+
const terminal = new _metroCore.Terminal(process.stdout);
|
|
76
|
+
const terminalReporter = new _metroTerminalReporter.MetroTerminalReporter(serverRoot, terminal);
|
|
77
|
+
const reporter = {
|
|
78
|
+
update (event) {
|
|
79
|
+
terminalReporter.update(event);
|
|
80
|
+
if (reportEvent) {
|
|
81
|
+
reportEvent(event);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
let config = await ExpoMetroConfig.loadAsync(projectRoot, {
|
|
86
|
+
reporter,
|
|
87
|
+
...options
|
|
88
|
+
});
|
|
89
|
+
if (// Requires SDK 50 for expo-assets hashAssetPlugin change.
|
|
90
|
+
!exp.sdkVersion || gteSdkVersion(exp, "50.0.0")) {
|
|
91
|
+
if (isExporting) {
|
|
92
|
+
var ref2;
|
|
93
|
+
var ref3;
|
|
94
|
+
// This token will be used in the asset plugin to ensure the path is correct for writing locally.
|
|
95
|
+
// @ts-expect-error: typed as readonly.
|
|
96
|
+
config.transformer.publicPath = `/assets?export_path=${((ref3 = (ref2 = exp.experiments) == null ? void 0 : ref2.baseUrl) != null ? ref3 : "") + "/assets"}`;
|
|
97
|
+
} else {
|
|
98
|
+
// @ts-expect-error: typed as readonly
|
|
99
|
+
config.transformer.publicPath = "/assets/?unstable_path=.";
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
var ref4;
|
|
103
|
+
if (isExporting && ((ref4 = exp.experiments) == null ? void 0 : ref4.baseUrl)) {
|
|
104
|
+
var ref5;
|
|
105
|
+
// This token will be used in the asset plugin to ensure the path is correct for writing locally.
|
|
106
|
+
// @ts-expect-error: typed as readonly.
|
|
107
|
+
config.transformer.publicPath = (ref5 = exp.experiments) == null ? void 0 : ref5.baseUrl;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const platformBundlers = (0, _platformBundlers).getPlatformBundlers(exp);
|
|
111
|
+
var ref6, ref7;
|
|
112
|
+
config = await (0, _withMetroMultiPlatform).withMetroMultiPlatformAsync(projectRoot, {
|
|
113
|
+
routerDirectory: (0, _router).getRouterDirectoryModuleIdWithManifest(projectRoot, exp),
|
|
114
|
+
config,
|
|
115
|
+
platformBundlers,
|
|
116
|
+
isTsconfigPathsEnabled: (ref6 = (ref = exp.experiments) == null ? void 0 : ref.tsconfigPaths) != null ? ref6 : true,
|
|
117
|
+
webOutput: (ref7 = (ref1 = exp.web) == null ? void 0 : ref1.output) != null ? ref7 : "single",
|
|
118
|
+
isFastResolverEnabled: _env.env.EXPO_USE_FAST_RESOLVER,
|
|
119
|
+
isExporting
|
|
120
|
+
});
|
|
121
|
+
if (process.env.NODE_ENV !== "test") {
|
|
122
|
+
(0, _rudderstackClient).logEventAsync("metro config", (0, _getMetroProperties).getMetroProperties(projectRoot, exp, config));
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
config,
|
|
126
|
+
setEventReporter: (logger)=>reportEvent = logger
|
|
127
|
+
,
|
|
128
|
+
reporter: terminalReporter
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
async function instantiateMetroAsync(metroBundler, options, { isExporting }) {
|
|
132
|
+
const projectRoot = metroBundler.projectRoot;
|
|
133
|
+
// TODO: When we bring expo/metro-config into the expo/expo repo, then we can upstream this.
|
|
134
|
+
const { exp } = (0, _config).getConfig(projectRoot, {
|
|
135
|
+
skipSDKVersionRequirement: true
|
|
136
|
+
});
|
|
137
|
+
const { config: metroConfig , setEventReporter } = await loadMetroConfigAsync(projectRoot, options, {
|
|
138
|
+
exp,
|
|
139
|
+
isExporting
|
|
140
|
+
});
|
|
141
|
+
const { createDevServerMiddleware , securityHeadersMiddleware } = require("@react-native-community/cli-server-api");
|
|
142
|
+
const { middleware , messageSocketEndpoint , eventsSocketEndpoint , websocketEndpoints } = createDevServerMiddleware({
|
|
143
|
+
port: metroConfig.server.port,
|
|
144
|
+
watchFolders: metroConfig.watchFolders
|
|
145
|
+
});
|
|
146
|
+
// securityHeadersMiddleware does not support cross-origin requests for remote devtools to get the sourcemap.
|
|
147
|
+
// We replace with the enhanced version.
|
|
148
|
+
(0, _mutations).replaceMiddlewareWith(middleware, securityHeadersMiddleware, _remoteDevtoolsSecurityHeadersMiddleware.remoteDevtoolsSecurityHeadersMiddleware);
|
|
149
|
+
middleware.use(_remoteDevtoolsCorsMiddleware.remoteDevtoolsCorsMiddleware);
|
|
150
|
+
(0, _mutations).prependMiddleware(middleware, _suppressErrorMiddleware.suppressRemoteDebuggingErrorMiddleware);
|
|
151
|
+
middleware.use("/inspector", (0, _createJsInspectorMiddleware).default());
|
|
152
|
+
// TODO: We can probably drop this now.
|
|
153
|
+
const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;
|
|
154
|
+
// @ts-expect-error: can't mutate readonly config
|
|
155
|
+
metroConfig.server.enhanceMiddleware = (metroMiddleware, server)=>{
|
|
156
|
+
if (customEnhanceMiddleware) {
|
|
157
|
+
metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);
|
|
158
|
+
}
|
|
159
|
+
return middleware.use(metroMiddleware);
|
|
160
|
+
};
|
|
161
|
+
middleware.use((0, _metroDebuggerMiddleware).createDebuggerTelemetryMiddleware(projectRoot, exp));
|
|
162
|
+
const { server: server1 , metro } = await (0, _runServerFork).runServer(metroBundler, metroConfig, {
|
|
163
|
+
// @ts-expect-error: Inconsistent `websocketEndpoints` type between metro and @react-native-community/cli-server-api
|
|
164
|
+
websocketEndpoints,
|
|
165
|
+
watch: !isExporting && isWatchEnabled()
|
|
166
|
+
});
|
|
167
|
+
(0, _mutations).prependMiddleware(middleware, (req, res, next)=>{
|
|
168
|
+
// If the URL is a Metro asset request, then we need to skip all other middleware to prevent
|
|
169
|
+
// the community CLI's serve-static from hosting `/assets/index.html` in place of all assets if it exists.
|
|
170
|
+
// /assets/?unstable_path=.
|
|
171
|
+
if (req.url) {
|
|
172
|
+
const url = new _url.URL(req.url, "http://localhost:8000");
|
|
173
|
+
if (url.pathname.match(/^\/assets\/?/) && url.searchParams.get("unstable_path") != null) {
|
|
174
|
+
return metro.processRequest(req, res, next);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return next();
|
|
178
|
+
});
|
|
179
|
+
setEventReporter(eventsSocketEndpoint.reportEvent);
|
|
180
|
+
return {
|
|
181
|
+
metro,
|
|
182
|
+
server: server1,
|
|
183
|
+
middleware,
|
|
184
|
+
messageSocket: messageSocketEndpoint
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function isWatchEnabled() {
|
|
188
|
+
if (_env.env.CI) {
|
|
189
|
+
_log.Log.log(_chalk.default`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`);
|
|
190
|
+
}
|
|
191
|
+
return !_env.env.CI;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
//# sourceMappingURL=instantiateMetro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport * as ExpoMetroConfig from '@expo/metro-config';\nimport type { LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport { Server as ConnectServer } from 'connect';\nimport http from 'http';\nimport type Metro from 'metro';\nimport { Terminal } from 'metro-core';\nimport semver from 'semver';\nimport { URL } from 'url';\n\nimport { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { getRouterDirectoryModuleIdWithManifest } from './router';\nimport { runServer } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { MetroDevServerOptions } from '../../../export/fork-bundleAsync';\nimport { Log } from '../../../log';\nimport { getMetroProperties } from '../../../utils/analytics/getMetroProperties';\nimport { createDebuggerTelemetryMiddleware } from '../../../utils/analytics/metroDebuggerMiddleware';\nimport { logEventAsync } from '../../../utils/analytics/rudderstackClient';\nimport { env } from '../../../utils/env';\nimport { getMetroServerRoot } from '../middleware/ManifestMiddleware';\nimport createJsInspectorMiddleware from '../middleware/inspector/createJsInspectorMiddleware';\nimport { prependMiddleware, replaceMiddlewareWith } from '../middleware/mutations';\nimport { remoteDevtoolsCorsMiddleware } from '../middleware/remoteDevtoolsCorsMiddleware';\nimport { remoteDevtoolsSecurityHeadersMiddleware } from '../middleware/remoteDevtoolsSecurityHeadersMiddleware';\nimport { ServerNext, ServerRequest, ServerResponse } from '../middleware/server.types';\nimport { suppressRemoteDebuggingErrorMiddleware } from '../middleware/suppressErrorMiddleware';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\nfunction gteSdkVersion(exp: Pick<ExpoConfig, 'sdkVersion'>, sdkVersion: string): boolean {\n if (!exp.sdkVersion) {\n return false;\n }\n\n if (exp.sdkVersion === 'UNVERSIONED') {\n return true;\n }\n\n try {\n return semver.gte(exp.sdkVersion, sdkVersion);\n } catch {\n throw new Error(`${exp.sdkVersion} is not a valid version. Must be in the form of x.y.z`);\n }\n}\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadOptions,\n {\n exp = getConfig(projectRoot, { skipSDKVersionRequirement: true }).exp,\n isExporting,\n }: { exp?: ExpoConfig; isExporting: boolean }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n const serverRoot = getMetroServerRoot(projectRoot);\n\n const terminal = new Terminal(process.stdout);\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n const reporter = {\n update(event: any) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n };\n\n let config = await ExpoMetroConfig.loadAsync(projectRoot, { reporter, ...options });\n\n if (\n // Requires SDK 50 for expo-assets hashAssetPlugin change.\n !exp.sdkVersion ||\n gteSdkVersion(exp, '50.0.0')\n ) {\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = `/assets?export_path=${\n (exp.experiments?.baseUrl ?? '') + '/assets'\n }`;\n } else {\n // @ts-expect-error: typed as readonly\n config.transformer.publicPath = '/assets/?unstable_path=.';\n }\n } else {\n if (isExporting && exp.experiments?.baseUrl) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = exp.experiments?.baseUrl;\n }\n }\n\n const platformBundlers = getPlatformBundlers(exp);\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n routerDirectory: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n config,\n platformBundlers,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n webOutput: exp.web?.output ?? 'single',\n isFastResolverEnabled: env.EXPO_USE_FAST_RESOLVER,\n isExporting,\n });\n\n if (process.env.NODE_ENV !== 'test') {\n logEventAsync('metro config', getMetroProperties(projectRoot, exp, config));\n }\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: Omit<MetroDevServerOptions, 'logger'>,\n { isExporting }: { isExporting: boolean }\n): Promise<{\n metro: Metro.Server;\n server: http.Server;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n\n // TODO: When we bring expo/metro-config into the expo/expo repo, then we can upstream this.\n const { exp } = getConfig(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n\n const { config: metroConfig, setEventReporter } = await loadMetroConfigAsync(\n projectRoot,\n options,\n { exp, isExporting }\n );\n\n const { createDevServerMiddleware, securityHeadersMiddleware } =\n require('@react-native-community/cli-server-api') as typeof import('@react-native-community/cli-server-api');\n\n const { middleware, messageSocketEndpoint, eventsSocketEndpoint, websocketEndpoints } =\n createDevServerMiddleware({\n port: metroConfig.server.port,\n watchFolders: metroConfig.watchFolders,\n });\n\n // securityHeadersMiddleware does not support cross-origin requests for remote devtools to get the sourcemap.\n // We replace with the enhanced version.\n replaceMiddlewareWith(\n middleware as ConnectServer,\n securityHeadersMiddleware,\n remoteDevtoolsSecurityHeadersMiddleware\n );\n\n middleware.use(remoteDevtoolsCorsMiddleware);\n\n prependMiddleware(middleware, suppressRemoteDebuggingErrorMiddleware);\n\n middleware.use('/inspector', createJsInspectorMiddleware());\n\n // TODO: We can probably drop this now.\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n // @ts-expect-error: can't mutate readonly config\n metroConfig.server.enhanceMiddleware = (metroMiddleware: any, server: Metro.Server) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n\n middleware.use(createDebuggerTelemetryMiddleware(projectRoot, exp));\n\n const { server, metro } = await runServer(metroBundler, metroConfig, {\n // @ts-expect-error: Inconsistent `websocketEndpoints` type between metro and @react-native-community/cli-server-api\n websocketEndpoints,\n watch: !isExporting && isWatchEnabled(),\n });\n\n prependMiddleware(middleware, (req: ServerRequest, res: ServerResponse, next: ServerNext) => {\n // If the URL is a Metro asset request, then we need to skip all other middleware to prevent\n // the community CLI's serve-static from hosting `/assets/index.html` in place of all assets if it exists.\n // /assets/?unstable_path=.\n if (req.url) {\n const url = new URL(req.url!, 'http://localhost:8000');\n if (url.pathname.match(/^\\/assets\\/?/) && url.searchParams.get('unstable_path') != null) {\n return metro.processRequest(req, res, next);\n }\n }\n return next();\n });\n\n setEventReporter(eventsSocketEndpoint.reportEvent);\n\n return {\n metro,\n server,\n middleware,\n messageSocket: messageSocketEndpoint,\n };\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["loadMetroConfigAsync","instantiateMetroAsync","isWatchEnabled","ExpoMetroConfig","gteSdkVersion","exp","sdkVersion","semver","gte","Error","projectRoot","options","getConfig","skipSDKVersionRequirement","isExporting","reportEvent","serverRoot","getMetroServerRoot","terminal","Terminal","process","stdout","terminalReporter","MetroTerminalReporter","reporter","update","event","config","loadAsync","transformer","publicPath","experiments","baseUrl","platformBundlers","getPlatformBundlers","withMetroMultiPlatformAsync","routerDirectory","getRouterDirectoryModuleIdWithManifest","isTsconfigPathsEnabled","tsconfigPaths","webOutput","web","output","isFastResolverEnabled","env","EXPO_USE_FAST_RESOLVER","NODE_ENV","logEventAsync","getMetroProperties","setEventReporter","logger","metroBundler","metroConfig","createDevServerMiddleware","securityHeadersMiddleware","require","middleware","messageSocketEndpoint","eventsSocketEndpoint","websocketEndpoints","port","server","watchFolders","replaceMiddlewareWith","remoteDevtoolsSecurityHeadersMiddleware","use","remoteDevtoolsCorsMiddleware","prependMiddleware","suppressRemoteDebuggingErrorMiddleware","createJsInspectorMiddleware","customEnhanceMiddleware","enhanceMiddleware","metroMiddleware","createDebuggerTelemetryMiddleware","metro","runServer","watch","req","res","next","url","URL","pathname","match","searchParams","get","processRequest","messageSocket","CI","Log","log","chalk"],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.logMetroErrorWithStack = logMetroErrorWithStack;
|
|
6
|
+
exports.logMetroError = logMetroError;
|
|
7
|
+
exports.logFromError = logFromError;
|
|
8
|
+
exports.logMetroErrorAsync = logMetroErrorAsync;
|
|
9
|
+
exports.getErrorOverlayHtmlAsync = getErrorOverlayHtmlAsync;
|
|
10
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
11
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
12
|
+
var _terminalLink = _interopRequireDefault(require("terminal-link"));
|
|
13
|
+
var _log = require("../../../log");
|
|
14
|
+
var _getStaticRenderFunctions = require("../getStaticRenderFunctions");
|
|
15
|
+
function _interopRequireDefault(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function fill(width) {
|
|
21
|
+
return Array(width).join(" ");
|
|
22
|
+
}
|
|
23
|
+
function formatPaths(config) {
|
|
24
|
+
const filePath = _chalk.default.reset(config.filePath);
|
|
25
|
+
return _chalk.default.dim("(") + filePath + _chalk.default.dim(`:${[
|
|
26
|
+
config.line,
|
|
27
|
+
config.col
|
|
28
|
+
].filter(Boolean).join(":")})`);
|
|
29
|
+
}
|
|
30
|
+
async function logMetroErrorWithStack(projectRoot, { stack , codeFrame , error }) {
|
|
31
|
+
// process.stdout.write('\u001b[0m'); // Reset attributes
|
|
32
|
+
// process.stdout.write('\u001bc'); // Reset the terminal
|
|
33
|
+
const { getStackFormattedLocation } = require((0, _resolveFrom).default(projectRoot, "@expo/metro-runtime/symbolicate"));
|
|
34
|
+
_log.Log.log();
|
|
35
|
+
_log.Log.log(_chalk.default.red("Metro error: ") + error.message);
|
|
36
|
+
_log.Log.log();
|
|
37
|
+
if (codeFrame) {
|
|
38
|
+
var ref;
|
|
39
|
+
const maxWarningLineLength = Math.max(200, process.stdout.columns);
|
|
40
|
+
const lineText = codeFrame.content;
|
|
41
|
+
const isPreviewTooLong = codeFrame.content.split("\n").some((line)=>line.length > maxWarningLineLength
|
|
42
|
+
);
|
|
43
|
+
const column = (ref = codeFrame.location) == null ? void 0 : ref.column;
|
|
44
|
+
// When the preview is too long, we skip reading the file and attempting to apply
|
|
45
|
+
// code coloring, this is because it can get very slow.
|
|
46
|
+
if (isPreviewTooLong) {
|
|
47
|
+
var ref1, ref2;
|
|
48
|
+
let previewLine = "";
|
|
49
|
+
let cursorLine = "";
|
|
50
|
+
const formattedPath = formatPaths({
|
|
51
|
+
filePath: codeFrame.fileName,
|
|
52
|
+
line: (ref1 = codeFrame.location) == null ? void 0 : ref1.row,
|
|
53
|
+
col: (ref2 = codeFrame.location) == null ? void 0 : ref2.column
|
|
54
|
+
});
|
|
55
|
+
// Create a curtailed preview line like:
|
|
56
|
+
// `...transition:'fade'},k._updatePropsStack=function(){clearImmediate(k._updateImmediate),k._updateImmediate...`
|
|
57
|
+
// If there is no text preview or column number, we can't do anything.
|
|
58
|
+
if (lineText && column != null) {
|
|
59
|
+
var ref3;
|
|
60
|
+
var ref4;
|
|
61
|
+
const rangeWindow = Math.round(Math.max((ref4 = (ref3 = codeFrame.fileName) == null ? void 0 : ref3.length) != null ? ref4 : 0, Math.max(80, process.stdout.columns)) / 2);
|
|
62
|
+
let minBounds = Math.max(0, column - rangeWindow);
|
|
63
|
+
const maxBounds = Math.min(minBounds + rangeWindow * 2, lineText.length);
|
|
64
|
+
previewLine = lineText.slice(minBounds, maxBounds);
|
|
65
|
+
// If we splice content off the start, then we should append `...`.
|
|
66
|
+
// This is unlikely to happen since we limit the activation size.
|
|
67
|
+
if (minBounds > 0) {
|
|
68
|
+
// Adjust the min bounds so the cursor is aligned after we add the "..."
|
|
69
|
+
minBounds -= 3;
|
|
70
|
+
previewLine = _chalk.default.dim("...") + previewLine;
|
|
71
|
+
}
|
|
72
|
+
if (maxBounds < lineText.length) {
|
|
73
|
+
previewLine += _chalk.default.dim("...");
|
|
74
|
+
}
|
|
75
|
+
// If the column property could be found, then use that to fix the cursor location which is often broken in regex.
|
|
76
|
+
cursorLine = (column == null ? "" : fill(column) + _chalk.default.reset("^")).slice(minBounds);
|
|
77
|
+
_log.Log.log([
|
|
78
|
+
formattedPath,
|
|
79
|
+
"",
|
|
80
|
+
previewLine,
|
|
81
|
+
cursorLine,
|
|
82
|
+
_chalk.default.dim("(error truncated)")
|
|
83
|
+
].join("\n"));
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
_log.Log.log(codeFrame.content);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (stack == null ? void 0 : stack.length) {
|
|
90
|
+
_log.Log.log();
|
|
91
|
+
_log.Log.log(_chalk.default.bold`Call Stack`);
|
|
92
|
+
const stackProps = stack.map((frame)=>{
|
|
93
|
+
return {
|
|
94
|
+
title: frame.methodName,
|
|
95
|
+
subtitle: getStackFormattedLocation(projectRoot, frame),
|
|
96
|
+
collapse: frame.collapse
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
stackProps.forEach((frame)=>{
|
|
100
|
+
const position = _terminalLink.default.isSupported ? (0, _terminalLink).default(frame.subtitle, frame.subtitle) : frame.subtitle;
|
|
101
|
+
let lineItem = _chalk.default.gray(` ${frame.title} (${position})`);
|
|
102
|
+
if (frame.collapse) {
|
|
103
|
+
lineItem = _chalk.default.dim(lineItem);
|
|
104
|
+
}
|
|
105
|
+
_log.Log.log(lineItem);
|
|
106
|
+
});
|
|
107
|
+
} else {
|
|
108
|
+
_log.Log.log(_chalk.default.gray(` ${error.stack}`));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function logMetroError(projectRoot, { error }) {
|
|
112
|
+
var ref, ref5;
|
|
113
|
+
const { LogBoxLog , parseErrorStack } = require((0, _resolveFrom).default(projectRoot, "@expo/metro-runtime/symbolicate"));
|
|
114
|
+
const stack = parseErrorStack(error.stack);
|
|
115
|
+
const log = new LogBoxLog({
|
|
116
|
+
level: "static",
|
|
117
|
+
message: {
|
|
118
|
+
content: error.message,
|
|
119
|
+
substitutions: []
|
|
120
|
+
},
|
|
121
|
+
isComponentError: false,
|
|
122
|
+
stack,
|
|
123
|
+
category: "static",
|
|
124
|
+
componentStack: []
|
|
125
|
+
});
|
|
126
|
+
await new Promise((res)=>log.symbolicate("stack", res)
|
|
127
|
+
);
|
|
128
|
+
var ref6;
|
|
129
|
+
logMetroErrorWithStack(projectRoot, {
|
|
130
|
+
stack: (ref6 = (ref = log.symbolicated) == null ? void 0 : (ref5 = ref.stack) == null ? void 0 : ref5.stack) != null ? ref6 : [],
|
|
131
|
+
codeFrame: log.codeFrame,
|
|
132
|
+
error
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function logFromError({ error , projectRoot }) {
|
|
136
|
+
const { LogBoxLog , parseErrorStack } = require((0, _resolveFrom).default(projectRoot, "@expo/metro-runtime/symbolicate"));
|
|
137
|
+
const stack = parseErrorStack(error.stack);
|
|
138
|
+
return new LogBoxLog({
|
|
139
|
+
level: "static",
|
|
140
|
+
message: {
|
|
141
|
+
content: error.message,
|
|
142
|
+
substitutions: []
|
|
143
|
+
},
|
|
144
|
+
isComponentError: false,
|
|
145
|
+
stack,
|
|
146
|
+
category: "static",
|
|
147
|
+
componentStack: []
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async function logMetroErrorAsync({ error , projectRoot }) {
|
|
151
|
+
var ref, ref7;
|
|
152
|
+
const log = logFromError({
|
|
153
|
+
projectRoot,
|
|
154
|
+
error
|
|
155
|
+
});
|
|
156
|
+
await new Promise((res)=>log.symbolicate("stack", res)
|
|
157
|
+
);
|
|
158
|
+
var ref8;
|
|
159
|
+
logMetroErrorWithStack(projectRoot, {
|
|
160
|
+
stack: (ref8 = (ref = log.symbolicated) == null ? void 0 : (ref7 = ref.stack) == null ? void 0 : ref7.stack) != null ? ref8 : [],
|
|
161
|
+
codeFrame: log.codeFrame,
|
|
162
|
+
error
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async function getErrorOverlayHtmlAsync({ error , projectRoot }) {
|
|
166
|
+
var ref, ref9;
|
|
167
|
+
const log = logFromError({
|
|
168
|
+
projectRoot,
|
|
169
|
+
error
|
|
170
|
+
});
|
|
171
|
+
await new Promise((res)=>log.symbolicate("stack", res)
|
|
172
|
+
);
|
|
173
|
+
var ref10;
|
|
174
|
+
logMetroErrorWithStack(projectRoot, {
|
|
175
|
+
stack: (ref10 = (ref = log.symbolicated) == null ? void 0 : (ref9 = ref.stack) == null ? void 0 : ref9.stack) != null ? ref10 : [],
|
|
176
|
+
codeFrame: log.codeFrame,
|
|
177
|
+
error
|
|
178
|
+
});
|
|
179
|
+
const logBoxContext = {
|
|
180
|
+
selectedLogIndex: 0,
|
|
181
|
+
isDisabled: false,
|
|
182
|
+
logs: [
|
|
183
|
+
log
|
|
184
|
+
]
|
|
185
|
+
};
|
|
186
|
+
const html = `<html><head><style>#root,body,html{height:100%}body{overflow:hidden}#root{display:flex}</style></head><body><div id="root"></div><script id="_expo-static-error" type="application/json">${JSON.stringify(logBoxContext)}</script></body></html>`;
|
|
187
|
+
const errorOverlayEntry = await (0, _getStaticRenderFunctions).createMetroEndpointAsync(projectRoot, // Keep the URL relative
|
|
188
|
+
"", (0, _resolveFrom).default(projectRoot, "expo-router/_error"), {
|
|
189
|
+
dev: true,
|
|
190
|
+
platform: "web",
|
|
191
|
+
minify: false,
|
|
192
|
+
baseUrl: ""
|
|
193
|
+
});
|
|
194
|
+
const htmlWithJs = html.replace("</body>", `<script src=${errorOverlayEntry}></script></body>`);
|
|
195
|
+
return htmlWithJs;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
//# sourceMappingURL=metroErrorInterface.js.map
|