(name)
| 77282 | |
| 77283 | // for a given package, see if a single manifest can satisfy all ranges |
| 77284 | optimizeResolutions(name) { |
| 77285 | const patterns = this.dedupePatterns(this.patternsByPackage[name] || []); |
| 77286 | |
| 77287 | // don't optimize things that already have a lockfile entry: |
| 77288 | // https://github.com/yarnpkg/yarn/issues/79 |
| 77289 | const collapsablePatterns = patterns.filter(pattern => { |
| 77290 | const remote = this.patterns[pattern]._remote; |
| 77291 | return !this.lockfile.getLocked(pattern) && (!remote || remote.type !== 'workspace'); |
| 77292 | }); |
| 77293 | if (collapsablePatterns.length < 2) { |
| 77294 | return; |
| 77295 | } |
| 77296 | |
| 77297 | // reverse sort, so we'll find the maximum satisfying version first |
| 77298 | const availableVersions = this.getAllInfoForPatterns(collapsablePatterns).map(manifest => manifest.version); |
| 77299 | availableVersions.sort(semver.rcompare); |
| 77300 | |
| 77301 | const ranges = collapsablePatterns.map(pattern => (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern).range); |
| 77302 | |
| 77303 | // find the most recent version that satisfies all patterns (if one exists), and |
| 77304 | // collapse to that version. |
| 77305 | for (var _iterator17 = availableVersions, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) { |
| 77306 | var _ref18; |
| 77307 | |
| 77308 | if (_isArray17) { |
| 77309 | if (_i17 >= _iterator17.length) break; |
| 77310 | _ref18 = _iterator17[_i17++]; |
| 77311 | } else { |
| 77312 | _i17 = _iterator17.next(); |
| 77313 | if (_i17.done) break; |
| 77314 | _ref18 = _i17.value; |
| 77315 | } |
| 77316 | |
| 77317 | const version = _ref18; |
| 77318 | |
| 77319 | if (ranges.every(range => semver.satisfies(version, range))) { |
| 77320 | this.collapsePackageVersions(name, version, collapsablePatterns); |
| 77321 | return; |
| 77322 | } |
| 77323 | } |
| 77324 | } |
| 77325 | |
| 77326 | /** |
| 77327 | * Called by the package requester for packages that this resolver already had |
no test coverage detected