JezK
Edit File: resolution-map.js
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldUpdateLockfile = exports["default"] = void 0; function _toConsumableArray2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); _toConsumableArray2 = function _toConsumableArray2() { 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 _defineProperty2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); _defineProperty2 = function _defineProperty2() { return data; }; return data; } function _semver() { var data = _interopRequireDefault(require("semver")); _semver = function _semver() { return data; }; return data; } function _minimatch() { var data = _interopRequireDefault(require("minimatch")); _minimatch = function _minimatch() { return data; }; return data; } function _map() { var data = _interopRequireDefault(require("./util/map")); _map = function _map() { return data; }; return data; } function _normalizePattern2() { var data = require("./util/normalize-pattern.js"); _normalizePattern2 = function _normalizePattern2() { return data; }; return data; } function _parsePackagePath() { var data = _interopRequireWildcard(require("./util/parse-package-path")); _parsePackagePath = function _parsePackagePath() { return data; }; return data; } function _resolvers() { var data = require("./resolvers"); _resolvers = function _resolvers() { 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; } var DIRECTORY_SEPARATOR = '/'; var GLOBAL_NESTED_DEP_PATTERN = '**/'; var ResolutionMap = /*#__PURE__*/function () { function ResolutionMap(config) { (0, _classCallCheck2()["default"])(this, ResolutionMap); (0, _defineProperty2()["default"])(this, "resolutionsByPackage", void 0); (0, _defineProperty2()["default"])(this, "config", void 0); (0, _defineProperty2()["default"])(this, "reporter", void 0); (0, _defineProperty2()["default"])(this, "delayQueue", void 0); this.resolutionsByPackage = (0, _map()["default"])(); this.config = config; this.reporter = config.reporter; this.delayQueue = new Set(); } (0, _createClass2()["default"])(ResolutionMap, [{ key: "init", value: function init() { var resolutions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; for (var globPattern in resolutions) { var info = this.parsePatternInfo(globPattern, resolutions[globPattern]); if (info) { var resolution = this.resolutionsByPackage[info.name] || []; this.resolutionsByPackage[info.name] = [].concat((0, _toConsumableArray2()["default"])(resolution), [info]); } } } }, { key: "addToDelayQueue", value: function addToDelayQueue(req) { this.delayQueue.add(req); } }, { key: "parsePatternInfo", value: function parsePatternInfo(globPattern, range) { if (!(0, _parsePackagePath().isValidPackagePath)(globPattern)) { this.reporter.warn(this.reporter.lang('invalidResolutionName', globPattern)); return null; } var directories = (0, _parsePackagePath()["default"])(globPattern); var name = directories.pop(); if (!_semver()["default"].validRange(range) && !(0, _resolvers().getExoticResolver)(range)) { this.reporter.warn(this.reporter.lang('invalidResolutionVersion', range)); return null; } // For legacy support of resolutions, replace `name` with `**/name` if (name === globPattern) { globPattern = "".concat(GLOBAL_NESTED_DEP_PATTERN).concat(name); } return { name: name, range: range, globPattern: globPattern, pattern: "".concat(name, "@").concat(range) }; } }, { key: "find", value: function find(reqPattern, parentNames) { var _normalizePattern = (0, _normalizePattern2().normalizePattern)(reqPattern), name = _normalizePattern.name, reqRange = _normalizePattern.range; var resolutions = this.resolutionsByPackage[name]; if (!resolutions) { return ''; } var modulePath = [].concat((0, _toConsumableArray2()["default"])(parentNames), [name]).join(DIRECTORY_SEPARATOR); var _ref = resolutions.find(function (_ref2) { var globPattern = _ref2.globPattern; return (0, _minimatch()["default"])(modulePath, globPattern); }) || {}, pattern = _ref.pattern, range = _ref.range; if (pattern) { if (_semver()["default"].validRange(reqRange) && _semver()["default"].valid(range) && !_semver()["default"].satisfies(range, reqRange)) { this.reporter.warn(this.reporter.lang('incompatibleResolutionVersion', pattern, reqPattern)); } } return pattern; } }]); return ResolutionMap; }(); exports["default"] = ResolutionMap; var shouldUpdateLockfile = function shouldUpdateLockfile(lockfileEntry, resolutionEntry) { if (!lockfileEntry || !resolutionEntry) { return false; } return lockfileEntry.resolved !== resolutionEntry.remote.resolved; }; exports.shouldUpdateLockfile = shouldUpdateLockfile; //# sourceMappingURL=resolution-map.js.map