JezK
Edit File: why.js.map
{"version":3,"file":"why.js","names":["requireLockfile","invariant","require","bytes","emoji","path","cleanQuery","config","query","isAbsolute","fs","exists","relative","cwd","replace","queryParts","split","map","part","parts","slice","join","getPackageSize","tuple","loc","walk","Set","METADATA_FILENAME","TARBALL_FILENAME","files","Promise","all","walkFile","getFileSizeOnDisk","absolute","sizes","sum","array","length","reduce","a","b","collect","hoistManifests","allDependencies","dependency","recursive","depInfo","deps","pkg","dependencies","dependencyKeys","Object","keys","directDependencies","dep","info","has","key","add","push","forEach","getSharedDependencies","transitiveKeys","sharedDependencies","setFlags","commander","description","hasWrapper","args","toStandardPathString","pathString","str","run","reporter","flags","MessageError","lang","step","get","Lockfile","fromDirectory","lockfileFolder","lockfile","install","Install","fetchRequestFromCwd","depRequests","requests","patterns","workspaceLayout","resolver","init","isFlat","flat","isFrozen","frozenLockfile","linker","getFlatHoistedTree","hoisted","matches","queryWhy","error","processMatch","match","matchInfo","matchRef","_reference","distinctMatchPatterns","reasons","originalParentPath","type","typeSimple","value","pattern","rootType","rootPatternsToOrigin","previousPaths","packageSize","directSizes","transitiveSizes","Array","from","transitiveDependencies","version","isNohoist","nohoistList","originalKey","list","reason","size","nohoistPattern","found","indexOf","endsWith"],"sourceRoot":"../../../src","sources":["cli/commands/why.js"],"sourcesContent":["/* @flow */\n\nimport type {Reporter} from '../../reporters/index.js';\nimport type Config from '../../config.js';\n\nimport type {HoistManifestTuple, HoistManifestTuples} from '../../package-hoister.js';\nimport {Install} from './install.js';\nimport {METADATA_FILENAME, TARBALL_FILENAME} from '../../constants.js';\nimport * as fs from '../../util/fs.js';\nimport Lockfile from '../../lockfile';\nimport {MessageError} from '../../errors.js';\n\nexport const requireLockfile = true;\n\nconst invariant = require('invariant');\nconst bytes = require('bytes');\nconst emoji = require('node-emoji');\nconst path = require('path');\n\nasync function cleanQuery(config: Config, query: string): Promise<string> {\n // if a location was passed then turn it into a hash query\n if (path.isAbsolute(query) && (await fs.exists(query))) {\n // absolute path\n query = path.relative(config.cwd, query);\n }\n\n // remove references to node_modules with hashes\n query = query.replace(/([\\\\/]|^)node_modules[\\\\/]/g, '#');\n\n // remove trailing hashes\n query = query.replace(/^#+/g, '');\n\n // remove trailing paths from each part of the query, skip second part of path for scoped packages\n let queryParts = query.split('#');\n queryParts = queryParts.map((part: string): string => {\n let parts = part.split(/[\\\\/]/g);\n\n if (part[0] === '@') {\n parts = parts.slice(0, 2);\n } else {\n parts = parts.slice(0, 1);\n }\n\n return parts.join('/');\n });\n query = queryParts.join('#');\n\n return query;\n}\n\nasync function getPackageSize(tuple: HoistManifestTuple): Promise<number> {\n const [loc] = tuple;\n\n const files = await fs.walk(loc, null, new Set([METADATA_FILENAME, TARBALL_FILENAME]));\n\n const sizes = await Promise.all(files.map(walkFile => fs.getFileSizeOnDisk(walkFile.absolute)));\n\n return sum(sizes);\n}\n\nfunction sum(array: Array<number>): number {\n return array.length ? array.reduce((a, b) => a + b, 0) : 0;\n}\n\nfunction collect(\n hoistManifests: HoistManifestTuples,\n allDependencies: Set<any>,\n dependency: HoistManifestTuple,\n {recursive}: {recursive?: boolean} = {recursive: false},\n): Set<any> {\n const [, depInfo] = dependency;\n const deps = depInfo.pkg.dependencies;\n\n if (!deps) {\n return allDependencies;\n }\n\n const dependencyKeys = new Set(Object.keys(deps));\n const directDependencies = [];\n\n for (const dep of hoistManifests) {\n const [, info] = dep;\n\n if (!allDependencies.has(dep) && dependencyKeys.has(info.key)) {\n allDependencies.add(dep);\n directDependencies.push(dep);\n }\n }\n\n if (recursive) {\n directDependencies.forEach(dependency => collect(hoistManifests, allDependencies, dependency, {recursive: true}));\n }\n\n return allDependencies;\n}\n\nfunction getSharedDependencies(hoistManifests: HoistManifestTuples, transitiveKeys: Set<string>): Set<string> {\n const sharedDependencies = new Set();\n for (const [, info] of hoistManifests) {\n if (!transitiveKeys.has(info.key) && info.pkg.dependencies) {\n Object.keys(info.pkg.dependencies).forEach(dependency => {\n if (transitiveKeys.has(dependency) && !sharedDependencies.has(dependency)) {\n sharedDependencies.add(dependency);\n }\n });\n }\n }\n return sharedDependencies;\n}\n\nexport function setFlags(commander: Object) {\n commander.description('Identifies why a package has been installed, detailing which other packages depend on it.');\n}\n\nexport function hasWrapper(commander: Object, args: Array<string>): boolean {\n return true;\n}\n\n// to conform to the current standard '#' as package tree separator\nfunction toStandardPathString(pathString: string): string {\n const str = pathString.replace(/\\//g, '#');\n if (str[0] === '#') {\n return str.slice(1);\n }\n return str;\n}\n\nexport async function run(config: Config, reporter: Reporter, commander: Object, flags: Object, args: Array<string>): Promise<void> {\n if (args.length < 1) {\n throw new MessageError(reporter.lang('missingWhyDependency'));\n }\n if (args.length > 1) {\n throw new MessageError(reporter.lang('tooManyArguments', 1));\n }\n\n const query = await cleanQuery(config, args[0]);\n\n reporter.step(1, 4, reporter.lang('whyStart', args[0]), emoji.get('thinking_face'));\n\n // init\n reporter.step(2, 4, reporter.lang('whyInitGraph'), emoji.get('truck'));\n const lockfile = await Lockfile.fromDirectory(config.lockfileFolder, reporter);\n const install = new Install(flags, config, reporter, lockfile);\n const {requests: depRequests, patterns, workspaceLayout} = await install.fetchRequestFromCwd();\n await install.resolver.init(depRequests, {\n isFlat: install.flags.flat,\n isFrozen: install.flags.frozenLockfile,\n workspaceLayout,\n });\n const hoisted = await install.linker.getFlatHoistedTree(patterns);\n\n // finding\n reporter.step(3, 4, reporter.lang('whyFinding'), emoji.get('mag'));\n\n const matches = queryWhy(query, hoisted);\n\n if (matches.length <= 0) {\n reporter.error(reporter.lang('whyUnknownMatch'));\n return;\n }\n\n const processMatch = async (match: HoistManifestTuple) => {\n const [, matchInfo] = match;\n const matchRef = matchInfo.pkg._reference;\n invariant(matchRef, 'expected reference');\n\n const distinctMatchPatterns = new Set(matchRef.patterns);\n const reasons = [];\n\n // reason: dependency of these modules\n if (matchInfo.originalParentPath.length > 0) {\n reasons.push({\n type: 'whyDependedOn',\n typeSimple: 'whyDependedOnSimple',\n value: toStandardPathString(matchInfo.originalParentPath),\n });\n }\n\n // reason: exists in manifest\n let rootType;\n for (const pattern of distinctMatchPatterns) {\n rootType = install.rootPatternsToOrigin[pattern];\n if (rootType) {\n reasons.push({\n type: 'whySpecified',\n typeSimple: 'whySpecifiedSimple',\n value: rootType,\n });\n }\n }\n\n // reason: this is hoisted from these modules\n for (const path of matchInfo.previousPaths) {\n reasons.push({\n type: 'whyHoistedFrom',\n typeSimple: 'whyHoistedFromSimple',\n value: toStandardPathString(path),\n });\n }\n\n // package sizes\n let packageSize = 0;\n let directSizes = [];\n let transitiveSizes = [];\n try {\n packageSize = await getPackageSize(match);\n } catch (e) {}\n\n const dependencies = Array.from(collect(hoisted, new Set(), match));\n const transitiveDependencies = Array.from(collect(hoisted, new Set(), match, {recursive: true}));\n\n try {\n directSizes = await Promise.all(dependencies.map(getPackageSize));\n transitiveSizes = await Promise.all(transitiveDependencies.map(getPackageSize));\n } catch (e) {}\n\n const transitiveKeys = new Set(transitiveDependencies.map(([, info]) => info.key));\n const sharedDependencies = getSharedDependencies(hoisted, transitiveKeys);\n\n // prepare output: populate reporter\n reporter.info(reporter.lang('whyMatch', `${matchInfo.key}@${matchInfo.pkg.version}`));\n //\n // reason: hoisted/nohoist\n if (matchInfo.isNohoist) {\n reasons.push({\n type: 'whyNotHoisted',\n typeSimple: 'whyNotHoistedSimple',\n value: matchInfo.nohoistList,\n });\n } else if (query === matchInfo.originalKey) {\n reporter.info(reporter.lang('whyHoistedTo', matchInfo.key));\n }\n\n if (reasons.length === 1) {\n reporter.info(reporter.lang(reasons[0].typeSimple, reasons[0].value));\n } else if (reasons.length > 1) {\n reporter.info(reporter.lang('whyReasons'));\n reporter.list('reasons', reasons.map(reason => reporter.lang(reason.type, reason.value)));\n } else {\n reporter.error(reporter.lang('whyWhoKnows'));\n }\n\n if (packageSize) {\n // stats: file size of this dependency without any dependencies\n reporter.info(reporter.lang('whyDiskSizeWithout', bytes(packageSize)));\n\n // stats: file size of this dependency including dependencies that aren't shared\n reporter.info(reporter.lang('whyDiskSizeUnique', bytes(packageSize + sum(directSizes))));\n\n // stats: file size of this dependency including dependencies\n reporter.info(reporter.lang('whyDiskSizeTransitive', bytes(packageSize + sum(transitiveSizes))));\n\n // stats: shared transitive dependencies\n reporter.info(reporter.lang('whySharedDependencies', sharedDependencies.size));\n }\n };\n\n reporter.step(4, 4, reporter.lang('whyCalculating'), emoji.get('aerial_tramway'));\n for (const match of matches) {\n await processMatch(match);\n }\n}\n\nexport function queryWhy(pattern: string, hoisted: HoistManifestTuples): Array<HoistManifestTuple> {\n const nohoistPattern = `#${pattern}`;\n const found: Array<HoistManifestTuple> = [];\n for (const [loc, info] of hoisted) {\n if (info.key === pattern || info.previousPaths.indexOf(pattern) >= 0 || info.key.endsWith(nohoistPattern)) {\n found.push([loc, info]);\n }\n }\n return found;\n}\n"],"mappings":"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"}