@expo/cli 0.18.0 → 0.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +90 -114
- package/build/bin/cli.map +1 -1
- package/build/src/api/endpoint.js +11 -3
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +7 -4
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +13 -11
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +7 -4
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +7 -4
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +7 -4
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +55 -35
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +9 -7
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +7 -5
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +6 -4
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemCache.js +6 -4
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
- package/build/src/api/rest/cache/response.js +4 -1
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +21 -12
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +36 -29
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +4 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +5 -2
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +40 -19
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +7 -4
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/settings.js +9 -4
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +16 -8
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +10 -8
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +66 -41
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +46 -25
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +70 -50
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +66 -41
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +62 -43
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +46 -30
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +14 -11
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +61 -46
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +10 -8
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +7 -4
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +31 -34
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +43 -28
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +7 -6
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +51 -38
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +48 -36
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +7 -4
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +20 -8
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +84 -67
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +62 -43
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +47 -26
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +19 -11
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +49 -38
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +19 -11
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +42 -39
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +9 -6
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +7 -4
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +12 -4
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +49 -33
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +22 -6
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +38 -24
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +15 -7
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +19 -15
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +42 -38
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +15 -12
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +47 -31
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +4 -1
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +12 -7
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +141 -128
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +43 -25
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +55 -35
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +52 -35
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +15 -13
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +90 -65
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +48 -27
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +8 -5
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +15 -7
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +174 -0
- package/build/src/lint/ESlintPrerequisite.js.map +1 -0
- package/build/src/lint/index.js +66 -0
- package/build/src/lint/index.js.map +1 -0
- package/build/src/lint/lintAsync.js +33 -0
- package/build/src/lint/lintAsync.js.map +1 -0
- package/build/src/log.js +20 -14
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +43 -25
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +43 -25
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +65 -42
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +50 -29
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +19 -13
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +54 -28
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +52 -38
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +68 -51
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +15 -10
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +60 -35
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +66 -40
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +67 -44
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +70 -49
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +44 -23
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +43 -25
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +14 -11
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +47 -31
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +9 -6
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +10 -9
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +14 -12
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +6 -3
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +12 -9
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +27 -24
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +11 -8
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +15 -7
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +49 -35
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +75 -51
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +31 -24
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +66 -33
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +73 -47
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +53 -26
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +15 -6
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +54 -27
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +56 -30
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +18 -4
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +22 -13
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +57 -31
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +79 -66
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +28 -14
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +24 -11
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +26 -13
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +23 -10
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +27 -20
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +49 -28
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +61 -36
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +11 -3
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +7 -5
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +14 -8
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +50 -34
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +52 -31
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +17 -13
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +63 -39
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +57 -34
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +15 -12
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +6 -3
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +63 -42
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +8 -5
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +47 -26
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/detectDevClient.js +6 -3
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +15 -7
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +7 -4
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +44 -23
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +44 -23
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +61 -36
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +15 -12
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +49 -28
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +98 -53
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -9
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +23 -15
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +19 -13
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +63 -41
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +64 -39
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -5
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +59 -41
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +59 -36
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +57 -31
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +56 -42
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +43 -22
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +60 -38
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +85 -68
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +78 -57
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +9 -6
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +41 -20
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +55 -35
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +19 -17
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +15 -12
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +6 -4
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +70 -50
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +9 -6
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +11 -8
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +43 -22
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +73 -52
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +57 -31
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +63 -42
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +11 -10
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +18 -11
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +14 -14
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +7 -4
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +80 -54
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +7 -4
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +11 -8
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +50 -29
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +53 -29
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +18 -12
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +65 -42
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +67 -44
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +8 -5
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +19 -16
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +13 -5
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +6 -4
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +26 -19
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +66 -46
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +64 -44
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +81 -69
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +21 -16
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +49 -31
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +14 -6
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +44 -23
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +46 -34
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +135 -108
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +24 -17
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +18 -8
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +31 -20
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +76 -51
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +22 -14
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +4 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +10 -9
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +14 -13
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/getDebuggerType.js +5 -2
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +5 -2
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js +5 -2
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +7 -4
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/externals.js +21 -10
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +20 -7
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +21 -17
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +15 -7
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +57 -44
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +43 -34
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +11 -2
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +10 -2
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +5 -2
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +27 -20
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +21 -14
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +7 -7
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +12 -4
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +107 -81
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +72 -42
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +4 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +4 -1
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +13 -5
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +15 -12
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +30 -23
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +47 -21
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +8 -5
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +6 -3
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +23 -16
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +84 -60
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +14 -7
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +47 -26
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -8
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +30 -24
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +16 -8
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +4 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +16 -12
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +59 -37
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +22 -16
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +9 -6
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +11 -4
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +26 -18
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +11 -4
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +65 -41
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +14 -6
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js +4 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -1
- package/build/src/start/server/openPlatforms.js +7 -6
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +5 -2
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +62 -33
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +12 -4
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +52 -51
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +22 -19
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +18 -11
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +21 -15
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +81 -56
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +47 -26
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +35 -25
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +13 -5
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +54 -28
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +73 -52
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +46 -25
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/getDevClientProperties.js +29 -21
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js +4 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroProperties.js +4 -1
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +14 -6
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
- package/build/src/utils/ansi.js +5 -2
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +57 -29
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +16 -9
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +77 -53
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +80 -58
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +13 -5
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/delay.js +13 -6
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +24 -21
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +16 -13
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +26 -20
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +50 -24
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +35 -33
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +17 -9
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +10 -7
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/findUp.js +22 -4
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +11 -3
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +71 -45
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +52 -26
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +64 -38
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +14 -9
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +5 -2
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +5 -2
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +7 -4
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/link.js +13 -5
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +22 -17
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +56 -30
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +43 -22
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +6 -1
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +9 -6
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +32 -24
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +12 -4
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +7 -4
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +25 -21
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +53 -27
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +58 -32
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +49 -28
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +16 -12
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +33 -28
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +23 -20
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +61 -37
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/strings.js +11 -4
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +43 -22
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/DetachedClient.js +8 -5
- package/build/src/utils/telemetry/DetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/RudderClient.js +12 -9
- package/build/src/utils/telemetry/RudderClient.js.map +1 -1
- package/build/src/utils/telemetry/flushDetached.js +8 -7
- package/build/src/utils/telemetry/flushDetached.js.map +1 -1
- package/build/src/utils/telemetry/getContext.js +48 -28
- package/build/src/utils/telemetry/getContext.js.map +1 -1
- package/build/src/utils/telemetry/index.js +16 -11
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/template.js +27 -2
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +5 -2
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +18 -12
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -10
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +8 -4
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -9
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +17 -10
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +32 -25
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +15 -11
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +43 -25
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +44 -23
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +4 -4
|
@@ -2,55 +2,76 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "installExpoPackageAsync", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>installExpoPackageAsync
|
|
8
|
+
});
|
|
6
9
|
function _spawnAsync() {
|
|
7
|
-
const data = _interopRequireDefault(require("@expo/spawn-async"));
|
|
10
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("@expo/spawn-async"));
|
|
8
11
|
_spawnAsync = function() {
|
|
9
12
|
return data;
|
|
10
13
|
};
|
|
11
14
|
return data;
|
|
12
15
|
}
|
|
13
16
|
function _chalk() {
|
|
14
|
-
const data = _interopRequireDefault(require("chalk"));
|
|
17
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
15
18
|
_chalk = function() {
|
|
16
19
|
return data;
|
|
17
20
|
};
|
|
18
21
|
return data;
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
const _log = /*#__PURE__*/ _interopRequireWildcard(require("../log"));
|
|
24
|
+
const _getRunningProcess = require("../utils/getRunningProcess");
|
|
22
25
|
function _interopRequireDefault(obj) {
|
|
23
26
|
return obj && obj.__esModule ? obj : {
|
|
24
27
|
default: obj
|
|
25
28
|
};
|
|
26
29
|
}
|
|
27
|
-
function
|
|
28
|
-
if (
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
31
|
+
if (typeof WeakMap !== "function") return null;
|
|
32
|
+
var cacheBabelInterop = new WeakMap();
|
|
33
|
+
var cacheNodeInterop = new WeakMap();
|
|
34
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
35
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
36
|
+
})(nodeInterop);
|
|
37
|
+
}
|
|
38
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
39
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
29
40
|
return obj;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
}
|
|
42
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
43
|
+
return {
|
|
44
|
+
default: obj
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
48
|
+
if (cache && cache.has(obj)) {
|
|
49
|
+
return cache.get(obj);
|
|
50
|
+
}
|
|
51
|
+
var newObj = {};
|
|
52
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
53
|
+
for(var key in obj){
|
|
54
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
55
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
56
|
+
if (desc && (desc.get || desc.set)) {
|
|
57
|
+
Object.defineProperty(newObj, key, desc);
|
|
58
|
+
} else {
|
|
59
|
+
newObj[key] = obj[key];
|
|
42
60
|
}
|
|
43
61
|
}
|
|
44
|
-
newObj.default = obj;
|
|
45
|
-
return newObj;
|
|
46
62
|
}
|
|
63
|
+
newObj.default = obj;
|
|
64
|
+
if (cache) {
|
|
65
|
+
cache.set(obj, newObj);
|
|
66
|
+
}
|
|
67
|
+
return newObj;
|
|
47
68
|
}
|
|
48
69
|
async function installExpoPackageAsync(projectRoot, { packageManager , packageManagerArguments , expoPackageToInstall , followUpCommandArgs }) {
|
|
49
70
|
// Check if there's potentially a dev server running in the current folder and warn about it
|
|
50
71
|
// (not guaranteed to be Expo CLI, and the CLI isn't always running on 8081, but it's a good guess)
|
|
51
|
-
const isExpoMaybeRunningForProject = !!await (0, _getRunningProcess
|
|
72
|
+
const isExpoMaybeRunningForProject = !!await (0, _getRunningProcess.getRunningProcess)(8081);
|
|
52
73
|
if (isExpoMaybeRunningForProject) {
|
|
53
|
-
|
|
74
|
+
_log.warn("The Expo CLI appears to be running this project in another terminal window. Close and restart any Expo CLI instances after the installation to complete the update.");
|
|
54
75
|
}
|
|
55
76
|
// Safe to use current process to upgrade Expo package- doesn't affect current process
|
|
56
77
|
try {
|
|
@@ -59,10 +80,10 @@ async function installExpoPackageAsync(projectRoot, { packageManager , packageMa
|
|
|
59
80
|
expoPackageToInstall
|
|
60
81
|
]);
|
|
61
82
|
} catch (error) {
|
|
62
|
-
|
|
83
|
+
_log.error((0, _chalk().default)`Cannot install the latest Expo package. Install {bold expo@latest} with ${packageManager.name} and then run {bold npx expo install} again.`);
|
|
63
84
|
throw error;
|
|
64
85
|
}
|
|
65
|
-
|
|
86
|
+
_log.log((0, _chalk().default)`\u203A Running {bold npx expo install} under the updated expo version`);
|
|
66
87
|
let commandSegments = [
|
|
67
88
|
"expo",
|
|
68
89
|
"install",
|
|
@@ -75,10 +96,10 @@ async function installExpoPackageAsync(projectRoot, { packageManager , packageMa
|
|
|
75
96
|
...packageManagerArguments
|
|
76
97
|
];
|
|
77
98
|
}
|
|
78
|
-
|
|
99
|
+
_log.log("> " + commandSegments.join(" "));
|
|
79
100
|
// Spawn a new process to install the rest of the packages, as only then will the latest Expo package be used
|
|
80
101
|
if (followUpCommandArgs.length) {
|
|
81
|
-
await _spawnAsync().default("npx", commandSegments, {
|
|
102
|
+
await (0, _spawnAsync().default)("npx", commandSegments, {
|
|
82
103
|
stdio: "inherit",
|
|
83
104
|
cwd: projectRoot,
|
|
84
105
|
env: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/install/installExpoPackage.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { getRunningProcess } from '../utils/getRunningProcess';\n\n/**\n * Given a list of incompatible packages, installs the correct versions of the packages with the package manager used for the project.\n * This exits immediately after spawning the install command, since the command shouldn't remain running while it is being updated.\n */\nexport async function installExpoPackageAsync(\n projectRoot: string,\n {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall,\n followUpCommandArgs,\n }: {\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n expoPackageToInstall: string;\n followUpCommandArgs: string[];\n }\n) {\n // Check if there's potentially a dev server running in the current folder and warn about it\n // (not guaranteed to be Expo CLI, and the CLI isn't always running on 8081, but it's a good guess)\n const isExpoMaybeRunningForProject = !!(await getRunningProcess(8081));\n\n if (isExpoMaybeRunningForProject) {\n Log.warn(\n 'The Expo CLI appears to be running this project in another terminal window. Close and restart any Expo CLI instances after the installation to complete the update.'\n );\n }\n\n // Safe to use current process to upgrade Expo package- doesn't affect current process\n try {\n await packageManager.addAsync([...packageManagerArguments, expoPackageToInstall]);\n } catch (error) {\n Log.error(\n chalk`Cannot install the latest Expo package. Install {bold expo@latest} with ${packageManager.name} and then run {bold npx expo install} again.`\n );\n throw error;\n }\n\n Log.log(chalk`\\u203A Running {bold npx expo install} under the updated expo version`);\n\n let commandSegments = ['expo', 'install', ...followUpCommandArgs];\n if (packageManagerArguments.length) {\n commandSegments = [...commandSegments, '--', ...packageManagerArguments];\n }\n\n Log.log('> ' + commandSegments.join(' '));\n\n // Spawn a new process to install the rest of the packages, as only then will the latest Expo package be used\n if (followUpCommandArgs.length) {\n await spawnAsync('npx', commandSegments, {\n stdio: 'inherit',\n cwd: projectRoot,\n env: { ...process.env },\n });\n }\n}\n"],"names":["installExpoPackageAsync","
|
|
1
|
+
{"version":3,"sources":["../../../src/install/installExpoPackage.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { getRunningProcess } from '../utils/getRunningProcess';\n\n/**\n * Given a list of incompatible packages, installs the correct versions of the packages with the package manager used for the project.\n * This exits immediately after spawning the install command, since the command shouldn't remain running while it is being updated.\n */\nexport async function installExpoPackageAsync(\n projectRoot: string,\n {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall,\n followUpCommandArgs,\n }: {\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n expoPackageToInstall: string;\n followUpCommandArgs: string[];\n }\n) {\n // Check if there's potentially a dev server running in the current folder and warn about it\n // (not guaranteed to be Expo CLI, and the CLI isn't always running on 8081, but it's a good guess)\n const isExpoMaybeRunningForProject = !!(await getRunningProcess(8081));\n\n if (isExpoMaybeRunningForProject) {\n Log.warn(\n 'The Expo CLI appears to be running this project in another terminal window. Close and restart any Expo CLI instances after the installation to complete the update.'\n );\n }\n\n // Safe to use current process to upgrade Expo package- doesn't affect current process\n try {\n await packageManager.addAsync([...packageManagerArguments, expoPackageToInstall]);\n } catch (error) {\n Log.error(\n chalk`Cannot install the latest Expo package. Install {bold expo@latest} with ${packageManager.name} and then run {bold npx expo install} again.`\n );\n throw error;\n }\n\n Log.log(chalk`\\u203A Running {bold npx expo install} under the updated expo version`);\n\n let commandSegments = ['expo', 'install', ...followUpCommandArgs];\n if (packageManagerArguments.length) {\n commandSegments = [...commandSegments, '--', ...packageManagerArguments];\n }\n\n Log.log('> ' + commandSegments.join(' '));\n\n // Spawn a new process to install the rest of the packages, as only then will the latest Expo package be used\n if (followUpCommandArgs.length) {\n await spawnAsync('npx', commandSegments, {\n stdio: 'inherit',\n cwd: projectRoot,\n env: { ...process.env },\n });\n }\n}\n"],"names":["installExpoPackageAsync","projectRoot","packageManager","packageManagerArguments","expoPackageToInstall","followUpCommandArgs","isExpoMaybeRunningForProject","getRunningProcess","Log","warn","addAsync","error","chalk","name","log","commandSegments","length","join","spawnAsync","stdio","cwd","env","process"],"mappings":"AAAA;;;;+BAWsBA,yBAAuB;;aAAvBA,uBAAuB;;;8DAVtB,mBAAmB;;;;;;;8DACxB,OAAO;;;;;;2DAEJ,QAAQ;mCACK,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMvD,eAAeA,uBAAuB,CAC3CC,WAAmB,EACnB,EACEC,cAAc,CAAA,EACdC,uBAAuB,CAAA,EACvBC,oBAAoB,CAAA,EACpBC,mBAAmB,CAAA,EAWpB,EACD;IACA,4FAA4F;IAC5F,mGAAmG;IACnG,MAAMC,4BAA4B,GAAG,CAAC,CAAE,MAAMC,IAAAA,kBAAiB,kBAAA,EAAC,IAAI,CAAC,AAAC,AAAC;IAEvE,IAAID,4BAA4B,EAAE;QAChCE,IAAG,CAACC,IAAI,CACN,qKAAqK,CACtK,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,IAAI;QACF,MAAMP,cAAc,CAACQ,QAAQ,CAAC;eAAIP,uBAAuB;YAAEC,oBAAoB;SAAC,CAAC,CAAC;IACpF,EAAE,OAAOO,KAAK,EAAE;QACdH,IAAG,CAACG,KAAK,CACPC,IAAAA,MAAK,EAAA,QAAA,CAAA,CAAC,wEAAwE,EAAEV,cAAc,CAACW,IAAI,CAAC,4CAA4C,CAAC,CAClJ,CAAC;QACF,MAAMF,KAAK,CAAC;IACd,CAAC;IAEDH,IAAG,CAACM,GAAG,CAACF,IAAAA,MAAK,EAAA,QAAA,CAAA,CAAC,qEAAqE,CAAC,CAAC,CAAC;IAEtF,IAAIG,eAAe,GAAG;QAAC,MAAM;QAAE,SAAS;WAAKV,mBAAmB;KAAC,AAAC;IAClE,IAAIF,uBAAuB,CAACa,MAAM,EAAE;QAClCD,eAAe,GAAG;eAAIA,eAAe;YAAE,IAAI;eAAKZ,uBAAuB;SAAC,CAAC;IAC3E,CAAC;IAEDK,IAAG,CAACM,GAAG,CAAC,IAAI,GAAGC,eAAe,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1C,6GAA6G;IAC7G,IAAIZ,mBAAmB,CAACW,MAAM,EAAE;QAC9B,MAAME,IAAAA,WAAU,EAAA,QAAA,EAAC,KAAK,EAAEH,eAAe,EAAE;YACvCI,KAAK,EAAE,SAAS;YAChBC,GAAG,EAAEnB,WAAW;YAChBoB,GAAG,EAAE;gBAAE,GAAGC,OAAO,CAACD,GAAG;aAAE;SACxB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Object.defineProperty(exports, "resolveArgsAsync", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>resolveArgsAsync
|
|
8
|
+
});
|
|
9
|
+
const _errors = require("../utils/errors");
|
|
10
|
+
const _variadic = require("../utils/variadic");
|
|
8
11
|
function resolveOptions(options) {
|
|
9
12
|
if (options.fix && options.check) {
|
|
10
13
|
throw new _errors.CommandError("BAD_ARGS", "Specify at most one of: --check, --fix");
|
|
@@ -22,8 +25,8 @@ function resolveOptions(options) {
|
|
|
22
25
|
};
|
|
23
26
|
}
|
|
24
27
|
async function resolveArgsAsync(argv) {
|
|
25
|
-
const { variadic , extras , flags } = (0, _variadic
|
|
26
|
-
(0, _variadic
|
|
28
|
+
const { variadic , extras , flags } = (0, _variadic.parseVariadicArguments)(argv);
|
|
29
|
+
(0, _variadic.assertUnexpectedVariadicFlags)([
|
|
27
30
|
"--check",
|
|
28
31
|
"--fix",
|
|
29
32
|
"--npm",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/install/resolveOptions.ts"],"sourcesContent":["import { NodePackageManagerForProject } from '@expo/package-manager';\n\nimport { CommandError } from '../utils/errors';\nimport { assertUnexpectedVariadicFlags, parseVariadicArguments } from '../utils/variadic';\n\nexport type Options = Pick<NodePackageManagerForProject, 'npm' | 'pnpm' | 'yarn' | 'bun'> & {\n /** Check which packages need to be updated, does not install any provided packages. */\n check?: boolean;\n /** Should the dependencies be fixed automatically. */\n fix?: boolean;\n /** Should disable install output, used for commands like `prebuild` that run install internally. */\n silent?: boolean;\n};\n\nfunction resolveOptions(options: Options): Options {\n if (options.fix && options.check) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --check, --fix');\n }\n if ([options.npm, options.pnpm, options.yarn, options.bun].filter(Boolean).length > 1) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --npm, --pnpm, --yarn, --bun');\n }\n return {\n ...options,\n };\n}\n\nexport async function resolveArgsAsync(\n argv: string[]\n): Promise<{ variadic: string[]; options: Options; extras: string[] }> {\n const { variadic, extras, flags } = parseVariadicArguments(argv);\n\n assertUnexpectedVariadicFlags(\n ['--check', '--fix', '--npm', '--pnpm', '--yarn', '--bun'],\n { variadic, extras, flags },\n 'npx expo install'\n );\n\n return {\n // Variadic arguments like `npx expo install react react-dom` -> ['react', 'react-dom']\n variadic,\n options: resolveOptions({\n fix: !!flags['--fix'],\n check: !!flags['--check'],\n yarn: !!flags['--yarn'],\n npm: !!flags['--npm'],\n pnpm: !!flags['--pnpm'],\n bun: !!flags['--bun'],\n }),\n extras,\n };\n}\n"],"names":["resolveArgsAsync","resolveOptions","options","fix","check","CommandError","npm","pnpm","yarn","bun","filter","Boolean","length","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedVariadicFlags"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"sources":["../../../src/install/resolveOptions.ts"],"sourcesContent":["import { NodePackageManagerForProject } from '@expo/package-manager';\n\nimport { CommandError } from '../utils/errors';\nimport { assertUnexpectedVariadicFlags, parseVariadicArguments } from '../utils/variadic';\n\nexport type Options = Pick<NodePackageManagerForProject, 'npm' | 'pnpm' | 'yarn' | 'bun'> & {\n /** Check which packages need to be updated, does not install any provided packages. */\n check?: boolean;\n /** Should the dependencies be fixed automatically. */\n fix?: boolean;\n /** Should disable install output, used for commands like `prebuild` that run install internally. */\n silent?: boolean;\n /** Should be installed as dev dependencies */\n dev?: boolean;\n};\n\nfunction resolveOptions(options: Options): Options {\n if (options.fix && options.check) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --check, --fix');\n }\n if ([options.npm, options.pnpm, options.yarn, options.bun].filter(Boolean).length > 1) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --npm, --pnpm, --yarn, --bun');\n }\n return {\n ...options,\n };\n}\n\nexport async function resolveArgsAsync(\n argv: string[]\n): Promise<{ variadic: string[]; options: Options; extras: string[] }> {\n const { variadic, extras, flags } = parseVariadicArguments(argv);\n\n assertUnexpectedVariadicFlags(\n ['--check', '--fix', '--npm', '--pnpm', '--yarn', '--bun'],\n { variadic, extras, flags },\n 'npx expo install'\n );\n\n return {\n // Variadic arguments like `npx expo install react react-dom` -> ['react', 'react-dom']\n variadic,\n options: resolveOptions({\n fix: !!flags['--fix'],\n check: !!flags['--check'],\n yarn: !!flags['--yarn'],\n npm: !!flags['--npm'],\n pnpm: !!flags['--pnpm'],\n bun: !!flags['--bun'],\n }),\n extras,\n };\n}\n"],"names":["resolveArgsAsync","resolveOptions","options","fix","check","CommandError","npm","pnpm","yarn","bun","filter","Boolean","length","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedVariadicFlags"],"mappings":"AAAA;;;;+BA4BsBA,kBAAgB;;aAAhBA,gBAAgB;;wBA1BT,iBAAiB;0BACwB,mBAAmB;AAazF,SAASC,cAAc,CAACC,OAAgB,EAAW;IACjD,IAAIA,OAAO,CAACC,GAAG,IAAID,OAAO,CAACE,KAAK,EAAE;QAChC,MAAM,IAAIC,OAAY,aAAA,CAAC,UAAU,EAAE,wCAAwC,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI;QAACH,OAAO,CAACI,GAAG;QAAEJ,OAAO,CAACK,IAAI;QAAEL,OAAO,CAACM,IAAI;QAAEN,OAAO,CAACO,GAAG;KAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,MAAM,GAAG,CAAC,EAAE;QACrF,MAAM,IAAIP,OAAY,aAAA,CAAC,UAAU,EAAE,sDAAsD,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO;QACL,GAAGH,OAAO;KACX,CAAC;AACJ,CAAC;AAEM,eAAeF,gBAAgB,CACpCa,IAAc,EACuD;IACrE,MAAM,EAAEC,QAAQ,CAAA,EAAEC,MAAM,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAGC,IAAAA,SAAsB,uBAAA,EAACJ,IAAI,CAAC,AAAC;IAEjEK,IAAAA,SAA6B,8BAAA,EAC3B;QAAC,SAAS;QAAE,OAAO;QAAE,OAAO;QAAE,QAAQ;QAAE,QAAQ;QAAE,OAAO;KAAC,EAC1D;QAAEJ,QAAQ;QAAEC,MAAM;QAAEC,KAAK;KAAE,EAC3B,kBAAkB,CACnB,CAAC;IAEF,OAAO;QACL,uFAAuF;QACvFF,QAAQ;QACRZ,OAAO,EAAED,cAAc,CAAC;YACtBE,GAAG,EAAE,CAAC,CAACa,KAAK,CAAC,OAAO,CAAC;YACrBZ,KAAK,EAAE,CAAC,CAACY,KAAK,CAAC,SAAS,CAAC;YACzBR,IAAI,EAAE,CAAC,CAACQ,KAAK,CAAC,QAAQ,CAAC;YACvBV,GAAG,EAAE,CAAC,CAACU,KAAK,CAAC,OAAO,CAAC;YACrBT,IAAI,EAAE,CAAC,CAACS,KAAK,CAAC,QAAQ,CAAC;YACvBP,GAAG,EAAE,CAAC,CAACO,KAAK,CAAC,OAAO,CAAC;SACtB,CAAC;QACFD,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -2,8 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
getNamedPlugins: ()=>getNamedPlugins,
|
|
13
|
+
autoAddConfigPluginsAsync: ()=>autoAddConfigPluginsAsync
|
|
14
|
+
});
|
|
7
15
|
function _pluginResolver() {
|
|
8
16
|
const data = require("@expo/config-plugins/build/utils/plugin-resolver");
|
|
9
17
|
_pluginResolver = function() {
|
|
@@ -18,9 +26,9 @@ function _prebuildConfig() {
|
|
|
18
26
|
};
|
|
19
27
|
return data;
|
|
20
28
|
}
|
|
21
|
-
|
|
29
|
+
const _modifyConfigPlugins = require("../../utils/modifyConfigPlugins");
|
|
22
30
|
const debug = require("debug")("expo:install:config-plugins");
|
|
23
|
-
const AUTO_PLUGINS = _prebuildConfig().getAutoPlugins();
|
|
31
|
+
const AUTO_PLUGINS = (0, _prebuildConfig().getAutoPlugins)();
|
|
24
32
|
/**
|
|
25
33
|
* Resolve if a package has a config plugin.
|
|
26
34
|
* For sanity, we'll only support config plugins that use the `app.config.js` entry file,
|
|
@@ -31,7 +39,7 @@ const AUTO_PLUGINS = _prebuildConfig().getAutoPlugins();
|
|
|
31
39
|
* @returns
|
|
32
40
|
*/ function packageHasConfigPlugin(projectRoot, packageName) {
|
|
33
41
|
try {
|
|
34
|
-
const info = _pluginResolver().resolveConfigPluginFunctionWithInfo(projectRoot, packageName);
|
|
42
|
+
const info = (0, _pluginResolver().resolveConfigPluginFunctionWithInfo)(projectRoot, packageName);
|
|
35
43
|
if (info.isPluginFile) {
|
|
36
44
|
return info.plugin;
|
|
37
45
|
}
|
|
@@ -43,7 +51,7 @@ function getNamedPlugins(plugins) {
|
|
|
43
51
|
for (const plugin of plugins){
|
|
44
52
|
try {
|
|
45
53
|
// @ts-ignore
|
|
46
|
-
const [normal] = _pluginResolver().normalizeStaticPlugin(plugin);
|
|
54
|
+
const [normal] = (0, _pluginResolver().normalizeStaticPlugin)(plugin);
|
|
47
55
|
if (typeof normal === "string") {
|
|
48
56
|
namedPlugins.push(normal);
|
|
49
57
|
}
|
|
@@ -72,7 +80,7 @@ async function autoAddConfigPluginsAsync(projectRoot, exp, packages) {
|
|
|
72
80
|
}
|
|
73
81
|
return !!plugin;
|
|
74
82
|
});
|
|
75
|
-
await (0, _modifyConfigPlugins
|
|
83
|
+
await (0, _modifyConfigPlugins.attemptAddingPluginsAsync)(projectRoot, exp, plugins);
|
|
76
84
|
}
|
|
77
85
|
|
|
78
86
|
//# sourceMappingURL=autoAddConfigPlugins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/install/utils/autoAddConfigPlugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport {\n normalizeStaticPlugin,\n resolveConfigPluginFunctionWithInfo,\n} from '@expo/config-plugins/build/utils/plugin-resolver';\nimport { getAutoPlugins } from '@expo/prebuild-config';\n\nimport { attemptAddingPluginsAsync } from '../../utils/modifyConfigPlugins';\n\nconst debug = require('debug')('expo:install:config-plugins') as typeof console.log;\n\nconst AUTO_PLUGINS = getAutoPlugins();\n\n/**\n * Resolve if a package has a config plugin.\n * For sanity, we'll only support config plugins that use the `app.config.js` entry file,\n * this is because a package like `lodash` could be a \"valid\" config plugin and break the prebuild process.\n *\n * @param projectRoot\n * @param packageName\n * @returns\n */\nfunction packageHasConfigPlugin(projectRoot: string, packageName: string) {\n try {\n const info = resolveConfigPluginFunctionWithInfo(projectRoot, packageName);\n if (info.isPluginFile) {\n return info.plugin;\n }\n } catch {}\n return false;\n}\n\n/**\n * Get a list of plugins that were are supplied as string module IDs.\n * @example\n * ```json\n * {\n * \"plugins\": [\n * \"expo-camera\",\n * [\"react-native-firebase\", ...]\n * ]\n * }\n * ```\n * ↓ ↓ ↓ ↓ ↓ ↓\n *\n * `['expo-camera', 'react-native-firebase']`\n *\n */\nexport function getNamedPlugins(plugins: NonNullable<ExpoConfig['plugins']>): string[] {\n const namedPlugins: string[] = [];\n for (const plugin of plugins) {\n try {\n // @ts-ignore\n const [normal] = normalizeStaticPlugin(plugin);\n if (typeof normal === 'string') {\n namedPlugins.push(normal);\n }\n } catch {\n // ignore assertions\n }\n }\n return namedPlugins;\n}\n\n/** Attempts to ensure that non-auto plugins are added to the `app.json` `plugins` array when modules with Expo Config Plugins are installed. */\nexport async function autoAddConfigPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n packages: string[]\n) {\n debug('Checking config plugins...');\n\n const currentPlugins = exp.plugins || [];\n const normalized = getNamedPlugins(currentPlugins);\n\n debug(`Existing plugins: ${normalized.join(', ')}`);\n\n const plugins = packages.filter((pkg) => {\n if (normalized.includes(pkg)) {\n // already included in plugins array\n return false;\n }\n // Check if the package has a valid plugin. Must be a well-made plugin for it to work with this.\n const plugin = packageHasConfigPlugin(projectRoot, pkg);\n\n debug(`Package \"${pkg}\" has plugin: ${!!plugin}` + (plugin ? ` (args: ${plugin.length})` : ''));\n\n if (AUTO_PLUGINS.includes(pkg)) {\n debug(`Package \"${pkg}\" is an auto plugin, skipping...`);\n return false;\n }\n\n return !!plugin;\n });\n\n await attemptAddingPluginsAsync(projectRoot, exp, plugins);\n}\n"],"names":["getNamedPlugins","autoAddConfigPluginsAsync","debug","require","AUTO_PLUGINS","getAutoPlugins","packageHasConfigPlugin","projectRoot","packageName","info","resolveConfigPluginFunctionWithInfo","isPluginFile","plugin","plugins","namedPlugins","normal","normalizeStaticPlugin","push","exp","packages","currentPlugins","normalized","join","filter","pkg","includes","length","attemptAddingPluginsAsync"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"sources":["../../../../src/install/utils/autoAddConfigPlugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport {\n normalizeStaticPlugin,\n resolveConfigPluginFunctionWithInfo,\n} from '@expo/config-plugins/build/utils/plugin-resolver';\nimport { getAutoPlugins } from '@expo/prebuild-config';\n\nimport { attemptAddingPluginsAsync } from '../../utils/modifyConfigPlugins';\n\nconst debug = require('debug')('expo:install:config-plugins') as typeof console.log;\n\nconst AUTO_PLUGINS = getAutoPlugins();\n\n/**\n * Resolve if a package has a config plugin.\n * For sanity, we'll only support config plugins that use the `app.config.js` entry file,\n * this is because a package like `lodash` could be a \"valid\" config plugin and break the prebuild process.\n *\n * @param projectRoot\n * @param packageName\n * @returns\n */\nfunction packageHasConfigPlugin(projectRoot: string, packageName: string) {\n try {\n const info = resolveConfigPluginFunctionWithInfo(projectRoot, packageName);\n if (info.isPluginFile) {\n return info.plugin;\n }\n } catch {}\n return false;\n}\n\n/**\n * Get a list of plugins that were are supplied as string module IDs.\n * @example\n * ```json\n * {\n * \"plugins\": [\n * \"expo-camera\",\n * [\"react-native-firebase\", ...]\n * ]\n * }\n * ```\n * ↓ ↓ ↓ ↓ ↓ ↓\n *\n * `['expo-camera', 'react-native-firebase']`\n *\n */\nexport function getNamedPlugins(plugins: NonNullable<ExpoConfig['plugins']>): string[] {\n const namedPlugins: string[] = [];\n for (const plugin of plugins) {\n try {\n // @ts-ignore\n const [normal] = normalizeStaticPlugin(plugin);\n if (typeof normal === 'string') {\n namedPlugins.push(normal);\n }\n } catch {\n // ignore assertions\n }\n }\n return namedPlugins;\n}\n\n/** Attempts to ensure that non-auto plugins are added to the `app.json` `plugins` array when modules with Expo Config Plugins are installed. */\nexport async function autoAddConfigPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n packages: string[]\n) {\n debug('Checking config plugins...');\n\n const currentPlugins = exp.plugins || [];\n const normalized = getNamedPlugins(currentPlugins);\n\n debug(`Existing plugins: ${normalized.join(', ')}`);\n\n const plugins = packages.filter((pkg) => {\n if (normalized.includes(pkg)) {\n // already included in plugins array\n return false;\n }\n // Check if the package has a valid plugin. Must be a well-made plugin for it to work with this.\n const plugin = packageHasConfigPlugin(projectRoot, pkg);\n\n debug(`Package \"${pkg}\" has plugin: ${!!plugin}` + (plugin ? ` (args: ${plugin.length})` : ''));\n\n if (AUTO_PLUGINS.includes(pkg)) {\n debug(`Package \"${pkg}\" is an auto plugin, skipping...`);\n return false;\n }\n\n return !!plugin;\n });\n\n await attemptAddingPluginsAsync(projectRoot, exp, plugins);\n}\n"],"names":["getNamedPlugins","autoAddConfigPluginsAsync","debug","require","AUTO_PLUGINS","getAutoPlugins","packageHasConfigPlugin","projectRoot","packageName","info","resolveConfigPluginFunctionWithInfo","isPluginFile","plugin","plugins","namedPlugins","normal","normalizeStaticPlugin","push","exp","packages","currentPlugins","normalized","join","filter","pkg","includes","length","attemptAddingPluginsAsync"],"mappings":"AAAA;;;;;;;;;;;IAgDgBA,eAAe,MAAfA,eAAe;IAiBTC,yBAAyB,MAAzBA,yBAAyB;;;yBA7DxC,kDAAkD;;;;;;;yBAC1B,uBAAuB;;;;;;qCAEZ,iCAAiC;AAE3E,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,6BAA6B,CAAC,AAAsB,AAAC;AAEpF,MAAMC,YAAY,GAAGC,IAAAA,eAAc,EAAA,eAAA,GAAE,AAAC;AAEtC;;;;;;;;CAQC,GACD,SAASC,sBAAsB,CAACC,WAAmB,EAAEC,WAAmB,EAAE;IACxE,IAAI;QACF,MAAMC,IAAI,GAAGC,IAAAA,eAAmC,EAAA,oCAAA,EAACH,WAAW,EAAEC,WAAW,CAAC,AAAC;QAC3E,IAAIC,IAAI,CAACE,YAAY,EAAE;YACrB,OAAOF,IAAI,CAACG,MAAM,CAAC;QACrB,CAAC;IACH,EAAE,OAAM,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAkBM,SAASZ,eAAe,CAACa,OAA2C,EAAY;IACrF,MAAMC,YAAY,GAAa,EAAE,AAAC;IAClC,KAAK,MAAMF,MAAM,IAAIC,OAAO,CAAE;QAC5B,IAAI;YACF,aAAa;YACb,MAAM,CAACE,MAAM,CAAC,GAAGC,IAAAA,eAAqB,EAAA,sBAAA,EAACJ,MAAM,CAAC,AAAC;YAC/C,IAAI,OAAOG,MAAM,KAAK,QAAQ,EAAE;gBAC9BD,YAAY,CAACG,IAAI,CAACF,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,EAAE,OAAM;QACN,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,OAAOD,YAAY,CAAC;AACtB,CAAC;AAGM,eAAeb,yBAAyB,CAC7CM,WAAmB,EACnBW,GAAgC,EAChCC,QAAkB,EAClB;IACAjB,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAEpC,MAAMkB,cAAc,GAAGF,GAAG,CAACL,OAAO,IAAI,EAAE,AAAC;IACzC,MAAMQ,UAAU,GAAGrB,eAAe,CAACoB,cAAc,CAAC,AAAC;IAEnDlB,KAAK,CAAC,CAAC,kBAAkB,EAAEmB,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAMT,OAAO,GAAGM,QAAQ,CAACI,MAAM,CAAC,CAACC,GAAG,GAAK;QACvC,IAAIH,UAAU,CAACI,QAAQ,CAACD,GAAG,CAAC,EAAE;YAC5B,oCAAoC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,gGAAgG;QAChG,MAAMZ,MAAM,GAAGN,sBAAsB,CAACC,WAAW,EAAEiB,GAAG,CAAC,AAAC;QAExDtB,KAAK,CAAC,CAAC,SAAS,EAAEsB,GAAG,CAAC,cAAc,EAAE,CAAC,CAACZ,MAAM,CAAC,CAAC,GAAG,CAACA,MAAM,GAAG,CAAC,QAAQ,EAAEA,MAAM,CAACc,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEhG,IAAItB,YAAY,CAACqB,QAAQ,CAACD,GAAG,CAAC,EAAE;YAC9BtB,KAAK,CAAC,CAAC,SAAS,EAAEsB,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CAACZ,MAAM,CAAC;IAClB,CAAC,CAAC,AAAC;IAEH,MAAMe,IAAAA,oBAAyB,0BAAA,EAACpB,WAAW,EAAEW,GAAG,EAAEL,OAAO,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ESLintProjectPrerequisite", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>ESLintProjectPrerequisite
|
|
8
|
+
});
|
|
9
|
+
function _jsonFile() {
|
|
10
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("@expo/json-file"));
|
|
11
|
+
_jsonFile = function() {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
return data;
|
|
15
|
+
}
|
|
16
|
+
function _promises() {
|
|
17
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("fs/promises"));
|
|
18
|
+
_promises = function() {
|
|
19
|
+
return data;
|
|
20
|
+
};
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
function _path() {
|
|
24
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
25
|
+
_path = function() {
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
const _log = require("../log");
|
|
31
|
+
const _prerequisite = require("../start/doctor/Prerequisite");
|
|
32
|
+
const _ensureDependenciesAsync = require("../start/doctor/dependencies/ensureDependenciesAsync");
|
|
33
|
+
const _findUp = require("../utils/findUp");
|
|
34
|
+
const _prompts = require("../utils/prompts");
|
|
35
|
+
function _interopRequireDefault(obj) {
|
|
36
|
+
return obj && obj.__esModule ? obj : {
|
|
37
|
+
default: obj
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const debug = require("debug")("expo:lint");
|
|
41
|
+
const ESLINT_TEMPLATE_BASE = `// https://docs.expo.dev/guides/using-eslint/
|
|
42
|
+
module.exports = {
|
|
43
|
+
extends: 'expo',
|
|
44
|
+
};
|
|
45
|
+
`;
|
|
46
|
+
class ESLintProjectPrerequisite extends _prerequisite.ProjectPrerequisite {
|
|
47
|
+
async assertImplementation() {
|
|
48
|
+
const hasEslintConfig = await eslintIsConfigured(this.projectRoot);
|
|
49
|
+
const hasLintScript = await lintScriptIsConfigured(this.projectRoot);
|
|
50
|
+
return hasEslintConfig && hasLintScript;
|
|
51
|
+
}
|
|
52
|
+
async bootstrapAsync() {
|
|
53
|
+
debug("Setting up ESLint");
|
|
54
|
+
const hasEslintConfig = await eslintIsConfigured(this.projectRoot);
|
|
55
|
+
if (!hasEslintConfig) {
|
|
56
|
+
const shouldSetupLint = await (0, _prompts.confirmAsync)({
|
|
57
|
+
message: "No ESLint config found. Install and configure ESLint in this project?"
|
|
58
|
+
});
|
|
59
|
+
if (!shouldSetupLint) {
|
|
60
|
+
throw new _prerequisite.PrerequisiteCommandError("ESLint is not configured for this project.");
|
|
61
|
+
}
|
|
62
|
+
// TODO(cedric): if we want to add prettier, also configure proper prettier rules
|
|
63
|
+
// const shouldIncludePrettier = await confirmAsync({
|
|
64
|
+
// message: 'Include Prettier?',
|
|
65
|
+
// });
|
|
66
|
+
// if (shouldIncludePrettier) {
|
|
67
|
+
// packages.push({ file: 'prettier/package.json', pkg: 'prettier', dev: true });
|
|
68
|
+
// packages.push({
|
|
69
|
+
// file: 'eslint-config-prettier/package.json',
|
|
70
|
+
// pkg: 'eslint-config-prettier',
|
|
71
|
+
// dev: true,
|
|
72
|
+
// });
|
|
73
|
+
// packages.push({
|
|
74
|
+
// file: 'eslint-plugin-prettier/package.json',
|
|
75
|
+
// pkg: 'eslint-plugin-prettier',
|
|
76
|
+
// dev: true,
|
|
77
|
+
// });
|
|
78
|
+
// }
|
|
79
|
+
await this._ensureDependenciesInstalledAsync({
|
|
80
|
+
skipPrompt: true,
|
|
81
|
+
isProjectMutable: true
|
|
82
|
+
});
|
|
83
|
+
// TODO(cedric): if we want to add prettier, also configure proper prettier rules
|
|
84
|
+
// if (shouldIncludePrettier) {
|
|
85
|
+
// await fs.writeFile(path.join(this.projectRoot, '.prettierrc'), '{}', 'utf8');
|
|
86
|
+
// }
|
|
87
|
+
await _promises().default.writeFile(_path().default.join(this.projectRoot, ".eslintrc.js"), ESLINT_TEMPLATE_BASE, "utf8");
|
|
88
|
+
}
|
|
89
|
+
const hasLintScript = await lintScriptIsConfigured(this.projectRoot);
|
|
90
|
+
if (!hasLintScript) {
|
|
91
|
+
const scripts = _jsonFile().default.read(_path().default.join(this.projectRoot, "package.json")).scripts;
|
|
92
|
+
await _jsonFile().default.setAsync(_path().default.join(this.projectRoot, "package.json"), "scripts", typeof scripts === "object" ? {
|
|
93
|
+
...scripts,
|
|
94
|
+
lint: "eslint ."
|
|
95
|
+
} : {
|
|
96
|
+
lint: "eslint ."
|
|
97
|
+
}, {
|
|
98
|
+
json5: false
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
_log.Log.log();
|
|
102
|
+
_log.Log.log("ESlint has been configured \uD83C\uDF89");
|
|
103
|
+
_log.Log.log();
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
async _ensureDependenciesInstalledAsync({ skipPrompt , isProjectMutable }) {
|
|
107
|
+
try {
|
|
108
|
+
return await (0, _ensureDependenciesAsync.ensureDependenciesAsync)(this.projectRoot, {
|
|
109
|
+
skipPrompt,
|
|
110
|
+
isProjectMutable,
|
|
111
|
+
installMessage: "ESLint is required to lint your project.",
|
|
112
|
+
warningMessage: "ESLint not installed, unable to set up linting for your project.",
|
|
113
|
+
requiredPackages: [
|
|
114
|
+
{
|
|
115
|
+
version: "^8.57.0",
|
|
116
|
+
pkg: "eslint",
|
|
117
|
+
file: "eslint/package.json",
|
|
118
|
+
dev: true
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
version: "^7.0.0",
|
|
122
|
+
pkg: "eslint-config-expo",
|
|
123
|
+
file: "eslint-config-expo/package.json",
|
|
124
|
+
dev: true
|
|
125
|
+
},
|
|
126
|
+
]
|
|
127
|
+
});
|
|
128
|
+
} catch (error) {
|
|
129
|
+
this.resetAssertion();
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async function eslintIsConfigured(projectRoot) {
|
|
135
|
+
debug("Ensuring ESlint is configured in", projectRoot);
|
|
136
|
+
// TODO(cedric): drop `package.json` check once we swap to flat config
|
|
137
|
+
const packageFile = await _jsonFile().default.readAsync(_path().default.join(projectRoot, "package.json"));
|
|
138
|
+
if (typeof packageFile.eslintConfig === "object" && Object.keys(packageFile.eslintConfig).length > 0) {
|
|
139
|
+
debug("Found ESlint config in package.json");
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
const eslintConfigFiles = [
|
|
143
|
+
// TODO(cedric): drop these files once we swap to flat config
|
|
144
|
+
// See: https://eslint.org/docs/latest/use/configure/configuration-files-deprecated
|
|
145
|
+
".eslintrc.js",
|
|
146
|
+
".eslintrc.cjs",
|
|
147
|
+
".eslintrc.yaml",
|
|
148
|
+
".eslintrc.yml",
|
|
149
|
+
".eslintrc.json",
|
|
150
|
+
];
|
|
151
|
+
for (const configFile of eslintConfigFiles){
|
|
152
|
+
const configPath = (0, _findUp.findFileInParents)(projectRoot, configFile);
|
|
153
|
+
const configIsEmpty = configPath ? await eslintConfigIsEmpty(configPath) : null;
|
|
154
|
+
if (configPath && !configIsEmpty) {
|
|
155
|
+
debug("Found ESlint config file:", configPath);
|
|
156
|
+
return true;
|
|
157
|
+
} else if (configPath && configIsEmpty) {
|
|
158
|
+
debug("Skipping empty ESlint config file:", configPath);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
/** Determine if the eslint config file is empty. */ async function eslintConfigIsEmpty(filePath) {
|
|
164
|
+
const content = await _promises().default.readFile(filePath, "utf8").then((text)=>text.trim().replaceAll(/\s|\r\n|\n|\r/g, ""), ()=>null);
|
|
165
|
+
return !content || content === "{}" || content === "---" || content.startsWith("module.exports={}") || content.startsWith("exportdefault{}") || content.startsWith("exportdefault[]") // .eslint.config.mjs
|
|
166
|
+
;
|
|
167
|
+
}
|
|
168
|
+
async function lintScriptIsConfigured(projectRoot) {
|
|
169
|
+
var ref;
|
|
170
|
+
const packageFile = await _jsonFile().default.readAsync(_path().default.join(projectRoot, "package.json"));
|
|
171
|
+
return typeof ((ref = packageFile.scripts) == null ? void 0 : ref.lint) === "string";
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
//# sourceMappingURL=ESlintPrerequisite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lint/ESlintPrerequisite.ts"],"sourcesContent":["import JsonFile, { JSONObject } from '@expo/json-file';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { Log } from '../log';\nimport { PrerequisiteCommandError, ProjectPrerequisite } from '../start/doctor/Prerequisite';\nimport { ensureDependenciesAsync } from '../start/doctor/dependencies/ensureDependenciesAsync';\nimport { findFileInParents } from '../utils/findUp';\nimport { confirmAsync } from '../utils/prompts';\n\nconst debug = require('debug')('expo:lint') as typeof console.log;\n\nconst ESLINT_TEMPLATE_BASE = `// https://docs.expo.dev/guides/using-eslint/\nmodule.exports = {\n extends: 'expo',\n};\n`;\n\n// TODO(cedric): if we want to add prettier, also configure proper prettier rules\n// const ESLINT_TEMPLATE_PRETTIER = `// https://docs.expo.dev/guides/using-eslint/\n// module.exports = {\n// extends: ['expo', 'prettier'],\n// plugins: ['prettier'],\n// rules: {\n// 'prettier/prettier': ['warn'],\n// },\n// };\n// `;\n\n/** Ensure the project has the required ESlint config. */\nexport class ESLintProjectPrerequisite extends ProjectPrerequisite<boolean> {\n async assertImplementation(): Promise<boolean> {\n const hasEslintConfig = await eslintIsConfigured(this.projectRoot);\n const hasLintScript = await lintScriptIsConfigured(this.projectRoot);\n\n return hasEslintConfig && hasLintScript;\n }\n\n async bootstrapAsync(): Promise<boolean> {\n debug('Setting up ESLint');\n\n const hasEslintConfig = await eslintIsConfigured(this.projectRoot);\n if (!hasEslintConfig) {\n const shouldSetupLint = await confirmAsync({\n message: 'No ESLint config found. Install and configure ESLint in this project?',\n });\n\n if (!shouldSetupLint) {\n throw new PrerequisiteCommandError('ESLint is not configured for this project.');\n }\n\n // TODO(cedric): if we want to add prettier, also configure proper prettier rules\n // const shouldIncludePrettier = await confirmAsync({\n // message: 'Include Prettier?',\n // });\n\n // if (shouldIncludePrettier) {\n // packages.push({ file: 'prettier/package.json', pkg: 'prettier', dev: true });\n // packages.push({\n // file: 'eslint-config-prettier/package.json',\n // pkg: 'eslint-config-prettier',\n // dev: true,\n // });\n // packages.push({\n // file: 'eslint-plugin-prettier/package.json',\n // pkg: 'eslint-plugin-prettier',\n // dev: true,\n // });\n // }\n\n await this._ensureDependenciesInstalledAsync({ skipPrompt: true, isProjectMutable: true });\n\n // TODO(cedric): if we want to add prettier, also configure proper prettier rules\n // if (shouldIncludePrettier) {\n // await fs.writeFile(path.join(this.projectRoot, '.prettierrc'), '{}', 'utf8');\n // }\n\n await fs.writeFile(path.join(this.projectRoot, '.eslintrc.js'), ESLINT_TEMPLATE_BASE, 'utf8');\n }\n\n const hasLintScript = await lintScriptIsConfigured(this.projectRoot);\n if (!hasLintScript) {\n const scripts = JsonFile.read(path.join(this.projectRoot, 'package.json')).scripts;\n await JsonFile.setAsync(\n path.join(this.projectRoot, 'package.json'),\n 'scripts',\n typeof scripts === 'object' ? { ...scripts, lint: 'eslint .' } : { lint: 'eslint .' },\n { json5: false }\n );\n }\n\n Log.log();\n Log.log('ESlint has been configured 🎉');\n Log.log();\n\n return true;\n }\n\n async _ensureDependenciesInstalledAsync({\n skipPrompt,\n isProjectMutable,\n }: {\n skipPrompt?: boolean;\n isProjectMutable?: boolean;\n }): Promise<boolean> {\n try {\n return await ensureDependenciesAsync(this.projectRoot, {\n skipPrompt,\n isProjectMutable,\n installMessage: 'ESLint is required to lint your project.',\n warningMessage: 'ESLint not installed, unable to set up linting for your project.',\n requiredPackages: [\n { version: '^8.57.0', pkg: 'eslint', file: 'eslint/package.json', dev: true },\n {\n version: '^7.0.0',\n pkg: 'eslint-config-expo',\n file: 'eslint-config-expo/package.json',\n dev: true,\n },\n ],\n });\n } catch (error) {\n this.resetAssertion();\n throw error;\n }\n }\n}\n\nasync function eslintIsConfigured(projectRoot: string) {\n debug('Ensuring ESlint is configured in', projectRoot);\n\n // TODO(cedric): drop `package.json` check once we swap to flat config\n const packageFile = await JsonFile.readAsync(path.join(projectRoot, 'package.json'));\n if (\n typeof packageFile.eslintConfig === 'object' &&\n Object.keys(packageFile.eslintConfig as JSONObject).length > 0\n ) {\n debug('Found ESlint config in package.json');\n return true;\n }\n\n const eslintConfigFiles = [\n // TODO(cedric): drop these files once we swap to flat config\n // See: https://eslint.org/docs/latest/use/configure/configuration-files-deprecated\n '.eslintrc.js',\n '.eslintrc.cjs',\n '.eslintrc.yaml',\n '.eslintrc.yml',\n '.eslintrc.json',\n // TODO(cedric): use these files once we swap to flat config\n // See: https://eslint.org/docs/latest/use/configure/configuration-files\n // 'eslint.config.js',\n // 'eslint.config.mjs',\n // 'eslint.config.cjs',\n ];\n for (const configFile of eslintConfigFiles) {\n const configPath = findFileInParents(projectRoot, configFile);\n const configIsEmpty = configPath ? await eslintConfigIsEmpty(configPath) : null;\n\n if (configPath && !configIsEmpty) {\n debug('Found ESlint config file:', configPath);\n return true;\n } else if (configPath && configIsEmpty) {\n debug('Skipping empty ESlint config file:', configPath);\n }\n }\n\n return false;\n}\n\n/** Determine if the eslint config file is empty. */\nasync function eslintConfigIsEmpty(filePath: string) {\n const content = await fs.readFile(filePath, 'utf8').then(\n (text) => text.trim().replaceAll(/\\s|\\r\\n|\\n|\\r/g, ''),\n () => null\n );\n\n return (\n !content ||\n content === '{}' || // .eslintrc.json\n content === '---' || // .eslintrc.yaml / .eslintrc.yml\n content.startsWith('module.exports={}') || // .eslintrc.js / .eslintrc.cjs / eslint.config.js / eslint.config.cjs\n content.startsWith('exportdefault{}') || // .eslint.config.mjs\n content.startsWith('exportdefault[]') // .eslint.config.mjs\n );\n}\n\nasync function lintScriptIsConfigured(projectRoot: string) {\n const packageFile = await JsonFile.readAsync(path.join(projectRoot, 'package.json'));\n return typeof (packageFile.scripts as JSONObject | undefined)?.lint === 'string';\n}\n"],"names":["ESLintProjectPrerequisite","debug","require","ESLINT_TEMPLATE_BASE","ProjectPrerequisite","assertImplementation","hasEslintConfig","eslintIsConfigured","projectRoot","hasLintScript","lintScriptIsConfigured","bootstrapAsync","shouldSetupLint","confirmAsync","message","PrerequisiteCommandError","_ensureDependenciesInstalledAsync","skipPrompt","isProjectMutable","fs","writeFile","path","join","scripts","JsonFile","read","setAsync","lint","json5","Log","log","ensureDependenciesAsync","installMessage","warningMessage","requiredPackages","version","pkg","file","dev","error","resetAssertion","packageFile","readAsync","eslintConfig","Object","keys","length","eslintConfigFiles","configFile","configPath","findFileInParents","configIsEmpty","eslintConfigIsEmpty","filePath","content","readFile","then","text","trim","replaceAll","startsWith"],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "expoLint", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>expoLint
|
|
8
|
+
});
|
|
9
|
+
const _args = require("../utils/args");
|
|
10
|
+
const _errors = require("../utils/errors");
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
12
|
+
if (typeof WeakMap !== "function") return null;
|
|
13
|
+
var cacheBabelInterop = new WeakMap();
|
|
14
|
+
var cacheNodeInterop = new WeakMap();
|
|
15
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
16
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
17
|
+
})(nodeInterop);
|
|
18
|
+
}
|
|
19
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
20
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
21
|
+
return obj;
|
|
22
|
+
}
|
|
23
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
24
|
+
return {
|
|
25
|
+
default: obj
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
29
|
+
if (cache && cache.has(obj)) {
|
|
30
|
+
return cache.get(obj);
|
|
31
|
+
}
|
|
32
|
+
var newObj = {};
|
|
33
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
34
|
+
for(var key in obj){
|
|
35
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
36
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
37
|
+
if (desc && (desc.get || desc.set)) {
|
|
38
|
+
Object.defineProperty(newObj, key, desc);
|
|
39
|
+
} else {
|
|
40
|
+
newObj[key] = obj[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
newObj.default = obj;
|
|
45
|
+
if (cache) {
|
|
46
|
+
cache.set(obj, newObj);
|
|
47
|
+
}
|
|
48
|
+
return newObj;
|
|
49
|
+
}
|
|
50
|
+
const expoLint = async (argv)=>{
|
|
51
|
+
const args = (0, _args.assertArgs)({
|
|
52
|
+
// Types
|
|
53
|
+
"--help": Boolean,
|
|
54
|
+
// Aliases
|
|
55
|
+
"-h": "--help"
|
|
56
|
+
}, argv);
|
|
57
|
+
if (args["--help"]) {
|
|
58
|
+
(0, _args.printHelp)("Utility to run ESLint. Prompts to install and configure if not yet set up.", "npx expo lint", "-h, --help Usage info");
|
|
59
|
+
}
|
|
60
|
+
// Load modules after the help prompt so `npx expo lint -h` shows as fast as possible.
|
|
61
|
+
const { lintAsync } = await Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(require("./lintAsync.js")));
|
|
62
|
+
const projectRoot = (0, _args.getProjectRoot)(args);
|
|
63
|
+
return lintAsync(projectRoot).catch(_errors.logCmdError);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lint/index.ts"],"sourcesContent":["import type { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoLint: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n 'Utility to run ESLint. Prompts to install and configure if not yet set up.',\n 'npx expo lint',\n '-h, --help Usage info'\n );\n }\n\n // Load modules after the help prompt so `npx expo lint -h` shows as fast as possible.\n const { lintAsync } = await import('./lintAsync.js');\n const projectRoot = getProjectRoot(args);\n\n return lintAsync(projectRoot).catch(logCmdError);\n};\n"],"names":["expoLint","argv","args","assertArgs","Boolean","printHelp","lintAsync","projectRoot","getProjectRoot","catch","logCmdError"],"mappings":"AAAA;;;;+BAIaA,UAAQ;;aAARA,QAAQ;;sBAHiC,eAAe;wBACzC,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,QAAQ,GAAY,OAAOC,IAAI,GAAK;IAC/C,MAAMC,IAAI,GAAGC,IAAAA,KAAU,WAAA,EACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBG,IAAAA,KAAS,UAAA,EACP,4EAA4E,EAC5E,eAAe,EACf,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,MAAM,EAAEC,SAAS,CAAA,EAAE,GAAG,MAAM,iEAAA,OAAM,CAAC,gBAAgB,GAAC,AAAC;IACrD,MAAMC,WAAW,GAAGC,IAAAA,KAAc,eAAA,EAACN,IAAI,CAAC,AAAC;IAEzC,OAAOI,SAAS,CAACC,WAAW,CAAC,CAACE,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;AACnD,CAAC,AAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "lintAsync", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>lintAsync
|
|
8
|
+
});
|
|
9
|
+
function _packageManager() {
|
|
10
|
+
const data = require("@expo/package-manager");
|
|
11
|
+
_packageManager = function() {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
return data;
|
|
15
|
+
}
|
|
16
|
+
const _eslintPrerequisite = require("./ESlintPrerequisite");
|
|
17
|
+
const lintAsync = async (projectRoot)=>{
|
|
18
|
+
const prerequisite = new _eslintPrerequisite.ESLintProjectPrerequisite(projectRoot);
|
|
19
|
+
if (!await prerequisite.assertAsync()) {
|
|
20
|
+
await prerequisite.bootstrapAsync();
|
|
21
|
+
}
|
|
22
|
+
const manager = (0, _packageManager().createForProject)(projectRoot);
|
|
23
|
+
try {
|
|
24
|
+
await manager.runBinAsync([
|
|
25
|
+
"eslint",
|
|
26
|
+
"."
|
|
27
|
+
]);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
process.exit(error.status);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=lintAsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lint/lintAsync.ts"],"sourcesContent":["import { createForProject } from '@expo/package-manager';\n\nimport { ESLintProjectPrerequisite } from './ESlintPrerequisite';\n\nexport const lintAsync = async (projectRoot: string) => {\n const prerequisite = new ESLintProjectPrerequisite(projectRoot);\n if (!(await prerequisite.assertAsync())) {\n await prerequisite.bootstrapAsync();\n }\n\n const manager = createForProject(projectRoot);\n try {\n await manager.runBinAsync(['eslint', '.']);\n } catch (error: any) {\n process.exit(error.status);\n }\n};\n"],"names":["lintAsync","projectRoot","prerequisite","ESLintProjectPrerequisite","assertAsync","bootstrapAsync","manager","createForProject","runBinAsync","error","process","exit","status"],"mappings":"AAAA;;;;+BAIaA,WAAS;;aAATA,SAAS;;;yBAJW,uBAAuB;;;;;;oCAEd,sBAAsB;AAEzD,MAAMA,SAAS,GAAG,OAAOC,WAAmB,GAAK;IACtD,MAAMC,YAAY,GAAG,IAAIC,mBAAyB,0BAAA,CAACF,WAAW,CAAC,AAAC;IAChE,IAAI,CAAE,MAAMC,YAAY,CAACE,WAAW,EAAE,AAAC,EAAE;QACvC,MAAMF,YAAY,CAACG,cAAc,EAAE,CAAC;IACtC,CAAC;IAED,MAAMC,OAAO,GAAGC,IAAAA,eAAgB,EAAA,iBAAA,EAACN,WAAW,CAAC,AAAC;IAC9C,IAAI;QACF,MAAMK,OAAO,CAACE,WAAW,CAAC;YAAC,QAAQ;YAAE,GAAG;SAAC,CAAC,CAAC;IAC7C,EAAE,OAAOC,KAAK,EAAO;QACnBC,OAAO,CAACC,IAAI,CAACF,KAAK,CAACG,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,AAAC"}
|