JezK
Edit File: check.js.map
{"version":3,"file":"check.js","names":["semver","require","path","requireLockfile","noArguments","hasWrapper","commander","setFlags","description","option","verifyTreeCheck","config","reporter","flags","args","reportError","msg","vars","error","lang","errCount","registryName","registryFolder","registryFolders","cwd","workspaceRootFolder","lockfileFolder","readManifest","rootManifest","dependenciesToCheckVersion","dependencies","name","version","isLinkedDependency","test","linkFileDependencies","push","originalKey","parentCwd","devDependencies","production","locationsVisited","Set","length","dep","shift","manifestLoc","resolve","has","add","plugnplayEnabled","fs","exists","join","pkg","validRange","looseSemver","satisfies","subdep","subDepPath","found","relative","locations","normalize","split","sep","filter","dir","pop","possiblePath","MessageError","success","integrityHashCheck","integrityChecker","InstallationIntegrityChecker","Lockfile","fromDirectory","lockfile","install","Install","fetchRequestFromCwd","patterns","workspaceLayout","check","cache","match","missingPatterns","pattern","integrityFileMissing","integrityMatches","warn","integrityErrors","integrityError","run","humaniseLocation","loc","normalized","p","reduce","result","part","startsWith","indexOf","verifyTree","integrity","warningCount","hydrate","rawPatterns","flatten","getLocked","getManifestByPattern","bundledDeps","linker","getFlatHoistedTree","res","ignore","parts","human","hoistedParts","slice","hoistedKey","humanParts","i","humanPart","format","dim","remoteType","_reference","remote","type","isResolution","hint","optional","pkgLoc","readJson","packageJson","clean","deps","Object","assign","peerDependencies","bundledDependencies","range","subHuman","possibles","depLoc","myParts","concat","myDepPkgLoc","depPkgLoc","depPkg","foundHuman","dirname","resPattern","resolutionMap","find","resHuman","normalizePattern","resRange","locPkg","packagePath","rootDep","packageName","bundledDep","gt","info"],"sourceRoot":"../../../src","sources":["cli/commands/check.js"],"sourcesContent":["/* @flow */\n\nimport type Config from '../../config.js';\nimport {MessageError} from '../../errors.js';\nimport InstallationIntegrityChecker from '../../integrity-checker.js';\nimport {integrityErrors} from '../../integrity-checker.js';\nimport Lockfile from '../../lockfile';\nimport type {Reporter} from '../../reporters/index.js';\nimport * as fs from '../../util/fs.js';\nimport {Install} from './install.js';\nimport {normalizePattern} from '../../util/normalize-pattern.js';\n\nconst semver = require('semver');\nconst path = require('path');\n\nexport const requireLockfile = false;\nexport const noArguments = true;\n\nexport function hasWrapper(commander: Object): boolean {\n return true;\n}\n\nexport function setFlags(commander: Object) {\n commander.description('Verifies if versions in the current project’s package.json match that of yarn’s lock file.');\n commander.option('--integrity');\n commander.option('--verify-tree');\n}\n\nexport async function verifyTreeCheck(\n config: Config,\n reporter: Reporter,\n flags: Object,\n args: Array<string>,\n): Promise<void> {\n let errCount = 0;\n function reportError(msg, ...vars) {\n reporter.error(reporter.lang(msg, ...vars));\n errCount++;\n }\n // check all dependencies recursively without relying on internal resolver\n const registryName = 'yarn';\n const registryFolder = config.registryFolders[0];\n const cwd = config.workspaceRootFolder ? config.lockfileFolder : config.cwd;\n const rootManifest = await config.readManifest(cwd, registryName);\n\n type PackageToVerify = {\n name: string,\n originalKey: string,\n parentCwd: string,\n version: string,\n };\n const dependenciesToCheckVersion: PackageToVerify[] = [];\n if (rootManifest.dependencies) {\n for (const name in rootManifest.dependencies) {\n const version = rootManifest.dependencies[name];\n // skip linked dependencies\n const isLinkedDependency = /^link:/i.test(version) || (/^file:/i.test(version) && config.linkFileDependencies);\n if (isLinkedDependency) {\n continue;\n }\n dependenciesToCheckVersion.push({\n name,\n originalKey: name,\n parentCwd: cwd,\n version,\n });\n }\n }\n if (rootManifest.devDependencies && !config.production) {\n for (const name in rootManifest.devDependencies) {\n const version = rootManifest.devDependencies[name];\n // skip linked dependencies\n const isLinkedDependency = /^link:/i.test(version) || (/^file:/i.test(version) && config.linkFileDependencies);\n if (isLinkedDependency) {\n continue;\n }\n dependenciesToCheckVersion.push({\n name,\n originalKey: name,\n parentCwd: cwd,\n version,\n });\n }\n }\n\n const locationsVisited: Set<string> = new Set();\n while (dependenciesToCheckVersion.length) {\n const dep = dependenciesToCheckVersion.shift();\n const manifestLoc = path.resolve(dep.parentCwd, registryFolder, dep.name);\n if (locationsVisited.has(manifestLoc + `@${dep.version}`)) {\n continue;\n }\n locationsVisited.add(manifestLoc + `@${dep.version}`);\n // When plugnplay is enabled, packages aren't copied to the node_modules folder, so this check doesn't make sense\n // TODO: We ideally should check that the packages are located inside the cache instead\n if (config.plugnplayEnabled) {\n continue;\n }\n if (!await fs.exists(manifestLoc)) {\n reportError('packageNotInstalled', `${dep.originalKey}`);\n continue;\n }\n if (!await fs.exists(path.join(manifestLoc, 'package.json'))) {\n continue;\n }\n const pkg = await config.readManifest(manifestLoc, registryName);\n if (\n semver.validRange(dep.version, config.looseSemver) &&\n !semver.satisfies(pkg.version, dep.version, config.looseSemver)\n ) {\n reportError('packageWrongVersion', dep.originalKey, dep.version, pkg.version);\n continue;\n }\n const dependencies = pkg.dependencies;\n if (dependencies) {\n for (const subdep in dependencies) {\n const subDepPath = path.resolve(manifestLoc, registryFolder, subdep);\n let found = false;\n const relative = path.relative(cwd, subDepPath);\n const locations = path.normalize(relative).split(registryFolder + path.sep).filter(dir => !!dir);\n locations.pop();\n while (locations.length >= 0) {\n let possiblePath;\n if (locations.length > 0) {\n possiblePath = path.join(cwd, registryFolder, locations.join(path.sep + registryFolder + path.sep));\n } else {\n possiblePath = cwd;\n }\n if (await fs.exists(path.resolve(possiblePath, registryFolder, subdep))) {\n dependenciesToCheckVersion.push({\n name: subdep,\n originalKey: `${dep.originalKey}#${subdep}`,\n parentCwd: possiblePath,\n version: dependencies[subdep],\n });\n found = true;\n break;\n }\n if (!locations.length) {\n break;\n }\n locations.pop();\n }\n if (!found) {\n reportError('packageNotInstalled', `${dep.originalKey}#${subdep}`);\n }\n }\n }\n }\n\n if (errCount > 0) {\n throw new MessageError(reporter.lang('foundErrors', errCount));\n } else {\n reporter.success(reporter.lang('folderInSync'));\n }\n}\n\nasync function integrityHashCheck(\n config: Config,\n reporter: Reporter,\n flags: Object,\n args: Array<string>,\n): Promise<void> {\n let errCount = 0;\n function reportError(msg, ...vars) {\n reporter.error(reporter.lang(msg, ...vars));\n errCount++;\n }\n const integrityChecker = new InstallationIntegrityChecker(config);\n\n const lockfile = await Lockfile.fromDirectory(config.cwd);\n const install = new Install(flags, config, reporter, lockfile);\n\n // get patterns that are installed when running `yarn install`\n const {patterns, workspaceLayout} = await install.fetchRequestFromCwd();\n\n const match = await integrityChecker.check(patterns, lockfile.cache, flags, workspaceLayout);\n for (const pattern of match.missingPatterns) {\n reportError('lockfileNotContainPattern', pattern);\n }\n if (match.integrityFileMissing) {\n reportError('noIntegrityFile');\n }\n if (match.integrityMatches === false) {\n reporter.warn(reporter.lang(integrityErrors[match.integrityError]));\n reportError('integrityCheckFailed');\n }\n\n if (errCount > 0) {\n throw new MessageError(reporter.lang('foundErrors', errCount));\n } else {\n reporter.success(reporter.lang('folderInSync'));\n }\n}\n\nexport async function run(config: Config, reporter: Reporter, commander: Object, flags: Object, args: Array<string>): Promise<void> {\n if (flags.verifyTree) {\n await verifyTreeCheck(config, reporter, flags, args);\n return;\n } else if (flags.integrity) {\n await integrityHashCheck(config, reporter, flags, args);\n return;\n }\n\n const lockfile = await Lockfile.fromDirectory(config.cwd);\n const install = new Install(flags, config, reporter, lockfile);\n\n function humaniseLocation(loc: string): Array<string> {\n const relative = path.relative(path.join(config.cwd, 'node_modules'), loc);\n const normalized = path.normalize(relative).split(path.sep);\n return normalized.filter(p => p !== 'node_modules').reduce((result, part) => {\n const length = result.length;\n if (length && result[length - 1].startsWith('@') && result[length - 1].indexOf(path.sep) === -1) {\n result[length - 1] += path.sep + part;\n } else {\n result.push(part);\n }\n return result;\n }, []);\n }\n\n let warningCount = 0;\n let errCount = 0;\n function reportError(msg, ...vars) {\n reporter.error(reporter.lang(msg, ...vars));\n errCount++;\n }\n\n // get patterns that are installed when running `yarn install`\n const {patterns: rawPatterns, workspaceLayout} = await install.hydrate();\n const patterns = await install.flatten(rawPatterns);\n\n // check if patterns exist in lockfile\n for (const pattern of patterns) {\n if (!lockfile.getLocked(pattern) && (!workspaceLayout || !workspaceLayout.getManifestByPattern(pattern))) {\n reportError('lockfileNotContainPattern', pattern);\n }\n }\n\n const bundledDeps = {};\n // check if any of the node_modules are out of sync\n const res = await install.linker.getFlatHoistedTree(patterns, workspaceLayout);\n for (const [loc, {originalKey, pkg, ignore}] of res) {\n if (ignore) {\n continue;\n }\n\n const parts = humaniseLocation(loc);\n\n // grey out hoisted portions of key\n let human = originalKey;\n const hoistedParts = parts.slice();\n const hoistedKey = parts.join('#');\n if (human !== hoistedKey) {\n const humanParts = human.split('#');\n\n for (let i = 0; i < humanParts.length; i++) {\n const humanPart = humanParts[i];\n\n if (hoistedParts[0] === humanPart) {\n hoistedParts.shift();\n\n if (i < humanParts.length - 1) {\n humanParts[i] += '#';\n }\n } else {\n humanParts[i] = reporter.format.dim(`${humanPart}#`);\n }\n }\n\n human = humanParts.join('');\n }\n\n // skip unnecessary checks for linked dependencies\n const remoteType = pkg._reference.remote.type;\n const isLinkedDependency =\n remoteType === 'link' || remoteType === 'workspace' || (remoteType === 'file' && config.linkFileDependencies);\n const isResolution = pkg._reference.hint === 'resolution';\n if (isLinkedDependency || isResolution) {\n continue;\n }\n\n if (!await fs.exists(loc)) {\n if (pkg._reference.optional) {\n reporter.warn(reporter.lang('optionalDepNotInstalled', human));\n } else {\n reportError('packageNotInstalled', human);\n }\n continue;\n }\n\n const pkgLoc = path.join(loc, 'package.json');\n\n if (await fs.exists(pkgLoc)) {\n const packageJson = await config.readJson(pkgLoc);\n packageJson.version = semver.clean(packageJson.version);\n\n if (pkg.version !== packageJson.version) {\n // node_modules contains wrong version\n reportError('packageWrongVersion', human, pkg.version, packageJson.version);\n }\n\n const deps = Object.assign({}, packageJson.dependencies, packageJson.peerDependencies);\n bundledDeps[packageJson.name] = packageJson.bundledDependencies || [];\n\n for (const name in deps) {\n const range = deps[name];\n if (!semver.validRange(range, config.looseSemver)) {\n continue; // exotic\n }\n\n const subHuman = `${human}#${name}@${range}`;\n\n // find the package that this will resolve to, factoring in hoisting\n const possibles = [];\n let depLoc;\n for (let i = parts.length; i >= 0; i--) {\n const myParts = parts.slice(0, i).concat(name);\n\n // build package.json location for this position\n const myDepPkgLoc = path.join(config.cwd, 'node_modules', myParts.join(`${path.sep}node_modules${path.sep}`));\n\n possibles.push(myDepPkgLoc);\n }\n while (possibles.length) {\n const myDepPkgLoc = possibles.shift();\n if (await fs.exists(myDepPkgLoc)) {\n depLoc = myDepPkgLoc;\n break;\n }\n }\n if (!depLoc) {\n // we'll hit the module not install error above when this module is hit\n continue;\n }\n\n const depPkgLoc = path.join(depLoc, 'package.json');\n\n if (await fs.exists(depPkgLoc)) {\n const depPkg = await config.readJson(depPkgLoc);\n const foundHuman = `${humaniseLocation(path.dirname(depPkgLoc)).join('#')}@${depPkg.version}`;\n if (!semver.satisfies(depPkg.version, range, config.looseSemver)) {\n // module isn't correct semver\n const resPattern = install.resolutionMap.find(name, originalKey.split('#'));\n if (resPattern) {\n const resHuman = `${human}#${resPattern}`;\n const {range: resRange} = normalizePattern(resPattern);\n\n if (semver.satisfies(depPkg.version, resRange, config.looseSemver)) {\n reporter.warn(reporter.lang('incompatibleResolutionVersion', foundHuman, subHuman));\n warningCount++;\n } else {\n reportError('packageDontSatisfy', resHuman, foundHuman);\n }\n } else {\n reportError('packageDontSatisfy', subHuman, foundHuman);\n }\n\n continue;\n }\n\n // check for modules above us that this could be deduped to\n for (const loc of possibles) {\n const locPkg = path.join(loc, 'package.json');\n\n if (!await fs.exists(locPkg)) {\n continue;\n }\n\n const packageJson = await config.readJson(locPkg);\n const packagePath = originalKey.split('#');\n const rootDep = packagePath[0];\n const packageName = packagePath[1] || packageJson.name;\n\n const bundledDep = bundledDeps[rootDep] && bundledDeps[rootDep].indexOf(packageName) !== -1;\n if (\n !bundledDep &&\n (packageJson.version === depPkg.version ||\n (semver.satisfies(packageJson.version, range, config.looseSemver) &&\n semver.gt(packageJson.version, depPkg.version, config.looseSemver)))\n ) {\n reporter.warn(\n reporter.lang(\n 'couldBeDeduped',\n subHuman,\n packageJson.version,\n `${humaniseLocation(path.dirname(locPkg)).join('#')}@${packageJson.version}`,\n ),\n );\n warningCount++;\n }\n break;\n }\n }\n }\n }\n }\n\n if (warningCount > 1) {\n reporter.info(reporter.lang('foundWarnings', warningCount));\n }\n\n if (errCount > 0) {\n throw new MessageError(reporter.lang('foundErrors', errCount));\n } else {\n reporter.success(reporter.lang('folderInSync'));\n }\n}\n"],"mappings":"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"}