JezK
Edit File: licenses.js
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.examples = void 0; exports.hasWrapper = hasWrapper; exports.run = void 0; exports.setFlags = setFlags; function _regenerator() { var data = _interopRequireDefault(require("@babel/runtime/regenerator")); _regenerator = function _regenerator() { return data; }; return data; } function _defineProperty2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); _defineProperty2 = function _defineProperty2() { return data; }; return data; } function _slicedToArray2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); _slicedToArray2 = function _slicedToArray2() { return data; }; return data; } function _asyncToGenerator2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); _asyncToGenerator2 = function _asyncToGenerator2() { return data; }; return data; } function _baseReporter() { var data = _interopRequireDefault(require("../../reporters/base-reporter.js")); _baseReporter = function _baseReporter() { return data; }; return data; } function _install() { var data = require("./install.js"); _install = function _install() { return data; }; return data; } function _lockfile() { var data = _interopRequireDefault(require("../../lockfile")); _lockfile = function _lockfile() { return data; }; return data; } function _buildSubCommands2() { var data = _interopRequireDefault(require("./_build-sub-commands.js")); _buildSubCommands2 = function _buildSubCommands2() { return data; }; return data; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2()["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 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; } var invariant = require('invariant'); function hasWrapper(flags, args) { return args[0] != 'generate-disclaimer'; } function getManifests(_x, _x2) { return _getManifests.apply(this, arguments); } function _getManifests() { _getManifests = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee4(config, flags) { var lockfile, install, manifests; return _regenerator()["default"].wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return _lockfile()["default"].fromDirectory(config.cwd); case 2: lockfile = _context4.sent; install = new (_install().Install)(_objectSpread({ skipIntegrityCheck: true }, flags), config, new (_baseReporter()["default"])(), lockfile); _context4.next = 6; return install.hydrate(true); case 6: manifests = install.resolver.getManifests(); // sort by name manifests = manifests.sort(function (a, b) { if (!a.name && !b.name) { return 0; } if (!a.name) { return 1; } if (!b.name) { return -1; } return a.name.localeCompare(b.name); }); // filter ignored manifests manifests = manifests.filter(function (manifest) { var ref = manifest._reference; return !!ref && !ref.ignore; }); return _context4.abrupt("return", manifests); case 10: case "end": return _context4.stop(); } }, _callee4); })); return _getManifests.apply(this, arguments); } function _list2(_x3, _x4, _x5, _x6) { return _list.apply(this, arguments); } function _list() { _list = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee5(config, reporter, flags, args) { var manifests, manifestsByLicense, _iterator4, _step4, _step4$value, name, version, license, repository, homepage, author, licenseKey, url, vendorUrl, vendorName, byLicense, body, trees; return _regenerator()["default"].wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return getManifests(config, flags); case 2: manifests = _context5.sent; manifestsByLicense = new Map(); _iterator4 = _createForOfIteratorHelper(manifests); try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { _step4$value = _step4.value, name = _step4$value.name, version = _step4$value.version, license = _step4$value.license, repository = _step4$value.repository, homepage = _step4$value.homepage, author = _step4$value.author; licenseKey = license || 'UNKNOWN'; url = repository ? repository.url : homepage; vendorUrl = homepage || author && author.url; vendorName = author && author.name; if (!manifestsByLicense.has(licenseKey)) { manifestsByLicense.set(licenseKey, new Map()); } byLicense = manifestsByLicense.get(licenseKey); invariant(byLicense, 'expected value'); byLicense.set("".concat(name, "@").concat(version), { name: name, version: version, url: url, vendorUrl: vendorUrl, vendorName: vendorName }); } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } if (flags.json) { body = []; manifestsByLicense.forEach(function (license, licenseKey) { license.forEach(function (_ref) { var name = _ref.name, version = _ref.version, url = _ref.url, vendorUrl = _ref.vendorUrl, vendorName = _ref.vendorName; body.push([name, version, licenseKey, url || 'Unknown', vendorUrl || 'Unknown', vendorName || 'Unknown']); }); }); reporter.table(['Name', 'Version', 'License', 'URL', 'VendorUrl', 'VendorName'], body); } else { trees = []; manifestsByLicense.forEach(function (license, licenseKey) { var licenseTree = []; license.forEach(function (_ref2) { var name = _ref2.name, version = _ref2.version, url = _ref2.url, vendorUrl = _ref2.vendorUrl, vendorName = _ref2.vendorName; var children = []; if (url) { children.push({ name: "".concat(reporter.format.bold('URL:'), " ").concat(url) }); } if (vendorUrl) { children.push({ name: "".concat(reporter.format.bold('VendorUrl:'), " ").concat(vendorUrl) }); } if (vendorName) { children.push({ name: "".concat(reporter.format.bold('VendorName:'), " ").concat(vendorName) }); } licenseTree.push({ name: "".concat(name, "@").concat(version), children: children }); }); trees.push({ name: licenseKey, children: licenseTree }); }); reporter.tree('licenses', trees, { force: true }); } case 7: case "end": return _context5.stop(); } }, _callee5); })); return _list.apply(this, arguments); } var _buildSubCommands = (0, _buildSubCommands2()["default"])('licenses', { ls: function ls(config, reporter, commander, flags, args) { return (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee() { return _regenerator()["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: reporter.warn("`yarn licenses ls` is deprecated. Please use `yarn licenses list`."); _context.next = 3; return _list2(config, reporter, flags, args); case 3: case "end": return _context.stop(); } }, _callee); }))(); }, list: function list(config, reporter, commander, flags, args) { return (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee2() { return _regenerator()["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return _list2(config, reporter, flags, args); case 2: case "end": return _context2.stop(); } }, _callee2); }))(); }, generateDisclaimer: function generateDisclaimer(config, reporter, commander, flags, args) { return (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee3() { var manifests, manifest, manifestsByLicense, _iterator, _step, _manifest, licenseText, noticeText, licenseKey, byLicense, _iterator2, _step2, _step2$value, _licenseKey, _manifests, names, urls, _iterator3, _step3, _step3$value, name, repository, heading; return _regenerator()["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return getManifests(config, flags); case 2: manifests = _context3.sent; _context3.next = 5; return config.readRootManifest(); case 5: manifest = _context3.sent; // Create a map of license text to manifest so that packages with exactly // the same license text are grouped together. manifestsByLicense = new Map(); _iterator = _createForOfIteratorHelper(manifests); _context3.prev = 8; _iterator.s(); case 10: if ((_step = _iterator.n()).done) { _context3.next = 23; break; } _manifest = _step.value; licenseText = _manifest.licenseText, noticeText = _manifest.noticeText; licenseKey = void 0; if (licenseText) { _context3.next = 16; break; } return _context3.abrupt("continue", 21); case 16: if (!noticeText) { licenseKey = licenseText; } else { licenseKey = "".concat(licenseText, "\n\nNOTICE\n\n").concat(noticeText); } if (!manifestsByLicense.has(licenseKey)) { manifestsByLicense.set(licenseKey, new Map()); } byLicense = manifestsByLicense.get(licenseKey); invariant(byLicense, 'expected value'); byLicense.set(_manifest.name, _manifest); case 21: _context3.next = 10; break; case 23: _context3.next = 28; break; case 25: _context3.prev = 25; _context3.t0 = _context3["catch"](8); _iterator.e(_context3.t0); case 28: _context3.prev = 28; _iterator.f(); return _context3.finish(28); case 31: console.log('THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED ' + "IN PORTIONS OF THE ".concat(String(manifest.name).toUpperCase().replace(/-/g, ' '), " PRODUCT.")); console.log(); _iterator2 = _createForOfIteratorHelper(manifestsByLicense); try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { _step2$value = (0, _slicedToArray2()["default"])(_step2.value, 2), _licenseKey = _step2$value[0], _manifests = _step2$value[1]; console.log('-----'); console.log(); names = []; urls = []; _iterator3 = _createForOfIteratorHelper(_manifests); try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { _step3$value = (0, _slicedToArray2()["default"])(_step3.value, 2), name = _step3$value[0], repository = _step3$value[1].repository; names.push(name); if (repository && repository.url) { urls.push(_manifests.size === 1 ? repository.url : "".concat(repository.url, " (").concat(name, ")")); } } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } heading = []; heading.push("The following software may be included in this product: ".concat(names.join(', '), ".")); if (urls.length > 0) { heading.push("A copy of the source code may be downloaded from ".concat(urls.join(', '), ".")); } heading.push('This software contains the following license and notice below:'); console.log(heading.join(' ')); console.log(); if (_licenseKey) { console.log(_licenseKey.trim()); } else { // what do we do here? base it on `license`? } console.log(); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } case 35: case "end": return _context3.stop(); } }, _callee3, null, [[8, 25, 28, 31]]); }))(); } }), run = _buildSubCommands.run, _setFlags = _buildSubCommands.setFlags, examples = _buildSubCommands.examples; exports.examples = examples; exports.run = run; function setFlags(commander) { _setFlags(commander); commander.description('Lists licenses for installed packages.'); } //# sourceMappingURL=licenses.js.map