1 | {"version":3,"file":"Doctor.js","names":["_config","data","require","_schemer","_interopRequireWildcard","_spawnAsync","_interopRequireDefault","_child_process","_getenv","_isReachable","_memoize","_resolveFrom","_semver","_internal2","_TerminalLink","_profileMethod","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","NO_ISSUES","exports","WARNING","ERROR","FATAL","MIN_WATCHMAN_VERSION","MIN_NPM_VERSION","CORRECT_NPM_VERSION","WARN_NPM_VERSION_RANGES","BAD_NPM_VERSION_RANGES","EXPO_NO_DOCTOR","getenv","boolish","_isNpmVersionWithinRanges","npmVersion","ranges","some","range","semver","satisfies","_checkNpmVersionAsync","projectRoot","yarnVersionResponse","spawnAsync","status","execSync","stdio","toString","trim","lt","ProjectUtils","logError","logWarning","clearNotification","_checkWatchmanVersionAsync","Watchman","isPlatformSupported","watchmanVersion","unblockAndGetVersionAsync","validSemver","valid","gte","validNewVersion","test","warningMessage","process","platform","validateWithSchema","_internal","exp","schema","configName","validateAssets","schemaErrorMessage","assetsErrorMessage","validator","Schemer","rootDir","validateSchemaAsync","e","SchemerError","errors","length","learnMore","map","formatValidationError","join","validateAssetsAsync","validationError","fieldPath","message","_validateExpJsonAsync","pkg","allowNetwork","skipSDKVersionRequirement","sdkVersion","configFilename","env","EXPO_SKIP_MANIFEST_VALIDATION_TOKEN","sdkVersions","Versions","sdkVersionsAsync","keys","ExpSchema","getSchemaAsync","reactNativeIssue","_validateReactNativeVersionAsync","resolveReactNativeVersionFromProjectRoot","memoize","resolveFrom","version","_pkg$dependencies","_pkg$devDependencies","_pkg$peerDependencies","_pkg$dependencies2","reactNative","dependencies","devDependencies","peerDependencies","gteSdkVersion","isExpoForkedReactNative","isDetached","exactReactNativeVersion","profileMethod","facebookReactNativeVersion","anyReactNativePatchVersion","reactNativeTag","match","sdkVersionObject","major","parseSdkVersionFromTag","_validateNodeModulesAsync","silent","validateWithoutNetworkAsync","options","validateAsync","validateWithNetworkAsync","getConfig","strict","expStatus","Math","max","nodeModulesStatus","validateExpoServersAsync","domains","attempts","Promise","all","domain","reachable","isReachable","failures","filter","attempt","forEach","failure","console","log"],"sources":["../../src/project/Doctor.ts"],"sourcesContent":["import { configFilename, ExpoConfig, getConfig, PackageJSONConfig } from '@expo/config';\nimport Schemer, { SchemerError, ValidationError } from '@expo/schemer';\nimport spawnAsync from '@expo/spawn-async';\nimport { execSync } from 'child_process';\nimport getenv from 'getenv';\nimport isReachable from 'is-reachable';\nimport memoize from 'lodash/memoize';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { ExpSchema, ProjectUtils, Versions, Watchman } from '../internal';\nimport { learnMore } from '../logs/TerminalLink';\nimport { profileMethod } from '../utils/profileMethod';\n\nexport const NO_ISSUES = 0;\nexport const WARNING = 1;\nexport const ERROR = 2;\nexport const FATAL = 3;\n\nconst MIN_WATCHMAN_VERSION = '4.6.0';\nconst MIN_NPM_VERSION = '3.0.0';\nconst CORRECT_NPM_VERSION = 'latest';\nconst WARN_NPM_VERSION_RANGES = ['>= 5.0.0 < 5.7.0'];\nconst BAD_NPM_VERSION_RANGES = ['>= 5.0.0 <= 5.0.3'];\n\nconst EXPO_NO_DOCTOR = getenv.boolish('EXPO_NO_DOCTOR', false);\n\nfunction _isNpmVersionWithinRanges(npmVersion: string, ranges: string[]) {\n return ranges.some(range => semver.satisfies(npmVersion, range));\n}\n\nasync function _checkNpmVersionAsync(projectRoot: string) {\n try {\n try {\n const yarnVersionResponse = await spawnAsync('yarnpkg', ['--version']);\n if (yarnVersionResponse.status === 0) {\n return NO_ISSUES;\n }\n } catch {}\n\n const npmVersion = execSync('npm --version', { stdio: 'pipe' }).toString().trim();\n\n if (\n semver.lt(npmVersion, MIN_NPM_VERSION) ||\n _isNpmVersionWithinRanges(npmVersion, BAD_NPM_VERSION_RANGES)\n ) {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n `Error: You are using npm version ${npmVersion}. We recommend the latest version ${CORRECT_NPM_VERSION}. To install it, run 'npm i -g npm@${CORRECT_NPM_VERSION}'.`,\n 'doctor-npm-version'\n );\n return WARNING;\n } else if (_isNpmVersionWithinRanges(npmVersion, WARN_NPM_VERSION_RANGES)) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: You are using npm version ${npmVersion}. There may be bugs in this version, use it at your own risk. We recommend version ${CORRECT_NPM_VERSION}.`,\n 'doctor-npm-version'\n );\n } else {\n ProjectUtils.clearNotification(projectRoot, 'doctor-npm-version');\n }\n } catch {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: Could not determine npm version. Make sure your version is >= ${MIN_NPM_VERSION} - we recommend ${CORRECT_NPM_VERSION}.`,\n 'doctor-npm-version'\n );\n return WARNING;\n }\n\n return NO_ISSUES;\n}\n\nasync function _checkWatchmanVersionAsync(projectRoot: string) {\n // There's no point in checking any of this stuff if watchman isn't supported on this platform\n if (!Watchman.isPlatformSupported()) {\n ProjectUtils.clearNotification(projectRoot, 'doctor-watchman-version');\n return;\n }\n\n const watchmanVersion = await Watchman.unblockAndGetVersionAsync(projectRoot);\n\n // If we can't get the watchman version, `getVersionAsync` will return `null`\n if (!watchmanVersion) {\n // watchman is probably just not installed\n ProjectUtils.clearNotification(projectRoot, 'doctor-watchman-version');\n return;\n }\n\n // Watchman versioning through homebrew is changed from semver to date since \"2021.05.31.00\"\n // see: https://github.com/Homebrew/homebrew-core/commit/d299c2867503cb6ad8d90792343993c80e745071\n const validSemver =\n !!semver.valid(watchmanVersion) && semver.gte(watchmanVersion, MIN_WATCHMAN_VERSION);\n\n // This new format is used later than the MIN_WATCHMAN_VERSION, we assume/estimate if the version is correct here.\n const validNewVersion =\n !validSemver && /[0-9]{4}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}/.test(watchmanVersion);\n\n if (!validSemver && !validNewVersion) {\n let warningMessage = `Warning: You are using an old version of watchman (v${watchmanVersion}).\\n\\nIt is recommend to always use the latest version, or at least v${MIN_WATCHMAN_VERSION}.`;\n\n // Add a note about homebrew if the user is on a Mac\n if (process.platform === 'darwin') {\n warningMessage += `\\n\\nIf you are using homebrew, try:\\nbrew uninstall watchman; brew install watchman`;\n }\n ProjectUtils.logWarning(projectRoot, 'expo', warningMessage, 'doctor-watchman-version');\n return;\n }\n\n ProjectUtils.clearNotification(projectRoot, 'doctor-watchman-version');\n}\n\nasync function validateWithSchema(\n projectRoot: string,\n {\n // Extract internal from the config object.\n _internal,\n ...exp\n }: ExpoConfig,\n schema: any,\n configName: string,\n validateAssets: boolean\n): Promise<{ schemaErrorMessage: string | undefined; assetsErrorMessage: string | undefined }> {\n let schemaErrorMessage;\n let assetsErrorMessage;\n const validator = new Schemer(schema, { rootDir: projectRoot });\n\n // Validate the schema itself\n try {\n await validator.validateSchemaAsync(exp);\n } catch (e: any) {\n if (e instanceof SchemerError) {\n schemaErrorMessage = `Error: Problem${\n e.errors.length > 1 ? 's' : ''\n } validating fields in ${configName}. ${learnMore(\n 'https://docs.expo.dev/workflow/configuration/'\n )}`;\n schemaErrorMessage += e.errors.map(formatValidationError).join('');\n }\n }\n\n if (validateAssets) {\n try {\n await validator.validateAssetsAsync(exp);\n } catch (e: any) {\n if (e instanceof SchemerError) {\n assetsErrorMessage = `Error: Problem${\n e.errors.length > 1 ? '' : 's'\n } validating asset fields in ${configName}. ${learnMore('https://docs.expo.dev/')}`;\n assetsErrorMessage += e.errors.map(formatValidationError).join('');\n }\n }\n }\n return { schemaErrorMessage, assetsErrorMessage };\n}\n\nfunction formatValidationError(validationError: ValidationError) {\n return `\\n • ${validationError.fieldPath ? 'Field: ' + validationError.fieldPath + ' - ' : ''}${\n validationError.message\n }.`;\n}\n\nasync function _validateExpJsonAsync(\n exp: ExpoConfig,\n pkg: PackageJSONConfig,\n projectRoot: string,\n allowNetwork: boolean,\n skipSDKVersionRequirement: boolean | undefined\n): Promise<number> {\n if (!exp || !pkg) {\n // getConfig already logged an error\n return FATAL;\n }\n\n try {\n await _checkWatchmanVersionAsync(projectRoot);\n } catch (e: any) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: Problem checking watchman version. ${e.message}.`,\n 'doctor-problem-checking-watchman-version'\n );\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-problem-checking-watchman-version');\n\n const sdkVersion = exp.sdkVersion;\n const configName = configFilename(projectRoot);\n\n // Warn if sdkVersion is UNVERSIONED\n if (sdkVersion === 'UNVERSIONED' && !process.env.EXPO_SKIP_MANIFEST_VALIDATION_TOKEN) {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n `Error: Using unversioned Expo SDK. Do not publish until you set sdkVersion in ${configName}`,\n 'doctor-unversioned'\n );\n return ERROR;\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-unversioned');\n const sdkVersions = await Versions.sdkVersionsAsync();\n if (!sdkVersions) {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n `Error: Couldn't connect to SDK versions server`,\n 'doctor-versions-endpoint-failed'\n );\n return ERROR;\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-versions-endpoint-failed');\n\n if (!skipSDKVersionRequirement && (!sdkVersion || !sdkVersions[sdkVersion])) {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n `Error: Invalid sdkVersion. Valid options are ${Object.keys(sdkVersions).join(', ')}`,\n 'doctor-invalid-sdk-version'\n );\n return ERROR;\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-invalid-sdk-version');\n\n // Skip validation if the correct token is set in env\n if (sdkVersion && sdkVersion !== 'UNVERSIONED') {\n try {\n const schema = await ExpSchema.getSchemaAsync(sdkVersion);\n const { schemaErrorMessage, assetsErrorMessage } = await validateWithSchema(\n projectRoot,\n exp,\n schema,\n configName,\n allowNetwork\n );\n\n if (schemaErrorMessage) {\n ProjectUtils.logError(projectRoot, 'expo', schemaErrorMessage, 'doctor-schema-validation');\n } else {\n ProjectUtils.clearNotification(projectRoot, 'doctor-schema-validation');\n }\n if (assetsErrorMessage) {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n assetsErrorMessage,\n `doctor-validate-asset-fields`\n );\n } else {\n ProjectUtils.clearNotification(projectRoot, `doctor-validate-asset-fields`);\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-schema-validation-exception');\n if (schemaErrorMessage || assetsErrorMessage) return ERROR;\n } catch (e: any) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: Problem validating ${configName}: ${e.message}.`,\n 'doctor-schema-validation-exception'\n );\n }\n }\n\n if (sdkVersion) {\n const reactNativeIssue = await _validateReactNativeVersionAsync(\n exp,\n pkg,\n projectRoot,\n sdkVersions,\n sdkVersion\n );\n\n if (reactNativeIssue !== NO_ISSUES) {\n return reactNativeIssue;\n }\n }\n\n // TODO: Check any native module versions here\n\n return NO_ISSUES;\n}\n\nconst resolveReactNativeVersionFromProjectRoot = memoize((projectRoot: string): string | null => {\n try {\n return require(resolveFrom(projectRoot, 'react-native/package.json')).version;\n } catch {}\n return null;\n});\n\nasync function _validateReactNativeVersionAsync(\n exp: ExpoConfig,\n pkg: PackageJSONConfig,\n projectRoot: string,\n sdkVersions: Versions.SDKVersions,\n sdkVersion: string\n): Promise<number> {\n let reactNative = null;\n\n if (pkg.dependencies?.['react-native']) {\n reactNative = pkg.dependencies['react-native'];\n } else if (pkg.devDependencies?.['react-native']) {\n reactNative = pkg.devDependencies['react-native'];\n } else if (pkg.peerDependencies?.['react-native']) {\n reactNative = pkg.peerDependencies['react-native'];\n }\n\n // react-native is required\n if (!reactNative) {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n `Error: Can't find react-native in package.json dependencies`,\n 'doctor-no-react-native-in-package-json'\n );\n return ERROR;\n }\n\n ProjectUtils.clearNotification(projectRoot, 'doctor-no-react-native-in-package-json');\n\n if (\n Versions.gteSdkVersion(exp, '41.0.0') &&\n pkg.dependencies?.['@react-native-community/async-storage']\n ) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `\\n@react-native-community/async-storage has been renamed. To upgrade:\\n- remove @react-native-community/async-storage from package.json\\n- run \"expo install @react-native-async-storage/async-storage\"\\n- update your imports manually, or run \"npx expo-codemod sdk41-async-storage './**/*'\".\\n`,\n 'doctor-legacy-async-storage'\n );\n return WARNING;\n } else {\n ProjectUtils.clearNotification(projectRoot, 'doctor-legacy-async-storage');\n }\n\n const isExpoForkedReactNative = /expo\\/react-native/.test(reactNative);\n if (!isExpoForkedReactNative) {\n // Expo fork of react-native is required for deprecated `isDetached` project\n if (exp.isDetached) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: Not using the Expo fork of react-native (${reactNative}). ${learnMore(\n 'https://docs.expo.dev/'\n )}`,\n 'doctor-not-using-expo-fork'\n );\n return WARNING;\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-not-using-expo-fork');\n\n // Get the exact version as late as possible\n // `semver` will match `semver.satisfies('~1.0.0', '~1.0.0')` as `false` even though it's technically allowed,\n // to combat this, attempt to get the exact installed version.\n const exactReactNativeVersion = profileMethod(resolveReactNativeVersionFromProjectRoot)(\n projectRoot\n );\n\n reactNative = exactReactNativeVersion || reactNative;\n\n // Check react-native version satisfies with sdk's `facebookReactNativeVersion`\n const { facebookReactNativeVersion } = sdkVersions[sdkVersion];\n const anyReactNativePatchVersion = `~${facebookReactNativeVersion}`;\n if (!semver.satisfies(reactNative, anyReactNativePatchVersion)) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: Invalid version react-native@${reactNative} for expo sdkVersion ${sdkVersion}. Use react-native@${facebookReactNativeVersion}`,\n 'doctor-invalid-version-of-react-native'\n );\n return WARNING;\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-invalid-version-of-react-native');\n } else {\n // If `isExpoForkedReactNative === true`\n try {\n const reactNativeTag = reactNative.match(/sdk-\\d+\\.\\d+\\.\\d+/)[0];\n const sdkVersionObject = sdkVersions[sdkVersion];\n\n // TODO: Want to be smarter about this. Maybe warn if there's a newer version.\n if (\n semver.major(Versions.parseSdkVersionFromTag(reactNativeTag)) !==\n semver.major(Versions.parseSdkVersionFromTag(sdkVersionObject['expoReactNativeTag']))\n ) {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: Invalid version of react-native for sdkVersion ${sdkVersion}. Use github:expo/react-native#${sdkVersionObject['expoReactNativeTag']}`,\n 'doctor-invalid-version-of-react-native'\n );\n return WARNING;\n }\n ProjectUtils.clearNotification(projectRoot, 'doctor-invalid-version-of-react-native');\n\n ProjectUtils.clearNotification(projectRoot, 'doctor-malformed-version-of-react-native');\n } catch {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: ${reactNative} is not a valid version. Version must be in the form of sdk-x.y.z. Please update your package.json file.`,\n 'doctor-malformed-version-of-react-native'\n );\n return WARNING;\n }\n }\n\n return NO_ISSUES;\n}\n\nasync function _validateNodeModulesAsync(projectRoot: string): Promise<number> {\n // Check to make sure react-native is installed\n\n if (resolveFrom.silent(projectRoot, 'react-native/local-cli/cli.js')) {\n ProjectUtils.clearNotification(projectRoot, 'doctor-react-native-not-installed');\n } else {\n ProjectUtils.logError(\n projectRoot,\n 'expo',\n `Error: react-native is not installed. Please run \\`npm install\\` or \\`yarn\\` in your project directory.`,\n 'doctor-react-native-not-installed'\n );\n return FATAL;\n }\n return NO_ISSUES;\n}\n\nexport async function validateWithoutNetworkAsync(\n projectRoot: string,\n options: { skipSDKVersionRequirement?: boolean } = {}\n): Promise<number> {\n return validateAsync(projectRoot, false, options.skipSDKVersionRequirement);\n}\n\nexport async function validateWithNetworkAsync(\n projectRoot: string,\n options: { skipSDKVersionRequirement?: boolean } = {}\n): Promise<number> {\n return validateAsync(projectRoot, true, options.skipSDKVersionRequirement);\n}\n\nasync function validateAsync(\n projectRoot: string,\n allowNetwork: boolean,\n skipSDKVersionRequirement: boolean | undefined\n): Promise<number> {\n if (EXPO_NO_DOCTOR) {\n return NO_ISSUES;\n }\n\n const { exp, pkg } = getConfig(projectRoot, {\n strict: true,\n skipSDKVersionRequirement,\n });\n\n ProjectUtils.clearNotification(projectRoot, 'doctor-config-json-not-read');\n\n let status = await _checkNpmVersionAsync(projectRoot);\n if (status === FATAL) {\n return status;\n }\n\n const expStatus = await _validateExpJsonAsync(\n exp,\n pkg,\n projectRoot,\n allowNetwork,\n skipSDKVersionRequirement\n );\n if (expStatus === FATAL) {\n return expStatus;\n }\n\n status = Math.max(status, expStatus);\n\n const nodeModulesStatus = await _validateNodeModulesAsync(projectRoot);\n if (nodeModulesStatus > status) {\n return nodeModulesStatus;\n }\n\n return status;\n}\n\nexport async function validateExpoServersAsync(projectRoot: string): Promise<number> {\n const domains = ['expo.io', 'expo.fyi', 'expo.dev', 'static.expo.dev', 'exp.host'];\n const attempts = await Promise.all(\n domains.map(async domain => ({\n domain,\n reachable: await isReachable(domain),\n }))\n );\n const failures = attempts.filter(attempt => !attempt.reachable);\n\n if (failures.length) {\n failures.forEach(failure => {\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `Warning: could not reach \\`${failure.domain}\\`.`,\n `doctor-server-dashboard-not-reachable-${failure.domain}`\n );\n });\n console.log();\n ProjectUtils.logWarning(\n projectRoot,\n 'expo',\n `We couldn't reach some of our domains, this might cause issues on our website or services.\\nPlease check your network configuration and try to access these domains in your browser.`,\n 'doctor-server-dashboard-not-reachable'\n );\n console.log();\n return WARNING;\n }\n return NO_ISSUES;\n}\n"],"mappings":"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"} |