@expo/cli 0.17.9 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +11 -7
- package/build/bin/cli.map +1 -1
- package/build/src/api/getExpoSchema.js +23 -5
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/graphql/client.js +28 -10
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +16 -4
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +8 -2
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +8 -2
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemCache.js +21 -9
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
- package/build/src/api/rest/cache/response.js +9 -3
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +32 -8
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +23 -5
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +9 -4
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +8 -2
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/settings.js +8 -2
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +18 -6
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +26 -8
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +17 -5
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +32 -8
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +17 -5
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +19 -12
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +25 -7
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +9 -3
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +8 -2
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +16 -4
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +10 -4
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/templates.js +33 -9
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +8 -2
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +8 -2
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +58 -18
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +17 -5
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +8 -2
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +16 -4
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +32 -12
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +27 -9
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +10 -2
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +29 -17
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +69 -37
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +33 -9
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +61 -16
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +8 -2
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +15 -3
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/index.js +11 -5
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +9 -3
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +27 -15
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +18 -6
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +8 -2
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +43 -19
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +16 -4
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +9 -3
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/install/applyPlugins.js +8 -2
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +18 -6
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +8 -2
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +14 -8
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +27 -9
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +17 -5
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +17 -5
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/log.js +9 -3
- package/build/src/log.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +37 -13
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +16 -4
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +29 -11
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +24 -6
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +14 -8
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +9 -3
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +119 -0
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +32 -8
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +44 -14
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +18 -2
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +49 -13
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +16 -4
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/run/android/index.js +20 -4
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +55 -0
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +18 -6
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +10 -4
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +5 -3
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +13 -4
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +15 -3
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +10 -4
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +8 -2
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +57 -21
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +25 -7
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +10 -4
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +34 -10
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +16 -4
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +8 -2
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +17 -5
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +17 -5
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +25 -7
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +24 -6
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +8 -2
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +16 -4
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +8 -2
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +16 -4
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +16 -4
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +17 -5
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +8 -2
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +9 -3
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +25 -7
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +22 -10
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +19 -7
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +17 -5
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +9 -3
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +1 -2
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +27 -9
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +8 -2
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +10 -2
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/startBundler.js +16 -4
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/detectDevClient.js +29 -0
- package/build/src/start/detectDevClient.js.map +1 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js +8 -2
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +16 -4
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +16 -4
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +79 -29
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +24 -6
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +25 -7
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +27 -9
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +24 -6
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +8 -2
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +25 -7
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +32 -21
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +33 -9
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +18 -6
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +29 -11
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +18 -6
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +17 -11
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +27 -9
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +17 -11
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +8 -2
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +9 -3
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +8 -2
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +30 -14
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +33 -13
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +17 -5
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +13 -7
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +19 -7
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +34 -10
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +16 -4
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +21 -4
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +32 -8
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +23 -6
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +10 -4
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +26 -8
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +50 -18
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +4 -3
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +16 -4
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +8 -2
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +9 -3
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +12 -6
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +40 -10
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +16 -4
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/dotExpo.js +27 -9
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/resolveOptions.js +33 -15
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +34 -10
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +16 -4
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +28 -10
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +16 -4
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +9 -3
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +26 -8
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +19 -6
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +91 -55
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +231 -83
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +30 -15
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +26 -8
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +56 -20
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +90 -45
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +29 -28
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +27 -0
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +11 -8
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +63 -0
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers/utils.js → getDebuggerType.js} +1 -6
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/NetworkResponse.js +8 -5
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/PageReload.js +7 -6
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +25 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +22 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +28 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/VscodeRuntimeGetProperties.js +10 -6
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/debugging/pageIsSupported.js +14 -0
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -0
- package/build/src/start/server/metro/debugging/types.js.map +1 -0
- package/build/src/start/server/metro/externals.js +51 -64
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +8 -2
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +8 -2
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +34 -10
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +96 -30
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +40 -21
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +82 -0
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +8 -2
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +44 -17
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +56 -14
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +25 -12
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +8 -2
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +148 -46
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +31 -13
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +22 -10
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +16 -4
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +42 -12
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +8 -2
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +41 -11
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +40 -10
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +24 -6
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +8 -2
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +24 -6
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +25 -8
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +10 -4
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +24 -6
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +33 -9
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +27 -11
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +33 -9
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +12 -2
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +17 -5
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +8 -2
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +8 -2
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +37 -13
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +16 -4
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +91 -37
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +27 -9
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +27 -9
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +26 -8
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +36 -12
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +17 -5
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +8 -2
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +35 -11
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +36 -11
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +32 -8
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/getDevClientProperties.js +26 -8
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +2 -2
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
- package/build/src/utils/args.js +32 -8
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/cocoapods.js +64 -28
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +79 -29
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +24 -69
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/dir.js +33 -26
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +40 -10
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +26 -11
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +18 -6
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +40 -31
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +20 -5
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/findUp.js +18 -6
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +19 -7
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +18 -6
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +18 -6
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +9 -3
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/ip.js +8 -2
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +16 -4
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/link.js +18 -6
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +25 -13
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +18 -6
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +8 -2
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +2 -0
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +23 -5
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +64 -17
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/open.js +9 -3
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +16 -4
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +24 -6
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +22 -10
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +8 -2
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +8 -2
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +16 -4
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/scheme.js +75 -23
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/tar.js +16 -4
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/DetachedClient.js +87 -0
- package/build/src/utils/telemetry/DetachedClient.js.map +1 -0
- package/build/src/utils/telemetry/RudderClient.js +98 -0
- package/build/src/utils/telemetry/RudderClient.js.map +1 -0
- package/build/src/utils/telemetry/flushDetached.js +43 -0
- package/build/src/utils/telemetry/flushDetached.js.map +1 -0
- package/build/src/utils/telemetry/getContext.js +92 -0
- package/build/src/utils/telemetry/getContext.js.map +1 -0
- package/build/src/utils/telemetry/index.js +32 -0
- package/build/src/utils/telemetry/index.js.map +1 -0
- package/build/src/utils/telemetry/types.js +6 -0
- package/build/src/utils/telemetry/types.js.map +1 -0
- package/build/src/utils/tsconfig/evaluateTsConfig.js +16 -4
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -6
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +10 -4
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +19 -10
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +18 -6
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +8 -2
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +15 -16
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +27907 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +9494 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +10015 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +28375 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9714 -0
- package/build/src/run/android/resolveGradleProps.js +0 -37
- package/build/src/run/android/resolveGradleProps.js.map +0 -1
- package/build/src/start/server/metro/bundleApiRoutes.js +0 -52
- package/build/src/start/server/metro/bundleApiRoutes.js.map +0 -1
- package/build/src/start/server/metro/debugging/InspectorDevice.js +0 -80
- package/build/src/start/server/metro/debugging/InspectorDevice.js.map +0 -1
- package/build/src/start/server/metro/debugging/InspectorProxy.js +0 -116
- package/build/src/start/server/metro/debugging/InspectorProxy.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js +0 -21
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js +0 -56
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js +0 -18
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +0 -24
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +0 -38
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +0 -38
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/route.test.js +0 -184
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +0 -1
- package/build/src/utils/analytics/rudderstackClient.js +0 -147
- package/build/src/utils/analytics/rudderstackClient.js.map +0 -1
- /package/build/src/start/server/metro/debugging/{inspectorHandlers/types.js → types.js} +0 -0
|
@@ -5,8 +5,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
exports.getXcodeCompilerErrorMessage = getXcodeCompilerErrorMessage;
|
|
6
6
|
exports.logMetroErrorInXcode = logMetroErrorInXcode;
|
|
7
7
|
exports.isExecutingFromXcodebuild = isExecutingFromXcodebuild;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
function _fs() {
|
|
9
|
+
const data = _interopRequireDefault(require("fs"));
|
|
10
|
+
_fs = function() {
|
|
11
|
+
return data;
|
|
12
|
+
};
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
function _path() {
|
|
16
|
+
const data = _interopRequireDefault(require("path"));
|
|
17
|
+
_path = function() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
10
22
|
function _interopRequireDefault(obj) {
|
|
11
23
|
return obj && obj.__esModule ? obj : {
|
|
12
24
|
default: obj
|
|
@@ -19,7 +31,7 @@ function isPossiblyTransformError(error) {
|
|
|
19
31
|
return "message" in error && typeof error.message === "string" && "filename" in error && typeof error.filename === "string" && "lineNumber" in error && typeof error.lineNumber === "number";
|
|
20
32
|
}
|
|
21
33
|
function getXcodeCompilerErrorMessage(projectRoot, error) {
|
|
22
|
-
const makeFilepathAbsolute = (filepath)=>filepath.startsWith("/") ? filepath : _path.default.join(projectRoot, filepath)
|
|
34
|
+
const makeFilepathAbsolute = (filepath)=>filepath.startsWith("/") ? filepath : _path().default.join(projectRoot, filepath)
|
|
23
35
|
;
|
|
24
36
|
if ("message" in error) {
|
|
25
37
|
// Metro's `UnableToResolveError`
|
|
@@ -66,7 +78,7 @@ function makeXcodeCompilerLog(type, message, { fileName , lineNumber , column }
|
|
|
66
78
|
function getLineNumberForStringInFile(originModulePath, targetModuleName) {
|
|
67
79
|
let file;
|
|
68
80
|
try {
|
|
69
|
-
file = _fs.default.readFileSync(originModulePath, "utf8");
|
|
81
|
+
file = _fs().default.readFileSync(originModulePath, "utf8");
|
|
70
82
|
} catch (error) {
|
|
71
83
|
if (error.code === "ENOENT" || error.code === "EISDIR") {
|
|
72
84
|
// We're probably dealing with a virtualised file system where
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/export/embed/xcodeCompilerLogger.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nfunction isPossiblyUnableToResolveError(\n error: any\n): error is { message: string; originModulePath: string; targetModuleName: string } {\n return (\n 'message' in error &&\n typeof error.message === 'string' &&\n 'originModulePath' in error &&\n typeof error.originModulePath === 'string' &&\n 'targetModuleName' in error &&\n typeof error.targetModuleName === 'string'\n );\n}\nfunction isPossiblyTransformError(\n error: any\n): error is { message: string; filename: string; lineNumber: number; column?: number } {\n return (\n 'message' in error &&\n typeof error.message === 'string' &&\n 'filename' in error &&\n typeof error.filename === 'string' &&\n 'lineNumber' in error &&\n typeof error.lineNumber === 'number'\n );\n}\n\nexport function getXcodeCompilerErrorMessage(\n projectRoot: string,\n error: Error | any\n): string | null {\n const makeFilepathAbsolute = (filepath: string) =>\n filepath.startsWith('/') ? filepath : path.join(projectRoot, filepath);\n\n if ('message' in error) {\n // Metro's `UnableToResolveError`\n if (isPossiblyUnableToResolveError(error)) {\n const loc = getLineNumberForStringInFile(error.originModulePath, error.targetModuleName);\n return makeXcodeCompilerLog('error', error.message, {\n fileName: error.originModulePath,\n lineNumber: loc?.lineNumber,\n column: loc?.column,\n });\n } else if (isPossiblyTransformError(error)) {\n return makeXcodeCompilerLog('error', error.message, {\n // Metro generally returns the filename as relative from the project root.\n fileName: makeFilepathAbsolute(error.filename),\n lineNumber: error.lineNumber,\n column: error.column,\n });\n // TODO: ResourceNotFoundError, GraphNotFoundError, RevisionNotFoundError, AmbiguousModuleResolutionError\n } else {\n // Unknown error\n return makeXcodeCompilerLog('error', error.message);\n }\n }\n\n return null;\n}\n\nexport function logMetroErrorInXcode(projectRoot: string, error: Error) {\n const message = getXcodeCompilerErrorMessage(projectRoot, error);\n if (message != null) {\n console.error(message);\n }\n}\n\n// https://developer.apple.com/documentation/xcode/running-custom-scripts-during-a-build#Access-script-related-files-from-environment-variables\nexport function isExecutingFromXcodebuild() {\n return !!process.env.BUILT_PRODUCTS_DIR;\n}\n\nfunction makeXcodeCompilerLog(\n type: 'error' | 'fatal error' | 'warning' | 'note',\n message: string,\n {\n fileName,\n lineNumber,\n column,\n }: {\n /** Absolute file path to link to in Xcode. */\n fileName?: string;\n lineNumber?: number;\n column?: number;\n } = {}\n) {\n // TODO: Figure out how to support multi-line logs.\n const firstLine = message.split('\\n')[0];\n if (fileName && !fileName?.includes(':')) {\n return `${fileName}:${lineNumber || 0}:${\n column != null ? column + ':' : ''\n } ${type}: ${firstLine}`;\n }\n return `${type}: ${firstLine}`;\n}\n\n// TODO: Metro doesn't expose this info even though it knows it.\nfunction getLineNumberForStringInFile(originModulePath: string, targetModuleName: string) {\n let file;\n try {\n file = fs.readFileSync(originModulePath, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT' || error.code === 'EISDIR') {\n // We're probably dealing with a virtualised file system where\n // `this.originModulePath` doesn't actually exist on disk.\n // We can't show a code frame, but there's no need to let this I/O\n // error shadow the original module resolution error.\n return null;\n }\n throw error;\n }\n const lines = file.split('\\n');\n let lineNumber = 0;\n let column = -1;\n for (let line = 0; line < lines.length; line++) {\n const columnLocation = lines[line].lastIndexOf(targetModuleName);\n if (columnLocation >= 0) {\n lineNumber = line;\n column = columnLocation;\n break;\n }\n }\n return { lineNumber, column };\n}\n"],"names":["getXcodeCompilerErrorMessage","logMetroErrorInXcode","isExecutingFromXcodebuild","isPossiblyUnableToResolveError","error","message","originModulePath","targetModuleName","isPossiblyTransformError","filename","lineNumber","projectRoot","makeFilepathAbsolute","filepath","startsWith","path","join","loc","getLineNumberForStringInFile","makeXcodeCompilerLog","fileName","column","console","process","env","BUILT_PRODUCTS_DIR","type","firstLine","split","includes","file","fs","readFileSync","code","lines","line","length","columnLocation","lastIndexOf"],"mappings":"AAMA;;;;QA4BgBA,4BAA4B,GAA5BA,4BAA4B;QAiC5BC,oBAAoB,GAApBA,oBAAoB;QAQpBC,yBAAyB,GAAzBA,yBAAyB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/export/embed/xcodeCompilerLogger.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nfunction isPossiblyUnableToResolveError(\n error: any\n): error is { message: string; originModulePath: string; targetModuleName: string } {\n return (\n 'message' in error &&\n typeof error.message === 'string' &&\n 'originModulePath' in error &&\n typeof error.originModulePath === 'string' &&\n 'targetModuleName' in error &&\n typeof error.targetModuleName === 'string'\n );\n}\nfunction isPossiblyTransformError(\n error: any\n): error is { message: string; filename: string; lineNumber: number; column?: number } {\n return (\n 'message' in error &&\n typeof error.message === 'string' &&\n 'filename' in error &&\n typeof error.filename === 'string' &&\n 'lineNumber' in error &&\n typeof error.lineNumber === 'number'\n );\n}\n\nexport function getXcodeCompilerErrorMessage(\n projectRoot: string,\n error: Error | any\n): string | null {\n const makeFilepathAbsolute = (filepath: string) =>\n filepath.startsWith('/') ? filepath : path.join(projectRoot, filepath);\n\n if ('message' in error) {\n // Metro's `UnableToResolveError`\n if (isPossiblyUnableToResolveError(error)) {\n const loc = getLineNumberForStringInFile(error.originModulePath, error.targetModuleName);\n return makeXcodeCompilerLog('error', error.message, {\n fileName: error.originModulePath,\n lineNumber: loc?.lineNumber,\n column: loc?.column,\n });\n } else if (isPossiblyTransformError(error)) {\n return makeXcodeCompilerLog('error', error.message, {\n // Metro generally returns the filename as relative from the project root.\n fileName: makeFilepathAbsolute(error.filename),\n lineNumber: error.lineNumber,\n column: error.column,\n });\n // TODO: ResourceNotFoundError, GraphNotFoundError, RevisionNotFoundError, AmbiguousModuleResolutionError\n } else {\n // Unknown error\n return makeXcodeCompilerLog('error', error.message);\n }\n }\n\n return null;\n}\n\nexport function logMetroErrorInXcode(projectRoot: string, error: Error) {\n const message = getXcodeCompilerErrorMessage(projectRoot, error);\n if (message != null) {\n console.error(message);\n }\n}\n\n// https://developer.apple.com/documentation/xcode/running-custom-scripts-during-a-build#Access-script-related-files-from-environment-variables\nexport function isExecutingFromXcodebuild() {\n return !!process.env.BUILT_PRODUCTS_DIR;\n}\n\nfunction makeXcodeCompilerLog(\n type: 'error' | 'fatal error' | 'warning' | 'note',\n message: string,\n {\n fileName,\n lineNumber,\n column,\n }: {\n /** Absolute file path to link to in Xcode. */\n fileName?: string;\n lineNumber?: number;\n column?: number;\n } = {}\n) {\n // TODO: Figure out how to support multi-line logs.\n const firstLine = message.split('\\n')[0];\n if (fileName && !fileName?.includes(':')) {\n return `${fileName}:${lineNumber || 0}:${\n column != null ? column + ':' : ''\n } ${type}: ${firstLine}`;\n }\n return `${type}: ${firstLine}`;\n}\n\n// TODO: Metro doesn't expose this info even though it knows it.\nfunction getLineNumberForStringInFile(originModulePath: string, targetModuleName: string) {\n let file;\n try {\n file = fs.readFileSync(originModulePath, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT' || error.code === 'EISDIR') {\n // We're probably dealing with a virtualised file system where\n // `this.originModulePath` doesn't actually exist on disk.\n // We can't show a code frame, but there's no need to let this I/O\n // error shadow the original module resolution error.\n return null;\n }\n throw error;\n }\n const lines = file.split('\\n');\n let lineNumber = 0;\n let column = -1;\n for (let line = 0; line < lines.length; line++) {\n const columnLocation = lines[line].lastIndexOf(targetModuleName);\n if (columnLocation >= 0) {\n lineNumber = line;\n column = columnLocation;\n break;\n }\n }\n return { lineNumber, column };\n}\n"],"names":["getXcodeCompilerErrorMessage","logMetroErrorInXcode","isExecutingFromXcodebuild","isPossiblyUnableToResolveError","error","message","originModulePath","targetModuleName","isPossiblyTransformError","filename","lineNumber","projectRoot","makeFilepathAbsolute","filepath","startsWith","path","join","loc","getLineNumberForStringInFile","makeXcodeCompilerLog","fileName","column","console","process","env","BUILT_PRODUCTS_DIR","type","firstLine","split","includes","file","fs","readFileSync","code","lines","line","length","columnLocation","lastIndexOf"],"mappings":"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"}
|
|
@@ -3,9 +3,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.exportAppAsync = exportAppAsync;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
function _config() {
|
|
7
|
+
const data = require("@expo/config");
|
|
8
|
+
_config = function() {
|
|
9
|
+
return data;
|
|
10
|
+
};
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
13
|
+
function _chalk() {
|
|
14
|
+
const data = _interopRequireDefault(require("chalk"));
|
|
15
|
+
_chalk = function() {
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
function _path() {
|
|
21
|
+
const data = _interopRequireDefault(require("path"));
|
|
22
|
+
_path = function() {
|
|
23
|
+
return data;
|
|
24
|
+
};
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
9
27
|
var _createMetadataJson = require("./createMetadataJson");
|
|
10
28
|
var _exportAssets = require("./exportAssets");
|
|
11
29
|
var _exportStaticAsync = require("./exportStaticAsync");
|
|
@@ -53,7 +71,7 @@ async function exportAppAsync(projectRoot, { platforms , outputDir , clear , dev
|
|
|
53
71
|
var ref;
|
|
54
72
|
(0, _nodeEnv).setNodeEnv(dev ? "development" : "production");
|
|
55
73
|
require("@expo/env").load(projectRoot);
|
|
56
|
-
const projectConfig = (
|
|
74
|
+
const projectConfig = _config().getConfig(projectRoot);
|
|
57
75
|
const exp = await (0, _getPublicExpoManifest).getPublicExpoManifestAsync(projectRoot, {
|
|
58
76
|
// Web doesn't require validation.
|
|
59
77
|
skipValidation: platforms.length === 1 && platforms[0] === "web"
|
|
@@ -73,14 +91,15 @@ async function exportAppAsync(projectRoot, { platforms , outputDir , clear , dev
|
|
|
73
91
|
// Print out logs
|
|
74
92
|
if (baseUrl) {
|
|
75
93
|
Log.log();
|
|
76
|
-
Log.log(_chalk.default.gray`Using (experimental) base path: ${baseUrl}`);
|
|
94
|
+
Log.log(_chalk().default.gray`Using (experimental) base path: ${baseUrl}`);
|
|
77
95
|
// Warn if not using an absolute path.
|
|
78
96
|
if (!baseUrl.startsWith("/")) {
|
|
79
|
-
Log.log(_chalk.default.yellow` Base path does not start with a slash. Requests will not be absolute.`);
|
|
97
|
+
Log.log(_chalk().default.yellow` Base path does not start with a slash. Requests will not be absolute.`);
|
|
80
98
|
}
|
|
81
99
|
}
|
|
82
|
-
const
|
|
83
|
-
const
|
|
100
|
+
const mode = dev ? "development" : "production";
|
|
101
|
+
const publicPath = _path().default.resolve(projectRoot, _env.env.EXPO_PUBLIC_FOLDER);
|
|
102
|
+
const outputPath = _path().default.resolve(projectRoot, outputDir);
|
|
84
103
|
// NOTE(kitten): The public folder is currently always copied, regardless of targetDomain
|
|
85
104
|
// split. Hence, there's another separate `copyPublicFolderAsync` call below for `web`
|
|
86
105
|
await (0, _publicFolder).copyPublicFolderAsync(publicPath, outputPath);
|
|
@@ -157,25 +176,26 @@ async function exportAppAsync(projectRoot, { platforms , outputDir , clear , dev
|
|
|
157
176
|
const exportServer = ((ref2 = exp.web) == null ? void 0 : ref2.output) === "server";
|
|
158
177
|
if (exportServer) {
|
|
159
178
|
// TODO: Remove when this is abstracted into the files map
|
|
160
|
-
await (0, _publicFolder).copyPublicFolderAsync(publicPath, _path.default.resolve(outputPath, "client"));
|
|
179
|
+
await (0, _publicFolder).copyPublicFolderAsync(publicPath, _path().default.resolve(outputPath, "client"));
|
|
161
180
|
}
|
|
162
181
|
await (0, _exportStaticAsync).unstable_exportStaticAsync(projectRoot, {
|
|
182
|
+
mode,
|
|
163
183
|
files,
|
|
164
184
|
clear: !!clear,
|
|
165
185
|
outputDir: outputPath,
|
|
166
186
|
minify,
|
|
167
187
|
baseUrl,
|
|
168
188
|
includeSourceMaps: sourceMaps,
|
|
169
|
-
asyncRoutes: (0, _metroOptions).getAsyncRoutesFromExpoConfig(exp, dev ? "development" : "production", "web"),
|
|
170
189
|
routerRoot: (0, _router).getRouterDirectoryModuleIdWithManifest(projectRoot, exp),
|
|
171
190
|
exportServer,
|
|
172
|
-
maxWorkers
|
|
191
|
+
maxWorkers,
|
|
192
|
+
isExporting: true
|
|
173
193
|
});
|
|
174
194
|
} else {
|
|
175
195
|
// TODO: Unify with exportStaticAsync
|
|
176
196
|
// TODO: Maybe move to the serializer.
|
|
177
197
|
let html = await (0, _serializeHtml).serializeHtmlWithAssets({
|
|
178
|
-
|
|
198
|
+
isExporting: true,
|
|
179
199
|
resources: bundles.web.artifacts,
|
|
180
200
|
template: await (0, _webTemplate).createTemplateHtmlFromExpoConfigAsync(projectRoot, {
|
|
181
201
|
scripts: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportApp.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { createMetadataJson } from './createMetadataJson';\nimport { exportAssetsAsync } from './exportAssets';\nimport { unstable_exportStaticAsync } from './exportStaticAsync';\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { createBundlesAsync } from './fork-bundleAsync';\nimport { getPublicExpoManifestAsync } from './getPublicExpoManifest';\nimport { copyPublicFolderAsync } from './publicFolder';\nimport { Options } from './resolveOptions';\nimport { ExportAssetMap, getFilesFromSerialAssets, persistMetroFilesAsync } from './saveAssets';\nimport { createAssetMap, createSourceMapDebugHtml } from './writeContents';\nimport * as Log from '../log';\nimport { WebSupportProjectPrerequisite } from '../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getRouterDirectoryModuleIdWithManifest } from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport {\n getAsyncRoutesFromExpoConfig,\n getBaseUrlFromExpoConfig,\n} from '../start/server/middleware/metroOptions';\nimport { createTemplateHtmlFromExpoConfigAsync } from '../start/server/webTemplate';\nimport { env } from '../utils/env';\nimport { setNodeEnv } from '../utils/nodeEnv';\n\nexport async function exportAppAsync(\n projectRoot: string,\n {\n platforms,\n outputDir,\n clear,\n dev,\n dumpAssetmap,\n sourceMaps,\n minify,\n bytecode,\n maxWorkers,\n }: Pick<\n Options,\n | 'dumpAssetmap'\n | 'sourceMaps'\n | 'dev'\n | 'clear'\n | 'outputDir'\n | 'platforms'\n | 'minify'\n | 'bytecode'\n | 'maxWorkers'\n >\n): Promise<void> {\n setNodeEnv(dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const projectConfig = getConfig(projectRoot);\n const exp = await getPublicExpoManifestAsync(projectRoot, {\n // Web doesn't require validation.\n skipValidation: platforms.length === 1 && platforms[0] === 'web',\n });\n\n if (platforms.includes('web')) {\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n }\n\n const useServerRendering = ['static', 'server'].includes(exp.web?.output ?? '');\n const baseUrl = getBaseUrlFromExpoConfig(exp);\n\n if (!bytecode && (platforms.includes('ios') || platforms.includes('android'))) {\n Log.warn(\n `Bytecode makes the app startup faster, disabling bytecode is highly discouraged and should only be used for debugging purposes.`\n );\n }\n\n // Print out logs\n if (baseUrl) {\n Log.log();\n Log.log(chalk.gray`Using (experimental) base path: ${baseUrl}`);\n // Warn if not using an absolute path.\n if (!baseUrl.startsWith('/')) {\n Log.log(\n chalk.yellow` Base path does not start with a slash. Requests will not be absolute.`\n );\n }\n }\n\n const publicPath = path.resolve(projectRoot, env.EXPO_PUBLIC_FOLDER);\n const outputPath = path.resolve(projectRoot, outputDir);\n\n // NOTE(kitten): The public folder is currently always copied, regardless of targetDomain\n // split. Hence, there's another separate `copyPublicFolderAsync` call below for `web`\n await copyPublicFolderAsync(publicPath, outputPath);\n\n // Run metro bundler and create the JS bundles/source maps.\n const bundles = await createBundlesAsync(projectRoot, projectConfig, {\n clear: !!clear,\n minify,\n bytecode,\n sourcemaps: sourceMaps,\n platforms: useServerRendering ? platforms.filter((platform) => platform !== 'web') : platforms,\n dev,\n maxWorkers,\n });\n\n // Write the JS bundles to disk, and get the bundle file names (this could change with async chunk loading support).\n\n const files: ExportAssetMap = new Map();\n\n Object.values(bundles).forEach((bundle) => {\n getFilesFromSerialAssets(bundle.artifacts, {\n includeSourceMaps: sourceMaps,\n files,\n });\n });\n\n const bundleEntries = Object.entries(bundles);\n // Can be empty during web-only SSG.\n if (bundleEntries.length) {\n // TODO: Use same asset system across platforms again.\n const { assets, embeddedHashSet } = await exportAssetsAsync(projectRoot, {\n files,\n exp,\n outputDir: outputPath,\n bundles,\n baseUrl,\n });\n\n if (dumpAssetmap) {\n Log.log('Creating asset map');\n files.set('assetmap.json', { contents: JSON.stringify(createAssetMap({ assets })) });\n }\n\n const fileNames = Object.fromEntries(\n Object.entries(bundles).map(([platform, bundle]) => [\n platform,\n bundle.artifacts.filter((asset) => asset.type === 'js').map((asset) => asset.filename),\n ])\n );\n\n // build source maps\n if (sourceMaps) {\n Log.log('Preparing additional debugging files');\n // If we output source maps, then add a debug HTML file which the user can open in\n // the web browser to inspect the output like web.\n files.set('debug.html', {\n contents: createSourceMapDebugHtml({\n fileNames: Object.values(fileNames).flat(),\n }),\n });\n }\n\n // Generate a `metadata.json` for EAS Update.\n const contents = createMetadataJson({\n bundles,\n fileNames,\n embeddedHashSet,\n });\n files.set('metadata.json', { contents: JSON.stringify(contents) });\n }\n\n // Additional web-only steps...\n\n if (platforms.includes('web')) {\n if (useServerRendering) {\n const exportServer = exp.web?.output === 'server';\n\n if (exportServer) {\n // TODO: Remove when this is abstracted into the files map\n await copyPublicFolderAsync(publicPath, path.resolve(outputPath, 'client'));\n }\n\n await unstable_exportStaticAsync(projectRoot, {\n files,\n clear: !!clear,\n outputDir: outputPath,\n minify,\n baseUrl,\n includeSourceMaps: sourceMaps,\n asyncRoutes: getAsyncRoutesFromExpoConfig(exp, dev ? 'development' : 'production', 'web'),\n routerRoot: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n exportServer,\n maxWorkers,\n });\n } else {\n // TODO: Unify with exportStaticAsync\n // TODO: Maybe move to the serializer.\n let html = await serializeHtmlWithAssets({\n mode: 'production',\n resources: bundles.web!.artifacts,\n template: await createTemplateHtmlFromExpoConfigAsync(projectRoot, {\n scripts: [],\n cssLinks: [],\n }),\n baseUrl,\n });\n\n // Add the favicon assets to the HTML.\n const modifyHtml = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n baseUrl,\n files,\n });\n if (modifyHtml) {\n html = modifyHtml(html);\n }\n\n // Generate SPA-styled HTML file.\n // If web exists, then write the template HTML file.\n files.set('index.html', {\n contents: html,\n targetDomain: 'client',\n });\n }\n }\n\n // Write all files at the end for unified logging.\n await persistMetroFilesAsync(files, outputPath);\n}\n"],"names":["exportAppAsync","Log","projectRoot","platforms","outputDir","clear","dev","dumpAssetmap","sourceMaps","minify","bytecode","maxWorkers","exp","setNodeEnv","require","load","projectConfig","getConfig","getPublicExpoManifestAsync","skipValidation","length","includes","WebSupportProjectPrerequisite","assertAsync","useServerRendering","web","output","baseUrl","getBaseUrlFromExpoConfig","warn","log","chalk","gray","startsWith","yellow","publicPath","path","resolve","env","EXPO_PUBLIC_FOLDER","outputPath","copyPublicFolderAsync","bundles","createBundlesAsync","sourcemaps","filter","platform","files","Map","Object","values","forEach","bundle","getFilesFromSerialAssets","artifacts","includeSourceMaps","bundleEntries","entries","assets","embeddedHashSet","exportAssetsAsync","set","contents","JSON","stringify","createAssetMap","fileNames","fromEntries","map","asset","type","filename","createSourceMapDebugHtml","flat","createMetadataJson","exportServer","unstable_exportStaticAsync","asyncRoutes","getAsyncRoutesFromExpoConfig","routerRoot","getRouterDirectoryModuleIdWithManifest","html","serializeHtmlWithAssets","mode","resources","template","createTemplateHtmlFromExpoConfigAsync","scripts","cssLinks","modifyHtml","getVirtualFaviconAssetsAsync","targetDomain","persistMetroFilesAsync"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportApp.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { createMetadataJson } from './createMetadataJson';\nimport { exportAssetsAsync } from './exportAssets';\nimport { unstable_exportStaticAsync } from './exportStaticAsync';\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { createBundlesAsync } from './fork-bundleAsync';\nimport { getPublicExpoManifestAsync } from './getPublicExpoManifest';\nimport { copyPublicFolderAsync } from './publicFolder';\nimport { Options } from './resolveOptions';\nimport { ExportAssetMap, getFilesFromSerialAssets, persistMetroFilesAsync } from './saveAssets';\nimport { createAssetMap, createSourceMapDebugHtml } from './writeContents';\nimport * as Log from '../log';\nimport { WebSupportProjectPrerequisite } from '../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getRouterDirectoryModuleIdWithManifest } from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport { getBaseUrlFromExpoConfig } from '../start/server/middleware/metroOptions';\nimport { createTemplateHtmlFromExpoConfigAsync } from '../start/server/webTemplate';\nimport { env } from '../utils/env';\nimport { setNodeEnv } from '../utils/nodeEnv';\n\nexport async function exportAppAsync(\n projectRoot: string,\n {\n platforms,\n outputDir,\n clear,\n dev,\n dumpAssetmap,\n sourceMaps,\n minify,\n bytecode,\n maxWorkers,\n }: Pick<\n Options,\n | 'dumpAssetmap'\n | 'sourceMaps'\n | 'dev'\n | 'clear'\n | 'outputDir'\n | 'platforms'\n | 'minify'\n | 'bytecode'\n | 'maxWorkers'\n >\n): Promise<void> {\n setNodeEnv(dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const projectConfig = getConfig(projectRoot);\n const exp = await getPublicExpoManifestAsync(projectRoot, {\n // Web doesn't require validation.\n skipValidation: platforms.length === 1 && platforms[0] === 'web',\n });\n\n if (platforms.includes('web')) {\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n }\n\n const useServerRendering = ['static', 'server'].includes(exp.web?.output ?? '');\n const baseUrl = getBaseUrlFromExpoConfig(exp);\n\n if (!bytecode && (platforms.includes('ios') || platforms.includes('android'))) {\n Log.warn(\n `Bytecode makes the app startup faster, disabling bytecode is highly discouraged and should only be used for debugging purposes.`\n );\n }\n\n // Print out logs\n if (baseUrl) {\n Log.log();\n Log.log(chalk.gray`Using (experimental) base path: ${baseUrl}`);\n // Warn if not using an absolute path.\n if (!baseUrl.startsWith('/')) {\n Log.log(\n chalk.yellow` Base path does not start with a slash. Requests will not be absolute.`\n );\n }\n }\n\n const mode = dev ? 'development' : 'production';\n const publicPath = path.resolve(projectRoot, env.EXPO_PUBLIC_FOLDER);\n const outputPath = path.resolve(projectRoot, outputDir);\n\n // NOTE(kitten): The public folder is currently always copied, regardless of targetDomain\n // split. Hence, there's another separate `copyPublicFolderAsync` call below for `web`\n await copyPublicFolderAsync(publicPath, outputPath);\n\n // Run metro bundler and create the JS bundles/source maps.\n const bundles = await createBundlesAsync(projectRoot, projectConfig, {\n clear: !!clear,\n minify,\n bytecode,\n sourcemaps: sourceMaps,\n platforms: useServerRendering ? platforms.filter((platform) => platform !== 'web') : platforms,\n dev,\n maxWorkers,\n });\n\n // Write the JS bundles to disk, and get the bundle file names (this could change with async chunk loading support).\n\n const files: ExportAssetMap = new Map();\n\n Object.values(bundles).forEach((bundle) => {\n getFilesFromSerialAssets(bundle.artifacts, {\n includeSourceMaps: sourceMaps,\n files,\n });\n });\n\n const bundleEntries = Object.entries(bundles);\n // Can be empty during web-only SSG.\n if (bundleEntries.length) {\n // TODO: Use same asset system across platforms again.\n const { assets, embeddedHashSet } = await exportAssetsAsync(projectRoot, {\n files,\n exp,\n outputDir: outputPath,\n bundles,\n baseUrl,\n });\n\n if (dumpAssetmap) {\n Log.log('Creating asset map');\n files.set('assetmap.json', { contents: JSON.stringify(createAssetMap({ assets })) });\n }\n\n const fileNames = Object.fromEntries(\n Object.entries(bundles).map(([platform, bundle]) => [\n platform,\n bundle.artifacts.filter((asset) => asset.type === 'js').map((asset) => asset.filename),\n ])\n );\n\n // build source maps\n if (sourceMaps) {\n Log.log('Preparing additional debugging files');\n // If we output source maps, then add a debug HTML file which the user can open in\n // the web browser to inspect the output like web.\n files.set('debug.html', {\n contents: createSourceMapDebugHtml({\n fileNames: Object.values(fileNames).flat(),\n }),\n });\n }\n\n // Generate a `metadata.json` for EAS Update.\n const contents = createMetadataJson({\n bundles,\n fileNames,\n embeddedHashSet,\n });\n files.set('metadata.json', { contents: JSON.stringify(contents) });\n }\n\n // Additional web-only steps...\n\n if (platforms.includes('web')) {\n if (useServerRendering) {\n const exportServer = exp.web?.output === 'server';\n\n if (exportServer) {\n // TODO: Remove when this is abstracted into the files map\n await copyPublicFolderAsync(publicPath, path.resolve(outputPath, 'client'));\n }\n\n await unstable_exportStaticAsync(projectRoot, {\n mode,\n files,\n clear: !!clear,\n outputDir: outputPath,\n minify,\n baseUrl,\n includeSourceMaps: sourceMaps,\n routerRoot: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n exportServer,\n maxWorkers,\n isExporting: true,\n });\n } else {\n // TODO: Unify with exportStaticAsync\n // TODO: Maybe move to the serializer.\n let html = await serializeHtmlWithAssets({\n isExporting: true,\n resources: bundles.web!.artifacts,\n template: await createTemplateHtmlFromExpoConfigAsync(projectRoot, {\n scripts: [],\n cssLinks: [],\n }),\n baseUrl,\n });\n\n // Add the favicon assets to the HTML.\n const modifyHtml = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n baseUrl,\n files,\n });\n if (modifyHtml) {\n html = modifyHtml(html);\n }\n\n // Generate SPA-styled HTML file.\n // If web exists, then write the template HTML file.\n files.set('index.html', {\n contents: html,\n targetDomain: 'client',\n });\n }\n }\n\n // Write all files at the end for unified logging.\n await persistMetroFilesAsync(files, outputPath);\n}\n"],"names":["exportAppAsync","Log","projectRoot","platforms","outputDir","clear","dev","dumpAssetmap","sourceMaps","minify","bytecode","maxWorkers","exp","setNodeEnv","require","load","projectConfig","getConfig","getPublicExpoManifestAsync","skipValidation","length","includes","WebSupportProjectPrerequisite","assertAsync","useServerRendering","web","output","baseUrl","getBaseUrlFromExpoConfig","warn","log","chalk","gray","startsWith","yellow","mode","publicPath","path","resolve","env","EXPO_PUBLIC_FOLDER","outputPath","copyPublicFolderAsync","bundles","createBundlesAsync","sourcemaps","filter","platform","files","Map","Object","values","forEach","bundle","getFilesFromSerialAssets","artifacts","includeSourceMaps","bundleEntries","entries","assets","embeddedHashSet","exportAssetsAsync","set","contents","JSON","stringify","createAssetMap","fileNames","fromEntries","map","asset","type","filename","createSourceMapDebugHtml","flat","createMetadataJson","exportServer","unstable_exportStaticAsync","routerRoot","getRouterDirectoryModuleIdWithManifest","isExporting","html","serializeHtmlWithAssets","resources","template","createTemplateHtmlFromExpoConfigAsync","scripts","cssLinks","modifyHtml","getVirtualFaviconAssetsAsync","targetDomain","persistMetroFilesAsync"],"mappings":"AAAA;;;;QAuBsBA,cAAc,GAAdA,cAAc;SAvBV,OAAc;yBAAd,cAAc;IAAd,OAAc;;;;;SACtB,MAAO;gDAAP,OAAO;IAAP,MAAO;;;;;SACR,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEY,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AACvB,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;AACP,IAAA,kBAAqB,WAArB,qBAAqB,CAAA;AACnB,IAAA,QAAW,WAAX,WAAW,CAAA;AACrB,IAAA,gBAAoB,WAApB,oBAAoB,CAAA;AACZ,IAAA,sBAAyB,WAAzB,yBAAyB,CAAA;AAC9B,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;AAE2B,IAAA,WAAc,WAAd,cAAc,CAAA;AACtC,IAAA,cAAiB,WAAjB,iBAAiB,CAAA;AAC9DC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAC+B,IAAA,8BAAmD,WAAnD,mDAAmD,CAAA;AAC1C,IAAA,OAA8B,WAA9B,8BAA8B,CAAA;AAC7C,IAAA,cAAqC,WAArC,qCAAqC,CAAA;AACpC,IAAA,aAAyC,WAAzC,yCAAyC,CAAA;AAC5B,IAAA,YAA6B,WAA7B,6BAA6B,CAAA;AAC/D,IAAA,IAAc,WAAd,cAAc,CAAA;AACP,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,eAAeD,cAAc,CAClCE,WAAmB,EACnB,EACEC,SAAS,CAAA,EACTC,SAAS,CAAA,EACTC,KAAK,CAAA,EACLC,GAAG,CAAA,EACHC,YAAY,CAAA,EACZC,UAAU,CAAA,EACVC,MAAM,CAAA,EACNC,QAAQ,CAAA,EACRC,UAAU,CAAA,EAYX,EACc;QAc0CC,GAAO;IAbhEC,CAAAA,GAAAA,QAAU,AAAoC,CAAA,WAApC,CAACP,GAAG,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC;IAC/CQ,OAAO,CAAC,WAAW,CAAC,CAACC,IAAI,CAACb,WAAW,CAAC,CAAC;IAEvC,MAAMc,aAAa,GAAGC,OAAS,YAAA,CAACf,WAAW,CAAC,AAAC;IAC7C,MAAMU,GAAG,GAAG,MAAMM,CAAAA,GAAAA,sBAA0B,AAG1C,CAAA,2BAH0C,CAAChB,WAAW,EAAE;QACxD,kCAAkC;QAClCiB,cAAc,EAAEhB,SAAS,CAACiB,MAAM,KAAK,CAAC,IAAIjB,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK;KACjE,CAAC,AAAC;IAEH,IAAIA,SAAS,CAACkB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAIC,8BAA6B,8BAAA,CAACpB,WAAW,CAAC,CAACqB,WAAW,EAAE,CAAC;KACpE;QAEwDX,IAAe;IAAxE,MAAMY,kBAAkB,GAAG;QAAC,QAAQ;QAAE,QAAQ;KAAC,CAACH,QAAQ,CAACT,CAAAA,IAAe,GAAfA,CAAAA,GAAO,GAAPA,GAAG,CAACa,GAAG,SAAQ,GAAfb,KAAAA,CAAe,GAAfA,GAAO,CAAEc,MAAM,YAAfd,IAAe,GAAI,EAAE,CAAC,AAAC;IAChF,MAAMe,OAAO,GAAGC,CAAAA,GAAAA,aAAwB,AAAK,CAAA,yBAAL,CAAChB,GAAG,CAAC,AAAC;IAE9C,IAAI,CAACF,QAAQ,IAAI,CAACP,SAAS,CAACkB,QAAQ,CAAC,KAAK,CAAC,IAAIlB,SAAS,CAACkB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;QAC7EpB,GAAG,CAAC4B,IAAI,CACN,CAAC,+HAA+H,CAAC,CAClI,CAAC;KACH;IAED,iBAAiB;IACjB,IAAIF,OAAO,EAAE;QACX1B,GAAG,CAAC6B,GAAG,EAAE,CAAC;QACV7B,GAAG,CAAC6B,GAAG,CAACC,MAAK,UAAA,CAACC,IAAI,CAAC,gCAAgC,EAAEL,OAAO,CAAC,CAAC,CAAC,CAAC;QAChE,sCAAsC;QACtC,IAAI,CAACA,OAAO,CAACM,UAAU,CAAC,GAAG,CAAC,EAAE;YAC5BhC,GAAG,CAAC6B,GAAG,CACLC,MAAK,UAAA,CAACG,MAAM,CAAC,uEAAuE,CAAC,CACtF,CAAC;SACH;KACF;IAED,MAAMC,IAAI,GAAG7B,GAAG,GAAG,aAAa,GAAG,YAAY,AAAC;IAChD,MAAM8B,UAAU,GAAGC,KAAI,UAAA,CAACC,OAAO,CAACpC,WAAW,EAAEqC,IAAG,IAAA,CAACC,kBAAkB,CAAC,AAAC;IACrE,MAAMC,UAAU,GAAGJ,KAAI,UAAA,CAACC,OAAO,CAACpC,WAAW,EAAEE,SAAS,CAAC,AAAC;IAExD,yFAAyF;IACzF,sFAAsF;IACtF,MAAMsC,CAAAA,GAAAA,aAAqB,AAAwB,CAAA,sBAAxB,CAACN,UAAU,EAAEK,UAAU,CAAC,CAAC;IAEpD,2DAA2D;IAC3D,MAAME,OAAO,GAAG,MAAMC,CAAAA,GAAAA,gBAAkB,AAQtC,CAAA,mBARsC,CAAC1C,WAAW,EAAEc,aAAa,EAAE;QACnEX,KAAK,EAAE,CAAC,CAACA,KAAK;QACdI,MAAM;QACNC,QAAQ;QACRmC,UAAU,EAAErC,UAAU;QACtBL,SAAS,EAAEqB,kBAAkB,GAAGrB,SAAS,CAAC2C,MAAM,CAAC,CAACC,QAAQ,GAAKA,QAAQ,KAAK,KAAK;QAAA,CAAC,GAAG5C,SAAS;QAC9FG,GAAG;QACHK,UAAU;KACX,CAAC,AAAC;IAEH,oHAAoH;IAEpH,MAAMqC,KAAK,GAAmB,IAAIC,GAAG,EAAE,AAAC;IAExCC,MAAM,CAACC,MAAM,CAACR,OAAO,CAAC,CAACS,OAAO,CAAC,CAACC,MAAM,GAAK;QACzCC,CAAAA,GAAAA,WAAwB,AAGtB,CAAA,yBAHsB,CAACD,MAAM,CAACE,SAAS,EAAE;YACzCC,iBAAiB,EAAEhD,UAAU;YAC7BwC,KAAK;SACN,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,MAAMS,aAAa,GAAGP,MAAM,CAACQ,OAAO,CAACf,OAAO,CAAC,AAAC;IAC9C,oCAAoC;IACpC,IAAIc,aAAa,CAACrC,MAAM,EAAE;QACxB,sDAAsD;QACtD,MAAM,EAAEuC,MAAM,CAAA,EAAEC,eAAe,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,aAAiB,AAMzD,CAAA,kBANyD,CAAC3D,WAAW,EAAE;YACvE8C,KAAK;YACLpC,GAAG;YACHR,SAAS,EAAEqC,UAAU;YACrBE,OAAO;YACPhB,OAAO;SACR,CAAC,AAAC;QAEH,IAAIpB,YAAY,EAAE;YAChBN,GAAG,CAAC6B,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC9BkB,KAAK,CAACc,GAAG,CAAC,eAAe,EAAE;gBAAEC,QAAQ,EAAEC,IAAI,CAACC,SAAS,CAACC,CAAAA,GAAAA,cAAc,AAAY,CAAA,eAAZ,CAAC;oBAAEP,MAAM;iBAAE,CAAC,CAAC;aAAE,CAAC,CAAC;SACtF;QAED,MAAMQ,SAAS,GAAGjB,MAAM,CAACkB,WAAW,CAClClB,MAAM,CAACQ,OAAO,CAACf,OAAO,CAAC,CAAC0B,GAAG,CAAC,CAAC,CAACtB,QAAQ,EAAEM,MAAM,CAAC,GAAK;gBAClDN,QAAQ;gBACRM,MAAM,CAACE,SAAS,CAACT,MAAM,CAAC,CAACwB,KAAK,GAAKA,KAAK,CAACC,IAAI,KAAK,IAAI;gBAAA,CAAC,CAACF,GAAG,CAAC,CAACC,KAAK,GAAKA,KAAK,CAACE,QAAQ;gBAAA,CAAC;aACvF;QAAA,CAAC,CACH,AAAC;QAEF,oBAAoB;QACpB,IAAIhE,UAAU,EAAE;YACdP,GAAG,CAAC6B,GAAG,CAAC,sCAAsC,CAAC,CAAC;YAChD,kFAAkF;YAClF,kDAAkD;YAClDkB,KAAK,CAACc,GAAG,CAAC,YAAY,EAAE;gBACtBC,QAAQ,EAAEU,CAAAA,GAAAA,cAAwB,AAEhC,CAAA,yBAFgC,CAAC;oBACjCN,SAAS,EAAEjB,MAAM,CAACC,MAAM,CAACgB,SAAS,CAAC,CAACO,IAAI,EAAE;iBAC3C,CAAC;aACH,CAAC,CAAC;SACJ;QAED,6CAA6C;QAC7C,MAAMX,QAAQ,GAAGY,CAAAA,GAAAA,mBAAkB,AAIjC,CAAA,mBAJiC,CAAC;YAClChC,OAAO;YACPwB,SAAS;YACTP,eAAe;SAChB,CAAC,AAAC;QACHZ,KAAK,CAACc,GAAG,CAAC,eAAe,EAAE;YAAEC,QAAQ,EAAEC,IAAI,CAACC,SAAS,CAACF,QAAQ,CAAC;SAAE,CAAC,CAAC;KACpE;IAED,+BAA+B;IAE/B,IAAI5D,SAAS,CAACkB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7B,IAAIG,kBAAkB,EAAE;gBACDZ,IAAO;YAA5B,MAAMgE,YAAY,GAAGhE,CAAAA,CAAAA,IAAO,GAAPA,GAAG,CAACa,GAAG,SAAQ,GAAfb,KAAAA,CAAe,GAAfA,IAAO,CAAEc,MAAM,CAAA,KAAK,QAAQ,AAAC;YAElD,IAAIkD,YAAY,EAAE;gBAChB,0DAA0D;gBAC1D,MAAMlC,CAAAA,GAAAA,aAAqB,AAAgD,CAAA,sBAAhD,CAACN,UAAU,EAAEC,KAAI,UAAA,CAACC,OAAO,CAACG,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC7E;YAED,MAAMoC,CAAAA,GAAAA,kBAA0B,AAY9B,CAAA,2BAZ8B,CAAC3E,WAAW,EAAE;gBAC5CiC,IAAI;gBACJa,KAAK;gBACL3C,KAAK,EAAE,CAAC,CAACA,KAAK;gBACdD,SAAS,EAAEqC,UAAU;gBACrBhC,MAAM;gBACNkB,OAAO;gBACP6B,iBAAiB,EAAEhD,UAAU;gBAC7BsE,UAAU,EAAEC,CAAAA,GAAAA,OAAsC,AAAkB,CAAA,uCAAlB,CAAC7E,WAAW,EAAEU,GAAG,CAAC;gBACpEgE,YAAY;gBACZjE,UAAU;gBACVqE,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;SACJ,MAAM;YACL,qCAAqC;YACrC,sCAAsC;YACtC,IAAIC,IAAI,GAAG,MAAMC,CAAAA,GAAAA,cAAuB,AAQtC,CAAA,wBARsC,CAAC;gBACvCF,WAAW,EAAE,IAAI;gBACjBG,SAAS,EAAExC,OAAO,CAAClB,GAAG,CAAE8B,SAAS;gBACjC6B,QAAQ,EAAE,MAAMC,CAAAA,GAAAA,YAAqC,AAGnD,CAAA,sCAHmD,CAACnF,WAAW,EAAE;oBACjEoF,OAAO,EAAE,EAAE;oBACXC,QAAQ,EAAE,EAAE;iBACb,CAAC;gBACF5D,OAAO;aACR,CAAC,AAAC;YAEH,sCAAsC;YACtC,MAAM6D,UAAU,GAAG,MAAMC,CAAAA,GAAAA,QAA4B,AAInD,CAAA,6BAJmD,CAACvF,WAAW,EAAE;gBACjEE,SAAS;gBACTuB,OAAO;gBACPqB,KAAK;aACN,CAAC,AAAC;YACH,IAAIwC,UAAU,EAAE;gBACdP,IAAI,GAAGO,UAAU,CAACP,IAAI,CAAC,CAAC;aACzB;YAED,iCAAiC;YACjC,oDAAoD;YACpDjC,KAAK,CAACc,GAAG,CAAC,YAAY,EAAE;gBACtBC,QAAQ,EAAEkB,IAAI;gBACdS,YAAY,EAAE,QAAQ;aACvB,CAAC,CAAC;SACJ;KACF;IAED,kDAAkD;IAClD,MAAMC,CAAAA,GAAAA,WAAsB,AAAmB,CAAA,uBAAnB,CAAC3C,KAAK,EAAEP,UAAU,CAAC,CAAC;CACjD"}
|
|
@@ -5,9 +5,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
exports.assetPatternsToBeBundled = assetPatternsToBeBundled;
|
|
6
6
|
exports.resolveAssetPatternsToBeBundled = resolveAssetPatternsToBeBundled;
|
|
7
7
|
exports.exportAssetsAsync = exportAssetsAsync;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
function _fs() {
|
|
9
|
+
const data = _interopRequireDefault(require("fs"));
|
|
10
|
+
_fs = function() {
|
|
11
|
+
return data;
|
|
12
|
+
};
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
function _minimatch() {
|
|
16
|
+
const data = _interopRequireDefault(require("minimatch"));
|
|
17
|
+
_minimatch = function() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
function _path() {
|
|
23
|
+
const data = _interopRequireDefault(require("path"));
|
|
24
|
+
_path = function() {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
11
29
|
var _persistMetroAssets = require("./persistMetroAssets");
|
|
12
30
|
var Log = _interopRequireWildcard(require("../log"));
|
|
13
31
|
var _resolveAssets = require("../start/server/middleware/resolveAssets");
|
|
@@ -71,7 +89,7 @@ function assetPatternsToBeBundled(exp) {
|
|
|
71
89
|
// Assets strings are formatted as `asset_<hash>.<type>` and represent
|
|
72
90
|
// the name that the file will have in the app bundle. The `asset_` prefix is
|
|
73
91
|
// needed because android doesn't support assets that start with numbers.
|
|
74
|
-
const fullPatterns = assetPatternsToBeBundled1.map((p)=>_path.default.join(projectRoot, p)
|
|
92
|
+
const fullPatterns = assetPatternsToBeBundled1.map((p)=>_path().default.join(projectRoot, p)
|
|
75
93
|
);
|
|
76
94
|
logPatterns(fullPatterns);
|
|
77
95
|
const allBundledAssets = assets.map((asset)=>{
|
|
@@ -107,7 +125,7 @@ function logPatterns(patterns) {
|
|
|
107
125
|
function shouldBundleAsset(asset, patterns) {
|
|
108
126
|
var ref;
|
|
109
127
|
const file = (ref = asset.files) == null ? void 0 : ref[0];
|
|
110
|
-
return !!("__packager_asset" in asset && asset.__packager_asset && file && patterns.some((pattern)=>(
|
|
128
|
+
return !!("__packager_asset" in asset && asset.__packager_asset && file && patterns.some((pattern)=>_minimatch().default(file, pattern)
|
|
111
129
|
));
|
|
112
130
|
}
|
|
113
131
|
async function exportAssetsAsync(projectRoot, { exp , outputDir , bundles: { web , ...bundles } , baseUrl , files =new Map() }) {
|
|
@@ -151,14 +169,14 @@ async function exportAssetsAsync(projectRoot, { exp , outputDir , bundles: { web
|
|
|
151
169
|
const hashes = new Set();
|
|
152
170
|
// Add assets to copy.
|
|
153
171
|
filteredAssets.forEach((asset)=>{
|
|
154
|
-
const assetId = "fileSystemLocation" in asset ? _path.default.relative(projectRoot, _path.default.join(asset.fileSystemLocation, asset.name)) + (asset.type ? "." + asset.type : "") : undefined;
|
|
172
|
+
const assetId = "fileSystemLocation" in asset ? _path().default.relative(projectRoot, _path().default.join(asset.fileSystemLocation, asset.name)) + (asset.type ? "." + asset.type : "") : undefined;
|
|
155
173
|
asset.files.forEach((fp, index)=>{
|
|
156
174
|
const hash = asset.fileHashes[index];
|
|
157
175
|
if (hashes.has(hash)) return;
|
|
158
176
|
hashes.add(hash);
|
|
159
|
-
files.set(_path.default.join("assets", hash), {
|
|
160
|
-
originFilename: _path.default.relative(projectRoot, fp),
|
|
161
|
-
contents: _fs.default.readFileSync(fp),
|
|
177
|
+
files.set(_path().default.join("assets", hash), {
|
|
178
|
+
originFilename: _path().default.relative(projectRoot, fp),
|
|
179
|
+
contents: _fs().default.readFileSync(fp),
|
|
162
180
|
assetId
|
|
163
181
|
});
|
|
164
182
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportAssets.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport fs from 'fs';\nimport minimatch from 'minimatch';\nimport path from 'path';\n\nimport { BundleOutput } from './fork-bundleAsync';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { Asset, ExportAssetMap } from './saveAssets';\nimport * as Log from '../log';\nimport { resolveGoogleServicesFile } from '../start/server/middleware/resolveAssets';\nimport { uniqBy } from '../utils/array';\n\nconst debug = require('debug')('expo:export:exportAssets') as typeof console.log;\n\nfunction mapAssetHashToAssetString(asset: Asset, hash: string) {\n return 'asset_' + hash + ('type' in asset && asset.type ? '.' + asset.type : '');\n}\n\nexport function assetPatternsToBeBundled(\n exp: ExpoConfig & { extra?: { updates?: { assetPatternsToBeBundled?: string[] } } }\n): string[] | undefined {\n return exp?.extra?.updates?.assetPatternsToBeBundled?.length\n ? exp?.extra?.updates?.assetPatternsToBeBundled\n : undefined;\n}\n\n/**\n * Given an asset and a set of strings representing the assets to be bundled, returns true if\n * the asset is part of the set to be bundled.\n * @param asset Asset object\n * @param bundledAssetsSet Set of strings\n * @returns true if the asset should be bundled\n */\nfunction assetShouldBeIncludedInExport(asset: Asset, bundledAssetsSet: Set<string> | undefined) {\n if (!bundledAssetsSet) {\n return true;\n }\n return (\n asset.fileHashes.filter((hash) => bundledAssetsSet.has(mapAssetHashToAssetString(asset, hash)))\n .length > 0\n );\n}\n\n/**\n * Computes a set of strings representing the assets to be bundled with an export, given an array of assets,\n * and a set of patterns to match\n * @param assets The asset array\n * @param assetPatternsToBeBundled An array of strings with glob patterns to match\n * @param projectRoot The project root\n * @returns A set of asset strings\n */\nfunction setOfAssetsToBeBundled(\n assets: Asset[],\n assetPatternsToBeBundled: string[],\n projectRoot: string\n): Set<string> | undefined {\n // Convert asset patterns to a list of asset strings that match them.\n // Assets strings are formatted as `asset_<hash>.<type>` and represent\n // the name that the file will have in the app bundle. The `asset_` prefix is\n // needed because android doesn't support assets that start with numbers.\n\n const fullPatterns: string[] = assetPatternsToBeBundled.map((p: string) =>\n path.join(projectRoot, p)\n );\n\n logPatterns(fullPatterns);\n\n const allBundledAssets = assets\n .map((asset) => {\n const shouldBundle = shouldBundleAsset(asset, fullPatterns);\n if (shouldBundle) {\n debug(`${shouldBundle ? 'Include' : 'Exclude'} asset ${asset.files?.[0]}`);\n return asset.fileHashes.map((hash) => mapAssetHashToAssetString(asset, hash));\n }\n return [];\n })\n .flat();\n\n // The assets returned by the RN packager has duplicates so make sure we\n // only bundle each once.\n return new Set(allBundledAssets);\n}\n\n/**\n * Resolves the assetBundlePatterns from the manifest and returns the set of assets to bundle.\n *\n * @modifies {exp}\n */\nexport function resolveAssetPatternsToBeBundled<T extends ExpoConfig>(\n projectRoot: string,\n exp: T,\n assets: Asset[]\n): Set<string> | undefined {\n if (!assetPatternsToBeBundled(exp)) {\n return undefined;\n }\n const bundledAssets = setOfAssetsToBeBundled(\n assets,\n assetPatternsToBeBundled(exp) ?? ['**/*'],\n projectRoot\n );\n return bundledAssets;\n}\n\nfunction logPatterns(patterns: string[]) {\n // Only log the patterns in debug mode, if they aren't already defined in the app.json, then all files will be targeted.\n Log.log('\\nProcessing asset bundle patterns:');\n patterns.forEach((p) => Log.log('- ' + p));\n}\n\nfunction shouldBundleAsset(asset: Asset, patterns: string[]) {\n const file = asset.files?.[0];\n return !!(\n '__packager_asset' in asset &&\n asset.__packager_asset &&\n file &&\n patterns.some((pattern) => minimatch(file, pattern))\n );\n}\n\nexport async function exportAssetsAsync(\n projectRoot: string,\n {\n exp,\n outputDir,\n bundles: { web, ...bundles },\n baseUrl,\n files = new Map(),\n }: {\n exp: ExpoConfig;\n bundles: Partial<Record<string, BundleOutput>>;\n outputDir: string;\n baseUrl: string;\n files?: ExportAssetMap;\n }\n) {\n // NOTE: We use a different system for static web\n if (web) {\n // Save assets like a typical bundler, preserving the file paths on web.\n // TODO: Update React Native Web to support loading files from asset hashes.\n await persistMetroAssetsAsync(web.assets, {\n files,\n platform: 'web',\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n const assets: Asset[] = uniqBy(\n Object.values(bundles).flatMap((bundle) => bundle!.assets),\n (asset) => asset.hash\n );\n\n let bundledAssetsSet: Set<string> | undefined = undefined;\n let filteredAssets = assets;\n const embeddedHashSet: Set<string> = new Set();\n\n if (assets[0]?.fileHashes) {\n debug(`Assets = ${JSON.stringify(assets, null, 2)}`);\n // Updates the manifest to reflect additional asset bundling + configs\n // Get only asset strings for assets we will save\n bundledAssetsSet = resolveAssetPatternsToBeBundled(projectRoot, exp, assets);\n if (bundledAssetsSet) {\n debug(`Bundled assets = ${JSON.stringify([...bundledAssetsSet], null, 2)}`);\n // Filter asset objects to only ones that include assetPatternsToBeBundled matches\n filteredAssets = assets.filter((asset) => {\n const shouldInclude = assetShouldBeIncludedInExport(asset, bundledAssetsSet);\n if (!shouldInclude) {\n embeddedHashSet.add(asset.hash);\n }\n return shouldInclude;\n });\n debug(`Filtered assets count = ${filteredAssets.length}`);\n }\n\n const hashes = new Set<string>();\n\n // Add assets to copy.\n filteredAssets.forEach((asset) => {\n const assetId =\n 'fileSystemLocation' in asset\n ? path.relative(projectRoot, path.join(asset.fileSystemLocation, asset.name)) +\n (asset.type ? '.' + asset.type : '')\n : undefined;\n\n asset.files.forEach((fp: string, index: number) => {\n const hash = asset.fileHashes[index];\n if (hashes.has(hash)) return;\n hashes.add(hash);\n files.set(path.join('assets', hash), {\n originFilename: path.relative(projectRoot, fp),\n contents: fs.readFileSync(fp),\n assetId,\n });\n });\n });\n }\n\n // Add google services file if it exists\n await resolveGoogleServicesFile(projectRoot, exp);\n\n return { exp, assets, embeddedHashSet, files };\n}\n"],"names":["assetPatternsToBeBundled","resolveAssetPatternsToBeBundled","exportAssetsAsync","Log","debug","require","mapAssetHashToAssetString","asset","hash","type","exp","extra","updates","length","undefined","assetShouldBeIncludedInExport","bundledAssetsSet","fileHashes","filter","has","setOfAssetsToBeBundled","assets","projectRoot","fullPatterns","map","p","path","join","logPatterns","allBundledAssets","shouldBundle","shouldBundleAsset","files","flat","Set","bundledAssets","patterns","log","forEach","file","__packager_asset","some","pattern","minimatch","outputDir","bundles","web","baseUrl","Map","persistMetroAssetsAsync","platform","outputDirectory","uniqBy","Object","values","flatMap","bundle","filteredAssets","embeddedHashSet","JSON","stringify","shouldInclude","add","hashes","assetId","relative","fileSystemLocation","name","fp","index","set","originFilename","contents","fs","readFileSync","resolveGoogleServicesFile"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportAssets.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport fs from 'fs';\nimport minimatch from 'minimatch';\nimport path from 'path';\n\nimport { BundleOutput } from './fork-bundleAsync';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { Asset, ExportAssetMap } from './saveAssets';\nimport * as Log from '../log';\nimport { resolveGoogleServicesFile } from '../start/server/middleware/resolveAssets';\nimport { uniqBy } from '../utils/array';\n\nconst debug = require('debug')('expo:export:exportAssets') as typeof console.log;\n\nfunction mapAssetHashToAssetString(asset: Asset, hash: string) {\n return 'asset_' + hash + ('type' in asset && asset.type ? '.' + asset.type : '');\n}\n\nexport function assetPatternsToBeBundled(\n exp: ExpoConfig & { extra?: { updates?: { assetPatternsToBeBundled?: string[] } } }\n): string[] | undefined {\n return exp?.extra?.updates?.assetPatternsToBeBundled?.length\n ? exp?.extra?.updates?.assetPatternsToBeBundled\n : undefined;\n}\n\n/**\n * Given an asset and a set of strings representing the assets to be bundled, returns true if\n * the asset is part of the set to be bundled.\n * @param asset Asset object\n * @param bundledAssetsSet Set of strings\n * @returns true if the asset should be bundled\n */\nfunction assetShouldBeIncludedInExport(asset: Asset, bundledAssetsSet: Set<string> | undefined) {\n if (!bundledAssetsSet) {\n return true;\n }\n return (\n asset.fileHashes.filter((hash) => bundledAssetsSet.has(mapAssetHashToAssetString(asset, hash)))\n .length > 0\n );\n}\n\n/**\n * Computes a set of strings representing the assets to be bundled with an export, given an array of assets,\n * and a set of patterns to match\n * @param assets The asset array\n * @param assetPatternsToBeBundled An array of strings with glob patterns to match\n * @param projectRoot The project root\n * @returns A set of asset strings\n */\nfunction setOfAssetsToBeBundled(\n assets: Asset[],\n assetPatternsToBeBundled: string[],\n projectRoot: string\n): Set<string> | undefined {\n // Convert asset patterns to a list of asset strings that match them.\n // Assets strings are formatted as `asset_<hash>.<type>` and represent\n // the name that the file will have in the app bundle. The `asset_` prefix is\n // needed because android doesn't support assets that start with numbers.\n\n const fullPatterns: string[] = assetPatternsToBeBundled.map((p: string) =>\n path.join(projectRoot, p)\n );\n\n logPatterns(fullPatterns);\n\n const allBundledAssets = assets\n .map((asset) => {\n const shouldBundle = shouldBundleAsset(asset, fullPatterns);\n if (shouldBundle) {\n debug(`${shouldBundle ? 'Include' : 'Exclude'} asset ${asset.files?.[0]}`);\n return asset.fileHashes.map((hash) => mapAssetHashToAssetString(asset, hash));\n }\n return [];\n })\n .flat();\n\n // The assets returned by the RN packager has duplicates so make sure we\n // only bundle each once.\n return new Set(allBundledAssets);\n}\n\n/**\n * Resolves the assetBundlePatterns from the manifest and returns the set of assets to bundle.\n *\n * @modifies {exp}\n */\nexport function resolveAssetPatternsToBeBundled<T extends ExpoConfig>(\n projectRoot: string,\n exp: T,\n assets: Asset[]\n): Set<string> | undefined {\n if (!assetPatternsToBeBundled(exp)) {\n return undefined;\n }\n const bundledAssets = setOfAssetsToBeBundled(\n assets,\n assetPatternsToBeBundled(exp) ?? ['**/*'],\n projectRoot\n );\n return bundledAssets;\n}\n\nfunction logPatterns(patterns: string[]) {\n // Only log the patterns in debug mode, if they aren't already defined in the app.json, then all files will be targeted.\n Log.log('\\nProcessing asset bundle patterns:');\n patterns.forEach((p) => Log.log('- ' + p));\n}\n\nfunction shouldBundleAsset(asset: Asset, patterns: string[]) {\n const file = asset.files?.[0];\n return !!(\n '__packager_asset' in asset &&\n asset.__packager_asset &&\n file &&\n patterns.some((pattern) => minimatch(file, pattern))\n );\n}\n\nexport async function exportAssetsAsync(\n projectRoot: string,\n {\n exp,\n outputDir,\n bundles: { web, ...bundles },\n baseUrl,\n files = new Map(),\n }: {\n exp: ExpoConfig;\n bundles: Partial<Record<string, BundleOutput>>;\n outputDir: string;\n baseUrl: string;\n files?: ExportAssetMap;\n }\n) {\n // NOTE: We use a different system for static web\n if (web) {\n // Save assets like a typical bundler, preserving the file paths on web.\n // TODO: Update React Native Web to support loading files from asset hashes.\n await persistMetroAssetsAsync(web.assets, {\n files,\n platform: 'web',\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n const assets: Asset[] = uniqBy(\n Object.values(bundles).flatMap((bundle) => bundle!.assets),\n (asset) => asset.hash\n );\n\n let bundledAssetsSet: Set<string> | undefined = undefined;\n let filteredAssets = assets;\n const embeddedHashSet: Set<string> = new Set();\n\n if (assets[0]?.fileHashes) {\n debug(`Assets = ${JSON.stringify(assets, null, 2)}`);\n // Updates the manifest to reflect additional asset bundling + configs\n // Get only asset strings for assets we will save\n bundledAssetsSet = resolveAssetPatternsToBeBundled(projectRoot, exp, assets);\n if (bundledAssetsSet) {\n debug(`Bundled assets = ${JSON.stringify([...bundledAssetsSet], null, 2)}`);\n // Filter asset objects to only ones that include assetPatternsToBeBundled matches\n filteredAssets = assets.filter((asset) => {\n const shouldInclude = assetShouldBeIncludedInExport(asset, bundledAssetsSet);\n if (!shouldInclude) {\n embeddedHashSet.add(asset.hash);\n }\n return shouldInclude;\n });\n debug(`Filtered assets count = ${filteredAssets.length}`);\n }\n\n const hashes = new Set<string>();\n\n // Add assets to copy.\n filteredAssets.forEach((asset) => {\n const assetId =\n 'fileSystemLocation' in asset\n ? path.relative(projectRoot, path.join(asset.fileSystemLocation, asset.name)) +\n (asset.type ? '.' + asset.type : '')\n : undefined;\n\n asset.files.forEach((fp: string, index: number) => {\n const hash = asset.fileHashes[index];\n if (hashes.has(hash)) return;\n hashes.add(hash);\n files.set(path.join('assets', hash), {\n originFilename: path.relative(projectRoot, fp),\n contents: fs.readFileSync(fp),\n assetId,\n });\n });\n });\n }\n\n // Add google services file if it exists\n await resolveGoogleServicesFile(projectRoot, exp);\n\n return { exp, assets, embeddedHashSet, files };\n}\n"],"names":["assetPatternsToBeBundled","resolveAssetPatternsToBeBundled","exportAssetsAsync","Log","debug","require","mapAssetHashToAssetString","asset","hash","type","exp","extra","updates","length","undefined","assetShouldBeIncludedInExport","bundledAssetsSet","fileHashes","filter","has","setOfAssetsToBeBundled","assets","projectRoot","fullPatterns","map","p","path","join","logPatterns","allBundledAssets","shouldBundle","shouldBundleAsset","files","flat","Set","bundledAssets","patterns","log","forEach","file","__packager_asset","some","pattern","minimatch","outputDir","bundles","web","baseUrl","Map","persistMetroAssetsAsync","platform","outputDirectory","uniqBy","Object","values","flatMap","bundle","filteredAssets","embeddedHashSet","JSON","stringify","shouldInclude","add","hashes","assetId","relative","fileSystemLocation","name","fp","index","set","originFilename","contents","fs","readFileSync","resolveGoogleServicesFile"],"mappings":"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"}
|
|
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.exportAsync = exportAsync;
|
|
6
|
-
|
|
6
|
+
function _path() {
|
|
7
|
+
const data = _interopRequireDefault(require("path"));
|
|
8
|
+
_path = function() {
|
|
9
|
+
return data;
|
|
10
|
+
};
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
7
13
|
var _exportApp = require("./exportApp");
|
|
8
14
|
var Log = _interopRequireWildcard(require("../log"));
|
|
9
15
|
var _fileNotifier = require("../utils/FileNotifier");
|
|
@@ -36,7 +42,7 @@ function _interopRequireWildcard(obj) {
|
|
|
36
42
|
}
|
|
37
43
|
async function exportAsync(projectRoot, options) {
|
|
38
44
|
// Ensure the output directory is created
|
|
39
|
-
const outputPath = _path.default.resolve(projectRoot, options.outputDir);
|
|
45
|
+
const outputPath = _path().default.resolve(projectRoot, options.outputDir);
|
|
40
46
|
// Delete the output directory if it exists
|
|
41
47
|
await (0, _dir).removeAsync(outputPath);
|
|
42
48
|
// Create the output directory
|
|
@@ -47,6 +53,8 @@ async function exportAsync(projectRoot, options) {
|
|
|
47
53
|
_fileNotifier.FileNotifier.stopAll();
|
|
48
54
|
// Final notes
|
|
49
55
|
Log.log(`App exported to: ${options.outputDir}`);
|
|
56
|
+
// Force exit because various threading and analytics processes could be hanging, this command needs to run as fast as possible.
|
|
57
|
+
process.exit(0);
|
|
50
58
|
}
|
|
51
59
|
|
|
52
60
|
//# sourceMappingURL=exportAsync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { exportAppAsync } from './exportApp';\nimport { Options } from './resolveOptions';\nimport * as Log from '../log';\nimport { FileNotifier } from '../utils/FileNotifier';\nimport { ensureDirectoryAsync, removeAsync } from '../utils/dir';\n\nexport async function exportAsync(projectRoot: string, options: Options) {\n // Ensure the output directory is created\n const outputPath = path.resolve(projectRoot, options.outputDir);\n // Delete the output directory if it exists\n await removeAsync(outputPath);\n // Create the output directory\n await ensureDirectoryAsync(outputPath);\n\n // Export the app\n await exportAppAsync(projectRoot, options);\n\n // Stop any file watchers to prevent the CLI from hanging.\n FileNotifier.stopAll();\n\n // Final notes\n Log.log(`App exported to: ${options.outputDir}`);\n}\n"],"names":["exportAsync","Log","projectRoot","options","outputPath","path","resolve","outputDir","removeAsync","ensureDirectoryAsync","exportAppAsync","FileNotifier","stopAll","log"],"mappings":"AAAA;;;;QAQsBA,WAAW,GAAXA,WAAW;
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { exportAppAsync } from './exportApp';\nimport { Options } from './resolveOptions';\nimport * as Log from '../log';\nimport { FileNotifier } from '../utils/FileNotifier';\nimport { ensureDirectoryAsync, removeAsync } from '../utils/dir';\n\nexport async function exportAsync(projectRoot: string, options: Options) {\n // Ensure the output directory is created\n const outputPath = path.resolve(projectRoot, options.outputDir);\n // Delete the output directory if it exists\n await removeAsync(outputPath);\n // Create the output directory\n await ensureDirectoryAsync(outputPath);\n\n // Export the app\n await exportAppAsync(projectRoot, options);\n\n // Stop any file watchers to prevent the CLI from hanging.\n FileNotifier.stopAll();\n\n // Final notes\n Log.log(`App exported to: ${options.outputDir}`);\n\n // Force exit because various threading and analytics processes could be hanging, this command needs to run as fast as possible.\n process.exit(0);\n}\n"],"names":["exportAsync","Log","projectRoot","options","outputPath","path","resolve","outputDir","removeAsync","ensureDirectoryAsync","exportAppAsync","FileNotifier","stopAll","log","process","exit"],"mappings":"AAAA;;;;QAQsBA,WAAW,GAAXA,WAAW;SARhB,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEQ,IAAA,UAAa,WAAb,aAAa,CAAA;AAEhCC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACc,IAAA,aAAuB,WAAvB,uBAAuB,CAAA;AACF,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzD,eAAeD,WAAW,CAACE,WAAmB,EAAEC,OAAgB,EAAE;IACvE,yCAAyC;IACzC,MAAMC,UAAU,GAAGC,KAAI,UAAA,CAACC,OAAO,CAACJ,WAAW,EAAEC,OAAO,CAACI,SAAS,CAAC,AAAC;IAChE,2CAA2C;IAC3C,MAAMC,CAAAA,GAAAA,IAAW,AAAY,CAAA,YAAZ,CAACJ,UAAU,CAAC,CAAC;IAC9B,8BAA8B;IAC9B,MAAMK,CAAAA,GAAAA,IAAoB,AAAY,CAAA,qBAAZ,CAACL,UAAU,CAAC,CAAC;IAEvC,iBAAiB;IACjB,MAAMM,CAAAA,GAAAA,UAAc,AAAsB,CAAA,eAAtB,CAACR,WAAW,EAAEC,OAAO,CAAC,CAAC;IAE3C,0DAA0D;IAC1DQ,aAAY,aAAA,CAACC,OAAO,EAAE,CAAC;IAEvB,cAAc;IACdX,GAAG,CAACY,GAAG,CAAC,CAAC,iBAAiB,EAAEV,OAAO,CAACI,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjD,gIAAgI;IAChIO,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB"}
|
|
@@ -9,8 +9,20 @@ exports.maybeInconsistentEngineAndroidAsync = maybeInconsistentEngineAndroidAsyn
|
|
|
9
9
|
exports.maybeInconsistentEngineIosAsync = maybeInconsistentEngineIosAsync;
|
|
10
10
|
exports.isHermesBytecodeBundleAsync = isHermesBytecodeBundleAsync;
|
|
11
11
|
exports.getHermesBytecodeBundleVersionAsync = getHermesBytecodeBundleVersionAsync;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
function _fsExtra() {
|
|
13
|
+
const data = _interopRequireDefault(require("fs-extra"));
|
|
14
|
+
_fsExtra = function() {
|
|
15
|
+
return data;
|
|
16
|
+
};
|
|
17
|
+
return data;
|
|
18
|
+
}
|
|
19
|
+
function _path() {
|
|
20
|
+
const data = _interopRequireDefault(require("path"));
|
|
21
|
+
_path = function() {
|
|
22
|
+
return data;
|
|
23
|
+
};
|
|
24
|
+
return data;
|
|
25
|
+
}
|
|
14
26
|
function _interopRequireDefault(obj) {
|
|
15
27
|
return obj && obj.__esModule ? obj : {
|
|
16
28
|
default: obj
|
|
@@ -49,20 +61,20 @@ function parseGradleProperties(content) {
|
|
|
49
61
|
return result;
|
|
50
62
|
}
|
|
51
63
|
async function maybeThrowFromInconsistentEngineAsync(projectRoot, configFilePath, platform, isHermesManaged) {
|
|
52
|
-
const configFileName = _path.default.basename(configFilePath);
|
|
64
|
+
const configFileName = _path().default.basename(configFilePath);
|
|
53
65
|
if (platform === "android" && await maybeInconsistentEngineAndroidAsync(projectRoot, isHermesManaged)) {
|
|
54
|
-
throw new Error(`JavaScript engine configuration is inconsistent between ${configFileName} and Android native project.\n` + `In ${configFileName}: Hermes is ${isHermesManaged ? "enabled" : "not enabled"}\n` + `In Android native project: Hermes is ${isHermesManaged ? "not enabled" : "enabled"}\n` + `Please check the following files for inconsistencies:\n` + ` - ${configFilePath}\n` + ` - ${_path.default.join(projectRoot, "android", "gradle.properties")}\n` + ` - ${_path.default.join(projectRoot, "android", "app", "build.gradle")}\n` + "Learn more: https://expo.fyi/hermes-android-config");
|
|
66
|
+
throw new Error(`JavaScript engine configuration is inconsistent between ${configFileName} and Android native project.\n` + `In ${configFileName}: Hermes is ${isHermesManaged ? "enabled" : "not enabled"}\n` + `In Android native project: Hermes is ${isHermesManaged ? "not enabled" : "enabled"}\n` + `Please check the following files for inconsistencies:\n` + ` - ${configFilePath}\n` + ` - ${_path().default.join(projectRoot, "android", "gradle.properties")}\n` + ` - ${_path().default.join(projectRoot, "android", "app", "build.gradle")}\n` + "Learn more: https://expo.fyi/hermes-android-config");
|
|
55
67
|
}
|
|
56
68
|
if (platform === "ios" && await maybeInconsistentEngineIosAsync(projectRoot, isHermesManaged)) {
|
|
57
|
-
throw new Error(`JavaScript engine configuration is inconsistent between ${configFileName} and iOS native project.\n` + `In ${configFileName}: Hermes is ${isHermesManaged ? "enabled" : "not enabled"}\n` + `In iOS native project: Hermes is ${isHermesManaged ? "not enabled" : "enabled"}\n` + `Please check the following files for inconsistencies:\n` + ` - ${configFilePath}\n` + ` - ${_path.default.join(projectRoot, "ios", "Podfile")}\n` + ` - ${_path.default.join(projectRoot, "ios", "Podfile.properties.json")}\n` + "Learn more: https://expo.fyi/hermes-ios-config");
|
|
69
|
+
throw new Error(`JavaScript engine configuration is inconsistent between ${configFileName} and iOS native project.\n` + `In ${configFileName}: Hermes is ${isHermesManaged ? "enabled" : "not enabled"}\n` + `In iOS native project: Hermes is ${isHermesManaged ? "not enabled" : "enabled"}\n` + `Please check the following files for inconsistencies:\n` + ` - ${configFilePath}\n` + ` - ${_path().default.join(projectRoot, "ios", "Podfile")}\n` + ` - ${_path().default.join(projectRoot, "ios", "Podfile.properties.json")}\n` + "Learn more: https://expo.fyi/hermes-ios-config");
|
|
58
70
|
}
|
|
59
71
|
}
|
|
60
72
|
async function maybeInconsistentEngineAndroidAsync(projectRoot, isHermesManaged) {
|
|
61
73
|
// Trying best to check android native project if by chance to be consistent between app config
|
|
62
74
|
// Check gradle.properties from prebuild template
|
|
63
|
-
const gradlePropertiesPath = _path.default.join(projectRoot, "android", "gradle.properties");
|
|
64
|
-
if (_fsExtra.default.existsSync(gradlePropertiesPath)) {
|
|
65
|
-
const props = parseGradleProperties(await _fsExtra.default.readFile(gradlePropertiesPath, "utf8"));
|
|
75
|
+
const gradlePropertiesPath = _path().default.join(projectRoot, "android", "gradle.properties");
|
|
76
|
+
if (_fsExtra().default.existsSync(gradlePropertiesPath)) {
|
|
77
|
+
const props = parseGradleProperties(await _fsExtra().default.readFile(gradlePropertiesPath, "utf8"));
|
|
66
78
|
const isHermesBare = props["hermesEnabled"] === "true";
|
|
67
79
|
if (isHermesManaged !== isHermesBare) {
|
|
68
80
|
return true;
|
|
@@ -73,9 +85,9 @@ async function maybeInconsistentEngineAndroidAsync(projectRoot, isHermesManaged)
|
|
|
73
85
|
async function maybeInconsistentEngineIosAsync(projectRoot, isHermesManaged) {
|
|
74
86
|
// Trying best to check ios native project if by chance to be consistent between app config
|
|
75
87
|
// Check ios/Podfile for ":hermes_enabled => true"
|
|
76
|
-
const podfilePath = _path.default.join(projectRoot, "ios", "Podfile");
|
|
77
|
-
if (_fsExtra.default.existsSync(podfilePath)) {
|
|
78
|
-
const content = await _fsExtra.default.readFile(podfilePath, "utf8");
|
|
88
|
+
const podfilePath = _path().default.join(projectRoot, "ios", "Podfile");
|
|
89
|
+
if (_fsExtra().default.existsSync(podfilePath)) {
|
|
90
|
+
const content = await _fsExtra().default.readFile(podfilePath, "utf8");
|
|
79
91
|
const isPropsReference = content.search(/^\s*:hermes_enabled\s*=>\s*podfile_properties\['expo.jsEngine'\]\s*==\s*nil\s*\|\|\s*podfile_properties\['expo.jsEngine'\]\s*==\s*'hermes',?/m) >= 0;
|
|
80
92
|
const isHermesBare = content.search(/^\s*:hermes_enabled\s*=>\s*true,?\s+/m) >= 0;
|
|
81
93
|
if (!isPropsReference && isHermesManaged !== isHermesBare) {
|
|
@@ -83,8 +95,8 @@ async function maybeInconsistentEngineIosAsync(projectRoot, isHermesManaged) {
|
|
|
83
95
|
}
|
|
84
96
|
}
|
|
85
97
|
// Check Podfile.properties.json from prebuild template
|
|
86
|
-
const podfilePropertiesPath = _path.default.join(projectRoot, "ios", "Podfile.properties.json");
|
|
87
|
-
if (_fsExtra.default.existsSync(podfilePropertiesPath)) {
|
|
98
|
+
const podfilePropertiesPath = _path().default.join(projectRoot, "ios", "Podfile.properties.json");
|
|
99
|
+
if (_fsExtra().default.existsSync(podfilePropertiesPath)) {
|
|
88
100
|
const props = await parsePodfilePropertiesAsync(podfilePropertiesPath);
|
|
89
101
|
const isHermesBare = props["expo.jsEngine"] === "hermes";
|
|
90
102
|
if (isHermesManaged !== isHermesBare) {
|
|
@@ -107,15 +119,15 @@ async function getHermesBytecodeBundleVersionAsync(file) {
|
|
|
107
119
|
return header.readUInt32LE(8);
|
|
108
120
|
}
|
|
109
121
|
async function readHermesHeaderAsync(file) {
|
|
110
|
-
const fd = await _fsExtra.default.open(file, "r");
|
|
122
|
+
const fd = await _fsExtra().default.open(file, "r");
|
|
111
123
|
const buffer = Buffer.alloc(12);
|
|
112
|
-
await _fsExtra.default.read(fd, buffer, 0, 12, null);
|
|
113
|
-
await _fsExtra.default.close(fd);
|
|
124
|
+
await _fsExtra().default.read(fd, buffer, 0, 12, null);
|
|
125
|
+
await _fsExtra().default.close(fd);
|
|
114
126
|
return buffer;
|
|
115
127
|
}
|
|
116
128
|
async function parsePodfilePropertiesAsync(podfilePropertiesPath) {
|
|
117
129
|
try {
|
|
118
|
-
return JSON.parse(await _fsExtra.default.readFile(podfilePropertiesPath, "utf8"));
|
|
130
|
+
return JSON.parse(await _fsExtra().default.readFile(podfilePropertiesPath, "utf8"));
|
|
119
131
|
} catch {
|
|
120
132
|
return {};
|
|
121
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportHermes.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nexport function isEnableHermesManaged(\n expoConfig: Partial<Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>>,\n platform: string\n): boolean {\n switch (platform) {\n case 'android': {\n return (expoConfig.android?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n case 'ios': {\n return (expoConfig.ios?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n default:\n return false;\n }\n}\n\nexport function parseGradleProperties(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (let line of content.split('\\n')) {\n line = line.trim();\n if (!line || line.startsWith('#')) {\n continue;\n }\n\n const sepIndex = line.indexOf('=');\n const key = line.substr(0, sepIndex);\n const value = line.substr(sepIndex + 1);\n result[key] = value;\n }\n return result;\n}\n\nexport async function maybeThrowFromInconsistentEngineAsync(\n projectRoot: string,\n configFilePath: string,\n platform: string,\n isHermesManaged: boolean\n): Promise<void> {\n const configFileName = path.basename(configFilePath);\n if (\n platform === 'android' &&\n (await maybeInconsistentEngineAndroidAsync(projectRoot, isHermesManaged))\n ) {\n throw new Error(\n `JavaScript engine configuration is inconsistent between ${configFileName} and Android native project.\\n` +\n `In ${configFileName}: Hermes is ${isHermesManaged ? 'enabled' : 'not enabled'}\\n` +\n `In Android native project: Hermes is ${isHermesManaged ? 'not enabled' : 'enabled'}\\n` +\n `Please check the following files for inconsistencies:\\n` +\n ` - ${configFilePath}\\n` +\n ` - ${path.join(projectRoot, 'android', 'gradle.properties')}\\n` +\n ` - ${path.join(projectRoot, 'android', 'app', 'build.gradle')}\\n` +\n 'Learn more: https://expo.fyi/hermes-android-config'\n );\n }\n\n if (platform === 'ios' && (await maybeInconsistentEngineIosAsync(projectRoot, isHermesManaged))) {\n throw new Error(\n `JavaScript engine configuration is inconsistent between ${configFileName} and iOS native project.\\n` +\n `In ${configFileName}: Hermes is ${isHermesManaged ? 'enabled' : 'not enabled'}\\n` +\n `In iOS native project: Hermes is ${isHermesManaged ? 'not enabled' : 'enabled'}\\n` +\n `Please check the following files for inconsistencies:\\n` +\n ` - ${configFilePath}\\n` +\n ` - ${path.join(projectRoot, 'ios', 'Podfile')}\\n` +\n ` - ${path.join(projectRoot, 'ios', 'Podfile.properties.json')}\\n` +\n 'Learn more: https://expo.fyi/hermes-ios-config'\n );\n }\n}\n\nexport async function maybeInconsistentEngineAndroidAsync(\n projectRoot: string,\n isHermesManaged: boolean\n): Promise<boolean> {\n // Trying best to check android native project if by chance to be consistent between app config\n\n // Check gradle.properties from prebuild template\n const gradlePropertiesPath = path.join(projectRoot, 'android', 'gradle.properties');\n if (fs.existsSync(gradlePropertiesPath)) {\n const props = parseGradleProperties(await fs.readFile(gradlePropertiesPath, 'utf8'));\n const isHermesBare = props['hermesEnabled'] === 'true';\n if (isHermesManaged !== isHermesBare) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function maybeInconsistentEngineIosAsync(\n projectRoot: string,\n isHermesManaged: boolean\n): Promise<boolean> {\n // Trying best to check ios native project if by chance to be consistent between app config\n\n // Check ios/Podfile for \":hermes_enabled => true\"\n const podfilePath = path.join(projectRoot, 'ios', 'Podfile');\n if (fs.existsSync(podfilePath)) {\n const content = await fs.readFile(podfilePath, 'utf8');\n const isPropsReference =\n content.search(\n /^\\s*:hermes_enabled\\s*=>\\s*podfile_properties\\['expo.jsEngine'\\]\\s*==\\s*nil\\s*\\|\\|\\s*podfile_properties\\['expo.jsEngine'\\]\\s*==\\s*'hermes',?/m\n ) >= 0;\n const isHermesBare = content.search(/^\\s*:hermes_enabled\\s*=>\\s*true,?\\s+/m) >= 0;\n if (!isPropsReference && isHermesManaged !== isHermesBare) {\n return true;\n }\n }\n\n // Check Podfile.properties.json from prebuild template\n const podfilePropertiesPath = path.join(projectRoot, 'ios', 'Podfile.properties.json');\n if (fs.existsSync(podfilePropertiesPath)) {\n const props = await parsePodfilePropertiesAsync(podfilePropertiesPath);\n const isHermesBare = props['expo.jsEngine'] === 'hermes';\n if (isHermesManaged !== isHermesBare) {\n return true;\n }\n }\n\n return false;\n}\n\n// https://github.com/facebook/hermes/blob/release-v0.5/include/hermes/BCGen/HBC/BytecodeFileFormat.h#L24-L25\nconst HERMES_MAGIC_HEADER = 'c61fbc03c103191f';\n\nexport async function isHermesBytecodeBundleAsync(file: string): Promise<boolean> {\n const header = await readHermesHeaderAsync(file);\n return header.slice(0, 8).toString('hex') === HERMES_MAGIC_HEADER;\n}\n\nexport async function getHermesBytecodeBundleVersionAsync(file: string): Promise<number> {\n const header = await readHermesHeaderAsync(file);\n if (header.slice(0, 8).toString('hex') !== HERMES_MAGIC_HEADER) {\n throw new Error('Invalid hermes bundle file');\n }\n return header.readUInt32LE(8);\n}\n\nasync function readHermesHeaderAsync(file: string): Promise<Buffer> {\n const fd = await fs.open(file, 'r');\n const buffer = Buffer.alloc(12);\n await fs.read(fd, buffer, 0, 12, null);\n await fs.close(fd);\n return buffer;\n}\n\nasync function parsePodfilePropertiesAsync(\n podfilePropertiesPath: string\n): Promise<Record<string, string>> {\n try {\n return JSON.parse(await fs.readFile(podfilePropertiesPath, 'utf8'));\n } catch {\n return {};\n }\n}\n"],"names":["isEnableHermesManaged","parseGradleProperties","maybeThrowFromInconsistentEngineAsync","maybeInconsistentEngineAndroidAsync","maybeInconsistentEngineIosAsync","isHermesBytecodeBundleAsync","getHermesBytecodeBundleVersionAsync","expoConfig","platform","android","jsEngine","ios","content","result","line","split","trim","startsWith","sepIndex","indexOf","key","substr","value","projectRoot","configFilePath","isHermesManaged","configFileName","path","basename","Error","join","gradlePropertiesPath","fs","existsSync","props","readFile","isHermesBare","podfilePath","isPropsReference","search","podfilePropertiesPath","parsePodfilePropertiesAsync","HERMES_MAGIC_HEADER","file","header","readHermesHeaderAsync","slice","toString","readUInt32LE","fd","open","buffer","Buffer","alloc","read","close","JSON","parse"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportHermes.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nexport function isEnableHermesManaged(\n expoConfig: Partial<Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>>,\n platform: string\n): boolean {\n switch (platform) {\n case 'android': {\n return (expoConfig.android?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n case 'ios': {\n return (expoConfig.ios?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n default:\n return false;\n }\n}\n\nexport function parseGradleProperties(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (let line of content.split('\\n')) {\n line = line.trim();\n if (!line || line.startsWith('#')) {\n continue;\n }\n\n const sepIndex = line.indexOf('=');\n const key = line.substr(0, sepIndex);\n const value = line.substr(sepIndex + 1);\n result[key] = value;\n }\n return result;\n}\n\nexport async function maybeThrowFromInconsistentEngineAsync(\n projectRoot: string,\n configFilePath: string,\n platform: string,\n isHermesManaged: boolean\n): Promise<void> {\n const configFileName = path.basename(configFilePath);\n if (\n platform === 'android' &&\n (await maybeInconsistentEngineAndroidAsync(projectRoot, isHermesManaged))\n ) {\n throw new Error(\n `JavaScript engine configuration is inconsistent between ${configFileName} and Android native project.\\n` +\n `In ${configFileName}: Hermes is ${isHermesManaged ? 'enabled' : 'not enabled'}\\n` +\n `In Android native project: Hermes is ${isHermesManaged ? 'not enabled' : 'enabled'}\\n` +\n `Please check the following files for inconsistencies:\\n` +\n ` - ${configFilePath}\\n` +\n ` - ${path.join(projectRoot, 'android', 'gradle.properties')}\\n` +\n ` - ${path.join(projectRoot, 'android', 'app', 'build.gradle')}\\n` +\n 'Learn more: https://expo.fyi/hermes-android-config'\n );\n }\n\n if (platform === 'ios' && (await maybeInconsistentEngineIosAsync(projectRoot, isHermesManaged))) {\n throw new Error(\n `JavaScript engine configuration is inconsistent between ${configFileName} and iOS native project.\\n` +\n `In ${configFileName}: Hermes is ${isHermesManaged ? 'enabled' : 'not enabled'}\\n` +\n `In iOS native project: Hermes is ${isHermesManaged ? 'not enabled' : 'enabled'}\\n` +\n `Please check the following files for inconsistencies:\\n` +\n ` - ${configFilePath}\\n` +\n ` - ${path.join(projectRoot, 'ios', 'Podfile')}\\n` +\n ` - ${path.join(projectRoot, 'ios', 'Podfile.properties.json')}\\n` +\n 'Learn more: https://expo.fyi/hermes-ios-config'\n );\n }\n}\n\nexport async function maybeInconsistentEngineAndroidAsync(\n projectRoot: string,\n isHermesManaged: boolean\n): Promise<boolean> {\n // Trying best to check android native project if by chance to be consistent between app config\n\n // Check gradle.properties from prebuild template\n const gradlePropertiesPath = path.join(projectRoot, 'android', 'gradle.properties');\n if (fs.existsSync(gradlePropertiesPath)) {\n const props = parseGradleProperties(await fs.readFile(gradlePropertiesPath, 'utf8'));\n const isHermesBare = props['hermesEnabled'] === 'true';\n if (isHermesManaged !== isHermesBare) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function maybeInconsistentEngineIosAsync(\n projectRoot: string,\n isHermesManaged: boolean\n): Promise<boolean> {\n // Trying best to check ios native project if by chance to be consistent between app config\n\n // Check ios/Podfile for \":hermes_enabled => true\"\n const podfilePath = path.join(projectRoot, 'ios', 'Podfile');\n if (fs.existsSync(podfilePath)) {\n const content = await fs.readFile(podfilePath, 'utf8');\n const isPropsReference =\n content.search(\n /^\\s*:hermes_enabled\\s*=>\\s*podfile_properties\\['expo.jsEngine'\\]\\s*==\\s*nil\\s*\\|\\|\\s*podfile_properties\\['expo.jsEngine'\\]\\s*==\\s*'hermes',?/m\n ) >= 0;\n const isHermesBare = content.search(/^\\s*:hermes_enabled\\s*=>\\s*true,?\\s+/m) >= 0;\n if (!isPropsReference && isHermesManaged !== isHermesBare) {\n return true;\n }\n }\n\n // Check Podfile.properties.json from prebuild template\n const podfilePropertiesPath = path.join(projectRoot, 'ios', 'Podfile.properties.json');\n if (fs.existsSync(podfilePropertiesPath)) {\n const props = await parsePodfilePropertiesAsync(podfilePropertiesPath);\n const isHermesBare = props['expo.jsEngine'] === 'hermes';\n if (isHermesManaged !== isHermesBare) {\n return true;\n }\n }\n\n return false;\n}\n\n// https://github.com/facebook/hermes/blob/release-v0.5/include/hermes/BCGen/HBC/BytecodeFileFormat.h#L24-L25\nconst HERMES_MAGIC_HEADER = 'c61fbc03c103191f';\n\nexport async function isHermesBytecodeBundleAsync(file: string): Promise<boolean> {\n const header = await readHermesHeaderAsync(file);\n return header.slice(0, 8).toString('hex') === HERMES_MAGIC_HEADER;\n}\n\nexport async function getHermesBytecodeBundleVersionAsync(file: string): Promise<number> {\n const header = await readHermesHeaderAsync(file);\n if (header.slice(0, 8).toString('hex') !== HERMES_MAGIC_HEADER) {\n throw new Error('Invalid hermes bundle file');\n }\n return header.readUInt32LE(8);\n}\n\nasync function readHermesHeaderAsync(file: string): Promise<Buffer> {\n const fd = await fs.open(file, 'r');\n const buffer = Buffer.alloc(12);\n await fs.read(fd, buffer, 0, 12, null);\n await fs.close(fd);\n return buffer;\n}\n\nasync function parsePodfilePropertiesAsync(\n podfilePropertiesPath: string\n): Promise<Record<string, string>> {\n try {\n return JSON.parse(await fs.readFile(podfilePropertiesPath, 'utf8'));\n } catch {\n return {};\n }\n}\n"],"names":["isEnableHermesManaged","parseGradleProperties","maybeThrowFromInconsistentEngineAsync","maybeInconsistentEngineAndroidAsync","maybeInconsistentEngineIosAsync","isHermesBytecodeBundleAsync","getHermesBytecodeBundleVersionAsync","expoConfig","platform","android","jsEngine","ios","content","result","line","split","trim","startsWith","sepIndex","indexOf","key","substr","value","projectRoot","configFilePath","isHermesManaged","configFileName","path","basename","Error","join","gradlePropertiesPath","fs","existsSync","props","readFile","isHermesBare","podfilePath","isPropsReference","search","podfilePropertiesPath","parsePodfilePropertiesAsync","HERMES_MAGIC_HEADER","file","header","readHermesHeaderAsync","slice","toString","readUInt32LE","fd","open","buffer","Buffer","alloc","read","close","JSON","parse"],"mappings":"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"}
|