@expo/cli 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -0
- package/build/bin/cli +125 -0
- package/build/bin/cli.map +1 -0
- package/build/src/api/endpoint.js +17 -0
- package/build/src/api/endpoint.js.map +1 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js +21 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
- package/build/src/api/getExpoSchema.js +69 -0
- package/build/src/api/getExpoSchema.js.map +1 -0
- package/build/src/api/getNativeModuleVersions.js +31 -0
- package/build/src/api/getNativeModuleVersions.js.map +1 -0
- package/build/src/api/getProject.js +19 -0
- package/build/src/api/getProject.js.map +1 -0
- package/build/src/api/getProjectDevelopmentCertificate.js +24 -0
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
- package/build/src/api/getVersions.js +37 -0
- package/build/src/api/getVersions.js.map +1 -0
- package/build/src/api/graphql/client.js +104 -0
- package/build/src/api/graphql/client.js.map +1 -0
- package/build/src/api/graphql/generated.js +113 -0
- package/build/src/api/graphql/generated.js.map +1 -0
- package/build/src/api/graphql/queries/UserQuery.js +43 -0
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemCache.js +79 -0
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
- package/build/src/api/rest/cache/response.js +31 -0
- package/build/src/api/rest/cache/response.js.map +1 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
- package/build/src/api/rest/client.js +94 -0
- package/build/src/api/rest/client.js.map +1 -0
- package/build/src/api/rest/client.types.js +6 -0
- package/build/src/api/rest/client.types.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +20 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithOffline.js +39 -0
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProgress.js +59 -0
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
- package/build/src/api/settings.js +11 -0
- package/build/src/api/settings.js.map +1 -0
- package/build/src/api/signManifest.js +38 -0
- package/build/src/api/signManifest.js.map +1 -0
- package/build/src/api/updateDevelopmentSession.js +74 -0
- package/build/src/api/updateDevelopmentSession.js.map +1 -0
- package/build/src/api/user/UserSettings.js +71 -0
- package/build/src/api/user/UserSettings.js.map +1 -0
- package/build/src/api/user/actions.js +97 -0
- package/build/src/api/user/actions.js.map +1 -0
- package/build/src/api/user/otp.js +139 -0
- package/build/src/api/user/otp.js.map +1 -0
- package/build/src/api/user/user.js +114 -0
- package/build/src/api/user/user.js.map +1 -0
- package/build/src/config/configAsync.js +118 -0
- package/build/src/config/configAsync.js.map +1 -0
- package/build/src/config/index.js +85 -0
- package/build/src/config/index.js.map +1 -0
- package/build/src/install/checkPackages.js +74 -0
- package/build/src/install/checkPackages.js.map +1 -0
- package/build/src/install/index.js +76 -0
- package/build/src/install/index.js.map +1 -0
- package/build/src/install/installAsync.js +103 -0
- package/build/src/install/installAsync.js.map +1 -0
- package/build/src/install/resolveOptions.js +99 -0
- package/build/src/install/resolveOptions.js.map +1 -0
- package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
- package/build/src/log.js +74 -0
- package/build/src/log.js.map +1 -0
- package/build/src/login/index.js +76 -0
- package/build/src/login/index.js.map +1 -0
- package/build/src/logout/index.js +63 -0
- package/build/src/logout/index.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +137 -0
- package/build/src/prebuild/clearNativeFolder.js.map +1 -0
- package/build/src/prebuild/configureProjectAsync.js +68 -0
- package/build/src/prebuild/configureProjectAsync.js.map +1 -0
- package/build/src/prebuild/copyTemplateFiles.js +124 -0
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
- package/build/src/prebuild/ensureConfigAsync.js +86 -0
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
- package/build/src/prebuild/index.js +101 -0
- package/build/src/prebuild/index.js.map +1 -0
- package/build/src/prebuild/prebuildAsync.js +112 -0
- package/build/src/prebuild/prebuildAsync.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +97 -0
- package/build/src/prebuild/resolveOptions.js.map +1 -0
- package/build/src/prebuild/resolveTemplate.js +157 -0
- package/build/src/prebuild/resolveTemplate.js.map +1 -0
- package/build/src/prebuild/updateFromTemplate.js +102 -0
- package/build/src/prebuild/updateFromTemplate.js.map +1 -0
- package/build/src/prebuild/updatePackageJson.js +236 -0
- package/build/src/prebuild/updatePackageJson.js.map +1 -0
- package/build/src/prebuild/writeMetroConfig.js +89 -0
- package/build/src/prebuild/writeMetroConfig.js.map +1 -0
- package/build/src/register/index.js +63 -0
- package/build/src/register/index.js.map +1 -0
- package/build/src/register/registerAsync.js +37 -0
- package/build/src/register/registerAsync.js.map +1 -0
- package/build/src/start/doctor/Prerequisite.js +47 -0
- package/build/src/start/doctor/Prerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
- package/build/src/start/index.js +126 -0
- package/build/src/start/index.js.map +1 -0
- package/build/src/start/interface/KeyPressHandler.js +99 -0
- package/build/src/start/interface/KeyPressHandler.js.map +1 -0
- package/build/src/start/interface/commandsTable.js +175 -0
- package/build/src/start/interface/commandsTable.js.map +1 -0
- package/build/src/start/interface/interactiveActions.js +134 -0
- package/build/src/start/interface/interactiveActions.js.map +1 -0
- package/build/src/start/interface/startInterface.js +217 -0
- package/build/src/start/interface/startInterface.js.map +1 -0
- package/build/src/start/platforms/AppIdResolver.js +44 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -0
- package/build/src/start/platforms/DeviceManager.js +43 -0
- package/build/src/start/platforms/DeviceManager.js.map +1 -0
- package/build/src/start/platforms/ExpoGoInstaller.js +108 -0
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
- package/build/src/start/platforms/PlatformManager.js +96 -0
- package/build/src/start/platforms/PlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/ADBServer.js +127 -0
- package/build/src/start/platforms/android/ADBServer.js.map +1 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js +171 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/activateWindow.js +78 -0
- package/build/src/start/platforms/android/activateWindow.js.map +1 -0
- package/build/src/start/platforms/android/adb.js +230 -0
- package/build/src/start/platforms/android/adb.js.map +1 -0
- package/build/src/start/platforms/android/adbReverse.js +84 -0
- package/build/src/start/platforms/android/adbReverse.js.map +1 -0
- package/build/src/start/platforms/android/emulator.js +118 -0
- package/build/src/start/platforms/android/emulator.js.map +1 -0
- package/build/src/start/platforms/android/getDevices.js +36 -0
- package/build/src/start/platforms/android/getDevices.js.map +1 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
- package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
- package/build/src/start/platforms/ios/simctl.js +229 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -0
- package/build/src/start/platforms/ios/xcrun.js +67 -0
- package/build/src/start/platforms/ios/xcrun.js.map +1 -0
- package/build/src/start/project/devices.js +77 -0
- package/build/src/start/project/devices.js.map +1 -0
- package/build/src/start/project/dotExpo.js +74 -0
- package/build/src/start/project/dotExpo.js.map +1 -0
- package/build/src/start/project/settings.js +13 -0
- package/build/src/start/project/settings.js.map +1 -0
- package/build/src/start/resolveOptions.js +156 -0
- package/build/src/start/resolveOptions.js.map +1 -0
- package/build/src/start/server/AsyncNgrok.js +173 -0
- package/build/src/start/server/AsyncNgrok.js.map +1 -0
- package/build/src/start/server/BundlerDevServer.js +252 -0
- package/build/src/start/server/BundlerDevServer.js.map +1 -0
- package/build/src/start/server/DevServerManager.js +142 -0
- package/build/src/start/server/DevServerManager.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +104 -0
- package/build/src/start/server/DevelopmentSession.js.map +1 -0
- package/build/src/start/server/UrlCreator.js +158 -0
- package/build/src/start/server/UrlCreator.js.map +1 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js +100 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.js +87 -0
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
- package/build/src/start/server/metro/instantiateMetro.js +53 -0
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
- package/build/src/start/server/metro/resolveFromProject.js +38 -0
- package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
- package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js +107 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
- package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
- package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
- package/build/src/start/server/middleware/resolvePlatform.js +32 -0
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
- package/build/src/start/server/middleware/server.types.js +6 -0
- package/build/src/start/server/middleware/server.types.js.map +1 -0
- package/build/src/start/server/openPlatforms.js +30 -0
- package/build/src/start/server/openPlatforms.js.map +1 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +303 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
- package/build/src/start/server/webpack/resolveFromProject.js +43 -0
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
- package/build/src/start/server/webpack/tls.js +72 -0
- package/build/src/start/server/webpack/tls.js.map +1 -0
- package/build/src/start/startAsync.js +150 -0
- package/build/src/start/startAsync.js.map +1 -0
- package/build/src/utils/FileNotifier.js +71 -0
- package/build/src/utils/FileNotifier.js.map +1 -0
- package/build/src/utils/analytics/getDevClientProperties.js +41 -0
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
- package/build/src/utils/analytics/rudderstackClient.js +106 -0
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
- package/build/src/utils/ansi.js +17 -0
- package/build/src/utils/ansi.js.map +1 -0
- package/build/src/utils/args.js +63 -0
- package/build/src/utils/args.js.map +1 -0
- package/build/src/utils/array.js +27 -0
- package/build/src/utils/array.js.map +1 -0
- package/build/src/utils/cocoapods.js +143 -0
- package/build/src/utils/cocoapods.js.map +1 -0
- package/build/src/utils/codesigning.js +283 -0
- package/build/src/utils/codesigning.js.map +1 -0
- package/build/src/utils/createFileTransform.js +89 -0
- package/build/src/utils/createFileTransform.js.map +1 -0
- package/build/src/utils/delay.js +39 -0
- package/build/src/utils/delay.js.map +1 -0
- package/build/src/utils/dir.js +34 -0
- package/build/src/utils/dir.js.map +1 -0
- package/build/src/utils/downloadAppAsync.js +71 -0
- package/build/src/utils/downloadAppAsync.js.map +1 -0
- package/build/src/utils/downloadExpoGoAsync.js +93 -0
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
- package/build/src/utils/editor.js +60 -0
- package/build/src/utils/editor.js.map +1 -0
- package/build/src/utils/env.js +59 -0
- package/build/src/utils/env.js.map +1 -0
- package/build/src/utils/errors.js +69 -0
- package/build/src/utils/errors.js.map +1 -0
- package/build/src/utils/exit.js +90 -0
- package/build/src/utils/exit.js.map +1 -0
- package/build/src/utils/findUp.js +33 -0
- package/build/src/utils/findUp.js.map +1 -0
- package/build/src/utils/fn.js +32 -0
- package/build/src/utils/fn.js.map +1 -0
- package/build/src/utils/getOrPromptApplicationId.js +183 -0
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
- package/build/src/utils/getRunningProcess.js +92 -0
- package/build/src/utils/getRunningProcess.js.map +1 -0
- package/build/src/utils/git.js +88 -0
- package/build/src/utils/git.js.map +1 -0
- package/build/src/utils/glob.js +65 -0
- package/build/src/utils/glob.js.map +1 -0
- package/build/src/utils/ip.js +16 -0
- package/build/src/utils/ip.js.map +1 -0
- package/build/src/utils/isModuleSymlinked.js +37 -0
- package/build/src/utils/isModuleSymlinked.js.map +1 -0
- package/build/src/utils/link.js +31 -0
- package/build/src/utils/link.js.map +1 -0
- package/build/src/utils/mergeGitIgnorePaths.js +112 -0
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
- package/build/src/utils/modifyConfigAsync.js +68 -0
- package/build/src/utils/modifyConfigAsync.js.map +1 -0
- package/build/src/utils/modifyConfigPlugins.js +51 -0
- package/build/src/utils/modifyConfigPlugins.js.map +1 -0
- package/build/src/utils/nodeModules.js +118 -0
- package/build/src/utils/nodeModules.js.map +1 -0
- package/build/src/utils/npm.js +144 -0
- package/build/src/utils/npm.js.map +1 -0
- package/build/src/utils/obj.js +45 -0
- package/build/src/utils/obj.js.map +1 -0
- package/build/src/utils/ora.js +102 -0
- package/build/src/utils/ora.js.map +1 -0
- package/build/src/utils/port.js +130 -0
- package/build/src/utils/port.js.map +1 -0
- package/build/src/utils/profile.js +63 -0
- package/build/src/utils/profile.js.map +1 -0
- package/build/src/utils/progress.js +15 -0
- package/build/src/utils/progress.js.map +1 -0
- package/build/src/utils/prompts.js +127 -0
- package/build/src/utils/prompts.js.map +1 -0
- package/build/src/utils/scheme.js +106 -0
- package/build/src/utils/scheme.js.map +1 -0
- package/build/src/utils/tar.js +59 -0
- package/build/src/utils/tar.js.map +1 -0
- package/build/src/utils/url.js +67 -0
- package/build/src/utils/url.js.map +1 -0
- package/build/src/utils/validateApplicationId.js +90 -0
- package/build/src/utils/validateApplicationId.js.map +1 -0
- package/build/src/whoami/index.js +63 -0
- package/build/src/whoami/index.js.map +1 -0
- package/build/src/whoami/whoamiAsync.js +44 -0
- package/build/src/whoami/whoamiAsync.js.map +1 -0
- package/package.json +128 -4
- package/static/loading-page/index.html +270 -0
- package/index.js +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getCombinedKnownVersionsAsync = getCombinedKnownVersionsAsync;
|
|
6
|
+
exports.getRemoteVersionsForSdkAsync = getRemoteVersionsForSdkAsync;
|
|
7
|
+
exports.getVersionedPackagesAsync = getVersionedPackagesAsync;
|
|
8
|
+
exports.getOperationLog = getOperationLog;
|
|
9
|
+
var _npmPackageArg = _interopRequireDefault(require("npm-package-arg"));
|
|
10
|
+
var _getVersions = require("../../../api/getVersions");
|
|
11
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
12
|
+
var _bundledNativeModules = require("./bundledNativeModules");
|
|
13
|
+
function _interopRequireDefault(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function _interopRequireWildcard(obj) {
|
|
19
|
+
if (obj && obj.__esModule) {
|
|
20
|
+
return obj;
|
|
21
|
+
} else {
|
|
22
|
+
var newObj = {};
|
|
23
|
+
if (obj != null) {
|
|
24
|
+
for(var key in obj){
|
|
25
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
26
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
27
|
+
if (desc.get || desc.set) {
|
|
28
|
+
Object.defineProperty(newObj, key, desc);
|
|
29
|
+
} else {
|
|
30
|
+
newObj[key] = obj[key];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
newObj.default = obj;
|
|
36
|
+
return newObj;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Adds `react-dom`, `react`, and `react-native` to the list of known package versions (`relatedPackages`) */ function normalizeSdkVersionObject(version) {
|
|
40
|
+
if (!version) {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
const { relatedPackages , facebookReactVersion , facebookReactNativeVersion } = version;
|
|
44
|
+
const reactVersion = facebookReactVersion ? {
|
|
45
|
+
react: facebookReactVersion,
|
|
46
|
+
"react-dom": facebookReactVersion
|
|
47
|
+
} : undefined;
|
|
48
|
+
return {
|
|
49
|
+
...relatedPackages,
|
|
50
|
+
...reactVersion,
|
|
51
|
+
"react-native": facebookReactNativeVersion
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async function getCombinedKnownVersionsAsync({ projectRoot , sdkVersion , skipCache }) {
|
|
55
|
+
const bundledNativeModules = sdkVersion ? await (0, _bundledNativeModules).getVersionedNativeModulesAsync(projectRoot, sdkVersion) : {};
|
|
56
|
+
const versionsForSdk = await getRemoteVersionsForSdkAsync({
|
|
57
|
+
sdkVersion,
|
|
58
|
+
skipCache
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
...versionsForSdk,
|
|
62
|
+
...bundledNativeModules
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async function getRemoteVersionsForSdkAsync({ sdkVersion , skipCache } = {}) {
|
|
66
|
+
const sdkVersions = await (0, _getVersions).getReleasedVersionsAsync({
|
|
67
|
+
skipCache
|
|
68
|
+
});
|
|
69
|
+
// We only want versioned dependencies so skip if they cannot be found.
|
|
70
|
+
if (!sdkVersion || !(sdkVersion in sdkVersions)) {
|
|
71
|
+
Log.debug(`Skipping versioned dependencies because the SDK version is not found. (sdkVersion: ${sdkVersion}, available: ${Object.keys(sdkVersions).join(", ")})`);
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
const version = sdkVersions[sdkVersion];
|
|
75
|
+
return normalizeSdkVersionObject(version);
|
|
76
|
+
}
|
|
77
|
+
async function getVersionedPackagesAsync(projectRoot, { packages , sdkVersion }) {
|
|
78
|
+
const versionsForSdk = await getCombinedKnownVersionsAsync({
|
|
79
|
+
projectRoot,
|
|
80
|
+
sdkVersion,
|
|
81
|
+
skipCache: true
|
|
82
|
+
});
|
|
83
|
+
let nativeModulesCount = 0;
|
|
84
|
+
let othersCount = 0;
|
|
85
|
+
const versionedPackages = packages.map((arg)=>{
|
|
86
|
+
const { name , type , raw } = (0, _npmPackageArg).default(arg);
|
|
87
|
+
if ([
|
|
88
|
+
"tag",
|
|
89
|
+
"version",
|
|
90
|
+
"range"
|
|
91
|
+
].includes(type) && name && versionsForSdk[name]) {
|
|
92
|
+
// Unimodule packages from npm registry are modified to use the bundled version.
|
|
93
|
+
// Some packages have the recommended version listed in https://exp.host/--/api/v2/versions.
|
|
94
|
+
nativeModulesCount++;
|
|
95
|
+
return `${name}@${versionsForSdk[name]}`;
|
|
96
|
+
} else {
|
|
97
|
+
// Other packages are passed through unmodified.
|
|
98
|
+
othersCount++;
|
|
99
|
+
return raw;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
const messages = getOperationLog({
|
|
103
|
+
othersCount,
|
|
104
|
+
nativeModulesCount,
|
|
105
|
+
sdkVersion
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
packages: versionedPackages,
|
|
109
|
+
messages
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function getOperationLog({ nativeModulesCount , sdkVersion , othersCount }) {
|
|
113
|
+
return [
|
|
114
|
+
nativeModulesCount > 0 && `${nativeModulesCount} SDK ${sdkVersion} compatible native ${nativeModulesCount === 1 ? "module" : "modules"}`,
|
|
115
|
+
othersCount > 0 && `${othersCount} other ${othersCount === 1 ? "package" : "packages"}`,
|
|
116
|
+
].filter(Boolean);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=getVersionedPackages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/doctor/dependencies/getVersionedPackages.ts"],"sourcesContent":["import npmPackageArg from 'npm-package-arg';\n\nimport { getReleasedVersionsAsync, SDKVersion } from '../../../api/getVersions';\nimport * as Log from '../../../log';\nimport { getVersionedNativeModulesAsync } from './bundledNativeModules';\n\nexport type DependencyList = Record<string, string>;\n\n/** Adds `react-dom`, `react`, and `react-native` to the list of known package versions (`relatedPackages`) */\nfunction normalizeSdkVersionObject(version?: SDKVersion): Record<string, string> {\n if (!version) {\n return {};\n }\n const { relatedPackages, facebookReactVersion, facebookReactNativeVersion } = version;\n\n const reactVersion = facebookReactVersion\n ? {\n react: facebookReactVersion,\n 'react-dom': facebookReactVersion,\n }\n : undefined;\n\n return {\n ...relatedPackages,\n ...reactVersion,\n 'react-native': facebookReactNativeVersion,\n };\n}\n\n/** Get the known versions for a given SDK, combines all sources. */\nexport async function getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion,\n skipCache,\n}: {\n projectRoot: string;\n sdkVersion?: string;\n skipCache?: boolean;\n}) {\n const bundledNativeModules = sdkVersion\n ? await getVersionedNativeModulesAsync(projectRoot, sdkVersion)\n : {};\n const versionsForSdk = await getRemoteVersionsForSdkAsync({ sdkVersion, skipCache });\n return {\n ...versionsForSdk,\n ...bundledNativeModules,\n };\n}\n\n/** @returns a key/value list of known dependencies and their version (including range). */\nexport async function getRemoteVersionsForSdkAsync({\n sdkVersion,\n skipCache,\n}: { sdkVersion?: string; skipCache?: boolean } = {}): Promise<DependencyList> {\n const sdkVersions = await getReleasedVersionsAsync({ skipCache });\n\n // We only want versioned dependencies so skip if they cannot be found.\n if (!sdkVersion || !(sdkVersion in sdkVersions)) {\n Log.debug(\n `Skipping versioned dependencies because the SDK version is not found. (sdkVersion: ${sdkVersion}, available: ${Object.keys(\n sdkVersions\n ).join(', ')})`\n );\n return {};\n }\n\n const version = sdkVersions[sdkVersion as keyof typeof sdkVersions] as unknown as SDKVersion;\n\n return normalizeSdkVersionObject(version);\n}\n\n/**\n * Versions a list of `packages` against a given `sdkVersion` based on local and remote versioning resources.\n *\n * @param projectRoot\n * @param param1\n * @returns\n */\nexport async function getVersionedPackagesAsync(\n projectRoot: string,\n {\n packages,\n sdkVersion,\n }: {\n /** List of npm packages to process. */\n packages: string[];\n /** Target SDK Version number to version the `packages` for. */\n sdkVersion: string;\n }\n): Promise<{ packages: string[]; messages: string[] }> {\n const versionsForSdk = await getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion,\n skipCache: true,\n });\n\n let nativeModulesCount = 0;\n let othersCount = 0;\n\n const versionedPackages = packages.map((arg) => {\n const { name, type, raw } = npmPackageArg(arg);\n\n if (['tag', 'version', 'range'].includes(type) && name && versionsForSdk[name]) {\n // Unimodule packages from npm registry are modified to use the bundled version.\n // Some packages have the recommended version listed in https://exp.host/--/api/v2/versions.\n nativeModulesCount++;\n return `${name}@${versionsForSdk[name]}`;\n } else {\n // Other packages are passed through unmodified.\n othersCount++;\n return raw;\n }\n });\n\n const messages = getOperationLog({\n othersCount,\n nativeModulesCount,\n sdkVersion,\n });\n\n return {\n packages: versionedPackages,\n messages,\n };\n}\n\n/** Craft a set of messages regarding the install operations. */\nexport function getOperationLog({\n nativeModulesCount,\n sdkVersion,\n othersCount,\n}: {\n nativeModulesCount: number;\n othersCount: number;\n sdkVersion: string;\n}): string[] {\n return [\n nativeModulesCount > 0 &&\n `${nativeModulesCount} SDK ${sdkVersion} compatible native ${\n nativeModulesCount === 1 ? 'module' : 'modules'\n }`,\n othersCount > 0 && `${othersCount} other ${othersCount === 1 ? 'package' : 'packages'}`,\n ].filter(Boolean) as string[];\n}\n"],"names":["getCombinedKnownVersionsAsync","getRemoteVersionsForSdkAsync","getVersionedPackagesAsync","getOperationLog","Log","normalizeSdkVersionObject","version","relatedPackages","facebookReactVersion","facebookReactNativeVersion","reactVersion","react","undefined","projectRoot","sdkVersion","skipCache","bundledNativeModules","getVersionedNativeModulesAsync","versionsForSdk","sdkVersions","getReleasedVersionsAsync","debug","Object","keys","join","packages","nativeModulesCount","othersCount","versionedPackages","map","arg","name","type","raw","npmPackageArg","includes","messages","filter","Boolean"],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.validateDependenciesVersionsAsync = validateDependenciesVersionsAsync;
|
|
6
|
+
exports.logIncorrectDependencies = logIncorrectDependencies;
|
|
7
|
+
exports.getVersionedDependenciesAsync = getVersionedDependenciesAsync;
|
|
8
|
+
var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
|
|
9
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
10
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
11
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
12
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
13
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
14
|
+
var _errors = require("../../../utils/errors");
|
|
15
|
+
var _getVersionedPackages = require("./getVersionedPackages");
|
|
16
|
+
function _interopRequireDefault(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function _interopRequireWildcard(obj) {
|
|
22
|
+
if (obj && obj.__esModule) {
|
|
23
|
+
return obj;
|
|
24
|
+
} else {
|
|
25
|
+
var newObj = {};
|
|
26
|
+
if (obj != null) {
|
|
27
|
+
for(var key in obj){
|
|
28
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
29
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
30
|
+
if (desc.get || desc.set) {
|
|
31
|
+
Object.defineProperty(newObj, key, desc);
|
|
32
|
+
} else {
|
|
33
|
+
newObj[key] = obj[key];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
newObj.default = obj;
|
|
39
|
+
return newObj;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function validateDependenciesVersionsAsync(projectRoot, exp, pkg, packagesToCheck) {
|
|
43
|
+
const incorrectDeps = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck);
|
|
44
|
+
return logIncorrectDependencies(incorrectDeps);
|
|
45
|
+
}
|
|
46
|
+
function logInvalidDependency({ packageName , expectedVersionOrRange , actualVersion }) {
|
|
47
|
+
Log.warn(// chalk` - {underline ${packageName}} - expected version: {underline ${expectedVersionOrRange}} - actual version installed: {underline ${actualVersion}}`
|
|
48
|
+
_chalk.default` {bold ${packageName}}{cyan @}{red ${actualVersion}} - expected version: {green ${expectedVersionOrRange}}`);
|
|
49
|
+
}
|
|
50
|
+
function logIncorrectDependencies(incorrectDeps) {
|
|
51
|
+
if (!incorrectDeps.length) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
Log.warn(_chalk.default`Some dependencies are incompatible with the installed {bold expo} version:`);
|
|
55
|
+
incorrectDeps.forEach((dep)=>logInvalidDependency(dep)
|
|
56
|
+
);
|
|
57
|
+
const requiredVersions = incorrectDeps.map(({ packageName , expectedVersionOrRange })=>`${packageName}@${expectedVersionOrRange}`
|
|
58
|
+
);
|
|
59
|
+
Log.warn("Your project may not work correctly until you install the correct versions of the packages.\n" + _chalk.default`Install individual packages by running {inverse npx expo install ${requiredVersions.join(" ")}}`);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
async function getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck) {
|
|
63
|
+
// This should never happen under normal circumstances since
|
|
64
|
+
// the CLI is versioned in the `expo` package.
|
|
65
|
+
(0, _assert).default(exp.sdkVersion, "SDK Version is missing");
|
|
66
|
+
// Get from both endpoints and combine the known package versions.
|
|
67
|
+
const combinedKnownPackages = await (0, _getVersionedPackages).getCombinedKnownVersionsAsync({
|
|
68
|
+
projectRoot,
|
|
69
|
+
sdkVersion: exp.sdkVersion
|
|
70
|
+
});
|
|
71
|
+
Log.debug(`Known dependencies: %O`, combinedKnownPackages);
|
|
72
|
+
const resolvedDependencies = (packagesToCheck == null ? void 0 : packagesToCheck.length) ? getFilteredObject(packagesToCheck, {
|
|
73
|
+
...pkg.dependencies,
|
|
74
|
+
...pkg.devDependencies
|
|
75
|
+
}) : pkg.dependencies;
|
|
76
|
+
Log.debug(`Checking dependencies for ${exp.sdkVersion}: %O`, resolvedDependencies);
|
|
77
|
+
// intersection of packages from package.json and bundled native modules
|
|
78
|
+
const resolvedPackagesToCheck = getPackagesToCheck(resolvedDependencies, combinedKnownPackages);
|
|
79
|
+
Log.debug(`Comparing known versions: %O`, resolvedPackagesToCheck);
|
|
80
|
+
// read package versions from the file system (node_modules)
|
|
81
|
+
const packageVersions = await resolvePackageVersionsAsync(projectRoot, resolvedPackagesToCheck);
|
|
82
|
+
Log.debug(`Package versions: %O`, packageVersions);
|
|
83
|
+
// find incorrect dependencies by comparing the actual package versions with the bundled native module version ranges
|
|
84
|
+
const incorrectDeps = findIncorrectDependencies(packageVersions, combinedKnownPackages);
|
|
85
|
+
Log.debug(`Incorrect dependencies: %O`, incorrectDeps);
|
|
86
|
+
return incorrectDeps;
|
|
87
|
+
}
|
|
88
|
+
function getFilteredObject(keys, object) {
|
|
89
|
+
return keys.reduce((acc, key)=>{
|
|
90
|
+
acc[key] = object[key];
|
|
91
|
+
return acc;
|
|
92
|
+
}, {});
|
|
93
|
+
}
|
|
94
|
+
function getPackagesToCheck(dependencies, bundledNativeModules) {
|
|
95
|
+
const dependencyNames = Object.keys(dependencies != null ? dependencies : {});
|
|
96
|
+
const result = [];
|
|
97
|
+
for (const dependencyName of dependencyNames){
|
|
98
|
+
if (dependencyName in bundledNativeModules) {
|
|
99
|
+
result.push(dependencyName);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
async function resolvePackageVersionsAsync(projectRoot, packages) {
|
|
105
|
+
const packageVersionsFromPackageJSON = await Promise.all(packages.map((packageName)=>getPackageVersionAsync(projectRoot, packageName)
|
|
106
|
+
));
|
|
107
|
+
return packages.reduce((acc, packageName, idx)=>{
|
|
108
|
+
acc[packageName] = packageVersionsFromPackageJSON[idx];
|
|
109
|
+
return acc;
|
|
110
|
+
}, {});
|
|
111
|
+
}
|
|
112
|
+
async function getPackageVersionAsync(projectRoot, packageName) {
|
|
113
|
+
let packageJsonPath;
|
|
114
|
+
try {
|
|
115
|
+
packageJsonPath = (0, _resolveFrom).default(projectRoot, `${packageName}/package.json`);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
// This is a workaround for packages using `exports`. If this doesn't
|
|
118
|
+
// include `package.json`, we have to use the error message to get the location.
|
|
119
|
+
if (error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED") {
|
|
120
|
+
var ref;
|
|
121
|
+
packageJsonPath = (ref = error.message.match(/("exports"|defined) in (.*)$/i)) == null ? void 0 : ref[2];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (!packageJsonPath) {
|
|
125
|
+
throw new _errors.CommandError(`"${packageName}" is added as a dependency in your project's package.json but it doesn't seem to be installed. Please run "yarn" or "npm install" to fix this issue.`);
|
|
126
|
+
}
|
|
127
|
+
const packageJson = await _jsonFile.default.readAsync(packageJsonPath);
|
|
128
|
+
return packageJson.version;
|
|
129
|
+
}
|
|
130
|
+
function findIncorrectDependencies(packageVersions, bundledNativeModules) {
|
|
131
|
+
const packages = Object.keys(packageVersions);
|
|
132
|
+
const incorrectDeps = [];
|
|
133
|
+
for (const packageName of packages){
|
|
134
|
+
const expectedVersionOrRange = bundledNativeModules[packageName];
|
|
135
|
+
const actualVersion = packageVersions[packageName];
|
|
136
|
+
if (typeof expectedVersionOrRange === "string" && !_semver.default.intersects(expectedVersionOrRange, actualVersion)) {
|
|
137
|
+
incorrectDeps.push({
|
|
138
|
+
packageName,
|
|
139
|
+
expectedVersionOrRange,
|
|
140
|
+
actualVersion
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return incorrectDeps;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
//# sourceMappingURL=validateDependenciesVersions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/doctor/dependencies/validateDependenciesVersions.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport JsonFile from '@expo/json-file';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { BundledNativeModules } from './bundledNativeModules';\nimport { getCombinedKnownVersionsAsync } from './getVersionedPackages';\n\ninterface IncorrectDependency {\n packageName: string;\n expectedVersionOrRange: string;\n actualVersion: string;\n}\n\n/**\n * Print a list of incorrect dependency versions.\n *\n * @param projectRoot Expo project root.\n * @param exp Expo project config.\n * @param pkg Project's `package.json`.\n * @param packagesToCheck A list of packages to check, if undefined or empty, all will be checked.\n * @returns `true` if there are no incorrect dependencies.\n */\nexport async function validateDependenciesVersionsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'sdkVersion'>,\n pkg: PackageJSONConfig,\n packagesToCheck?: string[]\n): Promise<boolean> {\n const incorrectDeps = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck);\n return logIncorrectDependencies(incorrectDeps);\n}\n\nfunction logInvalidDependency({\n packageName,\n expectedVersionOrRange,\n actualVersion,\n}: IncorrectDependency) {\n Log.warn(\n // chalk` - {underline ${packageName}} - expected version: {underline ${expectedVersionOrRange}} - actual version installed: {underline ${actualVersion}}`\n chalk` {bold ${packageName}}{cyan @}{red ${actualVersion}} - expected version: {green ${expectedVersionOrRange}}`\n );\n}\n\nexport function logIncorrectDependencies(incorrectDeps: IncorrectDependency[]) {\n if (!incorrectDeps.length) {\n return true;\n }\n\n Log.warn(chalk`Some dependencies are incompatible with the installed {bold expo} version:`);\n incorrectDeps.forEach((dep) => logInvalidDependency(dep));\n\n const requiredVersions = incorrectDeps.map(\n ({ packageName, expectedVersionOrRange }) => `${packageName}@${expectedVersionOrRange}`\n );\n\n Log.warn(\n 'Your project may not work correctly until you install the correct versions of the packages.\\n' +\n chalk`Install individual packages by running {inverse npx expo install ${requiredVersions.join(\n ' '\n )}}`\n );\n return false;\n}\n\n/**\n * Return a list of versioned dependencies for the project SDK version.\n *\n * @param projectRoot Expo project root.\n * @param exp Expo project config.\n * @param pkg Project's `package.json`.\n * @param packagesToCheck A list of packages to check, if undefined or empty, all will be checked.\n * @returns A list of incorrect dependencies.\n */\nexport async function getVersionedDependenciesAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'sdkVersion'>,\n pkg: PackageJSONConfig,\n packagesToCheck?: string[]\n): Promise<IncorrectDependency[]> {\n // This should never happen under normal circumstances since\n // the CLI is versioned in the `expo` package.\n assert(exp.sdkVersion, 'SDK Version is missing');\n\n // Get from both endpoints and combine the known package versions.\n const combinedKnownPackages = await getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion: exp.sdkVersion,\n });\n Log.debug(`Known dependencies: %O`, combinedKnownPackages);\n\n const resolvedDependencies = packagesToCheck?.length\n ? // Diff the provided packages to ensure we only check against installed packages.\n getFilteredObject(packagesToCheck, { ...pkg.dependencies, ...pkg.devDependencies })\n : // If no packages are provided, check against the `package.json` `dependencies` object.\n pkg.dependencies;\n Log.debug(`Checking dependencies for ${exp.sdkVersion}: %O`, resolvedDependencies);\n\n // intersection of packages from package.json and bundled native modules\n const resolvedPackagesToCheck = getPackagesToCheck(resolvedDependencies, combinedKnownPackages);\n Log.debug(`Comparing known versions: %O`, resolvedPackagesToCheck);\n // read package versions from the file system (node_modules)\n const packageVersions = await resolvePackageVersionsAsync(projectRoot, resolvedPackagesToCheck);\n Log.debug(`Package versions: %O`, packageVersions);\n // find incorrect dependencies by comparing the actual package versions with the bundled native module version ranges\n const incorrectDeps = findIncorrectDependencies(packageVersions, combinedKnownPackages);\n Log.debug(`Incorrect dependencies: %O`, incorrectDeps);\n\n return incorrectDeps;\n}\n\nfunction getFilteredObject(keys: string[], object: Record<string, string>) {\n return keys.reduce<Record<string, string>>((acc, key) => {\n acc[key] = object[key];\n return acc;\n }, {});\n}\n\nfunction getPackagesToCheck(\n dependencies: Record<string, string> | null | undefined,\n bundledNativeModules: BundledNativeModules\n): string[] {\n const dependencyNames = Object.keys(dependencies ?? {});\n const result: string[] = [];\n for (const dependencyName of dependencyNames) {\n if (dependencyName in bundledNativeModules) {\n result.push(dependencyName);\n }\n }\n return result;\n}\n\nasync function resolvePackageVersionsAsync(\n projectRoot: string,\n packages: string[]\n): Promise<Record<string, string>> {\n const packageVersionsFromPackageJSON = await Promise.all(\n packages.map((packageName) => getPackageVersionAsync(projectRoot, packageName))\n );\n return packages.reduce((acc, packageName, idx) => {\n acc[packageName] = packageVersionsFromPackageJSON[idx];\n return acc;\n }, {} as Record<string, string>);\n}\n\nasync function getPackageVersionAsync(projectRoot: string, packageName: string): Promise<string> {\n let packageJsonPath: string | undefined;\n try {\n packageJsonPath = resolveFrom(projectRoot, `${packageName}/package.json`);\n } catch (error: any) {\n // This is a workaround for packages using `exports`. If this doesn't\n // include `package.json`, we have to use the error message to get the location.\n if (error.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {\n packageJsonPath = error.message.match(/(\"exports\"|defined) in (.*)$/i)?.[2];\n }\n }\n if (!packageJsonPath) {\n throw new CommandError(\n `\"${packageName}\" is added as a dependency in your project's package.json but it doesn't seem to be installed. Please run \"yarn\" or \"npm install\" to fix this issue.`\n );\n }\n const packageJson = await JsonFile.readAsync<BundledNativeModules>(packageJsonPath);\n return packageJson.version;\n}\n\nfunction findIncorrectDependencies(\n packageVersions: Record<string, string>,\n bundledNativeModules: BundledNativeModules\n): IncorrectDependency[] {\n const packages = Object.keys(packageVersions);\n const incorrectDeps: IncorrectDependency[] = [];\n for (const packageName of packages) {\n const expectedVersionOrRange = bundledNativeModules[packageName];\n const actualVersion = packageVersions[packageName];\n if (\n typeof expectedVersionOrRange === 'string' &&\n !semver.intersects(expectedVersionOrRange, actualVersion)\n ) {\n incorrectDeps.push({\n packageName,\n expectedVersionOrRange,\n actualVersion,\n });\n }\n }\n return incorrectDeps;\n}\n"],"names":["validateDependenciesVersionsAsync","logIncorrectDependencies","getVersionedDependenciesAsync","Log","projectRoot","exp","pkg","packagesToCheck","incorrectDeps","logInvalidDependency","packageName","expectedVersionOrRange","actualVersion","warn","chalk","length","forEach","dep","requiredVersions","map","join","assert","sdkVersion","combinedKnownPackages","getCombinedKnownVersionsAsync","debug","resolvedDependencies","getFilteredObject","dependencies","devDependencies","resolvedPackagesToCheck","getPackagesToCheck","packageVersions","resolvePackageVersionsAsync","findIncorrectDependencies","keys","object","reduce","acc","key","bundledNativeModules","dependencyNames","Object","result","dependencyName","push","packages","packageVersionsFromPackageJSON","Promise","all","getPackageVersionAsync","idx","packageJsonPath","resolveFrom","error","code","message","match","CommandError","packageJson","JsonFile","readAsync","version","semver","intersects"],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var PackageManager = _interopRequireWildcard(require("@expo/package-manager"));
|
|
6
|
+
var _requireg = _interopRequireDefault(require("requireg"));
|
|
7
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
8
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
9
|
+
var Log = _interopRequireWildcard(require("../../../log"));
|
|
10
|
+
var _delay = require("../../../utils/delay");
|
|
11
|
+
var _env = require("../../../utils/env");
|
|
12
|
+
var _errors = require("../../../utils/errors");
|
|
13
|
+
var _prompts = require("../../../utils/prompts");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function _interopRequireWildcard(obj) {
|
|
20
|
+
if (obj && obj.__esModule) {
|
|
21
|
+
return obj;
|
|
22
|
+
} else {
|
|
23
|
+
var newObj = {};
|
|
24
|
+
if (obj != null) {
|
|
25
|
+
for(var key in obj){
|
|
26
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
27
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
28
|
+
if (desc.get || desc.set) {
|
|
29
|
+
Object.defineProperty(newObj, key, desc);
|
|
30
|
+
} else {
|
|
31
|
+
newObj[key] = obj[key];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
newObj.default = obj;
|
|
37
|
+
return newObj;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
var _ref;
|
|
41
|
+
class ExternalModuleVersionError extends _errors.CommandError {
|
|
42
|
+
constructor(message, shouldGloballyInstall){
|
|
43
|
+
super("EXTERNAL_MODULE_VERSION", message);
|
|
44
|
+
this.shouldGloballyInstall = shouldGloballyInstall;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.ExternalModuleVersionError = ExternalModuleVersionError;
|
|
48
|
+
class ExternalModule {
|
|
49
|
+
constructor(projectRoot, pkg, promptMessage){
|
|
50
|
+
this.projectRoot = projectRoot;
|
|
51
|
+
this.pkg = pkg;
|
|
52
|
+
this.promptMessage = promptMessage;
|
|
53
|
+
this.instance = null;
|
|
54
|
+
}
|
|
55
|
+
/** Resolve the globally or locally installed instance, or prompt to install. */ async resolveAsync({ prefersGlobalInstall , ...options } = {}) {
|
|
56
|
+
try {
|
|
57
|
+
var ref;
|
|
58
|
+
return (ref = this.getVersioned()) != null ? ref : this.installAsync({
|
|
59
|
+
...options,
|
|
60
|
+
shouldGloballyInstall: prefersGlobalInstall
|
|
61
|
+
});
|
|
62
|
+
} catch (error) {
|
|
63
|
+
if (error instanceof ExternalModuleVersionError) {
|
|
64
|
+
var _shouldGloballyInstall;
|
|
65
|
+
// If the module version in not compliant with the version range,
|
|
66
|
+
// we should prompt the user to install the package where it already exists.
|
|
67
|
+
return this.installAsync({
|
|
68
|
+
...options,
|
|
69
|
+
shouldGloballyInstall: (_shouldGloballyInstall = error.shouldGloballyInstall) != null ? _shouldGloballyInstall : prefersGlobalInstall
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Prompt the user to install the package and try again. */ async installAsync({ shouldPrompt =true , autoInstall , shouldGloballyInstall } = {}) {
|
|
76
|
+
const packageName = [
|
|
77
|
+
this.pkg.name,
|
|
78
|
+
this.pkg.versionRange
|
|
79
|
+
].join("@");
|
|
80
|
+
if (!autoInstall) {
|
|
81
|
+
// Delay the prompt so it doesn't conflict with other dev tool logs
|
|
82
|
+
await (0, _delay).delayAsync(100);
|
|
83
|
+
}
|
|
84
|
+
const answer = autoInstall || shouldPrompt && await (0, _prompts).confirmAsync({
|
|
85
|
+
message: this.promptMessage(packageName),
|
|
86
|
+
initial: true
|
|
87
|
+
});
|
|
88
|
+
if (answer) {
|
|
89
|
+
Log.log(`Installing ${packageName}...`);
|
|
90
|
+
// Always use npm for global installs
|
|
91
|
+
const packageManager = shouldGloballyInstall ? new PackageManager.NpmPackageManager({
|
|
92
|
+
cwd: this.projectRoot,
|
|
93
|
+
log: Log.log,
|
|
94
|
+
silent: !_env.env.EXPO_DEBUG
|
|
95
|
+
}) : PackageManager.createForProject(this.projectRoot, {
|
|
96
|
+
silent: !_env.env.EXPO_DEBUG
|
|
97
|
+
});
|
|
98
|
+
try {
|
|
99
|
+
if (shouldGloballyInstall) {
|
|
100
|
+
await packageManager.addGlobalAsync(packageName);
|
|
101
|
+
} else {
|
|
102
|
+
await packageManager.addDevAsync(packageName);
|
|
103
|
+
}
|
|
104
|
+
Log.log(`Installed ${packageName}`);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
error.message = `Failed to install ${packageName} ${shouldGloballyInstall ? "globally" : "locally"}: ${error.message}`;
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
return await this.resolveAsync({
|
|
110
|
+
shouldPrompt: false
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
throw new _errors.CommandError("EXTERNAL_MODULE_AVAILABILITY", `Please install ${packageName} and try again`);
|
|
114
|
+
}
|
|
115
|
+
/** Get the module. */ get() {
|
|
116
|
+
try {
|
|
117
|
+
return this.getVersioned();
|
|
118
|
+
} catch {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Get the module, throws if the module is not versioned correctly. */ getVersioned() {
|
|
123
|
+
var ref, _instance;
|
|
124
|
+
(_instance = (_ref = this).instance) != null ? _instance : _ref.instance = (ref = this._resolveModule(true)) != null ? ref : this._resolveModule(false);
|
|
125
|
+
return this.instance;
|
|
126
|
+
}
|
|
127
|
+
/** Exposed for testing. */ _require(moduleId) {
|
|
128
|
+
return require(moduleId);
|
|
129
|
+
}
|
|
130
|
+
/** Resolve a copy that's installed in the project. Exposed for testing. */ _resolveLocal(moduleId) {
|
|
131
|
+
return (0, _resolveFrom).default(this.projectRoot, moduleId);
|
|
132
|
+
}
|
|
133
|
+
/** Resolve a copy that's installed globally. Exposed for testing. */ _resolveGlobal(moduleId) {
|
|
134
|
+
return _requireg.default.resolve(moduleId);
|
|
135
|
+
}
|
|
136
|
+
/** Resolve the module and verify the version. Exposed for testing. */ _resolveModule(isLocal) {
|
|
137
|
+
const resolver = isLocal ? this._resolveLocal.bind(this) : this._resolveGlobal.bind(this);
|
|
138
|
+
try {
|
|
139
|
+
const packageJsonPath = resolver(`${this.pkg.name}/package.json`);
|
|
140
|
+
const packageJson = this._require(packageJsonPath);
|
|
141
|
+
if (packageJson) {
|
|
142
|
+
if (_semver.default.satisfies(packageJson.version, this.pkg.versionRange)) {
|
|
143
|
+
const modulePath = resolver(this.pkg.name);
|
|
144
|
+
const requiredModule = this._require(modulePath);
|
|
145
|
+
if (requiredModule == null) {
|
|
146
|
+
throw new _errors.CommandError("EXTERNAL_MODULE_EXPORT", `${this.pkg.name} exports a nullish value, which is not allowed.`);
|
|
147
|
+
}
|
|
148
|
+
return requiredModule;
|
|
149
|
+
}
|
|
150
|
+
throw new ExternalModuleVersionError(`Required module '${this.pkg.name}@${packageJson.version}' does not satisfy ${this.pkg.versionRange}. Installed at: ${packageJsonPath}`, !isLocal);
|
|
151
|
+
}
|
|
152
|
+
} catch (error) {
|
|
153
|
+
if (error instanceof _errors.CommandError) {
|
|
154
|
+
throw error;
|
|
155
|
+
} else if (error.code !== "MODULE_NOT_FOUND") {
|
|
156
|
+
Log.debug("[External Module] Failed to resolve module", error.message);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.ExternalModule = ExternalModule;
|
|
163
|
+
|
|
164
|
+
//# sourceMappingURL=ExternalModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/doctor/ngrok/ExternalModule.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport requireGlobal from 'requireg';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { delayAsync } from '../../../utils/delay';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { confirmAsync } from '../../../utils/prompts';\n\n/** An error that is thrown when a package is installed but doesn't meet the version criteria. */\nexport class ExternalModuleVersionError extends CommandError {\n constructor(message: string, public readonly shouldGloballyInstall: boolean) {\n super('EXTERNAL_MODULE_VERSION', message);\n }\n}\n\ninterface PromptOptions {\n /** Should prompt the user to install, when false the module will just assert on missing packages, default `true`. Ignored when `autoInstall` is true. */\n shouldPrompt?: boolean;\n /** Should automatically install the package without prompting, default `false` */\n autoInstall?: boolean;\n}\n\nexport interface InstallPromptOptions extends PromptOptions {\n /** Should install the package globally, default `false` */\n shouldGloballyInstall?: boolean;\n}\n\nexport interface ResolvePromptOptions extends PromptOptions {\n /**\n * Prefer to install the package globally, this can be overridden if the function\n * detects that a locally installed package simply needs an upgrade, default `false`\n */\n prefersGlobalInstall?: boolean;\n}\n\n/** Resolves a local or globally installed package, prompts to install if missing. */\nexport class ExternalModule<TModule> {\n private instance: TModule | null = null;\n\n constructor(\n /** Project root for checking if the package is installed locally. */\n private projectRoot: string,\n /** Info on the external package. */\n private pkg: {\n /** NPM package name. */\n name: string;\n /** Required semver range, ex: `^1.0.0`. */\n versionRange: string;\n },\n /** A function used to create the installation prompt message. */\n private promptMessage: (pkgName: string) => string\n ) {}\n\n /** Resolve the globally or locally installed instance, or prompt to install. */\n async resolveAsync({\n prefersGlobalInstall,\n ...options\n }: ResolvePromptOptions = {}): Promise<TModule> {\n try {\n return (\n this.getVersioned() ??\n this.installAsync({\n ...options,\n shouldGloballyInstall: prefersGlobalInstall,\n })\n );\n } catch (error: any) {\n if (error instanceof ExternalModuleVersionError) {\n // If the module version in not compliant with the version range,\n // we should prompt the user to install the package where it already exists.\n return this.installAsync({\n ...options,\n shouldGloballyInstall: error.shouldGloballyInstall ?? prefersGlobalInstall,\n });\n }\n throw error;\n }\n }\n\n /** Prompt the user to install the package and try again. */\n async installAsync({\n shouldPrompt = true,\n autoInstall,\n shouldGloballyInstall,\n }: InstallPromptOptions = {}): Promise<TModule> {\n const packageName = [this.pkg.name, this.pkg.versionRange].join('@');\n if (!autoInstall) {\n // Delay the prompt so it doesn't conflict with other dev tool logs\n await delayAsync(100);\n }\n const answer =\n autoInstall ||\n (shouldPrompt &&\n (await confirmAsync({\n message: this.promptMessage(packageName),\n initial: true,\n })));\n if (answer) {\n Log.log(`Installing ${packageName}...`);\n\n // Always use npm for global installs\n const packageManager = shouldGloballyInstall\n ? new PackageManager.NpmPackageManager({\n cwd: this.projectRoot,\n log: Log.log,\n silent: !env.EXPO_DEBUG,\n })\n : PackageManager.createForProject(this.projectRoot, {\n silent: !env.EXPO_DEBUG,\n });\n\n try {\n if (shouldGloballyInstall) {\n await packageManager.addGlobalAsync(packageName);\n } else {\n await packageManager.addDevAsync(packageName);\n }\n Log.log(`Installed ${packageName}`);\n } catch (error: any) {\n error.message = `Failed to install ${packageName} ${\n shouldGloballyInstall ? 'globally' : 'locally'\n }: ${error.message}`;\n throw error;\n }\n return await this.resolveAsync({ shouldPrompt: false });\n }\n\n throw new CommandError(\n 'EXTERNAL_MODULE_AVAILABILITY',\n `Please install ${packageName} and try again`\n );\n }\n\n /** Get the module. */\n get(): TModule | null {\n try {\n return this.getVersioned();\n } catch {\n return null;\n }\n }\n\n /** Get the module, throws if the module is not versioned correctly. */\n getVersioned(): TModule | null {\n this.instance ??= this._resolveModule(true) ?? this._resolveModule(false);\n return this.instance;\n }\n\n /** Exposed for testing. */\n _require(moduleId: string): any {\n return require(moduleId);\n }\n\n /** Resolve a copy that's installed in the project. Exposed for testing. */\n _resolveLocal(moduleId: string): string {\n return resolveFrom(this.projectRoot, moduleId);\n }\n\n /** Resolve a copy that's installed globally. Exposed for testing. */\n _resolveGlobal(moduleId: string): string {\n return requireGlobal.resolve(moduleId);\n }\n\n /** Resolve the module and verify the version. Exposed for testing. */\n _resolveModule(isLocal: boolean): TModule | null {\n const resolver = isLocal ? this._resolveLocal.bind(this) : this._resolveGlobal.bind(this);\n try {\n const packageJsonPath = resolver(`${this.pkg.name}/package.json`);\n const packageJson = this._require(packageJsonPath);\n if (packageJson) {\n if (semver.satisfies(packageJson.version, this.pkg.versionRange)) {\n const modulePath = resolver(this.pkg.name);\n const requiredModule = this._require(modulePath);\n if (requiredModule == null) {\n throw new CommandError(\n 'EXTERNAL_MODULE_EXPORT',\n `${this.pkg.name} exports a nullish value, which is not allowed.`\n );\n }\n return requiredModule;\n }\n throw new ExternalModuleVersionError(\n `Required module '${this.pkg.name}@${packageJson.version}' does not satisfy ${this.pkg.versionRange}. Installed at: ${packageJsonPath}`,\n !isLocal\n );\n }\n } catch (error: any) {\n if (error instanceof CommandError) {\n throw error;\n } else if (error.code !== 'MODULE_NOT_FOUND') {\n Log.debug('[External Module] Failed to resolve module', error.message);\n }\n }\n return null;\n }\n}\n"],"names":["PackageManager","Log","ExternalModuleVersionError","CommandError","constructor","message","shouldGloballyInstall","ExternalModule","projectRoot","pkg","promptMessage","instance","resolveAsync","prefersGlobalInstall","options","getVersioned","installAsync","error","shouldPrompt","autoInstall","packageName","name","versionRange","join","delayAsync","answer","confirmAsync","initial","log","packageManager","NpmPackageManager","cwd","silent","env","EXPO_DEBUG","createForProject","addGlobalAsync","addDevAsync","get","_resolveModule","_require","moduleId","require","_resolveLocal","resolveFrom","_resolveGlobal","requireGlobal","resolve","isLocal","resolver","bind","packageJsonPath","packageJson","semver","satisfies","version","modulePath","requiredModule","code","debug"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _externalModule = require("./ExternalModule");
|
|
6
|
+
class NgrokResolver extends _externalModule.ExternalModule {
|
|
7
|
+
constructor(projectRoot){
|
|
8
|
+
super(projectRoot, {
|
|
9
|
+
name: "@expo/ngrok",
|
|
10
|
+
versionRange: "^4.1.0"
|
|
11
|
+
}, (packageName)=>`The package ${packageName} is required to use tunnels, would you like to install it globally?`
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.NgrokResolver = NgrokResolver;
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=NgrokResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/doctor/ngrok/NgrokResolver.ts"],"sourcesContent":["import { ExternalModule } from './ExternalModule';\n\nexport interface NgrokOptions {\n authtoken?: string;\n port?: string | number | null;\n host?: string;\n httpauth?: string;\n region?: string;\n configPath?: string;\n\n proto?: 'http' | 'tcp' | 'tls';\n addr?: string;\n inspect?: boolean;\n auth?: string;\n host_header?: string;\n bind_tls?: true | false | 'both';\n subdomain?: string;\n hostname?: string;\n crt?: string;\n key?: string;\n client_cas?: string;\n remote_addr?: string;\n}\n\nexport interface NgrokInstance {\n getActiveProcess(): { pid: number };\n connect(\n props: {\n hostname: string;\n configPath: string;\n onStatusChange: (status: string) => void;\n } & NgrokOptions\n ): Promise<string>;\n kill(): Promise<void>;\n}\n\n/** Resolves the ngrok instance from local or globally installed package. */\nexport class NgrokResolver extends ExternalModule<NgrokInstance> {\n constructor(projectRoot: string) {\n super(\n projectRoot,\n {\n name: '@expo/ngrok',\n versionRange: '^4.1.0',\n },\n (packageName) =>\n `The package ${packageName} is required to use tunnels, would you like to install it globally?`\n );\n }\n}\n"],"names":["NgrokResolver","ExternalModule","constructor","projectRoot","name","versionRange","packageName"],"mappings":"AAAA;;;;AAA+B,IAAA,eAAkB,WAAlB,kBAAkB,CAAA;AAqC1C,MAAMA,aAAa,SAASC,eAAc,eAAA;IAC/CC,YAAYC,WAAmB,CAAE;QAC/B,KAAK,CACHA,WAAW,EACX;YACEC,IAAI,EAAE,aAAa;YACnBC,YAAY,EAAE,QAAQ;SACvB,EACD,CAACC,WAAW,GACV,CAAC,YAAY,EAAEA,WAAW,CAAC,mEAAmE,CAAC;QAAA,CAClG,CAAC;KACH;CACF;QAZYN,aAAa,GAAbA,aAAa"}
|