JezK
Edit File: npm-resolver.js
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; function _regenerator() { var data = _interopRequireDefault(require("@babel/runtime/regenerator")); _regenerator = function _regenerator() { return data; }; return data; } function _asyncToGenerator2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); _asyncToGenerator2 = function _asyncToGenerator2() { return data; }; return data; } function _classCallCheck2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); _classCallCheck2 = function _classCallCheck2() { return data; }; return data; } function _createClass2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); _createClass2 = function _createClass2() { return data; }; return data; } function _inherits2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); _inherits2 = function _inherits2() { return data; }; return data; } function _possibleConstructorReturn2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); _possibleConstructorReturn2 = function _possibleConstructorReturn2() { return data; }; return data; } function _getPrototypeOf2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); _getPrototypeOf2 = function _getPrototypeOf2() { return data; }; return data; } function _defineProperty2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); _defineProperty2 = function _defineProperty2() { return data; }; return data; } function _cache() { var data = require("../../cli/commands/cache.js"); _cache = function _cache() { return data; }; return data; } function _errors() { var data = require("../../errors.js"); _errors = function _errors() { return data; }; return data; } function _registryResolver() { var data = _interopRequireDefault(require("./registry-resolver.js")); _registryResolver = function _registryResolver() { return data; }; return data; } function _npmRegistry() { var data = _interopRequireDefault(require("../../registries/npm-registry.js")); _npmRegistry = function _npmRegistry() { return data; }; return data; } function _map() { var data = _interopRequireDefault(require("../../util/map.js")); _map = function _map() { return data; }; return data; } function fs() { var data = _interopRequireWildcard(require("../../util/fs.js")); fs = function fs() { return data; }; return data; } function _constants() { var data = require("../../constants.js"); _constants = function _constants() { return data; }; return data; } function _packageNameUtils() { var data = require("../../util/package-name-utils.js"); _packageNameUtils = function _packageNameUtils() { return data; }; return data; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2()["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2()["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2()["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var inquirer = require('inquirer'); var tty = require('tty'); var path = require('path'); var semver = require('semver'); var ssri = require('ssri'); var NPM_REGISTRY_ID = 'npm'; var NpmResolver = /*#__PURE__*/function (_RegistryResolver) { (0, _inherits2()["default"])(NpmResolver, _RegistryResolver); var _super = _createSuper(NpmResolver); function NpmResolver() { (0, _classCallCheck2()["default"])(this, NpmResolver); return _super.apply(this, arguments); } (0, _createClass2()["default"])(NpmResolver, [{ key: "resolveRequest", value: function () { var _resolveRequest = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee(desiredVersion) { var res, escapedName, desiredRange, body; return _regenerator()["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (!this.config.offline) { _context.next = 6; break; } _context.next = 3; return this.resolveRequestOffline(); case 3: res = _context.sent; if (!(res != null)) { _context.next = 6; break; } return _context.abrupt("return", res); case 6: escapedName = _npmRegistry()["default"].escapeName(this.name); desiredRange = desiredVersion || this.range; _context.next = 10; return this.config.registries.npm.request(escapedName); case 10: body = _context.sent; if (!body) { _context.next = 15; break; } return _context.abrupt("return", NpmResolver.findVersionInRegistryResponse(this.config, escapedName, desiredRange, body, this.request)); case 15: return _context.abrupt("return", null); case 16: case "end": return _context.stop(); } }, _callee, this); })); function resolveRequest(_x) { return _resolveRequest.apply(this, arguments); } return resolveRequest; }() }, { key: "resolveRequestOffline", value: function () { var _resolveRequestOffline = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee2() { var _this = this; var packageDirs, versions, _iterator, _step, dir, pkg, metadata, satisfied; return _regenerator()["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return this.config.getCache('cachedPackages', function () { return (0, _cache().getCachedPackagesDirs)(_this.config, _this.config.cacheFolder); }); case 2: packageDirs = _context2.sent; versions = (0, _map()["default"])(); _iterator = _createForOfIteratorHelper(packageDirs); _context2.prev = 5; _iterator.s(); case 7: if ((_step = _iterator.n()).done) { _context2.next = 24; break; } dir = _step.value; if (!(dir.indexOf("".concat(NPM_REGISTRY_ID, "-")) === -1)) { _context2.next = 11; break; } return _context2.abrupt("continue", 22); case 11: _context2.next = 13; return this.config.readManifest(dir, NPM_REGISTRY_ID); case 13: pkg = _context2.sent; if (!(pkg.name !== this.name)) { _context2.next = 16; break; } return _context2.abrupt("continue", 22); case 16: _context2.next = 18; return this.config.readPackageMetadata(dir); case 18: metadata = _context2.sent; if (metadata.remote) { _context2.next = 21; break; } return _context2.abrupt("continue", 22); case 21: versions[pkg.version] = Object.assign({}, pkg, { _remote: metadata.remote }); case 22: _context2.next = 7; break; case 24: _context2.next = 29; break; case 26: _context2.prev = 26; _context2.t0 = _context2["catch"](5); _iterator.e(_context2.t0); case 29: _context2.prev = 29; _iterator.f(); return _context2.finish(29); case 32: _context2.next = 34; return this.config.resolveConstraints(Object.keys(versions), this.range); case 34: satisfied = _context2.sent; if (!satisfied) { _context2.next = 39; break; } return _context2.abrupt("return", versions[satisfied]); case 39: if (this.config.preferOffline) { _context2.next = 43; break; } throw new (_errors().MessageError)(this.reporter.lang('couldntFindPackageInCache', this.name, this.range, Object.keys(versions).join(', '))); case 43: return _context2.abrupt("return", null); case 44: case "end": return _context2.stop(); } }, _callee2, this, [[5, 26, 29, 32]]); })); function resolveRequestOffline() { return _resolveRequestOffline.apply(this, arguments); } return resolveRequestOffline; }() }, { key: "cleanRegistry", value: function cleanRegistry(url) { if (this.config.getOption('registry') === _constants().YARN_REGISTRY) { return url.replace(_constants().NPM_REGISTRY_RE, _constants().YARN_REGISTRY); } else { return url; } } }, { key: "resolve", value: function () { var _resolve = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee3() { var shrunk, prebuiltVariants, prebuiltName, offlineMirrorPath, filename, _remote, desiredVersion, info, deprecated, dist, human, parentNames; return _regenerator()["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: // lockfile shrunk = this.request.getLocked('tarball'); if (!shrunk) { _context3.next = 18; break; } if (!(this.config.packBuiltPackages && shrunk.prebuiltVariants && shrunk._remote)) { _context3.next = 18; break; } prebuiltVariants = shrunk.prebuiltVariants; prebuiltName = (0, _packageNameUtils().getPlatformSpecificPackageFilename)(shrunk); offlineMirrorPath = this.config.getOfflineMirrorPath(); if (!(prebuiltVariants[prebuiltName] && offlineMirrorPath)) { _context3.next = 18; break; } filename = path.join(offlineMirrorPath, 'prebuilt', prebuiltName + '.tgz'); _remote = shrunk._remote; _context3.t0 = _remote; if (!_context3.t0) { _context3.next = 14; break; } _context3.next = 13; return fs().exists(filename); case 13: _context3.t0 = _context3.sent; case 14: if (!_context3.t0) { _context3.next = 18; break; } _remote.reference = "file:".concat(filename); _remote.hash = prebuiltVariants[prebuiltName]; _remote.integrity = ssri.fromHex(_remote.hash, 'sha1').toString(); case 18: if (!(shrunk && shrunk._remote && (shrunk._remote.integrity || this.config.offline || !this.config.autoAddIntegrity))) { _context3.next = 20; break; } return _context3.abrupt("return", shrunk); case 20: desiredVersion = shrunk && shrunk.version ? shrunk.version : null; _context3.next = 23; return this.resolveRequest(desiredVersion); case 23: info = _context3.sent; if (!(info == null)) { _context3.next = 26; break; } throw new (_errors().MessageError)(this.reporter.lang('packageNotFoundRegistry', this.name, NPM_REGISTRY_ID)); case 26: deprecated = info.deprecated, dist = info.dist; if (!(shrunk && shrunk._remote)) { _context3.next = 30; break; } shrunk._remote.integrity = dist && dist.integrity ? ssri.parse(dist.integrity) : ssri.fromHex(dist && dist.shasum ? dist.shasum : '', 'sha1'); return _context3.abrupt("return", shrunk); case 30: if (typeof deprecated === 'string') { human = "".concat(info.name, "@").concat(info.version); parentNames = this.request.parentNames; if (parentNames.length) { human = parentNames.concat(human).join(' > '); } this.reporter.warn("".concat(human, ": ").concat(deprecated)); } if (dist != null && dist.tarball) { info._remote = { resolved: "".concat(this.cleanRegistry(dist.tarball), "#").concat(dist.shasum), type: 'tarball', reference: this.cleanRegistry(dist.tarball), hash: dist.shasum, integrity: dist.integrity ? ssri.parse(dist.integrity) : ssri.fromHex(dist.shasum, 'sha1'), registry: NPM_REGISTRY_ID, packageName: info.name }; } info._uid = info.version; return _context3.abrupt("return", info); case 34: case "end": return _context3.stop(); } }, _callee3, this); })); function resolve() { return _resolve.apply(this, arguments); } return resolve; }() }], [{ key: "findVersionInRegistryResponse", value: function () { var _findVersionInRegistryResponse = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee4(config, name, range, body, request) { var latestVersion, satisfied, pageSize, response; return _regenerator()["default"].wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: if (!(body.versions && Object.keys(body.versions).length === 0)) { _context4.next = 2; break; } throw new (_errors().MessageError)(config.reporter.lang('registryNoVersions', body.name)); case 2: if (!(!body['dist-tags'] || !body.versions)) { _context4.next = 4; break; } throw new (_errors().MessageError)(config.reporter.lang('malformedRegistryResponse', name)); case 4: if (range in body['dist-tags']) { range = body['dist-tags'][range]; } // If the latest tag in the registry satisfies the requested range, then use that. // Otherwise we will fall back to semver maxSatisfying. // This mimics logic in NPM. See issue #3560 latestVersion = body['dist-tags'] ? body['dist-tags'].latest : undefined; if (!(latestVersion && semver.satisfies(latestVersion, range))) { _context4.next = 8; break; } return _context4.abrupt("return", body.versions[latestVersion]); case 8: _context4.next = 10; return config.resolveConstraints(Object.keys(body.versions), range); case 10: satisfied = _context4.sent; if (!satisfied) { _context4.next = 15; break; } return _context4.abrupt("return", body.versions[satisfied]); case 15: if (!(request && !config.nonInteractive)) { _context4.next = 24; break; } if (request.resolver && request.resolver.activity) { request.resolver.activity.end(); } config.reporter.log(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range)); if (process.stdout instanceof tty.WriteStream) { pageSize = process.stdout.rows - 2; } _context4.next = 21; return inquirer.prompt([{ name: 'package', type: 'list', message: config.reporter.lang('chooseVersionFromList', body.name), choices: semver.rsort(Object.keys(body.versions)), pageSize: pageSize }]); case 21: response = _context4.sent; if (!(response && response["package"])) { _context4.next = 24; break; } return _context4.abrupt("return", body.versions[response["package"]]); case 24: throw new (_errors().MessageError)(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range)); case 25: case "end": return _context4.stop(); } }, _callee4); })); function findVersionInRegistryResponse(_x2, _x3, _x4, _x5, _x6) { return _findVersionInRegistryResponse.apply(this, arguments); } return findVersionInRegistryResponse; }() }]); return NpmResolver; }(_registryResolver()["default"]); exports["default"] = NpmResolver; (0, _defineProperty2()["default"])(NpmResolver, "registry", NPM_REGISTRY_ID); //# sourceMappingURL=npm-resolver.js.map