@expo/cli 0.18.0 → 0.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +90 -114
- package/build/bin/cli.map +1 -1
- package/build/src/api/endpoint.js +11 -3
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +7 -4
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +13 -11
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +7 -4
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +7 -4
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +7 -4
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +55 -35
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +9 -7
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +7 -5
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +6 -4
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemCache.js +6 -4
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
- package/build/src/api/rest/cache/response.js +4 -1
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +21 -12
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +36 -29
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +4 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +5 -2
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +40 -19
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +7 -4
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/settings.js +9 -4
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +16 -8
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +10 -8
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +66 -41
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +46 -25
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +70 -50
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +66 -41
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +62 -43
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +46 -30
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +14 -11
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +61 -46
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +10 -8
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +7 -4
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +31 -34
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +43 -28
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +7 -6
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +51 -38
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +48 -36
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +7 -4
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +20 -8
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +84 -67
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +62 -43
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +47 -26
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +19 -11
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +49 -38
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +19 -11
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +42 -39
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +9 -6
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +7 -4
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +12 -4
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +49 -33
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +22 -6
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +38 -24
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +15 -7
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +19 -15
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +42 -38
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +15 -12
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +47 -31
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +4 -1
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +12 -7
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +141 -128
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +43 -25
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +55 -35
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +52 -35
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +15 -13
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +90 -65
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +48 -27
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +8 -5
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +15 -7
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +174 -0
- package/build/src/lint/ESlintPrerequisite.js.map +1 -0
- package/build/src/lint/index.js +66 -0
- package/build/src/lint/index.js.map +1 -0
- package/build/src/lint/lintAsync.js +33 -0
- package/build/src/lint/lintAsync.js.map +1 -0
- package/build/src/log.js +20 -14
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +43 -25
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +43 -25
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +65 -42
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +50 -29
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +19 -13
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +54 -28
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +52 -38
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +68 -51
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +15 -10
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +60 -35
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +66 -40
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +67 -44
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +70 -49
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +44 -23
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +43 -25
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +14 -11
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +47 -31
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +9 -6
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +10 -9
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +14 -12
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +6 -3
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +12 -9
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +27 -24
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +11 -8
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +15 -7
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +49 -35
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +75 -51
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +31 -24
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +66 -33
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +73 -47
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +53 -26
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +15 -6
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +54 -27
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +56 -30
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +18 -4
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +22 -13
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +57 -31
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +79 -66
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +28 -14
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +24 -11
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +26 -13
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +23 -10
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +27 -20
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +49 -28
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +61 -36
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +11 -3
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +7 -5
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +14 -8
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +50 -34
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +52 -31
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +17 -13
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +63 -39
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +57 -34
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +15 -12
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +6 -3
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +63 -42
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +8 -5
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +47 -26
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/detectDevClient.js +6 -3
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +15 -7
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +7 -4
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +44 -23
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +44 -23
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +61 -36
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +15 -12
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +49 -28
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +98 -53
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -9
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +23 -15
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +19 -13
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +63 -41
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +64 -39
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -5
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +59 -41
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +59 -36
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +57 -31
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +56 -42
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +43 -22
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +60 -38
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +85 -68
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +78 -57
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +9 -6
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +41 -20
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +55 -35
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +19 -17
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +15 -12
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +6 -4
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +70 -50
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +9 -6
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +11 -8
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +43 -22
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +73 -52
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +57 -31
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +63 -42
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +11 -10
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +18 -11
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +14 -14
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +7 -4
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +80 -54
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +7 -4
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +11 -8
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +50 -29
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +53 -29
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +18 -12
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +65 -42
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +67 -44
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +8 -5
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +19 -16
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +13 -5
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +6 -4
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +26 -19
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +66 -46
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +64 -44
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +81 -69
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +21 -16
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +49 -31
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +14 -6
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +44 -23
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +46 -34
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +135 -108
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +24 -17
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +18 -8
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +31 -20
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +76 -51
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +22 -14
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +4 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +10 -9
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +14 -13
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/getDebuggerType.js +5 -2
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +5 -2
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js +5 -2
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/externals.js +21 -10
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +20 -7
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +21 -17
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +15 -7
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +57 -44
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +43 -34
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +11 -2
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +10 -2
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +5 -2
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +27 -20
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +21 -14
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +7 -7
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +12 -4
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +107 -81
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +72 -42
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +4 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +4 -1
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +13 -5
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +15 -12
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +30 -23
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +47 -21
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +8 -5
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +6 -3
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +23 -16
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +84 -60
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +14 -7
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +47 -26
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -8
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +30 -24
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +16 -8
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +4 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +16 -12
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +59 -37
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +22 -16
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +9 -6
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +11 -4
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +26 -18
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +11 -4
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +65 -41
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +14 -6
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js +4 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -1
- package/build/src/start/server/openPlatforms.js +7 -6
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +5 -2
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +62 -33
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +12 -4
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +52 -51
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +22 -19
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +18 -11
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +21 -15
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +81 -56
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +47 -26
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +35 -25
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +13 -5
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +54 -28
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +73 -52
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +46 -25
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/getDevClientProperties.js +29 -21
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js +4 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroProperties.js +4 -1
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +14 -6
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
- package/build/src/utils/ansi.js +5 -2
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +57 -29
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +16 -9
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +77 -53
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +80 -58
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +13 -5
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/delay.js +13 -6
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +24 -21
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +16 -13
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +26 -20
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +50 -24
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +35 -33
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +17 -9
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +10 -7
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/findUp.js +22 -4
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +11 -3
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +71 -45
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +52 -26
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +64 -38
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +14 -9
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +5 -2
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +5 -2
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +7 -4
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/link.js +13 -5
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +22 -17
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +56 -30
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +43 -22
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +6 -1
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +9 -6
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +32 -24
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +12 -4
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +7 -4
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +25 -21
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +53 -27
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +58 -32
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +49 -28
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +16 -12
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +33 -28
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +23 -20
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +61 -37
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/strings.js +11 -4
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +43 -22
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/DetachedClient.js +8 -5
- package/build/src/utils/telemetry/DetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/RudderClient.js +12 -9
- package/build/src/utils/telemetry/RudderClient.js.map +1 -1
- package/build/src/utils/telemetry/flushDetached.js +8 -7
- package/build/src/utils/telemetry/flushDetached.js.map +1 -1
- package/build/src/utils/telemetry/getContext.js +48 -28
- package/build/src/utils/telemetry/getContext.js.map +1 -1
- package/build/src/utils/telemetry/index.js +16 -11
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/template.js +27 -2
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +5 -2
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +18 -12
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -10
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +8 -4
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -9
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +17 -10
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +32 -25
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +15 -11
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +43 -25
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +44 -23
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2022 650 Industries.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/ "use strict";
|
|
2
7
|
Object.defineProperty(exports, "__esModule", {
|
|
3
8
|
value: true
|
|
4
9
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
function _export(target, all) {
|
|
11
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: all[name]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
_export(exports, {
|
|
17
|
+
unstable_exportStaticAsync: ()=>unstable_exportStaticAsync,
|
|
18
|
+
getFilesToExportFromServerAsync: ()=>getFilesToExportFromServerAsync,
|
|
19
|
+
getHtmlFiles: ()=>getHtmlFiles,
|
|
20
|
+
getPathVariations: ()=>getPathVariations
|
|
21
|
+
});
|
|
9
22
|
function _assert() {
|
|
10
|
-
const data = _interopRequireDefault(require("assert"));
|
|
23
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
|
|
11
24
|
_assert = function() {
|
|
12
25
|
return data;
|
|
13
26
|
};
|
|
14
27
|
return data;
|
|
15
28
|
}
|
|
16
29
|
function _chalk() {
|
|
17
|
-
const data = _interopRequireDefault(require("chalk"));
|
|
30
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
18
31
|
_chalk = function() {
|
|
19
32
|
return data;
|
|
20
33
|
};
|
|
@@ -28,14 +41,14 @@ function _matchers() {
|
|
|
28
41
|
return data;
|
|
29
42
|
}
|
|
30
43
|
function _path() {
|
|
31
|
-
const data = _interopRequireDefault(require("path"));
|
|
44
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
32
45
|
_path = function() {
|
|
33
46
|
return data;
|
|
34
47
|
};
|
|
35
48
|
return data;
|
|
36
49
|
}
|
|
37
50
|
function _resolveFrom() {
|
|
38
|
-
const data = _interopRequireDefault(require("resolve-from"));
|
|
51
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
|
|
39
52
|
_resolveFrom = function() {
|
|
40
53
|
return data;
|
|
41
54
|
};
|
|
@@ -48,17 +61,17 @@ function _util() {
|
|
|
48
61
|
};
|
|
49
62
|
return data;
|
|
50
63
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
const _favicon = require("./favicon");
|
|
65
|
+
const _persistMetroAssets = require("./persistMetroAssets");
|
|
66
|
+
const _saveAssets = require("./saveAssets");
|
|
67
|
+
const _log = require("../log");
|
|
68
|
+
const _devServerManager = require("../start/server/DevServerManager");
|
|
69
|
+
const _metroBundlerDevServer = require("../start/server/metro/MetroBundlerDevServer");
|
|
70
|
+
const _metroErrorInterface = require("../start/server/metro/metroErrorInterface");
|
|
71
|
+
const _router = require("../start/server/metro/router");
|
|
72
|
+
const _serializeHtml = require("../start/server/metro/serializeHtml");
|
|
73
|
+
const _link = require("../utils/link");
|
|
74
|
+
const _port = require("../utils/port");
|
|
62
75
|
function _interopRequireDefault(obj) {
|
|
63
76
|
return obj && obj.__esModule ? obj : {
|
|
64
77
|
default: obj
|
|
@@ -66,9 +79,9 @@ function _interopRequireDefault(obj) {
|
|
|
66
79
|
}
|
|
67
80
|
const debug = require("debug")("expo:export:generateStaticRoutes");
|
|
68
81
|
async function unstable_exportStaticAsync(projectRoot, options) {
|
|
69
|
-
_log.Log.log(`Static rendering is enabled. ` + (0, _link
|
|
82
|
+
_log.Log.log(`Static rendering is enabled. ` + (0, _link.learnMore)("https://docs.expo.dev/router/reference/static-rendering/"));
|
|
70
83
|
// Useful for running parallel e2e tests in CI.
|
|
71
|
-
const port = await (0, _port
|
|
84
|
+
const port = await (0, _port.getFreePortAsync)(8082);
|
|
72
85
|
// TODO: Prevent starting the watcher.
|
|
73
86
|
const devServerManager = new _devServerManager.DevServerManager(projectRoot, {
|
|
74
87
|
minify: options.minify,
|
|
@@ -129,7 +142,7 @@ files =new Map() }) {
|
|
|
129
142
|
targetDomain
|
|
130
143
|
});
|
|
131
144
|
} catch (e) {
|
|
132
|
-
await (0, _metroErrorInterface
|
|
145
|
+
await (0, _metroErrorInterface.logMetroErrorAsync)({
|
|
133
146
|
error: e,
|
|
134
147
|
projectRoot
|
|
135
148
|
});
|
|
@@ -157,7 +170,7 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
157
170
|
if (entryPoint.startsWith(".")) {
|
|
158
171
|
return _path().default.resolve(appDir, entryPoint);
|
|
159
172
|
} else if (!_path().default.isAbsolute(entryPoint)) {
|
|
160
|
-
return _resolveFrom().default(appDir, entryPoint);
|
|
173
|
+
return (0, _resolveFrom().default)(appDir, entryPoint);
|
|
161
174
|
}
|
|
162
175
|
return entryPoint;
|
|
163
176
|
});
|
|
@@ -168,13 +181,13 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
168
181
|
const platform = "web";
|
|
169
182
|
const isExporting = true;
|
|
170
183
|
const appDir = _path().default.join(projectRoot, routerRoot);
|
|
171
|
-
const injectFaviconTag = await (0, _favicon
|
|
184
|
+
const injectFaviconTag = await (0, _favicon.getVirtualFaviconAssetsAsync)(projectRoot, {
|
|
172
185
|
outputDir,
|
|
173
186
|
baseUrl,
|
|
174
187
|
files
|
|
175
188
|
});
|
|
176
189
|
const devServer = devServerManager.getDefaultDevServer();
|
|
177
|
-
_assert().default(devServer instanceof _metroBundlerDevServer.MetroBundlerDevServer);
|
|
190
|
+
(0, _assert().default)(devServer instanceof _metroBundlerDevServer.MetroBundlerDevServer);
|
|
178
191
|
const [resources, { manifest , serverManifest , renderAsync }] = await Promise.all([
|
|
179
192
|
devServer.getStaticResourcesAsync({
|
|
180
193
|
includeSourceMaps
|
|
@@ -182,7 +195,7 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
182
195
|
devServer.getStaticRenderFunctionAsync(),
|
|
183
196
|
]);
|
|
184
197
|
makeRuntimeEntryPointsAbsolute(manifest, appDir);
|
|
185
|
-
debug("Routes:\n", _util().inspect(manifest, {
|
|
198
|
+
debug("Routes:\n", (0, _util().inspect)(manifest, {
|
|
186
199
|
colors: true,
|
|
187
200
|
depth: null
|
|
188
201
|
}));
|
|
@@ -192,7 +205,7 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
192
205
|
exportServer,
|
|
193
206
|
async renderAsync ({ pathname , route }) {
|
|
194
207
|
const template = await renderAsync(pathname);
|
|
195
|
-
let html = await (0, _serializeHtml
|
|
208
|
+
let html = await (0, _serializeHtml.serializeHtmlWithAssets)({
|
|
196
209
|
isExporting,
|
|
197
210
|
resources: resources.artifacts,
|
|
198
211
|
template,
|
|
@@ -205,7 +218,7 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
205
218
|
return html;
|
|
206
219
|
}
|
|
207
220
|
});
|
|
208
|
-
(0, _saveAssets
|
|
221
|
+
(0, _saveAssets.getFilesFromSerialAssets)(resources.artifacts, {
|
|
209
222
|
platform,
|
|
210
223
|
includeSourceMaps,
|
|
211
224
|
files
|
|
@@ -213,7 +226,7 @@ function makeRuntimeEntryPointsAbsolute(manifest, appDir) {
|
|
|
213
226
|
if (resources.assets) {
|
|
214
227
|
// TODO: Collect files without writing to disk.
|
|
215
228
|
// NOTE(kitten): Re. above, this is now using `files` except for iOS catalog output, which isn't used here
|
|
216
|
-
await (0, _persistMetroAssets
|
|
229
|
+
await (0, _persistMetroAssets.persistMetroAssetsAsync)(resources.assets, {
|
|
217
230
|
files,
|
|
218
231
|
platform,
|
|
219
232
|
outputDirectory: outputDir,
|
|
@@ -254,7 +267,7 @@ function getHtmlFiles({ manifest , includeGroupVariations }) {
|
|
|
254
267
|
if (leaf === "") {
|
|
255
268
|
filePath = baseUrl === "" ? "index" : baseUrl.endsWith("/") ? baseUrl + "index" : baseUrl.slice(0, -1);
|
|
256
269
|
} else if (// If the path is a collection of group segments leading to an index route, append `/index`.
|
|
257
|
-
_matchers().stripGroupSegmentsFromPath(filePath) === "") {
|
|
270
|
+
(0, _matchers().stripGroupSegmentsFromPath)(filePath) === "") {
|
|
258
271
|
filePath += "/index";
|
|
259
272
|
}
|
|
260
273
|
// This should never happen, the type of `string | object` originally comes from React Navigation.
|
|
@@ -287,8 +300,7 @@ function getHtmlFiles({ manifest , includeGroupVariations }) {
|
|
|
287
300
|
}
|
|
288
301
|
}
|
|
289
302
|
traverseScreens(manifest.screens, null);
|
|
290
|
-
return uniqueBy(Array.from(htmlFiles), (value)=>value.filePath
|
|
291
|
-
).map((value)=>{
|
|
303
|
+
return uniqueBy(Array.from(htmlFiles), (value)=>value.filePath).map((value)=>{
|
|
292
304
|
const parts = value.filePath.split("/");
|
|
293
305
|
// Replace `:foo` with `[foo]` and `*foo` with `[...foo]`
|
|
294
306
|
const partsWithGroups = parts.map((part)=>{
|
|
@@ -324,7 +336,7 @@ function uniqueBy(array, key) {
|
|
|
324
336
|
}
|
|
325
337
|
function getPathVariations(routePath) {
|
|
326
338
|
const variations = new Set();
|
|
327
|
-
const
|
|
339
|
+
const segments = routePath.split("/");
|
|
328
340
|
function generateVariations(segments, current = "") {
|
|
329
341
|
if (segments.length === 0) {
|
|
330
342
|
if (current) variations.add(current);
|
|
@@ -354,7 +366,7 @@ function getPathVariations(routePath) {
|
|
|
354
366
|
}
|
|
355
367
|
generateVariations(rest, current);
|
|
356
368
|
}
|
|
357
|
-
generateVariations(
|
|
369
|
+
generateVariations(segments);
|
|
358
370
|
return Array.from(variations);
|
|
359
371
|
}
|
|
360
372
|
async function exportApiRoutesAsync({ includeSourceMaps , outputDir , server , ...props }) {
|
|
@@ -371,11 +383,10 @@ async function exportApiRoutesAsync({ includeSourceMaps , outputDir , server , .
|
|
|
371
383
|
return files;
|
|
372
384
|
}
|
|
373
385
|
function warnPossibleInvalidExportType(appDir) {
|
|
374
|
-
const apiRoutes = (0, _router
|
|
386
|
+
const apiRoutes = (0, _router.getApiRoutesForDirectory)(appDir);
|
|
375
387
|
if (apiRoutes.length) {
|
|
376
388
|
// TODO: Allow API Routes for native-only.
|
|
377
|
-
_log.Log.warn(_chalk().default.yellow`Skipping export for API routes because \`web.output\` is not "server". You may want to remove the routes: ${apiRoutes.map((v)=>_path().default.relative(appDir, v)
|
|
378
|
-
).join(", ")}`);
|
|
389
|
+
_log.Log.warn(_chalk().default.yellow`Skipping export for API routes because \`web.output\` is not "server". You may want to remove the routes: ${apiRoutes.map((v)=>_path().default.relative(appDir, v)).join(", ")}`);
|
|
379
390
|
}
|
|
380
391
|
}
|
|
381
392
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportStaticAsync.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 assert from 'assert';\nimport chalk from 'chalk';\nimport { RouteNode } from 'expo-router/build/Route';\nimport { stripGroupSegmentsFromPath } from 'expo-router/build/matchers';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport { inspect } from 'util';\n\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { ExportAssetMap, getFilesFromSerialAssets } from './saveAssets';\nimport { Log } from '../log';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport {\n ExpoRouterRuntimeManifest,\n MetroBundlerDevServer,\n} from '../start/server/metro/MetroBundlerDevServer';\nimport { ExpoRouterServerManifestV1 } from '../start/server/metro/fetchRouterManifest';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\nimport { getApiRoutesForDirectory } from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport { learnMore } from '../utils/link';\nimport { getFreePortAsync } from '../utils/port';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = {\n mode: 'production' | 'development';\n files?: ExportAssetMap;\n outputDir: string;\n minify: boolean;\n exportServer: boolean;\n baseUrl: string;\n includeSourceMaps: boolean;\n entryPoint?: string;\n clear: boolean;\n routerRoot: string;\n maxWorkers?: number;\n isExporting: boolean;\n};\n\ntype HtmlRequestLocation = {\n /** The output file path name to use relative to the static folder. */\n filePath: string;\n /** The pathname to make requests to in order to fetch the HTML. */\n pathname: string;\n /** The runtime route node object, used to associate async modules with the static HTML. */\n route: RouteNode;\n};\n\n/** @private */\nexport async function unstable_exportStaticAsync(projectRoot: string, options: Options) {\n Log.log(\n `Static rendering is enabled. ` +\n learnMore('https://docs.expo.dev/router/reference/static-rendering/')\n );\n\n // Useful for running parallel e2e tests in CI.\n const port = await getFreePortAsync(8082);\n\n // TODO: Prevent starting the watcher.\n const devServerManager = new DevServerManager(projectRoot, {\n minify: options.minify,\n mode: options.mode,\n port,\n isExporting: true,\n location: {},\n resetDevServer: options.clear,\n maxWorkers: options.maxWorkers,\n });\n\n await devServerManager.startAsync([\n {\n type: 'metro',\n options: {\n port,\n mode: options.mode,\n location: {},\n isExporting: true,\n minify: options.minify,\n resetDevServer: options.clear,\n maxWorkers: options.maxWorkers,\n },\n },\n ]);\n\n try {\n return await exportFromServerAsync(projectRoot, devServerManager, options);\n } finally {\n await devServerManager.stopAsync();\n }\n}\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n // Servers can handle group routes automatically and therefore\n // don't require the build-time generation of every possible group\n // variation.\n exportServer,\n // name : contents\n files = new Map(),\n }: {\n manifest: ExpoRouterRuntimeManifest;\n renderAsync: (requestLocation: HtmlRequestLocation) => Promise<string>;\n exportServer?: boolean;\n files?: ExportAssetMap;\n }\n): Promise<ExportAssetMap> {\n await Promise.all(\n getHtmlFiles({ manifest, includeGroupVariations: !exportServer }).map(\n async ({ route, filePath, pathname }) => {\n try {\n const targetDomain = exportServer ? 'server' : 'client';\n files.set(filePath, { contents: '', targetDomain });\n const data = await renderAsync({ route, filePath, pathname });\n files.set(filePath, {\n contents: data,\n routeId: pathname,\n targetDomain,\n });\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n }\n )\n );\n\n return files;\n}\n\nfunction modifyRouteNodeInRuntimeManifest(\n manifest: ExpoRouterRuntimeManifest,\n callback: (route: RouteNode) => any\n) {\n const iterateScreens = (screens: ExpoRouterRuntimeManifest['screens']) => {\n Object.values(screens).map((value) => {\n if (typeof value !== 'string') {\n if (value._route) callback(value._route);\n iterateScreens(value.screens);\n }\n });\n };\n\n iterateScreens(manifest.screens);\n}\n\n// TODO: Do this earlier in the process.\nfunction makeRuntimeEntryPointsAbsolute(manifest: ExpoRouterRuntimeManifest, appDir: string) {\n modifyRouteNodeInRuntimeManifest(manifest, (route) => {\n if (Array.isArray(route.entryPoints)) {\n route.entryPoints = route.entryPoints.map((entryPoint) => {\n if (entryPoint.startsWith('.')) {\n return path.resolve(appDir, entryPoint);\n } else if (!path.isAbsolute(entryPoint)) {\n return resolveFrom(appDir, entryPoint);\n }\n return entryPoint;\n });\n }\n });\n}\n\n/** Perform all fs commits */\nasync function exportFromServerAsync(\n projectRoot: string,\n devServerManager: DevServerManager,\n { outputDir, baseUrl, exportServer, includeSourceMaps, routerRoot, files = new Map() }: Options\n): Promise<ExportAssetMap> {\n const platform = 'web';\n const isExporting = true;\n const appDir = path.join(projectRoot, routerRoot);\n const injectFaviconTag = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n baseUrl,\n files,\n });\n\n const devServer = devServerManager.getDefaultDevServer();\n assert(devServer instanceof MetroBundlerDevServer);\n\n const [resources, { manifest, serverManifest, renderAsync }] = await Promise.all([\n devServer.getStaticResourcesAsync({\n includeSourceMaps,\n }),\n devServer.getStaticRenderFunctionAsync(),\n ]);\n\n makeRuntimeEntryPointsAbsolute(manifest, appDir);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n await getFilesToExportFromServerAsync(projectRoot, {\n files,\n manifest,\n exportServer,\n async renderAsync({ pathname, route }) {\n const template = await renderAsync(pathname);\n let html = await serializeHtmlWithAssets({\n isExporting,\n resources: resources.artifacts,\n template,\n baseUrl,\n route,\n });\n\n if (injectFaviconTag) {\n html = injectFaviconTag(html);\n }\n\n return html;\n },\n });\n\n getFilesFromSerialAssets(resources.artifacts, {\n platform,\n includeSourceMaps,\n files,\n });\n\n if (resources.assets) {\n // TODO: Collect files without writing to disk.\n // NOTE(kitten): Re. above, this is now using `files` except for iOS catalog output, which isn't used here\n await persistMetroAssetsAsync(resources.assets, {\n files,\n platform,\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n if (exportServer) {\n const apiRoutes = await exportApiRoutesAsync({\n outputDir,\n server: devServer,\n manifest: serverManifest,\n // NOTE(kitten): For now, we always output source maps for API route exports\n includeSourceMaps: true,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n } else {\n warnPossibleInvalidExportType(appDir);\n }\n\n return files;\n}\n\nexport function getHtmlFiles({\n manifest,\n includeGroupVariations,\n}: {\n manifest: ExpoRouterRuntimeManifest;\n includeGroupVariations?: boolean;\n}): HtmlRequestLocation[] {\n const htmlFiles = new Set<Omit<HtmlRequestLocation, 'pathname'>>();\n\n function traverseScreens(\n screens: ExpoRouterRuntimeManifest['screens'],\n route: RouteNode | null,\n baseUrl = ''\n ) {\n for (const value of Object.values(screens)) {\n let leaf: string | null = null;\n if (typeof value === 'string') {\n leaf = value;\n } else if (Object.keys(value.screens).length === 0) {\n leaf = value.path;\n route = value._route ?? null;\n }\n\n if (leaf != null) {\n let filePath = baseUrl + leaf;\n\n if (leaf === '') {\n filePath =\n baseUrl === ''\n ? 'index'\n : baseUrl.endsWith('/')\n ? baseUrl + 'index'\n : baseUrl.slice(0, -1);\n } else if (\n // If the path is a collection of group segments leading to an index route, append `/index`.\n stripGroupSegmentsFromPath(filePath) === ''\n ) {\n filePath += '/index';\n }\n\n // This should never happen, the type of `string | object` originally comes from React Navigation.\n if (!route) {\n throw new Error(\n `Internal error: Route not found for \"${filePath}\" while collecting static export paths.`\n );\n }\n\n if (includeGroupVariations) {\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath, route);\n } else {\n htmlFiles.add({\n filePath,\n route,\n });\n }\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = baseUrl + value.path + '/';\n traverseScreens(value.screens, value._route ?? null, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string, route: RouteNode) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add({ filePath: variation, route });\n }\n }\n\n traverseScreens(manifest.screens, null);\n\n return uniqueBy(Array.from(htmlFiles), (value) => value.filePath).map((value) => {\n const parts = value.filePath.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part === '*not-found') {\n return `+not-found`;\n } else if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n const filePathLocation = partsWithGroups.join('/');\n const filePath = filePathLocation + '.html';\n return {\n ...value,\n filePath,\n pathname: filePathLocation.replace(/(\\/?index)?$/, ''),\n };\n });\n}\n\nfunction uniqueBy<T>(array: T[], key: (value: T) => string): T[] {\n const seen = new Set<string>();\n const result: T[] = [];\n for (const value of array) {\n const id = key(value);\n if (!seen.has(id)) {\n seen.add(id);\n result.push(value);\n }\n }\n return result;\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>();\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], current = ''): void {\n if (segments.length === 0) {\n if (current) variations.add(current);\n return;\n }\n\n const [head, ...rest] = segments;\n\n if (matchGroupName(head)) {\n const groups = head.slice(1, -1).split(',');\n\n if (groups.length > 1) {\n for (const group of groups) {\n // If there are multiple groups, recurse on each group.\n generateVariations([`(${group.trim()})`, ...rest], current);\n }\n return;\n } else {\n // Start a fork where this group is included\n generateVariations(rest, current ? `${current}/(${groups[0]})` : `(${groups[0]})`);\n // This code will continue and add paths without this group included`\n }\n } else if (current) {\n current = `${current}/${head}`;\n } else {\n current = head;\n }\n\n generateVariations(rest, current);\n }\n\n generateVariations(segments);\n\n return Array.from(variations);\n}\n\nasync function exportApiRoutesAsync({\n includeSourceMaps,\n outputDir,\n server,\n ...props\n}: Pick<Options, 'outputDir' | 'includeSourceMaps'> & {\n server: MetroBundlerDevServer;\n manifest: ExpoRouterServerManifestV1;\n}): Promise<ExportAssetMap> {\n const { manifest, files } = await server.exportExpoRouterApiRoutesAsync({\n outputDir: '_expo/functions',\n prerenderManifest: props.manifest,\n includeSourceMaps,\n });\n\n Log.log(chalk.bold`Exporting ${files.size} API Routes.`);\n\n files.set('_expo/routes.json', {\n contents: JSON.stringify(manifest, null, 2),\n targetDomain: 'server',\n });\n\n return files;\n}\n\nfunction warnPossibleInvalidExportType(appDir: string) {\n const apiRoutes = getApiRoutesForDirectory(appDir);\n if (apiRoutes.length) {\n // TODO: Allow API Routes for native-only.\n Log.warn(\n chalk.yellow`Skipping export for API routes because \\`web.output\\` is not \"server\". You may want to remove the routes: ${apiRoutes\n .map((v) => path.relative(appDir, v))\n .join(', ')}`\n );\n }\n}\n"],"names":["unstable_exportStaticAsync","getFilesToExportFromServerAsync","getHtmlFiles","getPathVariations","debug","require","projectRoot","options","Log","log","learnMore","port","getFreePortAsync","devServerManager","DevServerManager","minify","mode","isExporting","location","resetDevServer","clear","maxWorkers","startAsync","type","exportFromServerAsync","stopAsync","matchGroupName","name","match","manifest","renderAsync","exportServer","files","Map","Promise","all","includeGroupVariations","map","route","filePath","pathname","targetDomain","set","contents","data","routeId","e","logMetroErrorAsync","error","Error","modifyRouteNodeInRuntimeManifest","callback","iterateScreens","screens","Object","values","value","_route","makeRuntimeEntryPointsAbsolute","appDir","Array","isArray","entryPoints","entryPoint","startsWith","path","resolve","isAbsolute","resolveFrom","outputDir","baseUrl","includeSourceMaps","routerRoot","platform","join","injectFaviconTag","getVirtualFaviconAssetsAsync","devServer","getDefaultDevServer","assert","MetroBundlerDevServer","resources","serverManifest","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","html","serializeHtmlWithAssets","artifacts","getFilesFromSerialAssets","assets","persistMetroAssetsAsync","outputDirectory","apiRoutes","exportApiRoutesAsync","server","warnPossibleInvalidExportType","htmlFiles","Set","traverseScreens","leaf","keys","length","endsWith","slice","stripGroupSegmentsFromPath","addOptionalGroups","add","newPath","variations","variation","uniqueBy","from","parts","split","partsWithGroups","part","filePathLocation","replace","array","key","seen","result","id","has","push","routePath","segments","generateVariations","current","head","rest","groups","group","trim","props","exportExpoRouterApiRoutesAsync","prerenderManifest","chalk","bold","size","JSON","stringify","getApiRoutesForDirectory","warn","yellow","v","relative"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportStaticAsync.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 assert from 'assert';\nimport chalk from 'chalk';\nimport { RouteNode } from 'expo-router/build/Route';\nimport { stripGroupSegmentsFromPath } from 'expo-router/build/matchers';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport { inspect } from 'util';\n\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { ExportAssetMap, getFilesFromSerialAssets } from './saveAssets';\nimport { Log } from '../log';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport {\n ExpoRouterRuntimeManifest,\n MetroBundlerDevServer,\n} from '../start/server/metro/MetroBundlerDevServer';\nimport { ExpoRouterServerManifestV1 } from '../start/server/metro/fetchRouterManifest';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\nimport { getApiRoutesForDirectory } from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport { learnMore } from '../utils/link';\nimport { getFreePortAsync } from '../utils/port';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = {\n mode: 'production' | 'development';\n files?: ExportAssetMap;\n outputDir: string;\n minify: boolean;\n exportServer: boolean;\n baseUrl: string;\n includeSourceMaps: boolean;\n entryPoint?: string;\n clear: boolean;\n routerRoot: string;\n maxWorkers?: number;\n isExporting: boolean;\n};\n\ntype HtmlRequestLocation = {\n /** The output file path name to use relative to the static folder. */\n filePath: string;\n /** The pathname to make requests to in order to fetch the HTML. */\n pathname: string;\n /** The runtime route node object, used to associate async modules with the static HTML. */\n route: RouteNode;\n};\n\n/** @private */\nexport async function unstable_exportStaticAsync(projectRoot: string, options: Options) {\n Log.log(\n `Static rendering is enabled. ` +\n learnMore('https://docs.expo.dev/router/reference/static-rendering/')\n );\n\n // Useful for running parallel e2e tests in CI.\n const port = await getFreePortAsync(8082);\n\n // TODO: Prevent starting the watcher.\n const devServerManager = new DevServerManager(projectRoot, {\n minify: options.minify,\n mode: options.mode,\n port,\n isExporting: true,\n location: {},\n resetDevServer: options.clear,\n maxWorkers: options.maxWorkers,\n });\n\n await devServerManager.startAsync([\n {\n type: 'metro',\n options: {\n port,\n mode: options.mode,\n location: {},\n isExporting: true,\n minify: options.minify,\n resetDevServer: options.clear,\n maxWorkers: options.maxWorkers,\n },\n },\n ]);\n\n try {\n return await exportFromServerAsync(projectRoot, devServerManager, options);\n } finally {\n await devServerManager.stopAsync();\n }\n}\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n // Servers can handle group routes automatically and therefore\n // don't require the build-time generation of every possible group\n // variation.\n exportServer,\n // name : contents\n files = new Map(),\n }: {\n manifest: ExpoRouterRuntimeManifest;\n renderAsync: (requestLocation: HtmlRequestLocation) => Promise<string>;\n exportServer?: boolean;\n files?: ExportAssetMap;\n }\n): Promise<ExportAssetMap> {\n await Promise.all(\n getHtmlFiles({ manifest, includeGroupVariations: !exportServer }).map(\n async ({ route, filePath, pathname }) => {\n try {\n const targetDomain = exportServer ? 'server' : 'client';\n files.set(filePath, { contents: '', targetDomain });\n const data = await renderAsync({ route, filePath, pathname });\n files.set(filePath, {\n contents: data,\n routeId: pathname,\n targetDomain,\n });\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n }\n )\n );\n\n return files;\n}\n\nfunction modifyRouteNodeInRuntimeManifest(\n manifest: ExpoRouterRuntimeManifest,\n callback: (route: RouteNode) => any\n) {\n const iterateScreens = (screens: ExpoRouterRuntimeManifest['screens']) => {\n Object.values(screens).map((value) => {\n if (typeof value !== 'string') {\n if (value._route) callback(value._route);\n iterateScreens(value.screens);\n }\n });\n };\n\n iterateScreens(manifest.screens);\n}\n\n// TODO: Do this earlier in the process.\nfunction makeRuntimeEntryPointsAbsolute(manifest: ExpoRouterRuntimeManifest, appDir: string) {\n modifyRouteNodeInRuntimeManifest(manifest, (route) => {\n if (Array.isArray(route.entryPoints)) {\n route.entryPoints = route.entryPoints.map((entryPoint) => {\n if (entryPoint.startsWith('.')) {\n return path.resolve(appDir, entryPoint);\n } else if (!path.isAbsolute(entryPoint)) {\n return resolveFrom(appDir, entryPoint);\n }\n return entryPoint;\n });\n }\n });\n}\n\n/** Perform all fs commits */\nasync function exportFromServerAsync(\n projectRoot: string,\n devServerManager: DevServerManager,\n { outputDir, baseUrl, exportServer, includeSourceMaps, routerRoot, files = new Map() }: Options\n): Promise<ExportAssetMap> {\n const platform = 'web';\n const isExporting = true;\n const appDir = path.join(projectRoot, routerRoot);\n const injectFaviconTag = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n baseUrl,\n files,\n });\n\n const devServer = devServerManager.getDefaultDevServer();\n assert(devServer instanceof MetroBundlerDevServer);\n\n const [resources, { manifest, serverManifest, renderAsync }] = await Promise.all([\n devServer.getStaticResourcesAsync({\n includeSourceMaps,\n }),\n devServer.getStaticRenderFunctionAsync(),\n ]);\n\n makeRuntimeEntryPointsAbsolute(manifest, appDir);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n await getFilesToExportFromServerAsync(projectRoot, {\n files,\n manifest,\n exportServer,\n async renderAsync({ pathname, route }) {\n const template = await renderAsync(pathname);\n let html = await serializeHtmlWithAssets({\n isExporting,\n resources: resources.artifacts,\n template,\n baseUrl,\n route,\n });\n\n if (injectFaviconTag) {\n html = injectFaviconTag(html);\n }\n\n return html;\n },\n });\n\n getFilesFromSerialAssets(resources.artifacts, {\n platform,\n includeSourceMaps,\n files,\n });\n\n if (resources.assets) {\n // TODO: Collect files without writing to disk.\n // NOTE(kitten): Re. above, this is now using `files` except for iOS catalog output, which isn't used here\n await persistMetroAssetsAsync(resources.assets, {\n files,\n platform,\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n if (exportServer) {\n const apiRoutes = await exportApiRoutesAsync({\n outputDir,\n server: devServer,\n manifest: serverManifest,\n // NOTE(kitten): For now, we always output source maps for API route exports\n includeSourceMaps: true,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n } else {\n warnPossibleInvalidExportType(appDir);\n }\n\n return files;\n}\n\nexport function getHtmlFiles({\n manifest,\n includeGroupVariations,\n}: {\n manifest: ExpoRouterRuntimeManifest;\n includeGroupVariations?: boolean;\n}): HtmlRequestLocation[] {\n const htmlFiles = new Set<Omit<HtmlRequestLocation, 'pathname'>>();\n\n function traverseScreens(\n screens: ExpoRouterRuntimeManifest['screens'],\n route: RouteNode | null,\n baseUrl = ''\n ) {\n for (const value of Object.values(screens)) {\n let leaf: string | null = null;\n if (typeof value === 'string') {\n leaf = value;\n } else if (Object.keys(value.screens).length === 0) {\n leaf = value.path;\n route = value._route ?? null;\n }\n\n if (leaf != null) {\n let filePath = baseUrl + leaf;\n\n if (leaf === '') {\n filePath =\n baseUrl === ''\n ? 'index'\n : baseUrl.endsWith('/')\n ? baseUrl + 'index'\n : baseUrl.slice(0, -1);\n } else if (\n // If the path is a collection of group segments leading to an index route, append `/index`.\n stripGroupSegmentsFromPath(filePath) === ''\n ) {\n filePath += '/index';\n }\n\n // This should never happen, the type of `string | object` originally comes from React Navigation.\n if (!route) {\n throw new Error(\n `Internal error: Route not found for \"${filePath}\" while collecting static export paths.`\n );\n }\n\n if (includeGroupVariations) {\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath, route);\n } else {\n htmlFiles.add({\n filePath,\n route,\n });\n }\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = baseUrl + value.path + '/';\n traverseScreens(value.screens, value._route ?? null, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string, route: RouteNode) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add({ filePath: variation, route });\n }\n }\n\n traverseScreens(manifest.screens, null);\n\n return uniqueBy(Array.from(htmlFiles), (value) => value.filePath).map((value) => {\n const parts = value.filePath.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part === '*not-found') {\n return `+not-found`;\n } else if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n const filePathLocation = partsWithGroups.join('/');\n const filePath = filePathLocation + '.html';\n return {\n ...value,\n filePath,\n pathname: filePathLocation.replace(/(\\/?index)?$/, ''),\n };\n });\n}\n\nfunction uniqueBy<T>(array: T[], key: (value: T) => string): T[] {\n const seen = new Set<string>();\n const result: T[] = [];\n for (const value of array) {\n const id = key(value);\n if (!seen.has(id)) {\n seen.add(id);\n result.push(value);\n }\n }\n return result;\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>();\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], current = ''): void {\n if (segments.length === 0) {\n if (current) variations.add(current);\n return;\n }\n\n const [head, ...rest] = segments;\n\n if (matchGroupName(head)) {\n const groups = head.slice(1, -1).split(',');\n\n if (groups.length > 1) {\n for (const group of groups) {\n // If there are multiple groups, recurse on each group.\n generateVariations([`(${group.trim()})`, ...rest], current);\n }\n return;\n } else {\n // Start a fork where this group is included\n generateVariations(rest, current ? `${current}/(${groups[0]})` : `(${groups[0]})`);\n // This code will continue and add paths without this group included`\n }\n } else if (current) {\n current = `${current}/${head}`;\n } else {\n current = head;\n }\n\n generateVariations(rest, current);\n }\n\n generateVariations(segments);\n\n return Array.from(variations);\n}\n\nasync function exportApiRoutesAsync({\n includeSourceMaps,\n outputDir,\n server,\n ...props\n}: Pick<Options, 'outputDir' | 'includeSourceMaps'> & {\n server: MetroBundlerDevServer;\n manifest: ExpoRouterServerManifestV1;\n}): Promise<ExportAssetMap> {\n const { manifest, files } = await server.exportExpoRouterApiRoutesAsync({\n outputDir: '_expo/functions',\n prerenderManifest: props.manifest,\n includeSourceMaps,\n });\n\n Log.log(chalk.bold`Exporting ${files.size} API Routes.`);\n\n files.set('_expo/routes.json', {\n contents: JSON.stringify(manifest, null, 2),\n targetDomain: 'server',\n });\n\n return files;\n}\n\nfunction warnPossibleInvalidExportType(appDir: string) {\n const apiRoutes = getApiRoutesForDirectory(appDir);\n if (apiRoutes.length) {\n // TODO: Allow API Routes for native-only.\n Log.warn(\n chalk.yellow`Skipping export for API routes because \\`web.output\\` is not \"server\". You may want to remove the routes: ${apiRoutes\n .map((v) => path.relative(appDir, v))\n .join(', ')}`\n );\n }\n}\n"],"names":["unstable_exportStaticAsync","getFilesToExportFromServerAsync","getHtmlFiles","getPathVariations","debug","require","projectRoot","options","Log","log","learnMore","port","getFreePortAsync","devServerManager","DevServerManager","minify","mode","isExporting","location","resetDevServer","clear","maxWorkers","startAsync","type","exportFromServerAsync","stopAsync","matchGroupName","name","match","manifest","renderAsync","exportServer","files","Map","Promise","all","includeGroupVariations","map","route","filePath","pathname","targetDomain","set","contents","data","routeId","e","logMetroErrorAsync","error","Error","modifyRouteNodeInRuntimeManifest","callback","iterateScreens","screens","Object","values","value","_route","makeRuntimeEntryPointsAbsolute","appDir","Array","isArray","entryPoints","entryPoint","startsWith","path","resolve","isAbsolute","resolveFrom","outputDir","baseUrl","includeSourceMaps","routerRoot","platform","join","injectFaviconTag","getVirtualFaviconAssetsAsync","devServer","getDefaultDevServer","assert","MetroBundlerDevServer","resources","serverManifest","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","html","serializeHtmlWithAssets","artifacts","getFilesFromSerialAssets","assets","persistMetroAssetsAsync","outputDirectory","apiRoutes","exportApiRoutesAsync","server","warnPossibleInvalidExportType","htmlFiles","Set","traverseScreens","leaf","keys","length","endsWith","slice","stripGroupSegmentsFromPath","addOptionalGroups","add","newPath","variations","variation","uniqueBy","from","parts","split","partsWithGroups","part","filePathLocation","replace","array","key","seen","result","id","has","push","routePath","segments","generateVariations","current","head","rest","groups","group","trim","props","exportExpoRouterApiRoutesAsync","prerenderManifest","chalk","bold","size","JSON","stringify","getApiRoutesForDirectory","warn","yellow","v","relative"],"mappings":"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"}
|
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
getUserDefinedFaviconFile: ()=>getUserDefinedFaviconFile,
|
|
13
|
+
getVirtualFaviconAssetsAsync: ()=>getVirtualFaviconAssetsAsync,
|
|
14
|
+
getFaviconFromExpoConfigAsync: ()=>getFaviconFromExpoConfigAsync
|
|
15
|
+
});
|
|
8
16
|
function _config() {
|
|
9
17
|
const data = require("@expo/config");
|
|
10
18
|
_config = function() {
|
|
@@ -20,21 +28,21 @@ function _imageUtils() {
|
|
|
20
28
|
return data;
|
|
21
29
|
}
|
|
22
30
|
function _fs() {
|
|
23
|
-
const data = _interopRequireDefault(require("fs"));
|
|
31
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("fs"));
|
|
24
32
|
_fs = function() {
|
|
25
33
|
return data;
|
|
26
34
|
};
|
|
27
35
|
return data;
|
|
28
36
|
}
|
|
29
37
|
function _path() {
|
|
30
|
-
const data = _interopRequireDefault(require("path"));
|
|
38
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
31
39
|
_path = function() {
|
|
32
40
|
return data;
|
|
33
41
|
};
|
|
34
42
|
return data;
|
|
35
43
|
}
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
const _publicFolder = require("./publicFolder");
|
|
45
|
+
const _log = require("../log");
|
|
38
46
|
function _interopRequireDefault(obj) {
|
|
39
47
|
return obj && obj.__esModule ? obj : {
|
|
40
48
|
default: obj
|
|
@@ -42,7 +50,7 @@ function _interopRequireDefault(obj) {
|
|
|
42
50
|
}
|
|
43
51
|
const debug = require("debug")("expo:favicon");
|
|
44
52
|
function getUserDefinedFaviconFile(projectRoot) {
|
|
45
|
-
return (0, _publicFolder
|
|
53
|
+
return (0, _publicFolder.getUserDefinedFile)(projectRoot, [
|
|
46
54
|
"./favicon.ico"
|
|
47
55
|
]);
|
|
48
56
|
}
|
|
@@ -81,7 +89,7 @@ async function getVirtualFaviconAssetsAsync(projectRoot, { baseUrl , outputDir ,
|
|
|
81
89
|
}
|
|
82
90
|
async function getFaviconFromExpoConfigAsync(projectRoot, { force =false } = {}) {
|
|
83
91
|
var ref;
|
|
84
|
-
const { exp } = _config().getConfig(projectRoot);
|
|
92
|
+
const { exp } = (0, _config().getConfig)(projectRoot);
|
|
85
93
|
var ref1;
|
|
86
94
|
const src = (ref1 = (ref = exp.web) == null ? void 0 : ref.favicon) != null ? ref1 : null;
|
|
87
95
|
if (!src) {
|
|
@@ -95,7 +103,7 @@ async function getFaviconFromExpoConfigAsync(projectRoot, { force =false } = {}
|
|
|
95
103
|
const cacheType = "favicon";
|
|
96
104
|
const size = dims[dims.length - 1];
|
|
97
105
|
try {
|
|
98
|
-
const { source } = await _imageUtils().generateImageAsync({
|
|
106
|
+
const { source } = await (0, _imageUtils().generateImageAsync)({
|
|
99
107
|
projectRoot,
|
|
100
108
|
cacheType
|
|
101
109
|
}, {
|
|
@@ -106,7 +114,7 @@ async function getFaviconFromExpoConfigAsync(projectRoot, { force =false } = {}
|
|
|
106
114
|
height: size,
|
|
107
115
|
name: `favicon-${size}.png`
|
|
108
116
|
});
|
|
109
|
-
const faviconBuffer = await _imageUtils().generateFaviconAsync(source, dims);
|
|
117
|
+
const faviconBuffer = await (0, _imageUtils().generateFaviconAsync)(source, dims);
|
|
110
118
|
return {
|
|
111
119
|
source: faviconBuffer,
|
|
112
120
|
path: "favicon.ico"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/favicon.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport { generateFaviconAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { getUserDefinedFile } from './publicFolder';\nimport { ExportAssetMap } from './saveAssets';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:favicon') as typeof console.log;\n\n/** @returns the file system path for a user-defined favicon.ico file in the public folder. */\nexport function getUserDefinedFaviconFile(projectRoot: string): string | null {\n return getUserDefinedFile(projectRoot, ['./favicon.ico']);\n}\n\nexport async function getVirtualFaviconAssetsAsync(\n projectRoot: string,\n { baseUrl, outputDir, files }: { outputDir: string; baseUrl: string; files?: ExportAssetMap }\n): Promise<((html: string) => string) | null> {\n const existing = getUserDefinedFaviconFile(projectRoot);\n if (existing) {\n debug('Using user-defined favicon.ico file.');\n return null;\n }\n\n const data = await getFaviconFromExpoConfigAsync(projectRoot);\n\n if (!data) {\n return null;\n }\n\n await Promise.all(\n [data].map(async (asset) => {\n const assetPath = path.join(outputDir, asset.path);\n if (files) {\n debug('Storing asset for persisting: ' + assetPath);\n files?.set(asset.path, {\n contents: asset.source,\n targetDomain: 'client',\n });\n } else {\n debug('Writing asset to disk: ' + assetPath);\n await fs.promises.writeFile(assetPath, asset.source);\n }\n })\n );\n\n function injectFaviconTag(html: string): string {\n if (!html.includes('</head>')) {\n return html;\n }\n return html.replace(\n '</head>',\n `<link rel=\"shortcut icon\" href=\"${baseUrl}/favicon.ico\" /></head>`\n );\n }\n\n return injectFaviconTag;\n}\n\nexport async function getFaviconFromExpoConfigAsync(\n projectRoot: string,\n { force = false }: { force?: boolean } = {}\n) {\n const { exp } = getConfig(projectRoot);\n\n const src = exp.web?.favicon ?? null;\n if (!src) {\n return null;\n }\n\n const dims = [16, 32, 48];\n const cacheType = 'favicon';\n\n const size = dims[dims.length - 1];\n try {\n const { source } = await generateImageAsync(\n { projectRoot, cacheType },\n {\n resizeMode: 'contain',\n src,\n backgroundColor: 'transparent',\n width: size,\n height: size,\n name: `favicon-${size}.png`,\n }\n );\n\n const faviconBuffer = await generateFaviconAsync(source, dims);\n\n return { source: faviconBuffer, path: 'favicon.ico' };\n } catch (error: any) {\n // Check for ENOENT\n if (!force && error.code === 'ENOENT') {\n Log.warn(`Favicon source file in Expo config (web.favicon) does not exist: ${src}`);\n return null;\n }\n throw error;\n }\n}\n"],"names":["getUserDefinedFaviconFile","getVirtualFaviconAssetsAsync","getFaviconFromExpoConfigAsync","debug","require","projectRoot","getUserDefinedFile","baseUrl","outputDir","files","existing","data","Promise","all","map","asset","assetPath","path","join","set","contents","source","targetDomain","fs","promises","writeFile","injectFaviconTag","html","includes","replace","force","exp","getConfig","src","web","favicon","dims","cacheType","size","length","generateImageAsync","resizeMode","backgroundColor","width","height","name","faviconBuffer","generateFaviconAsync","error","code","Log","warn"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"sources":["../../../src/export/favicon.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport { generateFaviconAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { getUserDefinedFile } from './publicFolder';\nimport { ExportAssetMap } from './saveAssets';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:favicon') as typeof console.log;\n\n/** @returns the file system path for a user-defined favicon.ico file in the public folder. */\nexport function getUserDefinedFaviconFile(projectRoot: string): string | null {\n return getUserDefinedFile(projectRoot, ['./favicon.ico']);\n}\n\nexport async function getVirtualFaviconAssetsAsync(\n projectRoot: string,\n { baseUrl, outputDir, files }: { outputDir: string; baseUrl: string; files?: ExportAssetMap }\n): Promise<((html: string) => string) | null> {\n const existing = getUserDefinedFaviconFile(projectRoot);\n if (existing) {\n debug('Using user-defined favicon.ico file.');\n return null;\n }\n\n const data = await getFaviconFromExpoConfigAsync(projectRoot);\n\n if (!data) {\n return null;\n }\n\n await Promise.all(\n [data].map(async (asset) => {\n const assetPath = path.join(outputDir, asset.path);\n if (files) {\n debug('Storing asset for persisting: ' + assetPath);\n files?.set(asset.path, {\n contents: asset.source,\n targetDomain: 'client',\n });\n } else {\n debug('Writing asset to disk: ' + assetPath);\n await fs.promises.writeFile(assetPath, asset.source);\n }\n })\n );\n\n function injectFaviconTag(html: string): string {\n if (!html.includes('</head>')) {\n return html;\n }\n return html.replace(\n '</head>',\n `<link rel=\"shortcut icon\" href=\"${baseUrl}/favicon.ico\" /></head>`\n );\n }\n\n return injectFaviconTag;\n}\n\nexport async function getFaviconFromExpoConfigAsync(\n projectRoot: string,\n { force = false }: { force?: boolean } = {}\n) {\n const { exp } = getConfig(projectRoot);\n\n const src = exp.web?.favicon ?? null;\n if (!src) {\n return null;\n }\n\n const dims = [16, 32, 48];\n const cacheType = 'favicon';\n\n const size = dims[dims.length - 1];\n try {\n const { source } = await generateImageAsync(\n { projectRoot, cacheType },\n {\n resizeMode: 'contain',\n src,\n backgroundColor: 'transparent',\n width: size,\n height: size,\n name: `favicon-${size}.png`,\n }\n );\n\n const faviconBuffer = await generateFaviconAsync(source, dims);\n\n return { source: faviconBuffer, path: 'favicon.ico' };\n } catch (error: any) {\n // Check for ENOENT\n if (!force && error.code === 'ENOENT') {\n Log.warn(`Favicon source file in Expo config (web.favicon) does not exist: ${src}`);\n return null;\n }\n throw error;\n }\n}\n"],"names":["getUserDefinedFaviconFile","getVirtualFaviconAssetsAsync","getFaviconFromExpoConfigAsync","debug","require","projectRoot","getUserDefinedFile","baseUrl","outputDir","files","existing","data","Promise","all","map","asset","assetPath","path","join","set","contents","source","targetDomain","fs","promises","writeFile","injectFaviconTag","html","includes","replace","force","exp","getConfig","src","web","favicon","dims","cacheType","size","length","generateImageAsync","resizeMode","backgroundColor","width","height","name","faviconBuffer","generateFaviconAsync","error","code","Log","warn"],"mappings":"AAAA;;;;;;;;;;;IAYgBA,yBAAyB,MAAzBA,yBAAyB;IAInBC,4BAA4B,MAA5BA,4BAA4B;IA6C5BC,6BAA6B,MAA7BA,6BAA6B;;;yBA7DzB,cAAc;;;;;;;yBACiB,mBAAmB;;;;;;;8DAC7D,IAAI;;;;;;;8DACF,MAAM;;;;;;8BAEY,gBAAgB;qBAE/B,QAAQ;;;;;;AAE5B,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,AAAsB,AAAC;AAG9D,SAASJ,yBAAyB,CAACK,WAAmB,EAAiB;IAC5E,OAAOC,IAAAA,aAAkB,mBAAA,EAACD,WAAW,EAAE;QAAC,eAAe;KAAC,CAAC,CAAC;AAC5D,CAAC;AAEM,eAAeJ,4BAA4B,CAChDI,WAAmB,EACnB,EAAEE,OAAO,CAAA,EAAEC,SAAS,CAAA,EAAEC,KAAK,CAAA,EAAkE,EACjD;IAC5C,MAAMC,QAAQ,GAAGV,yBAAyB,CAACK,WAAW,CAAC,AAAC;IACxD,IAAIK,QAAQ,EAAE;QACZP,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAMQ,IAAI,GAAG,MAAMT,6BAA6B,CAACG,WAAW,CAAC,AAAC;IAE9D,IAAI,CAACM,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAMC,OAAO,CAACC,GAAG,CACf;QAACF,IAAI;KAAC,CAACG,GAAG,CAAC,OAAOC,KAAK,GAAK;QAC1B,MAAMC,SAAS,GAAGC,KAAI,EAAA,QAAA,CAACC,IAAI,CAACV,SAAS,EAAEO,KAAK,CAACE,IAAI,CAAC,AAAC;QACnD,IAAIR,KAAK,EAAE;YACTN,KAAK,CAAC,gCAAgC,GAAGa,SAAS,CAAC,CAAC;YACpDP,KAAK,QAAK,GAAVA,KAAAA,CAAU,GAAVA,KAAK,CAAEU,GAAG,CAACJ,KAAK,CAACE,IAAI,EAAE;gBACrBG,QAAQ,EAAEL,KAAK,CAACM,MAAM;gBACtBC,YAAY,EAAE,QAAQ;aACvB,CAAC,CAAC;QACL,OAAO;YACLnB,KAAK,CAAC,yBAAyB,GAAGa,SAAS,CAAC,CAAC;YAC7C,MAAMO,GAAE,EAAA,QAAA,CAACC,QAAQ,CAACC,SAAS,CAACT,SAAS,EAAED,KAAK,CAACM,MAAM,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,SAASK,gBAAgB,CAACC,IAAY,EAAU;QAC9C,IAAI,CAACA,IAAI,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAOD,IAAI,CAAC;QACd,CAAC;QACD,OAAOA,IAAI,CAACE,OAAO,CACjB,SAAS,EACT,CAAC,gCAAgC,EAAEtB,OAAO,CAAC,uBAAuB,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,OAAOmB,gBAAgB,CAAC;AAC1B,CAAC;AAEM,eAAexB,6BAA6B,CACjDG,WAAmB,EACnB,EAAEyB,KAAK,EAAG,KAAK,CAAA,EAAuB,GAAG,EAAE,EAC3C;QAGYC,GAAO;IAFnB,MAAM,EAAEA,GAAG,CAAA,EAAE,GAAGC,IAAAA,OAAS,EAAA,UAAA,EAAC3B,WAAW,CAAC,AAAC;QAE3B0B,IAAgB;IAA5B,MAAME,GAAG,GAAGF,CAAAA,IAAgB,GAAhBA,CAAAA,GAAO,GAAPA,GAAG,CAACG,GAAG,SAAS,GAAhBH,KAAAA,CAAgB,GAAhBA,GAAO,CAAEI,OAAO,YAAhBJ,IAAgB,GAAI,IAAI,AAAC;IACrC,IAAI,CAACE,GAAG,EAAE;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAMG,IAAI,GAAG;AAAC,UAAE;AAAE,UAAE;AAAE,UAAE;KAAC,AAAC;IAC1B,MAAMC,SAAS,GAAG,SAAS,AAAC;IAE5B,MAAMC,IAAI,GAAGF,IAAI,CAACA,IAAI,CAACG,MAAM,GAAG,CAAC,CAAC,AAAC;IACnC,IAAI;QACF,MAAM,EAAElB,MAAM,CAAA,EAAE,GAAG,MAAMmB,IAAAA,WAAkB,EAAA,mBAAA,EACzC;YAAEnC,WAAW;YAAEgC,SAAS;SAAE,EAC1B;YACEI,UAAU,EAAE,SAAS;YACrBR,GAAG;YACHS,eAAe,EAAE,aAAa;YAC9BC,KAAK,EAAEL,IAAI;YACXM,MAAM,EAAEN,IAAI;YACZO,IAAI,EAAE,CAAC,QAAQ,EAAEP,IAAI,CAAC,IAAI,CAAC;SAC5B,CACF,AAAC;QAEF,MAAMQ,aAAa,GAAG,MAAMC,IAAAA,WAAoB,EAAA,qBAAA,EAAC1B,MAAM,EAAEe,IAAI,CAAC,AAAC;QAE/D,OAAO;YAAEf,MAAM,EAAEyB,aAAa;YAAE7B,IAAI,EAAE,aAAa;SAAE,CAAC;IACxD,EAAE,OAAO+B,KAAK,EAAO;QACnB,mBAAmB;QACnB,IAAI,CAAClB,KAAK,IAAIkB,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;YACrCC,IAAG,IAAA,CAACC,IAAI,CAAC,CAAC,iEAAiE,EAAElB,GAAG,CAAC,CAAC,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAMe,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|