JezK
Edit File: package-resolver.js.map
{"version":3,"file":"package-resolver.js","names":["invariant","require","semver","PackageResolver","config","lockfile","resolutionMap","ResolutionMap","patternsByPackage","map","fetchingPatterns","Set","fetchingQueue","BlockingQueue","patterns","usedRegistries","flat","reporter","delayedResolveQueue","pattern","fresh","ref","newPkg","oldPkg","_reference","_remote","remote","name","prebuiltVariants","Promise","resolve","newPkgs","deduped","seen","info","getResolvedPattern","has","add","push","seedPatterns","pkgs","skip","pkg","getStrictResolvedPattern","dependencies","refs","names","getLevelOrderManifests","getAllInfoForPatterns","infos","newPattern","addPattern","removePattern","version","dedupePatterns","collapsePackageVersions","human","collapseToReference","collapseToManifest","collapseToPattern","_manifest","refPatterns","slice","prune","byName","indexOf","splice","manifest","getExoticResolver","exoticRangeMatch","bind","range","versionNumbers","resolvedPatterns","maxValidRange","maxSatisfying","indexOfmaxValidRange","maxValidRangeManifest","resolvedPkgs","reference","type","matchedPkg","find","pkgRemote","hasVersion","validRange","valid","satisfies","initialReq","req","resolveToResolution","request","PackageRequest","fetchKey","registry","String","optional","initialFetch","activity","tick","lockfileEntry","getLocked","normalizePattern","isLockfileEntryOutdated","warn","lang","init","frozen","deps","isFlat","isFrozen","workspaceLayout","undefined","Boolean","resolvePackagesWithExistingVersions","delayQueue","dep","optimizeResolutions","end","collapsablePatterns","filter","length","availableVersions","sort","rcompare","ranges","every","resolveToExistingVersion","parentNames","resolution","resolutionManifest","lockManifest","shouldUpdateLockfile","addToDelayQueue"],"sourceRoot":"../src","sources":["package-resolver.js"],"sourcesContent":["/* @flow */\n\nimport type {Manifest, DependencyRequestPatterns, DependencyRequestPattern} from './types.js';\nimport type {RegistryNames} from './registries/index.js';\nimport type PackageReference from './package-reference.js';\nimport type {Reporter} from './reporters/index.js';\nimport {getExoticResolver} from './resolvers/index.js';\nimport type Config from './config.js';\nimport PackageRequest from './package-request.js';\nimport {normalizePattern} from './util/normalize-pattern.js';\nimport RequestManager from './util/request-manager.js';\nimport BlockingQueue from './util/blocking-queue.js';\nimport Lockfile, {type LockManifest} from './lockfile';\nimport map from './util/map.js';\nimport WorkspaceLayout from './workspace-layout.js';\nimport ResolutionMap, {shouldUpdateLockfile} from './resolution-map.js';\n\nconst invariant = require('invariant');\nconst semver = require('semver');\n\nexport type ResolverOptions = {|\n isFlat?: boolean,\n isFrozen?: boolean,\n workspaceLayout?: WorkspaceLayout,\n|};\n\nexport default class PackageResolver {\n constructor(config: Config, lockfile: Lockfile, resolutionMap: ResolutionMap = new ResolutionMap(config)) {\n this.patternsByPackage = map();\n this.fetchingPatterns = new Set();\n this.fetchingQueue = new BlockingQueue('resolver fetching');\n this.patterns = map();\n this.resolutionMap = resolutionMap;\n this.usedRegistries = new Set();\n this.flat = false;\n\n this.reporter = config.reporter;\n this.lockfile = lockfile;\n this.config = config;\n this.delayedResolveQueue = [];\n }\n\n // whether the dependency graph will be flattened\n flat: boolean;\n\n frozen: boolean;\n\n workspaceLayout: ?WorkspaceLayout;\n\n resolutionMap: ResolutionMap;\n\n // list of registries that have been used in this resolution\n usedRegistries: Set<RegistryNames>;\n\n // activity monitor\n activity: ?{\n tick: (name: string) => void,\n end: () => void,\n };\n\n // patterns we've already resolved or are in the process of resolving\n fetchingPatterns: Set<string>;\n\n // TODO\n fetchingQueue: BlockingQueue;\n\n // manages and throttles json api http requests\n requestManager: RequestManager;\n\n // list of patterns associated with a package\n patternsByPackage: {\n [packageName: string]: Array<string>,\n };\n\n // lockfile instance which we can use to retrieve version info\n lockfile: Lockfile;\n\n // a map of dependency patterns to packages\n patterns: {\n [packagePattern: string]: Manifest,\n };\n\n // reporter instance, abstracts out display logic\n reporter: Reporter;\n\n // environment specific config methods and options\n config: Config;\n\n // list of packages need to be resolved later (they found a matching version in the\n // resolver, but better matches can still arrive later in the resolve process)\n delayedResolveQueue: Array<{req: PackageRequest, info: Manifest}>;\n\n /**\n * TODO description\n */\n\n isNewPattern(pattern: string): boolean {\n return !!this.patterns[pattern].fresh;\n }\n\n updateManifest(ref: PackageReference, newPkg: Manifest): Promise<void> {\n // inherit fields\n const oldPkg = this.patterns[ref.patterns[0]];\n newPkg._reference = ref;\n newPkg._remote = ref.remote;\n newPkg.name = oldPkg.name;\n newPkg.fresh = oldPkg.fresh;\n newPkg.prebuiltVariants = oldPkg.prebuiltVariants;\n\n // update patterns\n for (const pattern of ref.patterns) {\n this.patterns[pattern] = newPkg;\n }\n\n return Promise.resolve();\n }\n\n updateManifests(newPkgs: Array<Manifest>): Promise<void> {\n for (const newPkg of newPkgs) {\n if (newPkg._reference) {\n for (const pattern of newPkg._reference.patterns) {\n const oldPkg = this.patterns[pattern];\n newPkg.prebuiltVariants = oldPkg.prebuiltVariants;\n\n this.patterns[pattern] = newPkg;\n }\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Given a list of patterns, dedupe them to a list of unique patterns.\n */\n\n dedupePatterns(patterns: Iterable<string>): Array<string> {\n const deduped = [];\n const seen = new Set();\n\n for (const pattern of patterns) {\n const info = this.getResolvedPattern(pattern);\n if (seen.has(info)) {\n continue;\n }\n\n seen.add(info);\n deduped.push(pattern);\n }\n\n return deduped;\n }\n\n /**\n * Get a list of all manifests by topological order.\n */\n\n getTopologicalManifests(seedPatterns: Array<string>): Iterable<Manifest> {\n const pkgs: Set<Manifest> = new Set();\n const skip: Set<Manifest> = new Set();\n\n const add = (seedPatterns: Array<string>) => {\n for (const pattern of seedPatterns) {\n const pkg = this.getStrictResolvedPattern(pattern);\n if (skip.has(pkg)) {\n continue;\n }\n\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n skip.add(pkg);\n add(ref.dependencies);\n pkgs.add(pkg);\n }\n };\n\n add(seedPatterns);\n\n return pkgs;\n }\n\n /**\n * Get a list of all manifests by level sort order.\n */\n\n getLevelOrderManifests(seedPatterns: Array<string>): Iterable<Manifest> {\n const pkgs: Set<Manifest> = new Set();\n const skip: Set<Manifest> = new Set();\n\n const add = (seedPatterns: Array<string>) => {\n const refs = [];\n\n for (const pattern of seedPatterns) {\n const pkg = this.getStrictResolvedPattern(pattern);\n if (skip.has(pkg)) {\n continue;\n }\n\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n\n refs.push(ref);\n skip.add(pkg);\n pkgs.add(pkg);\n }\n\n for (const ref of refs) {\n add(ref.dependencies);\n }\n };\n\n add(seedPatterns);\n\n return pkgs;\n }\n\n /**\n * Get a list of all package names in the dependency graph.\n */\n\n getAllDependencyNamesByLevelOrder(seedPatterns: Array<string>): Iterable<string> {\n const names = new Set();\n for (const {name} of this.getLevelOrderManifests(seedPatterns)) {\n names.add(name);\n }\n return names;\n }\n\n /**\n * Retrieve all the package info stored for this package name.\n */\n\n getAllInfoForPackageName(name: string): Array<Manifest> {\n const patterns = this.patternsByPackage[name] || [];\n return this.getAllInfoForPatterns(patterns);\n }\n\n /**\n * Retrieve all the package info stored for a list of patterns.\n */\n\n getAllInfoForPatterns(patterns: string[]): Array<Manifest> {\n const infos = [];\n const seen = new Set();\n\n for (const pattern of patterns) {\n const info = this.patterns[pattern];\n if (seen.has(info)) {\n continue;\n }\n\n seen.add(info);\n infos.push(info);\n }\n\n return infos;\n }\n\n /**\n * Get a flat list of all package info.\n */\n\n getManifests(): Array<Manifest> {\n const infos = [];\n const seen = new Set();\n\n for (const pattern in this.patterns) {\n const info = this.patterns[pattern];\n if (seen.has(info)) {\n continue;\n }\n\n infos.push(info);\n seen.add(info);\n }\n\n return infos;\n }\n\n /**\n * replace pattern in resolver, e.g. `name` is replaced with `name@^1.0.1`\n */\n replacePattern(pattern: string, newPattern: string) {\n const pkg = this.getResolvedPattern(pattern);\n invariant(pkg, `missing package ${pattern}`);\n const ref = pkg._reference;\n invariant(ref, 'expected package reference');\n ref.patterns = [newPattern];\n this.addPattern(newPattern, pkg);\n this.removePattern(pattern);\n }\n\n /**\n * Make all versions of this package resolve to it.\n */\n\n collapseAllVersionsOfPackage(name: string, version: string): string {\n const patterns = this.dedupePatterns(this.patternsByPackage[name]);\n return this.collapsePackageVersions(name, version, patterns);\n }\n\n /**\n * Make all given patterns resolve to version.\n */\n collapsePackageVersions(name: string, version: string, patterns: string[]): string {\n const human = `${name}@${version}`;\n\n // get manifest that matches the version we're collapsing too\n let collapseToReference: ?PackageReference;\n let collapseToManifest: Manifest;\n let collapseToPattern: string;\n for (const pattern of patterns) {\n const _manifest = this.patterns[pattern];\n if (_manifest.version === version) {\n collapseToReference = _manifest._reference;\n collapseToManifest = _manifest;\n collapseToPattern = pattern;\n break;\n }\n }\n\n invariant(\n collapseToReference && collapseToManifest && collapseToPattern,\n `Couldn't find package manifest for ${human}`,\n );\n\n for (const pattern of patterns) {\n // don't touch the pattern we're collapsing to\n if (pattern === collapseToPattern) {\n continue;\n }\n\n // remove this pattern\n const ref = this.getStrictResolvedPattern(pattern)._reference;\n invariant(ref, 'expected package reference');\n const refPatterns = ref.patterns.slice();\n ref.prune();\n\n // add pattern to the manifest we're collapsing to\n for (const pattern of refPatterns) {\n collapseToReference.addPattern(pattern, collapseToManifest);\n }\n }\n\n return collapseToPattern;\n }\n\n /**\n * TODO description\n */\n\n addPattern(pattern: string, info: Manifest) {\n this.patterns[pattern] = info;\n\n const byName = (this.patternsByPackage[info.name] = this.patternsByPackage[info.name] || []);\n if (byName.indexOf(pattern) === -1) {\n byName.push(pattern);\n }\n }\n\n /**\n * TODO description\n */\n\n removePattern(pattern: string) {\n const pkg = this.patterns[pattern];\n if (!pkg) {\n return;\n }\n\n const byName = this.patternsByPackage[pkg.name];\n if (!byName) {\n return;\n }\n\n byName.splice(byName.indexOf(pattern), 1);\n delete this.patterns[pattern];\n }\n\n /**\n * TODO description\n */\n\n getResolvedPattern(pattern: string): ?Manifest {\n return this.patterns[pattern];\n }\n\n /**\n * TODO description\n */\n\n getStrictResolvedPattern(pattern: string): Manifest {\n const manifest = this.getResolvedPattern(pattern);\n invariant(manifest, 'expected manifest');\n return manifest;\n }\n\n /**\n * TODO description\n */\n\n getExactVersionMatch(name: string, version: string, manifest: ?Manifest): ?Manifest {\n const patterns = this.patternsByPackage[name];\n if (!patterns) {\n return null;\n }\n\n for (const pattern of patterns) {\n const info = this.getStrictResolvedPattern(pattern);\n if (info.version === version) {\n return info;\n }\n }\n\n if (manifest && getExoticResolver(version)) {\n return this.exoticRangeMatch(patterns.map(this.getStrictResolvedPattern.bind(this)), manifest);\n }\n\n return null;\n }\n\n /**\n * Get the manifest of the highest known version that satisfies a package range\n */\n\n getHighestRangeVersionMatch(name: string, range: string, manifest: ?Manifest): ?Manifest {\n const patterns = this.patternsByPackage[name];\n\n if (!patterns) {\n return null;\n }\n\n const versionNumbers = [];\n const resolvedPatterns = patterns.map((pattern): Manifest => {\n const info = this.getStrictResolvedPattern(pattern);\n versionNumbers.push(info.version);\n\n return info;\n });\n\n const maxValidRange = semver.maxSatisfying(versionNumbers, range);\n\n if (!maxValidRange) {\n return manifest && getExoticResolver(range) ? this.exoticRangeMatch(resolvedPatterns, manifest) : null;\n }\n\n const indexOfmaxValidRange = versionNumbers.indexOf(maxValidRange);\n const maxValidRangeManifest = resolvedPatterns[indexOfmaxValidRange];\n\n return maxValidRangeManifest;\n }\n\n /**\n * Get the manifest of the package that matches an exotic range\n */\n\n exoticRangeMatch(resolvedPkgs: Array<Manifest>, manifest: Manifest): ?Manifest {\n const remote = manifest._remote;\n if (!(remote && remote.reference && remote.type === 'copy')) {\n return null;\n }\n\n const matchedPkg = resolvedPkgs.find(\n ({_remote: pkgRemote}) => pkgRemote && pkgRemote.reference === remote.reference && pkgRemote.type === 'copy',\n );\n\n if (matchedPkg) {\n manifest._remote = matchedPkg._remote;\n }\n\n return matchedPkg;\n }\n\n /**\n * Determine if LockfileEntry is incorrect, remove it from lockfile cache and consider the pattern as new\n */\n isLockfileEntryOutdated(version: string, range: string, hasVersion: boolean): boolean {\n return !!(\n semver.validRange(range) &&\n semver.valid(version) &&\n !getExoticResolver(range) &&\n hasVersion &&\n !semver.satisfies(version, range)\n );\n }\n\n /**\n * TODO description\n */\n\n async find(initialReq: DependencyRequestPattern): Promise<void> {\n const req = this.resolveToResolution(initialReq);\n\n // we've already resolved it with a resolution\n if (!req) {\n return;\n }\n\n const request = new PackageRequest(req, this);\n const fetchKey = `${req.registry}:${req.pattern}:${String(req.optional)}`;\n const initialFetch = !this.fetchingPatterns.has(fetchKey);\n let fresh = false;\n\n if (this.activity) {\n this.activity.tick(req.pattern);\n }\n\n if (initialFetch) {\n this.fetchingPatterns.add(fetchKey);\n\n const lockfileEntry = this.lockfile.getLocked(req.pattern);\n\n if (lockfileEntry) {\n const {range, hasVersion} = normalizePattern(req.pattern);\n\n if (this.isLockfileEntryOutdated(lockfileEntry.version, range, hasVersion)) {\n this.reporter.warn(this.reporter.lang('incorrectLockfileEntry', req.pattern));\n this.removePattern(req.pattern);\n this.lockfile.removePattern(req.pattern);\n fresh = true;\n }\n } else {\n fresh = true;\n }\n\n request.init();\n }\n\n await request.find({fresh, frozen: this.frozen});\n }\n\n /**\n * TODO description\n */\n\n async init(\n deps: DependencyRequestPatterns,\n {isFlat, isFrozen, workspaceLayout}: ResolverOptions = {\n isFlat: false,\n isFrozen: false,\n workspaceLayout: undefined,\n },\n ): Promise<void> {\n this.flat = Boolean(isFlat);\n this.frozen = Boolean(isFrozen);\n this.workspaceLayout = workspaceLayout;\n const activity = (this.activity = this.reporter.activity());\n\n for (const req of deps) {\n await this.find(req);\n }\n\n // all required package versions have been discovered, so now packages that\n // resolved to existing versions can be resolved to their best available version\n this.resolvePackagesWithExistingVersions();\n\n for (const req of this.resolutionMap.delayQueue) {\n this.resolveToResolution(req);\n }\n\n if (isFlat) {\n for (const dep of deps) {\n const name = normalizePattern(dep.pattern).name;\n this.optimizeResolutions(name);\n }\n }\n\n activity.end();\n this.activity = null;\n }\n\n // for a given package, see if a single manifest can satisfy all ranges\n optimizeResolutions(name: string) {\n const patterns: Array<string> = this.dedupePatterns(this.patternsByPackage[name] || []);\n\n // don't optimize things that already have a lockfile entry:\n // https://github.com/yarnpkg/yarn/issues/79\n const collapsablePatterns = patterns.filter(pattern => {\n const remote = this.patterns[pattern]._remote;\n return !this.lockfile.getLocked(pattern) && (!remote || remote.type !== 'workspace');\n });\n if (collapsablePatterns.length < 2) {\n return;\n }\n\n // reverse sort, so we'll find the maximum satisfying version first\n const availableVersions = this.getAllInfoForPatterns(collapsablePatterns).map(manifest => manifest.version);\n availableVersions.sort(semver.rcompare);\n\n const ranges = collapsablePatterns.map(pattern => normalizePattern(pattern).range);\n\n // find the most recent version that satisfies all patterns (if one exists), and\n // collapse to that version.\n for (const version of availableVersions) {\n if (ranges.every(range => semver.satisfies(version, range))) {\n this.collapsePackageVersions(name, version, collapsablePatterns);\n return;\n }\n }\n }\n\n /**\n * Called by the package requester for packages that this resolver already had\n * a matching version for. Delay the resolve, because better matches can still be\n * discovered.\n */\n\n reportPackageWithExistingVersion(req: PackageRequest, info: Manifest) {\n this.delayedResolveQueue.push({req, info});\n }\n\n /**\n * Executes the resolve to existing versions for packages after the find process,\n * when all versions that are going to be used have been discovered.\n */\n\n resolvePackagesWithExistingVersions() {\n for (const {req, info} of this.delayedResolveQueue) {\n req.resolveToExistingVersion(info);\n }\n }\n\n resolveToResolution(req: DependencyRequestPattern): ?DependencyRequestPattern {\n const {parentNames, pattern} = req;\n\n if (!parentNames || this.flat) {\n return req;\n }\n\n const resolution = this.resolutionMap.find(pattern, parentNames);\n\n if (resolution) {\n const resolutionManifest = this.getResolvedPattern(resolution);\n\n if (resolutionManifest) {\n invariant(resolutionManifest._reference, 'resolutions should have a resolved reference');\n resolutionManifest._reference.patterns.push(pattern);\n this.addPattern(pattern, resolutionManifest);\n const lockManifest: ?LockManifest = this.lockfile.getLocked(pattern);\n if (shouldUpdateLockfile(lockManifest, resolutionManifest._reference)) {\n this.lockfile.removePattern(pattern);\n }\n } else {\n this.resolutionMap.addToDelayQueue(req);\n }\n return null;\n }\n\n return req;\n }\n}\n"],"mappings":"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"}