UNPKG

@dependabot/yarn-lib

Version:

📦🐈 Fast, reliable, and secure dependency management.

196 lines (160 loc) 5.39 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _asyncToGenerator2; function _load_asyncToGenerator() { return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator')); } let fetchCache = (() => { var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest, fetcher, config) { var _ref2 = yield config.readPackageMetadata(dest); const hash = _ref2.hash, pkg = _ref2.package; yield fetcher.setupMirrorFromCache(); return { package: pkg, hash, dest, cached: true }; }); return function fetchCache(_x, _x2, _x3) { return _ref.apply(this, arguments); }; })(); let fetchOne = (() => { var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ref, config) { const dest = config.generateHardModulePath(ref); const remote = ref.remote; // Mock metedata for symlinked dependencies if (remote.type === 'link') { const mockPkg = { _uid: '', name: '', version: '0.0.0' }; return Promise.resolve({ resolved: null, hash: '', dest, package: mockPkg, cached: false }); } const Fetcher = (_index || _load_index())[remote.type]; if (!Fetcher) { throw new (_errors || _load_errors()).MessageError(config.reporter.lang('unknownFetcherFor', remote.type)); } const fetcher = new Fetcher(dest, remote, config); if (yield config.isValidModuleDest(dest)) { return fetchCache(dest, fetcher, config); } // remove as the module may be invalid yield (_fs || _load_fs()).unlink(dest); try { return yield fetcher.fetch({ name: ref.name, version: ref.version }); } catch (err) { try { yield (_fs || _load_fs()).unlink(dest); } catch (err2) { // what do? } throw err; } }); return function fetchOne(_x4, _x5) { return _ref3.apply(this, arguments); }; })(); let maybeFetchOne = (() => { var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ref, config) { try { return yield fetchOne(ref, config); } catch (err) { if (ref.optional) { config.reporter.error(err.message); return null; } else { throw err; } } }); return function maybeFetchOne(_x6, _x7) { return _ref4.apply(this, arguments); }; })(); exports.fetch = fetch; var _errors; function _load_errors() { return _errors = require('./errors.js'); } var _index; function _load_index() { return _index = _interopRequireWildcard(require('./fetchers/index.js')); } var _fs; function _load_fs() { return _fs = _interopRequireWildcard(require('./util/fs.js')); } var _promise; function _load_promise() { return _promise = _interopRequireWildcard(require('./util/promise.js')); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function fetch(pkgs, config) { const pkgsPerDest = new Map(); pkgs = pkgs.filter(pkg => { const ref = pkg._reference; if (!ref) { return false; } const dest = config.generateHardModulePath(ref); const otherPkg = pkgsPerDest.get(dest); if (otherPkg) { config.reporter.warn(config.reporter.lang('multiplePackagesCantUnpackInSameDestination', ref.patterns, dest, otherPkg.patterns)); return false; } pkgsPerDest.set(dest, ref); return true; }); const tick = config.reporter.progress(pkgs.length); return (_promise || _load_promise()).queue(pkgs, (() => { var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg) { const ref = pkg._reference; if (!ref) { return pkg; } const res = yield maybeFetchOne(ref, config); let newPkg; if (res) { newPkg = res.package; // update with new remote // but only if there was a hash previously as the tarball fetcher does not provide a hash. if (ref.remote.hash) { // if the checksum was updated, also update resolved and cache if (ref.remote.hash !== res.hash && config.updateChecksums) { const oldHash = ref.remote.hash; if (ref.remote.resolved) { ref.remote.resolved = ref.remote.resolved.replace(oldHash, res.hash); } ref.config.cache = Object.keys(ref.config.cache).reduce(function (cache, entry) { const entryWithNewHash = entry.replace(oldHash, res.hash); cache[entryWithNewHash] = ref.config.cache[entry]; return cache; }, {}); } ref.remote.hash = res.hash; } } if (tick) { tick(); } if (newPkg) { newPkg._reference = ref; newPkg._remote = ref.remote; newPkg.name = pkg.name; newPkg.fresh = pkg.fresh; return newPkg; } return pkg; }); return function (_x8) { return _ref5.apply(this, arguments); }; })(), config.networkConcurrency); }