diff --git a/resources/[system]/[builders]/yarn/yarn_cli.js b/resources/[system]/[builders]/yarn/yarn_cli.js index 718ecf2..09c375f 100644 --- a/resources/[system]/[builders]/yarn/yarn_cli.js +++ b/resources/[system]/[builders]/yarn/yarn_cli.js @@ -65,11 +65,17 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 529); +/******/ return __webpack_require__(__webpack_require__.s = 549); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ +/***/ (function(module, exports) { + +module.exports = require("path"); + +/***/ }), +/* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -281,7 +287,7 @@ function __importDefault(mod) { /***/ }), -/* 1 */ +/* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -289,7 +295,7 @@ function __importDefault(mod) { exports.__esModule = true; -var _promise = __webpack_require__(6); +var _promise = __webpack_require__(227); var _promise2 = _interopRequireDefault(_promise); @@ -325,46 +331,1257 @@ exports.default = function (fn) { }; /***/ }), -/* 2 */ +/* 3 */ /***/ (function(module, exports) { -module.exports = require("path"); - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -exports.default = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; +module.exports = require("util"); /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = { "default": __webpack_require__(612), __esModule: true }; +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let buildActionsForCopy = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { + + // + let build = (() => { + var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + const src = data.src, + dest = data.dest, + type = data.type; + + const onFresh = data.onFresh || noop; + const onDone = data.onDone || noop; + + // TODO https://github.com/yarnpkg/yarn/issues/3751 + // related to bundled dependencies handling + if (files.has(dest.toLowerCase())) { + reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`); + } else { + files.add(dest.toLowerCase()); + } + + if (type === 'symlink') { + yield mkdirp((_path || _load_path()).default.dirname(dest)); + onFresh(); + actions.symlink.push({ + dest, + linkname: src + }); + onDone(); + return; + } + + if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { + // ignored file + return; + } + + const srcStat = yield lstat(src); + let srcFiles; + + if (srcStat.isDirectory()) { + srcFiles = yield readdir(src); + } + + let destStat; + try { + // try accessing the destination + destStat = yield lstat(dest); + } catch (e) { + // proceed if destination doesn't exist, otherwise error + if (e.code !== 'ENOENT') { + throw e; + } + } + + // if destination exists + if (destStat) { + const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); + const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); + const bothFiles = srcStat.isFile() && destStat.isFile(); + + // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving + // us modes that aren't valid. investigate this, it's generally safe to proceed. + + /* if (srcStat.mode !== destStat.mode) { + try { + await access(dest, srcStat.mode); + } catch (err) {} + } */ + + if (bothFiles && artifactFiles.has(dest)) { + // this file gets changed during build, likely by a custom install script. Don't bother checking it. + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); + return; + } + + if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) { + // we can safely assume this is the same file + onDone(); + reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime)); + return; + } + + if (bothSymlinks) { + const srcReallink = yield readlink(src); + if (srcReallink === (yield readlink(dest))) { + // if both symlinks are the same then we can continue on + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); + return; + } + } + + if (bothFolders) { + // mark files that aren't in this folder as possibly extraneous + const destFiles = yield readdir(dest); + invariant(srcFiles, 'src files not initialised'); + + for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref6; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref6 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref6 = _i4.value; + } + + const file = _ref6; + + if (srcFiles.indexOf(file) < 0) { + const loc = (_path || _load_path()).default.join(dest, file); + possibleExtraneous.add(loc); + + if ((yield lstat(loc)).isDirectory()) { + for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref7; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref7 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref7 = _i5.value; + } + + const file = _ref7; + + possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); + } + } + } + } + } + } + + if (destStat && destStat.isSymbolicLink()) { + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); + destStat = null; + } + + if (srcStat.isSymbolicLink()) { + onFresh(); + const linkname = yield readlink(src); + actions.symlink.push({ + dest, + linkname + }); + onDone(); + } else if (srcStat.isDirectory()) { + if (!destStat) { + reporter.verbose(reporter.lang('verboseFileFolder', dest)); + yield mkdirp(dest); + } + + const destParts = dest.split((_path || _load_path()).default.sep); + while (destParts.length) { + files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); + destParts.pop(); + } + + // push all files to queue + invariant(srcFiles, 'src files not initialised'); + let remaining = srcFiles.length; + if (!remaining) { + onDone(); + } + for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref8; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref8 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref8 = _i6.value; + } + + const file = _ref8; + + queue.push({ + dest: (_path || _load_path()).default.join(dest, file), + onFresh, + onDone: function (_onDone) { + function onDone() { + return _onDone.apply(this, arguments); + } + + onDone.toString = function () { + return _onDone.toString(); + }; + + return onDone; + }(function () { + if (--remaining === 0) { + onDone(); + } + }), + src: (_path || _load_path()).default.join(src, file) + }); + } + } else if (srcStat.isFile()) { + onFresh(); + actions.file.push({ + src, + dest, + atime: srcStat.atime, + mtime: srcStat.mtime, + mode: srcStat.mode + }); + onDone(); + } else { + throw new Error(`unsure how to copy this: ${src}`); + } + }); + + return function build(_x5) { + return _ref5.apply(this, arguments); + }; + })(); + + const artifactFiles = new Set(events.artifactFiles || []); + const files = new Set(); + + // initialise events + for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref2; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref2 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref2 = _i.value; + } + + const item = _ref2; + + const onDone = item.onDone; + item.onDone = function () { + events.onProgress(item.dest); + if (onDone) { + onDone(); + } + }; + } + events.onStart(queue.length); + + // start building actions + const actions = { + file: [], + symlink: [], + link: [] + }; + + // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items + // at a time due to the requirement to push items onto the queue + while (queue.length) { + const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); + yield Promise.all(items.map(build)); + } + + // simulate the existence of some files to prevent considering them extraneous + for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref3; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + + const file = _ref3; + + if (possibleExtraneous.has(file)) { + reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); + possibleExtraneous.delete(file); + } + } + + for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + const loc = _ref4; + + if (files.has(loc.toLowerCase())) { + possibleExtraneous.delete(loc); + } + } + + return actions; + }); + + return function buildActionsForCopy(_x, _x2, _x3, _x4) { + return _ref.apply(this, arguments); + }; +})(); + +let buildActionsForHardlink = (() => { + var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { + + // + let build = (() => { + var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + const src = data.src, + dest = data.dest; + + const onFresh = data.onFresh || noop; + const onDone = data.onDone || noop; + if (files.has(dest.toLowerCase())) { + // Fixes issue https://github.com/yarnpkg/yarn/issues/2734 + // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1, + // package-linker passes that modules A1 and B1 need to be hardlinked, + // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case + // an exception. + onDone(); + return; + } + files.add(dest.toLowerCase()); + + if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { + // ignored file + return; + } + + const srcStat = yield lstat(src); + let srcFiles; + + if (srcStat.isDirectory()) { + srcFiles = yield readdir(src); + } + + const destExists = yield exists(dest); + if (destExists) { + const destStat = yield lstat(dest); + + const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); + const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); + const bothFiles = srcStat.isFile() && destStat.isFile(); + + if (srcStat.mode !== destStat.mode) { + try { + yield access(dest, srcStat.mode); + } catch (err) { + // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving + // us modes that aren't valid. investigate this, it's generally safe to proceed. + reporter.verbose(err); + } + } + + if (bothFiles && artifactFiles.has(dest)) { + // this file gets changed during build, likely by a custom install script. Don't bother checking it. + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); + return; + } + + // correct hardlink + if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { + onDone(); + reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); + return; + } + + if (bothSymlinks) { + const srcReallink = yield readlink(src); + if (srcReallink === (yield readlink(dest))) { + // if both symlinks are the same then we can continue on + onDone(); + reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); + return; + } + } + + if (bothFolders) { + // mark files that aren't in this folder as possibly extraneous + const destFiles = yield readdir(dest); + invariant(srcFiles, 'src files not initialised'); + + for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { + var _ref14; + + if (_isArray10) { + if (_i10 >= _iterator10.length) break; + _ref14 = _iterator10[_i10++]; + } else { + _i10 = _iterator10.next(); + if (_i10.done) break; + _ref14 = _i10.value; + } + + const file = _ref14; + + if (srcFiles.indexOf(file) < 0) { + const loc = (_path || _load_path()).default.join(dest, file); + possibleExtraneous.add(loc); + + if ((yield lstat(loc)).isDirectory()) { + for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { + var _ref15; + + if (_isArray11) { + if (_i11 >= _iterator11.length) break; + _ref15 = _iterator11[_i11++]; + } else { + _i11 = _iterator11.next(); + if (_i11.done) break; + _ref15 = _i11.value; + } + + const file = _ref15; + + possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); + } + } + } + } + } + } + + if (srcStat.isSymbolicLink()) { + onFresh(); + const linkname = yield readlink(src); + actions.symlink.push({ + dest, + linkname + }); + onDone(); + } else if (srcStat.isDirectory()) { + reporter.verbose(reporter.lang('verboseFileFolder', dest)); + yield mkdirp(dest); + + const destParts = dest.split((_path || _load_path()).default.sep); + while (destParts.length) { + files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); + destParts.pop(); + } + + // push all files to queue + invariant(srcFiles, 'src files not initialised'); + let remaining = srcFiles.length; + if (!remaining) { + onDone(); + } + for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { + var _ref16; + + if (_isArray12) { + if (_i12 >= _iterator12.length) break; + _ref16 = _iterator12[_i12++]; + } else { + _i12 = _iterator12.next(); + if (_i12.done) break; + _ref16 = _i12.value; + } + + const file = _ref16; + + queue.push({ + onFresh, + src: (_path || _load_path()).default.join(src, file), + dest: (_path || _load_path()).default.join(dest, file), + onDone: function (_onDone2) { + function onDone() { + return _onDone2.apply(this, arguments); + } + + onDone.toString = function () { + return _onDone2.toString(); + }; + + return onDone; + }(function () { + if (--remaining === 0) { + onDone(); + } + }) + }); + } + } else if (srcStat.isFile()) { + onFresh(); + actions.link.push({ + src, + dest, + removeDest: destExists + }); + onDone(); + } else { + throw new Error(`unsure how to copy this: ${src}`); + } + }); + + return function build(_x10) { + return _ref13.apply(this, arguments); + }; + })(); + + const artifactFiles = new Set(events.artifactFiles || []); + const files = new Set(); + + // initialise events + for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref10; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref10 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref10 = _i7.value; + } + + const item = _ref10; + + const onDone = item.onDone || noop; + item.onDone = function () { + events.onProgress(item.dest); + onDone(); + }; + } + events.onStart(queue.length); + + // start building actions + const actions = { + file: [], + symlink: [], + link: [] + }; + + // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items + // at a time due to the requirement to push items onto the queue + while (queue.length) { + const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); + yield Promise.all(items.map(build)); + } + + // simulate the existence of some files to prevent considering them extraneous + for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref11; + + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref11 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref11 = _i8.value; + } + + const file = _ref11; + + if (possibleExtraneous.has(file)) { + reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); + possibleExtraneous.delete(file); + } + } + + for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { + var _ref12; + + if (_isArray9) { + if (_i9 >= _iterator9.length) break; + _ref12 = _iterator9[_i9++]; + } else { + _i9 = _iterator9.next(); + if (_i9.done) break; + _ref12 = _i9.value; + } + + const loc = _ref12; + + if (files.has(loc.toLowerCase())) { + possibleExtraneous.delete(loc); + } + } + + return actions; + }); + + return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { + return _ref9.apply(this, arguments); + }; +})(); + +let copyBulk = exports.copyBulk = (() => { + var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { + const events = { + onStart: _events && _events.onStart || noop, + onProgress: _events && _events.onProgress || noop, + possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), + ignoreBasenames: _events && _events.ignoreBasenames || [], + artifactFiles: _events && _events.artifactFiles || [] + }; + + const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); + events.onStart(actions.file.length + actions.symlink.length + actions.link.length); + + const fileActions = actions.file; + + const currentlyWriting = new Map(); + + yield (_promise || _load_promise()).queue(fileActions, (() => { + var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + let writePromise; + while (writePromise = currentlyWriting.get(data.dest)) { + yield writePromise; + } + + reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest)); + const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () { + return currentlyWriting.delete(data.dest); + }); + currentlyWriting.set(data.dest, copier); + events.onProgress(data.dest); + return copier; + }); + + return function (_x14) { + return _ref18.apply(this, arguments); + }; + })(), CONCURRENT_QUEUE_ITEMS); + + // we need to copy symlinks last as they could reference files we were copying + const symlinkActions = actions.symlink; + yield (_promise || _load_promise()).queue(symlinkActions, function (data) { + const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); + reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); + return symlink(linkname, data.dest); + }); + }); + + return function copyBulk(_x11, _x12, _x13) { + return _ref17.apply(this, arguments); + }; +})(); + +let hardlinkBulk = exports.hardlinkBulk = (() => { + var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { + const events = { + onStart: _events && _events.onStart || noop, + onProgress: _events && _events.onProgress || noop, + possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), + artifactFiles: _events && _events.artifactFiles || [], + ignoreBasenames: [] + }; + + const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); + events.onStart(actions.file.length + actions.symlink.length + actions.link.length); + + const fileActions = actions.link; + + yield (_promise || _load_promise()).queue(fileActions, (() => { + var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest)); + if (data.removeDest) { + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest); + } + yield link(data.src, data.dest); + }); + + return function (_x18) { + return _ref20.apply(this, arguments); + }; + })(), CONCURRENT_QUEUE_ITEMS); + + // we need to copy symlinks last as they could reference files we were copying + const symlinkActions = actions.symlink; + yield (_promise || _load_promise()).queue(symlinkActions, function (data) { + const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); + reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); + return symlink(linkname, data.dest); + }); + }); + + return function hardlinkBulk(_x15, _x16, _x17) { + return _ref19.apply(this, arguments); + }; +})(); + +let readFileAny = exports.readFileAny = (() => { + var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) { + for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { + var _ref22; + + if (_isArray13) { + if (_i13 >= _iterator13.length) break; + _ref22 = _iterator13[_i13++]; + } else { + _i13 = _iterator13.next(); + if (_i13.done) break; + _ref22 = _i13.value; + } + + const file = _ref22; + + if (yield exists(file)) { + return readFile(file); + } + } + return null; + }); + + return function readFileAny(_x19) { + return _ref21.apply(this, arguments); + }; +})(); + +let readJson = exports.readJson = (() => { + var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { + return (yield readJsonAndFile(loc)).object; + }); + + return function readJson(_x20) { + return _ref23.apply(this, arguments); + }; +})(); + +let readJsonAndFile = exports.readJsonAndFile = (() => { + var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { + const file = yield readFile(loc); + try { + return { + object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))), + content: file + }; + } catch (err) { + err.message = `${loc}: ${err.message}`; + throw err; + } + }); + + return function readJsonAndFile(_x21) { + return _ref24.apply(this, arguments); + }; +})(); + +let find = exports.find = (() => { + var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { + const parts = dir.split((_path || _load_path()).default.sep); + + while (parts.length) { + const loc = parts.concat(filename).join((_path || _load_path()).default.sep); + + if (yield exists(loc)) { + return loc; + } else { + parts.pop(); + } + } + + return false; + }); + + return function find(_x22, _x23) { + return _ref25.apply(this, arguments); + }; +})(); + +let symlink = exports.symlink = (() => { + var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { + if (process.platform !== 'win32') { + // use relative paths otherwise which will be retained if the directory is moved + src = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src); + // When path.relative returns an empty string for the current directory, we should instead use + // '.', which is a valid fs.symlink target. + src = src || '.'; + } + + try { + const stats = yield lstat(dest); + if (stats.isSymbolicLink()) { + const resolved = dest; + if (resolved === src) { + return; + } + } + } catch (err) { + if (err.code !== 'ENOENT') { + throw err; + } + } + + // We use rimraf for unlink which never throws an ENOENT on missing target + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); + + if (process.platform === 'win32') { + // use directory junctions if possible on win32, this requires absolute paths + yield fsSymlink(src, dest, 'junction'); + } else { + yield fsSymlink(src, dest); + } + }); + + return function symlink(_x24, _x25) { + return _ref26.apply(this, arguments); + }; +})(); + +let walk = exports.walk = (() => { + var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) { + let files = []; + + let filenames = yield readdir(dir); + if (ignoreBasenames.size) { + filenames = filenames.filter(function (name) { + return !ignoreBasenames.has(name); + }); + } + + for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { + var _ref28; + + if (_isArray14) { + if (_i14 >= _iterator14.length) break; + _ref28 = _iterator14[_i14++]; + } else { + _i14 = _iterator14.next(); + if (_i14.done) break; + _ref28 = _i14.value; + } + + const name = _ref28; + + const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name; + const loc = (_path || _load_path()).default.join(dir, name); + const stat = yield lstat(loc); + + files.push({ + relative, + basename: name, + absolute: loc, + mtime: +stat.mtime + }); + + if (stat.isDirectory()) { + files = files.concat((yield walk(loc, relative, ignoreBasenames))); + } + } + + return files; + }); + + return function walk(_x26, _x27) { + return _ref27.apply(this, arguments); + }; +})(); + +let getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => { + var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { + const stat = yield lstat(loc); + const size = stat.size, + blockSize = stat.blksize; + + + return Math.ceil(size / blockSize) * blockSize; + }); + + return function getFileSizeOnDisk(_x28) { + return _ref29.apply(this, arguments); + }; +})(); + +let getEolFromFile = (() => { + var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { + if (!(yield exists(path))) { + return undefined; + } + + const buffer = yield readFileBuffer(path); + + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] === cr) { + return '\r\n'; + } + if (buffer[i] === lf) { + return '\n'; + } + } + return undefined; + }); + + return function getEolFromFile(_x29) { + return _ref30.apply(this, arguments); + }; +})(); + +let writeFilePreservingEol = exports.writeFilePreservingEol = (() => { + var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) { + const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL; + if (eol !== '\n') { + data = data.replace(/\n/g, eol); + } + yield writeFile(path, data); + }); + + return function writeFilePreservingEol(_x30, _x31) { + return _ref31.apply(this, arguments); + }; +})(); + +let hardlinksWork = exports.hardlinksWork = (() => { + var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { + const filename = 'test-file' + Math.random(); + const file = (_path || _load_path()).default.join(dir, filename); + const fileLink = (_path || _load_path()).default.join(dir, filename + '-link'); + try { + yield writeFile(file, 'test'); + yield link(file, fileLink); + } catch (err) { + return false; + } finally { + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file); + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink); + } + return true; + }); + + return function hardlinksWork(_x32) { + return _ref32.apply(this, arguments); + }; +})(); + +// not a strict polyfill for Node's fs.mkdtemp + + +let makeTempDir = exports.makeTempDir = (() => { + var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) { + const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`); + yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir); + yield mkdirp(dir); + return dir; + }); + + return function makeTempDir(_x33) { + return _ref33.apply(this, arguments); + }; +})(); + +let readFirstAvailableStream = exports.readFirstAvailableStream = (() => { + var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { + for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { + var _ref35; + + if (_isArray15) { + if (_i15 >= _iterator15.length) break; + _ref35 = _iterator15[_i15++]; + } else { + _i15 = _iterator15.next(); + if (_i15.done) break; + _ref35 = _i15.value; + } + + const path = _ref35; + + try { + const fd = yield open(path, 'r'); + return (_fs || _load_fs()).default.createReadStream(path, { fd }); + } catch (err) { + // Try the next one + } + } + return null; + }); + + return function readFirstAvailableStream(_x34) { + return _ref34.apply(this, arguments); + }; +})(); + +let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => { + var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) { + const result = { + skipped: [], + folder: null + }; + + for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { + var _ref37; + + if (_isArray16) { + if (_i16 >= _iterator16.length) break; + _ref37 = _iterator16[_i16++]; + } else { + _i16 = _iterator16.next(); + if (_i16.done) break; + _ref37 = _i16.value; + } + + const folder = _ref37; + + try { + yield mkdirp(folder); + yield access(folder, mode); + + result.folder = folder; + + return result; + } catch (error) { + result.skipped.push({ + error, + folder + }); + } + } + return result; + }); + + return function getFirstSuitableFolder(_x35) { + return _ref36.apply(this, arguments); + }; +})(); + +exports.copy = copy; +exports.readFile = readFile; +exports.readFileRaw = readFileRaw; +exports.normalizeOS = normalizeOS; + +var _fs; + +function _load_fs() { + return _fs = _interopRequireDefault(__webpack_require__(5)); +} + +var _glob; + +function _load_glob() { + return _glob = _interopRequireDefault(__webpack_require__(99)); +} + +var _os; + +function _load_os() { + return _os = _interopRequireDefault(__webpack_require__(46)); +} + +var _path; + +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} + +var _blockingQueue; + +function _load_blockingQueue() { + return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); +} + +var _promise; + +function _load_promise() { + return _promise = _interopRequireWildcard(__webpack_require__(50)); +} + +var _promise2; + +function _load_promise2() { + return _promise2 = __webpack_require__(50); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +var _fsNormalized; + +function _load_fsNormalized() { + return _fsNormalized = __webpack_require__(218); +} + +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 }; } + +const constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : { + R_OK: (_fs || _load_fs()).default.R_OK, + W_OK: (_fs || _load_fs()).default.W_OK, + X_OK: (_fs || _load_fs()).default.X_OK +}; + +const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); + +const readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile); +const open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open); +const writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile); +const readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink); +const realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath); +const readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir); +const rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename); +const access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access); +const stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat); +const mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(145)); +const exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true); +const lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat); +const chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod); +const link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link); +const glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default); +exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink; + +// fs.copyFile uses the native file copying instructions on the system, performing much better +// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the +// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD. + +const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; + +const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink); +const invariant = __webpack_require__(9); +const stripBOM = __webpack_require__(160); + +const noop = () => {}; + +function copy(src, dest, reporter) { + return copyBulk([{ src, dest }], reporter); +} + +function _readFile(loc, encoding) { + return new Promise((resolve, reject) => { + (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { + if (err) { + reject(err); + } else { + resolve(content); + } + }); + }); +} + +function readFile(loc) { + return _readFile(loc, 'utf8').then(normalizeOS); +} + +function readFileRaw(loc) { + return _readFile(loc, 'binary'); +} + +function normalizeOS(body) { + return body.replace(/\r\n/g, '\n'); +} + +const cr = '\r'.charCodeAt(0); +const lf = '\n'.charCodeAt(0); /***/ }), /* 5 */ +/***/ (function(module, exports) { + +module.exports = require("fs"); + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +class MessageError extends Error { + constructor(msg, code) { + super(msg); + this.code = code; + } + +} + +exports.MessageError = MessageError; +class ProcessSpawnError extends MessageError { + constructor(msg, code, process) { + super(msg, code); + this.process = process; + } + +} + +exports.ProcessSpawnError = ProcessSpawnError; +class SecurityError extends MessageError {} + +exports.SecurityError = SecurityError; +class ProcessTermError extends MessageError {} + +exports.ProcessTermError = ProcessTermError; +class ResponseError extends Error { + constructor(msg, responseCode) { + super(msg); + this.responseCode = responseCode; + } + +} + +exports.ResponseError = ResponseError; +class OneTimePasswordError extends Error {} +exports.OneTimePasswordError = OneTimePasswordError; + +/***/ }), +/* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscriber; }); /* unused harmony export SafeSubscriber */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isFunction__ = __webpack_require__(137); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(384); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(30); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__ = __webpack_require__(253); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(169); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_hostReportError__ = __webpack_require__(255); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isFunction__ = __webpack_require__(154); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(420); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__ = __webpack_require__(321); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(185); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_hostReportError__ = __webpack_require__(323); /** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ @@ -604,227 +1821,6 @@ var SafeSubscriber = /*@__PURE__*/ (function (_super) { //# sourceMappingURL=Subscriber.js.map -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(621), __esModule: true }; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.OneTimePasswordError = exports.ResponseError = exports.ProcessTermError = exports.SecurityError = exports.ProcessSpawnError = exports.MessageError = undefined; - -var _create; - -function _load_create() { - return _create = _interopRequireDefault(__webpack_require__(205)); -} - -var _getPrototypeOf; - -function _load_getPrototypeOf() { - return _getPrototypeOf = _interopRequireDefault(__webpack_require__(571)); -} - -var _setPrototypeOf; - -function _load_setPrototypeOf() { - return _setPrototypeOf = _interopRequireDefault(__webpack_require__(206)); -} - -var _from; - -function _load_from() { - return _from = _interopRequireDefault(__webpack_require__(52)); -} - -var _construct; - -function _load_construct() { - return _construct = _interopRequireDefault(__webpack_require__(573)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _extendableBuiltin5(cls) { - function ExtendableBuiltin() { - var instance = (0, (_construct || _load_construct()).default)(cls, (0, (_from || _load_from()).default)(arguments)); - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(instance, (0, (_getPrototypeOf || _load_getPrototypeOf()).default)(this)); - return instance; - } - - ExtendableBuiltin.prototype = (0, (_create || _load_create()).default)(cls.prototype, { - constructor: { - value: cls, - enumerable: false, - writable: true, - configurable: true - } - }); - - if ((_setPrototypeOf || _load_setPrototypeOf()).default) { - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(ExtendableBuiltin, cls); - } else { - ExtendableBuiltin.__proto__ = cls; - } - - return ExtendableBuiltin; -} - -function _extendableBuiltin3(cls) { - function ExtendableBuiltin() { - var instance = (0, (_construct || _load_construct()).default)(cls, (0, (_from || _load_from()).default)(arguments)); - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(instance, (0, (_getPrototypeOf || _load_getPrototypeOf()).default)(this)); - return instance; - } - - ExtendableBuiltin.prototype = (0, (_create || _load_create()).default)(cls.prototype, { - constructor: { - value: cls, - enumerable: false, - writable: true, - configurable: true - } - }); - - if ((_setPrototypeOf || _load_setPrototypeOf()).default) { - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(ExtendableBuiltin, cls); - } else { - ExtendableBuiltin.__proto__ = cls; - } - - return ExtendableBuiltin; -} - -function _extendableBuiltin(cls) { - function ExtendableBuiltin() { - var instance = (0, (_construct || _load_construct()).default)(cls, (0, (_from || _load_from()).default)(arguments)); - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(instance, (0, (_getPrototypeOf || _load_getPrototypeOf()).default)(this)); - return instance; - } - - ExtendableBuiltin.prototype = (0, (_create || _load_create()).default)(cls.prototype, { - constructor: { - value: cls, - enumerable: false, - writable: true, - configurable: true - } - }); - - if ((_setPrototypeOf || _load_setPrototypeOf()).default) { - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(ExtendableBuiltin, cls); - } else { - ExtendableBuiltin.__proto__ = cls; - } - - return ExtendableBuiltin; -} - -var MessageError = exports.MessageError = function (_extendableBuiltin2) { - (0, (_inherits2 || _load_inherits()).default)(MessageError, _extendableBuiltin2); - - function MessageError(msg, code) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, MessageError); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _extendableBuiltin2.call(this, msg)); - - _this.code = code; - return _this; - } - - return MessageError; -}(_extendableBuiltin(Error)); - -var ProcessSpawnError = exports.ProcessSpawnError = function (_MessageError) { - (0, (_inherits2 || _load_inherits()).default)(ProcessSpawnError, _MessageError); - - function ProcessSpawnError(msg, code, process) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, ProcessSpawnError); - - var _this2 = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _MessageError.call(this, msg, code)); - - _this2.process = process; - return _this2; - } - - return ProcessSpawnError; -}(MessageError); - -var SecurityError = exports.SecurityError = function (_MessageError2) { - (0, (_inherits2 || _load_inherits()).default)(SecurityError, _MessageError2); - - function SecurityError() { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, SecurityError); - return (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _MessageError2.apply(this, arguments)); - } - - return SecurityError; -}(MessageError); - -var ProcessTermError = exports.ProcessTermError = function (_MessageError3) { - (0, (_inherits2 || _load_inherits()).default)(ProcessTermError, _MessageError3); - - function ProcessTermError() { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, ProcessTermError); - return (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _MessageError3.apply(this, arguments)); - } - - return ProcessTermError; -}(MessageError); - -var ResponseError = exports.ResponseError = function (_extendableBuiltin4) { - (0, (_inherits2 || _load_inherits()).default)(ResponseError, _extendableBuiltin4); - - function ResponseError(msg, responseCode) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, ResponseError); - - var _this5 = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _extendableBuiltin4.call(this, msg)); - - _this5.responseCode = responseCode; - return _this5; - } - - return ResponseError; -}(_extendableBuiltin3(Error)); - -var OneTimePasswordError = exports.OneTimePasswordError = function (_extendableBuiltin6) { - (0, (_inherits2 || _load_inherits()).default)(OneTimePasswordError, _extendableBuiltin6); - - function OneTimePasswordError() { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, OneTimePasswordError); - return (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _extendableBuiltin6.apply(this, arguments)); - } - - return OneTimePasswordError; -}(_extendableBuiltin5(Error)); - /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { @@ -835,1294 +1831,139 @@ var OneTimePasswordError = exports.OneTimePasswordError = function (_extendableB Object.defineProperty(exports, "__esModule", { value: true }); -exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined; +exports.getPathKey = getPathKey; +const os = __webpack_require__(46); +const path = __webpack_require__(0); +const userHome = __webpack_require__(67).default; -var _map; +var _require = __webpack_require__(225); -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(41)); +const getCacheDir = _require.getCacheDir, + getConfigDir = _require.getConfigDir, + getDataDir = _require.getDataDir; + +const isWebpackBundle = __webpack_require__(278); + +const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; +const OWNED_DEPENDENCY_TYPES = exports.OWNED_DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies']; + +const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; +const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; + +const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; + +const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; +const NPM_REGISTRY_RE = exports.NPM_REGISTRY_RE = /https?:\/\/registry\.npmjs\.org/g; + +const YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/'; +const YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh'; +const YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi'; + +const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; + +// cache version, bump whenever we make backwards incompatible changes +const CACHE_VERSION = exports.CACHE_VERSION = 6; + +// lockfile version, bump whenever we make backwards incompatible changes +const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; + +// max amount of network requests to perform concurrently +const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; + +// HTTP timeout used when downloading packages +const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds + +// max amount of child processes to execute concurrently +const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; + +const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; + +function getPreferredCacheDirectories() { + const preferredCacheDirectories = [getCacheDir()]; + + if (process.getuid) { + // $FlowFixMe: process.getuid exists, dammit + preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); + } + + preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); + + return preferredCacheDirectories; } -var _getIterator2; +const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories(); +const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir(); +const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir(); +const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link'); +const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global'); -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); +const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; +const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); + +// Webpack needs to be configured with node.__dirname/__filename = false +function getYarnBinPath() { + if (isWebpackBundle) { + return __filename; + } else { + return path.join(__dirname, '..', 'bin', 'yarn.js'); + } } -var _promise; +const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; +const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); +const PNP_FILENAME = exports.PNP_FILENAME = '.pnp.js'; + +const POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`; +const FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn'); + +const META_FOLDER = exports.META_FOLDER = '.yarn-meta'; +const INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity'; +const LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock'; +const METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json'; +const TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz'; +const CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean'; + +const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; +const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; + +const DEFAULT_INDENT = exports.DEFAULT_INDENT = ' '; +const SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997; +const SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance'; + +const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); + +function getPathKey(platform, env) { + let pathKey = 'PATH'; + + // windows calls its path "Path" usually, but this is not guaranteed. + if (platform === 'win32') { + pathKey = 'Path'; + + for (const key in env) { + if (key.toLowerCase() === 'path') { + pathKey = key; + } + } + } + + return pathKey; } -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var buildActionsForCopy = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - - // - var build = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - var src = data.src, - dest = data.dest, - type = data.type; - - var onFresh = data.onFresh || noop; - var onDone = data.onDone || noop; - - // TODO https://github.com/yarnpkg/yarn/issues/3751 - // related to bundled dependencies handling - if (files.has(dest.toLowerCase())) { - reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`); - } else { - files.add(dest.toLowerCase()); - } - - if (type === 'symlink') { - yield mkdirp((_path2 || _load_path()).default.dirname(dest)); - onFresh(); - actions.symlink.push({ - dest, - linkname: src - }); - onDone(); - return; - } - - if (events.ignoreBasenames.indexOf((_path2 || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } - - var srcStat = yield lstat(src); - var srcFiles = void 0; - - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } - - var destStat = void 0; - try { - // try accessing the destination - destStat = yield lstat(dest); - } catch (e) { - // proceed if destination doesn't exist, otherwise error - if (e.code !== 'ENOENT') { - throw e; - } - } - - // if destination exists - if (destStat) { - var bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - var bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - var bothFiles = srcStat.isFile() && destStat.isFile(); - - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - - /* if (srcStat.mode !== destStat.mode) { - try { - await access(dest, srcStat.mode); - } catch (err) {} - } */ - - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } - - if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) { - // we can safely assume this is the same file - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime)); - return; - } - - if (bothSymlinks) { - var srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } - - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - var destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); - - for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - var _file2 = _ref6; - - if (srcFiles.indexOf(_file2) < 0) { - var _loc = (_path2 || _load_path()).default.join(dest, _file2); - possibleExtraneous.add(_loc); - - if ((yield lstat(_loc)).isDirectory()) { - for (var _iterator5 = yield readdir(_loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref7; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref7 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref7 = _i5.value; - } - - var _file3 = _ref7; - - possibleExtraneous.add((_path2 || _load_path()).default.join(_loc, _file3)); - } - } - } - } - } - } - - if (destStat && destStat.isSymbolicLink()) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - destStat = null; - } - - if (srcStat.isSymbolicLink()) { - onFresh(); - var _linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname: _linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - yield* function* () { - if (!destStat) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - } - - var destParts = dest.split((_path2 || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path2 || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } - - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - var remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref8; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref8 = _i6.value; - } - - var _file4 = _ref8; - - queue.push({ - dest: (_path2 || _load_path()).default.join(dest, _file4), - onFresh, - onDone: function (_onDone) { - function onDone() { - return _onDone.apply(this, arguments); - } - - onDone.toString = function () { - return _onDone.toString(); - }; - - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }), - src: (_path2 || _load_path()).default.join(src, _file4) - }); - } - }(); - } else if (srcStat.isFile()) { - onFresh(); - actions.file.push({ - src, - dest, - atime: srcStat.atime, - mtime: srcStat.mtime, - mode: srcStat.mode - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); - - return function build(_x5) { - return _ref5.apply(this, arguments); - }; - }(); - - var artifactFiles = new (_set || _load_set()).default(events.artifactFiles || []); - var files = new (_set || _load_set()).default(); - - // initialise events - - var _loop = function _loop(item) { - var onDone = item.onDone; - item.onDone = function () { - events.onProgress(item.dest); - if (onDone) { - onDone(); - } - }; - }; - - for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref2; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref2 = _i.value; - } - - var item = _ref2; - - _loop(item); - } - events.onStart(queue.length); - - // start building actions - var actions = { - file: [], - symlink: [], - link: [] - }; - - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - var items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield (_promise || _load_promise()).default.all(items.map(build)); - } - - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref3; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref3 = _i2.value; - } - - var _file = _ref3; - - if (possibleExtraneous.has(_file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', _file)); - possibleExtraneous.delete(_file); - } - } - - for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref4; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } - - var loc = _ref4; - - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } - - return actions; - }); - - return function buildActionsForCopy(_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); - }; -}(); - -var buildActionsForHardlink = function () { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - - // - var build = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - var src = data.src, - dest = data.dest; - - var onFresh = data.onFresh || noop; - var onDone = data.onDone || noop; - if (files.has(dest.toLowerCase())) { - // Fixes issue https://github.com/yarnpkg/yarn/issues/2734 - // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1, - // package-linker passes that modules A1 and B1 need to be hardlinked, - // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case - // an exception. - onDone(); - return; - } - files.add(dest.toLowerCase()); - - if (events.ignoreBasenames.indexOf((_path2 || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } - - var srcStat = yield lstat(src); - var srcFiles = void 0; - - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } - - var destExists = yield exists(dest); - if (destExists) { - var destStat = yield lstat(dest); - - var bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - var bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - var bothFiles = srcStat.isFile() && destStat.isFile(); - - if (srcStat.mode !== destStat.mode) { - try { - yield access(dest, srcStat.mode); - } catch (err) { - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - reporter.verbose(err); - } - } - - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } - - // correct hardlink - if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); - return; - } - - if (bothSymlinks) { - var srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } - - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - var destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); - - for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator10);;) { - var _ref14; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref14 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref14 = _i10.value; - } - - var _file6 = _ref14; - - if (srcFiles.indexOf(_file6) < 0) { - var _loc2 = (_path2 || _load_path()).default.join(dest, _file6); - possibleExtraneous.add(_loc2); - - if ((yield lstat(_loc2)).isDirectory()) { - for (var _iterator11 = yield readdir(_loc2), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator11);;) { - var _ref15; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref15 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref15 = _i11.value; - } - - var _file7 = _ref15; - - possibleExtraneous.add((_path2 || _load_path()).default.join(_loc2, _file7)); - } - } - } - } - } - } - - if (srcStat.isSymbolicLink()) { - onFresh(); - var _linkname2 = yield readlink(src); - actions.symlink.push({ - dest, - linkname: _linkname2 - }); - onDone(); - } else if (srcStat.isDirectory()) { - yield* function* () { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - - var destParts = dest.split((_path2 || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path2 || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } - - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - var remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator12);;) { - var _ref16; - - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref16 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref16 = _i12.value; - } - - var _file8 = _ref16; - - queue.push({ - onFresh, - src: (_path2 || _load_path()).default.join(src, _file8), - dest: (_path2 || _load_path()).default.join(dest, _file8), - onDone: function (_onDone2) { - function onDone() { - return _onDone2.apply(this, arguments); - } - - onDone.toString = function () { - return _onDone2.toString(); - }; - - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }) - }); - } - }(); - } else if (srcStat.isFile()) { - onFresh(); - actions.link.push({ - src, - dest, - removeDest: destExists - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); - - return function build(_x10) { - return _ref13.apply(this, arguments); - }; - }(); - - var artifactFiles = new (_set || _load_set()).default(events.artifactFiles || []); - var files = new (_set || _load_set()).default(); - - // initialise events - - var _loop2 = function _loop2(item) { - var onDone = item.onDone || noop; - item.onDone = function () { - events.onProgress(item.dest); - onDone(); - }; - }; - - for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator7);;) { - var _ref10; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref10 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref10 = _i7.value; - } - - var item = _ref10; - - _loop2(item); - } - events.onStart(queue.length); - - // start building actions - var actions = { - file: [], - symlink: [], - link: [] - }; - - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - var items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield (_promise || _load_promise()).default.all(items.map(build)); - } - - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator8);;) { - var _ref11; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref11 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref11 = _i8.value; - } - - var _file5 = _ref11; - - if (possibleExtraneous.has(_file5)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', _file5)); - possibleExtraneous.delete(_file5); - } - } - - for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator9);;) { - var _ref12; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref12 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref12 = _i9.value; - } - - var loc = _ref12; - - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } - - return actions; - }); - - return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { - return _ref9.apply(this, arguments); - }; -}(); - -var copyBulk = exports.copyBulk = function () { - var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - var events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new (_set || _load_set()).default(), - ignoreBasenames: _events && _events.ignoreBasenames || [], - artifactFiles: _events && _events.artifactFiles || [] - }; - - var actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - - var fileActions = actions.file; - - var currentlyWriting = new (_map || _load_map()).default(); - - yield (_promise2 || _load_promise2()).queue(fileActions, function () { - var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - var writePromise = void 0; - while (writePromise = currentlyWriting.get(data.dest)) { - yield writePromise; - } - - reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest)); - var copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () { - return currentlyWriting.delete(data.dest); - }); - currentlyWriting.set(data.dest, copier); - events.onProgress(data.dest); - return copier; - }); - - return function (_x14) { - return _ref18.apply(this, arguments); - }; - }(), CONCURRENT_QUEUE_ITEMS); - - // we need to copy symlinks last as they could reference files we were copying - var symlinkActions = actions.symlink; - yield (_promise2 || _load_promise2()).queue(symlinkActions, function (data) { - var linkname = (_path2 || _load_path()).default.resolve((_path2 || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); - - return function copyBulk(_x11, _x12, _x13) { - return _ref17.apply(this, arguments); - }; -}(); - -var hardlinkBulk = exports.hardlinkBulk = function () { - var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - var events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new (_set || _load_set()).default(), - artifactFiles: _events && _events.artifactFiles || [], - ignoreBasenames: [] - }; - - var actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - - var fileActions = actions.link; - - yield (_promise2 || _load_promise2()).queue(fileActions, function () { - var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest)); - if (data.removeDest) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest); - } - yield link(data.src, data.dest); - }); - - return function (_x18) { - return _ref20.apply(this, arguments); - }; - }(), CONCURRENT_QUEUE_ITEMS); - - // we need to copy symlinks last as they could reference files we were copying - var symlinkActions = actions.symlink; - yield (_promise2 || _load_promise2()).queue(symlinkActions, function (data) { - var linkname = (_path2 || _load_path()).default.resolve((_path2 || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); - - return function hardlinkBulk(_x15, _x16, _x17) { - return _ref19.apply(this, arguments); - }; -}(); - -var readFileAny = exports.readFileAny = function () { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) { - for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator13);;) { - var _ref22; - - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref22 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref22 = _i13.value; - } - - var _file9 = _ref22; - - if (yield exists(_file9)) { - return readFile(_file9); - } - } - return null; - }); - - return function readFileAny(_x19) { - return _ref21.apply(this, arguments); - }; -}(); - -var readJson = exports.readJson = function () { - var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - return (yield readJsonAndFile(loc)).object; - }); - - return function readJson(_x20) { - return _ref23.apply(this, arguments); - }; -}(); - -var readJsonAndFile = exports.readJsonAndFile = function () { - var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - var file = yield readFile(loc); - try { - return { - object: (0, (_map2 || _load_map2()).default)(JSON.parse(stripBOM(file))), - content: file - }; - } catch (err) { - err.message = `${loc}: ${err.message}`; - throw err; - } - }); - - return function readJsonAndFile(_x21) { - return _ref24.apply(this, arguments); - }; -}(); - -var find = exports.find = function () { - var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { - var parts = dir.split((_path2 || _load_path()).default.sep); - - while (parts.length) { - var loc = parts.concat(filename).join((_path2 || _load_path()).default.sep); - - if (yield exists(loc)) { - return loc; - } else { - parts.pop(); - } - } - - return false; - }); - - return function find(_x22, _x23) { - return _ref25.apply(this, arguments); - }; -}(); - -var symlink = exports.symlink = function () { - var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { - if (process.platform !== 'win32') { - // use relative paths otherwise which will be retained if the directory is moved - src = (_path2 || _load_path()).default.relative((_path2 || _load_path()).default.dirname(dest), src); - // When path.relative returns an empty string for the current directory, we should instead use - // '.', which is a valid fs.symlink target. - src = src || '.'; - } - - try { - var stats = yield lstat(dest); - if (stats.isSymbolicLink()) { - var resolved = dest; - if (resolved === src) { - return; - } - } - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - } - - // We use rimraf for unlink which never throws an ENOENT on missing target - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - - if (process.platform === 'win32') { - // use directory junctions if possible on win32, this requires absolute paths - yield fsSymlink(src, dest, 'junction'); - } else { - yield fsSymlink(src, dest); - } - }); - - return function symlink(_x24, _x25) { - return _ref26.apply(this, arguments); - }; -}(); - -var walk = exports.walk = function () { - var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir) { - var ignoreBasenames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new (_set || _load_set()).default(); - - var files = []; - - var filenames = yield readdir(dir); - if (ignoreBasenames.size) { - filenames = filenames.filter(function (name) { - return !ignoreBasenames.has(name); - }); - } - - for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator14);;) { - var _ref28; - - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref28 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref28 = _i14.value; - } - - var name = _ref28; - - var _relative = relativeDir ? (_path2 || _load_path()).default.join(relativeDir, name) : name; - var loc = (_path2 || _load_path()).default.join(dir, name); - var _stat = yield lstat(loc); - - files.push({ - relative: _relative, - basename: name, - absolute: loc, - mtime: +_stat.mtime - }); - - if (_stat.isDirectory()) { - files = files.concat((yield walk(loc, _relative, ignoreBasenames))); - } - } - - return files; - }); - - return function walk(_x26, _x27) { - return _ref27.apply(this, arguments); - }; -}(); - -var getFileSizeOnDisk = exports.getFileSizeOnDisk = function () { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - var stat = yield lstat(loc); - var size = stat.size, - blockSize = stat.blksize; - - - return Math.ceil(size / blockSize) * blockSize; - }); - - return function getFileSizeOnDisk(_x29) { - return _ref29.apply(this, arguments); - }; -}(); - -var getEolFromFile = function () { - var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { - if (!(yield exists(path))) { - return undefined; - } - - var buffer = yield readFileBuffer(path); - - for (var i = 0; i < buffer.length; ++i) { - if (buffer[i] === cr) { - return '\r\n'; - } - if (buffer[i] === lf) { - return '\n'; - } - } - return undefined; - }); - - return function getEolFromFile(_x30) { - return _ref30.apply(this, arguments); - }; -}(); - -var writeFilePreservingEol = exports.writeFilePreservingEol = function () { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) { - var eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL; - if (eol !== '\n') { - data = data.replace(/\n/g, eol); - } - yield writeFile(path, data); - }); - - return function writeFilePreservingEol(_x31, _x32) { - return _ref31.apply(this, arguments); - }; -}(); - -var hardlinksWork = exports.hardlinksWork = function () { - var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { - var filename = 'test-file' + Math.random(); - var file = (_path2 || _load_path()).default.join(dir, filename); - var fileLink = (_path2 || _load_path()).default.join(dir, filename + '-link'); - try { - yield writeFile(file, 'test'); - yield link(file, fileLink); - } catch (err) { - return false; - } finally { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink); - } - return true; - }); - - return function hardlinksWork(_x33) { - return _ref32.apply(this, arguments); - }; -}(); - -// not a strict polyfill for Node's fs.mkdtemp - - -var makeTempDir = exports.makeTempDir = function () { - var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) { - var dir = (_path2 || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir); - yield mkdirp(dir); - return dir; - }); - - return function makeTempDir(_x34) { - return _ref33.apply(this, arguments); - }; -}(); - -var readFirstAvailableStream = exports.readFirstAvailableStream = function () { - var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { - for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator15);;) { - var _ref35; - - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref35 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref35 = _i15.value; - } - - var _path = _ref35; - - try { - var fd = yield open(_path, 'r'); - return (_fs || _load_fs()).default.createReadStream(_path, { fd }); - } catch (err) { - // Try the next one - } - } - return null; - }); - - return function readFirstAvailableStream(_x35) { - return _ref34.apply(this, arguments); - }; -}(); - -var getFirstSuitableFolder = exports.getFirstSuitableFolder = function () { - var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { - var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : constants.W_OK | constants.X_OK; - - var result = { - skipped: [], - folder: null - }; - - for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator16);;) { - var _ref37; - - if (_isArray16) { - if (_i16 >= _iterator16.length) break; - _ref37 = _iterator16[_i16++]; - } else { - _i16 = _iterator16.next(); - if (_i16.done) break; - _ref37 = _i16.value; - } - - var _folder = _ref37; - - try { - yield mkdirp(_folder); - yield access(_folder, mode); - - result.folder = _folder; - - return result; - } catch (error) { - result.skipped.push({ - error, - folder: _folder - }); - } - } - return result; - }); - - return function getFirstSuitableFolder(_x36) { - return _ref36.apply(this, arguments); - }; -}(); - -exports.copy = copy; -exports.readFile = readFile; -exports.readFileRaw = readFileRaw; -exports.normalizeOS = normalizeOS; - -var _fs; - -function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(12)); -} - -var _glob; - -function _load_glob() { - return _glob = _interopRequireDefault(__webpack_require__(230)); -} - -var _os; - -function _load_os() { - return _os = _interopRequireDefault(__webpack_require__(81)); -} - -var _path2; - -function _load_path() { - return _path2 = _interopRequireDefault(__webpack_require__(2)); -} - -var _blockingQueue; - -function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(152)); -} - -var _promise2; - -function _load_promise2() { - return _promise2 = _interopRequireWildcard(__webpack_require__(85)); -} - -var _promise3; - -function _load_promise3() { - return _promise3 = __webpack_require__(85); -} - -var _map2; - -function _load_map2() { - return _map2 = _interopRequireDefault(__webpack_require__(50)); -} - -var _fsNormalized; - -function _load_fsNormalized() { - return _fsNormalized = __webpack_require__(557); -} - -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 }; } - -var constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : { - R_OK: (_fs || _load_fs()).default.R_OK, - W_OK: (_fs || _load_fs()).default.W_OK, - X_OK: (_fs || _load_fs()).default.X_OK +const VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = { + major: 'red', + premajor: 'red', + minor: 'yellow', + preminor: 'yellow', + patch: 'green', + prepatch: 'green', + prerelease: 'red', + unchanged: 'white', + unknown: 'red' }; -var lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); - -var readFileBuffer = exports.readFileBuffer = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.readFile); -var open = exports.open = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.open); -var writeFile = exports.writeFile = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.writeFile); -var readlink = exports.readlink = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.readlink); -var realpath = exports.realpath = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.realpath); -var readdir = exports.readdir = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.readdir); -var rename = exports.rename = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.rename); -var access = exports.access = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.access); -var stat = exports.stat = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.stat); -var mkdirp = exports.mkdirp = (0, (_promise3 || _load_promise3()).promisify)(__webpack_require__(234)); -var exists = exports.exists = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.exists, true); -var lstat = exports.lstat = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.lstat); -var chmod = exports.chmod = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.chmod); -var link = exports.link = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.link); -var glob = exports.glob = (0, (_promise3 || _load_promise3()).promisify)((_glob || _load_glob()).default); -exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink; - -// fs.copyFile uses the native file copying instructions on the system, performing much better -// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the -// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD. - -var CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; - -var fsSymlink = (0, (_promise3 || _load_promise3()).promisify)((_fs || _load_fs()).default.symlink); -var invariant = __webpack_require__(13); -var stripBOM = __webpack_require__(423); - -var noop = function noop() {}; - -function copy(src, dest, reporter) { - return copyBulk([{ src, dest }], reporter); -} - -function _readFile(loc, encoding) { - return new (_promise || _load_promise()).default(function (resolve, reject) { - (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { - if (err) { - reject(err); - } else { - resolve(content); - } - }); - }); -} - -function readFile(loc) { - return _readFile(loc, 'utf8').then(normalizeOS); -} - -function readFileRaw(loc) { - return _readFile(loc, 'binary'); -} - -function normalizeOS(body) { - return body.replace(/\r\n/g, '\n'); -} - -var cr = '\r'.charCodeAt(0); -var lf = '\n'.charCodeAt(0); - /***/ }), /* 9 */ -/***/ (function(module, exports) { - -module.exports = require("util"); - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _setPrototypeOf = __webpack_require__(206); - -var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); - -var _create = __webpack_require__(205); - -var _create2 = _interopRequireDefault(_create); - -var _typeof2 = __webpack_require__(318); - -var _typeof3 = _interopRequireDefault(_typeof2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass))); - } - - subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass; -}; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof2 = __webpack_require__(318); - -var _typeof3 = _interopRequireDefault(_typeof2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self; -}; - -/***/ }), -/* 12 */ -/***/ (function(module, exports) { - -module.exports = require("fs"); - -/***/ }), -/* 13 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2180,162 +2021,90 @@ module.exports = invariant; /***/ }), -/* 14 */ +/* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getPathKey = getPathKey; -var os = __webpack_require__(81); -var path = __webpack_require__(2); -var userHome = __webpack_require__(97).default; +var YAMLException = __webpack_require__(54); -var _require = __webpack_require__(570), - getCacheDir = _require.getCacheDir, - getConfigDir = _require.getConfigDir, - getDataDir = _require.getDataDir; +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'defaultStyle', + 'styleAliases' +]; -var isWebpackBundle = __webpack_require__(780); +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; -var DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; -var OWNED_DEPENDENCY_TYPES = exports.OWNED_DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies']; +function compileStyleAliases(map) { + var result = {}; -var RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; -var MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS].concat(DEPENDENCY_TYPES); - -var SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; - -var YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; -var NPM_REGISTRY_RE = exports.NPM_REGISTRY_RE = /https?:\/\/registry\.npmjs\.org/g; - -var YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/'; -var YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh'; -var YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi'; - -var SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; - -// cache version, bump whenever we make backwards incompatible changes -var CACHE_VERSION = exports.CACHE_VERSION = 4; - -// lockfile version, bump whenever we make backwards incompatible changes -var LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; - -// max amount of network requests to perform concurrently -var NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; - -// HTTP timeout used when downloading packages -var NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds - -// max amount of child processes to execute concurrently -var CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; - -var REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; - -function getPreferredCacheDirectories() { - var preferredCacheDirectories = [getCacheDir()]; - - if (process.getuid) { - // $FlowFixMe: process.getuid exists, dammit - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); } - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); - - return preferredCacheDirectories; + return result; } -var PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories(); -var CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir(); -var DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir(); -var LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link'); -var GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global'); +function Type(tag, options) { + options = options || {}; -var NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; -var YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); - -// Webpack needs to be configured with node.__dirname/__filename = false -function getYarnBinPath() { - if (isWebpackBundle) { - return __filename; - } else { - return path.join(__dirname, '..', 'bin', 'yarn.js'); - } -} - -var NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; -var NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; - -var PNP_FILENAME = exports.PNP_FILENAME = '.pnp.js'; - -var POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`; -var FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn'); - -var META_FOLDER = exports.META_FOLDER = '.yarn-meta'; -var INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity'; -var LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock'; -var METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json'; -var TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz'; -var CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean'; - -var NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; -var NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; - -var DEFAULT_INDENT = exports.DEFAULT_INDENT = ' '; -var SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997; -var SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance'; - -var ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); - -function getPathKey(platform, env) { - var pathKey = 'PATH'; - - // windows calls its path "Path" usually, but this is not guaranteed. - if (platform === 'win32') { - pathKey = 'Path'; - - for (var _key in env) { - if (_key.toLowerCase() === 'path') { - pathKey = _key; - } + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } - } + }); - return pathKey; + // TODO: Add tag format check. + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } } -var VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = { - major: 'red', - premajor: 'red', - minor: 'yellow', - preminor: 'yellow', - patch: 'green', - prepatch: 'green', - prerelease: 'red', - unchanged: 'white', - unknown: 'red' -}; +module.exports = Type; + /***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { +/* 11 */ +/***/ (function(module, exports) { -module.exports = { "default": __webpack_require__(618), __esModule: true }; +module.exports = require("crypto"); /***/ }), -/* 16 */ +/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_canReportError__ = __webpack_require__(254); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__ = __webpack_require__(973); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(105); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(256); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(169); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_canReportError__ = __webpack_require__(322); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__ = __webpack_require__(932); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(185); /** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ @@ -2455,19 +2224,13 @@ function getPromiseCtor(promiseCtor) { /***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(623), __esModule: true }; - -/***/ }), -/* 18 */ +/* 13 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OuterSubscriber; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -2492,13 +2255,13 @@ var OuterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 19 */ +/* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = subscribeToResult; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__ = __webpack_require__(78); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__subscribeTo__ = __webpack_require__(410); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__ = __webpack_require__(84); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__subscribeTo__ = __webpack_require__(446); /** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo PURE_IMPORTS_END */ @@ -2515,7 +2278,7 @@ function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, dest /***/ }), -/* 20 */ +/* 15 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2523,7 +2286,7 @@ function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, dest -var buffer = __webpack_require__(109) +var buffer = __webpack_require__(64) var Buffer = buffer.Buffer var safer = {} @@ -2599,21 +2362,15 @@ module.exports = safer /***/ }), -/* 21 */ -/***/ (function(module, exports) { - -module.exports = require("crypto"); - -/***/ }), -/* 22 */ +/* 16 */ /***/ (function(module, exports, __webpack_require__) { // Copyright (c) 2012, Mark Cavage. All rights reserved. // Copyright 2015 Joyent, Inc. -var assert = __webpack_require__(49); -var Stream = __webpack_require__(34).Stream; -var util = __webpack_require__(9); +var assert = __webpack_require__(28); +var Stream = __webpack_require__(23).Stream; +var util = __webpack_require__(3); ///--- Globals @@ -2822,13 +2579,126 @@ module.exports = _setExports(process.env.NODE_NDEBUG); /***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { +/* 17 */ +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef -module.exports = { "default": __webpack_require__(615), __esModule: true }; /***/ }), -/* 24 */ +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.sortAlpha = sortAlpha; +exports.sortOptionsByFlags = sortOptionsByFlags; +exports.entries = entries; +exports.removePrefix = removePrefix; +exports.removeSuffix = removeSuffix; +exports.addSuffix = addSuffix; +exports.hyphenate = hyphenate; +exports.camelCase = camelCase; +exports.compareSortedArrays = compareSortedArrays; +exports.sleep = sleep; +const _camelCase = __webpack_require__(230); + +function sortAlpha(a, b) { + // sort alphabetically in a deterministic way + const shortLen = Math.min(a.length, b.length); + for (let i = 0; i < shortLen; i++) { + const aChar = a.charCodeAt(i); + const bChar = b.charCodeAt(i); + if (aChar !== bChar) { + return aChar - bChar; + } + } + return a.length - b.length; +} + +function sortOptionsByFlags(a, b) { + const aOpt = a.flags.replace(/-/g, ''); + const bOpt = b.flags.replace(/-/g, ''); + return sortAlpha(aOpt, bOpt); +} + +function entries(obj) { + const entries = []; + if (obj) { + for (const key in obj) { + entries.push([key, obj[key]]); + } + } + return entries; +} + +function removePrefix(pattern, prefix) { + if (pattern.startsWith(prefix)) { + pattern = pattern.slice(prefix.length); + } + + return pattern; +} + +function removeSuffix(pattern, suffix) { + if (pattern.endsWith(suffix)) { + return pattern.slice(0, -suffix.length); + } + + return pattern; +} + +function addSuffix(pattern, suffix) { + if (!pattern.endsWith(suffix)) { + return pattern + suffix; + } + + return pattern; +} + +function hyphenate(str) { + return str.replace(/[A-Z]/g, match => { + return '-' + match.charAt(0).toLowerCase(); + }); +} + +function camelCase(str) { + if (/[A-Z]/.test(str)) { + return null; + } else { + return _camelCase(str); + } +} + +function compareSortedArrays(array1, array2) { + if (array1.length !== array2.length) { + return false; + } + for (let i = 0, len = array1.length; i < len; i++) { + if (array1[i] !== array2[i]) { + return false; + } + } + return true; +} + +function sleep(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms); + }); +} + +/***/ }), +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2839,40 +2709,16 @@ Object.defineProperty(exports, "__esModule", { }); exports.stringify = exports.parse = undefined; -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(41)); -} - var _asyncToGenerator2; function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); } var _parse; function _load_parse() { - return _parse = __webpack_require__(299); + return _parse = __webpack_require__(105); } Object.defineProperty(exports, 'parse', { @@ -2885,7 +2731,7 @@ Object.defineProperty(exports, 'parse', { var _stringify; function _load_stringify() { - return _stringify = __webpack_require__(535); + return _stringify = __webpack_require__(199); } Object.defineProperty(exports, 'stringify', { @@ -2900,48 +2746,48 @@ exports.explodeEntry = explodeEntry; var _misc; function _load_misc() { - return _misc = __webpack_require__(27); + return _misc = __webpack_require__(18); } var _normalizePattern; function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(51); + return _normalizePattern = __webpack_require__(37); } var _parse2; function _load_parse2() { - return _parse2 = _interopRequireDefault(__webpack_require__(299)); + return _parse2 = _interopRequireDefault(__webpack_require__(105)); } var _constants; function _load_constants() { - return _constants = __webpack_require__(14); + return _constants = __webpack_require__(8); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); + return _fs = _interopRequireWildcard(__webpack_require__(4)); } 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 }; } -var invariant = __webpack_require__(13); +const invariant = __webpack_require__(9); -var path = __webpack_require__(2); -var ssri = __webpack_require__(107); +const path = __webpack_require__(0); +const ssri = __webpack_require__(65); function getName(pattern) { return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name; } function blankObjectUndefined(obj) { - return obj && (0, (_keys || _load_keys()).default)(obj).length ? obj : undefined; + return obj && Object.keys(obj).length ? obj : undefined; } function keyForRemote(remote) { @@ -2955,9 +2801,9 @@ function serializeIntegrity(integrity) { } function implodeEntry(pattern, obj) { - var inferredName = getName(pattern); - var integrity = obj.integrity ? serializeIntegrity(obj.integrity) : ''; - var imploded = { + const inferredName = getName(pattern); + const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : ''; + const imploded = { name: inferredName === obj.name ? undefined : obj.name, version: obj.version, uid: obj.uid === obj.version ? undefined : obj.uid, @@ -2981,22 +2827,15 @@ function explodeEntry(pattern, obj) { obj.permissions = obj.permissions || {}; obj.registry = obj.registry || 'npm'; obj.name = obj.name || getName(pattern); - var integrity = obj.integrity; + const integrity = obj.integrity; if (integrity && integrity.isIntegrity) { obj.integrity = ssri.parse(integrity); } return obj; } -var Lockfile = function () { - function Lockfile() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - cache = _ref.cache, - source = _ref.source, - parseResultType = _ref.parseResultType; - - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Lockfile); - +class Lockfile { + constructor({ cache, source, parseResultType } = {}) { this.source = source || ''; this.cache = cache; this.parseResultType = parseResultType; @@ -3006,29 +2845,29 @@ var Lockfile = function () { // if true, we're parsing an old yarn file and need to update integrity fields - Lockfile.prototype.hasEntriesExistWithoutIntegrity = function hasEntriesExistWithoutIntegrity() { + hasEntriesExistWithoutIntegrity() { if (!this.cache) { return false; } - for (var _key in this.cache) { + for (const key in this.cache) { // $FlowFixMe - `this.cache` is clearly defined at this point - if (!/^.*@(file:|http)/.test(_key) && this.cache[_key] && !this.cache[_key].integrity) { + if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) { return true; } } return false; - }; + } - Lockfile.fromDirectory = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, reporter) { + static fromDirectory(dir, reporter) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { // read the manifest in this directory - var lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME); + const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME); - var lockfile = void 0; - var rawLockfile = ''; - var parseResult = void 0; + let lockfile; + let rawLockfile = ''; + let parseResult; if (yield (_fs || _load_fs()).exists(lockfileLoc)) { rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc); @@ -3047,23 +2886,22 @@ var Lockfile = function () { reporter.info(reporter.lang('noLockfileFound')); } + if (lockfile && lockfile.__metadata) { + const lockfilev2 = lockfile; + lockfile = {}; + } + return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type }); - }); + })(); + } - function fromDirectory(_x2, _x3) { - return _ref2.apply(this, arguments); - } - - return fromDirectory; - }(); - - Lockfile.prototype.getLocked = function getLocked(pattern) { - var cache = this.cache; + getLocked(pattern) { + const cache = this.cache; if (!cache) { return undefined; } - var shrunk = pattern in cache && cache[pattern]; + const shrunk = pattern in cache && cache[pattern]; if (typeof shrunk === 'string') { return this.getLocked(shrunk); @@ -3073,48 +2911,48 @@ var Lockfile = function () { } return undefined; - }; + } - Lockfile.prototype.removePattern = function removePattern(pattern) { - var cache = this.cache; + removePattern(pattern) { + const cache = this.cache; if (!cache) { return; } delete cache[pattern]; - }; + } - Lockfile.prototype.getLockfile = function getLockfile(patterns) { - var lockfile = {}; - var seen = new (_map || _load_map()).default(); + getLockfile(patterns) { + const lockfile = {}; + const seen = new Map(); // order by name so that lockfile manifest is assigned to the first dependency with this manifest // the others that have the same remoteKey will just refer to the first // ordering allows for consistency in lockfile when it is serialized - var sortedPatternsKeys = (0, (_keys || _load_keys()).default)(patterns).sort((_misc || _load_misc()).sortAlpha); + const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha); - for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref3; + for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; if (_isArray) { if (_i >= _iterator.length) break; - _ref3 = _iterator[_i++]; + _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; - _ref3 = _i.value; + _ref = _i.value; } - var pattern = _ref3; + const pattern = _ref; - var pkg = patterns[pattern]; - var remote = pkg._remote, - ref = pkg._reference; + const pkg = patterns[pattern]; + const remote = pkg._remote, + ref = pkg._reference; invariant(ref, 'Package is missing a reference'); invariant(remote, 'Package is missing a remote'); - var remoteKey = keyForRemote(remote); - var seenPattern = remoteKey && seen.get(remoteKey); + const remoteKey = keyForRemote(remote); + const seenPattern = remoteKey && seen.get(remoteKey); if (seenPattern) { // no point in duplicating it lockfile[pattern] = seenPattern; @@ -3126,7 +2964,7 @@ var Lockfile = function () { } continue; } - var obj = implodeEntry(pattern, { + const obj = implodeEntry(pattern, { name: pkg.name, version: pkg.version, uid: pkg._uid, @@ -3148,23 +2986,58 @@ var Lockfile = function () { } return lockfile; - }; - - return Lockfile; -}(); - + } +} exports.default = Lockfile; /***/ }), -/* 25 */ -/***/ (function(module, exports) { +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef +var store = __webpack_require__(133)('wks'); +var uid = __webpack_require__(137); +var Symbol = __webpack_require__(17).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; /***/ }), -/* 26 */ +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _assign = __webpack_require__(591); + +var _assign2 = _interopRequireDefault(_assign); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _assign2.default || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +/***/ }), +/* 22 */ /***/ (function(module, exports) { exports = module.exports = SemVer; @@ -4494,169 +4367,29 @@ function coerce(version) { /***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { +/* 23 */ +/***/ (function(module, exports) { -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -exports.sortAlpha = sortAlpha; -exports.sortOptionsByFlags = sortOptionsByFlags; -exports.entries = entries; -exports.removePrefix = removePrefix; -exports.removeSuffix = removeSuffix; -exports.addSuffix = addSuffix; -exports.hyphenate = hyphenate; -exports.camelCase = camelCase; -exports.compareSortedArrays = compareSortedArrays; -exports.sleep = sleep; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _camelCase = __webpack_require__(583); - -function sortAlpha(a, b) { - // sort alphabetically in a deterministic way - var shortLen = Math.min(a.length, b.length); - for (var i = 0; i < shortLen; i++) { - var aChar = a.charCodeAt(i); - var bChar = b.charCodeAt(i); - if (aChar !== bChar) { - return aChar - bChar; - } - } - return a.length - b.length; -} - -function sortOptionsByFlags(a, b) { - var aOpt = a.flags.replace(/-/g, ''); - var bOpt = b.flags.replace(/-/g, ''); - return sortAlpha(aOpt, bOpt); -} - -function entries(obj) { - var entries = []; - if (obj) { - for (var _key in obj) { - entries.push([_key, obj[_key]]); - } - } - return entries; -} - -function removePrefix(pattern, prefix) { - if (pattern.startsWith(prefix)) { - pattern = pattern.slice(prefix.length); - } - - return pattern; -} - -function removeSuffix(pattern, suffix) { - if (pattern.endsWith(suffix)) { - return pattern.slice(0, -suffix.length); - } - - return pattern; -} - -function addSuffix(pattern, suffix) { - if (!pattern.endsWith(suffix)) { - return pattern + suffix; - } - - return pattern; -} - -function hyphenate(str) { - return str.replace(/[A-Z]/g, function (match) { - return '-' + match.charAt(0).toLowerCase(); - }); -} - -function camelCase(str) { - if (/[A-Z]/.test(str)) { - return null; - } else { - return _camelCase(str); - } -} - -function compareSortedArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (var i = 0, len = array1.length; i < len; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; -} - -function sleep(ms) { - return new (_promise || _load_promise()).default(function (resolve) { - setTimeout(resolve, ms); - }); -} +module.exports = require("stream"); /***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _assign = __webpack_require__(23); - -var _assign2 = _interopRequireDefault(_assign); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _assign2.default || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; -}; - -/***/ }), -/* 29 */ +/* 24 */ /***/ (function(module, exports) { module.exports = require("url"); /***/ }), -/* 30 */ +/* 25 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscription; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(47); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isObject__ = __webpack_require__(408); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(137); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(57); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(54); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__ = __webpack_require__(405); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isObject__ = __webpack_require__(444); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__ = __webpack_require__(441); /** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */ @@ -4792,7 +4525,7 @@ function flattenUnsubscriptionErrors(errors) { /***/ }), -/* 31 */ +/* 26 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2015 Joyent, Inc. @@ -4817,12 +4550,12 @@ module.exports = { readBitString: readBitString }; -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; -var PrivateKey = __webpack_require__(38); -var Key = __webpack_require__(33); -var crypto = __webpack_require__(21); -var algs = __webpack_require__(37); +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; +var PrivateKey = __webpack_require__(33); +var Key = __webpack_require__(27); +var crypto = __webpack_require__(11); +var algs = __webpack_require__(32); var asn1 = __webpack_require__(66); var ec, jsbn; @@ -5054,7 +4787,7 @@ function calculateDSAPublic(g, p, x) { assert.buffer(p); assert.buffer(x); try { - var bigInt = __webpack_require__(77).BigInteger; + var bigInt = __webpack_require__(81).BigInteger; } catch (e) { throw (new Error('To load a PKCS#8 format DSA private key, ' + 'the node jsbn library is required.')); @@ -5071,7 +4804,7 @@ function calculateED25519Public(k) { assert.buffer(k); if (nacl === undefined) - nacl = __webpack_require__(71); + nacl = __webpack_require__(76); var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k)); return (Buffer.from(kp.publicKey)); @@ -5081,7 +4814,7 @@ function calculateX25519Public(k) { assert.buffer(k); if (nacl === undefined) - nacl = __webpack_require__(71); + nacl = __webpack_require__(76); var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k)); return (Buffer.from(kp.publicKey)); @@ -5091,7 +4824,7 @@ function addRSAMissing(key) { assert.object(key); assertCompatible(key, PrivateKey, [1, 1]); try { - var bigInt = __webpack_require__(77).BigInteger; + var bigInt = __webpack_require__(81).BigInteger; } catch (e) { throw (new Error('To write a PEM private key from ' + 'this source, the node jsbn lib is required.')); @@ -5122,9 +4855,9 @@ function publicFromPrivateECDSA(curveName, priv) { assert.string(curveName, 'curveName'); assert.buffer(priv); if (ec === undefined) - ec = __webpack_require__(126); + ec = __webpack_require__(139); if (jsbn === undefined) - jsbn = __webpack_require__(77).BigInteger; + jsbn = __webpack_require__(81).BigInteger; var params = algs.curves[curveName]; var p = new jsbn(params.p); var a = new jsbn(params.a); @@ -5187,94 +4920,26 @@ function opensshCipherInfo(cipher) { /***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(36); -var core = __webpack_require__(25); -var ctx = __webpack_require__(67); -var hide = __webpack_require__(75); -var has = __webpack_require__(88); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 33 */ +/* 27 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Joyent, Inc. module.exports = Key; -var assert = __webpack_require__(22); -var algs = __webpack_require__(37); -var crypto = __webpack_require__(21); -var Fingerprint = __webpack_require__(139); -var Signature = __webpack_require__(70); -var DiffieHellman = __webpack_require__(257).DiffieHellman; -var errs = __webpack_require__(69); -var utils = __webpack_require__(31); -var PrivateKey = __webpack_require__(38); +var assert = __webpack_require__(16); +var algs = __webpack_require__(32); +var crypto = __webpack_require__(11); +var Fingerprint = __webpack_require__(156); +var Signature = __webpack_require__(75); +var DiffieHellman = __webpack_require__(325).DiffieHellman; +var errs = __webpack_require__(74); +var utils = __webpack_require__(26); +var PrivateKey = __webpack_require__(33); var edCompat; try { - edCompat = __webpack_require__(418); + edCompat = __webpack_require__(454); } catch (e) { /* Just continue through, and bail out if we try to use it. */ } @@ -5283,15 +4948,15 @@ var InvalidAlgorithmError = errs.InvalidAlgorithmError; var KeyParseError = errs.KeyParseError; var formats = {}; -formats['auto'] = __webpack_require__(419); -formats['pem'] = __webpack_require__(80); -formats['pkcs1'] = __webpack_require__(259); -formats['pkcs8'] = __webpack_require__(140); -formats['rfc4253'] = __webpack_require__(91); -formats['ssh'] = __webpack_require__(420); -formats['ssh-private'] = __webpack_require__(176); +formats['auto'] = __webpack_require__(455); +formats['pem'] = __webpack_require__(86); +formats['pkcs1'] = __webpack_require__(327); +formats['pkcs8'] = __webpack_require__(157); +formats['rfc4253'] = __webpack_require__(103); +formats['ssh'] = __webpack_require__(456); +formats['ssh-private'] = __webpack_require__(192); formats['openssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(258); +formats['dnssec'] = __webpack_require__(326); function Key(opts) { assert.object(opts, 'options'); @@ -5536,22 +5201,65 @@ Key._oldVersionDetect = function (obj) { /***/ }), -/* 34 */ +/* 28 */ /***/ (function(module, exports) { -module.exports = require("stream"); +module.exports = require("assert"); /***/ }), -/* 35 */ +/* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const escapeStringRegexp = __webpack_require__(353); -const ansiStyles = __webpack_require__(472); -const stdoutColor = __webpack_require__(585).stdout; -const template = __webpack_require__(586); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = nullify; +function nullify(obj = {}) { + if (Array.isArray(obj)) { + for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const item = _ref; + + nullify(item); + } + } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') { + Object.setPrototypeOf(obj, null); + + // for..in can only be applied to 'object', not 'function' + if (typeof obj === 'object') { + for (const key in obj) { + nullify(obj[key]); + } + } + } + + return obj; +} + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +const escapeStringRegexp = __webpack_require__(388); +const ansiStyles = __webpack_require__(506); +const stdoutColor = __webpack_require__(598).stdout; + +const template = __webpack_require__(599); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); @@ -5777,24 +5485,20 @@ module.exports.default = module.exports; // For TypeScript /***/ }), -/* 36 */ +/* 31 */ /***/ (function(module, exports) { -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef +var core = module.exports = { version: '2.5.7' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), -/* 37 */ +/* 32 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2015 Joyent, Inc. -var Buffer = __webpack_require__(20).Buffer; +var Buffer = __webpack_require__(15).Buffer; var algInfo = { 'dsa': { @@ -5963,50 +5667,50 @@ module.exports = { /***/ }), -/* 38 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Joyent, Inc. module.exports = PrivateKey; -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var crypto = __webpack_require__(21); -var Fingerprint = __webpack_require__(139); -var Signature = __webpack_require__(70); -var errs = __webpack_require__(69); -var util = __webpack_require__(9); -var utils = __webpack_require__(31); -var dhe = __webpack_require__(257); +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var crypto = __webpack_require__(11); +var Fingerprint = __webpack_require__(156); +var Signature = __webpack_require__(75); +var errs = __webpack_require__(74); +var util = __webpack_require__(3); +var utils = __webpack_require__(26); +var dhe = __webpack_require__(325); var generateECDSA = dhe.generateECDSA; var generateED25519 = dhe.generateED25519; var edCompat; var nacl; try { - edCompat = __webpack_require__(418); + edCompat = __webpack_require__(454); } catch (e) { /* Just continue through, and bail out if we try to use it. */ } -var Key = __webpack_require__(33); +var Key = __webpack_require__(27); var InvalidAlgorithmError = errs.InvalidAlgorithmError; var KeyParseError = errs.KeyParseError; var KeyEncryptedError = errs.KeyEncryptedError; var formats = {}; -formats['auto'] = __webpack_require__(419); -formats['pem'] = __webpack_require__(80); -formats['pkcs1'] = __webpack_require__(259); -formats['pkcs8'] = __webpack_require__(140); -formats['rfc4253'] = __webpack_require__(91); -formats['ssh-private'] = __webpack_require__(176); +formats['auto'] = __webpack_require__(455); +formats['pem'] = __webpack_require__(86); +formats['pkcs1'] = __webpack_require__(327); +formats['pkcs8'] = __webpack_require__(157); +formats['rfc4253'] = __webpack_require__(103); +formats['ssh-private'] = __webpack_require__(192); formats['openssh'] = formats['ssh-private']; formats['ssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(258); +formats['dnssec'] = __webpack_require__(326); function PrivateKey(opts) { assert.object(opts, 'options'); @@ -6059,7 +5763,7 @@ PrivateKey.prototype.derive = function (newType) { if (this.type === 'ed25519' && newType === 'curve25519') { if (nacl === undefined) - nacl = __webpack_require__(71); + nacl = __webpack_require__(76); priv = this.part.k.data; if (priv[0] === 0x00) @@ -6077,7 +5781,7 @@ PrivateKey.prototype.derive = function (newType) { })); } else if (this.type === 'curve25519' && newType === 'ed25519') { if (nacl === undefined) - nacl = __webpack_require__(71); + nacl = __webpack_require__(76); priv = this.part.k.data; if (priv[0] === 0x00) @@ -6222,13 +5926,7 @@ PrivateKey._oldVersionDetect = function (obj) { /***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(613), __esModule: true }; - -/***/ }), -/* 40 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6239,77 +5937,35 @@ Object.defineProperty(exports, "__esModule", { }); exports.wrapLifecycle = exports.run = exports.install = exports.Install = undefined; -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _values; - -function _load_values() { - return _values = _interopRequireDefault(__webpack_require__(572)); -} - var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _assign; - -function _load_assign() { - return _assign = _interopRequireDefault(__webpack_require__(23)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); + return _extends2 = _interopRequireDefault(__webpack_require__(21)); } var _asyncToGenerator2; function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); } -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var install = exports.install = function () { - var _ref43 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile) { +let install = exports.install = (() => { + var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile) { yield wrapLifecycle(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var install = new Install(flags, config, reporter, lockfile); + const install = new Install(flags, config, reporter, lockfile); yield install.init(); })); }); - return function install(_x16, _x17, _x18, _x19) { - return _ref43.apply(this, arguments); + return function install(_x7, _x8, _x9, _x10) { + return _ref29.apply(this, arguments); }; -}(); +})(); -var run = exports.run = function () { - var _ref45 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - var lockfile = void 0; - var error = 'installCommandRenamed'; +let run = exports.run = (() => { + var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { + let lockfile; + let error = 'installCommandRenamed'; if (flags.lockfile === false) { lockfile = new (_lockfile || _load_lockfile()).default(); } else { @@ -6317,7 +5973,7 @@ var run = exports.run = function () { } if (args.length) { - var exampleArgs = args.slice(); + const exampleArgs = args.slice(); if (flags.saveDev) { exampleArgs.push('--dev'); @@ -6334,7 +5990,7 @@ var run = exports.run = function () { if (flags.saveTilde) { exampleArgs.push('--tilde'); } - var command = 'add'; + let command = 'add'; if (flags.global) { error = 'globalFlagRemoved'; command = 'global add'; @@ -6345,13 +6001,13 @@ var run = exports.run = function () { yield install(config, reporter, flags, lockfile); }); - return function run(_x20, _x21, _x22, _x23) { - return _ref45.apply(this, arguments); + return function run(_x11, _x12, _x13, _x14) { + return _ref31.apply(this, arguments); }; -}(); +})(); -var wrapLifecycle = exports.wrapLifecycle = function () { - var _ref46 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags, factory) { +let wrapLifecycle = exports.wrapLifecycle = (() => { + var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags, factory) { yield config.executeLifecycleScript('preinstall'); yield factory(); @@ -6368,172 +6024,178 @@ var wrapLifecycle = exports.wrapLifecycle = function () { } }); - return function wrapLifecycle(_x24, _x25, _x26) { - return _ref46.apply(this, arguments); + return function wrapLifecycle(_x15, _x16, _x17) { + return _ref32.apply(this, arguments); }; -}(); +})(); exports.hasWrapper = hasWrapper; exports.setFlags = setFlags; +var _objectPath; + +function _load_objectPath() { + return _objectPath = _interopRequireDefault(__webpack_require__(304)); +} + var _hooks; function _load_hooks() { - return _hooks = __webpack_require__(560); + return _hooks = __webpack_require__(374); } var _index; function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(200)); + return _index = _interopRequireDefault(__webpack_require__(220)); } var _errors; function _load_errors() { - return _errors = __webpack_require__(7); + return _errors = __webpack_require__(6); } var _integrityChecker; function _load_integrityChecker() { - return _integrityChecker = _interopRequireDefault(__webpack_require__(190)); + return _integrityChecker = _interopRequireDefault(__webpack_require__(208)); } var _lockfile; function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(24)); + return _lockfile = _interopRequireDefault(__webpack_require__(19)); } var _lockfile2; function _load_lockfile2() { - return _lockfile2 = __webpack_require__(24); + return _lockfile2 = __webpack_require__(19); } var _packageFetcher; function _load_packageFetcher() { - return _packageFetcher = _interopRequireWildcard(__webpack_require__(191)); + return _packageFetcher = _interopRequireWildcard(__webpack_require__(210)); } var _packageInstallScripts; function _load_packageInstallScripts() { - return _packageInstallScripts = _interopRequireDefault(__webpack_require__(538)); + return _packageInstallScripts = _interopRequireDefault(__webpack_require__(557)); } var _packageCompatibility; function _load_packageCompatibility() { - return _packageCompatibility = _interopRequireWildcard(__webpack_require__(300)); + return _packageCompatibility = _interopRequireWildcard(__webpack_require__(209)); } var _packageResolver; function _load_packageResolver() { - return _packageResolver = _interopRequireDefault(__webpack_require__(302)); + return _packageResolver = _interopRequireDefault(__webpack_require__(366)); } var _packageLinker; function _load_packageLinker() { - return _packageLinker = _interopRequireDefault(__webpack_require__(192)); + return _packageLinker = _interopRequireDefault(__webpack_require__(211)); } var _index2; function _load_index2() { - return _index2 = __webpack_require__(59); + return _index2 = __webpack_require__(57); } var _index3; function _load_index3() { - return _index3 = __webpack_require__(62); + return _index3 = __webpack_require__(78); } var _autoclean; function _load_autoclean() { - return _autoclean = __webpack_require__(288); + return _autoclean = __webpack_require__(354); } var _constants; function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); + return _constants = _interopRequireWildcard(__webpack_require__(8)); } var _normalizePattern; function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(51); + return _normalizePattern = __webpack_require__(37); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); + return _fs = _interopRequireWildcard(__webpack_require__(4)); } var _map; function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(50)); + return _map = _interopRequireDefault(__webpack_require__(29)); } var _yarnVersion; function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(110); + return _yarnVersion = __webpack_require__(120); } var _generatePnpMap; function _load_generatePnpMap() { - return _generatePnpMap = __webpack_require__(558); + return _generatePnpMap = __webpack_require__(579); } var _workspaceLayout; function _load_workspaceLayout() { - return _workspaceLayout = _interopRequireDefault(__webpack_require__(86)); + return _workspaceLayout = _interopRequireDefault(__webpack_require__(90)); } var _resolutionMap; function _load_resolutionMap() { - return _resolutionMap = _interopRequireDefault(__webpack_require__(195)); + return _resolutionMap = _interopRequireDefault(__webpack_require__(214)); } var _guessName; function _load_guessName() { - return _guessName = _interopRequireDefault(__webpack_require__(154)); + return _guessName = _interopRequireDefault(__webpack_require__(169)); } var _audit; function _load_audit() { - return _audit = _interopRequireDefault(__webpack_require__(287)); + return _audit = _interopRequireDefault(__webpack_require__(353)); } 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 }; } -var deepEqual = __webpack_require__(675); +const deepEqual = __webpack_require__(631); -var emoji = __webpack_require__(235); -var invariant = __webpack_require__(13); -var path = __webpack_require__(2); -var semver = __webpack_require__(26); -var uuid = __webpack_require__(108); -var ssri = __webpack_require__(107); +const emoji = __webpack_require__(302); +const invariant = __webpack_require__(9); +const path = __webpack_require__(0); +const semver = __webpack_require__(22); +const uuid = __webpack_require__(119); +const ssri = __webpack_require__(65); -var ONE_DAY = 1000 * 60 * 60 * 24; +const ONE_DAY = 1000 * 60 * 60 * 24; /** * Try and detect the installation method for Yarn and provide a command to update it with. @@ -6568,6 +6230,10 @@ function getUpdateCommand(installationMethod) { return 'apk update && apk add -u yarn'; } + if (installationMethod === 'portage') { + return 'sudo emerge --sync && sudo emerge -au sys-apps/yarn'; + } + return null; } @@ -6581,7 +6247,7 @@ function getUpdateInstaller(installationMethod) { } function normalizeFlags(config, rawFlags) { - var flags = { + const flags = { // install har: !!rawFlags.har, ignorePlatform: !!rawFlags.ignorePlatform, @@ -6637,10 +6303,8 @@ function normalizeFlags(config, rawFlags) { return flags; } -var Install = exports.Install = function () { - function Install(flags, config, reporter, lockfile) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Install); - +class Install { + constructor(flags, config, reporter, lockfile) { this.rootManifestRegistries = []; this.rootPatternsToOrigin = (0, (_map || _load_map()).default)(); this.lockfile = lockfile; @@ -6659,67 +6323,64 @@ var Install = exports.Install = function () { * Create a list of dependency requests from the current directories manifests. */ - Install.prototype.fetchRequestFromCwd = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _this = this; + fetchRequestFromCwd(excludePatterns = [], ignoreUnusedPatterns = false) { + var _this = this; - var excludePatterns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var ignoreUnusedPatterns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const patterns = []; + const deps = []; + let resolutionDeps = []; + const manifest = {}; - var patterns = []; - var deps = []; - var resolutionDeps = []; - var manifest = {}; - - var ignorePatterns = []; - var usedPatterns = []; - var workspaceLayout = void 0; + const ignorePatterns = []; + const usedPatterns = []; + let workspaceLayout; // some commands should always run in the context of the entire workspace - var cwd = this.flags.includeWorkspaceDeps || this.flags.workspaceRootIsCwd ? this.config.lockfileFolder : this.config.cwd; + const cwd = _this.flags.includeWorkspaceDeps || _this.flags.workspaceRootIsCwd ? _this.config.lockfileFolder : _this.config.cwd; // non-workspaces are always root, otherwise check for workspace root - var cwdIsRoot = !this.config.workspaceRootFolder || this.config.lockfileFolder === cwd; + const cwdIsRoot = !_this.config.workspaceRootFolder || _this.config.lockfileFolder === cwd; // exclude package names that are in install args - var excludeNames = []; - for (var _iterator = excludePatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref2; + const excludeNames = []; + for (var _iterator = excludePatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; if (_isArray) { if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; + _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; - _ref2 = _i.value; + _ref = _i.value; } - var _pattern = _ref2; + const pattern = _ref; - if ((0, (_index3 || _load_index3()).getExoticResolver)(_pattern)) { - excludeNames.push((0, (_guessName || _load_guessName()).default)(_pattern)); + if ((0, (_index3 || _load_index3()).getExoticResolver)(pattern)) { + excludeNames.push((0, (_guessName || _load_guessName()).default)(pattern)); } else { // extract the name - var parts = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(_pattern); + const parts = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern); excludeNames.push(parts.name); } } - var stripExcluded = function stripExcluded(manifest) { - for (var _iterator2 = excludeNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref3; + const stripExcluded = function stripExcluded(manifest) { + for (var _iterator2 = excludeNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; if (_isArray2) { if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; + _ref2 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; - _ref3 = _i2.value; + _ref2 = _i2.value; } - var exclude = _ref3; + const exclude = _ref2; if (manifest.dependencies && manifest.dependencies[exclude]) { delete manifest.dependencies[exclude]; @@ -6733,60 +6394,71 @@ var Install = exports.Install = function () { } }; - var _loop = function* _loop(registry) { - var filename = (_index2 || _load_index2()).registries[registry].filename; + for (var _iterator3 = Object.keys((_index2 || _load_index2()).registries), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; - var loc = path.join(cwd, filename); + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + const registry = _ref3; + + const filename = (_index2 || _load_index2()).registries[registry].filename; + + const loc = path.join(cwd, filename); if (!(yield (_fs || _load_fs()).exists(loc))) { - return 'continue'; + continue; } _this.rootManifestRegistries.push(registry); - var projectManifestJson = yield _this.config.readJson(loc); + const projectManifestJson = yield _this.config.readJson(loc); yield (0, (_index || _load_index()).default)(projectManifestJson, cwd, _this.config, cwdIsRoot); - (0, (_assign || _load_assign()).default)(_this.resolutions, projectManifestJson.resolutions); - (0, (_assign || _load_assign()).default)(manifest, projectManifestJson); + Object.assign(_this.resolutions, projectManifestJson.resolutions); + Object.assign(manifest, projectManifestJson); _this.resolutionMap.init(_this.resolutions); - for (var _iterator4 = (0, (_keys || _load_keys()).default)(_this.resolutionMap.resolutionsByPackage), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref5; + for (var _iterator4 = Object.keys(_this.resolutionMap.resolutionsByPackage), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; if (_isArray4) { if (_i4 >= _iterator4.length) break; - _ref5 = _iterator4[_i4++]; + _ref4 = _iterator4[_i4++]; } else { _i4 = _iterator4.next(); if (_i4.done) break; - _ref5 = _i4.value; + _ref4 = _i4.value; } - var _packageName = _ref5; + const packageName = _ref4; - for (var _iterator8 = _this.resolutionMap.resolutionsByPackage[_packageName], _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator8);;) { - var _ref11; + const optional = (_objectPath || _load_objectPath()).default.has(manifest.optionalDependencies, packageName) && _this.flags.ignoreOptional; + for (var _iterator8 = _this.resolutionMap.resolutionsByPackage[packageName], _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref9; if (_isArray8) { if (_i8 >= _iterator8.length) break; - _ref11 = _iterator8[_i8++]; + _ref9 = _iterator8[_i8++]; } else { _i8 = _iterator8.next(); if (_i8.done) break; - _ref11 = _i8.value; + _ref9 = _i8.value; } - var _ref10 = _ref11; - var _pattern3 = _ref10.pattern; + const _ref8 = _ref9; + const pattern = _ref8.pattern; - resolutionDeps = [].concat(resolutionDeps, [{ registry, pattern: _pattern3, optional: false, hint: 'resolution' }]); + resolutionDeps = [...resolutionDeps, { registry, pattern, optional, hint: 'resolution' }]; } } - var pushDeps = function pushDeps(depType, manifest, _ref6, isUsed) { - var hint = _ref6.hint, - optional = _ref6.optional; - + const pushDeps = function pushDeps(depType, manifest, { hint, optional }, isUsed) { if (ignoreUnusedPatterns && !isUsed) { return; } @@ -6796,29 +6468,29 @@ var Install = exports.Install = function () { if (_this.flags.flat && !isUsed) { return; } - var depMap = manifest[depType]; - for (var name in depMap) { + const depMap = manifest[depType]; + for (const name in depMap) { if (excludeNames.indexOf(name) >= 0) { continue; } - var _pattern2 = name; - if (!_this.lockfile.getLocked(_pattern2)) { + let pattern = name; + if (!_this.lockfile.getLocked(pattern)) { // when we use --save we save the dependency to the lockfile with just the name rather than the // version combo - _pattern2 += '@' + depMap[name]; + pattern += '@' + depMap[name]; } // normalization made sure packages are mentioned only once if (isUsed) { - usedPatterns.push(_pattern2); + usedPatterns.push(pattern); } else { - ignorePatterns.push(_pattern2); + ignorePatterns.push(pattern); } - _this.rootPatternsToOrigin[_pattern2] = depType; - patterns.push(_pattern2); - deps.push({ pattern: _pattern2, registry, hint, optional, workspaceName: manifest.name, workspaceLoc: manifest._loc }); + _this.rootPatternsToOrigin[pattern] = depType; + patterns.push(pattern); + deps.push({ pattern, registry, hint, optional, workspaceName: manifest.name, workspaceLoc: manifest._loc }); } }; @@ -6829,36 +6501,36 @@ var Install = exports.Install = function () { } if (_this.config.workspaceRootFolder) { - var workspaceLoc = cwdIsRoot ? loc : path.join(_this.config.lockfileFolder, filename); - var workspacesRoot = path.dirname(workspaceLoc); + const workspaceLoc = cwdIsRoot ? loc : path.join(_this.config.lockfileFolder, filename); + const workspacesRoot = path.dirname(workspaceLoc); - var workspaceManifestJson = projectManifestJson; + let workspaceManifestJson = projectManifestJson; if (!cwdIsRoot) { // the manifest we read before was a child workspace, so get the root workspaceManifestJson = yield _this.config.readJson(workspaceLoc); yield (0, (_index || _load_index()).default)(workspaceManifestJson, workspacesRoot, _this.config, true); } - var workspaces = yield _this.config.resolveWorkspaces(workspacesRoot, workspaceManifestJson); + const workspaces = yield _this.config.resolveWorkspaces(workspacesRoot, workspaceManifestJson); workspaceLayout = new (_workspaceLayout || _load_workspaceLayout()).default(workspaces, _this.config); // add virtual manifest that depends on all workspaces, this way package hoisters and resolvers will work fine - var workspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.dependencies); - for (var _iterator5 = (0, (_keys || _load_keys()).default)(workspaces), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref7; + const workspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.dependencies); + for (var _iterator5 = Object.keys(workspaces), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref5; if (_isArray5) { if (_i5 >= _iterator5.length) break; - _ref7 = _iterator5[_i5++]; + _ref5 = _iterator5[_i5++]; } else { _i5 = _iterator5.next(); if (_i5.done) break; - _ref7 = _i5.value; + _ref5 = _i5.value; } - var workspaceName = _ref7; + const workspaceName = _ref5; - var workspaceManifest = workspaces[workspaceName].manifest; + const workspaceManifest = workspaces[workspaceName].manifest; workspaceDependencies[workspaceName] = workspaceManifest.version; // include dependencies from all workspaces @@ -6868,7 +6540,7 @@ var Install = exports.Install = function () { pushDeps('optionalDependencies', workspaceManifest, { hint: 'optional', optional: true }, true); } } - var virtualDependencyManifest = { + const virtualDependencyManifest = { _uid: '', name: `workspace-aggregator-${uuid.v4()}`, version: '1.0.0', @@ -6881,7 +6553,7 @@ var Install = exports.Install = function () { workspaces: workspaceManifestJson.workspaces }; workspaceLayout.virtualManifestName = virtualDependencyManifest.name; - var virtualDep = {}; + const virtualDep = {}; virtualDep[virtualDependencyManifest.name] = virtualDependencyManifest.version; workspaces[virtualDependencyManifest.name] = { loc: workspacesRoot, manifest: virtualDependencyManifest }; @@ -6890,35 +6562,35 @@ var Install = exports.Install = function () { pushDeps('workspaces', { workspaces: virtualDep }, { hint: 'workspaces', optional: false }, true); - var implicitWorkspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceDependencies); + const implicitWorkspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceDependencies); - for (var _iterator6 = (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref8; + for (var _iterator6 = (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref6; if (_isArray6) { if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; + _ref6 = _iterator6[_i6++]; } else { _i6 = _iterator6.next(); if (_i6.done) break; - _ref8 = _i6.value; + _ref6 = _i6.value; } - var type = _ref8; + const type = _ref6; - for (var _iterator7 = (0, (_keys || _load_keys()).default)(projectManifestJson[type] || {}), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator7);;) { - var _ref9; + for (var _iterator7 = Object.keys(projectManifestJson[type] || {}), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref7; if (_isArray7) { if (_i7 >= _iterator7.length) break; - _ref9 = _iterator7[_i7++]; + _ref7 = _iterator7[_i7++]; } else { _i7 = _iterator7.next(); if (_i7.done) break; - _ref9 = _i7.value; + _ref7 = _i7.value; } - var dependencyName = _ref9; + const dependencyName = _ref7; delete implicitWorkspaceDependencies[dependencyName]; } @@ -6927,366 +6599,323 @@ var Install = exports.Install = function () { pushDeps('dependencies', { dependencies: implicitWorkspaceDependencies }, { hint: 'workspaces', optional: false }, true); } - return 'break'; - }; - - _loop2: for (var _iterator3 = (0, (_keys || _load_keys()).default)((_index2 || _load_index2()).registries), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref4; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } - - var registry = _ref4; - - var _ret = yield* _loop(registry); - - switch (_ret) { - case 'continue': - continue; - - case 'break': - break _loop2;} + break; } // inherit root flat flag - - if (manifest.flat) { - this.flags.flat = true; + _this.flags.flat = true; } return { - requests: [].concat(resolutionDeps, deps), + requests: [...resolutionDeps, ...deps], patterns, manifest, usedPatterns, ignorePatterns, workspaceLayout }; - }); - - function fetchRequestFromCwd() { - return _ref.apply(this, arguments); - } - - return fetchRequestFromCwd; - }(); + })(); + } /** * TODO description */ - Install.prototype.prepareRequests = function prepareRequests(requests) { + prepareRequests(requests) { return requests; - }; + } - Install.prototype.preparePatterns = function preparePatterns(patterns) { + preparePatterns(patterns) { return patterns; - }; - - Install.prototype.preparePatternsForLinking = function preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) { + } + preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) { return patterns; - }; + } - Install.prototype.prepareManifests = function () { - var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var manifests = yield this.config.getRootManifests(); + prepareManifests() { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const manifests = yield _this2.config.getRootManifests(); return manifests; - }); + })(); + } - function prepareManifests() { - return _ref12.apply(this, arguments); - } + bailout(patterns, workspaceLayout) { + var _this3 = this; - return prepareManifests; - }(); - - Install.prototype.bailout = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, workspaceLayout) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { // We don't want to skip the audit - it could yield important errors - if (this.flags.audit) { + if (_this3.flags.audit) { return false; } // PNP is so fast that the integrity check isn't pertinent - if (this.config.plugnplayEnabled) { + if (_this3.config.plugnplayEnabled) { return false; } - if (this.flags.skipIntegrityCheck || this.flags.force) { + if (_this3.flags.skipIntegrityCheck || _this3.flags.force) { return false; } - var lockfileCache = this.lockfile.cache; + const lockfileCache = _this3.lockfile.cache; if (!lockfileCache) { return false; } - var lockfileClean = this.lockfile.parseResultType === 'success'; - var match = yield this.integrityChecker.check(patterns, lockfileCache, this.flags, workspaceLayout); - if (this.flags.frozenLockfile && (!lockfileClean || match.missingPatterns.length > 0)) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('frozenLockfileError')); + const lockfileClean = _this3.lockfile.parseResultType === 'success'; + const match = yield _this3.integrityChecker.check(patterns, lockfileCache, _this3.flags, workspaceLayout); + if (_this3.flags.frozenLockfile && (!lockfileClean || match.missingPatterns.length > 0)) { + throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('frozenLockfileError')); } - var haveLockfile = yield (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME)); + const haveLockfile = yield (_fs || _load_fs()).exists(path.join(_this3.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME)); - var lockfileIntegrityPresent = !this.lockfile.hasEntriesExistWithoutIntegrity(); - var integrityBailout = lockfileIntegrityPresent || !this.config.autoAddIntegrity; + const lockfileIntegrityPresent = !_this3.lockfile.hasEntriesExistWithoutIntegrity(); + const integrityBailout = lockfileIntegrityPresent || !_this3.config.autoAddIntegrity; if (match.integrityMatches && haveLockfile && lockfileClean && integrityBailout) { - this.reporter.success(this.reporter.lang('upToDate')); + _this3.reporter.success(_this3.reporter.lang('upToDate')); return true; } if (match.integrityFileMissing && haveLockfile) { // Integrity file missing, force script installations - this.scripts.setForce(true); + _this3.scripts.setForce(true); return false; } if (match.hardRefreshRequired) { // e.g. node version doesn't match, force script installations - this.scripts.setForce(true); + _this3.scripts.setForce(true); return false; } if (!patterns.length && !match.integrityFileMissing) { - this.reporter.success(this.reporter.lang('nothingToInstall')); - yield this.createEmptyManifestFolders(); - yield this.saveLockfileAndIntegrity(patterns, workspaceLayout); + _this3.reporter.success(_this3.reporter.lang('nothingToInstall')); + yield _this3.createEmptyManifestFolders(); + yield _this3.saveLockfileAndIntegrity(patterns, workspaceLayout); return true; } return false; - }); - - function bailout(_x3, _x4) { - return _ref13.apply(this, arguments); - } - - return bailout; - }(); + })(); + } /** * Produce empty folders for all used root manifests. */ - Install.prototype.createEmptyManifestFolders = function () { - var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - if (this.config.modulesFolder) { + createEmptyManifestFolders() { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (_this4.config.modulesFolder) { // already created return; } - for (var _iterator9 = this.rootManifestRegistries, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator9);;) { - var _ref15; + for (var _iterator9 = _this4.rootManifestRegistries, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { + var _ref10; if (_isArray9) { if (_i9 >= _iterator9.length) break; - _ref15 = _iterator9[_i9++]; + _ref10 = _iterator9[_i9++]; } else { _i9 = _iterator9.next(); if (_i9.done) break; - _ref15 = _i9.value; + _ref10 = _i9.value; } - var registryName = _ref15; - var folder = this.config.registries[registryName].folder; + const registryName = _ref10; + const folder = _this4.config.registries[registryName].folder; - yield (_fs || _load_fs()).mkdirp(path.join(this.config.lockfileFolder, folder)); + yield (_fs || _load_fs()).mkdirp(path.join(_this4.config.lockfileFolder, folder)); } - }); - - function createEmptyManifestFolders() { - return _ref14.apply(this, arguments); - } - - return createEmptyManifestFolders; - }(); + })(); + } /** * TODO description */ - Install.prototype.markIgnored = function markIgnored(patterns) { - for (var _iterator10 = patterns, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator10);;) { - var _ref16; + markIgnored(patterns) { + for (var _iterator10 = patterns, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { + var _ref11; if (_isArray10) { if (_i10 >= _iterator10.length) break; - _ref16 = _iterator10[_i10++]; + _ref11 = _iterator10[_i10++]; } else { _i10 = _iterator10.next(); if (_i10.done) break; - _ref16 = _i10.value; + _ref11 = _i10.value; } - var _pattern4 = _ref16; + const pattern = _ref11; - var _manifest = this.resolver.getStrictResolvedPattern(_pattern4); - var ref = _manifest._reference; + const manifest = this.resolver.getStrictResolvedPattern(pattern); + const ref = manifest._reference; invariant(ref, 'expected package reference'); // just mark the package as ignored. if the package is used by a required package, the hoister // will take care of that. ref.ignore = true; } - }; + } /** * helper method that gets only recent manifests * used by global.ls command */ + getFlattenedDeps() { + var _this5 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + var _ref12 = yield _this5.fetchRequestFromCwd(); + + const depRequests = _ref12.requests, + rawPatterns = _ref12.patterns; - Install.prototype.getFlattenedDeps = function () { - var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref18 = yield this.fetchRequestFromCwd(), - depRequests = _ref18.requests, - rawPatterns = _ref18.patterns; + yield _this5.resolver.init(depRequests, {}); - yield this.resolver.init(depRequests, {}); + const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this5.resolver.getManifests(), _this5.config); + _this5.resolver.updateManifests(manifests); - var manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(this.resolver.getManifests(), this.config); - this.resolver.updateManifests(manifests); - - return this.flatten(rawPatterns); - }); - - function getFlattenedDeps() { - return _ref17.apply(this, arguments); - } - - return getFlattenedDeps; - }(); + return _this5.flatten(rawPatterns); + })(); + } /** * TODO description */ - Install.prototype.init = function () { - var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _this2 = this; + init() { + var _this6 = this; - this.checkUpdate(); + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + _this6.checkUpdate(); // warn if we have a shrinkwrap - if (yield (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).NPM_SHRINKWRAP_FILENAME))) { - this.reporter.warn(this.reporter.lang('shrinkwrapWarning')); + if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_SHRINKWRAP_FILENAME))) { + _this6.reporter.warn(_this6.reporter.lang('shrinkwrapWarning')); } // warn if we have an npm lockfile - if (yield (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).NPM_LOCK_FILENAME))) { - this.reporter.warn(this.reporter.lang('npmLockfileWarning')); + if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_LOCK_FILENAME))) { + _this6.reporter.warn(_this6.reporter.lang('npmLockfileWarning')); } - var flattenedTopLevelPatterns = []; - var steps = []; + if (_this6.config.plugnplayEnabled) { + _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L1')); + _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L2')); + } - var _ref20 = yield this.fetchRequestFromCwd(), - depRequests = _ref20.requests, - rawPatterns = _ref20.patterns, - ignorePatterns = _ref20.ignorePatterns, - workspaceLayout = _ref20.workspaceLayout, - manifest = _ref20.manifest; + let flattenedTopLevelPatterns = []; + const steps = []; - var topLevelPatterns = []; + var _ref13 = yield _this6.fetchRequestFromCwd(); - var artifacts = yield this.integrityChecker.getArtifacts(); + const depRequests = _ref13.requests, + rawPatterns = _ref13.patterns, + ignorePatterns = _ref13.ignorePatterns, + workspaceLayout = _ref13.workspaceLayout, + manifest = _ref13.manifest; + + let topLevelPatterns = []; + + const artifacts = yield _this6.integrityChecker.getArtifacts(); if (artifacts) { - this.linker.setArtifacts(artifacts); - this.scripts.setArtifacts(artifacts); + _this6.linker.setArtifacts(artifacts); + _this6.scripts.setArtifacts(artifacts); } - if (!this.flags.ignoreEngines && typeof manifest.engines === 'object') { - steps.push(function () { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - _this2.reporter.step(curr, total, _this2.reporter.lang('checkingManifest'), emoji.get('mag')); - yield _this2.checkCompatibility(); + if ((_packageCompatibility || _load_packageCompatibility()).shouldCheck(manifest, _this6.flags)) { + steps.push((() => { + var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { + _this6.reporter.step(curr, total, _this6.reporter.lang('checkingManifest'), emoji.get('mag')); + yield _this6.checkCompatibility(); }); - return function (_x5, _x6) { - return _ref21.apply(this, arguments); + return function (_x, _x2) { + return _ref14.apply(this, arguments); }; - }()); + })()); } - var audit = new (_audit || _load_audit()).default(this.config, this.reporter); - var auditFoundProblems = false; + const audit = new (_audit || _load_audit()).default(_this6.config, _this6.reporter, { groups: (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES }); + let auditFoundProblems = false; steps.push(function (curr, total) { return (0, (_hooks || _load_hooks()).callThroughHook)('resolveStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this2.reporter.step(curr, total, _this2.reporter.lang('resolvingPackages'), emoji.get('mag')); - yield _this2.resolver.init(_this2.prepareRequests(depRequests), { - isFlat: _this2.flags.flat, - isFrozen: _this2.flags.frozenLockfile, + _this6.reporter.step(curr, total, _this6.reporter.lang('resolvingPackages'), emoji.get('mag')); + yield _this6.resolver.init(_this6.prepareRequests(depRequests), { + isFlat: _this6.flags.flat, + isFrozen: _this6.flags.frozenLockfile, workspaceLayout }); - topLevelPatterns = _this2.preparePatterns(rawPatterns); - flattenedTopLevelPatterns = yield _this2.flatten(topLevelPatterns); - return { bailout: !_this2.flags.audit && (yield _this2.bailout(topLevelPatterns, workspaceLayout)) }; + topLevelPatterns = _this6.preparePatterns(rawPatterns); + flattenedTopLevelPatterns = yield _this6.flatten(topLevelPatterns); + return { bailout: !_this6.flags.audit && (yield _this6.bailout(topLevelPatterns, workspaceLayout)) }; })); }); - if (this.flags.audit) { + if (_this6.flags.audit) { steps.push(function (curr, total) { return (0, (_hooks || _load_hooks()).callThroughHook)('auditStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this2.reporter.step(curr, total, _this2.reporter.lang('auditRunning'), emoji.get('mag')); - if (_this2.flags.offline) { - _this2.reporter.warn(_this2.reporter.lang('auditOffline')); + _this6.reporter.step(curr, total, _this6.reporter.lang('auditRunning'), emoji.get('mag')); + if (_this6.flags.offline) { + _this6.reporter.warn(_this6.reporter.lang('auditOffline')); return { bailout: false }; } - var preparedManifests = yield _this2.prepareManifests(); + const preparedManifests = yield _this6.prepareManifests(); // $FlowFixMe - Flow considers `m` in the map operation to be "mixed", so does not recognize `m.object` - var mergedManifest = (_assign || _load_assign()).default.apply(Object, [{}].concat((0, (_values || _load_values()).default)(preparedManifests).map(function (m) { + const mergedManifest = Object.assign({}, ...Object.values(preparedManifests).map(function (m) { return m.object; - }))); - var auditVulnerabilityCounts = yield audit.performAudit(mergedManifest, _this2.resolver, _this2.linker, topLevelPatterns); + })); + const auditVulnerabilityCounts = yield audit.performAudit(mergedManifest, _this6.lockfile, _this6.resolver, _this6.linker, topLevelPatterns); auditFoundProblems = auditVulnerabilityCounts.info || auditVulnerabilityCounts.low || auditVulnerabilityCounts.moderate || auditVulnerabilityCounts.high || auditVulnerabilityCounts.critical; - return { bailout: yield _this2.bailout(topLevelPatterns, workspaceLayout) }; + return { bailout: yield _this6.bailout(topLevelPatterns, workspaceLayout) }; })); }); } steps.push(function (curr, total) { return (0, (_hooks || _load_hooks()).callThroughHook)('fetchStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this2.markIgnored(ignorePatterns); - _this2.reporter.step(curr, total, _this2.reporter.lang('fetchingPackages'), emoji.get('truck')); - var manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this2.resolver.getManifests(), _this2.config); - _this2.resolver.updateManifests(manifests); - yield (_packageCompatibility || _load_packageCompatibility()).check(_this2.resolver.getManifests(), _this2.config, _this2.flags.ignoreEngines); + _this6.markIgnored(ignorePatterns); + _this6.reporter.step(curr, total, _this6.reporter.lang('fetchingPackages'), emoji.get('truck')); + const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this6.resolver.getManifests(), _this6.config); + _this6.resolver.updateManifests(manifests); + yield (_packageCompatibility || _load_packageCompatibility()).check(_this6.resolver.getManifests(), _this6.config, _this6.flags.ignoreEngines); })); }); steps.push(function (curr, total) { return (0, (_hooks || _load_hooks()).callThroughHook)('linkStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { // remove integrity hash to make this operation atomic - yield _this2.integrityChecker.removeIntegrityFile(); - _this2.reporter.step(curr, total, _this2.reporter.lang('linkingDependencies'), emoji.get('link')); - flattenedTopLevelPatterns = _this2.preparePatternsForLinking(flattenedTopLevelPatterns, manifest, _this2.config.lockfileFolder === _this2.config.cwd); - yield _this2.linker.init(flattenedTopLevelPatterns, workspaceLayout, { - linkDuplicates: _this2.flags.linkDuplicates, - ignoreOptional: _this2.flags.ignoreOptional + yield _this6.integrityChecker.removeIntegrityFile(); + _this6.reporter.step(curr, total, _this6.reporter.lang('linkingDependencies'), emoji.get('link')); + flattenedTopLevelPatterns = _this6.preparePatternsForLinking(flattenedTopLevelPatterns, manifest, _this6.config.lockfileFolder === _this6.config.cwd); + yield _this6.linker.init(flattenedTopLevelPatterns, workspaceLayout, { + linkDuplicates: _this6.flags.linkDuplicates, + ignoreOptional: _this6.flags.ignoreOptional }); })); }); - if (this.config.plugnplayEnabled) { + if (_this6.config.plugnplayEnabled) { steps.push(function (curr, total) { return (0, (_hooks || _load_hooks()).callThroughHook)('pnpStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var pnpPath = `${_this2.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`; + const pnpPath = `${_this6.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`; - var code = yield (0, (_generatePnpMap || _load_generatePnpMap()).generatePnpMap)(_this2.config, flattenedTopLevelPatterns, { - resolver: _this2.resolver, - reporter: _this2.reporter, + const code = yield (0, (_generatePnpMap || _load_generatePnpMap()).generatePnpMap)(_this6.config, flattenedTopLevelPatterns, { + resolver: _this6.resolver, + reporter: _this6.reporter, targetPath: pnpPath, workspaceLayout }); try { - var file = yield (_fs || _load_fs()).readFile(pnpPath); + const file = yield (_fs || _load_fs()).readFile(pnpPath); if (file === code) { return; } @@ -7300,130 +6929,117 @@ var Install = exports.Install = function () { steps.push(function (curr, total) { return (0, (_hooks || _load_hooks()).callThroughHook)('buildStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this2.reporter.step(curr, total, _this2.flags.force ? _this2.reporter.lang('rebuildingPackages') : _this2.reporter.lang('buildingFreshPackages'), emoji.get('hammer')); + _this6.reporter.step(curr, total, _this6.flags.force ? _this6.reporter.lang('rebuildingPackages') : _this6.reporter.lang('buildingFreshPackages'), emoji.get('hammer')); - if (_this2.flags.ignoreScripts) { - _this2.reporter.warn(_this2.reporter.lang('ignoredScripts')); + if (_this6.config.ignoreScripts) { + _this6.reporter.warn(_this6.reporter.lang('ignoredScripts')); } else { - yield _this2.scripts.init(flattenedTopLevelPatterns); + yield _this6.scripts.init(flattenedTopLevelPatterns); } })); }); - if (this.flags.har) { - steps.push(function () { - var _ref28 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - var formattedDate = new Date().toISOString().replace(/:/g, '-'); - var filename = `yarn-install_${formattedDate}.har`; - _this2.reporter.step(curr, total, _this2.reporter.lang('savingHar', filename), emoji.get('black_circle_for_record')); - yield _this2.config.requestManager.saveHar(filename); + if (_this6.flags.har) { + steps.push((() => { + var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { + const formattedDate = new Date().toISOString().replace(/:/g, '-'); + const filename = `yarn-install_${formattedDate}.har`; + _this6.reporter.step(curr, total, _this6.reporter.lang('savingHar', filename), emoji.get('black_circle_for_record')); + yield _this6.config.requestManager.saveHar(filename); }); - return function (_x7, _x8) { - return _ref28.apply(this, arguments); + return function (_x3, _x4) { + return _ref21.apply(this, arguments); }; - }()); + })()); } - if (yield this.shouldClean()) { - steps.push(function () { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - _this2.reporter.step(curr, total, _this2.reporter.lang('cleaningModules'), emoji.get('recycle')); - yield (0, (_autoclean || _load_autoclean()).clean)(_this2.config, _this2.reporter); + if (yield _this6.shouldClean()) { + steps.push((() => { + var _ref22 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { + _this6.reporter.step(curr, total, _this6.reporter.lang('cleaningModules'), emoji.get('recycle')); + yield (0, (_autoclean || _load_autoclean()).clean)(_this6.config, _this6.reporter); }); - return function (_x9, _x10) { - return _ref29.apply(this, arguments); + return function (_x5, _x6) { + return _ref22.apply(this, arguments); }; - }()); + })()); } - var currentStep = 0; - for (var _iterator11 = steps, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator11);;) { - var _ref30; + let currentStep = 0; + for (var _iterator11 = steps, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { + var _ref23; if (_isArray11) { if (_i11 >= _iterator11.length) break; - _ref30 = _iterator11[_i11++]; + _ref23 = _iterator11[_i11++]; } else { _i11 = _iterator11.next(); if (_i11.done) break; - _ref30 = _i11.value; + _ref23 = _i11.value; } - var step = _ref30; + const step = _ref23; - var stepResult = yield step(++currentStep, steps.length); + const stepResult = yield step(++currentStep, steps.length); if (stepResult && stepResult.bailout) { - if (this.flags.audit) { + if (_this6.flags.audit) { audit.summary(); } if (auditFoundProblems) { - this.reporter.warn(this.reporter.lang('auditRunAuditForDetails')); + _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails')); } - this.maybeOutputUpdate(); + _this6.maybeOutputUpdate(); return flattenedTopLevelPatterns; } } // fin! - if (this.flags.audit) { + if (_this6.flags.audit) { audit.summary(); } if (auditFoundProblems) { - this.reporter.warn(this.reporter.lang('auditRunAuditForDetails')); + _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails')); } - yield this.saveLockfileAndIntegrity(topLevelPatterns, workspaceLayout); - yield this.persistChanges(); - this.maybeOutputUpdate(); - this.config.requestManager.clearCache(); + yield _this6.saveLockfileAndIntegrity(topLevelPatterns, workspaceLayout); + yield _this6.persistChanges(); + _this6.maybeOutputUpdate(); + _this6.config.requestManager.clearCache(); return flattenedTopLevelPatterns; - }); + })(); + } - function init() { - return _ref19.apply(this, arguments); - } + checkCompatibility() { + var _this7 = this; - return init; - }(); + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + var _ref24 = yield _this7.fetchRequestFromCwd(); - Install.prototype.checkCompatibility = function () { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref32 = yield this.fetchRequestFromCwd(), - manifest = _ref32.manifest; + const manifest = _ref24.manifest; - yield (_packageCompatibility || _load_packageCompatibility()).checkOne((0, (_extends2 || _load_extends()).default)({ _reference: {} }, manifest), this.config, this.flags.ignoreEngines); - }); + yield (_packageCompatibility || _load_packageCompatibility()).checkOne(manifest, _this7.config, _this7.flags.ignoreEngines); + })(); + } - function checkCompatibility() { - return _ref31.apply(this, arguments); - } + persistChanges() { + var _this8 = this; - return checkCompatibility; - }(); - - Install.prototype.persistChanges = function () { - var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { // get all the different registry manifests in this folder - var manifests = yield this.config.getRootManifests(); + const manifests = yield _this8.config.getRootManifests(); - if (yield this.applyChanges(manifests)) { - yield this.config.saveRootManifests(manifests); + if (yield _this8.applyChanges(manifests)) { + yield _this8.config.saveRootManifests(manifests); } - }); + })(); + } - function persistChanges() { - return _ref33.apply(this, arguments); - } - - return persistChanges; - }(); - - Install.prototype.applyChanges = function applyChanges(manifests) { - var hasChanged = false; + applyChanges(manifests) { + let hasChanged = false; if (this.config.plugnplayPersist) { - var object = manifests.npm.object; + const object = manifests.npm.object; if (typeof object.installConfig !== 'object') { @@ -7438,52 +7054,52 @@ var Install = exports.Install = function () { hasChanged = true; } - if ((0, (_keys || _load_keys()).default)(object.installConfig).length === 0) { + if (Object.keys(object.installConfig).length === 0) { delete object.installConfig; } } - return (_promise || _load_promise()).default.resolve(hasChanged); - }; + return Promise.resolve(hasChanged); + } /** * Check if we should run the cleaning step. */ - Install.prototype.shouldClean = function shouldClean() { + shouldClean() { return (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).CLEAN_FILENAME)); - }; + } /** * TODO */ - Install.prototype.flatten = function () { - var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns) { - var _this3 = this; + flatten(patterns) { + var _this9 = this; - if (!this.flags.flat) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (!_this9.flags.flat) { return patterns; } - var flattenedPatterns = []; + const flattenedPatterns = []; - for (var _iterator12 = this.resolver.getAllDependencyNamesByLevelOrder(patterns), _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator12);;) { - var _ref35; + for (var _iterator12 = _this9.resolver.getAllDependencyNamesByLevelOrder(patterns), _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { + var _ref25; if (_isArray12) { if (_i12 >= _iterator12.length) break; - _ref35 = _iterator12[_i12++]; + _ref25 = _iterator12[_i12++]; } else { _i12 = _iterator12.next(); if (_i12.done) break; - _ref35 = _i12.value; + _ref25 = _i12.value; } - var name = _ref35; + const name = _ref25; - var infos = this.resolver.getAllInfoForPackageName(name).filter(function (manifest) { - var ref = manifest._reference; + const infos = _this9.resolver.getAllInfoForPackageName(name).filter(function (manifest) { + const ref = manifest._reference; invariant(ref, 'expected package reference'); return !ref.ignore; }); @@ -7495,108 +7111,104 @@ var Install = exports.Install = function () { if (infos.length === 1) { // single version of this package // take out a single pattern as multiple patterns may have resolved to this package - flattenedPatterns.push(this.resolver.patternsByPackage[name][0]); + flattenedPatterns.push(_this9.resolver.patternsByPackage[name][0]); continue; } - var options = infos.map(function (info) { - var ref = info._reference; + const options = infos.map(function (info) { + const ref = info._reference; invariant(ref, 'expected reference'); return { // TODO `and is required by {PARENT}`, - name: _this3.reporter.lang('manualVersionResolutionOption', ref.patterns.join(', '), info.version), + name: _this9.reporter.lang('manualVersionResolutionOption', ref.patterns.join(', '), info.version), value: info.version }; }); - var versions = infos.map(function (info) { + const versions = infos.map(function (info) { return info.version; }); - var version = void 0; + let version; - var resolutionVersion = this.resolutions[name]; + const resolutionVersion = _this9.resolutions[name]; if (resolutionVersion && versions.indexOf(resolutionVersion) >= 0) { // use json `resolution` version version = resolutionVersion; } else { - version = yield this.reporter.select(this.reporter.lang('manualVersionResolution', name), this.reporter.lang('answer'), options); - this.resolutions[name] = version; + version = yield _this9.reporter.select(_this9.reporter.lang('manualVersionResolution', name), _this9.reporter.lang('answer'), options); + _this9.resolutions[name] = version; } - flattenedPatterns.push(this.resolver.collapseAllVersionsOfPackage(name, version)); + flattenedPatterns.push(_this9.resolver.collapseAllVersionsOfPackage(name, version)); } // save resolutions to their appropriate root manifest - if ((0, (_keys || _load_keys()).default)(this.resolutions).length) { - var manifests = yield this.config.getRootManifests(); + if (Object.keys(_this9.resolutions).length) { + const manifests = yield _this9.config.getRootManifests(); - for (var _name in this.resolutions) { - var version = this.resolutions[_name]; + for (const name in _this9.resolutions) { + const version = _this9.resolutions[name]; - var _patterns = this.resolver.patternsByPackage[_name]; - if (!_patterns) { + const patterns = _this9.resolver.patternsByPackage[name]; + if (!patterns) { continue; } - var _manifest2 = void 0; - for (var _iterator13 = _patterns, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator13);;) { - var _ref36; + let manifest; + for (var _iterator13 = patterns, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { + var _ref26; if (_isArray13) { if (_i13 >= _iterator13.length) break; - _ref36 = _iterator13[_i13++]; + _ref26 = _iterator13[_i13++]; } else { _i13 = _iterator13.next(); if (_i13.done) break; - _ref36 = _i13.value; + _ref26 = _i13.value; } - var _pattern5 = _ref36; + const pattern = _ref26; - _manifest2 = this.resolver.getResolvedPattern(_pattern5); - if (_manifest2) { + manifest = _this9.resolver.getResolvedPattern(pattern); + if (manifest) { break; } } - invariant(_manifest2, 'expected manifest'); + invariant(manifest, 'expected manifest'); - var ref = _manifest2._reference; + const ref = manifest._reference; invariant(ref, 'expected reference'); - var object = manifests[ref.registry].object; + const object = manifests[ref.registry].object; object.resolutions = object.resolutions || {}; - object.resolutions[_name] = version; + object.resolutions[name] = version; } - yield this.config.saveRootManifests(manifests); + yield _this9.config.saveRootManifests(manifests); } return flattenedPatterns; - }); - - function flatten(_x11) { - return _ref34.apply(this, arguments); - } - - return flatten; - }(); + })(); + } /** * Remove offline tarballs that are no longer required */ - Install.prototype.pruneOfflineMirror = function () { - var _ref37 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (lockfile) { - var mirror = this.config.getOfflineMirrorPath(); + pruneOfflineMirror(lockfile) { + var _this10 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const mirror = _this10.config.getOfflineMirrorPath(); if (!mirror) { return; } - var requiredTarballs = new (_set || _load_set()).default(); - for (var dependency in lockfile) { - var resolved = lockfile[dependency].resolved; + const requiredTarballs = new Set(); + for (const dependency in lockfile) { + const resolved = lockfile[dependency].resolved; if (resolved) { - var basename = path.basename(resolved.split('#')[0]); + const basename = path.basename(resolved.split('#')[0]); if (dependency[0] === '@' && basename[0] !== '@') { requiredTarballs.add(`${dependency.split('/')[0]}-${basename}`); } @@ -7604,49 +7216,43 @@ var Install = exports.Install = function () { } } - var mirrorFiles = yield (_fs || _load_fs()).walk(mirror); - for (var _iterator14 = mirrorFiles, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator14);;) { - var _ref38; + const mirrorFiles = yield (_fs || _load_fs()).walk(mirror); + for (var _iterator14 = mirrorFiles, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { + var _ref27; if (_isArray14) { if (_i14 >= _iterator14.length) break; - _ref38 = _iterator14[_i14++]; + _ref27 = _iterator14[_i14++]; } else { _i14 = _iterator14.next(); if (_i14.done) break; - _ref38 = _i14.value; + _ref27 = _i14.value; } - var file = _ref38; + const file = _ref27; - var isTarball = path.extname(file.basename) === '.tgz'; + const isTarball = path.extname(file.basename) === '.tgz'; // if using experimental-pack-script-packages-in-mirror flag, don't unlink prebuilt packages - var hasPrebuiltPackage = file.relative.startsWith('prebuilt/'); + const hasPrebuiltPackage = file.relative.startsWith('prebuilt/'); if (isTarball && !hasPrebuiltPackage && !requiredTarballs.has(file.basename)) { yield (_fs || _load_fs()).unlink(file.absolute); } } - }); - - function pruneOfflineMirror(_x12) { - return _ref37.apply(this, arguments); - } - - return pruneOfflineMirror; - }(); + })(); + } /** * Save updated integrity and lockfiles. */ - Install.prototype.saveLockfileAndIntegrity = function () { - var _ref39 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, workspaceLayout) { - var _this4 = this; + saveLockfileAndIntegrity(patterns, workspaceLayout) { + var _this11 = this; - var resolvedPatterns = {}; - (0, (_keys || _load_keys()).default)(this.resolver.patterns).forEach(function (pattern) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const resolvedPatterns = {}; + Object.keys(_this11.resolver.patterns).forEach(function (pattern) { if (!workspaceLayout || !workspaceLayout.getManifestByPattern(pattern)) { - resolvedPatterns[pattern] = _this4.resolver.patterns[pattern]; + resolvedPatterns[pattern] = _this11.resolver.patterns[pattern]; } }); @@ -7655,149 +7261,137 @@ var Install = exports.Install = function () { return !workspaceLayout || !workspaceLayout.getManifestByPattern(p); }); - var lockfileBasedOnResolver = this.lockfile.getLockfile(resolvedPatterns); + const lockfileBasedOnResolver = _this11.lockfile.getLockfile(resolvedPatterns); - if (this.config.pruneOfflineMirror) { - yield this.pruneOfflineMirror(lockfileBasedOnResolver); + if (_this11.config.pruneOfflineMirror) { + yield _this11.pruneOfflineMirror(lockfileBasedOnResolver); } // write integrity hash - if (!this.config.plugnplayEnabled) { - yield this.integrityChecker.save(patterns, lockfileBasedOnResolver, this.flags, workspaceLayout, this.scripts.getArtifacts()); + if (!_this11.config.plugnplayEnabled) { + yield _this11.integrityChecker.save(patterns, lockfileBasedOnResolver, _this11.flags, workspaceLayout, _this11.scripts.getArtifacts()); } // --no-lockfile or --pure-lockfile or --frozen-lockfile - if (this.flags.lockfile === false || this.flags.pureLockfile || this.flags.frozenLockfile) { + if (_this11.flags.lockfile === false || _this11.flags.pureLockfile || _this11.flags.frozenLockfile) { return; } - var lockFileHasAllPatterns = patterns.every(function (p) { - return _this4.lockfile.getLocked(p); + const lockFileHasAllPatterns = patterns.every(function (p) { + return _this11.lockfile.getLocked(p); }); - var lockfilePatternsMatch = (0, (_keys || _load_keys()).default)(this.lockfile.cache || {}).every(function (p) { + const lockfilePatternsMatch = Object.keys(_this11.lockfile.cache || {}).every(function (p) { return lockfileBasedOnResolver[p]; }); - var resolverPatternsAreSameAsInLockfile = (0, (_keys || _load_keys()).default)(lockfileBasedOnResolver).every(function (pattern) { - var manifest = _this4.lockfile.getLocked(pattern); + const resolverPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) { + const manifest = _this11.lockfile.getLocked(pattern); return manifest && manifest.resolved === lockfileBasedOnResolver[pattern].resolved && deepEqual(manifest.prebuiltVariants, lockfileBasedOnResolver[pattern].prebuiltVariants); }); - var integrityPatternsAreSameAsInLockfile = (0, (_keys || _load_keys()).default)(lockfileBasedOnResolver).every(function (pattern) { - var existingIntegrityInfo = lockfileBasedOnResolver[pattern].integrity; + const integrityPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) { + const existingIntegrityInfo = lockfileBasedOnResolver[pattern].integrity; if (!existingIntegrityInfo) { // if this entry does not have an integrity, no need to re-write the lockfile because of it return true; } - var manifest = _this4.lockfile.getLocked(pattern); + const manifest = _this11.lockfile.getLocked(pattern); if (manifest && manifest.integrity) { - var manifestIntegrity = ssri.stringify(manifest.integrity); + const manifestIntegrity = ssri.stringify(manifest.integrity); return manifestIntegrity === existingIntegrityInfo; } return false; }); // remove command is followed by install with force, lockfile will be rewritten in any case then - if (!this.flags.force && this.lockfile.parseResultType === 'success' && lockFileHasAllPatterns && lockfilePatternsMatch && resolverPatternsAreSameAsInLockfile && integrityPatternsAreSameAsInLockfile && patterns.length) { + if (!_this11.flags.force && _this11.lockfile.parseResultType === 'success' && lockFileHasAllPatterns && lockfilePatternsMatch && resolverPatternsAreSameAsInLockfile && integrityPatternsAreSameAsInLockfile && patterns.length) { return; } // build lockfile location - var loc = path.join(this.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME); + const loc = path.join(_this11.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME); // write lockfile - var lockSource = (0, (_lockfile2 || _load_lockfile2()).stringify)(lockfileBasedOnResolver, false, this.config.enableLockfileVersions); + const lockSource = (0, (_lockfile2 || _load_lockfile2()).stringify)(lockfileBasedOnResolver, false, _this11.config.enableLockfileVersions); yield (_fs || _load_fs()).writeFilePreservingEol(loc, lockSource); - this._logSuccessSaveLockfile(); - }); + _this11._logSuccessSaveLockfile(); + })(); + } - function saveLockfileAndIntegrity(_x13, _x14) { - return _ref39.apply(this, arguments); - } - - return saveLockfileAndIntegrity; - }(); - - Install.prototype._logSuccessSaveLockfile = function _logSuccessSaveLockfile() { + _logSuccessSaveLockfile() { this.reporter.success(this.reporter.lang('savedLockfile')); - }; + } /** * Load the dependency graph of the current install. Only does package resolving and wont write to the cwd. */ + hydrate(ignoreUnusedPatterns) { + var _this12 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const request = yield _this12.fetchRequestFromCwd([], ignoreUnusedPatterns); + const depRequests = request.requests, + rawPatterns = request.patterns, + ignorePatterns = request.ignorePatterns, + workspaceLayout = request.workspaceLayout; - Install.prototype.hydrate = function () { - var _ref40 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ignoreUnusedPatterns) { - var request = yield this.fetchRequestFromCwd([], ignoreUnusedPatterns); - var depRequests = request.requests, - rawPatterns = request.patterns, - ignorePatterns = request.ignorePatterns, - workspaceLayout = request.workspaceLayout; - - - yield this.resolver.init(depRequests, { - isFlat: this.flags.flat, - isFrozen: this.flags.frozenLockfile, + yield _this12.resolver.init(depRequests, { + isFlat: _this12.flags.flat, + isFrozen: _this12.flags.frozenLockfile, workspaceLayout }); - yield this.flatten(rawPatterns); - this.markIgnored(ignorePatterns); + yield _this12.flatten(rawPatterns); + _this12.markIgnored(ignorePatterns); // fetch packages, should hit cache most of the time - var manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(this.resolver.getManifests(), this.config); - this.resolver.updateManifests(manifests); - yield (_packageCompatibility || _load_packageCompatibility()).check(this.resolver.getManifests(), this.config, this.flags.ignoreEngines); + const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this12.resolver.getManifests(), _this12.config); + _this12.resolver.updateManifests(manifests); + yield (_packageCompatibility || _load_packageCompatibility()).check(_this12.resolver.getManifests(), _this12.config, _this12.flags.ignoreEngines); // expand minimal manifests - for (var _iterator15 = this.resolver.getManifests(), _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator15);;) { - var _ref41; + for (var _iterator15 = _this12.resolver.getManifests(), _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { + var _ref28; if (_isArray15) { if (_i15 >= _iterator15.length) break; - _ref41 = _iterator15[_i15++]; + _ref28 = _iterator15[_i15++]; } else { _i15 = _iterator15.next(); if (_i15.done) break; - _ref41 = _i15.value; + _ref28 = _i15.value; } - var _manifest3 = _ref41; + const manifest = _ref28; - var ref = _manifest3._reference; + const ref = manifest._reference; invariant(ref, 'expected reference'); - var type = ref.remote.type; + const type = ref.remote.type; // link specifier won't ever hit cache - var _loc = ''; + let loc = ''; if (type === 'link') { continue; } else if (type === 'workspace') { if (!ref.remote.reference) { continue; } - _loc = ref.remote.reference; + loc = ref.remote.reference; } else { - _loc = this.config.generateModuleCachePath(ref); + loc = _this12.config.generateModuleCachePath(ref); } - var newPkg = yield this.config.readManifest(_loc); - yield this.resolver.updateManifest(ref, newPkg); + const newPkg = yield _this12.config.readManifest(loc); + yield _this12.resolver.updateManifest(ref, newPkg); } return request; - }); - - function hydrate(_x15) { - return _ref40.apply(this, arguments); - } - - return hydrate; - }(); + })(); + } /** * Check for updates every day and output a nag message if there's a newer version. */ - Install.prototype.checkUpdate = function checkUpdate() { + checkUpdate() { if (this.config.nonInteractive) { // don't show upgrade dialog on CI or non-TTY terminals return; @@ -7809,7 +7403,7 @@ var Install = exports.Install = function () { } // only check for updates once a day - var lastUpdateCheck = Number(this.config.getOption('lastUpdateCheck')) || 0; + const lastUpdateCheck = Number(this.config.getOption('lastUpdateCheck')) || 0; if (lastUpdateCheck && Date.now() - lastUpdateCheck < ONE_DAY) { return; } @@ -7819,16 +7413,16 @@ var Install = exports.Install = function () { return; } - this._checkUpdate().catch(function () { + this._checkUpdate().catch(() => { // swallow errors }); - }; + } - Install.prototype._checkUpdate = function () { - var _ref42 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _this5 = this; + _checkUpdate() { + var _this13 = this; - var latestVersion = yield this.config.requestManager.request({ + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let latestVersion = yield _this13.config.requestManager.request({ url: (_constants || _load_constants()).SELF_UPDATE_VERSION_URL }); invariant(typeof latestVersion === 'string', 'expected string'); @@ -7838,45 +7432,38 @@ var Install = exports.Install = function () { } // ensure we only check for updates periodically - this.config.registries.yarn.saveHomeConfig({ + _this13.config.registries.yarn.saveHomeConfig({ lastUpdateCheck: Date.now() }); if (semver.gt(latestVersion, (_yarnVersion || _load_yarnVersion()).version)) { - var installationMethod = yield (0, (_yarnVersion || _load_yarnVersion()).getInstallationMethod)(); - this.maybeOutputUpdate = function () { - _this5.reporter.warn(_this5.reporter.lang('yarnOutdated', latestVersion, (_yarnVersion || _load_yarnVersion()).version)); + const installationMethod = yield (0, (_yarnVersion || _load_yarnVersion()).getInstallationMethod)(); + _this13.maybeOutputUpdate = function () { + _this13.reporter.warn(_this13.reporter.lang('yarnOutdated', latestVersion, (_yarnVersion || _load_yarnVersion()).version)); - var command = getUpdateCommand(installationMethod); + const command = getUpdateCommand(installationMethod); if (command) { - _this5.reporter.info(_this5.reporter.lang('yarnOutdatedCommand')); - _this5.reporter.command(command); + _this13.reporter.info(_this13.reporter.lang('yarnOutdatedCommand')); + _this13.reporter.command(command); } else { - var installer = getUpdateInstaller(installationMethod); + const installer = getUpdateInstaller(installationMethod); if (installer) { - _this5.reporter.info(_this5.reporter.lang('yarnOutdatedInstaller', installer)); + _this13.reporter.info(_this13.reporter.lang('yarnOutdatedInstaller', installer)); } } }; } - }); - - function _checkUpdate() { - return _ref42.apply(this, arguments); - } - - return _checkUpdate; - }(); + })(); + } /** * Method to override with a possible upgrade message. */ - Install.prototype.maybeOutputUpdate = function maybeOutputUpdate() {}; - - return Install; -}(); + maybeOutputUpdate() {} +} +exports.Install = Install; function hasWrapper(commander, args) { return true; } @@ -7895,26 +7482,31 @@ function setFlags(commander) { } /***/ }), -/* 41 */ +/* 35 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = { "default": __webpack_require__(614), __esModule: true }; +var isObject = __webpack_require__(52); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + /***/ }), -/* 42 */ +/* 36 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SubjectSubscriber; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subject; }); /* unused harmony export AnonymousSubject */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(16); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(30); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(173); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__ = __webpack_require__(386); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__ = __webpack_require__(253); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__ = __webpack_require__(422); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__ = __webpack_require__(321); /** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ @@ -8076,24 +7668,56 @@ var AnonymousSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 43 */ +/* 37 */ /***/ (function(module, exports, __webpack_require__) { -var store = __webpack_require__(220)('wks'); -var uid = __webpack_require__(156); -var Symbol = __webpack_require__(36).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; +"use strict"; -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; -$exports.store = store; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.normalizePattern = normalizePattern; +/** + * Explode and normalize a pattern into its name and range. + */ + +function normalizePattern(pattern) { + let hasVersion = false; + let range = 'latest'; + let name = pattern; + + // if we're a scope then remove the @ and add it back later + let isScoped = false; + if (name[0] === '@') { + isScoped = true; + name = name.slice(1); + } + + // take first part as the name + const parts = name.split('@'); + if (parts.length > 1) { + name = parts.shift(); + range = parts.join('@'); + + if (range) { + hasVersion = true; + } else { + range = '*'; + } + } + + // add back @ scope suffix + if (isScoped) { + name = `@${name}`; + } + + return { name, range, hasVersion }; +} /***/ }), -/* 44 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** @@ -25203,17 +24827,17 @@ $exports.store = store; } }.call(this)); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(145)(module))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(163)(module))) /***/ }), -/* 45 */ +/* 39 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return EMPTY; }); /* harmony export (immutable) */ __webpack_exports__["a"] = empty; /* unused harmony export emptyScheduled */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(16); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ var EMPTY = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { return subscriber.complete(); }); @@ -25227,13 +24851,13 @@ function emptyScheduled(scheduler) { /***/ }), -/* 46 */ +/* 40 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return async; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsyncAction__ = __webpack_require__(132); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__ = __webpack_require__(133); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsyncAction__ = __webpack_require__(149); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__ = __webpack_require__(150); /** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -25242,7 +24866,7 @@ var async = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__["a" /***/ }), -/* 47 */ +/* 41 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25253,259 +24877,206 @@ var isArray = Array.isArray || (function (x) { return x && typeof x.length === ' /***/ }), -/* 48 */ -/***/ (function(module, exports) { +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; +var dP = __webpack_require__(72); +var createDesc = __webpack_require__(132); +module.exports = __webpack_require__(51) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; }; /***/ }), -/* 49 */ -/***/ (function(module, exports) { - -module.exports = require("assert"); - -/***/ }), -/* 50 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var _setPrototypeOf; - -function _load_setPrototypeOf() { - return _setPrototypeOf = _interopRequireDefault(__webpack_require__(206)); +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); } -var _getIterator2; -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); } -exports.default = nullify; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; -function nullify() { - var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return [ sequence ]; +} - if (Array.isArray(obj)) { - for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; +function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; +} + + +function repeat(string, count) { + var result = '', cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; +} + + +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +} + + +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/*eslint-disable max-len*/ + +var common = __webpack_require__(43); +var YAMLException = __webpack_require__(54); +var Type = __webpack_require__(10); + + +function compileList(schema, name, result) { + var exclude = []; + + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); + + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); } + }); - var item = _ref; + result.push(currentType); + }); - nullify(item); - } - } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') { - (0, (_setPrototypeOf || _load_setPrototypeOf()).default)(obj, null); - - // for..in can only be applied to 'object', not 'function' - if (typeof obj === 'object') { - for (var key in obj) { - nullify(obj[key]); - } - } - } - - return obj; + return result.filter(function (type, index) { + return exclude.indexOf(index) === -1; + }); } -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, index, length; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.normalizePattern = normalizePattern; - -/** - * Explode and normalize a pattern into its name and range. - */ - -function normalizePattern(pattern) { - var hasVersion = false; - var range = 'latest'; - var name = pattern; - - // if we're a scope then remove the @ and add it back later - var isScoped = false; - if (name[0] === '@') { - isScoped = true; - name = name.slice(1); + function collectType(type) { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; } - // take first part as the name - var parts = name.split('@'); - if (parts.length > 1) { - name = parts.shift(); - range = parts.join('@'); + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} - if (range) { - hasVersion = true; - } else { - range = '*'; + +function Schema(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; + + this.implicit.forEach(function (type) { + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); } + }); + + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); +} + + +Schema.DEFAULT = null; + + +Schema.create = function createSchema() { + var schemas, types; + + switch (arguments.length) { + case 1: + schemas = Schema.DEFAULT; + types = arguments[0]; + break; + + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; + + default: + throw new YAMLException('Wrong number of arguments for Schema.create function'); } - // add back @ scope suffix - if (isScoped) { - name = `@${name}`; + schemas = common.toArray(schemas); + types = common.toArray(types); + + if (!schemas.every(function (schema) { return schema instanceof Schema; })) { + throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); } - return { name, range, hasVersion }; -} + if (!types.every(function (type) { return type instanceof Type; })) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(611), __esModule: true }; - -/***/ }), -/* 53 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = map; -/* unused harmony export MapOperator */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(5); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function map(project, thisArg) { - return function mapOperation(source) { - if (typeof project !== 'function') { - throw new TypeError('argument is not a function. Are you looking for `mapTo()`?'); - } - return source.lift(new MapOperator(project, thisArg)); - }; -} -var MapOperator = /*@__PURE__*/ (function () { - function MapOperator(project, thisArg) { - this.project = project; - this.thisArg = thisArg; - } - MapOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg)); - }; - return MapOperator; -}()); - -var MapSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MapSubscriber, _super); - function MapSubscriber(destination, project, thisArg) { - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.count = 0; - _this.thisArg = thisArg || _this; - return _this; - } - MapSubscriber.prototype._next = function (value) { - var result; - try { - result = this.project.call(this.thisArg, value, this.count++); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - }; - return MapSubscriber; -}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); -//# sourceMappingURL=map.js.map - - -/***/ }), -/* 54 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return errorObject; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var errorObject = { e: {} }; -//# sourceMappingURL=errorObject.js.map - - -/***/ }), -/* 55 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = isScheduler; -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isScheduler(value) { - return value && typeof value.schedule === 'function'; -} -//# sourceMappingURL=isScheduler.js.map - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(48); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; + return new Schema({ + include: schemas, + explicit: types + }); }; -/***/ }), -/* 57 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = tryCatch; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__errorObject__ = __webpack_require__(54); -/** PURE_IMPORTS_START _errorObject PURE_IMPORTS_END */ - -var tryCatchTarget; -function tryCatcher() { - try { - return tryCatchTarget.apply(this, arguments); - } - catch (e) { - __WEBPACK_IMPORTED_MODULE_0__errorObject__["a" /* errorObject */].e = e; - return __WEBPACK_IMPORTED_MODULE_0__errorObject__["a" /* errorObject */]; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} -//# sourceMappingURL=tryCatch.js.map +module.exports = Schema; /***/ }), -/* 58 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { /* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(109) +var buffer = __webpack_require__(64) var Buffer = buffer.Buffer // alternative to using Object.keys for old browsers @@ -25569,7 +25140,313 @@ SafeBuffer.allocUnsafeSlow = function (size) { /***/ }), -/* 59 */ +/* 46 */ +/***/ (function(module, exports) { + +module.exports = require("os"); + +/***/ }), +/* 47 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = map; +/* unused harmony export MapOperator */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function map(project, thisArg) { + return function mapOperation(source) { + if (typeof project !== 'function') { + throw new TypeError('argument is not a function. Are you looking for `mapTo()`?'); + } + return source.lift(new MapOperator(project, thisArg)); + }; +} +var MapOperator = /*@__PURE__*/ (function () { + function MapOperator(project, thisArg) { + this.project = project; + this.thisArg = thisArg; + } + MapOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg)); + }; + return MapOperator; +}()); + +var MapSubscriber = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MapSubscriber, _super); + function MapSubscriber(destination, project, thisArg) { + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.count = 0; + _this.thisArg = thisArg || _this; + return _this; + } + MapSubscriber.prototype._next = function (value) { + var result; + try { + result = this.project.call(this.thisArg, value, this.count++); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + }; + return MapSubscriber; +}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); +//# sourceMappingURL=map.js.map + + +/***/ }), +/* 48 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return errorObject; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var errorObject = { e: {} }; +//# sourceMappingURL=errorObject.js.map + + +/***/ }), +/* 49 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isScheduler; +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isScheduler(value) { + return value && typeof value.schedule === 'function'; +} +//# sourceMappingURL=isScheduler.js.map + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.wait = wait; +exports.promisify = promisify; +exports.queue = queue; +function wait(delay) { + return new Promise(resolve => { + setTimeout(resolve, delay); + }); +} + +function promisify(fn, firstData) { + return function (...args) { + return new Promise(function (resolve, reject) { + args.push(function (err, ...result) { + let res = result; + + if (result.length <= 1) { + res = result[0]; + } + + if (firstData) { + res = err; + err = null; + } + + if (err) { + reject(err); + } else { + resolve(res); + } + }); + + fn.apply(null, args); + }); + }; +} + +function queue(arr, promiseProducer, concurrency = Infinity) { + concurrency = Math.min(concurrency, arr.length); + + // clone + arr = arr.slice(); + + const results = []; + let total = arr.length; + if (!total) { + return Promise.resolve(results); + } + + return new Promise((resolve, reject) => { + for (let i = 0; i < concurrency; i++) { + next(); + } + + function next() { + const item = arr.shift(); + const promise = promiseProducer(item); + + promise.then(function (result) { + results.push(result); + + total--; + if (total === 0) { + resolve(results); + } else { + if (arr.length) { + next(); + } + } + }, reject); + } + }); +} + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(112)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 52 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), +/* 53 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// YAML error class. http://stackoverflow.com/questions/8458984 +// + + +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); + + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } +} + + +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; + + +YAMLException.prototype.toString = function toString(compact) { + var result = this.name + ': '; + + result += this.reason || '(unknown reason)'; + + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); + } + + return result; +}; + + +module.exports = YAMLException; + + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) + + + + + +var Schema = __webpack_require__(44); + + +module.exports = new Schema({ + include: [ + __webpack_require__(143) + ], + implicit: [ + __webpack_require__(299), + __webpack_require__(292) + ], + explicit: [ + __webpack_require__(284), + __webpack_require__(294), + __webpack_require__(295), + __webpack_require__(297) + ] +}); + + +/***/ }), +/* 56 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = tryCatch; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__errorObject__ = __webpack_require__(48); +/** PURE_IMPORTS_START _errorObject PURE_IMPORTS_END */ + +var tryCatchTarget; +function tryCatcher() { + try { + return tryCatchTarget.apply(this, arguments); + } + catch (e) { + __WEBPACK_IMPORTED_MODULE_0__errorObject__["a" /* errorObject */].e = e; + return __WEBPACK_IMPORTED_MODULE_0__errorObject__["a" /* errorObject */]; + } +} +function tryCatch(fn) { + tryCatchTarget = fn; + return tryCatcher; +} +//# sourceMappingURL=tryCatch.js.map + + +/***/ }), +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25580,35 +25457,29 @@ Object.defineProperty(exports, "__esModule", { }); exports.registryNames = exports.registries = undefined; -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - var _yarnRegistry; function _load_yarnRegistry() { - return _yarnRegistry = _interopRequireDefault(__webpack_require__(540)); + return _yarnRegistry = _interopRequireDefault(__webpack_require__(559)); } var _npmRegistry; function _load_npmRegistry() { - return _npmRegistry = _interopRequireDefault(__webpack_require__(83)); + return _npmRegistry = _interopRequireDefault(__webpack_require__(88)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var registries = exports.registries = { +const registries = exports.registries = { npm: (_npmRegistry || _load_npmRegistry()).default, yarn: (_yarnRegistry || _load_yarnRegistry()).default }; -var registryNames = exports.registryNames = (0, (_keys || _load_keys()).default)(registries); +const registryNames = exports.registryNames = Object.keys(registries); /***/ }), -/* 60 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25618,25 +25489,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.exec = exports.queue = undefined; - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - exports.forkp = forkp; exports.spawnp = spawnp; exports.forwardSignalToSpawnedProcesses = forwardSignalToSpawnedProcesses; @@ -25645,74 +25497,74 @@ exports.spawn = spawn; var _constants; function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); + return _constants = _interopRequireWildcard(__webpack_require__(8)); } var _blockingQueue; function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(152)); + return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); } var _errors; function _load_errors() { - return _errors = __webpack_require__(7); + return _errors = __webpack_require__(6); } -var _promise2; +var _promise; -function _load_promise2() { - return _promise2 = __webpack_require__(85); +function _load_promise() { + return _promise = __webpack_require__(50); } -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 _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; } } + /* global child_process$spawnOpts */ -var child = __webpack_require__(262); +const child = __webpack_require__(331); -var queue = exports.queue = new (_blockingQueue || _load_blockingQueue()).default('child', (_constants || _load_constants()).CHILD_CONCURRENCY); +const queue = exports.queue = new (_blockingQueue || _load_blockingQueue()).default('child', (_constants || _load_constants()).CHILD_CONCURRENCY); // TODO: this uid check is kinda whack -var uid = 0; +let uid = 0; -var exec = exports.exec = (0, (_promise2 || _load_promise2()).promisify)(child.exec); +const exec = exports.exec = (0, (_promise || _load_promise()).promisify)(child.exec); function forkp(program, args, opts) { - return new (_promise || _load_promise()).default(function (resolve, reject) { - var proc = child.fork(program, args, opts); + return new Promise((resolve, reject) => { + const proc = child.fork(program, args, opts); - proc.on('error', function (error) { + proc.on('error', error => { reject(error); }); - proc.on('close', function (exitCode) { + proc.on('close', exitCode => { resolve(exitCode); }); }); } function spawnp(program, args, opts) { - return new (_promise || _load_promise()).default(function (resolve, reject) { - var proc = child.spawn(program, args, opts); + return new Promise((resolve, reject) => { + const proc = child.spawn(program, args, opts); - proc.on('error', function (error) { + proc.on('error', error => { reject(error); }); - proc.on('close', function (exitCode) { + proc.on('close', exitCode => { resolve(exitCode); }); }); } -var spawnedProcesses = {}; +const spawnedProcesses = {}; function forwardSignalToSpawnedProcesses(signal) { - for (var _iterator = (0, (_keys || _load_keys()).default)(spawnedProcesses), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { + for (var _iterator = Object.keys(spawnedProcesses), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { @@ -25724,91 +25576,86 @@ function forwardSignalToSpawnedProcesses(signal) { _ref = _i.value; } - var key = _ref; + const key = _ref; spawnedProcesses[key].kill(signal); } } -function spawn(program, args) { - var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var onData = arguments[3]; +function spawn(program, args, opts = {}, onData) { + const key = opts.cwd || String(++uid); + return queue.push(key, () => new Promise((resolve, reject) => { + const proc = child.spawn(program, args, opts); + spawnedProcesses[key] = proc; - var key = opts.cwd || String(++uid); - return queue.push(key, function () { - return new (_promise || _load_promise()).default(function (resolve, reject) { - var proc = child.spawn(program, args, opts); - spawnedProcesses[key] = proc; + let processingDone = false; + let processClosed = false; + let err = null; - var processingDone = false; - var processClosed = false; - var err = null; + let stdout = ''; - var stdout = ''; - - proc.on('error', function (err) { - if (err.code === 'ENOENT') { - reject(new (_errors || _load_errors()).ProcessSpawnError(`Couldn't find the binary ${program}`, err.code, program)); - } else { - reject(err); - } - }); - - function updateStdout(chunk) { - stdout += chunk; - if (onData) { - onData(chunk); - } - } - - function finish() { - delete spawnedProcesses[key]; - if (err) { - reject(err); - } else { - resolve(stdout.trim()); - } - } - - if (typeof opts.process === 'function') { - opts.process(proc, updateStdout, reject, function () { - if (processClosed) { - finish(); - } else { - processingDone = true; - } - }); + proc.on('error', err => { + if (err.code === 'ENOENT') { + reject(new (_errors || _load_errors()).ProcessSpawnError(`Couldn't find the binary ${program}`, err.code, program)); } else { - if (proc.stderr) { - proc.stderr.on('data', updateStdout); - } - - if (proc.stdout) { - proc.stdout.on('data', updateStdout); - } - - processingDone = true; + reject(err); } + }); - proc.on('close', function (code, signal) { - if (signal || code >= 1) { - err = new (_errors || _load_errors()).ProcessTermError(['Command failed.', signal ? `Exit signal: ${signal}` : `Exit code: ${code}`, `Command: ${program}`, `Arguments: ${args.join(' ')}`, `Directory: ${opts.cwd || process.cwd()}`, `Output:\n${stdout.trim()}`].join('\n')); - err.EXIT_SIGNAL = signal; - err.EXIT_CODE = code; - } + function updateStdout(chunk) { + stdout += chunk; + if (onData) { + onData(chunk); + } + } - if (processingDone || err) { + function finish() { + delete spawnedProcesses[key]; + if (err) { + reject(err); + } else { + resolve(stdout.trim()); + } + } + + if (typeof opts.process === 'function') { + opts.process(proc, updateStdout, reject, function () { + if (processClosed) { finish(); } else { - processClosed = true; + processingDone = true; } }); + } else { + if (proc.stderr) { + proc.stderr.on('data', updateStdout); + } + + if (proc.stdout) { + proc.stdout.on('data', updateStdout); + } + + processingDone = true; + } + + proc.on('close', (code, signal) => { + if (signal || code >= 1) { + err = new (_errors || _load_errors()).ProcessTermError(['Command failed.', signal ? `Exit signal: ${signal}` : `Exit code: ${code}`, `Command: ${program}`, `Arguments: ${args.join(' ')}`, `Directory: ${opts.cwd || process.cwd()}`, `Output:\n${stdout.trim()}`].join('\n')); + err.EXIT_SIGNAL = signal; + err.EXIT_CODE = code; + } + + if (processingDone || err) { + finish(); + } else { + processClosed = true; + } }); - }); + })); } /***/ }), -/* 61 */ +/* 59 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25818,45 +25665,27 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - var _asyncToGenerator2; function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); } -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -exports.default = function (rootCommandName, subCommands) { - var run = function () { +exports.default = function (rootCommandName, subCommands, usage = []) { + let run = (() => { var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - var subName = (0, (_misc || _load_misc()).camelCase)(args.shift() || ''); + const subName = (0, (_misc || _load_misc()).camelCase)(args.shift() || ''); if (subName && subCommands[subName]) { - var command = subCommands[subName]; - var res = yield command(config, reporter, flags, args); + const command = subCommands[subName]; + const res = yield command(config, reporter, flags, args); if (res !== false) { - return (_promise || _load_promise()).default.resolve(); + return Promise.resolve(); } } if (usage && usage.length) { reporter.error(`${reporter.lang('usage')}:`); - for (var _iterator = usage, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { + for (var _iterator = usage, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref2; if (_isArray) { @@ -25868,22 +25697,20 @@ exports.default = function (rootCommandName, subCommands) { _ref2 = _i.value; } - var msg = _ref2; + const msg = _ref2; reporter.error(`yarn ${rootCommandName} ${msg}`); } } - return (_promise || _load_promise()).default.reject(new (_errors || _load_errors()).MessageError(reporter.lang('invalidCommand', subCommandNames.join(', ')))); + return Promise.reject(new (_errors || _load_errors()).MessageError(reporter.lang('invalidCommand', subCommandNames.join(', ')))); }); - return function run(_x2, _x3, _x4, _x5) { + return function run(_x, _x2, _x3, _x4) { return _ref.apply(this, arguments); }; - }(); + })(); - var usage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; - - var subCommandNames = (0, (_keys || _load_keys()).default)(subCommands).map((_misc || _load_misc()).hyphenate); + const subCommandNames = Object.keys(subCommands).map((_misc || _load_misc()).hyphenate); function setFlags(commander) { commander.usage(`${rootCommandName} [${subCommandNames.join('|')}] [flags]`); @@ -25893,7 +25720,7 @@ exports.default = function (rootCommandName, subCommands) { return true; } - var examples = usage.map(function (cmd) { + const examples = usage.map(cmd => { return `${rootCommandName} ${cmd}`; }); @@ -25903,249 +25730,114 @@ exports.default = function (rootCommandName, subCommands) { var _errors; function _load_errors() { - return _errors = __webpack_require__(7); + return _errors = __webpack_require__(6); } var _misc; function _load_misc() { - return _misc = __webpack_require__(27); + return _misc = __webpack_require__(18); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(17); +var core = __webpack_require__(31); +var ctx = __webpack_require__(70); +var hide = __webpack_require__(42); +var has = __webpack_require__(71); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var IS_WRAP = type & $export.W; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE]; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; + var key, own, out; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if (own && has(exports, key)) continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function (C) { + var F = function (a, b, c) { + if (this instanceof C) { + switch (arguments.length) { + case 0: return new C(); + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if (IS_PROTO) { + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +try { + var util = __webpack_require__(3); + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + module.exports = __webpack_require__(275); +} + + /***/ }), /* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.hostedGit = exports.registries = undefined; - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -exports.getExoticResolver = getExoticResolver; -exports.hostedGitFragmentToGitUrl = hostedGitFragmentToGitUrl; - -var _baseResolver; - -function _load_baseResolver() { - return _baseResolver = _interopRequireDefault(__webpack_require__(113)); -} - -var _npmResolver; - -function _load_npmResolver() { - return _npmResolver = _interopRequireDefault(__webpack_require__(198)); -} - -var _yarnResolver; - -function _load_yarnResolver() { - return _yarnResolver = _interopRequireDefault(__webpack_require__(307)); -} - -var _gitResolver; - -function _load_gitResolver() { - return _gitResolver = _interopRequireDefault(__webpack_require__(114)); -} - -var _tarballResolver; - -function _load_tarballResolver() { - return _tarballResolver = _interopRequireDefault(__webpack_require__(553)); -} - -var _githubResolver; - -function _load_githubResolver() { - return _githubResolver = _interopRequireDefault(__webpack_require__(305)); -} - -var _fileResolver; - -function _load_fileResolver() { - return _fileResolver = _interopRequireDefault(__webpack_require__(196)); -} - -var _linkResolver; - -function _load_linkResolver() { - return _linkResolver = _interopRequireDefault(__webpack_require__(306)); -} - -var _gitlabResolver; - -function _load_gitlabResolver() { - return _gitlabResolver = _interopRequireDefault(__webpack_require__(551)); -} - -var _gistResolver; - -function _load_gistResolver() { - return _gistResolver = _interopRequireDefault(__webpack_require__(197)); -} - -var _bitbucketResolver; - -function _load_bitbucketResolver() { - return _bitbucketResolver = _interopRequireDefault(__webpack_require__(550)); -} - -var _hostedGitResolver; - -function _load_hostedGitResolver() { - return _hostedGitResolver = __webpack_require__(96); -} - -var _registryResolver; - -function _load_registryResolver() { - return _registryResolver = _interopRequireDefault(__webpack_require__(552)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var registries = exports.registries = { - npm: (_npmResolver || _load_npmResolver()).default, - yarn: (_yarnResolver || _load_yarnResolver()).default -}; - -// - -var exotics = new (_set || _load_set()).default([(_gitResolver || _load_gitResolver()).default, (_tarballResolver || _load_tarballResolver()).default, (_githubResolver || _load_githubResolver()).default, (_fileResolver || _load_fileResolver()).default, (_linkResolver || _load_linkResolver()).default, (_gitlabResolver || _load_gitlabResolver()).default, (_gistResolver || _load_gistResolver()).default, (_bitbucketResolver || _load_bitbucketResolver()).default]); - -function getExoticResolver(pattern) { - for (var _iterator = exotics, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var Resolver = _ref; - - if (Resolver.isVersion(pattern)) { - return Resolver; - } - } - return null; -} - -// - -var hostedGit = exports.hostedGit = { - github: (_githubResolver || _load_githubResolver()).default, - gitlab: (_gitlabResolver || _load_gitlabResolver()).default, - bitbucket: (_bitbucketResolver || _load_bitbucketResolver()).default -}; - -function hostedGitFragmentToGitUrl(fragment, reporter) { - for (var key in hostedGit) { - var Resolver = hostedGit[key]; - if (Resolver.isVersion(fragment)) { - return Resolver.getGitHTTPUrl((0, (_hostedGitResolver || _load_hostedGitResolver()).explodeHostedGitFragment)(fragment, reporter)); - } - } - - return fragment; -} - -// - -for (var key in registries) { - var _class, _temp; - - var RegistryResolver = registries[key]; - - exotics.add((_temp = _class = function (_ExoticRegistryResolv) { - (0, (_inherits2 || _load_inherits()).default)(_class, _ExoticRegistryResolv); - - function _class() { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, _class); - return (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _ExoticRegistryResolv.apply(this, arguments)); - } - - return _class; - }((_registryResolver || _load_registryResolver()).default), _class.protocol = key, _class.factory = RegistryResolver, _temp)); -} - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(56); -var IE8_DOM_DEFINE = __webpack_require__(330); -var toPrimitive = __webpack_require__(222); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(68) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 64 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = from; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(16); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isPromise__ = __webpack_require__(409); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArrayLike__ = __webpack_require__(406); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isInteropObservable__ = __webpack_require__(969); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isIterable__ = __webpack_require__(970); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fromArray__ = __webpack_require__(79); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__fromPromise__ = __webpack_require__(871); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__fromIterable__ = __webpack_require__(869); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__fromObservable__ = __webpack_require__(870); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__util_subscribeTo__ = __webpack_require__(410); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isPromise__ = __webpack_require__(445); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArrayLike__ = __webpack_require__(442); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isInteropObservable__ = __webpack_require__(928); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isIterable__ = __webpack_require__(929); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fromArray__ = __webpack_require__(85); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__fromPromise__ = __webpack_require__(830); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__fromIterable__ = __webpack_require__(828); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__fromObservable__ = __webpack_require__(829); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__util_subscribeTo__ = __webpack_require__(446); /** PURE_IMPORTS_START _Observable,_util_isPromise,_util_isArrayLike,_util_isInteropObservable,_util_isIterable,_fromArray,_fromPromise,_fromIterable,_fromObservable,_util_subscribeTo PURE_IMPORTS_END */ @@ -26184,217 +25876,217 @@ function from(input, scheduler) { /***/ }), -/* 65 */ +/* 63 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__internal_operators_audit__ = __webpack_require__(392); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__internal_operators_audit__ = __webpack_require__(428); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return __WEBPACK_IMPORTED_MODULE_0__internal_operators_audit__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__internal_operators_auditTime__ = __webpack_require__(879); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__internal_operators_auditTime__ = __webpack_require__(838); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return __WEBPACK_IMPORTED_MODULE_1__internal_operators_auditTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_buffer__ = __webpack_require__(880); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_buffer__ = __webpack_require__(839); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return __WEBPACK_IMPORTED_MODULE_2__internal_operators_buffer__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_operators_bufferCount__ = __webpack_require__(881); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_operators_bufferCount__ = __webpack_require__(840); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return __WEBPACK_IMPORTED_MODULE_3__internal_operators_bufferCount__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_operators_bufferTime__ = __webpack_require__(882); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_operators_bufferTime__ = __webpack_require__(841); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return __WEBPACK_IMPORTED_MODULE_4__internal_operators_bufferTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__internal_operators_bufferToggle__ = __webpack_require__(883); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__internal_operators_bufferToggle__ = __webpack_require__(842); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return __WEBPACK_IMPORTED_MODULE_5__internal_operators_bufferToggle__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_operators_bufferWhen__ = __webpack_require__(884); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_operators_bufferWhen__ = __webpack_require__(843); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return __WEBPACK_IMPORTED_MODULE_6__internal_operators_bufferWhen__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_operators_catchError__ = __webpack_require__(885); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_operators_catchError__ = __webpack_require__(844); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return __WEBPACK_IMPORTED_MODULE_7__internal_operators_catchError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_operators_combineAll__ = __webpack_require__(886); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_operators_combineAll__ = __webpack_require__(845); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return __WEBPACK_IMPORTED_MODULE_8__internal_operators_combineAll__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__internal_operators_combineLatest__ = __webpack_require__(887); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__internal_operators_combineLatest__ = __webpack_require__(846); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return __WEBPACK_IMPORTED_MODULE_9__internal_operators_combineLatest__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__internal_operators_concat__ = __webpack_require__(888); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__internal_operators_concat__ = __webpack_require__(847); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return __WEBPACK_IMPORTED_MODULE_10__internal_operators_concat__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__internal_operators_concatAll__ = __webpack_require__(393); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__internal_operators_concatAll__ = __webpack_require__(429); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return __WEBPACK_IMPORTED_MODULE_11__internal_operators_concatAll__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__internal_operators_concatMap__ = __webpack_require__(394); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__internal_operators_concatMap__ = __webpack_require__(430); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_operators_concatMap__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__internal_operators_concatMapTo__ = __webpack_require__(889); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__internal_operators_concatMapTo__ = __webpack_require__(848); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return __WEBPACK_IMPORTED_MODULE_13__internal_operators_concatMapTo__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__internal_operators_count__ = __webpack_require__(890); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__internal_operators_count__ = __webpack_require__(849); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return __WEBPACK_IMPORTED_MODULE_14__internal_operators_count__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_operators_debounce__ = __webpack_require__(891); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_operators_debounce__ = __webpack_require__(850); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return __WEBPACK_IMPORTED_MODULE_15__internal_operators_debounce__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_operators_debounceTime__ = __webpack_require__(892); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_operators_debounceTime__ = __webpack_require__(851); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return __WEBPACK_IMPORTED_MODULE_16__internal_operators_debounceTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_operators_defaultIfEmpty__ = __webpack_require__(129); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_operators_defaultIfEmpty__ = __webpack_require__(146); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return __WEBPACK_IMPORTED_MODULE_17__internal_operators_defaultIfEmpty__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_operators_delay__ = __webpack_require__(893); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_operators_delay__ = __webpack_require__(852); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return __WEBPACK_IMPORTED_MODULE_18__internal_operators_delay__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_operators_delayWhen__ = __webpack_require__(894); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_operators_delayWhen__ = __webpack_require__(853); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return __WEBPACK_IMPORTED_MODULE_19__internal_operators_delayWhen__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_operators_dematerialize__ = __webpack_require__(895); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_operators_dematerialize__ = __webpack_require__(854); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return __WEBPACK_IMPORTED_MODULE_20__internal_operators_dematerialize__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__internal_operators_distinct__ = __webpack_require__(896); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__internal_operators_distinct__ = __webpack_require__(855); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return __WEBPACK_IMPORTED_MODULE_21__internal_operators_distinct__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_operators_distinctUntilChanged__ = __webpack_require__(395); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_operators_distinctUntilChanged__ = __webpack_require__(431); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return __WEBPACK_IMPORTED_MODULE_22__internal_operators_distinctUntilChanged__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_operators_distinctUntilKeyChanged__ = __webpack_require__(897); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_operators_distinctUntilKeyChanged__ = __webpack_require__(856); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return __WEBPACK_IMPORTED_MODULE_23__internal_operators_distinctUntilKeyChanged__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_operators_elementAt__ = __webpack_require__(898); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_operators_elementAt__ = __webpack_require__(857); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return __WEBPACK_IMPORTED_MODULE_24__internal_operators_elementAt__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__internal_operators_endWith__ = __webpack_require__(899); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__internal_operators_endWith__ = __webpack_require__(858); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return __WEBPACK_IMPORTED_MODULE_25__internal_operators_endWith__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__internal_operators_every__ = __webpack_require__(900); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__internal_operators_every__ = __webpack_require__(859); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return __WEBPACK_IMPORTED_MODULE_26__internal_operators_every__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__internal_operators_exhaust__ = __webpack_require__(901); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__internal_operators_exhaust__ = __webpack_require__(860); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return __WEBPACK_IMPORTED_MODULE_27__internal_operators_exhaust__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_operators_exhaustMap__ = __webpack_require__(902); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_operators_exhaustMap__ = __webpack_require__(861); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return __WEBPACK_IMPORTED_MODULE_28__internal_operators_exhaustMap__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_operators_expand__ = __webpack_require__(903); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_operators_expand__ = __webpack_require__(862); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return __WEBPACK_IMPORTED_MODULE_29__internal_operators_expand__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_operators_filter__ = __webpack_require__(130); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_operators_filter__ = __webpack_require__(147); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return __WEBPACK_IMPORTED_MODULE_30__internal_operators_filter__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__internal_operators_finalize__ = __webpack_require__(904); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__internal_operators_finalize__ = __webpack_require__(863); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_operators_finalize__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__internal_operators_find__ = __webpack_require__(396); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__internal_operators_find__ = __webpack_require__(432); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return __WEBPACK_IMPORTED_MODULE_32__internal_operators_find__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__internal_operators_findIndex__ = __webpack_require__(905); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__internal_operators_findIndex__ = __webpack_require__(864); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return __WEBPACK_IMPORTED_MODULE_33__internal_operators_findIndex__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__internal_operators_first__ = __webpack_require__(906); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__internal_operators_first__ = __webpack_require__(865); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return __WEBPACK_IMPORTED_MODULE_34__internal_operators_first__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__internal_operators_groupBy__ = __webpack_require__(397); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__internal_operators_groupBy__ = __webpack_require__(433); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return __WEBPACK_IMPORTED_MODULE_35__internal_operators_groupBy__["b"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__internal_operators_ignoreElements__ = __webpack_require__(907); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__internal_operators_ignoreElements__ = __webpack_require__(866); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return __WEBPACK_IMPORTED_MODULE_36__internal_operators_ignoreElements__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__internal_operators_isEmpty__ = __webpack_require__(908); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__internal_operators_isEmpty__ = __webpack_require__(867); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return __WEBPACK_IMPORTED_MODULE_37__internal_operators_isEmpty__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__internal_operators_last__ = __webpack_require__(909); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__internal_operators_last__ = __webpack_require__(868); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return __WEBPACK_IMPORTED_MODULE_38__internal_operators_last__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__internal_operators_map__ = __webpack_require__(53); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__internal_operators_map__ = __webpack_require__(47); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return __WEBPACK_IMPORTED_MODULE_39__internal_operators_map__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__internal_operators_mapTo__ = __webpack_require__(910); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__internal_operators_mapTo__ = __webpack_require__(869); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_operators_mapTo__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__internal_operators_materialize__ = __webpack_require__(911); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__internal_operators_materialize__ = __webpack_require__(870); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return __WEBPACK_IMPORTED_MODULE_41__internal_operators_materialize__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__internal_operators_max__ = __webpack_require__(912); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__internal_operators_max__ = __webpack_require__(871); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return __WEBPACK_IMPORTED_MODULE_42__internal_operators_max__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__internal_operators_merge__ = __webpack_require__(913); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__internal_operators_merge__ = __webpack_require__(872); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_43__internal_operators_merge__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__internal_operators_mergeAll__ = __webpack_require__(247); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__internal_operators_mergeAll__ = __webpack_require__(315); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return __WEBPACK_IMPORTED_MODULE_44__internal_operators_mergeAll__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__ = __webpack_require__(131); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__ = __webpack_require__(148); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__["a"]; }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__internal_operators_mergeMapTo__ = __webpack_require__(914); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__internal_operators_mergeMapTo__ = __webpack_require__(873); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return __WEBPACK_IMPORTED_MODULE_46__internal_operators_mergeMapTo__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__internal_operators_mergeScan__ = __webpack_require__(915); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__internal_operators_mergeScan__ = __webpack_require__(874); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return __WEBPACK_IMPORTED_MODULE_47__internal_operators_mergeScan__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__ = __webpack_require__(916); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__ = __webpack_require__(875); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__ = __webpack_require__(104); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__ = __webpack_require__(116); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__ = __webpack_require__(398); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__ = __webpack_require__(434); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__["b"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__internal_operators_onErrorResumeNext__ = __webpack_require__(917); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__internal_operators_onErrorResumeNext__ = __webpack_require__(876); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return __WEBPACK_IMPORTED_MODULE_51__internal_operators_onErrorResumeNext__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__internal_operators_pairwise__ = __webpack_require__(918); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__internal_operators_pairwise__ = __webpack_require__(877); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return __WEBPACK_IMPORTED_MODULE_52__internal_operators_pairwise__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__internal_operators_partition__ = __webpack_require__(919); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__internal_operators_partition__ = __webpack_require__(878); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return __WEBPACK_IMPORTED_MODULE_53__internal_operators_partition__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__internal_operators_pluck__ = __webpack_require__(920); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__internal_operators_pluck__ = __webpack_require__(879); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return __WEBPACK_IMPORTED_MODULE_54__internal_operators_pluck__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__internal_operators_publish__ = __webpack_require__(921); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__internal_operators_publish__ = __webpack_require__(880); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return __WEBPACK_IMPORTED_MODULE_55__internal_operators_publish__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__internal_operators_publishBehavior__ = __webpack_require__(922); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__internal_operators_publishBehavior__ = __webpack_require__(881); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return __WEBPACK_IMPORTED_MODULE_56__internal_operators_publishBehavior__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__internal_operators_publishLast__ = __webpack_require__(923); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__internal_operators_publishLast__ = __webpack_require__(882); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return __WEBPACK_IMPORTED_MODULE_57__internal_operators_publishLast__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__internal_operators_publishReplay__ = __webpack_require__(924); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__internal_operators_publishReplay__ = __webpack_require__(883); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return __WEBPACK_IMPORTED_MODULE_58__internal_operators_publishReplay__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__ = __webpack_require__(925); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__ = __webpack_require__(884); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__ = __webpack_require__(171); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__ = __webpack_require__(187); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__ = __webpack_require__(926); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__ = __webpack_require__(885); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__internal_operators_repeatWhen__ = __webpack_require__(927); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__internal_operators_repeatWhen__ = __webpack_require__(886); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return __WEBPACK_IMPORTED_MODULE_62__internal_operators_repeatWhen__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__internal_operators_retry__ = __webpack_require__(928); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__internal_operators_retry__ = __webpack_require__(887); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return __WEBPACK_IMPORTED_MODULE_63__internal_operators_retry__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__internal_operators_retryWhen__ = __webpack_require__(929); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__internal_operators_retryWhen__ = __webpack_require__(888); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return __WEBPACK_IMPORTED_MODULE_64__internal_operators_retryWhen__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__internal_operators_refCount__ = __webpack_require__(248); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__internal_operators_refCount__ = __webpack_require__(316); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return __WEBPACK_IMPORTED_MODULE_65__internal_operators_refCount__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__internal_operators_sample__ = __webpack_require__(930); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__internal_operators_sample__ = __webpack_require__(889); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return __WEBPACK_IMPORTED_MODULE_66__internal_operators_sample__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__internal_operators_sampleTime__ = __webpack_require__(931); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__internal_operators_sampleTime__ = __webpack_require__(890); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return __WEBPACK_IMPORTED_MODULE_67__internal_operators_sampleTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__internal_operators_scan__ = __webpack_require__(249); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__internal_operators_scan__ = __webpack_require__(317); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return __WEBPACK_IMPORTED_MODULE_68__internal_operators_scan__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__internal_operators_sequenceEqual__ = __webpack_require__(932); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__internal_operators_sequenceEqual__ = __webpack_require__(891); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return __WEBPACK_IMPORTED_MODULE_69__internal_operators_sequenceEqual__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__internal_operators_share__ = __webpack_require__(933); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__internal_operators_share__ = __webpack_require__(892); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return __WEBPACK_IMPORTED_MODULE_70__internal_operators_share__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__internal_operators_shareReplay__ = __webpack_require__(934); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__internal_operators_shareReplay__ = __webpack_require__(893); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return __WEBPACK_IMPORTED_MODULE_71__internal_operators_shareReplay__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__internal_operators_single__ = __webpack_require__(935); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__internal_operators_single__ = __webpack_require__(894); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return __WEBPACK_IMPORTED_MODULE_72__internal_operators_single__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__internal_operators_skip__ = __webpack_require__(936); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__internal_operators_skip__ = __webpack_require__(895); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return __WEBPACK_IMPORTED_MODULE_73__internal_operators_skip__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__internal_operators_skipLast__ = __webpack_require__(937); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__internal_operators_skipLast__ = __webpack_require__(896); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return __WEBPACK_IMPORTED_MODULE_74__internal_operators_skipLast__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__internal_operators_skipUntil__ = __webpack_require__(938); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__internal_operators_skipUntil__ = __webpack_require__(897); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return __WEBPACK_IMPORTED_MODULE_75__internal_operators_skipUntil__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__internal_operators_skipWhile__ = __webpack_require__(939); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__internal_operators_skipWhile__ = __webpack_require__(898); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return __WEBPACK_IMPORTED_MODULE_76__internal_operators_skipWhile__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__internal_operators_startWith__ = __webpack_require__(940); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__internal_operators_startWith__ = __webpack_require__(899); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return __WEBPACK_IMPORTED_MODULE_77__internal_operators_startWith__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__internal_operators_subscribeOn__ = __webpack_require__(941); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__internal_operators_subscribeOn__ = __webpack_require__(900); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return __WEBPACK_IMPORTED_MODULE_78__internal_operators_subscribeOn__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__internal_operators_switchAll__ = __webpack_require__(942); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__internal_operators_switchAll__ = __webpack_require__(901); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return __WEBPACK_IMPORTED_MODULE_79__internal_operators_switchAll__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__internal_operators_switchMap__ = __webpack_require__(250); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__internal_operators_switchMap__ = __webpack_require__(318); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return __WEBPACK_IMPORTED_MODULE_80__internal_operators_switchMap__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__internal_operators_switchMapTo__ = __webpack_require__(943); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__internal_operators_switchMapTo__ = __webpack_require__(902); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return __WEBPACK_IMPORTED_MODULE_81__internal_operators_switchMapTo__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__internal_operators_take__ = __webpack_require__(251); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__internal_operators_take__ = __webpack_require__(319); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return __WEBPACK_IMPORTED_MODULE_82__internal_operators_take__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__internal_operators_takeLast__ = __webpack_require__(252); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__internal_operators_takeLast__ = __webpack_require__(320); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return __WEBPACK_IMPORTED_MODULE_83__internal_operators_takeLast__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__internal_operators_takeUntil__ = __webpack_require__(944); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__internal_operators_takeUntil__ = __webpack_require__(903); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return __WEBPACK_IMPORTED_MODULE_84__internal_operators_takeUntil__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__internal_operators_takeWhile__ = __webpack_require__(945); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__internal_operators_takeWhile__ = __webpack_require__(904); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return __WEBPACK_IMPORTED_MODULE_85__internal_operators_takeWhile__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__internal_operators_tap__ = __webpack_require__(399); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__internal_operators_tap__ = __webpack_require__(435); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return __WEBPACK_IMPORTED_MODULE_86__internal_operators_tap__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__internal_operators_throttle__ = __webpack_require__(400); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__internal_operators_throttle__ = __webpack_require__(436); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_87__internal_operators_throttle__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__ = __webpack_require__(946); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__ = __webpack_require__(905); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__ = __webpack_require__(172); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__ = __webpack_require__(188); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__ = __webpack_require__(947); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__ = __webpack_require__(906); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__internal_operators_timeout__ = __webpack_require__(948); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__internal_operators_timeout__ = __webpack_require__(907); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return __WEBPACK_IMPORTED_MODULE_91__internal_operators_timeout__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__internal_operators_timeoutWith__ = __webpack_require__(401); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__internal_operators_timeoutWith__ = __webpack_require__(437); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return __WEBPACK_IMPORTED_MODULE_92__internal_operators_timeoutWith__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__internal_operators_timestamp__ = __webpack_require__(949); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__internal_operators_timestamp__ = __webpack_require__(908); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return __WEBPACK_IMPORTED_MODULE_93__internal_operators_timestamp__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__internal_operators_toArray__ = __webpack_require__(950); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__internal_operators_toArray__ = __webpack_require__(909); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return __WEBPACK_IMPORTED_MODULE_94__internal_operators_toArray__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__internal_operators_window__ = __webpack_require__(951); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__internal_operators_window__ = __webpack_require__(910); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return __WEBPACK_IMPORTED_MODULE_95__internal_operators_window__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__internal_operators_windowCount__ = __webpack_require__(952); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__internal_operators_windowCount__ = __webpack_require__(911); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return __WEBPACK_IMPORTED_MODULE_96__internal_operators_windowCount__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__internal_operators_windowTime__ = __webpack_require__(953); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__internal_operators_windowTime__ = __webpack_require__(912); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return __WEBPACK_IMPORTED_MODULE_97__internal_operators_windowTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__internal_operators_windowToggle__ = __webpack_require__(954); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__internal_operators_windowToggle__ = __webpack_require__(913); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return __WEBPACK_IMPORTED_MODULE_98__internal_operators_windowToggle__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__internal_operators_windowWhen__ = __webpack_require__(955); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__internal_operators_windowWhen__ = __webpack_require__(914); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return __WEBPACK_IMPORTED_MODULE_99__internal_operators_windowWhen__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__internal_operators_withLatestFrom__ = __webpack_require__(956); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__internal_operators_withLatestFrom__ = __webpack_require__(915); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return __WEBPACK_IMPORTED_MODULE_100__internal_operators_withLatestFrom__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__internal_operators_zip__ = __webpack_require__(957); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__internal_operators_zip__ = __webpack_require__(916); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_101__internal_operators_zip__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__internal_operators_zipAll__ = __webpack_require__(958); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__internal_operators_zipAll__ = __webpack_require__(917); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return __WEBPACK_IMPORTED_MODULE_102__internal_operators_zipAll__["a"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -26504,6 +26196,398 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); //# sourceMappingURL=index.js.map +/***/ }), +/* 64 */ +/***/ (function(module, exports) { + +module.exports = require("buffer"); + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Buffer = __webpack_require__(45).Buffer + +const crypto = __webpack_require__(11) +const Transform = __webpack_require__(23).Transform + +const SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512'] + +const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i +const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/ +const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/ +const VCHAR_REGEX = /^[\x21-\x7E]+$/ + +class Hash { + get isHash () { return true } + constructor (hash, opts) { + const strict = !!(opts && opts.strict) + this.source = hash.trim() + // 3.1. Integrity metadata (called "Hash" by ssri) + // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description + const match = this.source.match( + strict + ? STRICT_SRI_REGEX + : SRI_REGEX + ) + if (!match) { return } + if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return } + this.algorithm = match[1] + this.digest = match[2] + + const rawOpts = match[3] + this.options = rawOpts ? rawOpts.slice(1).split('?') : [] + } + hexDigest () { + return this.digest && Buffer.from(this.digest, 'base64').toString('hex') + } + toJSON () { + return this.toString() + } + toString (opts) { + if (opts && opts.strict) { + // Strict mode enforces the standard as close to the foot of the + // letter as it can. + if (!( + // The spec has very restricted productions for algorithms. + // https://www.w3.org/TR/CSP2/#source-list-syntax + SPEC_ALGORITHMS.some(x => x === this.algorithm) && + // Usually, if someone insists on using a "different" base64, we + // leave it as-is, since there's multiple standards, and the + // specified is not a URL-safe variant. + // https://www.w3.org/TR/CSP2/#base64_value + this.digest.match(BASE64_REGEX) && + // Option syntax is strictly visual chars. + // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression + // https://tools.ietf.org/html/rfc5234#appendix-B.1 + (this.options || []).every(opt => opt.match(VCHAR_REGEX)) + )) { + return '' + } + } + const options = this.options && this.options.length + ? `?${this.options.join('?')}` + : '' + return `${this.algorithm}-${this.digest}${options}` + } +} + +class Integrity { + get isIntegrity () { return true } + toJSON () { + return this.toString() + } + toString (opts) { + opts = opts || {} + let sep = opts.sep || ' ' + if (opts.strict) { + // Entries must be separated by whitespace, according to spec. + sep = sep.replace(/\S+/g, ' ') + } + return Object.keys(this).map(k => { + return this[k].map(hash => { + return Hash.prototype.toString.call(hash, opts) + }).filter(x => x.length).join(sep) + }).filter(x => x.length).join(sep) + } + concat (integrity, opts) { + const other = typeof integrity === 'string' + ? integrity + : stringify(integrity, opts) + return parse(`${this.toString(opts)} ${other}`, opts) + } + hexDigest () { + return parse(this, {single: true}).hexDigest() + } + match (integrity, opts) { + const other = parse(integrity, opts) + const algo = other.pickAlgorithm(opts) + return ( + this[algo] && + other[algo] && + this[algo].find(hash => + other[algo].find(otherhash => + hash.digest === otherhash.digest + ) + ) + ) || false + } + pickAlgorithm (opts) { + const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash + const keys = Object.keys(this) + if (!keys.length) { + throw new Error(`No algorithms available for ${ + JSON.stringify(this.toString()) + }`) + } + return keys.reduce((acc, algo) => { + return pickAlgorithm(acc, algo) || acc + }) + } +} + +module.exports.parse = parse +function parse (sri, opts) { + opts = opts || {} + if (typeof sri === 'string') { + return _parse(sri, opts) + } else if (sri.algorithm && sri.digest) { + const fullSri = new Integrity() + fullSri[sri.algorithm] = [sri] + return _parse(stringify(fullSri, opts), opts) + } else { + return _parse(stringify(sri, opts), opts) + } +} + +function _parse (integrity, opts) { + // 3.4.3. Parse metadata + // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + if (opts.single) { + return new Hash(integrity, opts) + } + return integrity.trim().split(/\s+/).reduce((acc, string) => { + const hash = new Hash(string, opts) + if (hash.algorithm && hash.digest) { + const algo = hash.algorithm + if (!acc[algo]) { acc[algo] = [] } + acc[algo].push(hash) + } + return acc + }, new Integrity()) +} + +module.exports.stringify = stringify +function stringify (obj, opts) { + if (obj.algorithm && obj.digest) { + return Hash.prototype.toString.call(obj, opts) + } else if (typeof obj === 'string') { + return stringify(parse(obj, opts), opts) + } else { + return Integrity.prototype.toString.call(obj, opts) + } +} + +module.exports.fromHex = fromHex +function fromHex (hexDigest, algorithm, opts) { + const optString = (opts && opts.options && opts.options.length) + ? `?${opts.options.join('?')}` + : '' + return parse( + `${algorithm}-${ + Buffer.from(hexDigest, 'hex').toString('base64') + }${optString}`, opts + ) +} + +module.exports.fromData = fromData +function fromData (data, opts) { + opts = opts || {} + const algorithms = opts.algorithms || ['sha512'] + const optString = opts.options && opts.options.length + ? `?${opts.options.join('?')}` + : '' + return algorithms.reduce((acc, algo) => { + const digest = crypto.createHash(algo).update(data).digest('base64') + const hash = new Hash( + `${algo}-${digest}${optString}`, + opts + ) + if (hash.algorithm && hash.digest) { + const algo = hash.algorithm + if (!acc[algo]) { acc[algo] = [] } + acc[algo].push(hash) + } + return acc + }, new Integrity()) +} + +module.exports.fromStream = fromStream +function fromStream (stream, opts) { + opts = opts || {} + const P = opts.Promise || Promise + const istream = integrityStream(opts) + return new P((resolve, reject) => { + stream.pipe(istream) + stream.on('error', reject) + istream.on('error', reject) + let sri + istream.on('integrity', s => { sri = s }) + istream.on('end', () => resolve(sri)) + istream.on('data', () => {}) + }) +} + +module.exports.checkData = checkData +function checkData (data, sri, opts) { + opts = opts || {} + sri = parse(sri, opts) + if (!Object.keys(sri).length) { + if (opts.error) { + throw Object.assign( + new Error('No valid integrity hashes to check against'), { + code: 'EINTEGRITY' + } + ) + } else { + return false + } + } + const algorithm = sri.pickAlgorithm(opts) + const digest = crypto.createHash(algorithm).update(data).digest('base64') + const newSri = parse({algorithm, digest}) + const match = newSri.match(sri, opts) + if (match || !opts.error) { + return match + } else if (typeof opts.size === 'number' && (data.length !== opts.size)) { + const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`) + err.code = 'EBADSIZE' + err.found = data.length + err.expected = opts.size + err.sri = sri + throw err + } else { + const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`) + err.code = 'EINTEGRITY' + err.found = newSri + err.expected = sri + err.algorithm = algorithm + err.sri = sri + throw err + } +} + +module.exports.checkStream = checkStream +function checkStream (stream, sri, opts) { + opts = opts || {} + const P = opts.Promise || Promise + const checker = integrityStream(Object.assign({}, opts, { + integrity: sri + })) + return new P((resolve, reject) => { + stream.pipe(checker) + stream.on('error', reject) + checker.on('error', reject) + let sri + checker.on('verified', s => { sri = s }) + checker.on('end', () => resolve(sri)) + checker.on('data', () => {}) + }) +} + +module.exports.integrityStream = integrityStream +function integrityStream (opts) { + opts = opts || {} + // For verification + const sri = opts.integrity && parse(opts.integrity, opts) + const goodSri = sri && Object.keys(sri).length + const algorithm = goodSri && sri.pickAlgorithm(opts) + const digests = goodSri && sri[algorithm] + // Calculating stream + const algorithms = Array.from( + new Set( + (opts.algorithms || ['sha512']) + .concat(algorithm ? [algorithm] : []) + ) + ) + const hashes = algorithms.map(crypto.createHash) + let streamSize = 0 + const stream = new Transform({ + transform (chunk, enc, cb) { + streamSize += chunk.length + hashes.forEach(h => h.update(chunk, enc)) + cb(null, chunk, enc) + } + }).on('end', () => { + const optString = (opts.options && opts.options.length) + ? `?${opts.options.join('?')}` + : '' + const newSri = parse(hashes.map((h, i) => { + return `${algorithms[i]}-${h.digest('base64')}${optString}` + }).join(' '), opts) + // Integrity verification mode + const match = goodSri && newSri.match(sri, opts) + if (typeof opts.size === 'number' && streamSize !== opts.size) { + const err = new Error(`stream size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${streamSize}`) + err.code = 'EBADSIZE' + err.found = streamSize + err.expected = opts.size + err.sri = sri + stream.emit('error', err) + } else if (opts.integrity && !match) { + const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`) + err.code = 'EINTEGRITY' + err.found = newSri + err.expected = digests + err.algorithm = algorithm + err.sri = sri + stream.emit('error', err) + } else { + stream.emit('size', streamSize) + stream.emit('integrity', newSri) + match && stream.emit('verified', match) + } + }) + return stream +} + +module.exports.create = createIntegrity +function createIntegrity (opts) { + opts = opts || {} + const algorithms = opts.algorithms || ['sha512'] + const optString = opts.options && opts.options.length + ? `?${opts.options.join('?')}` + : '' + + const hashes = algorithms.map(crypto.createHash) + + return { + update: function (chunk, enc) { + hashes.forEach(h => h.update(chunk, enc)) + return this + }, + digest: function (enc) { + const integrity = algorithms.reduce((acc, algo) => { + const digest = hashes.shift().digest('base64') + const hash = new Hash( + `${algo}-${digest}${optString}`, + opts + ) + if (hash.algorithm && hash.digest) { + const algo = hash.algorithm + if (!acc[algo]) { acc[algo] = [] } + acc[algo].push(hash) + } + return acc + }, new Integrity()) + + return integrity + } + } +} + +const NODE_HASHES = new Set(crypto.getHashes()) + +// This is a Best Effort™ at a reasonable priority for hash algos +const DEFAULT_PRIORITY = [ + 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', + // TODO - it's unclear _which_ of these Node will actually use as its name + // for the algorithm, so we guesswork it based on the OpenSSL names. + 'sha3', + 'sha3-256', 'sha3-384', 'sha3-512', + 'sha3_256', 'sha3_384', 'sha3_512' +].filter(algo => NODE_HASHES.has(algo)) + +function getPrioritizedHash (algo1, algo2) { + return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase()) + ? algo1 + : algo2 +} + + /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { @@ -26513,7 +26597,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // If you have no idea what ASN.1 or BER is, see this: // ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc -var Ber = __webpack_require__(480); +var Ber = __webpack_require__(514); @@ -26534,8 +26618,57 @@ module.exports = { /* 67 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.home = undefined; + +var _rootUser; + +function _load_rootUser() { + return _rootUser = _interopRequireDefault(__webpack_require__(223)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const path = __webpack_require__(0); + +const home = exports.home = __webpack_require__(46).homedir(); + +const userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home; + +exports.default = userHomeDir; + +/***/ }), +/* 68 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; + + +/***/ }), +/* 69 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + // optional / simple context binding -var aFunction = __webpack_require__(87); +var aFunction = __webpack_require__(68); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; @@ -26557,23 +26690,77 @@ module.exports = function (fn, that, length) { /***/ }), -/* 68 */ +/* 71 */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), +/* 72 */ /***/ (function(module, exports, __webpack_require__) { -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(74)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +var anObject = __webpack_require__(35); +var IE8_DOM_DEFINE = __webpack_require__(238); +var toPrimitive = __webpack_require__(255); +var dP = Object.defineProperty; + +exports.f = __webpack_require__(51) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// JS-YAML's default schema for `load` function. +// It is not described in the YAML specification. +// +// This schema is based on JS-YAML's default safe schema and includes +// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. +// +// Also this schema is used as default base schema at `Schema.create` function. + + + + + +var Schema = __webpack_require__(44); + + +module.exports = Schema.DEFAULT = new Schema({ + include: [ + __webpack_require__(55) + ], + explicit: [ + __webpack_require__(290), + __webpack_require__(289), + __webpack_require__(288) + ] }); /***/ }), -/* 69 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2015 Joyent, Inc. -var assert = __webpack_require__(22); -var util = __webpack_require__(9); +var assert = __webpack_require__(16); +var util = __webpack_require__(3); function FingerprintFormatError(fp, format) { if (Error.captureStackTrace) @@ -26657,21 +26844,21 @@ module.exports = { /***/ }), -/* 70 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2015 Joyent, Inc. module.exports = Signature; -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var crypto = __webpack_require__(21); -var errs = __webpack_require__(69); -var utils = __webpack_require__(31); +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var crypto = __webpack_require__(11); +var errs = __webpack_require__(74); +var utils = __webpack_require__(26); var asn1 = __webpack_require__(66); -var SSHBuffer = __webpack_require__(142); +var SSHBuffer = __webpack_require__(159); var InvalidAlgorithmError = errs.InvalidAlgorithmError; var SignatureParseError = errs.SignatureParseError; @@ -26977,7 +27164,7 @@ Signature._oldVersionDetect = function (obj) { /***/ }), -/* 71 */ +/* 76 */ /***/ (function(module, exports, __webpack_require__) { (function(nacl) { @@ -29356,7 +29543,7 @@ nacl.setPRNG = function(fn) { }); } else if (true) { // Node.js. - crypto = __webpack_require__(21); + crypto = __webpack_require__(11); if (crypto && crypto.randomBytes) { nacl.setPRNG(function(x, n) { var i, v = crypto.randomBytes(n); @@ -29371,7 +29558,167 @@ nacl.setPRNG = function(fn) { /***/ }), -/* 72 */ +/* 77 */ +/***/ (function(module, exports) { + +module.exports = require("events"); + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hostedGit = exports.registries = undefined; +exports.getExoticResolver = getExoticResolver; +exports.hostedGitFragmentToGitUrl = hostedGitFragmentToGitUrl; + +var _baseResolver; + +function _load_baseResolver() { + return _baseResolver = _interopRequireDefault(__webpack_require__(123)); +} + +var _npmResolver; + +function _load_npmResolver() { + return _npmResolver = _interopRequireDefault(__webpack_require__(217)); +} + +var _yarnResolver; + +function _load_yarnResolver() { + return _yarnResolver = _interopRequireDefault(__webpack_require__(576)); +} + +var _gitResolver; + +function _load_gitResolver() { + return _gitResolver = _interopRequireDefault(__webpack_require__(124)); +} + +var _tarballResolver; + +function _load_tarballResolver() { + return _tarballResolver = _interopRequireDefault(__webpack_require__(574)); +} + +var _githubResolver; + +function _load_githubResolver() { + return _githubResolver = _interopRequireDefault(__webpack_require__(367)); +} + +var _fileResolver; + +function _load_fileResolver() { + return _fileResolver = _interopRequireDefault(__webpack_require__(215)); +} + +var _linkResolver; + +function _load_linkResolver() { + return _linkResolver = _interopRequireDefault(__webpack_require__(368)); +} + +var _gitlabResolver; + +function _load_gitlabResolver() { + return _gitlabResolver = _interopRequireDefault(__webpack_require__(572)); +} + +var _gistResolver; + +function _load_gistResolver() { + return _gistResolver = _interopRequireDefault(__webpack_require__(216)); +} + +var _bitbucketResolver; + +function _load_bitbucketResolver() { + return _bitbucketResolver = _interopRequireDefault(__webpack_require__(571)); +} + +var _hostedGitResolver; + +function _load_hostedGitResolver() { + return _hostedGitResolver = __webpack_require__(109); +} + +var _registryResolver; + +function _load_registryResolver() { + return _registryResolver = _interopRequireDefault(__webpack_require__(573)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const registries = exports.registries = { + npm: (_npmResolver || _load_npmResolver()).default, + yarn: (_yarnResolver || _load_yarnResolver()).default +}; + +// + +const exotics = new Set([(_gitResolver || _load_gitResolver()).default, (_tarballResolver || _load_tarballResolver()).default, (_githubResolver || _load_githubResolver()).default, (_fileResolver || _load_fileResolver()).default, (_linkResolver || _load_linkResolver()).default, (_gitlabResolver || _load_gitlabResolver()).default, (_gistResolver || _load_gistResolver()).default, (_bitbucketResolver || _load_bitbucketResolver()).default]); + +function getExoticResolver(pattern) { + for (var _iterator = exotics, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const Resolver = _ref; + + if (Resolver.isVersion(pattern)) { + return Resolver; + } + } + return null; +} + +// + +const hostedGit = exports.hostedGit = { + github: (_githubResolver || _load_githubResolver()).default, + gitlab: (_gitlabResolver || _load_gitlabResolver()).default, + bitbucket: (_bitbucketResolver || _load_bitbucketResolver()).default +}; + +function hostedGitFragmentToGitUrl(fragment, reporter) { + for (const key in hostedGit) { + const Resolver = hostedGit[key]; + if (Resolver.isVersion(fragment)) { + return Resolver.getGitHTTPUrl((0, (_hostedGitResolver || _load_hostedGitResolver()).explodeHostedGitFragment)(fragment, reporter)); + } + } + + return fragment; +} + +// + +for (const key in registries) { + var _class, _temp; + + const RegistryResolver = registries[key]; + + exotics.add((_temp = _class = class extends (_registryResolver || _load_registryResolver()).default {}, _class.protocol = key, _class.factory = RegistryResolver, _temp)); +} + +/***/ }), +/* 79 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -29381,38 +29728,15 @@ nacl.setPRNG = function(fn) { * Should be extended by prompt types. */ -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _ = __webpack_require__(44); -var chalk = __webpack_require__(35); -var runAsync = __webpack_require__(165); - -var _require = __webpack_require__(65), - filter = _require.filter, - flatMap = _require.flatMap, - share = _require.share, - take = _require.take, - takeUntil = _require.takeUntil; - -var Choices = __webpack_require__(491); -var ScreenManager = __webpack_require__(502); - -var Prompt = function () { - function Prompt(question, rl, answers) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Prompt); +var _ = __webpack_require__(38); +var chalk = __webpack_require__(30); +var runAsync = __webpack_require__(181); +var { filter, flatMap, share, take, takeUntil } = __webpack_require__(63); +var Choices = __webpack_require__(686); +var ScreenManager = __webpack_require__(697); +class Prompt { + constructor(question, rl, answers) { // Setup instance defaults property _.assign(this, { answers: answers, @@ -29421,15 +29745,9 @@ var Prompt = function () { // Set defaults prompt options this.opt = _.defaults(_.clone(question), { - validate: function validate() { - return true; - }, - filter: function filter(val) { - return val; - }, - when: function when() { - return true; - }, + validate: () => true, + filter: val => val, + when: () => true, suffix: '', prefix: chalk.green('?') }); @@ -29458,22 +29776,16 @@ var Prompt = function () { * @return {Promise} */ - Prompt.prototype.run = function run() { - var _this = this; - - return new (_promise || _load_promise()).default(function (resolve) { - _this._run(function (value) { - return resolve(value); - }); + run() { + return new Promise(resolve => { + this._run(value => resolve(value)); }); - }; + } // Default noop (this one should be overwritten in prompts) - - - Prompt.prototype._run = function _run(cb) { + _run(cb) { cb(); - }; + } /** * Throw an error telling a required parameter is missing @@ -29481,62 +29793,67 @@ var Prompt = function () { * @return {Throw Error} */ - Prompt.prototype.throwParamError = function throwParamError(name) { + throwParamError(name) { throw new Error('You must provide a `' + name + '` parameter'); - }; + } /** * Called when the UI closes. Override to do any specific cleanup necessary */ - - - Prompt.prototype.close = function close() { + close() { this.screen.releaseCursor(); - }; + } /** * Run the provided validation method each time a submit event occur. * @param {Rx.Observable} submit - submit event flow * @return {Object} Object containing two observables: `success` and `error` */ - - - Prompt.prototype.handleSubmitEvents = function handleSubmitEvents(submit) { + handleSubmitEvents(submit) { var self = this; var validate = runAsync(this.opt.validate); var asyncFilter = runAsync(this.opt.filter); - var validation = submit.pipe(flatMap(function (value) { - return asyncFilter(value, self.answers).then(function (filteredValue) { - return validate(filteredValue, self.answers).then(function (isValid) { - return { isValid: isValid, value: filteredValue }; - }, function (err) { - return { isValid: err }; - }); - }, function (err) { - return { isValid: err }; - }); - }), share()); + var validation = submit.pipe( + flatMap(value => + asyncFilter(value, self.answers).then( + filteredValue => + validate(filteredValue, self.answers).then( + isValid => ({ isValid: isValid, value: filteredValue }), + err => ({ isValid: err }) + ), + err => ({ isValid: err }) + ) + ), + share() + ); - var success = validation.pipe(filter(function (state) { - return state.isValid === true; - }), take(1)); - var error = validation.pipe(filter(function (state) { - return state.isValid !== true; - }), takeUntil(success)); + var success = validation.pipe( + filter(state => state.isValid === true), + take(1) + ); + var error = validation.pipe( + filter(state => state.isValid !== true), + takeUntil(success) + ); return { success: success, error: error }; - }; + } /** * Generate the prompt question string * @return {String} prompt question string */ - Prompt.prototype.getQuestion = function getQuestion() { - var message = this.opt.prefix + ' ' + chalk.bold(this.opt.message) + this.opt.suffix + chalk.reset(' '); + getQuestion() { + var message = + this.opt.prefix + + ' ' + + chalk.bold(this.opt.message) + + this.opt.suffix + + chalk.reset(' '); // Append the default if available, and if question isn't answered if (this.opt.default != null && this.status !== 'answered') { @@ -29549,117 +29866,74 @@ var Prompt = function () { } return message; - }; - - return Prompt; -}(); + } +} module.exports = Prompt; + /***/ }), -/* 73 */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var _require = __webpack_require__(166), - fromEvent = _require.fromEvent; - -var _require2 = __webpack_require__(65), - filter = _require2.filter, - map = _require2.map, - share = _require2.share; +var { fromEvent } = __webpack_require__(182); +var { filter, map, share } = __webpack_require__(63); function normalizeKeypressEvents(value, key) { return { value: value, key: key || {} }; } -module.exports = function (rl) { +module.exports = function(rl) { var keypress = fromEvent(rl.input, 'keypress', normalizeKeypressEvents) - // Ignore `enter` key. On the readline, we only care about the `line` event. - .pipe(filter(function (_ref) { - var key = _ref.key; - return key.name !== 'enter' && key.name !== 'return'; - })); + // Ignore `enter` key. On the readline, we only care about the `line` event. + .pipe(filter(({ key }) => key.name !== 'enter' && key.name !== 'return')); return { line: fromEvent(rl, 'line'), keypress: keypress, - normalizedUpKey: keypress.pipe(filter(function (_ref2) { - var key = _ref2.key; - return key.name === 'up' || key.name === 'k' || key.name === 'p' && key.ctrl; - }), share()), + normalizedUpKey: keypress.pipe( + filter( + ({ key }) => + key.name === 'up' || key.name === 'k' || (key.name === 'p' && key.ctrl) + ), + share() + ), - normalizedDownKey: keypress.pipe(filter(function (_ref3) { - var key = _ref3.key; - return key.name === 'down' || key.name === 'j' || key.name === 'n' && key.ctrl; - }), share()), + normalizedDownKey: keypress.pipe( + filter( + ({ key }) => + key.name === 'down' || key.name === 'j' || (key.name === 'n' && key.ctrl) + ), + share() + ), - numberKey: keypress.pipe(filter(function (e) { - return e.value && '123456789'.indexOf(e.value) >= 0; - }), map(function (e) { - return Number(e.value); - }), share()), + numberKey: keypress.pipe( + filter(e => e.value && '123456789'.indexOf(e.value) >= 0), + map(e => Number(e.value)), + share() + ), - spaceKey: keypress.pipe(filter(function (_ref4) { - var key = _ref4.key; - return key && key.name === 'space'; - }), share()), - aKey: keypress.pipe(filter(function (_ref5) { - var key = _ref5.key; - return key && key.name === 'a'; - }), share()), - iKey: keypress.pipe(filter(function (_ref6) { - var key = _ref6.key; - return key && key.name === 'i'; - }), share()) + spaceKey: keypress.pipe( + filter(({ key }) => key && key.name === 'space'), + share() + ), + aKey: keypress.pipe( + filter(({ key }) => key && key.name === 'a'), + share() + ), + iKey: keypress.pipe( + filter(({ key }) => key && key.name === 'i'), + share() + ) }; }; -/***/ }), -/* 74 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - /***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(63); -var createDesc = __webpack_require__(123); -module.exports = __webpack_require__(68) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -try { - var util = __webpack_require__(9); - if (typeof util.inherits !== 'function') throw ''; - module.exports = util.inherits; -} catch (e) { - module.exports = __webpack_require__(734); -} - - -/***/ }), -/* 77 */ +/* 81 */ /***/ (function(module, exports, __webpack_require__) { (function(){ @@ -31021,12370 +31295,8 @@ try { }).call(this); -/***/ }), -/* 78 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return InnerSubscriber; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(5); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -var InnerSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](InnerSubscriber, _super); - function InnerSubscriber(parent, outerValue, outerIndex) { - var _this = _super.call(this) || this; - _this.parent = parent; - _this.outerValue = outerValue; - _this.outerIndex = outerIndex; - _this.index = 0; - return _this; - } - InnerSubscriber.prototype._next = function (value) { - this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); - }; - InnerSubscriber.prototype._error = function (error) { - this.parent.notifyError(error, this); - this.unsubscribe(); - }; - InnerSubscriber.prototype._complete = function () { - this.parent.notifyComplete(this); - this.unsubscribe(); - }; - return InnerSubscriber; -}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); - -//# sourceMappingURL=InnerSubscriber.js.map - - -/***/ }), -/* 79 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = fromArray; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(16); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(30); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToArray__ = __webpack_require__(411); -/** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToArray PURE_IMPORTS_END */ - - - -function fromArray(input, scheduler) { - if (!scheduler) { - return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToArray__["a" /* subscribeToArray */])(input)); - } - else { - return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { - var sub = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */](); - var i = 0; - sub.add(scheduler.schedule(function () { - if (i === input.length) { - subscriber.complete(); - return; - } - subscriber.next(input[i++]); - if (!subscriber.closed) { - sub.add(this.schedule()); - } - })); - return sub; - }); - } -} -//# sourceMappingURL=fromArray.js.map - - -/***/ }), -/* 80 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = __webpack_require__(22); -var asn1 = __webpack_require__(66); -var crypto = __webpack_require__(21); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var utils = __webpack_require__(31); -var Key = __webpack_require__(33); -var PrivateKey = __webpack_require__(38); - -var pkcs1 = __webpack_require__(259); -var pkcs8 = __webpack_require__(140); -var sshpriv = __webpack_require__(176); -var rfc4253 = __webpack_require__(91); - -var errors = __webpack_require__(69); - -/* - * For reading we support both PKCS#1 and PKCS#8. If we find a private key, - * we just take the public component of it and use that. - */ -function read(buf, options, forceType) { - var input = buf; - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var lines = buf.trim().split('\n'); - - var m = lines[0].match(/*JSSTYLED*/ - /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - assert.ok(m, 'invalid PEM header'); - - var m2 = lines[lines.length - 1].match(/*JSSTYLED*/ - /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - assert.ok(m2, 'invalid PEM footer'); - - /* Begin and end banners must match key type */ - assert.equal(m[2], m2[2]); - var type = m[2].toLowerCase(); - - var alg; - if (m[1]) { - /* They also must match algorithms, if given */ - assert.equal(m[1], m2[1], 'PEM header and footer mismatch'); - alg = m[1].trim(); - } - - var headers = {}; - while (true) { - lines = lines.slice(1); - m = lines[0].match(/*JSSTYLED*/ - /^([A-Za-z0-9-]+): (.+)$/); - if (!m) - break; - headers[m[1].toLowerCase()] = m[2]; - } - - var cipher, key, iv; - if (headers['proc-type']) { - var parts = headers['proc-type'].split(','); - if (parts[0] === '4' && parts[1] === 'ENCRYPTED') { - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from( - options.passphrase, 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'PEM')); - } else { - parts = headers['dek-info'].split(','); - assert.ok(parts.length === 2); - cipher = parts[0].toLowerCase(); - iv = Buffer.from(parts[1], 'hex'); - key = utils.opensslKeyDeriv(cipher, iv, - options.passphrase, 1).key; - } - } - } - - /* Chop off the first and last lines */ - lines = lines.slice(0, -1).join(''); - buf = Buffer.from(lines, 'base64'); - - if (cipher && key && iv) { - var cipherStream = crypto.createDecipheriv(cipher, key, iv); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - if (e.toString().indexOf('bad decrypt') !== -1) { - throw (new Error('Incorrect passphrase ' + - 'supplied, could not decrypt key')); - } - throw (e); - }); - cipherStream.write(buf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - buf = Buffer.concat(chunks); - } - - /* The new OpenSSH internal format abuses PEM headers */ - if (alg && alg.toLowerCase() === 'openssh') - return (sshpriv.readSSHPrivate(type, buf, options)); - if (alg && alg.toLowerCase() === 'ssh2') - return (rfc4253.readType(type, buf, options)); - - var der = new asn1.BerReader(buf); - der.originalInput = input; - - /* - * All of the PEM file types start with a sequence tag, so chop it - * off here - */ - der.readSequence(); - - /* PKCS#1 type keys name an algorithm in the banner explicitly */ - if (alg) { - if (forceType) - assert.strictEqual(forceType, 'pkcs1'); - return (pkcs1.readPkcs1(alg, type, der)); - } else { - if (forceType) - assert.strictEqual(forceType, 'pkcs8'); - return (pkcs8.readPkcs8(alg, type, der)); - } -} - -function write(key, options, type) { - assert.object(key); - - var alg = { - 'ecdsa': 'EC', - 'rsa': 'RSA', - 'dsa': 'DSA', - 'ed25519': 'EdDSA' - }[key.type]; - var header; - - var der = new asn1.BerWriter(); - - if (PrivateKey.isPrivateKey(key)) { - if (type && type === 'pkcs8') { - header = 'PRIVATE KEY'; - pkcs8.writePkcs8(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs1'); - header = alg + ' PRIVATE KEY'; - pkcs1.writePkcs1(der, key); - } - - } else if (Key.isKey(key)) { - if (type && type === 'pkcs1') { - header = alg + ' PUBLIC KEY'; - pkcs1.writePkcs1(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs8'); - header = 'PUBLIC KEY'; - pkcs8.writePkcs8(der, key); - } - - } else { - throw (new Error('key is not a Key or PrivateKey')); - } - - var tmp = der.buffer.toString('base64'); - var len = tmp.length + (tmp.length / 64) + - 18 + 16 + header.length*2 + 10; - var buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 64; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} - - -/***/ }), -/* 81 */ -/***/ (function(module, exports) { - -module.exports = require("os"); - /***/ }), /* 82 */ -/***/ (function(module, exports) { - -module.exports = require("http"); - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SCOPE_SEPARATOR = undefined; - -var _assign; - -function _load_assign() { - return _assign = _interopRequireDefault(__webpack_require__(23)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(14); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _npmResolver; - -function _load_npmResolver() { - return _npmResolver = _interopRequireDefault(__webpack_require__(198)); -} - -var _envReplace; - -function _load_envReplace() { - return _envReplace = _interopRequireDefault(__webpack_require__(555)); -} - -var _baseRegistry; - -function _load_baseRegistry() { - return _baseRegistry = _interopRequireDefault(__webpack_require__(539)); -} - -var _misc; - -function _load_misc() { - return _misc = __webpack_require__(27); -} - -var _path; - -function _load_path() { - return _path = __webpack_require__(315); -} - -var _normalizeUrl; - -function _load_normalizeUrl() { - return _normalizeUrl = _interopRequireDefault(__webpack_require__(365)); -} - -var _userHomeDir; - -function _load_userHomeDir() { - return _userHomeDir = _interopRequireDefault(__webpack_require__(97)); -} - -var _userHomeDir2; - -function _load_userHomeDir2() { - return _userHomeDir2 = __webpack_require__(97); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _login; - -function _load_login() { - return _login = __webpack_require__(94); -} - -var _path2; - -function _load_path2() { - return _path2 = _interopRequireDefault(__webpack_require__(2)); -} - -var _url; - -function _load_url() { - return _url = _interopRequireDefault(__webpack_require__(29)); -} - -var _ini; - -function _load_ini() { - return _ini = _interopRequireDefault(__webpack_require__(735)); -} - -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 }; } - -var DEFAULT_REGISTRY = 'https://registry.npmjs.org/'; -var REGEX_REGISTRY_HTTP_PROTOCOL = /^https?:/i; -var REGEX_REGISTRY_PREFIX = /^(https?:)?\/\//i; -var REGEX_REGISTRY_SUFFIX = /registry\/?$/; - -var SCOPE_SEPARATOR = exports.SCOPE_SEPARATOR = '%2f'; -// All scoped package names are of the format `@scope%2fpkg` from the use of NpmRegistry.escapeName -// `(?:^|\/)` Match either the start of the string or a `/` but don't capture -// `[^\/?]+?` Match any character that is not '/' or '?' and capture, up until the first occurrence of: -// `(?=%2f|\/)` Match SCOPE_SEPARATOR, the escaped '/', or a raw `/` and don't capture -// The reason for matching a plain `/` is NPM registry being inconsistent about escaping `/` in -// scoped package names: when you're fetching a tarball, it is not escaped, when you want info -// about the package, it is escaped. -var SCOPED_PKG_REGEXP = /(?:^|\/)(@[^\/?]+?)(?=%2f|\/)/; - -// TODO: Use the method from src/cli/commands/global.js for this instead -function getGlobalPrefix() { - if (process.env.PREFIX) { - return process.env.PREFIX; - } else if (process.platform === 'win32') { - // c:\node\node.exe --> prefix=c:\node\ - return (_path2 || _load_path2()).default.dirname(process.execPath); - } else { - // /usr/local/bin/node --> prefix=/usr/local - var prefix = (_path2 || _load_path2()).default.dirname((_path2 || _load_path2()).default.dirname(process.execPath)); - - // destdir only is respected on Unix - if (process.env.DESTDIR) { - prefix = (_path2 || _load_path2()).default.join(process.env.DESTDIR, prefix); - } - - return prefix; - } -} - -var PATH_CONFIG_OPTIONS = new (_set || _load_set()).default(['cache', 'cafile', 'prefix', 'userconfig']); - -function isPathConfigOption(key) { - return PATH_CONFIG_OPTIONS.has(key); -} - -function normalizePath(val) { - if (val === undefined) { - return undefined; - } - - if (typeof val !== 'string') { - val = String(val); - } - - return (0, (_path || _load_path()).resolveWithHome)(val); -} - -function urlParts(requestUrl) { - var normalizedUrl = (0, (_normalizeUrl || _load_normalizeUrl()).default)(requestUrl); - var parsed = (_url || _load_url()).default.parse(normalizedUrl); - var host = parsed.host || ''; - var path = parsed.path || ''; - return { host, path }; -} - -var NpmRegistry = function (_Registry) { - (0, (_inherits2 || _load_inherits()).default)(NpmRegistry, _Registry); - - function NpmRegistry(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, NpmRegistry); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _Registry.call(this, cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles)); - - _this.folder = 'node_modules'; - return _this; - } - - NpmRegistry.escapeName = function escapeName(name) { - // scoped packages contain slashes and the npm registry expects them to be escaped - return name.replace('/', SCOPE_SEPARATOR); - }; - - NpmRegistry.prototype.isScopedPackage = function isScopedPackage(packageIdent) { - return SCOPED_PKG_REGEXP.test(packageIdent); - }; - - NpmRegistry.prototype.getRequestUrl = function getRequestUrl(registry, pathname) { - var isUrl = REGEX_REGISTRY_PREFIX.test(pathname); - - if (isUrl) { - return pathname; - } else { - return (_url || _load_url()).default.resolve((0, (_misc || _load_misc()).addSuffix)(registry, '/'), pathname); - } - }; - - NpmRegistry.prototype.isRequestToRegistry = function isRequestToRegistry(requestUrl, registryUrl) { - var request = urlParts(requestUrl); - var registry = urlParts(registryUrl); - var customHostSuffix = this.getRegistryOrGlobalOption(registryUrl, 'custom-host-suffix'); - - var requestToRegistryHost = request.host === registry.host; - var requestToYarn = (_constants || _load_constants()).YARN_REGISTRY.indexOf(request.host) !== -1 && DEFAULT_REGISTRY.indexOf(registry.host) !== -1; - var requestToRegistryPath = request.path.startsWith(registry.path); - // For some registries, the package path does not prefix with the registry path - var customHostSuffixInUse = typeof customHostSuffix === 'string' && request.host.endsWith(customHostSuffix); - - return (requestToRegistryHost || requestToYarn) && (requestToRegistryPath || customHostSuffixInUse); - }; - - NpmRegistry.prototype.request = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pathname) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var packageName = arguments[2]; - - // packageName needs to be escaped when if it is passed - var packageIdent = packageName && NpmRegistry.escapeName(packageName) || pathname; - var registry = opts.registry || this.getRegistry(packageIdent); - var requestUrl = this.getRequestUrl(registry, pathname); - - var alwaysAuth = this.getRegistryOrGlobalOption(registry, 'always-auth'); - - var headers = (0, (_extends2 || _load_extends()).default)({ - Accept: - // This is to use less bandwidth unless we really need to get the full response. - // See https://github.com/npm/npm-registry-client#requests - opts.unfiltered ? 'application/json' : 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*' - }, opts.headers); - - var isToRegistry = this.isRequestToRegistry(requestUrl, registry) || this.requestNeedsAuth(requestUrl); - - // this.token must be checked to account for publish requests on non-scoped packages - if (this.token || isToRegistry && (alwaysAuth || this.isScopedPackage(packageIdent))) { - var authorization = this.getAuth(packageIdent); - if (authorization) { - headers.authorization = authorization; - } - } - - if (this.otp) { - headers['npm-otp'] = this.otp; - } - - try { - return yield this.requestManager.request({ - url: requestUrl, - method: opts.method, - body: opts.body, - auth: opts.auth, - headers, - json: !opts.buffer, - buffer: opts.buffer, - process: opts.process, - gzip: true - }); - } catch (error) { - if (error instanceof (_errors || _load_errors()).OneTimePasswordError) { - if (this.otp) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('incorrectOneTimePassword')); - } - - this.reporter.info(this.reporter.lang('twoFactorAuthenticationEnabled')); - this.otp = yield (0, (_login || _load_login()).getOneTimePassword)(this.reporter); - - this.requestManager.clearCache(); - - return this.request(pathname, opts, packageName); - } else { - throw error; - } - } - }); - - function request(_x) { - return _ref.apply(this, arguments); - } - - return request; - }(); - - NpmRegistry.prototype.requestNeedsAuth = function requestNeedsAuth(requestUrl) { - var config = this.config; - var requestParts = urlParts(requestUrl); - return !!(0, (_keys || _load_keys()).default)(config).find(function (option) { - var parts = option.split(':'); - if (parts.length === 2 && parts[1] === '_authToken' || parts[1] === '_password') { - var registryParts = urlParts(parts[0]); - if (requestParts.host === registryParts.host && requestParts.path.startsWith(registryParts.path)) { - return true; - } - } - return false; - }); - }; - - NpmRegistry.prototype.checkOutdated = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, name, range) { - var escapedName = NpmRegistry.escapeName(name); - var req = yield this.request(escapedName, { unfiltered: true }); - if (!req) { - throw new Error(`couldn't find ${name}`); - } - - // By default use top level 'repository' and 'homepage' values - var repository = req.repository, - homepage = req.homepage; - - var wantedPkg = yield (_npmResolver || _load_npmResolver()).default.findVersionInRegistryResponse(config, escapedName, range, req); - - // But some local repositories like Verdaccio do not return 'repository' nor 'homepage' - // in top level data structure, so we fallback to wanted package manifest - if (!repository && !homepage) { - repository = wantedPkg.repository; - homepage = wantedPkg.homepage; - } - - var latest = req['dist-tags'].latest; - // In certain cases, registries do not return a 'latest' tag. - if (!latest) { - latest = wantedPkg.version; - } - - var url = homepage || repository && repository.url || ''; - - return { - latest, - wanted: wantedPkg.version, - url - }; - }); - - function checkOutdated(_x3, _x4, _x5) { - return _ref2.apply(this, arguments); - } - - return checkOutdated; - }(); - - NpmRegistry.prototype.getPossibleConfigLocations = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, reporter) { - var possibles = []; - - for (var _iterator = this.extraneousRcFiles.slice().reverse(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref4; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref4 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref4 = _i.value; - } - - var rcFile = _ref4; - - possibles.push([false, (_path2 || _load_path2()).default.resolve(process.cwd(), rcFile)]); - } - - if (this.enableDefaultRc) { - // npmrc --> ./.npmrc, ~/.npmrc, ${prefix}/etc/npmrc - var localfile = '.' + filename; - possibles = possibles.concat([[false, (_path2 || _load_path2()).default.join(this.cwd, localfile)], [true, this.config.userconfig || (_path2 || _load_path2()).default.join((_userHomeDir || _load_userHomeDir()).default, localfile)], [false, (_path2 || _load_path2()).default.join(getGlobalPrefix(), 'etc', filename)]]); - - // When home directory for global install is different from where $HOME/npmrc is stored, - // E.g. /usr/local/share vs /root on linux machines, check the additional location - if ((_userHomeDir2 || _load_userHomeDir2()).home !== (_userHomeDir || _load_userHomeDir()).default) { - possibles.push([true, (_path2 || _load_path2()).default.join((_userHomeDir2 || _load_userHomeDir2()).home, localfile)]); - } - - // npmrc --> ../.npmrc, ../../.npmrc, etc. - var foldersFromRootToCwd = (0, (_path || _load_path()).getPosixPath)(this.cwd).split('/'); - while (foldersFromRootToCwd.length > 1) { - possibles.push([false, (_path2 || _load_path2()).default.join(foldersFromRootToCwd.join((_path2 || _load_path2()).default.sep), localfile)]); - foldersFromRootToCwd.pop(); - } - } - - var actuals = []; - for (var _iterator2 = possibles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref6; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref6 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref6 = _i2.value; - } - - var _ref5 = _ref6; - var isHome = _ref5[0]; - var loc = _ref5[1]; - - reporter.verbose(reporter.lang('configPossibleFile', loc)); - if (yield (_fs || _load_fs()).exists(loc)) { - reporter.verbose(reporter.lang('configFileFound', loc)); - actuals.push([isHome, loc, yield (_fs || _load_fs()).readFile(loc)]); - } - } - - return actuals; - }); - - function getPossibleConfigLocations(_x6, _x7) { - return _ref3.apply(this, arguments); - } - - return getPossibleConfigLocations; - }(); - - NpmRegistry.getConfigEnv = function getConfigEnv() { - var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : process.env; - - // To match NPM's behavior, HOME is always the user's home directory. - var overrideEnv = { - HOME: (_userHomeDir2 || _load_userHomeDir2()).home - }; - return (0, (_assign || _load_assign()).default)({}, env, overrideEnv); - }; - - NpmRegistry.normalizeConfig = function normalizeConfig(config) { - var env = NpmRegistry.getConfigEnv(); - config = (_baseRegistry || _load_baseRegistry()).default.normalizeConfig(config); - - for (var key in config) { - config[key] = (0, (_envReplace || _load_envReplace()).default)(config[key], env); - if (isPathConfigOption(key)) { - config[key] = normalizePath(config[key]); - } - } - - return config; - }; - - NpmRegistry.prototype.loadConfig = function () { - var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // docs: https://docs.npmjs.com/misc/config - this.mergeEnv('npm_config_'); - - for (var _iterator3 = yield this.getPossibleConfigLocations('npmrc', this.reporter), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref9; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref9 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref9 = _i3.value; - } - - var _ref8 = _ref9; - var loc = _ref8[1]; - var file = _ref8[2]; - - var config = NpmRegistry.normalizeConfig((_ini || _load_ini()).default.parse(file)); - - // normalize offline mirror path relative to the current npmrc - var offlineLoc = config['yarn-offline-mirror']; - // don't normalize if we already have a mirror path - if (!this.config['yarn-offline-mirror'] && offlineLoc) { - var mirrorLoc = config['yarn-offline-mirror'] = (_path2 || _load_path2()).default.resolve((_path2 || _load_path2()).default.dirname(loc), offlineLoc); - yield (_fs || _load_fs()).mkdirp(mirrorLoc); - } - - this.config = (0, (_assign || _load_assign()).default)({}, config, this.config); - } - }); - - function loadConfig() { - return _ref7.apply(this, arguments); - } - - return loadConfig; - }(); - - NpmRegistry.prototype.getScope = function getScope(packageIdent) { - var match = packageIdent.match(SCOPED_PKG_REGEXP); - return match && match[1] || ''; - }; - - NpmRegistry.prototype.getRegistry = function getRegistry(packageIdent) { - // Try extracting registry from the url, then scoped registry, and default registry - if (packageIdent.match(REGEX_REGISTRY_PREFIX)) { - var availableRegistries = this.getAvailableRegistries(); - var registry = availableRegistries.find(function (registry) { - return packageIdent.startsWith(registry); - }); - if (registry) { - return String(registry); - } - } - - var _arr = [this.getScope(packageIdent), '']; - for (var _i4 = 0; _i4 < _arr.length; _i4++) { - var scope = _arr[_i4]; - var _registry = this.getScopedOption(scope, 'registry') || this.registries.yarn.getScopedOption(scope, 'registry'); - if (_registry) { - return String(_registry); - } - } - - return DEFAULT_REGISTRY; - }; - - NpmRegistry.prototype.getAuthByRegistry = function getAuthByRegistry(registry) { - // Check for bearer token. - var authToken = this.getRegistryOrGlobalOption(registry, '_authToken'); - if (authToken) { - return `Bearer ${String(authToken)}`; - } - - // Check for basic auth token. - var auth = this.getRegistryOrGlobalOption(registry, '_auth'); - if (auth) { - return `Basic ${String(auth)}`; - } - - // Check for basic username/password auth. - var username = this.getRegistryOrGlobalOption(registry, 'username'); - var password = this.getRegistryOrGlobalOption(registry, '_password'); - if (username && password) { - var pw = Buffer.from(String(password), 'base64').toString(); - return 'Basic ' + Buffer.from(String(username) + ':' + pw).toString('base64'); - } - - return ''; - }; - - NpmRegistry.prototype.getAuth = function getAuth(packageIdent) { - if (this.token) { - return this.token; - } - - var baseRegistry = this.getRegistry(packageIdent); - var registries = [baseRegistry]; - - // If sending a request to the Yarn registry, we must also send it the auth token for the npm registry - if (baseRegistry === (_constants || _load_constants()).YARN_REGISTRY) { - registries.push(DEFAULT_REGISTRY); - } - - for (var _iterator4 = registries, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref10; - - if (_isArray4) { - if (_i5 >= _iterator4.length) break; - _ref10 = _iterator4[_i5++]; - } else { - _i5 = _iterator4.next(); - if (_i5.done) break; - _ref10 = _i5.value; - } - - var registry = _ref10; - - var auth = this.getAuthByRegistry(registry); - - if (auth) { - return auth; - } - } - - return ''; - }; - - NpmRegistry.prototype.getScopedOption = function getScopedOption(scope, option) { - return this.getOption(scope + (scope ? ':' : '') + option); - }; - - NpmRegistry.prototype.getRegistryOption = function getRegistryOption(registry, option) { - var pre = REGEX_REGISTRY_HTTP_PROTOCOL; - var suf = REGEX_REGISTRY_SUFFIX; - - // When registry is used config scope, the trailing '/' is required - var reg = (0, (_misc || _load_misc()).addSuffix)(registry, '/'); - - // 1st attempt, try to get option for the given registry URL - // 2nd attempt, remove the 'https?:' prefix of the registry URL - // 3nd attempt, remove the 'registry/?' suffix of the registry URL - return this.getScopedOption(reg, option) || pre.test(reg) && this.getRegistryOption(reg.replace(pre, ''), option) || suf.test(reg) && this.getRegistryOption(reg.replace(suf, ''), option); - }; - - NpmRegistry.prototype.getRegistryOrGlobalOption = function getRegistryOrGlobalOption(registry, option) { - return this.getRegistryOption(registry, option) || this.getOption(option); - }; - - return NpmRegistry; -}((_baseRegistry || _load_baseRegistry()).default); - -NpmRegistry.filename = 'package.json'; -exports.default = NpmRegistry; - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var _baseResolver; - -function _load_baseResolver() { - return _baseResolver = _interopRequireDefault(__webpack_require__(113)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var ExoticResolver = function (_BaseResolver) { - (0, (_inherits2 || _load_inherits()).default)(ExoticResolver, _BaseResolver); - - function ExoticResolver() { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, ExoticResolver); - return (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _BaseResolver.apply(this, arguments)); - } - - ExoticResolver.isVersion = function isVersion(pattern) { - var proto = this.protocol; - if (proto) { - return pattern.startsWith(`${proto}:`); - } else { - throw new Error('No protocol specified'); - } - }; - - return ExoticResolver; -}((_baseResolver || _load_baseResolver()).default); - -exports.default = ExoticResolver; - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -exports.wait = wait; -exports.promisify = promisify; -exports.queue = queue; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function wait(delay) { - return new (_promise || _load_promise()).default(function (resolve) { - setTimeout(resolve, delay); - }); -} - -function promisify(fn, firstData) { - return function () { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return new (_promise || _load_promise()).default(function (resolve, reject) { - args.push(function (err) { - for (var _len2 = arguments.length, result = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - result[_key2 - 1] = arguments[_key2]; - } - - var res = result; - - if (result.length <= 1) { - res = result[0]; - } - - if (firstData) { - res = err; - err = null; - } - - if (err) { - reject(err); - } else { - resolve(res); - } - }); - - fn.apply(null, args); - }); - }; -} - -function queue(arr, promiseProducer) { - var concurrency = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity; - - concurrency = Math.min(concurrency, arr.length); - - // clone - arr = arr.slice(); - - var results = []; - var total = arr.length; - if (!total) { - return (_promise || _load_promise()).default.resolve(results); - } - - return new (_promise || _load_promise()).default(function (resolve, reject) { - for (var i = 0; i < concurrency; i++) { - next(); - } - - function next() { - var item = arr.shift(); - var promise = promiseProducer(item); - - promise.then(function (result) { - results.push(result); - - total--; - if (total === 0) { - resolve(results); - } else { - if (arr.length) { - next(); - } - } - }, reject); - } - }); -} - -/***/ }), -/* 86 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _normalizePattern2; - -function _load_normalizePattern() { - return _normalizePattern2 = __webpack_require__(51); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var semver = __webpack_require__(26); - -var WorkspaceLayout = function () { - function WorkspaceLayout(workspaces, config) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, WorkspaceLayout); - - this.workspaces = workspaces; - this.config = config; - } - - WorkspaceLayout.prototype.getWorkspaceManifest = function getWorkspaceManifest(key) { - return this.workspaces[key]; - }; - - WorkspaceLayout.prototype.getManifestByPattern = function getManifestByPattern(pattern) { - var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern), - name = _normalizePattern.name, - range = _normalizePattern.range; - - var workspace = this.getWorkspaceManifest(name); - if (!workspace || !semver.satisfies(workspace.manifest.version, range, this.config.looseSemver)) { - return null; - } - return workspace; - }; - - return WorkspaceLayout; -}(); - -exports.default = WorkspaceLayout; - -/***/ }), -/* 87 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 88 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 89 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(213); -var defined = __webpack_require__(210); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 90 */ -/***/ (function(module, exports, __webpack_require__) { - -var Stream = __webpack_require__(34); -if (process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; - exports = module.exports = Stream.Readable; - exports.Readable = Stream.Readable; - exports.Writable = Stream.Writable; - exports.Duplex = Stream.Duplex; - exports.Transform = Stream.Transform; - exports.PassThrough = Stream.PassThrough; - exports.Stream = Stream; -} else { - exports = module.exports = __webpack_require__(370); - exports.Stream = Stream || exports; - exports.Readable = exports; - exports.Writable = __webpack_require__(372); - exports.Duplex = __webpack_require__(103); - exports.Transform = __webpack_require__(371); - exports.PassThrough = __webpack_require__(832); -} - - -/***/ }), -/* 91 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read.bind(undefined, false, undefined), - readType: read.bind(undefined, false), - write: write, - /* semi-private api, used by sshpk-agent */ - readPartial: read.bind(undefined, true), - - /* shared with ssh format */ - readInternal: read, - keyTypeToAlg: keyTypeToAlg, - algToKeyType: algToKeyType -}; - -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var utils = __webpack_require__(31); -var Key = __webpack_require__(33); -var PrivateKey = __webpack_require__(38); -var SSHBuffer = __webpack_require__(142); - -function algToKeyType(alg) { - assert.string(alg); - if (alg === 'ssh-dss') - return ('dsa'); - else if (alg === 'ssh-rsa') - return ('rsa'); - else if (alg === 'ssh-ed25519') - return ('ed25519'); - else if (alg === 'ssh-curve25519') - return ('curve25519'); - else if (alg.match(/^ecdsa-sha2-/)) - return ('ecdsa'); - else - throw (new Error('Unknown algorithm ' + alg)); -} - -function keyTypeToAlg(key) { - assert.object(key); - if (key.type === 'dsa') - return ('ssh-dss'); - else if (key.type === 'rsa') - return ('ssh-rsa'); - else if (key.type === 'ed25519') - return ('ssh-ed25519'); - else if (key.type === 'curve25519') - return ('ssh-curve25519'); - else if (key.type === 'ecdsa') - return ('ecdsa-sha2-' + key.part.curve.data.toString()); - else - throw (new Error('Unknown key type ' + key.type)); -} - -function read(partial, type, buf, options) { - if (typeof (buf) === 'string') - buf = Buffer.from(buf); - assert.buffer(buf, 'buf'); - - var key = {}; - - var parts = key.parts = []; - var sshbuf = new SSHBuffer({buffer: buf}); - - var alg = sshbuf.readString(); - assert.ok(!sshbuf.atEnd(), 'key must have at least one part'); - - key.type = algToKeyType(alg); - - var partCount = algs.info[key.type].parts.length; - if (type && type === 'private') - partCount = algs.privInfo[key.type].parts.length; - - while (!sshbuf.atEnd() && parts.length < partCount) - parts.push(sshbuf.readPart()); - while (!partial && !sshbuf.atEnd()) - parts.push(sshbuf.readPart()); - - assert.ok(parts.length >= 1, - 'key must have at least one part'); - assert.ok(partial || sshbuf.atEnd(), - 'leftover bytes at end of key'); - - var Constructor = Key; - var algInfo = algs.info[key.type]; - if (type === 'private' || algInfo.parts.length !== parts.length) { - algInfo = algs.privInfo[key.type]; - Constructor = PrivateKey; - } - assert.strictEqual(algInfo.parts.length, parts.length); - - if (key.type === 'ecdsa') { - var res = /^ecdsa-sha2-(.+)$/.exec(alg); - assert.ok(res !== null); - assert.strictEqual(res[1], parts[0].data.toString()); - } - - var normalized = true; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = parts[i]; - p.name = algInfo.parts[i]; - /* - * OpenSSH stores ed25519 "private" keys as seed + public key - * concat'd together (k followed by A). We want to keep them - * separate for other formats that don't do this. - */ - if (key.type === 'ed25519' && p.name === 'k') - p.data = p.data.slice(0, 32); - - if (p.name !== 'curve' && algInfo.normalize !== false) { - var nd; - if (key.type === 'ed25519') { - nd = utils.zeroPadToLength(p.data, 32); - } else { - nd = utils.mpNormalize(p.data); - } - if (nd.toString('binary') !== - p.data.toString('binary')) { - p.data = nd; - normalized = false; - } - } - } - - if (normalized) - key._rfc4253Cache = sshbuf.toBuffer(); - - if (partial && typeof (partial) === 'object') { - partial.remainder = sshbuf.remainder(); - partial.consumed = sshbuf._offset; - } - - return (new Constructor(key)); -} - -function write(key, options) { - assert.object(key); - - var alg = keyTypeToAlg(key); - var i; - - var algInfo = algs.info[key.type]; - if (PrivateKey.isPrivateKey(key)) - algInfo = algs.privInfo[key.type]; - var parts = algInfo.parts; - - var buf = new SSHBuffer({}); - - buf.writeString(alg); - - for (i = 0; i < parts.length; ++i) { - var data = key.part[parts[i]].data; - if (algInfo.normalize !== false) { - if (key.type === 'ed25519') - data = utils.zeroPadToLength(data, 32); - else - data = utils.mpNormalize(data); - } - if (key.type === 'ed25519' && parts[i] === 'k') - data = Buffer.concat([data, key.part.A.data]); - buf.writeBuffer(data); - } - - return (buf.toBuffer()); -} - - -/***/ }), -/* 92 */ -/***/ (function(module, exports) { - -module.exports = require("events"); - -/***/ }), -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - - -module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - equal: __webpack_require__(228), - ucs2length: __webpack_require__(447), - varOccurences: varOccurences, - varReplace: varReplace, - cleanUpCode: cleanUpCode, - finalCleanUpCode: finalCleanUpCode, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - unescapeJsonPointer: unescapeJsonPointer, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer -}; - - -function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; -} - - -function checkDataType(dataType, data, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } -} - - -function checkDataTypes(dataTypes, data) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); - - return code; - } -} - - -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); -function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i 2 && arguments[2] !== undefined ? arguments[2] : ''; - var flags = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; - var registry = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : ''; - - var auth = registry ? config.registries.npm.getAuthByRegistry(registry) : config.registries.npm.getAuth(name); - - if (config.otp) { - config.registries.npm.setOtp(config.otp); - } - - if (auth) { - config.registries.npm.setToken(auth); - return function revoke() { - reporter.info(reporter.lang('notRevokingConfigToken')); - return (_promise || _load_promise()).default.resolve(); - }; - } - - var env = process.env.YARN_AUTH_TOKEN || process.env.NPM_AUTH_TOKEN; - if (env) { - config.registries.npm.setToken(`Bearer ${env}`); - return function revoke() { - reporter.info(reporter.lang('notRevokingEnvToken')); - return (_promise || _load_promise()).default.resolve(); - }; - } - - // make sure we're not running in non-interactive mode before asking for login - if (flags.nonInteractive || config.nonInteractive) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('nonInteractiveNoToken')); - } - - // - var creds = yield getCredentials(config, reporter); - if (!creds) { - reporter.warn(reporter.lang('loginAsPublic')); - return function revoke() { - reporter.info(reporter.lang('noTokenToRevoke')); - return (_promise || _load_promise()).default.resolve(); - }; - } - - var username = creds.username, - email = creds.email; - - var password = yield reporter.question(reporter.lang('npmPassword'), { - password: true, - required: true - }); - - // - var userobj = { - _id: `org.couchdb.user:${username}`, - name: username, - password, - email, - type: 'user', - roles: [], - date: new Date().toISOString() - }; - - // - var res = yield config.registries.npm.request(`-/user/org.couchdb.user:${encodeURIComponent(username)}`, { - method: 'PUT', - body: userobj, - auth: { username, password, email } - }); - - if (res && res.ok) { - reporter.success(reporter.lang('loggedIn')); - - var token = res.token; - config.registries.npm.setToken(`Bearer ${token}`); - - return function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - reporter.success(reporter.lang('revokedToken')); - yield config.registries.npm.request(`-/user/token/${token}`, { - method: 'DELETE' - }); - }); - - function revoke() { - return _ref3.apply(this, arguments); - } - - return revoke; - }(); - } else { - throw new (_errors || _load_errors()).MessageError(reporter.lang('incorrectCredentials')); - } - }); - - return function getToken(_x3, _x4) { - return _ref2.apply(this, arguments); - }; -}(); - -var run = exports.run = function () { - var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - yield getCredentials(config, reporter); - }); - - return function run(_x8, _x9, _x10, _x11) { - return _ref4.apply(this, arguments); - }; -}(); - -exports.getOneTimePassword = getOneTimePassword; -exports.hasWrapper = hasWrapper; -exports.setFlags = setFlags; - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function getOneTimePassword(reporter) { - return reporter.question(reporter.lang('npmOneTimePassword')); -} - -function hasWrapper(commander, args) { - return true; -} - -function setFlags(commander) { - commander.description('Stores registry username and email.'); -} - -/***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} - -exports.stringifyLangArgs = stringifyLangArgs; - -var _format; - -function _load_format() { - return _format = __webpack_require__(303); -} - -var _index; - -function _load_index() { - return _index = _interopRequireWildcard(__webpack_require__(304)); -} - -var _isCi; - -function _load_isCi() { - return _isCi = _interopRequireDefault(__webpack_require__(232)); -} - -var _os; - -function _load_os() { - return _os = _interopRequireDefault(__webpack_require__(81)); -} - -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 }; } - -/* eslint no-unused-vars: 0 */ - -var util = __webpack_require__(9); -var EventEmitter = __webpack_require__(92).EventEmitter; - -function stringifyLangArgs(args) { - return args.map(function (val) { - if (val != null && val.inspect) { - return val.inspect(); - } else { - try { - var str = (0, (_stringify || _load_stringify()).default)(val) || val + ''; - // should match all literal line breaks and - // "u001b" that follow an odd number of backslashes and convert them to ESC - // we do this because the JSON.stringify process has escaped these characters - return str.replace(/((?:^|[^\\])(?:\\{2})*)\\u001[bB]/g, '$1\u001b').replace(/[\\]r[\\]n|([\\])?[\\]n/g, function (match, precededBacklash) { - // precededBacklash not null when "\n" is preceded by a backlash ("\\n") - // match will be "\\n" and we don't replace it with os.EOL - return precededBacklash ? match : (_os || _load_os()).default.EOL; - }); - } catch (e) { - return util.inspect(val); - } - } - }); -} - -var BaseReporter = function () { - function BaseReporter() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, BaseReporter); - - var lang = 'en'; - this.language = lang; - - this.stdout = opts.stdout || process.stdout; - this.stderr = opts.stderr || process.stderr; - this.stdin = opts.stdin || this._getStandardInput(); - this.emoji = !!opts.emoji; - this.nonInteractive = !!opts.nonInteractive; - this.noProgress = !!opts.noProgress || (_isCi || _load_isCi()).default; - this.isVerbose = !!opts.verbose; - - // $FlowFixMe: this is valid! - this.isTTY = this.stdout.isTTY; - - this.peakMemory = 0; - this.startTime = Date.now(); - this.format = (_format || _load_format()).defaultFormatter; - } - - BaseReporter.prototype.lang = function lang(key) { - var msg = (_index || _load_index())[this.language][key] || (_index || _load_index()).en[key]; - if (!msg) { - throw new ReferenceError(`No message defined for language key ${key}`); - } - - // stringify args - - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var stringifiedArgs = stringifyLangArgs(args); - - // replace $0 placeholders with args - return msg.replace(/\$(\d+)/g, function (str, i) { - return stringifiedArgs[i]; - }); - }; - - /** - * `stringifyLangArgs` run `JSON.stringify` on strings too causing - * them to appear quoted. This marks them as "raw" and prevents - * the quoting and escaping - */ - - - BaseReporter.prototype.rawText = function rawText(str) { - return { - inspect() { - return str; - } - }; - }; - - BaseReporter.prototype.verbose = function verbose(msg) { - if (this.isVerbose) { - this._verbose(msg); - } - }; - - BaseReporter.prototype.verboseInspect = function verboseInspect(val) { - if (this.isVerbose) { - this._verboseInspect(val); - } - }; - - BaseReporter.prototype._verbose = function _verbose(msg) {}; - - BaseReporter.prototype._verboseInspect = function _verboseInspect(val) {}; - - BaseReporter.prototype._getStandardInput = function _getStandardInput() { - var standardInput = void 0; - - // Accessing stdin in a win32 headless process (e.g., Visual Studio) may throw an exception. - try { - standardInput = process.stdin; - } catch (e) { - console.warn(e.message); - delete process.stdin; - // $FlowFixMe: this is valid! - process.stdin = new EventEmitter(); - standardInput = process.stdin; - } - - return standardInput; - }; - - BaseReporter.prototype.initPeakMemoryCounter = function initPeakMemoryCounter() { - var _this = this; - - this.checkPeakMemory(); - this.peakMemoryInterval = setInterval(function () { - _this.checkPeakMemory(); - }, 1000); - // $FlowFixMe: Node's setInterval returns a Timeout, not a Number - this.peakMemoryInterval.unref(); - }; - - BaseReporter.prototype.checkPeakMemory = function checkPeakMemory() { - var _process$memoryUsage = process.memoryUsage(), - heapTotal = _process$memoryUsage.heapTotal; - - if (heapTotal > this.peakMemory) { - this.peakMemory = heapTotal; - } - }; - - BaseReporter.prototype.close = function close() { - if (this.peakMemoryInterval) { - clearInterval(this.peakMemoryInterval); - this.peakMemoryInterval = null; - } - }; - - BaseReporter.prototype.getTotalTime = function getTotalTime() { - return Date.now() - this.startTime; - }; - - // TODO - - - BaseReporter.prototype.list = function list(key, items, hints) {}; - - // Outputs basic tree structure to console - - - BaseReporter.prototype.tree = function tree(key, obj) { - var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - _ref$force = _ref.force, - force = _ref$force === undefined ? false : _ref$force; - }; - - // called whenever we begin a step in the CLI. - - - BaseReporter.prototype.step = function step(current, total, message, emoji) {}; - - // a error message has been triggered. this however does not always meant an abrupt - // program end. - - - BaseReporter.prototype.error = function error(message) {}; - - // an info message has been triggered. this provides things like stats and diagnostics. - - - BaseReporter.prototype.info = function info(message) {}; - - // a warning message has been triggered. - - - BaseReporter.prototype.warn = function warn(message) {}; - - // a success message has been triggered. - - - BaseReporter.prototype.success = function success(message) {}; - - // a simple log message - // TODO: rethink the {force} parameter. In the meantime, please don't use it (cf comments in #4143). - - - BaseReporter.prototype.log = function log(message) { - var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref2$force = _ref2.force, - force = _ref2$force === undefined ? false : _ref2$force; - }; - - // a shell command has been executed - - - BaseReporter.prototype.command = function command(_command) {}; - - // inspect and pretty-print any value - - - BaseReporter.prototype.inspect = function inspect(value) {}; - - // the screen shown at the very start of the CLI - - - BaseReporter.prototype.header = function header(command, pkg) {}; - - // the screen shown at the very end of the CLI - - - BaseReporter.prototype.footer = function footer(showPeakMemory) {}; - - // a table structure - - - BaseReporter.prototype.table = function table(head, body) {}; - - // security audit action to resolve advisories - - - BaseReporter.prototype.auditAction = function auditAction(recommendation) {}; - - // security audit requires manual review - - - BaseReporter.prototype.auditManualReview = function auditManualReview() {}; - - // security audit advisory - - - BaseReporter.prototype.auditAdvisory = function auditAdvisory(resolution, _auditAdvisory) {}; - - // summary for security audit report - - - BaseReporter.prototype.auditSummary = function auditSummary(auditMetadata) {}; - - // render an activity spinner and return a function that will trigger an update - - - BaseReporter.prototype.activity = function activity() { - return { - tick(name) {}, - end() {} - }; - }; - - // - - - BaseReporter.prototype.activitySet = function activitySet(total, workers) { - return { - spinners: Array(workers).fill({ - clear() {}, - setPrefix() {}, - tick() {}, - end() {} - }), - end() {} - }; - }; - - // - - - BaseReporter.prototype.question = function question(_question) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - return (_promise || _load_promise()).default.reject(new Error('Not implemented')); - }; - - // - - - BaseReporter.prototype.questionAffirm = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (question) { - var condition = true; // trick eslint - if (this.nonInteractive) { - return true; - } - - while (condition) { - var answer = yield this.question(question); - answer = answer.toLowerCase(); - - if (answer === 'y' || answer === 'yes') { - return true; - } - if (answer === 'n' || answer === 'no') { - return false; - } - - this.error('Invalid answer for question'); - } - - return false; - }); - - function questionAffirm(_x5) { - return _ref3.apply(this, arguments); - } - - return questionAffirm; - }(); - - // prompt the user to select an option from an array - - - BaseReporter.prototype.select = function select(header, question, options) { - return (_promise || _load_promise()).default.reject(new Error('Not implemented')); - }; - - // render a progress bar and return a function which when called will trigger an update - - - BaseReporter.prototype.progress = function progress(total) { - return function () {}; - }; - - // utility function to disable progress bar - - - BaseReporter.prototype.disableProgress = function disableProgress() { - this.noProgress = true; - }; - - // - - - BaseReporter.prototype.prompt = function prompt(message, choices) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - return (_promise || _load_promise()).default.reject(new Error('Not implemented')); - }; - - return BaseReporter; -}(); - -exports.default = BaseReporter; - -/***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -exports.explodeHostedGitFragment = explodeHostedGitFragment; - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _index; - -function _load_index() { - return _index = __webpack_require__(59); -} - -var _gitResolver; - -function _load_gitResolver() { - return _gitResolver = _interopRequireDefault(__webpack_require__(114)); -} - -var _exoticResolver; - -function _load_exoticResolver() { - return _exoticResolver = _interopRequireDefault(__webpack_require__(84)); -} - -var _git; - -function _load_git() { - return _git = _interopRequireDefault(__webpack_require__(199)); -} - -var _guessName; - -function _load_guessName() { - return _guessName = _interopRequireDefault(__webpack_require__(154)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function parseHash(fragment) { - var hashPosition = fragment.indexOf('#'); - return hashPosition === -1 ? '' : fragment.substr(hashPosition + 1); -} - -function explodeHostedGitFragment(fragment, reporter) { - var hash = parseHash(fragment); - - var preParts = fragment.split('@'); - if (preParts.length > 2) { - fragment = preParts[1] + '@' + preParts[2]; - } - - var parts = fragment.replace(/(.*?)#.*/, '$1') // Strip hash - .replace(/.*:(.*)/, '$1') // Strip prefixed protocols - .replace(/.git$/, '') // Strip the .git suffix - .split('/'); - - var user = parts[parts.length - 2]; - var repo = parts[parts.length - 1]; - - if (user === undefined || repo === undefined) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidHostedGitFragment', fragment)); - } - - return { - user, - repo, - hash - }; -} - -var HostedGitResolver = function (_ExoticResolver) { - (0, (_inherits2 || _load_inherits()).default)(HostedGitResolver, _ExoticResolver); - - function HostedGitResolver(request, fragment) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, HostedGitResolver); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _ExoticResolver.call(this, request, fragment)); - - var exploded = _this.exploded = explodeHostedGitFragment(fragment, _this.reporter); - var user = exploded.user, - repo = exploded.repo, - hash = exploded.hash; - - _this.user = user; - _this.repo = repo; - _this.hash = hash; - return _this; - } - - HostedGitResolver.getTarballUrl = function getTarballUrl(exploded, commit) { - exploded; - commit; - throw new Error('Not implemented'); - }; - - HostedGitResolver.getGitHTTPUrl = function getGitHTTPUrl(exploded) { - exploded; - throw new Error('Not implemented'); - }; - - HostedGitResolver.getGitHTTPBaseUrl = function getGitHTTPBaseUrl(exploded) { - exploded; - throw new Error('Not implemented'); - }; - - HostedGitResolver.getGitSSHUrl = function getGitSSHUrl(exploded) { - exploded; - throw new Error('Not implemented'); - }; - - HostedGitResolver.getHTTPFileUrl = function getHTTPFileUrl(exploded, filename, commit) { - exploded; - filename; - commit; - throw new Error('Not implemented'); - }; - - HostedGitResolver.prototype.getRefOverHTTP = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (url) { - var gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(url); - var client = new (_git || _load_git()).default(this.config, gitUrl, this.hash); - - var out = yield this.config.requestManager.request({ - url: `${url}/info/refs?service=git-upload-pack`, - queue: this.resolver.fetchingQueue - }); - - if (out) { - // clean up output - var lines = out.trim().split('\n'); - - // remove first two lines which contains compatibility info etc - lines = lines.slice(2); - - // remove last line which contains the terminator "0000" - lines.pop(); - - // remove line lengths from start of each line - lines = lines.map(function (line) { - return line.slice(4); - }); - - out = lines.join('\n'); - } else { - throw new Error(this.reporter.lang('hostedGitResolveError')); - } - - return client.setRefHosted(out); - }); - - function getRefOverHTTP(_x) { - return _ref.apply(this, arguments); - } - - return getRefOverHTTP; - }(); - - HostedGitResolver.prototype.resolveOverHTTP = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (url) { - var _this2 = this; - - var commit = yield this.getRefOverHTTP(url); - var config = this.config; - - - var tarballUrl = this.constructor.getTarballUrl(this.exploded, commit); - - var tryRegistry = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (registry) { - var filename = (_index || _load_index()).registries[registry].filename; - - var href = _this2.constructor.getHTTPFileUrl(_this2.exploded, filename, commit); - var file = yield config.requestManager.request({ - url: href, - queue: _this2.resolver.fetchingQueue - }); - if (!file) { - return null; - } - - var json = yield config.readJson(href, function () { - return JSON.parse(file); - }); - json._uid = commit; - json._remote = { - resolved: tarballUrl, - type: 'tarball', - reference: tarballUrl, - registry - }; - return json; - }); - - return function tryRegistry(_x3) { - return _ref3.apply(this, arguments); - }; - }(); - - var file = yield tryRegistry(this.registry); - if (file) { - return file; - } - - for (var registry in (_index || _load_index()).registries) { - if (registry === this.registry) { - continue; - } - - var _file = yield tryRegistry(registry); - if (_file) { - return _file; - } - } - - return { - name: (0, (_guessName || _load_guessName()).default)(url), - version: '0.0.0', - _uid: commit, - _remote: { - resolved: tarballUrl, - type: 'tarball', - reference: tarballUrl, - registry: 'npm', - hash: undefined - } - }; - }); - - function resolveOverHTTP(_x2) { - return _ref2.apply(this, arguments); - } - - return resolveOverHTTP; - }(); - - HostedGitResolver.prototype.hasHTTPCapability = function () { - var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (url) { - return (yield this.config.requestManager.request({ - url, - method: 'HEAD', - queue: this.resolver.fetchingQueue, - followRedirect: false - })) !== false; - }); - - function hasHTTPCapability(_x4) { - return _ref4.apply(this, arguments); - } - - return hasHTTPCapability; - }(); - - HostedGitResolver.prototype.resolve = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // If we already have the tarball, just return it without having to make any HTTP requests. - var shrunk = this.request.getLocked('tarball'); - if (shrunk) { - return shrunk; - } - - var httpUrl = this.constructor.getGitHTTPUrl(this.exploded); - var httpBaseUrl = this.constructor.getGitHTTPBaseUrl(this.exploded); - var sshUrl = this.constructor.getGitSSHUrl(this.exploded); - - // If we can access the files over HTTP then we should as it's MUCH faster than git - // archive and tarball unarchiving. The HTTP API is only available for public repos - // though. - if (yield this.hasHTTPCapability(httpBaseUrl)) { - return this.resolveOverHTTP(httpUrl); - } - - // If the url is accessible over git archive then we should immediately delegate to - // the git resolver. - // - // NOTE: Here we use a different url than when we delegate to the git resolver later on. - // This is because `git archive` requires access over ssh and github only allows that - // if you have write permissions - var sshGitUrl = (_git || _load_git()).default.npmUrlToGitUrl(sshUrl); - if (yield (_git || _load_git()).default.hasArchiveCapability(sshGitUrl)) { - var archiveClient = new (_git || _load_git()).default(this.config, sshGitUrl, this.hash); - var commit = yield archiveClient.init(); - return this.fork((_gitResolver || _load_gitResolver()).default, true, `${sshUrl}#${commit}`); - } - - // fallback to the plain git resolver - return this.fork((_gitResolver || _load_gitResolver()).default, true, sshUrl); - }); - - function resolve() { - return _ref5.apply(this, arguments); - } - - return resolve; - }(); - - return HostedGitResolver; -}((_exoticResolver || _load_exoticResolver()).default); - -exports.default = HostedGitResolver; - -/***/ }), -/* 97 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.home = undefined; - -var _rootUser; - -function _load_rootUser() { - return _rootUser = _interopRequireDefault(__webpack_require__(569)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var path = __webpack_require__(2); - -var home = exports.home = __webpack_require__(81).homedir(); - -var userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home; - -exports.default = userHomeDir; - -/***/ }), -/* 98 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(340); -var enumBugKeys = __webpack_require__(212); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 99 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(210); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 100 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(642)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(214)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 101 */ -/***/ (function(module, exports) { - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -/***/ }), -/* 102 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * micromatch - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var expand = __webpack_require__(792); -var utils = __webpack_require__(233); - -/** - * The main function. Pass an array of filepaths, - * and a string or array of glob patterns - * - * @param {Array|String} `files` - * @param {Array|String} `patterns` - * @param {Object} `opts` - * @return {Array} Array of matches - */ - -function micromatch(files, patterns, opts) { - if (!files || !patterns) return []; - opts = opts || {}; - - if (typeof opts.cache === 'undefined') { - opts.cache = true; - } - - if (!Array.isArray(patterns)) { - return match(files, patterns, opts); - } - - var len = patterns.length, i = 0; - var omit = [], keep = []; - - while (len--) { - var glob = patterns[i++]; - if (typeof glob === 'string' && glob.charCodeAt(0) === 33 /* ! */) { - omit.push.apply(omit, match(files, glob.slice(1), opts)); - } else { - keep.push.apply(keep, match(files, glob, opts)); - } - } - return utils.diff(keep, omit); -} - -/** - * Return an array of files that match the given glob pattern. - * - * This function is called by the main `micromatch` function If you only - * need to pass a single pattern you might get very minor speed improvements - * using this function. - * - * @param {Array} `files` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Array} - */ - -function match(files, pattern, opts) { - if (utils.typeOf(files) !== 'string' && !Array.isArray(files)) { - throw new Error(msg('match', 'files', 'a string or array')); - } - - files = utils.arrayify(files); - opts = opts || {}; - - var negate = opts.negate || false; - var orig = pattern; - - if (typeof pattern === 'string') { - negate = pattern.charAt(0) === '!'; - if (negate) { - pattern = pattern.slice(1); - } - - // we need to remove the character regardless, - // so the above logic is still needed - if (opts.nonegate === true) { - negate = false; - } - } - - var _isMatch = matcher(pattern, opts); - var len = files.length, i = 0; - var res = []; - - while (i < len) { - var file = files[i++]; - var fp = utils.unixify(file, opts); - - if (!_isMatch(fp)) { continue; } - res.push(fp); - } - - if (res.length === 0) { - if (opts.failglob === true) { - throw new Error('micromatch.match() found no matches for: "' + orig + '".'); - } - - if (opts.nonull || opts.nullglob) { - res.push(utils.unescapeGlob(orig)); - } - } - - // if `negate` was defined, diff negated files - if (negate) { res = utils.diff(files, res); } - - // if `ignore` was defined, diff ignored filed - if (opts.ignore && opts.ignore.length) { - pattern = opts.ignore; - opts = utils.omit(opts, ['ignore']); - res = utils.diff(res, micromatch(res, pattern, opts)); - } - - if (opts.nodupes) { - return utils.unique(res); - } - return res; -} - -/** - * Returns a function that takes a glob pattern or array of glob patterns - * to be used with `Array#filter()`. (Internally this function generates - * the matching function using the [matcher] method). - * - * ```js - * var fn = mm.filter('[a-c]'); - * ['a', 'b', 'c', 'd', 'e'].filter(fn); - * //=> ['a', 'b', 'c'] - * ``` - * @param {String|Array} `patterns` Can be a glob or array of globs. - * @param {Options} `opts` Options to pass to the [matcher] method. - * @return {Function} Filter function to be passed to `Array#filter()`. - */ - -function filter(patterns, opts) { - if (!Array.isArray(patterns) && typeof patterns !== 'string') { - throw new TypeError(msg('filter', 'patterns', 'a string or array')); - } - - patterns = utils.arrayify(patterns); - var len = patterns.length, i = 0; - var patternMatchers = Array(len); - while (i < len) { - patternMatchers[i] = matcher(patterns[i++], opts); - } - - return function(fp) { - if (fp == null) return []; - var len = patternMatchers.length, i = 0; - var res = true; - - fp = utils.unixify(fp, opts); - while (i < len) { - var fn = patternMatchers[i++]; - if (!fn(fp)) { - res = false; - break; - } - } - return res; - }; -} - -/** - * Returns true if the filepath contains the given - * pattern. Can also return a function for matching. - * - * ```js - * isMatch('foo.md', '*.md', {}); - * //=> true - * - * isMatch('*.md', {})('foo.md') - * //=> true - * ``` - * @param {String} `fp` - * @param {String} `pattern` - * @param {Object} `opts` - * @return {Boolean} - */ - -function isMatch(fp, pattern, opts) { - if (typeof fp !== 'string') { - throw new TypeError(msg('isMatch', 'filepath', 'a string')); - } - - fp = utils.unixify(fp, opts); - if (utils.typeOf(pattern) === 'object') { - return matcher(fp, pattern); - } - return matcher(pattern, opts)(fp); -} - -/** - * Returns true if the filepath matches the - * given pattern. - */ - -function contains(fp, pattern, opts) { - if (typeof fp !== 'string') { - throw new TypeError(msg('contains', 'pattern', 'a string')); - } - - opts = opts || {}; - opts.contains = (pattern !== ''); - fp = utils.unixify(fp, opts); - - if (opts.contains && !utils.isGlob(pattern)) { - return fp.indexOf(pattern) !== -1; - } - return matcher(pattern, opts)(fp); -} - -/** - * Returns true if a file path matches any of the - * given patterns. - * - * @param {String} `fp` The filepath to test. - * @param {String|Array} `patterns` Glob patterns to use. - * @param {Object} `opts` Options to pass to the `matcher()` function. - * @return {String} - */ - -function any(fp, patterns, opts) { - if (!Array.isArray(patterns) && typeof patterns !== 'string') { - throw new TypeError(msg('any', 'patterns', 'a string or array')); - } - - patterns = utils.arrayify(patterns); - var len = patterns.length; - - fp = utils.unixify(fp, opts); - while (len--) { - var isMatch = matcher(patterns[len], opts); - if (isMatch(fp)) { - return true; - } - } - return false; -} - -/** - * Filter the keys of an object with the given `glob` pattern - * and `options` - * - * @param {Object} `object` - * @param {Pattern} `object` - * @return {Array} - */ - -function matchKeys(obj, glob, options) { - if (utils.typeOf(obj) !== 'object') { - throw new TypeError(msg('matchKeys', 'first argument', 'an object')); - } - - var fn = matcher(glob, options); - var res = {}; - - for (var key in obj) { - if (obj.hasOwnProperty(key) && fn(key)) { - res[key] = obj[key]; - } - } - return res; -} - -/** - * Return a function for matching based on the - * given `pattern` and `options`. - * - * @param {String} `pattern` - * @param {Object} `options` - * @return {Function} - */ - -function matcher(pattern, opts) { - // pattern is a function - if (typeof pattern === 'function') { - return pattern; - } - // pattern is a regex - if (pattern instanceof RegExp) { - return function(fp) { - return pattern.test(fp); - }; - } - - if (typeof pattern !== 'string') { - throw new TypeError(msg('matcher', 'pattern', 'a string, regex, or function')); - } - - // strings, all the way down... - pattern = utils.unixify(pattern, opts); - - // pattern is a non-glob string - if (!utils.isGlob(pattern)) { - return utils.matchPath(pattern, opts); - } - // pattern is a glob string - var re = makeRe(pattern, opts); - - // `matchBase` is defined - if (opts && opts.matchBase) { - return utils.hasFilename(re, opts); - } - // `matchBase` is not defined - return function(fp) { - fp = utils.unixify(fp, opts); - return re.test(fp); - }; -} - -/** - * Create and cache a regular expression for matching - * file paths. - * - * If the leading character in the `glob` is `!`, a negation - * regex is returned. - * - * @param {String} `glob` - * @param {Object} `options` - * @return {RegExp} - */ - -function toRegex(glob, options) { - // clone options to prevent mutating the original object - var opts = Object.create(options || {}); - var flags = opts.flags || ''; - if (opts.nocase && flags.indexOf('i') === -1) { - flags += 'i'; - } - - var parsed = expand(glob, opts); - - // pass in tokens to avoid parsing more than once - opts.negated = opts.negated || parsed.negated; - opts.negate = opts.negated; - glob = wrapGlob(parsed.pattern, opts); - var re; - - try { - re = new RegExp(glob, flags); - return re; - } catch (err) { - err.reason = 'micromatch invalid regex: (' + re + ')'; - if (opts.strict) throw new SyntaxError(err); - } - - // we're only here if a bad pattern was used and the user - // passed `options.silent`, so match nothing - return /$^/; -} - -/** - * Create the regex to do the matching. If the leading - * character in the `glob` is `!` a negation regex is returned. - * - * @param {String} `glob` - * @param {Boolean} `negate` - */ - -function wrapGlob(glob, opts) { - var prefix = (opts && !opts.contains) ? '^' : ''; - var after = (opts && !opts.contains) ? '$' : ''; - glob = ('(?:' + glob + ')' + after); - if (opts && opts.negate) { - return prefix + ('(?!^' + glob + ').*$'); - } - return prefix + glob; -} - -/** - * Create and cache a regular expression for matching file paths. - * If the leading character in the `glob` is `!`, a negation - * regex is returned. - * - * @param {String} `glob` - * @param {Object} `options` - * @return {RegExp} - */ - -function makeRe(glob, opts) { - if (utils.typeOf(glob) !== 'string') { - throw new Error(msg('makeRe', 'glob', 'a string')); - } - return utils.cache(toRegex, glob, opts); -} - -/** - * Make error messages consistent. Follows this format: - * - * ```js - * msg(methodName, argNumber, nativeType); - * // example: - * msg('matchKeys', 'first', 'an object'); - * ``` - * - * @param {String} `method` - * @param {String} `num` - * @param {String} `type` - * @return {String} - */ - -function msg(method, what, type) { - return 'micromatch.' + method + '(): ' + what + ' should be ' + type + '.'; -} - -/** - * Public methods - */ - -/* eslint no-multi-spaces: 0 */ -micromatch.any = any; -micromatch.braces = micromatch.braceExpand = utils.braces; -micromatch.contains = contains; -micromatch.expand = expand; -micromatch.filter = filter; -micromatch.isMatch = isMatch; -micromatch.makeRe = makeRe; -micromatch.match = match; -micromatch.matcher = matcher; -micromatch.matchKeys = matchKeys; - -/** - * Expose `micromatch` - */ - -module.exports = micromatch; - - -/***/ }), -/* 103 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - - - -/**/ - -var pna = __webpack_require__(164); -/**/ - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var util = __webpack_require__(101); -util.inherits = __webpack_require__(76); -/**/ - -var Readable = __webpack_require__(370); -var Writable = __webpack_require__(372); - -util.inherits(Duplex, Readable); - -{ - // avoid scope creep, the keys array can then be collected - var keys = objectKeys(Writable.prototype); - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - pna.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); - - pna.nextTick(cb, err); -}; - -/***/ }), -/* 104 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = multicast; -/* unused harmony export MulticastOperator */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_ConnectableObservable__ = __webpack_require__(387); -/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ - -function multicast(subjectOrSubjectFactory, selector) { - return function multicastOperatorFunction(source) { - var subjectFactory; - if (typeof subjectOrSubjectFactory === 'function') { - subjectFactory = subjectOrSubjectFactory; - } - else { - subjectFactory = function subjectFactory() { - return subjectOrSubjectFactory; - }; - } - if (typeof selector === 'function') { - return source.lift(new MulticastOperator(subjectFactory, selector)); - } - var connectable = Object.create(source, __WEBPACK_IMPORTED_MODULE_0__observable_ConnectableObservable__["b" /* connectableObservableDescriptor */]); - connectable.source = source; - connectable.subjectFactory = subjectFactory; - return connectable; - }; -} -var MulticastOperator = /*@__PURE__*/ (function () { - function MulticastOperator(subjectFactory, selector) { - this.subjectFactory = subjectFactory; - this.selector = selector; - } - MulticastOperator.prototype.call = function (subscriber, source) { - var selector = this.selector; - var subject = this.subjectFactory(); - var subscription = selector(subject).subscribe(subscriber); - subscription.add(source.subscribe(subject)); - return subscription; - }; - return MulticastOperator; -}()); - -//# sourceMappingURL=multicast.js.map - - -/***/ }), -/* 105 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observable; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var observable = typeof Symbol === 'function' && Symbol.observable || '@@observable'; -//# sourceMappingURL=observable.js.map - - -/***/ }), -/* 106 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = identity; -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function identity(x) { - return x; -} -//# sourceMappingURL=identity.js.map - - -/***/ }), -/* 107 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const Buffer = __webpack_require__(58).Buffer - -const crypto = __webpack_require__(21) -const Transform = __webpack_require__(34).Transform - -const SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512'] - -const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i -const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/ -const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/ -const VCHAR_REGEX = /^[\x21-\x7E]+$/ - -class Hash { - get isHash () { return true } - constructor (hash, opts) { - const strict = !!(opts && opts.strict) - this.source = hash.trim() - // 3.1. Integrity metadata (called "Hash" by ssri) - // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description - const match = this.source.match( - strict - ? STRICT_SRI_REGEX - : SRI_REGEX - ) - if (!match) { return } - if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return } - this.algorithm = match[1] - this.digest = match[2] - - const rawOpts = match[3] - this.options = rawOpts ? rawOpts.slice(1).split('?') : [] - } - hexDigest () { - return this.digest && Buffer.from(this.digest, 'base64').toString('hex') - } - toJSON () { - return this.toString() - } - toString (opts) { - if (opts && opts.strict) { - // Strict mode enforces the standard as close to the foot of the - // letter as it can. - if (!( - // The spec has very restricted productions for algorithms. - // https://www.w3.org/TR/CSP2/#source-list-syntax - SPEC_ALGORITHMS.some(x => x === this.algorithm) && - // Usually, if someone insists on using a "different" base64, we - // leave it as-is, since there's multiple standards, and the - // specified is not a URL-safe variant. - // https://www.w3.org/TR/CSP2/#base64_value - this.digest.match(BASE64_REGEX) && - // Option syntax is strictly visual chars. - // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression - // https://tools.ietf.org/html/rfc5234#appendix-B.1 - (this.options || []).every(opt => opt.match(VCHAR_REGEX)) - )) { - return '' - } - } - const options = this.options && this.options.length - ? `?${this.options.join('?')}` - : '' - return `${this.algorithm}-${this.digest}${options}` - } -} - -class Integrity { - get isIntegrity () { return true } - toJSON () { - return this.toString() - } - toString (opts) { - opts = opts || {} - let sep = opts.sep || ' ' - if (opts.strict) { - // Entries must be separated by whitespace, according to spec. - sep = sep.replace(/\S+/g, ' ') - } - return Object.keys(this).map(k => { - return this[k].map(hash => { - return Hash.prototype.toString.call(hash, opts) - }).filter(x => x.length).join(sep) - }).filter(x => x.length).join(sep) - } - concat (integrity, opts) { - const other = typeof integrity === 'string' - ? integrity - : stringify(integrity, opts) - return parse(`${this.toString(opts)} ${other}`, opts) - } - hexDigest () { - return parse(this, {single: true}).hexDigest() - } - match (integrity, opts) { - const other = parse(integrity, opts) - const algo = other.pickAlgorithm(opts) - return ( - this[algo] && - other[algo] && - this[algo].find(hash => - other[algo].find(otherhash => - hash.digest === otherhash.digest - ) - ) - ) || false - } - pickAlgorithm (opts) { - const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash - const keys = Object.keys(this) - if (!keys.length) { - throw new Error(`No algorithms available for ${ - JSON.stringify(this.toString()) - }`) - } - return keys.reduce((acc, algo) => { - return pickAlgorithm(acc, algo) || acc - }) - } -} - -module.exports.parse = parse -function parse (sri, opts) { - opts = opts || {} - if (typeof sri === 'string') { - return _parse(sri, opts) - } else if (sri.algorithm && sri.digest) { - const fullSri = new Integrity() - fullSri[sri.algorithm] = [sri] - return _parse(stringify(fullSri, opts), opts) - } else { - return _parse(stringify(sri, opts), opts) - } -} - -function _parse (integrity, opts) { - // 3.4.3. Parse metadata - // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata - if (opts.single) { - return new Hash(integrity, opts) - } - return integrity.trim().split(/\s+/).reduce((acc, string) => { - const hash = new Hash(string, opts) - if (hash.algorithm && hash.digest) { - const algo = hash.algorithm - if (!acc[algo]) { acc[algo] = [] } - acc[algo].push(hash) - } - return acc - }, new Integrity()) -} - -module.exports.stringify = stringify -function stringify (obj, opts) { - if (obj.algorithm && obj.digest) { - return Hash.prototype.toString.call(obj, opts) - } else if (typeof obj === 'string') { - return stringify(parse(obj, opts), opts) - } else { - return Integrity.prototype.toString.call(obj, opts) - } -} - -module.exports.fromHex = fromHex -function fromHex (hexDigest, algorithm, opts) { - const optString = (opts && opts.options && opts.options.length) - ? `?${opts.options.join('?')}` - : '' - return parse( - `${algorithm}-${ - Buffer.from(hexDigest, 'hex').toString('base64') - }${optString}`, opts - ) -} - -module.exports.fromData = fromData -function fromData (data, opts) { - opts = opts || {} - const algorithms = opts.algorithms || ['sha512'] - const optString = opts.options && opts.options.length - ? `?${opts.options.join('?')}` - : '' - return algorithms.reduce((acc, algo) => { - const digest = crypto.createHash(algo).update(data).digest('base64') - const hash = new Hash( - `${algo}-${digest}${optString}`, - opts - ) - if (hash.algorithm && hash.digest) { - const algo = hash.algorithm - if (!acc[algo]) { acc[algo] = [] } - acc[algo].push(hash) - } - return acc - }, new Integrity()) -} - -module.exports.fromStream = fromStream -function fromStream (stream, opts) { - opts = opts || {} - const P = opts.Promise || Promise - const istream = integrityStream(opts) - return new P((resolve, reject) => { - stream.pipe(istream) - stream.on('error', reject) - istream.on('error', reject) - let sri - istream.on('integrity', s => { sri = s }) - istream.on('end', () => resolve(sri)) - istream.on('data', () => {}) - }) -} - -module.exports.checkData = checkData -function checkData (data, sri, opts) { - opts = opts || {} - sri = parse(sri, opts) - if (!Object.keys(sri).length) { - if (opts.error) { - throw Object.assign( - new Error('No valid integrity hashes to check against'), { - code: 'EINTEGRITY' - } - ) - } else { - return false - } - } - const algorithm = sri.pickAlgorithm(opts) - const digest = crypto.createHash(algorithm).update(data).digest('base64') - const newSri = parse({algorithm, digest}) - const match = newSri.match(sri, opts) - if (match || !opts.error) { - return match - } else if (typeof opts.size === 'number' && (data.length !== opts.size)) { - const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`) - err.code = 'EBADSIZE' - err.found = data.length - err.expected = opts.size - err.sri = sri - throw err - } else { - const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`) - err.code = 'EINTEGRITY' - err.found = newSri - err.expected = sri - err.algorithm = algorithm - err.sri = sri - throw err - } -} - -module.exports.checkStream = checkStream -function checkStream (stream, sri, opts) { - opts = opts || {} - const P = opts.Promise || Promise - const checker = integrityStream(Object.assign({}, opts, { - integrity: sri - })) - return new P((resolve, reject) => { - stream.pipe(checker) - stream.on('error', reject) - checker.on('error', reject) - let sri - checker.on('verified', s => { sri = s }) - checker.on('end', () => resolve(sri)) - checker.on('data', () => {}) - }) -} - -module.exports.integrityStream = integrityStream -function integrityStream (opts) { - opts = opts || {} - // For verification - const sri = opts.integrity && parse(opts.integrity, opts) - const goodSri = sri && Object.keys(sri).length - const algorithm = goodSri && sri.pickAlgorithm(opts) - const digests = goodSri && sri[algorithm] - // Calculating stream - const algorithms = Array.from( - new Set( - (opts.algorithms || ['sha512']) - .concat(algorithm ? [algorithm] : []) - ) - ) - const hashes = algorithms.map(crypto.createHash) - let streamSize = 0 - const stream = new Transform({ - transform (chunk, enc, cb) { - streamSize += chunk.length - hashes.forEach(h => h.update(chunk, enc)) - cb(null, chunk, enc) - } - }).on('end', () => { - const optString = (opts.options && opts.options.length) - ? `?${opts.options.join('?')}` - : '' - const newSri = parse(hashes.map((h, i) => { - return `${algorithms[i]}-${h.digest('base64')}${optString}` - }).join(' '), opts) - // Integrity verification mode - const match = goodSri && newSri.match(sri, opts) - if (typeof opts.size === 'number' && streamSize !== opts.size) { - const err = new Error(`stream size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${streamSize}`) - err.code = 'EBADSIZE' - err.found = streamSize - err.expected = opts.size - err.sri = sri - stream.emit('error', err) - } else if (opts.integrity && !match) { - const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`) - err.code = 'EINTEGRITY' - err.found = newSri - err.expected = digests - err.algorithm = algorithm - err.sri = sri - stream.emit('error', err) - } else { - stream.emit('size', streamSize) - stream.emit('integrity', newSri) - match && stream.emit('verified', match) - } - }) - return stream -} - -module.exports.create = createIntegrity -function createIntegrity (opts) { - opts = opts || {} - const algorithms = opts.algorithms || ['sha512'] - const optString = opts.options && opts.options.length - ? `?${opts.options.join('?')}` - : '' - - const hashes = algorithms.map(crypto.createHash) - - return { - update: function (chunk, enc) { - hashes.forEach(h => h.update(chunk, enc)) - return this - }, - digest: function (enc) { - const integrity = algorithms.reduce((acc, algo) => { - const digest = hashes.shift().digest('base64') - const hash = new Hash( - `${algo}-${digest}${optString}`, - opts - ) - if (hash.algorithm && hash.digest) { - const algo = hash.algorithm - if (!acc[algo]) { acc[algo] = [] } - acc[algo].push(hash) - } - return acc - }, new Integrity()) - - return integrity - } - } -} - -const NODE_HASHES = new Set(crypto.getHashes()) - -// This is a Best Effort™ at a reasonable priority for hash algos -const DEFAULT_PRIORITY = [ - 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', - // TODO - it's unclear _which_ of these Node will actually use as its name - // for the algorithm, so we guesswork it based on the OpenSSL names. - 'sha3', - 'sha3-256', 'sha3-384', 'sha3-512', - 'sha3_256', 'sha3_384', 'sha3_512' -].filter(algo => NODE_HASHES.has(algo)) - -function getPrioritizedHash (algo1, algo2) { - return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase()) - ? algo1 - : algo2 -} - - -/***/ }), -/* 108 */ -/***/ (function(module, exports, __webpack_require__) { - -var v1 = __webpack_require__(998); -var v4 = __webpack_require__(999); - -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; - -module.exports = uuid; - - -/***/ }), -/* 109 */ -/***/ (function(module, exports) { - -module.exports = require("buffer"); - -/***/ }), -/* 110 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getInstallationMethod = exports.version = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var getInstallationMethod = exports.getInstallationMethod = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var installationMethod = originalInstallationMethod; - - // If there's a package.json in the parent directory, it could have an - // override for the installation method, so we should prefer that over - // whatever was originally in Yarn's package.json. This is the case with - // systems such as Homebrew, which take the tarball and modify the - // installation method so we're aware of the fact that Yarn was installed via - // Homebrew (so things like update notifications can point out the correct - // command to upgrade). - try { - var manifestPath = (_path || _load_path()).default.join(__dirname, '..', 'package.json'); - if ((_fs2 || _load_fs2()).default.existsSync(manifestPath)) { - // non-async version is deprecated - var manifest = yield (0, (_fs || _load_fs()).readJson)(manifestPath); - if (manifest.installationMethod) { - installationMethod = manifest.installationMethod; - } - } - } catch (e) { - // Ignore any errors; this is not critical functionality. - } - return installationMethod; - }); - - return function getInstallationMethod() { - return _ref.apply(this, arguments); - }; -}(); - -var _fs; - -function _load_fs() { - return _fs = __webpack_require__(8); -} - -var _fs2; - -function _load_fs2() { - return _fs2 = _interopRequireDefault(__webpack_require__(12)); -} - -var _path; - -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(2)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// This will be bundled directly in the .js file for production builds -var _require = __webpack_require__(432), - version = _require.version, - originalInstallationMethod = _require.installationMethod; /** - * Determines the current version of Yarn itself. - * - */ - -exports.version = version; - -/***/ }), -/* 111 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.run = exports.getBinFolder = undefined; - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var updateCwd = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { - yield (_fs || _load_fs()).mkdirp(config.globalFolder); - - yield config.init({ - cwd: config.globalFolder, - binLinks: true, - globalFolder: config.globalFolder, - cacheFolder: config._cacheRootFolder, - linkFolder: config.linkFolder, - enableDefaultRc: config.enableDefaultRc, - extraneousYarnrcFiles: config.extraneousYarnrcFiles - }); - }); - - return function updateCwd(_x) { - return _ref2.apply(this, arguments); - }; -}(); - -var getBins = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { - // build up list of registry folders to search for binaries - var dirs = []; - for (var _iterator2 = (0, (_keys || _load_keys()).default)((_index || _load_index()).registries), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref4; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref4 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref4 = _i2.value; - } - - var registryName = _ref4; - - var registry = config.registries[registryName]; - dirs.push(registry.loc); - } - - // build up list of binary files - var paths = new (_set || _load_set()).default(); - for (var _iterator3 = dirs, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref5; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref5 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref5 = _i3.value; - } - - var dir = _ref5; - - var binDir = path.join(dir, '.bin'); - if (!(yield (_fs || _load_fs()).exists(binDir))) { - continue; - } - - for (var _iterator4 = yield (_fs || _load_fs()).readdir(binDir), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - var name = _ref6; - - paths.add(path.join(binDir, name)); - } - } - return paths; - }); - - return function getBins(_x2) { - return _ref3.apply(this, arguments); - }; -}(); - -var getGlobalPrefix = function () { - var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) { - if (flags.prefix) { - return flags.prefix; - } else if (config.getOption('prefix', true)) { - return String(config.getOption('prefix', true)); - } else if (process.env.PREFIX) { - return process.env.PREFIX; - } - - var potentialPrefixFolders = [(_constants || _load_constants()).FALLBACK_GLOBAL_PREFIX]; - if (process.platform === 'win32') { - // %LOCALAPPDATA%\Yarn --> C:\Users\Alice\AppData\Local\Yarn - if (process.env.LOCALAPPDATA) { - potentialPrefixFolders.unshift(path.join(process.env.LOCALAPPDATA, 'Yarn')); - } - } else { - potentialPrefixFolders.unshift((_constants || _load_constants()).POSIX_GLOBAL_PREFIX); - } - - var binFolders = potentialPrefixFolders.map(function (prefix) { - return path.join(prefix, 'bin'); - }); - var prefixFolderQueryResult = yield (_fs || _load_fs()).getFirstSuitableFolder(binFolders); - var prefix = prefixFolderQueryResult.folder && path.dirname(prefixFolderQueryResult.folder); - - if (!prefix) { - config.reporter.warn(config.reporter.lang('noGlobalFolder', prefixFolderQueryResult.skipped.map(function (item) { - return path.dirname(item.folder); - }).join(', '))); - - return (_constants || _load_constants()).FALLBACK_GLOBAL_PREFIX; - } - - return prefix; - }); - - return function getGlobalPrefix(_x3, _x4) { - return _ref7.apply(this, arguments); - }; -}(); - -var getBinFolder = exports.getBinFolder = function () { - var _ref8 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) { - var prefix = yield getGlobalPrefix(config, flags); - return path.resolve(prefix, 'bin'); - }); - - return function getBinFolder(_x5, _x6) { - return _ref8.apply(this, arguments); - }; -}(); - -var initUpdateBins = function () { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags) { - var beforeBins = yield getBins(config); - var binFolder = yield getBinFolder(config, flags); - - function throwPermError(err, dest) { - if (err.code === 'EACCES') { - throw new (_errors || _load_errors()).MessageError(reporter.lang('noPermission', dest)); - } else { - throw err; - } - } - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - try { - yield (_fs || _load_fs()).mkdirp(binFolder); - } catch (err) { - throwPermError(err, binFolder); - } - - var afterBins = yield getBins(config); - - // remove old bins - for (var _iterator5 = beforeBins, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref11; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref11 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref11 = _i5.value; - } - - var src = _ref11; - - if (afterBins.has(src)) { - // not old - continue; - } - - // remove old bin - var dest = path.join(binFolder, path.basename(src)); - try { - yield (_fs || _load_fs()).unlink(dest); - } catch (err) { - throwPermError(err, dest); - } - } - - // add new bins - for (var _iterator6 = afterBins, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref12; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref12 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref12 = _i6.value; - } - - var _src = _ref12; - - // insert new bin - var dest = path.join(binFolder, path.basename(_src)); - try { - yield (_fs || _load_fs()).unlink(dest); - yield (0, (_packageLinker || _load_packageLinker()).linkBin)(_src, dest); - if (process.platform === 'win32' && dest.indexOf('.cmd') !== -1) { - yield (_fs || _load_fs()).rename(dest + '.cmd', dest); - } - } catch (err) { - throwPermError(err, dest); - } - } - }); - }); - - return function initUpdateBins(_x7, _x8, _x9) { - return _ref9.apply(this, arguments); - }; -}(); - -var list = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - yield updateCwd(config); - - // install so we get hard file paths - var lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd); - var install = new (_install || _load_install()).Install({}, config, new (_baseReporter || _load_baseReporter()).default(), lockfile); - var patterns = yield install.getFlattenedDeps(); - - // dump global modules - for (var _iterator7 = patterns, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator7);;) { - var _ref14; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref14 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref14 = _i7.value; - } - - var pattern = _ref14; - - var manifest = install.resolver.getStrictResolvedPattern(pattern); - ls(manifest, reporter, false); - } - }); - - return function list(_x10, _x11, _x12, _x13) { - return _ref13.apply(this, arguments); - }; -}(); - -exports.hasWrapper = hasWrapper; -exports.setFlags = setFlags; - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _index; - -function _load_index() { - return _index = __webpack_require__(59); -} - -var _baseReporter; - -function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(95)); -} - -var _buildSubCommands2; - -function _load_buildSubCommands() { - return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(61)); -} - -var _lockfile; - -function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(24)); -} - -var _install; - -function _load_install() { - return _install = __webpack_require__(40); -} - -var _add; - -function _load_add() { - return _add = __webpack_require__(149); -} - -var _remove; - -function _load_remove() { - return _remove = __webpack_require__(293); -} - -var _upgrade; - -function _load_upgrade() { - return _upgrade = __webpack_require__(189); -} - -var _upgradeInteractive; - -function _load_upgradeInteractive() { - return _upgradeInteractive = __webpack_require__(296); -} - -var _packageLinker; - -function _load_packageLinker() { - return _packageLinker = __webpack_require__(192); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(14); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -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 }; } - -var GlobalAdd = function (_Add) { - (0, (_inherits2 || _load_inherits()).default)(GlobalAdd, _Add); - - function GlobalAdd(args, flags, config, reporter, lockfile) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, GlobalAdd); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _Add.call(this, args, flags, config, reporter, lockfile)); - - _this.linker.setTopLevelBinLinking(false); - return _this; - } - - GlobalAdd.prototype.maybeOutputSaveTree = function maybeOutputSaveTree() { - for (var _iterator = this.addedPatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var pattern = _ref; - - var manifest = this.resolver.getStrictResolvedPattern(pattern); - ls(manifest, this.reporter, true); - } - return (_promise || _load_promise()).default.resolve(); - }; - - GlobalAdd.prototype._logSuccessSaveLockfile = function _logSuccessSaveLockfile() { - // noop - }; - - return GlobalAdd; -}((_add || _load_add()).Add); - -var path = __webpack_require__(2); - -function hasWrapper(flags, args) { - return args[0] !== 'bin' && args[0] !== 'dir'; -} - -function ls(manifest, reporter, saved) { - var bins = manifest.bin ? (0, (_keys || _load_keys()).default)(manifest.bin) : []; - var human = `${manifest.name}@${manifest.version}`; - if (bins.length) { - if (saved) { - reporter.success(reporter.lang('packageInstalledWithBinaries', human)); - } else { - reporter.info(reporter.lang('packageHasBinaries', human)); - } - reporter.list(`bins-${manifest.name}`, bins); - } else if (saved) { - reporter.warn(reporter.lang('packageHasNoBinaries', human)); - } -} - -var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('global', { - add(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - yield updateCwd(config); - - var updateBins = yield initUpdateBins(config, reporter, flags); - if (args.indexOf('yarn') !== -1) { - reporter.warn(reporter.lang('packageContainsYarnAsGlobal')); - } - - // install module - var lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd); - var install = new GlobalAdd(args, flags, config, reporter, lockfile); - yield install.init(); - - // link binaries - yield updateBins(); - })(); - }, - - bin(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - reporter.log((yield getBinFolder(config, flags)), { force: true }); - })(); - }, - - dir(config, reporter, flags, args) { - reporter.log(config.globalFolder, { force: true }); - return (_promise || _load_promise()).default.resolve(); - }, - - ls(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - reporter.warn(`\`yarn global ls\` is deprecated. Please use \`yarn global list\`.`); - yield list(config, reporter, flags, args); - })(); - }, - - list(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - yield list(config, reporter, flags, args); - })(); - }, - - remove(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - yield updateCwd(config); - - var updateBins = yield initUpdateBins(config, reporter, flags); - - // remove module - yield (0, (_remove || _load_remove()).run)(config, reporter, flags, args); - - // remove binaries - yield updateBins(); - })(); - }, - - upgrade(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - yield updateCwd(config); - - var updateBins = yield initUpdateBins(config, reporter, flags); - - // upgrade module - yield (0, (_upgrade || _load_upgrade()).run)(config, reporter, flags, args); - - // update binaries - yield updateBins(); - })(); - }, - - upgradeInteractive(config, reporter, flags, args) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - yield updateCwd(config); - - var updateBins = yield initUpdateBins(config, reporter, flags); - - // upgrade module - yield (0, (_upgradeInteractive || _load_upgradeInteractive()).run)(config, reporter, flags, args); - - // update binaries - yield updateBins(); - })(); - } -}), - run = _buildSubCommands.run, - _setFlags = _buildSubCommands.setFlags; - -exports.run = run; -function setFlags(commander) { - _setFlags(commander); - commander.description('Installs packages globally on your operating system.'); - commander.option('--prefix ', 'bin prefix to use to install binaries'); - commander.option('--latest', 'upgrade to the latest version of packages'); -} - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _assign; - -function _load_assign() { - return _assign = _interopRequireDefault(__webpack_require__(23)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _path; - -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(2)); -} - -var _invariant; - -function _load_invariant() { - return _invariant = _interopRequireDefault(__webpack_require__(13)); -} - -var _semver; - -function _load_semver() { - return _semver = _interopRequireDefault(__webpack_require__(26)); -} - -var _validate; - -function _load_validate() { - return _validate = __webpack_require__(116); -} - -var _lockfile; - -function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(24)); -} - -var _packageReference; - -function _load_packageReference() { - return _packageReference = _interopRequireDefault(__webpack_require__(301)); -} - -var _index; - -function _load_index() { - return _index = __webpack_require__(62); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); -} - -var _version; - -function _load_version() { - return _version = _interopRequireWildcard(__webpack_require__(204)); -} - -var _workspaceResolver; - -function _load_workspaceResolver() { - return _workspaceResolver = _interopRequireDefault(__webpack_require__(549)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _normalizePattern4; - -function _load_normalizePattern() { - return _normalizePattern4 = __webpack_require__(51); -} - -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 }; } - -var micromatch = __webpack_require__(102); - -var PackageRequest = function () { - function PackageRequest(req, resolver) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, PackageRequest); - - this.parentRequest = req.parentRequest; - this.parentNames = req.parentNames || []; - this.lockfile = resolver.lockfile; - this.registry = req.registry; - this.reporter = resolver.reporter; - this.resolver = resolver; - this.optional = req.optional; - this.hint = req.hint; - this.pattern = req.pattern; - this.config = resolver.config; - this.foundInfo = null; - } - - PackageRequest.prototype.init = function init() { - this.resolver.usedRegistries.add(this.registry); - }; - - PackageRequest.prototype.getLocked = function getLocked(remoteType) { - // always prioritise root lockfile - var shrunk = this.lockfile.getLocked(this.pattern); - - if (shrunk && shrunk.resolved) { - var resolvedParts = (_version || _load_version()).explodeHashedUrl(shrunk.resolved); - - // Detect Git protocols (git://HOST/PATH or git+PROTOCOL://HOST/PATH) - var preferredRemoteType = /^git(\+[a-z0-9]+)?:\/\//.test(resolvedParts.url) ? 'git' : remoteType; - - return { - name: shrunk.name, - version: shrunk.version, - _uid: shrunk.uid, - _remote: { - resolved: shrunk.resolved, - type: preferredRemoteType, - reference: resolvedParts.url, - hash: resolvedParts.hash, - integrity: shrunk.integrity, - registry: shrunk.registry, - packageName: shrunk.name - }, - optionalDependencies: shrunk.optionalDependencies || {}, - dependencies: shrunk.dependencies || {}, - prebuiltVariants: shrunk.prebuiltVariants || {} - }; - } else { - return null; - } - }; - - /** - * If the input pattern matches a registry one then attempt to find it on the registry. - * Otherwise fork off to an exotic resolver if one matches. - */ - - PackageRequest.prototype.findVersionOnRegistry = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pattern) { - var _ref2 = yield this.normalize(pattern), - range = _ref2.range, - name = _ref2.name; - - var exoticResolver = (0, (_index || _load_index()).getExoticResolver)(range); - if (exoticResolver) { - var data = yield this.findExoticVersionInfo(exoticResolver, range); - - // clone data as we're manipulating it in place and this could be resolved multiple - // times - data = (0, (_assign || _load_assign()).default)({}, data); - - // this is so the returned package response uses the overridden name. ie. if the - // package's actual name is `bar`, but it's been specified in the manifest like: - // "foo": "http://foo.com/bar.tar.gz" - // then we use the foo name - data.name = name; - return data; - } - - var Resolver = this.getRegistryResolver(); - var resolver = new Resolver(this, name, range); - try { - return yield resolver.resolve(); - } catch (err) { - // if it is not an error thrown by yarn and it has a parent request, - // thow a more readable error - if (!(err instanceof (_errors || _load_errors()).MessageError) && this.parentRequest && this.parentRequest.pattern) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('requiredPackageNotFoundRegistry', pattern, this.parentRequest.pattern, this.registry)); - } - throw err; - } - }); - - function findVersionOnRegistry(_x) { - return _ref.apply(this, arguments); - } - - return findVersionOnRegistry; - }(); - - /** - * Get the registry resolver associated with this package request. - */ - - PackageRequest.prototype.getRegistryResolver = function getRegistryResolver() { - var Resolver = (_index || _load_index()).registries[this.registry]; - if (Resolver) { - return Resolver; - } else { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('unknownRegistryResolver', this.registry)); - } - }; - - PackageRequest.prototype.normalizeRange = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pattern) { - if (pattern.indexOf(':') > -1 || pattern.indexOf('@') > -1 || (0, (_index || _load_index()).getExoticResolver)(pattern)) { - return pattern; - } - - if (!(_semver || _load_semver()).default.validRange(pattern)) { - try { - if (yield (_fs || _load_fs()).exists((_path || _load_path()).default.join(this.config.cwd, pattern, (_constants || _load_constants()).NODE_PACKAGE_JSON))) { - this.reporter.warn(this.reporter.lang('implicitFileDeprecated', pattern)); - return `file:${pattern}`; - } - } catch (err) { - // pass - } - } - - return pattern; - }); - - function normalizeRange(_x2) { - return _ref3.apply(this, arguments); - } - - return normalizeRange; - }(); - - PackageRequest.prototype.normalize = function () { - var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pattern) { - var _normalizePattern = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern), - name = _normalizePattern.name, - range = _normalizePattern.range, - hasVersion = _normalizePattern.hasVersion; - - var newRange = yield this.normalizeRange(range); - return { name, range: newRange, hasVersion }; - }); - - function normalize(_x3) { - return _ref4.apply(this, arguments); - } - - return normalize; - }(); - - /** - * Construct an exotic resolver instance with the input `ExoticResolver` and `range`. - */ - - PackageRequest.prototype.findExoticVersionInfo = function findExoticVersionInfo(ExoticResolver, range) { - var resolver = new ExoticResolver(this, range); - return resolver.resolve(); - }; - - /** - * If the current pattern matches an exotic resolver then delegate to it or else try - * the registry. - */ - - PackageRequest.prototype.findVersionInfo = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var exoticResolver = (0, (_index || _load_index()).getExoticResolver)(this.pattern); - if (exoticResolver) { - return this.findExoticVersionInfo(exoticResolver, this.pattern); - } else if ((_workspaceResolver || _load_workspaceResolver()).default.isWorkspace(this.pattern, this.resolver.workspaceLayout)) { - (0, (_invariant || _load_invariant()).default)(this.resolver.workspaceLayout, 'expected workspaceLayout'); - var resolver = new (_workspaceResolver || _load_workspaceResolver()).default(this, this.pattern, this.resolver.workspaceLayout); - var manifest = void 0; - if (this.config.focus && !(this.pattern.indexOf(this.resolver.workspaceLayout.virtualManifestName) !== -1) && !this.pattern.startsWith(this.config.focusedWorkspaceName + '@')) { - var localInfo = this.resolver.workspaceLayout.getManifestByPattern(this.pattern); - (0, (_invariant || _load_invariant()).default)(localInfo, 'expected local info for ' + this.pattern); - var localManifest = localInfo.manifest; - var requestPattern = localManifest.name + '@' + localManifest.version; - manifest = yield this.findVersionOnRegistry(requestPattern); - } - return resolver.resolve(manifest); - } else { - return this.findVersionOnRegistry(this.pattern); - } - }); - - function findVersionInfo() { - return _ref5.apply(this, arguments); - } - - return findVersionInfo; - }(); - - PackageRequest.prototype.reportResolvedRangeMatch = function reportResolvedRangeMatch(info, resolved) {}; - - /** - * Do the final resolve of a package that had a match with an existing version. - * After all unique versions have been discovered, so the best available version - * is found. - */ - - - PackageRequest.prototype.resolveToExistingVersion = function resolveToExistingVersion(info) { - // get final resolved version - var _normalizePattern2 = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(this.pattern), - range = _normalizePattern2.range, - name = _normalizePattern2.name; - - var solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range; - var resolved = this.resolver.getHighestRangeVersionMatch(name, solvedRange, info); - (0, (_invariant || _load_invariant()).default)(resolved, 'should have a resolved reference'); - - this.reportResolvedRangeMatch(info, resolved); - var ref = resolved._reference; - (0, (_invariant || _load_invariant()).default)(ref, 'Resolved package info has no package reference'); - ref.addRequest(this); - ref.addPattern(this.pattern, resolved); - ref.addOptional(this.optional); - }; - - /** - * TODO description - */ - - - PackageRequest.prototype.find = function () { - var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (_ref7) { - var fresh = _ref7.fresh, - frozen = _ref7.frozen; - - // find version info for this package pattern - var info = yield this.findVersionInfo(); - - if (!(_semver || _load_semver()).default.valid(info.version)) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('invalidPackageVersion', info.name, info.version)); - } - - info.fresh = fresh; - (0, (_validate || _load_validate()).cleanDependencies)(info, false, this.reporter, function () { - // swallow warnings - }); - - // check if while we were resolving this dep we've already resolved one that satisfies - // the same range - - var _normalizePattern3 = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(this.pattern), - range = _normalizePattern3.range, - name = _normalizePattern3.name; - - var solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range; - var resolved = !info.fresh || frozen ? this.resolver.getExactVersionMatch(name, solvedRange, info) : this.resolver.getHighestRangeVersionMatch(name, solvedRange, info); - - if (resolved) { - this.resolver.reportPackageWithExistingVersion(this, info); - return; - } - - if (info.flat && !this.resolver.flat) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('flatGlobalError', `${info.name}@${info.version}`)); - } - - // validate version info - PackageRequest.validateVersionInfo(info, this.reporter); - - // - var remote = info._remote; - (0, (_invariant || _load_invariant()).default)(remote, 'Missing remote'); - - // set package reference - var ref = new (_packageReference || _load_packageReference()).default(this, info, remote); - ref.addPattern(this.pattern, info); - ref.addOptional(this.optional); - ref.setFresh(fresh); - info._reference = ref; - info._remote = remote; - // start installation of dependencies - var promises = []; - var deps = []; - var parentNames = [].concat(this.parentNames, [name]); - // normal deps - for (var depName in info.dependencies) { - var depPattern = depName + '@' + info.dependencies[depName]; - deps.push(depPattern); - promises.push(this.resolver.find({ - pattern: depPattern, - registry: remote.registry, - // dependencies of optional dependencies should themselves be optional - optional: this.optional, - parentRequest: this, - parentNames - })); - } - - // optional deps - for (var _depName in info.optionalDependencies) { - var _depPattern = _depName + '@' + info.optionalDependencies[_depName]; - deps.push(_depPattern); - promises.push(this.resolver.find({ - hint: 'optional', - pattern: _depPattern, - registry: remote.registry, - optional: true, - parentRequest: this, - parentNames - })); - } - if (remote.type === 'workspace' && !this.config.production) { - // workspaces support dev dependencies - for (var _depName2 in info.devDependencies) { - var _depPattern2 = _depName2 + '@' + info.devDependencies[_depName2]; - deps.push(_depPattern2); - promises.push(this.resolver.find({ - hint: 'dev', - pattern: _depPattern2, - registry: remote.registry, - optional: false, - parentRequest: this, - parentNames - })); - } - } - - for (var _iterator = promises, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref8; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref8 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref8 = _i.value; - } - - var promise = _ref8; - - yield promise; - } - - ref.addDependencies(deps); - - // Now that we have all dependencies, it's safe to propagate optional - for (var _iterator2 = ref.requests.slice(1), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref9; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref9 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref9 = _i2.value; - } - - var otherRequest = _ref9; - - ref.addOptional(otherRequest.optional); - } - }); - - function find(_x4) { - return _ref6.apply(this, arguments); - } - - return find; - }(); - - /** - * TODO description - */ - - PackageRequest.validateVersionInfo = function validateVersionInfo(info, reporter) { - // human readable name to use in errors - var human = `${info.name}@${info.version}`; - - info.version = PackageRequest.getPackageVersion(info); - - for (var _iterator3 = (_constants || _load_constants()).REQUIRED_PACKAGE_KEYS, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref10; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref10 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref10 = _i3.value; - } - - var key = _ref10; - - if (!info[key]) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('missingRequiredPackageKey', human, key)); - } - } - }; - - /** - * Returns the package version if present, else defaults to the uid - */ - - PackageRequest.getPackageVersion = function getPackageVersion(info) { - // TODO possibly reconsider this behaviour - return info.version === undefined ? info._uid : info.version; - }; - - /** - * Gets all of the outdated packages and sorts them appropriately - */ - - PackageRequest.getOutdatedPackages = function () { - var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (lockfile, install, config, reporter, filterByPatterns, flags) { - var _ref12 = yield install.fetchRequestFromCwd(), - reqPatterns = _ref12.requests, - workspaceLayout = _ref12.workspaceLayout; - - // Filter out workspace patterns if necessary - - - var depReqPatterns = workspaceLayout ? reqPatterns.filter(function (p) { - return !workspaceLayout.getManifestByPattern(p.pattern); - }) : reqPatterns; - - // filter the list down to just the packages requested. - // prevents us from having to query the metadata for all packages. - if (filterByPatterns && filterByPatterns.length || flags && flags.pattern) { - var filterByNames = filterByPatterns && filterByPatterns.length ? filterByPatterns.map(function (pattern) { - return (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern).name; - }) : []; - depReqPatterns = depReqPatterns.filter(function (dep) { - return filterByNames.indexOf((0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(dep.pattern).name) >= 0 || flags && flags.pattern && micromatch.contains((0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(dep.pattern).name, flags.pattern); - }); - } - - var deps = yield (_promise || _load_promise()).default.all(depReqPatterns.map(function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (_ref14) { - var pattern = _ref14.pattern, - hint = _ref14.hint, - workspaceName = _ref14.workspaceName, - workspaceLoc = _ref14.workspaceLoc; - - var locked = lockfile.getLocked(pattern); - if (!locked) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('lockfileOutdated')); - } - - var name = locked.name, - current = locked.version; - - var latest = ''; - var wanted = ''; - var url = ''; - - var normalized = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern); - - if ((0, (_index || _load_index()).getExoticResolver)(pattern) || (0, (_index || _load_index()).getExoticResolver)(normalized.range)) { - latest = wanted = 'exotic'; - url = normalized.range; - } else { - var registry = config.registries[locked.registry]; - - var _ref15 = yield registry.checkOutdated(config, name, normalized.range); - - latest = _ref15.latest; - wanted = _ref15.wanted; - url = _ref15.url; - } - - return { - name, - current, - wanted, - latest, - url, - hint, - range: normalized.range, - upgradeTo: '', - workspaceName: workspaceName || '', - workspaceLoc: workspaceLoc || '' - }; - }); - - return function (_x11) { - return _ref13.apply(this, arguments); - }; - }())); - - // Make sure to always output `exotic` versions to be compatible with npm - var isDepOld = function isDepOld(_ref16) { - var current = _ref16.current, - latest = _ref16.latest, - wanted = _ref16.wanted; - return latest === 'exotic' || (_semver || _load_semver()).default.lt(current, wanted) || (_semver || _load_semver()).default.lt(current, latest); - }; - var orderByName = function orderByName(depA, depB) { - return depA.name.localeCompare(depB.name); - }; - return deps.filter(isDepOld).sort(orderByName); - }); - - function getOutdatedPackages(_x5, _x6, _x7, _x8, _x9, _x10) { - return _ref11.apply(this, arguments); - } - - return getOutdatedPackages; - }(); - - return PackageRequest; -}(); - -exports.default = PackageRequest; - -/***/ }), -/* 113 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var BaseResolver = function () { - function BaseResolver(request, fragment) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, BaseResolver); - - this.resolver = request.resolver; - this.reporter = request.reporter; - this.fragment = fragment; - this.registry = request.registry; - this.request = request; - this.pattern = request.pattern; - this.config = request.config; - } - - BaseResolver.prototype.fork = function fork(Resolver, resolveArg) { - for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { - args[_key - 2] = arguments[_key]; - } - - var resolver = new (Function.prototype.bind.apply(Resolver, [null].concat([this.request], args)))(); - resolver.registry = this.registry; - return resolver.resolve(resolveArg); - }; - - BaseResolver.prototype.resolve = function resolve(resolveArg) { - throw new Error('Not implemented'); - }; - - return BaseResolver; -}(); - -exports.default = BaseResolver; - -/***/ }), -/* 114 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var _index; - -function _load_index() { - return _index = __webpack_require__(62); -} - -var _misc; - -function _load_misc() { - return _misc = _interopRequireWildcard(__webpack_require__(27)); -} - -var _version; - -function _load_version() { - return _version = _interopRequireWildcard(__webpack_require__(204)); -} - -var _guessName; - -function _load_guessName() { - return _guessName = _interopRequireDefault(__webpack_require__(154)); -} - -var _index2; - -function _load_index2() { - return _index2 = __webpack_require__(59); -} - -var _exoticResolver; - -function _load_exoticResolver() { - return _exoticResolver = _interopRequireDefault(__webpack_require__(84)); -} - -var _git; - -function _load_git() { - return _git = _interopRequireDefault(__webpack_require__(199)); -} - -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 }; } - -var urlParse = __webpack_require__(29).parse; - -var GIT_HOSTS = ['github.com', 'gitlab.com', 'bitbucket.com', 'bitbucket.org']; - -var GIT_PATTERN_MATCHERS = [/^git:/, /^git\+.+:/, /^ssh:/, /^https?:.+\.git$/, /^https?:.+\.git#.+/]; - -var GitResolver = function (_ExoticResolver) { - (0, (_inherits2 || _load_inherits()).default)(GitResolver, _ExoticResolver); - - function GitResolver(request, fragment) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, GitResolver); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _ExoticResolver.call(this, request, fragment)); - - var _versionUtil$explodeH = (_version || _load_version()).explodeHashedUrl(fragment), - url = _versionUtil$explodeH.url, - hash = _versionUtil$explodeH.hash; - - _this.url = url; - _this.hash = hash; - return _this; - } - - GitResolver.isVersion = function isVersion(pattern) { - for (var _iterator = GIT_PATTERN_MATCHERS, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var matcher = _ref; - - if (matcher.test(pattern)) { - return true; - } - } - - var _urlParse = urlParse(pattern), - hostname = _urlParse.hostname, - path = _urlParse.path; - - if (hostname && path && GIT_HOSTS.indexOf(hostname) >= 0) { - // only if dependency is pointing to a git repo, - // e.g. facebook/flow and not file in a git repo facebook/flow/archive/v1.0.0.tar.gz - return path.split('/').filter(function (p) { - return !!p; - }).length === 2; - } - - return false; - }; - - GitResolver.prototype.resolve = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (forked) { - var tryRegistry = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (registry) { - var filename = (_index2 || _load_index2()).registries[registry].filename; - - var file = yield client.getFile(filename); - if (!file) { - return null; - } - - var json = yield config.readJson(`${url}/${filename}`, function () { - return JSON.parse(file); - }); - json._uid = commit; - json._remote = { - resolved: `${url}#${commit}`, - type: 'git', - reference: url, - hash: commit, - registry - }; - return json; - }); - - return function tryRegistry(_x2) { - return _ref3.apply(this, arguments); - }; - }(); - - var url = this.url; - - // shortcut for hosted git. we will fallback to a GitResolver if the hosted git - // optimisations fail which the `forked` flag indicates so we don't get into an - // infinite loop - - var parts = urlParse(url); - if (false) { - // check if this git url uses any of the hostnames defined in our hosted git resolvers - for (var name in (_index || _load_index()).hostedGit) { - var Resolver = (_index || _load_index()).hostedGit[name]; - if (Resolver.hostname !== parts.hostname) { - continue; - } - - // we have a match! clean up the pathname of url artifacts - var pathname = parts.pathname; - pathname = (_misc || _load_misc()).removePrefix(pathname, '/'); // remove prefixed slash - pathname = (_misc || _load_misc()).removeSuffix(pathname, '.git'); // remove .git suffix if present - - var _url = `${pathname}${this.hash ? '#' + decodeURIComponent(this.hash) : ''}`; - return this.fork(Resolver, false, _url); - } - } - - // get from lockfile - var shrunk = this.request.getLocked('git'); - if (shrunk) { - return shrunk; - } - - var config = this.config; - - - var gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(url); - var client = new (_git || _load_git()).default(config, gitUrl, this.hash); - var commit = yield client.init(); - - var file = yield tryRegistry(this.registry); - if (file) { - return file; - } - - for (var registry in (_index2 || _load_index2()).registries) { - if (registry === this.registry) { - continue; - } - - var _file = yield tryRegistry(registry); - if (_file) { - return _file; - } - } - - return { - // This is just the default, it can be overridden with key of dependencies - name: (0, (_guessName || _load_guessName()).default)(url), - version: '0.0.0', - _uid: commit, - _remote: { - resolved: `${url}#${commit}`, - type: 'git', - reference: url, - hash: commit, - registry: 'npm' - } - }; - }); - - function resolve(_x) { - return _ref2.apply(this, arguments); - } - - return resolve; - }(); - - return GitResolver; -}((_exoticResolver || _load_exoticResolver()).default); - -exports.default = GitResolver; - -/***/ }), -/* 115 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.execCommand = exports.execFromManifest = exports.executeLifecycleScript = exports.makeEnv = exports.getWrappersFolder = exports.IGNORE_MANIFEST_KEYS = undefined; - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _from; - -function _load_from() { - return _from = _interopRequireDefault(__webpack_require__(52)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} - -var _assign; - -function _load_assign() { - return _assign = _interopRequireDefault(__webpack_require__(23)); -} - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var getWrappersFolder = exports.getWrappersFolder = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { - if (wrappersFolder) { - return wrappersFolder; - } - - wrappersFolder = yield (_fs || _load_fs()).makeTempDir(); - - yield (0, (_portableScript || _load_portableScript()).makePortableProxyScript)(process.execPath, wrappersFolder, { - proxyBasename: 'node' - }); - - yield (0, (_portableScript || _load_portableScript()).makePortableProxyScript)(process.execPath, wrappersFolder, { - proxyBasename: 'yarn', - prependArguments: [process.argv[1]] - }); - - return wrappersFolder; - }); - - return function getWrappersFolder(_x) { - return _ref.apply(this, arguments); - }; -}(); - -var makeEnv = exports.makeEnv = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (stage, cwd, config) { - var env = (0, (_extends2 || _load_extends()).default)({ - NODE: process.execPath, - INIT_CWD: process.cwd() - }, process.env); - - // Merge in the `env` object specified in .yarnrc - var customEnv = config.getOption('env'); - if (customEnv && typeof customEnv === 'object') { - (0, (_assign || _load_assign()).default)(env, customEnv); - } - - env.npm_lifecycle_event = stage; - env.npm_node_execpath = env.NODE; - env.npm_execpath = env.npm_execpath || process.mainModule && process.mainModule.filename; - - // Set the env to production for npm compat if production mode. - // https://github.com/npm/npm/blob/30d75e738b9cb7a6a3f9b50e971adcbe63458ed3/lib/utils/lifecycle.js#L336 - if (config.production) { - env.NODE_ENV = 'production'; - } - - // Note: npm_config_argv environment variable contains output of nopt - command-line - // parser used by npm. Since we use other parser, we just roughly emulate it's output. (See: #684) - env.npm_config_argv = (0, (_stringify || _load_stringify()).default)({ - remain: [], - cooked: config.commandName === 'run' ? [config.commandName, stage] : [config.commandName], - original: process.argv.slice(2) - }); - - var manifest = yield config.maybeReadManifest(cwd); - if (manifest) { - if (manifest.scripts && Object.prototype.hasOwnProperty.call(manifest.scripts, stage)) { - env.npm_lifecycle_script = manifest.scripts[stage]; - } - - // add npm_package_* - var queue = [['', manifest]]; - while (queue.length) { - var _queue$pop = queue.pop(), - _key = _queue$pop[0], - val = _queue$pop[1]; - - if (typeof val === 'object') { - for (var subKey in val) { - var fullKey = [_key, subKey].filter(Boolean).join('_'); - if (fullKey && fullKey[0] !== '_' && !IGNORE_MANIFEST_KEYS.has(fullKey)) { - queue.push([fullKey, val[subKey]]); - } - } - } else { - var cleanVal = String(val); - if (cleanVal.indexOf('\n') >= 0) { - cleanVal = (0, (_stringify || _load_stringify()).default)(cleanVal); - } - - //replacing invalid chars with underscore - var cleanKey = _key.replace(INVALID_CHAR_REGEX, '_'); - - env[`npm_package_${cleanKey}`] = cleanVal; - } - } - } - - // add npm_config_* and npm_package_config_* from yarn config - var keys = new (_set || _load_set()).default([].concat((0, (_keys || _load_keys()).default)(config.registries.yarn.config), (0, (_keys || _load_keys()).default)(config.registries.npm.config))); - var cleaned = (0, (_from || _load_from()).default)(keys).filter(function (key) { - return !key.match(/:_/) && IGNORE_CONFIG_KEYS.indexOf(key) === -1; - }).map(function (key) { - var val = config.getOption(key); - if (!val) { - val = ''; - } else if (typeof val === 'number') { - val = '' + val; - } else if (typeof val !== 'string') { - val = (0, (_stringify || _load_stringify()).default)(val); - } - - if (val.indexOf('\n') >= 0) { - val = (0, (_stringify || _load_stringify()).default)(val); - } - return [key, val]; - }); - // add npm_config_* - for (var _iterator = cleaned, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref4; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref4 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref4 = _i.value; - } - - var _ref3 = _ref4; - var _key2 = _ref3[0]; - var _val = _ref3[1]; - - var _cleanKey = _key2.replace(/^_+/, ''); - var envKey = `npm_config_${_cleanKey}`.replace(INVALID_CHAR_REGEX, '_'); - env[envKey] = _val; - } - // add npm_package_config_* - if (manifest && manifest.name) { - var packageConfigPrefix = `${manifest.name}:`; - for (var _iterator2 = cleaned, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref6; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref6 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref6 = _i2.value; - } - - var _ref5 = _ref6; - var _key3 = _ref5[0]; - var _val2 = _ref5[1]; - - if (_key3.indexOf(packageConfigPrefix) !== 0) { - continue; - } - var _cleanKey2 = _key3.replace(/^_+/, '').replace(packageConfigPrefix, ''); - var envKey = `npm_package_config_${_cleanKey2}`.replace(INVALID_CHAR_REGEX, '_'); - env[envKey] = _val2; - } - } - - // split up the path - var envPath = env[(_constants || _load_constants()).ENV_PATH_KEY]; - var pathParts = envPath ? envPath.split(path.delimiter) : []; - - // Include the directory that contains node so that we can guarantee that the scripts - // will always run with the exact same Node release than the one use to run Yarn - var execBin = path.dirname(process.execPath); - if (pathParts.indexOf(execBin) === -1) { - pathParts.unshift(execBin); - } - - // Include node-gyp version that was bundled with the current Node.js version, - // if available. - pathParts.unshift(path.join(path.dirname(process.execPath), 'node_modules', 'npm', 'bin', 'node-gyp-bin')); - pathParts.unshift(path.join(path.dirname(process.execPath), '..', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin')); - // Include node-gyp version from homebrew managed npm, if available. - pathParts.unshift(path.join(path.dirname(process.execPath), '..', 'libexec', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin')); - - // Add global bin folder if it is not present already, as some packages depend - // on a globally-installed version of node-gyp. - var globalBin = yield (0, (_global || _load_global()).getBinFolder)(config, {}); - if (pathParts.indexOf(globalBin) === -1) { - pathParts.unshift(globalBin); - } - - // Add node_modules .bin folders to the PATH - for (var _iterator3 = (0, (_keys || _load_keys()).default)((_index || _load_index()).registries), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref7; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref7 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref7 = _i3.value; - } - - var registry = _ref7; - - var binFolder = path.join(config.registries[registry].folder, '.bin'); - if (config.workspacesEnabled && config.workspaceRootFolder) { - pathParts.unshift(path.join(config.workspaceRootFolder, binFolder)); - } - pathParts.unshift(path.join(config.linkFolder, binFolder)); - pathParts.unshift(path.join(cwd, binFolder)); - if (config.modulesFolder) { - pathParts.unshift(path.join(config.modulesFolder, '.bin')); - } - } - - var pnpFile = void 0; - - if (process.versions.pnp) { - pnpFile = (_dynamicRequire || _load_dynamicRequire()).dynamicRequire.resolve('pnpapi'); - } else { - var candidate = `${config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`; - if (yield (_fs || _load_fs()).exists(candidate)) { - pnpFile = candidate; - } - } - - if (pnpFile) { - var pnpApi = (0, (_dynamicRequire || _load_dynamicRequire()).dynamicRequire)(pnpFile); - - var packageLocator = pnpApi.findPackageLocator(`${cwd}/`); - var packageInformation = pnpApi.getPackageInformation(packageLocator); - - for (var _iterator4 = packageInformation.packageDependencies.entries(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref9; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref9 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref9 = _i4.value; - } - - var _ref8 = _ref9; - var name = _ref8[0]; - var reference = _ref8[1]; - - var dependencyInformation = pnpApi.getPackageInformation({ name, reference }); - - if (!dependencyInformation || !dependencyInformation.packageLocation) { - continue; - } - - var binFolder = `${dependencyInformation.packageLocation}/.bin`; - if (yield (_fs || _load_fs()).exists(binFolder)) { - pathParts.unshift(binFolder); - } - } - - // Note that NODE_OPTIONS doesn't support any style of quoting its arguments at the moment - // For this reason, it won't work if the user has a space inside its $PATH - env.NODE_OPTIONS = env.NODE_OPTIONS || ''; - env.NODE_OPTIONS += ` --require ${pnpFile}`; - } - - pathParts.unshift((yield getWrappersFolder(config))); - - // join path back together - env[(_constants || _load_constants()).ENV_PATH_KEY] = pathParts.join(path.delimiter); - - return env; - }); - - return function makeEnv(_x2, _x3, _x4) { - return _ref2.apply(this, arguments); - }; -}(); - -var executeLifecycleScript = exports.executeLifecycleScript = function () { - var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (_ref11) { - var stage = _ref11.stage, - config = _ref11.config, - cwd = _ref11.cwd, - cmd = _ref11.cmd, - isInteractive = _ref11.isInteractive, - onProgress = _ref11.onProgress, - customShell = _ref11.customShell; - - var env = yield makeEnv(stage, cwd, config); - - yield checkForGypIfNeeded(config, cmd, env[(_constants || _load_constants()).ENV_PATH_KEY].split(path.delimiter)); - - if (process.platform === 'win32' && (!customShell || customShell === 'cmd')) { - // handle windows run scripts starting with a relative path - cmd = (0, (_fixCmdWinSlashes || _load_fixCmdWinSlashes()).fixCmdWinSlashes)(cmd); - } - - // By default (non-interactive), pipe everything to the terminal and run child process detached - // as long as it's not Windows (since windows does not have /dev/tty) - var stdio = ['ignore', 'pipe', 'pipe']; - var detached = process.platform !== 'win32'; - - if (isInteractive) { - stdio = 'inherit'; - detached = false; - } - - var shell = customShell || true; - var stdout = yield (_child || _load_child()).spawn(cmd, [], { cwd, env, stdio, detached, shell }, onProgress); - - return { cwd, command: cmd, stdout }; - }); - - return function executeLifecycleScript(_x5) { - return _ref10.apply(this, arguments); - }; -}(); - -var _checkForGyp = function () { - var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, paths) { - var reporter = config.reporter; - - // Check every directory in the PATH - - var allChecks = yield (_promise || _load_promise()).default.all(paths.map(function (dir) { - return (_fs || _load_fs()).exists(path.join(dir, 'node-gyp')); - })); - if (allChecks.some(Boolean)) { - // node-gyp is available somewhere - return; - } - - reporter.info(reporter.lang('packageRequiresNodeGyp')); - - try { - yield (0, (_global || _load_global()).run)(config, reporter, {}, ['add', 'node-gyp']); - } catch (e) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('nodeGypAutoInstallFailed', e.message)); - } - }); - - return function _checkForGyp(_x6, _x7) { - return _ref12.apply(this, arguments); - }; -}(); - -var execFromManifest = exports.execFromManifest = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, commandName, cwd) { - var pkg = yield config.maybeReadManifest(cwd); - if (!pkg || !pkg.scripts) { - return; - } - - var cmd = pkg.scripts[commandName]; - if (cmd) { - yield execCommand({ stage: commandName, config, cmd, cwd, isInteractive: true }); - } - }); - - return function execFromManifest(_x8, _x9, _x10) { - return _ref13.apply(this, arguments); - }; -}(); - -var execCommand = exports.execCommand = function () { - var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (_ref15) { - var stage = _ref15.stage, - config = _ref15.config, - cmd = _ref15.cmd, - cwd = _ref15.cwd, - isInteractive = _ref15.isInteractive, - customShell = _ref15.customShell; - var reporter = config.reporter; - - try { - reporter.command(cmd); - yield executeLifecycleScript({ stage, config, cwd, cmd, isInteractive, customShell }); - return (_promise || _load_promise()).default.resolve(); - } catch (err) { - if (err instanceof (_errors || _load_errors()).ProcessTermError) { - throw new (_errors || _load_errors()).MessageError(err.EXIT_SIGNAL ? reporter.lang('commandFailedWithSignal', err.EXIT_SIGNAL) : reporter.lang('commandFailedWithCode', err.EXIT_CODE)); - } else { - throw err; - } - } - }); - - return function execCommand(_x11) { - return _ref14.apply(this, arguments); - }; -}(); - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); -} - -var _child; - -function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(60)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _dynamicRequire; - -function _load_dynamicRequire() { - return _dynamicRequire = __webpack_require__(310); -} - -var _portableScript; - -function _load_portableScript() { - return _portableScript = __webpack_require__(316); -} - -var _index; - -function _load_index() { - return _index = __webpack_require__(62); -} - -var _fixCmdWinSlashes; - -function _load_fixCmdWinSlashes() { - return _fixCmdWinSlashes = __webpack_require__(556); -} - -var _global; - -function _load_global() { - return _global = __webpack_require__(111); -} - -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 }; } - -var path = __webpack_require__(2); - -var IGNORE_MANIFEST_KEYS = exports.IGNORE_MANIFEST_KEYS = new (_set || _load_set()).default(['readme', 'notice', 'licenseText']); - -// We treat these configs as internal, thus not expose them to process.env. -// This helps us avoid some gyp issues when building native modules. -// See https://github.com/yarnpkg/yarn/issues/2286. -var IGNORE_CONFIG_KEYS = ['lastUpdateCheck']; - -var wrappersFolder = null; - -var INVALID_CHAR_REGEX = /\W/g; - -exports.default = executeLifecycleScript; - - -var checkGypPromise = null; -/** - * Special case: Some packages depend on node-gyp, but don't specify this in - * their package.json dependencies. They assume that node-gyp is available - * globally. We need to detect this case and show an error message. - */ -function checkForGypIfNeeded(config, cmd, paths) { - if (cmd.substr(0, cmd.indexOf(' ')) !== 'node-gyp') { - return (_promise || _load_promise()).default.resolve(); - } - - // Ensure this only runs once, rather than multiple times in parallel. - if (!checkGypPromise) { - checkGypPromise = _checkForGyp(config, paths); - } - return checkGypPromise; -} - -/***/ }), -/* 116 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(41)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -exports.isValidPackageName = isValidPackageName; - -exports.default = function (info, isRoot, reporter, warn) { - if (isRoot) { - for (var key in (_typos || _load_typos()).default) { - if (key in info) { - warn(reporter.lang('manifestPotentialTypo', key, (_typos || _load_typos()).default[key])); - } - } - } - - // validate name - var name = info.name; - - if (typeof name === 'string') { - if (isRoot && isBuiltinModule(name)) { - warn(reporter.lang('manifestBuiltinModule', name)); - } - - // cannot start with a dot - if (name[0] === '.') { - throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameDot')); - } - - // cannot contain the following characters - if (!isValidPackageName(name)) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameIllegalChars')); - } - - // cannot equal node_modules or favicon.ico - var lower = name.toLowerCase(); - if (lower === 'node_modules' || lower === 'favicon.ico') { - throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameBlacklisted')); - } - } - - // validate license - if (isRoot && !info.private) { - if (typeof info.license === 'string') { - var license = info.license.replace(/\*$/g, ''); - if (!(0, (_util || _load_util()).isValidLicense)(license)) { - warn(reporter.lang('manifestLicenseInvalid')); - } - } else { - warn(reporter.lang('manifestLicenseNone')); - } - } - - // validate strings - for (var _iterator = strings, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var _key = _ref; - - var val = info[_key]; - if (val && typeof val !== 'string') { - throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestStringExpected', _key)); - } - } - - cleanDependencies(info, isRoot, reporter, warn); -}; - -exports.cleanDependencies = cleanDependencies; - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _util; - -function _load_util() { - return _util = __webpack_require__(201); -} - -var _typos; - -function _load_typos() { - return _typos = _interopRequireDefault(__webpack_require__(566)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var isBuiltinModule = __webpack_require__(767); - -var strings = ['name', 'version']; - -var dependencyKeys = [ -// npm registry will include optionalDependencies in dependencies and we'll want to dedupe them from the -// other fields first -'optionalDependencies', - -// it's seemingly common to include a dependency in dependencies and devDependencies of the same name but -// different ranges, this can cause a lot of issues with our determinism and the behaviour of npm is -// currently unspecified. -'dependencies', 'devDependencies']; - -function isValidName(name) { - return !name.match(/[\/@\s\+%:]/) && encodeURIComponent(name) === name; -} - -function isValidScopedName(name) { - if (name[0] !== '@') { - return false; - } - - var parts = name.slice(1).split('/'); - return parts.length === 2 && isValidName(parts[0]) && isValidName(parts[1]); -} - -function isValidPackageName(name) { - return isValidName(name) || isValidScopedName(name); -} - -function cleanDependencies(info, isRoot, reporter, warn) { - // get dependency objects - var depTypes = []; - for (var _iterator2 = dependencyKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var _type = _ref2; - - var deps = info[_type]; - if (!deps || typeof deps !== 'object') { - continue; - } - depTypes.push([_type, deps]); - } - - // aggregate all non-trivial deps (not '' or '*') - var nonTrivialDeps = new (_map || _load_map()).default(); - for (var _iterator3 = depTypes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref4; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } - - var _ref3 = _ref4; - var _type2 = _ref3[0]; - var deps = _ref3[1]; - - for (var _iterator5 = (0, (_keys || _load_keys()).default)(deps), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref7; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref7 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref7 = _i5.value; - } - - var name = _ref7; - - var _version = deps[name]; - if (!nonTrivialDeps.has(name) && _version && _version !== '*') { - nonTrivialDeps.set(name, { type: _type2, version: _version }); - } - } - } - - // overwrite first dep of package with non-trivial version, remove the rest - var setDeps = new (_set || _load_set()).default(); - for (var _iterator4 = depTypes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - var _ref5 = _ref6; - var _type3 = _ref5[0]; - var _deps = _ref5[1]; - - for (var _iterator6 = (0, (_keys || _load_keys()).default)(_deps), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref8; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref8 = _i6.value; - } - - var _name = _ref8; - - var _version2 = _deps[_name]; - - var dep = nonTrivialDeps.get(_name); - if (dep) { - if (_version2 && _version2 !== '*' && _version2 !== dep.version && isRoot) { - // only throw a warning when at the root - warn(reporter.lang('manifestDependencyCollision', dep.type, _name, dep.version, _type3, _version2)); - } - _version2 = dep.version; - } - - if (setDeps.has(_name)) { - delete _deps[_name]; - } else { - _deps[_name] = _version2; - setDeps.add(_name); - } - } - } -} - -/***/ }), -/* 117 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 118 */ -/***/ (function(module, exports, __webpack_require__) { - -var ctx = __webpack_require__(67); -var call = __webpack_require__(334); -var isArrayIter = __webpack_require__(332); -var anObject = __webpack_require__(56); -var toLength = __webpack_require__(155); -var getIterFn = __webpack_require__(226); -var BREAK = {}; -var RETURN = {}; -var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { - var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); - var f = ctx(fn, that, entries ? 2 : 1); - var index = 0; - var length, step, iterator, result; - if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); - // fast case for arrays with default iterator - if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { - result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); - if (result === BREAK || result === RETURN) return result; - } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { - result = call(iterator, f, step.value, entries); - if (result === BREAK || result === RETURN) return result; - } -}; -exports.BREAK = BREAK; -exports.RETURN = RETURN; - - -/***/ }), -/* 119 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 120 */ -/***/ (function(module, exports) { - -module.exports = true; - - -/***/ }), -/* 121 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(56); -var dPs = __webpack_require__(638); -var enumBugKeys = __webpack_require__(212); -var IE_PROTO = __webpack_require__(219)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(211)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(329).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 122 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 123 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 124 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(63).f; -var has = __webpack_require__(88); -var TAG = __webpack_require__(43)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 125 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(647); -var global = __webpack_require__(36); -var hide = __webpack_require__(75); -var Iterators = __webpack_require__(119); -var TO_STRING_TAG = __webpack_require__(43)('toStringTag'); - -var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + - 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + - 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + - 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + - 'TextTrackList,TouchList').split(','); - -for (var i = 0; i < DOMIterables.length; i++) { - var NAME = DOMIterables[i]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - - -/***/ }), -/* 126 */ -/***/ (function(module, exports, __webpack_require__) { - -// Basic Javascript Elliptic Curve implementation -// Ported loosely from BouncyCastle's Java EC code -// Only Fp curves implemented for now - -// Requires jsbn.js and jsbn2.js -var BigInteger = __webpack_require__(77).BigInteger -var Barrett = BigInteger.prototype.Barrett - -// ---------------- -// ECFieldElementFp - -// constructor -function ECFieldElementFp(q,x) { - this.x = x; - // TODO if(x.compareTo(q) >= 0) error - this.q = q; -} - -function feFpEquals(other) { - if(other == this) return true; - return (this.q.equals(other.q) && this.x.equals(other.x)); -} - -function feFpToBigInteger() { - return this.x; -} - -function feFpNegate() { - return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); -} - -function feFpAdd(b) { - return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); -} - -function feFpSubtract(b) { - return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); -} - -function feFpMultiply(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); -} - -function feFpSquare() { - return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); -} - -function feFpDivide(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); -} - -ECFieldElementFp.prototype.equals = feFpEquals; -ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; -ECFieldElementFp.prototype.negate = feFpNegate; -ECFieldElementFp.prototype.add = feFpAdd; -ECFieldElementFp.prototype.subtract = feFpSubtract; -ECFieldElementFp.prototype.multiply = feFpMultiply; -ECFieldElementFp.prototype.square = feFpSquare; -ECFieldElementFp.prototype.divide = feFpDivide; - -// ---------------- -// ECPointFp - -// constructor -function ECPointFp(curve,x,y,z) { - this.curve = curve; - this.x = x; - this.y = y; - // Projective coordinates: either zinv == null or z * zinv == 1 - // z and zinv are just BigIntegers, not fieldElements - if(z == null) { - this.z = BigInteger.ONE; - } - else { - this.z = z; - } - this.zinv = null; - //TODO: compression flag -} - -function pointFpGetX() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.x.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpGetY() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.y.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpEquals(other) { - if(other == this) return true; - if(this.isInfinity()) return other.isInfinity(); - if(other.isInfinity()) return this.isInfinity(); - var u, v; - // u = Y2 * Z1 - Y1 * Z2 - u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); - if(!u.equals(BigInteger.ZERO)) return false; - // v = X2 * Z1 - X1 * Z2 - v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); - return v.equals(BigInteger.ZERO); -} - -function pointFpIsInfinity() { - if((this.x == null) && (this.y == null)) return true; - return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); -} - -function pointFpNegate() { - return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); -} - -function pointFpAdd(b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - // u = Y2 * Z1 - Y1 * Z2 - var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); - // v = X2 * Z1 - X1 * Z2 - var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); - - if(BigInteger.ZERO.equals(v)) { - if(BigInteger.ZERO.equals(u)) { - return this.twice(); // this == b, so double - } - return this.curve.getInfinity(); // this = -b, so infinity - } - - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - var x2 = b.x.toBigInteger(); - var y2 = b.y.toBigInteger(); - - var v2 = v.square(); - var v3 = v2.multiply(v); - var x1v2 = x1.multiply(v2); - var zu2 = u.square().multiply(this.z); - - // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) - var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); - // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 - var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); - // z3 = v^3 * z1 * z2 - var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -function pointFpTwice() { - if(this.isInfinity()) return this; - if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); - - // TODO: optimized handling of constants - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - - var y1z1 = y1.multiply(this.z); - var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); - var a = this.curve.a.toBigInteger(); - - // w = 3 * x1^2 + a * z1^2 - var w = x1.square().multiply(THREE); - if(!BigInteger.ZERO.equals(a)) { - w = w.add(this.z.square().multiply(a)); - } - w = w.mod(this.curve.q); - //this.curve.reduce(w); - // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) - var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); - // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 - var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); - // z3 = 8 * (y1 * z1)^3 - var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -// Simple NAF (Non-Adjacent Form) multiplication algorithm -// TODO: modularize the multiplication algorithm -function pointFpMultiply(k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for(i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add(hBit ? this : neg); - } - } - - return R; -} - -// Compute this*j + x*k (simultaneous multiplication) -function pointFpMultiplyTwo(j,x,k) { - var i; - if(j.bitLength() > k.bitLength()) - i = j.bitLength() - 1; - else - i = k.bitLength() - 1; - - var R = this.curve.getInfinity(); - var both = this.add(x); - while(i >= 0) { - R = R.twice(); - if(j.testBit(i)) { - if(k.testBit(i)) { - R = R.add(both); - } - else { - R = R.add(this); - } - } - else { - if(k.testBit(i)) { - R = R.add(x); - } - } - --i; - } - - return R; -} - -ECPointFp.prototype.getX = pointFpGetX; -ECPointFp.prototype.getY = pointFpGetY; -ECPointFp.prototype.equals = pointFpEquals; -ECPointFp.prototype.isInfinity = pointFpIsInfinity; -ECPointFp.prototype.negate = pointFpNegate; -ECPointFp.prototype.add = pointFpAdd; -ECPointFp.prototype.twice = pointFpTwice; -ECPointFp.prototype.multiply = pointFpMultiply; -ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; - -// ---------------- -// ECCurveFp - -// constructor -function ECCurveFp(q,a,b) { - this.q = q; - this.a = this.fromBigInteger(a); - this.b = this.fromBigInteger(b); - this.infinity = new ECPointFp(this, null, null); - this.reducer = new Barrett(this.q); -} - -function curveFpGetQ() { - return this.q; -} - -function curveFpGetA() { - return this.a; -} - -function curveFpGetB() { - return this.b; -} - -function curveFpEquals(other) { - if(other == this) return true; - return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); -} - -function curveFpGetInfinity() { - return this.infinity; -} - -function curveFpFromBigInteger(x) { - return new ECFieldElementFp(this.q, x); -} - -function curveReduce(x) { - this.reducer.reduce(x); -} - -// for now, work with hex strings because they're easier in JS -function curveFpDecodePointHex(s) { - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - case 3: - // point compression not supported yet - return null; - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} - -function curveFpEncodePointHex(p) { - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var yHex = p.getY().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) { - xHex = "0" + xHex; - } - while (yHex.length < oLen) { - yHex = "0" + yHex; - } - return "04" + xHex + yHex; -} - -ECCurveFp.prototype.getQ = curveFpGetQ; -ECCurveFp.prototype.getA = curveFpGetA; -ECCurveFp.prototype.getB = curveFpGetB; -ECCurveFp.prototype.equals = curveFpEquals; -ECCurveFp.prototype.getInfinity = curveFpGetInfinity; -ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; -ECCurveFp.prototype.reduce = curveReduce; -//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; -ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex; - -// from: https://github.com/kaielvin/jsbn-ec-point-compression -ECCurveFp.prototype.decodePointHex = function(s) -{ - var yIsEven; - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - yIsEven = false; - case 3: - if(yIsEven == undefined) yIsEven = true; - var len = s.length - 2; - var xHex = s.substr(2, len); - var x = this.fromBigInteger(new BigInteger(xHex,16)); - var alpha = x.multiply(x.square().add(this.getA())).add(this.getB()); - var beta = alpha.sqrt(); - - if (beta == null) throw "Invalid point compression"; - - var betaValue = beta.toBigInteger(); - if (betaValue.testBit(0) != yIsEven) - { - // Use the other root - beta = this.fromBigInteger(this.getQ().subtract(betaValue)); - } - return new ECPointFp(this,x,beta); - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} -ECCurveFp.prototype.encodeCompressedPointHex = function(p) -{ - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) - xHex = "0" + xHex; - var yPrefix; - if(p.getY().toBigInteger().isEven()) yPrefix = "02"; - else yPrefix = "03"; - - return yPrefix + xHex; -} - - -ECFieldElementFp.prototype.getR = function() -{ - if(this.r != undefined) return this.r; - - this.r = null; - var bitLength = this.q.bitLength(); - if (bitLength > 128) - { - var firstWord = this.q.shiftRight(bitLength - 64); - if (firstWord.intValue() == -1) - { - this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q); - } - } - return this.r; -} -ECFieldElementFp.prototype.modMult = function(x1,x2) -{ - return this.modReduce(x1.multiply(x2)); -} -ECFieldElementFp.prototype.modReduce = function(x) -{ - if (this.getR() != null) - { - var qLen = q.bitLength(); - while (x.bitLength() > (qLen + 1)) - { - var u = x.shiftRight(qLen); - var v = x.subtract(u.shiftLeft(qLen)); - if (!this.getR().equals(BigInteger.ONE)) - { - u = u.multiply(this.getR()); - } - x = u.add(v); - } - while (x.compareTo(q) >= 0) - { - x = x.subtract(q); - } - } - else - { - x = x.mod(q); - } - return x; -} -ECFieldElementFp.prototype.sqrt = function() -{ - if (!this.q.testBit(0)) throw "unsupported"; - - // p mod 4 == 3 - if (this.q.testBit(1)) - { - var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q)); - return z.square().equals(this) ? z : null; - } - - // p mod 4 == 1 - var qMinusOne = this.q.subtract(BigInteger.ONE); - - var legendreExponent = qMinusOne.shiftRight(1); - if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE))) - { - return null; - } - - var u = qMinusOne.shiftRight(2); - var k = u.shiftLeft(1).add(BigInteger.ONE); - - var Q = this.x; - var fourQ = modDouble(modDouble(Q)); - - var U, V; - do - { - var P; - do - { - P = new BigInteger(this.q.bitLength(), new SecureRandom()); - } - while (P.compareTo(this.q) >= 0 - || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne))); - - var result = this.lucasSequence(P, Q, k); - U = result[0]; - V = result[1]; - - if (this.modMult(V, V).equals(fourQ)) - { - // Integer division by 2, mod q - if (V.testBit(0)) - { - V = V.add(q); - } - - V = V.shiftRight(1); - - return new ECFieldElementFp(q,V); - } - } - while (U.equals(BigInteger.ONE) || U.equals(qMinusOne)); - - return null; -} -ECFieldElementFp.prototype.lucasSequence = function(P,Q,k) -{ - var n = k.bitLength(); - var s = k.getLowestSetBit(); - - var Uh = BigInteger.ONE; - var Vl = BigInteger.TWO; - var Vh = P; - var Ql = BigInteger.ONE; - var Qh = BigInteger.ONE; - - for (var j = n - 1; j >= s + 1; --j) - { - Ql = this.modMult(Ql, Qh); - - if (k.testBit(j)) - { - Qh = this.modMult(Ql, Q); - Uh = this.modMult(Uh, Vh); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1))); - } - else - { - Qh = Ql; - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - } - } - - Ql = this.modMult(Ql, Qh); - Qh = this.modMult(Ql, Q); - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Ql = this.modMult(Ql, Qh); - - for (var j = 1; j <= s; ++j) - { - Uh = this.modMult(Uh, Vl); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - Ql = this.modMult(Ql, Ql); - } - - return [ Uh, Vl ]; -} - -var exports = { - ECCurveFp: ECCurveFp, - ECPointFp: ECPointFp, - ECFieldElementFp: ECFieldElementFp -} - -module.exports = exports - - -/***/ }), -/* 127 */ -/***/ (function(module, exports) { - - -module.exports = function(det, rec, confidence, name, lang) { - this.confidence = confidence; - this.name = name || rec.name(det); - this.lang = lang; -}; - - -/***/ }), -/* 128 */ -/***/ (function(module, exports, __webpack_require__) { - -var wrappy = __webpack_require__(430) -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) - -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) - - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) - -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} - -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} - - -/***/ }), -/* 129 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = defaultIfEmpty; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(5); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function defaultIfEmpty(defaultValue) { - if (defaultValue === void 0) { - defaultValue = null; - } - return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); }; -} -var DefaultIfEmptyOperator = /*@__PURE__*/ (function () { - function DefaultIfEmptyOperator(defaultValue) { - this.defaultValue = defaultValue; - } - DefaultIfEmptyOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue)); - }; - return DefaultIfEmptyOperator; -}()); -var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DefaultIfEmptySubscriber, _super); - function DefaultIfEmptySubscriber(destination, defaultValue) { - var _this = _super.call(this, destination) || this; - _this.defaultValue = defaultValue; - _this.isEmpty = true; - return _this; - } - DefaultIfEmptySubscriber.prototype._next = function (value) { - this.isEmpty = false; - this.destination.next(value); - }; - DefaultIfEmptySubscriber.prototype._complete = function () { - if (this.isEmpty) { - this.destination.next(this.defaultValue); - } - this.destination.complete(); - }; - return DefaultIfEmptySubscriber; -}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); -//# sourceMappingURL=defaultIfEmpty.js.map - - -/***/ }), -/* 130 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = filter; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(5); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function filter(predicate, thisArg) { - return function filterOperatorFunction(source) { - return source.lift(new FilterOperator(predicate, thisArg)); - }; -} -var FilterOperator = /*@__PURE__*/ (function () { - function FilterOperator(predicate, thisArg) { - this.predicate = predicate; - this.thisArg = thisArg; - } - FilterOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg)); - }; - return FilterOperator; -}()); -var FilterSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](FilterSubscriber, _super); - function FilterSubscriber(destination, predicate, thisArg) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.thisArg = thisArg; - _this.count = 0; - return _this; - } - FilterSubscriber.prototype._next = function (value) { - var result; - try { - result = this.predicate.call(this.thisArg, value, this.count++); - } - catch (err) { - this.destination.error(err); - return; - } - if (result) { - this.destination.next(value); - } - }; - return FilterSubscriber; -}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); -//# sourceMappingURL=filter.js.map - - -/***/ }), -/* 131 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = mergeMap; -/* unused harmony export MergeMapOperator */ -/* unused harmony export MergeMapSubscriber */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_subscribeToResult__ = __webpack_require__(19); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__ = __webpack_require__(18); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__InnerSubscriber__ = __webpack_require__(78); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map__ = __webpack_require__(53); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__observable_from__ = __webpack_require__(64); -/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */ - - - - - - -function mergeMap(project, resultSelector, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - if (typeof resultSelector === 'function') { - return function (source) { return source.pipe(mergeMap(function (a, i) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__observable_from__["a" /* from */])(project(a, i)).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__map__["a" /* map */])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); }; - } - else if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); }; -} -var MergeMapOperator = /*@__PURE__*/ (function () { - function MergeMapOperator(project, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - this.project = project; - this.concurrent = concurrent; - } - MergeMapOperator.prototype.call = function (observer, source) { - return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent)); - }; - return MergeMapOperator; -}()); - -var MergeMapSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MergeMapSubscriber, _super); - function MergeMapSubscriber(destination, project, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.concurrent = concurrent; - _this.hasCompleted = false; - _this.buffer = []; - _this.active = 0; - _this.index = 0; - return _this; - } - MergeMapSubscriber.prototype._next = function (value) { - if (this.active < this.concurrent) { - this._tryNext(value); - } - else { - this.buffer.push(value); - } - }; - MergeMapSubscriber.prototype._tryNext = function (value) { - var result; - var index = this.index++; - try { - result = this.project(value, index); - } - catch (err) { - this.destination.error(err); - return; - } - this.active++; - this._innerSub(result, value, index); - }; - MergeMapSubscriber.prototype._innerSub = function (ish, value, index) { - var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_3__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined); - var destination = this.destination; - destination.add(innerSubscriber); - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_subscribeToResult__["a" /* subscribeToResult */])(this, ish, value, index, innerSubscriber); - }; - MergeMapSubscriber.prototype._complete = function () { - this.hasCompleted = true; - if (this.active === 0 && this.buffer.length === 0) { - this.destination.complete(); - } - this.unsubscribe(); - }; - MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - MergeMapSubscriber.prototype.notifyComplete = function (innerSub) { - var buffer = this.buffer; - this.remove(innerSub); - this.active--; - if (buffer.length > 0) { - this._next(buffer.shift()); - } - else if (this.active === 0 && this.hasCompleted) { - this.destination.complete(); - } - }; - return MergeMapSubscriber; -}(__WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__["a" /* OuterSubscriber */])); - -//# sourceMappingURL=mergeMap.js.map - - -/***/ }), -/* 132 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncAction; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Action__ = __webpack_require__(959); -/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ - - -var AsyncAction = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncAction, _super); - function AsyncAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.pending = false; - return _this; - } - AsyncAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { - delay = 0; - } - if (this.closed) { - return this; - } - this.state = state; - var id = this.id; - var scheduler = this.scheduler; - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay); - } - this.pending = true; - this.delay = delay; - this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); - return this; - }; - AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - return setInterval(scheduler.flush.bind(scheduler, this), delay); - }; - AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if (delay !== null && this.delay === delay && this.pending === false) { - return id; - } - clearInterval(id); - }; - AsyncAction.prototype.execute = function (state, delay) { - if (this.closed) { - return new Error('executing a cancelled action'); - } - this.pending = false; - var error = this._execute(state, delay); - if (error) { - return error; - } - else if (this.pending === false && this.id != null) { - this.id = this.recycleAsyncId(this.scheduler, this.id, null); - } - }; - AsyncAction.prototype._execute = function (state, delay) { - var errored = false; - var errorValue = undefined; - try { - this.work(state); - } - catch (e) { - errored = true; - errorValue = !!e && e || new Error(e); - } - if (errored) { - this.unsubscribe(); - return errorValue; - } - }; - AsyncAction.prototype._unsubscribe = function () { - var id = this.id; - var scheduler = this.scheduler; - var actions = scheduler.actions; - var index = actions.indexOf(this); - this.work = null; - this.state = null; - this.pending = false; - this.scheduler = null; - if (index !== -1) { - actions.splice(index, 1); - } - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); - } - this.delay = null; - }; - return AsyncAction; -}(__WEBPACK_IMPORTED_MODULE_1__Action__["a" /* Action */])); - -//# sourceMappingURL=AsyncAction.js.map - - -/***/ }), -/* 133 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncScheduler; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Scheduler__ = __webpack_require__(385); -/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ - - -var AsyncScheduler = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncScheduler, _super); - function AsyncScheduler(SchedulerAction, now) { - if (now === void 0) { - now = __WEBPACK_IMPORTED_MODULE_1__Scheduler__["a" /* Scheduler */].now; - } - var _this = _super.call(this, SchedulerAction, function () { - if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) { - return AsyncScheduler.delegate.now(); - } - else { - return now(); - } - }) || this; - _this.actions = []; - _this.active = false; - _this.scheduled = undefined; - return _this; - } - AsyncScheduler.prototype.schedule = function (work, delay, state) { - if (delay === void 0) { - delay = 0; - } - if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { - return AsyncScheduler.delegate.schedule(work, delay, state); - } - else { - return _super.prototype.schedule.call(this, work, delay, state); - } - }; - AsyncScheduler.prototype.flush = function (action) { - var actions = this.actions; - if (this.active) { - actions.push(action); - return; - } - var error; - this.active = true; - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (action = actions.shift()); - this.active = false; - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AsyncScheduler; -}(__WEBPACK_IMPORTED_MODULE_1__Scheduler__["a" /* Scheduler */])); - -//# sourceMappingURL=AsyncScheduler.js.map - - -/***/ }), -/* 134 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export getSymbolIterator */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iterator; }); -/* unused harmony export $$iterator */ -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function getSymbolIterator() { - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return '@@iterator'; - } - return Symbol.iterator; -} -var iterator = /*@__PURE__*/ getSymbolIterator(); -var $$iterator = iterator; -//# sourceMappingURL=iterator.js.map - - -/***/ }), -/* 135 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ArgumentOutOfRangeError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function ArgumentOutOfRangeErrorImpl() { - Error.call(this); - this.message = 'argument out of range'; - this.name = 'ArgumentOutOfRangeError'; - return this; -} -ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); -var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; -//# sourceMappingURL=ArgumentOutOfRangeError.js.map - - -/***/ }), -/* 136 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EmptyError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function EmptyErrorImpl() { - Error.call(this); - this.message = 'no elements in sequence'; - this.name = 'EmptyError'; - return this; -} -EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); -var EmptyError = EmptyErrorImpl; -//# sourceMappingURL=EmptyError.js.map - - -/***/ }), -/* 137 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = isFunction; -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isFunction(x) { - return typeof x === 'function'; -} -//# sourceMappingURL=isFunction.js.map - - -/***/ }), -/* 138 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2016 Joyent, Inc. - -module.exports = Certificate; - -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var crypto = __webpack_require__(21); -var Fingerprint = __webpack_require__(139); -var Signature = __webpack_require__(70); -var errs = __webpack_require__(69); -var util = __webpack_require__(9); -var utils = __webpack_require__(31); -var Key = __webpack_require__(33); -var PrivateKey = __webpack_require__(38); -var Identity = __webpack_require__(141); - -var formats = {}; -formats['openssh'] = __webpack_require__(981); -formats['x509'] = __webpack_require__(421); -formats['pem'] = __webpack_require__(982); - -var CertificateParseError = errs.CertificateParseError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Certificate(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.subjects, 'options.subjects'); - utils.assertCompatible(opts.subjects[0], Identity, [1, 0], - 'options.subjects'); - utils.assertCompatible(opts.subjectKey, Key, [1, 0], - 'options.subjectKey'); - utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer'); - if (opts.issuerKey !== undefined) { - utils.assertCompatible(opts.issuerKey, Key, [1, 0], - 'options.issuerKey'); - } - assert.object(opts.signatures, 'options.signatures'); - assert.buffer(opts.serial, 'options.serial'); - assert.date(opts.validFrom, 'options.validFrom'); - assert.date(opts.validUntil, 'optons.validUntil'); - - assert.optionalArrayOfString(opts.purposes, 'options.purposes'); - - this._hashCache = {}; - - this.subjects = opts.subjects; - this.issuer = opts.issuer; - this.subjectKey = opts.subjectKey; - this.issuerKey = opts.issuerKey; - this.signatures = opts.signatures; - this.serial = opts.serial; - this.validFrom = opts.validFrom; - this.validUntil = opts.validUntil; - this.purposes = opts.purposes; -} - -Certificate.formats = formats; - -Certificate.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'x509'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -Certificate.prototype.toString = function (format, options) { - if (format === undefined) - format = 'pem'; - return (this.toBuffer(format, options).toString()); -}; - -Certificate.prototype.fingerprint = function (algo) { - if (algo === undefined) - algo = 'sha256'; - assert.string(algo, 'algorithm'); - var opts = { - type: 'certificate', - hash: this.hash(algo), - algorithm: algo - }; - return (new Fingerprint(opts)); -}; - -Certificate.prototype.hash = function (algo) { - assert.string(algo, 'algorithm'); - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - if (this._hashCache[algo]) - return (this._hashCache[algo]); - - var hash = crypto.createHash(algo). - update(this.toBuffer('x509')).digest(); - this._hashCache[algo] = hash; - return (hash); -}; - -Certificate.prototype.isExpired = function (when) { - if (when === undefined) - when = new Date(); - return (!((when.getTime() >= this.validFrom.getTime()) && - (when.getTime() < this.validUntil.getTime()))); -}; - -Certificate.prototype.isSignedBy = function (issuerCert) { - utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer'); - - if (!this.issuer.equals(issuerCert.subjects[0])) - return (false); - if (this.issuer.purposes && this.issuer.purposes.length > 0 && - this.issuer.purposes.indexOf('ca') === -1) { - return (false); - } - - return (this.isSignedByKey(issuerCert.subjectKey)); -}; - -Certificate.prototype.isSignedByKey = function (issuerKey) { - utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey'); - - if (this.issuerKey !== undefined) { - return (this.issuerKey. - fingerprint('sha512').matches(issuerKey)); - } - - var fmt = Object.keys(this.signatures)[0]; - var valid = formats[fmt].verify(this, issuerKey); - if (valid) - this.issuerKey = issuerKey; - return (valid); -}; - -Certificate.prototype.signWith = function (key) { - utils.assertCompatible(key, PrivateKey, [1, 2], 'key'); - var fmts = Object.keys(formats); - var didOne = false; - for (var i = 0; i < fmts.length; ++i) { - if (fmts[i] !== 'pem') { - var ret = formats[fmts[i]].sign(this, key); - if (ret === true) - didOne = true; - } - } - if (!didOne) { - throw (new Error('Failed to sign the certificate for any ' + - 'available certificate formats')); - } -}; - -Certificate.createSelfSigned = function (subjectOrSubjects, key, options) { - var subjects; - if (Array.isArray(subjectOrSubjects)) - subjects = subjectOrSubjects; - else - subjects = [subjectOrSubjects]; - - assert.arrayOfObject(subjects); - subjects.forEach(function (subject) { - utils.assertCompatible(subject, Identity, [1, 0], 'subject'); - }); - - utils.assertCompatible(key, PrivateKey, [1, 2], 'private key'); - - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalObject(options.validFrom, 'options.validFrom'); - assert.optionalObject(options.validUntil, 'options.validUntil'); - var validFrom = options.validFrom; - var validUntil = options.validUntil; - if (validFrom === undefined) - validFrom = new Date(); - if (validUntil === undefined) { - assert.optionalNumber(options.lifetime, 'options.lifetime'); - var lifetime = options.lifetime; - if (lifetime === undefined) - lifetime = 10*365*24*3600; - validUntil = new Date(); - validUntil.setTime(validUntil.getTime() + lifetime*1000); - } - assert.optionalBuffer(options.serial, 'options.serial'); - var serial = options.serial; - if (serial === undefined) - serial = Buffer.from('0000000000000001', 'hex'); - - var purposes = options.purposes; - if (purposes === undefined) - purposes = []; - - if (purposes.indexOf('signature') === -1) - purposes.push('signature'); - - /* Self-signed certs are always CAs. */ - if (purposes.indexOf('ca') === -1) - purposes.push('ca'); - if (purposes.indexOf('crl') === -1) - purposes.push('crl'); - - /* - * If we weren't explicitly given any other purposes, do the sensible - * thing and add some basic ones depending on the subject type. - */ - if (purposes.length <= 3) { - var hostSubjects = subjects.filter(function (subject) { - return (subject.type === 'host'); - }); - var userSubjects = subjects.filter(function (subject) { - return (subject.type === 'user'); - }); - if (hostSubjects.length > 0) { - if (purposes.indexOf('serverAuth') === -1) - purposes.push('serverAuth'); - } - if (userSubjects.length > 0) { - if (purposes.indexOf('clientAuth') === -1) - purposes.push('clientAuth'); - } - if (userSubjects.length > 0 || hostSubjects.length > 0) { - if (purposes.indexOf('keyAgreement') === -1) - purposes.push('keyAgreement'); - if (key.type === 'rsa' && - purposes.indexOf('encryption') === -1) - purposes.push('encryption'); - } - } - - var cert = new Certificate({ - subjects: subjects, - issuer: subjects[0], - subjectKey: key.toPublic(), - issuerKey: key.toPublic(), - signatures: {}, - serial: serial, - validFrom: validFrom, - validUntil: validUntil, - purposes: purposes - }); - cert.signWith(key); - - return (cert); -}; - -Certificate.create = - function (subjectOrSubjects, key, issuer, issuerKey, options) { - var subjects; - if (Array.isArray(subjectOrSubjects)) - subjects = subjectOrSubjects; - else - subjects = [subjectOrSubjects]; - - assert.arrayOfObject(subjects); - subjects.forEach(function (subject) { - utils.assertCompatible(subject, Identity, [1, 0], 'subject'); - }); - - utils.assertCompatible(key, Key, [1, 0], 'key'); - if (PrivateKey.isPrivateKey(key)) - key = key.toPublic(); - utils.assertCompatible(issuer, Identity, [1, 0], 'issuer'); - utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key'); - - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalObject(options.validFrom, 'options.validFrom'); - assert.optionalObject(options.validUntil, 'options.validUntil'); - var validFrom = options.validFrom; - var validUntil = options.validUntil; - if (validFrom === undefined) - validFrom = new Date(); - if (validUntil === undefined) { - assert.optionalNumber(options.lifetime, 'options.lifetime'); - var lifetime = options.lifetime; - if (lifetime === undefined) - lifetime = 10*365*24*3600; - validUntil = new Date(); - validUntil.setTime(validUntil.getTime() + lifetime*1000); - } - assert.optionalBuffer(options.serial, 'options.serial'); - var serial = options.serial; - if (serial === undefined) - serial = Buffer.from('0000000000000001', 'hex'); - - var purposes = options.purposes; - if (purposes === undefined) - purposes = []; - - if (purposes.indexOf('signature') === -1) - purposes.push('signature'); - - if (options.ca === true) { - if (purposes.indexOf('ca') === -1) - purposes.push('ca'); - if (purposes.indexOf('crl') === -1) - purposes.push('crl'); - } - - var hostSubjects = subjects.filter(function (subject) { - return (subject.type === 'host'); - }); - var userSubjects = subjects.filter(function (subject) { - return (subject.type === 'user'); - }); - if (hostSubjects.length > 0) { - if (purposes.indexOf('serverAuth') === -1) - purposes.push('serverAuth'); - } - if (userSubjects.length > 0) { - if (purposes.indexOf('clientAuth') === -1) - purposes.push('clientAuth'); - } - if (userSubjects.length > 0 || hostSubjects.length > 0) { - if (purposes.indexOf('keyAgreement') === -1) - purposes.push('keyAgreement'); - if (key.type === 'rsa' && - purposes.indexOf('encryption') === -1) - purposes.push('encryption'); - } - - var cert = new Certificate({ - subjects: subjects, - issuer: issuer, - subjectKey: key, - issuerKey: issuerKey.toPublic(), - signatures: {}, - serial: serial, - validFrom: validFrom, - validUntil: validUntil, - purposes: purposes - }); - cert.signWith(issuerKey); - - return (cert); -}; - -Certificate.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - return (k); - } catch (e) { - throw (new CertificateParseError(options.filename, format, e)); - } -}; - -Certificate.isCertificate = function (obj, ver) { - return (utils.isCompatible(obj, Certificate, ver)); -}; - -/* - * API versions for Certificate: - * [1,0] -- initial ver - */ -Certificate.prototype._sshpkApiVersion = [1, 0]; - -Certificate._oldVersionDetect = function (obj) { - return ([1, 0]); -}; - - -/***/ }), -/* 139 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = Fingerprint; - -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var crypto = __webpack_require__(21); -var errs = __webpack_require__(69); -var Key = __webpack_require__(33); -var Certificate = __webpack_require__(138); -var utils = __webpack_require__(31); - -var FingerprintFormatError = errs.FingerprintFormatError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Fingerprint(opts) { - assert.object(opts, 'options'); - assert.string(opts.type, 'options.type'); - assert.buffer(opts.hash, 'options.hash'); - assert.string(opts.algorithm, 'options.algorithm'); - - this.algorithm = opts.algorithm.toLowerCase(); - if (algs.hashAlgs[this.algorithm] !== true) - throw (new InvalidAlgorithmError(this.algorithm)); - - this.hash = opts.hash; - this.type = opts.type; -} - -Fingerprint.prototype.toString = function (format) { - if (format === undefined) { - if (this.algorithm === 'md5') - format = 'hex'; - else - format = 'base64'; - } - assert.string(format); - - switch (format) { - case 'hex': - return (addColons(this.hash.toString('hex'))); - case 'base64': - return (sshBase64Format(this.algorithm, - this.hash.toString('base64'))); - default: - throw (new FingerprintFormatError(undefined, format)); - } -}; - -Fingerprint.prototype.matches = function (other) { - assert.object(other, 'key or certificate'); - if (this.type === 'key') { - utils.assertCompatible(other, Key, [1, 0], 'key'); - } else { - utils.assertCompatible(other, Certificate, [1, 0], - 'certificate'); - } - - var theirHash = other.hash(this.algorithm); - var theirHash2 = crypto.createHash(this.algorithm). - update(theirHash).digest('base64'); - - if (this.hash2 === undefined) - this.hash2 = crypto.createHash(this.algorithm). - update(this.hash).digest('base64'); - - return (this.hash2 === theirHash2); -}; - -Fingerprint.parse = function (fp, options) { - assert.string(fp, 'fingerprint'); - - var alg, hash, enAlgs; - if (Array.isArray(options)) { - enAlgs = options; - options = {}; - } - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - if (options.enAlgs !== undefined) - enAlgs = options.enAlgs; - assert.optionalArrayOfString(enAlgs, 'algorithms'); - - var parts = fp.split(':'); - if (parts.length == 2) { - alg = parts[0].toLowerCase(); - /*JSSTYLED*/ - var base64RE = /^[A-Za-z0-9+\/=]+$/; - if (!base64RE.test(parts[1])) - throw (new FingerprintFormatError(fp)); - try { - hash = Buffer.from(parts[1], 'base64'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } else if (parts.length > 2) { - alg = 'md5'; - if (parts[0].toLowerCase() === 'md5') - parts = parts.slice(1); - parts = parts.join(''); - /*JSSTYLED*/ - var md5RE = /^[a-fA-F0-9]+$/; - if (!md5RE.test(parts)) - throw (new FingerprintFormatError(fp)); - try { - hash = Buffer.from(parts, 'hex'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } - - if (alg === undefined) - throw (new FingerprintFormatError(fp)); - - if (algs.hashAlgs[alg] === undefined) - throw (new InvalidAlgorithmError(alg)); - - if (enAlgs !== undefined) { - enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); }); - if (enAlgs.indexOf(alg) === -1) - throw (new InvalidAlgorithmError(alg)); - } - - return (new Fingerprint({ - algorithm: alg, - hash: hash, - type: options.type || 'key' - })); -}; - -function addColons(s) { - /*JSSTYLED*/ - return (s.replace(/(.{2})(?=.)/g, '$1:')); -} - -function base64Strip(s) { - /*JSSTYLED*/ - return (s.replace(/=*$/, '')); -} - -function sshBase64Format(alg, h) { - return (alg.toUpperCase() + ':' + base64Strip(h)); -} - -Fingerprint.isFingerprint = function (obj, ver) { - return (utils.isCompatible(obj, Fingerprint, ver)); -}; - -/* - * API versions for Fingerprint: - * [1,0] -- initial ver - * [1,1] -- first tagged ver - */ -Fingerprint.prototype._sshpkApiVersion = [1, 1]; - -Fingerprint._oldVersionDetect = function (obj) { - assert.func(obj.toString); - assert.func(obj.matches); - return ([1, 0]); -}; - - -/***/ }), -/* 140 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readPkcs8: readPkcs8, - write: write, - writePkcs8: writePkcs8, - - readECDSACurve: readECDSACurve, - writeECDSACurve: writeECDSACurve -}; - -var assert = __webpack_require__(22); -var asn1 = __webpack_require__(66); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var utils = __webpack_require__(31); -var Key = __webpack_require__(33); -var PrivateKey = __webpack_require__(38); -var pem = __webpack_require__(80); - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs8')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs8')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs8(alg, type, der) { - /* Private keys in pkcs#8 format have a weird extra int */ - if (der.peek() === asn1.Ber.Integer) { - assert.strictEqual(type, 'private', - 'unexpected Integer at start of public key'); - der.readString(asn1.Ber.Integer, true); - } - - der.readSequence(); - var next = der.offset + der.length; - - var oid = der.readOID(); - switch (oid) { - case '1.2.840.113549.1.1.1': - der._offset = next; - if (type === 'public') - return (readPkcs8RSAPublic(der)); - else - return (readPkcs8RSAPrivate(der)); - case '1.2.840.10040.4.1': - if (type === 'public') - return (readPkcs8DSAPublic(der)); - else - return (readPkcs8DSAPrivate(der)); - case '1.2.840.10045.2.1': - if (type === 'public') - return (readPkcs8ECDSAPublic(der)); - else - return (readPkcs8ECDSAPrivate(der)); - case '1.3.101.112': - if (type === 'public') { - return (readPkcs8EdDSAPublic(der)); - } else { - return (readPkcs8EdDSAPrivate(der)); - } - case '1.3.101.110': - if (type === 'public') { - return (readPkcs8X25519Public(der)); - } else { - return (readPkcs8X25519Private(der)); - } - default: - throw (new Error('Unknown key type OID ' + oid)); - } -} - -function readPkcs8RSAPublic(der) { - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - der.readSequence(); - - // modulus - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - source: der.originalInput, - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs8RSAPrivate(der) { - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var ver = readMPInt(der, 'version'); - assert.equal(ver[0], 0x0, 'unknown RSA private key version'); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8DSAPublic(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - - var y = readMPInt(der, 'y'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y } - ] - }; - - return (new Key(key)); -} - -function readPkcs8DSAPrivate(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - der.readSequence(asn1.Ber.OctetString); - var x = readMPInt(der, 'x'); - - /* The pkcs#8 format does not include the public key */ - var y = utils.calculateDSAPublic(g, p, x); - - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readECDSACurve(der) { - var curveName, curveNames; - var j, c, cd; - - if (der.peek() === asn1.Ber.OID) { - var oid = der.readOID(); - - curveNames = Object.keys(algs.curves); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - if (cd.pkcs8oid === oid) { - curveName = c; - break; - } - } - - } else { - // ECParameters sequence - der.readSequence(); - var version = der.readString(asn1.Ber.Integer, true); - assert.strictEqual(version[0], 1, 'ECDSA key not version 1'); - - var curve = {}; - - // FieldID sequence - der.readSequence(); - var fieldTypeOid = der.readOID(); - assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1', - 'ECDSA key is not from a prime-field'); - var p = curve.p = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - /* - * p always starts with a 1 bit, so count the zeros to get its - * real size. - */ - curve.size = p.length * 8 - utils.countZeros(p); - - // Curve sequence - der.readSequence(); - curve.a = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - curve.b = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - if (der.peek() === asn1.Ber.BitString) - curve.s = der.readString(asn1.Ber.BitString, true); - - // Combined Gx and Gy - curve.G = der.readString(asn1.Ber.OctetString, true); - assert.strictEqual(curve.G[0], 0x4, - 'uncompressed G is required'); - - curve.n = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - curve.h = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' + - 'required'); - - curveNames = Object.keys(algs.curves); - var ks = Object.keys(curve); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - var equal = true; - for (var i = 0; i < ks.length; ++i) { - var k = ks[i]; - if (cd[k] === undefined) - continue; - if (typeof (cd[k]) === 'object' && - cd[k].equals !== undefined) { - if (!cd[k].equals(curve[k])) { - equal = false; - break; - } - } else if (Buffer.isBuffer(cd[k])) { - if (cd[k].toString('binary') - !== curve[k].toString('binary')) { - equal = false; - break; - } - } else { - if (cd[k] !== curve[k]) { - equal = false; - break; - } - } - } - if (equal) { - curveName = c; - break; - } - } - } - return (curveName); -} - -function readPkcs8ECDSAPrivate(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var version = readMPInt(der, 'version'); - assert.equal(version[0], 1, 'unknown version of ECDSA key'); - - var d = der.readString(asn1.Ber.OctetString, true); - der.readSequence(0xa1); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curveName) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8ECDSAPublic(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curveName) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function readPkcs8EdDSAPublic(der) { - if (der.peek() === 0x00) - der.readByte(); - - var A = utils.readBitString(der); - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) } - ] - }; - - return (new Key(key)); -} - -function readPkcs8X25519Public(der) { - var A = utils.readBitString(der); - - var key = { - type: 'curve25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) } - ] - }; - - return (new Key(key)); -} - -function readPkcs8EdDSAPrivate(der) { - if (der.peek() === 0x00) - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - var k = der.readString(asn1.Ber.OctetString, true); - k = utils.zeroPadToLength(k, 32); - - var A; - if (der.peek() === asn1.Ber.BitString) { - A = utils.readBitString(der); - A = utils.zeroPadToLength(A, 32); - } else { - A = utils.calculateED25519Public(k); - } - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: utils.zeroPadToLength(k, 32) } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8X25519Private(der) { - if (der.peek() === 0x00) - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - var k = der.readString(asn1.Ber.OctetString, true); - k = utils.zeroPadToLength(k, 32); - - var A = utils.calculateX25519Public(k); - - var key = { - type: 'curve25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: utils.zeroPadToLength(k, 32) } - ] - }; - - return (new PrivateKey(key)); -} - -function writePkcs8(der, key) { - der.startSequence(); - - if (PrivateKey.isPrivateKey(key)) { - var sillyInt = Buffer.from([0]); - der.writeBuffer(sillyInt, asn1.Ber.Integer); - } - - der.startSequence(); - switch (key.type) { - case 'rsa': - der.writeOID('1.2.840.113549.1.1.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8RSAPrivate(key, der); - else - writePkcs8RSAPublic(key, der); - break; - case 'dsa': - der.writeOID('1.2.840.10040.4.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8DSAPrivate(key, der); - else - writePkcs8DSAPublic(key, der); - break; - case 'ecdsa': - der.writeOID('1.2.840.10045.2.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8ECDSAPrivate(key, der); - else - writePkcs8ECDSAPublic(key, der); - break; - case 'ed25519': - der.writeOID('1.3.101.112'); - if (PrivateKey.isPrivateKey(key)) - throw (new Error('Ed25519 private keys in pkcs8 ' + - 'format are not supported')); - writePkcs8EdDSAPublic(key, der); - break; - default: - throw (new Error('Unsupported key type: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs8RSAPrivate(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = Buffer.from([0]); - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8RSAPublic(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - - der.startSequence(); - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); -} - -function writePkcs8DSAPrivate(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writePkcs8DSAPublic(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writeECDSACurve(key, der) { - var curve = algs.curves[key.curve]; - if (curve.pkcs8oid) { - /* This one has a name in pkcs#8, so just write the oid */ - der.writeOID(curve.pkcs8oid); - - } else { - // ECParameters sequence - der.startSequence(); - - var version = Buffer.from([1]); - der.writeBuffer(version, asn1.Ber.Integer); - - // FieldID sequence - der.startSequence(); - der.writeOID('1.2.840.10045.1.1'); // prime-field - der.writeBuffer(curve.p, asn1.Ber.Integer); - der.endSequence(); - - // Curve sequence - der.startSequence(); - var a = curve.p; - if (a[0] === 0x0) - a = a.slice(1); - der.writeBuffer(a, asn1.Ber.OctetString); - der.writeBuffer(curve.b, asn1.Ber.OctetString); - der.writeBuffer(curve.s, asn1.Ber.BitString); - der.endSequence(); - - der.writeBuffer(curve.G, asn1.Ber.OctetString); - der.writeBuffer(curve.n, asn1.Ber.Integer); - var h = curve.h; - if (!h) { - h = Buffer.from([1]); - } - der.writeBuffer(h, asn1.Ber.Integer); - - // ECParameters - der.endSequence(); - } -} - -function writePkcs8ECDSAPublic(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs8ECDSAPrivate(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = Buffer.from([1]); - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8EdDSAPublic(key, der) { - der.endSequence(); - - utils.writeBitString(der, key.part.A.data); -} - -function writePkcs8EdDSAPrivate(key, der) { - der.endSequence(); - - var k = utils.mpNormalize(key.part.k.data, true); - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(k, asn1.Ber.OctetString); - der.endSequence(); -} - - -/***/ }), -/* 141 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = Identity; - -var assert = __webpack_require__(22); -var algs = __webpack_require__(37); -var crypto = __webpack_require__(21); -var Fingerprint = __webpack_require__(139); -var Signature = __webpack_require__(70); -var errs = __webpack_require__(69); -var util = __webpack_require__(9); -var utils = __webpack_require__(31); -var asn1 = __webpack_require__(66); -var Buffer = __webpack_require__(20).Buffer; - -/*JSSTYLED*/ -var DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i; - -var oids = {}; -oids.cn = '2.5.4.3'; -oids.o = '2.5.4.10'; -oids.ou = '2.5.4.11'; -oids.l = '2.5.4.7'; -oids.s = '2.5.4.8'; -oids.c = '2.5.4.6'; -oids.sn = '2.5.4.4'; -oids.dc = '0.9.2342.19200300.100.1.25'; -oids.uid = '0.9.2342.19200300.100.1.1'; -oids.mail = '0.9.2342.19200300.100.1.3'; - -var unoids = {}; -Object.keys(oids).forEach(function (k) { - unoids[oids[k]] = k; -}); - -function Identity(opts) { - var self = this; - assert.object(opts, 'options'); - assert.arrayOfObject(opts.components, 'options.components'); - this.components = opts.components; - this.componentLookup = {}; - this.components.forEach(function (c) { - if (c.name && !c.oid) - c.oid = oids[c.name]; - if (c.oid && !c.name) - c.name = unoids[c.oid]; - if (self.componentLookup[c.name] === undefined) - self.componentLookup[c.name] = []; - self.componentLookup[c.name].push(c); - }); - if (this.componentLookup.cn && this.componentLookup.cn.length > 0) { - this.cn = this.componentLookup.cn[0].value; - } - assert.optionalString(opts.type, 'options.type'); - if (opts.type === undefined) { - if (this.components.length === 1 && - this.componentLookup.cn && - this.componentLookup.cn.length === 1 && - this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { - this.type = 'host'; - this.hostname = this.componentLookup.cn[0].value; - - } else if (this.componentLookup.dc && - this.components.length === this.componentLookup.dc.length) { - this.type = 'host'; - this.hostname = this.componentLookup.dc.map( - function (c) { - return (c.value); - }).join('.'); - - } else if (this.componentLookup.uid && - this.components.length === - this.componentLookup.uid.length) { - this.type = 'user'; - this.uid = this.componentLookup.uid[0].value; - - } else if (this.componentLookup.cn && - this.componentLookup.cn.length === 1 && - this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { - this.type = 'host'; - this.hostname = this.componentLookup.cn[0].value; - - } else if (this.componentLookup.uid && - this.componentLookup.uid.length === 1) { - this.type = 'user'; - this.uid = this.componentLookup.uid[0].value; - - } else if (this.componentLookup.mail && - this.componentLookup.mail.length === 1) { - this.type = 'email'; - this.email = this.componentLookup.mail[0].value; - - } else if (this.componentLookup.cn && - this.componentLookup.cn.length === 1) { - this.type = 'user'; - this.uid = this.componentLookup.cn[0].value; - - } else { - this.type = 'unknown'; - } - } else { - this.type = opts.type; - if (this.type === 'host') - this.hostname = opts.hostname; - else if (this.type === 'user') - this.uid = opts.uid; - else if (this.type === 'email') - this.email = opts.email; - else - throw (new Error('Unknown type ' + this.type)); - } -} - -Identity.prototype.toString = function () { - return (this.components.map(function (c) { - return (c.name.toUpperCase() + '=' + c.value); - }).join(', ')); -}; - -/* - * These are from X.680 -- PrintableString allowed chars are in section 37.4 - * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to - * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006 - * (the basic ASCII character set). - */ -/* JSSTYLED */ -var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/; -/* JSSTYLED */ -var NOT_IA5 = /[^\x00-\x7f]/; - -Identity.prototype.toAsn1 = function (der, tag) { - der.startSequence(tag); - this.components.forEach(function (c) { - der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set); - der.startSequence(); - der.writeOID(c.oid); - /* - * If we fit in a PrintableString, use that. Otherwise use an - * IA5String or UTF8String. - * - * If this identity was parsed from a DN, use the ASN.1 types - * from the original representation (otherwise this might not - * be a full match for the original in some validators). - */ - if (c.asn1type === asn1.Ber.Utf8String || - c.value.match(NOT_IA5)) { - var v = Buffer.from(c.value, 'utf8'); - der.writeBuffer(v, asn1.Ber.Utf8String); - - } else if (c.asn1type === asn1.Ber.IA5String || - c.value.match(NOT_PRINTABLE)) { - der.writeString(c.value, asn1.Ber.IA5String); - - } else { - var type = asn1.Ber.PrintableString; - if (c.asn1type !== undefined) - type = c.asn1type; - der.writeString(c.value, type); - } - der.endSequence(); - der.endSequence(); - }); - der.endSequence(); -}; - -function globMatch(a, b) { - if (a === '**' || b === '**') - return (true); - var aParts = a.split('.'); - var bParts = b.split('.'); - if (aParts.length !== bParts.length) - return (false); - for (var i = 0; i < aParts.length; ++i) { - if (aParts[i] === '*' || bParts[i] === '*') - continue; - if (aParts[i] !== bParts[i]) - return (false); - } - return (true); -} - -Identity.prototype.equals = function (other) { - if (!Identity.isIdentity(other, [1, 0])) - return (false); - if (other.components.length !== this.components.length) - return (false); - for (var i = 0; i < this.components.length; ++i) { - if (this.components[i].oid !== other.components[i].oid) - return (false); - if (!globMatch(this.components[i].value, - other.components[i].value)) { - return (false); - } - } - return (true); -}; - -Identity.forHost = function (hostname) { - assert.string(hostname, 'hostname'); - return (new Identity({ - type: 'host', - hostname: hostname, - components: [ { name: 'cn', value: hostname } ] - })); -}; - -Identity.forUser = function (uid) { - assert.string(uid, 'uid'); - return (new Identity({ - type: 'user', - uid: uid, - components: [ { name: 'uid', value: uid } ] - })); -}; - -Identity.forEmail = function (email) { - assert.string(email, 'email'); - return (new Identity({ - type: 'email', - email: email, - components: [ { name: 'mail', value: email } ] - })); -}; - -Identity.parseDN = function (dn) { - assert.string(dn, 'dn'); - var parts = dn.split(','); - var cmps = parts.map(function (c) { - c = c.trim(); - var eqPos = c.indexOf('='); - var name = c.slice(0, eqPos).toLowerCase(); - var value = c.slice(eqPos + 1); - return ({ name: name, value: value }); - }); - return (new Identity({ components: cmps })); -}; - -Identity.parseAsn1 = function (der, top) { - var components = []; - der.readSequence(top); - var end = der.offset + der.length; - while (der.offset < end) { - der.readSequence(asn1.Ber.Constructor | asn1.Ber.Set); - var after = der.offset + der.length; - der.readSequence(); - var oid = der.readOID(); - var type = der.peek(); - var value; - switch (type) { - case asn1.Ber.PrintableString: - case asn1.Ber.IA5String: - case asn1.Ber.OctetString: - case asn1.Ber.T61String: - value = der.readString(type); - break; - case asn1.Ber.Utf8String: - value = der.readString(type, true); - value = value.toString('utf8'); - break; - case asn1.Ber.CharacterString: - case asn1.Ber.BMPString: - value = der.readString(type, true); - value = value.toString('utf16le'); - break; - default: - throw (new Error('Unknown asn1 type ' + type)); - } - components.push({ oid: oid, asn1type: type, value: value }); - der._offset = after; - } - der._offset = end; - return (new Identity({ - components: components - })); -}; - -Identity.isIdentity = function (obj, ver) { - return (utils.isCompatible(obj, Identity, ver)); -}; - -/* - * API versions for Identity: - * [1,0] -- initial ver - */ -Identity.prototype._sshpkApiVersion = [1, 0]; - -Identity._oldVersionDetect = function (obj) { - return ([1, 0]); -}; - - -/***/ }), -/* 142 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = SSHBuffer; - -var assert = __webpack_require__(22); -var Buffer = __webpack_require__(20).Buffer; - -function SSHBuffer(opts) { - assert.object(opts, 'options'); - if (opts.buffer !== undefined) - assert.buffer(opts.buffer, 'options.buffer'); - - this._size = opts.buffer ? opts.buffer.length : 1024; - this._buffer = opts.buffer || Buffer.alloc(this._size); - this._offset = 0; -} - -SSHBuffer.prototype.toBuffer = function () { - return (this._buffer.slice(0, this._offset)); -}; - -SSHBuffer.prototype.atEnd = function () { - return (this._offset >= this._buffer.length); -}; - -SSHBuffer.prototype.remainder = function () { - return (this._buffer.slice(this._offset)); -}; - -SSHBuffer.prototype.skip = function (n) { - this._offset += n; -}; - -SSHBuffer.prototype.expand = function () { - this._size *= 2; - var buf = Buffer.alloc(this._size); - this._buffer.copy(buf, 0); - this._buffer = buf; -}; - -SSHBuffer.prototype.readPart = function () { - return ({data: this.readBuffer()}); -}; - -SSHBuffer.prototype.readBuffer = function () { - var len = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - assert.ok(this._offset + len <= this._buffer.length, - 'length out of bounds at +0x' + this._offset.toString(16) + - ' (data truncated?)'); - var buf = this._buffer.slice(this._offset, this._offset + len); - this._offset += len; - return (buf); -}; - -SSHBuffer.prototype.readString = function () { - return (this.readBuffer().toString()); -}; - -SSHBuffer.prototype.readCString = function () { - var offset = this._offset; - while (offset < this._buffer.length && - this._buffer[offset] !== 0x00) - offset++; - assert.ok(offset < this._buffer.length, 'c string does not terminate'); - var str = this._buffer.slice(this._offset, offset).toString(); - this._offset = offset + 1; - return (str); -}; - -SSHBuffer.prototype.readInt = function () { - var v = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - return (v); -}; - -SSHBuffer.prototype.readInt64 = function () { - assert.ok(this._offset + 8 < this._buffer.length, - 'buffer not long enough to read Int64'); - var v = this._buffer.slice(this._offset, this._offset + 8); - this._offset += 8; - return (v); -}; - -SSHBuffer.prototype.readChar = function () { - var v = this._buffer[this._offset++]; - return (v); -}; - -SSHBuffer.prototype.writeBuffer = function (buf) { - while (this._offset + 4 + buf.length > this._size) - this.expand(); - this._buffer.writeUInt32BE(buf.length, this._offset); - this._offset += 4; - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; - -SSHBuffer.prototype.writeString = function (str) { - this.writeBuffer(Buffer.from(str, 'utf8')); -}; - -SSHBuffer.prototype.writeCString = function (str) { - while (this._offset + 1 + str.length > this._size) - this.expand(); - this._buffer.write(str, this._offset); - this._offset += str.length; - this._buffer[this._offset++] = 0; -}; - -SSHBuffer.prototype.writeInt = function (v) { - while (this._offset + 4 > this._size) - this.expand(); - this._buffer.writeUInt32BE(v, this._offset); - this._offset += 4; -}; - -SSHBuffer.prototype.writeInt64 = function (v) { - assert.buffer(v, 'value'); - if (v.length > 8) { - var lead = v.slice(0, v.length - 8); - for (var i = 0; i < lead.length; ++i) { - assert.strictEqual(lead[i], 0, - 'must fit in 64 bits of precision'); - } - v = v.slice(v.length - 8, v.length); - } - while (this._offset + 8 > this._size) - this.expand(); - v.copy(this._buffer, this._offset); - this._offset += 8; -}; - -SSHBuffer.prototype.writeChar = function (v) { - while (this._offset + 1 > this._size) - this.expand(); - this._buffer[this._offset++] = v; -}; - -SSHBuffer.prototype.writePart = function (p) { - this.writeBuffer(p.data); -}; - -SSHBuffer.prototype.write = function (buf) { - while (this._offset + buf.length > this._size) - this.expand(); - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; - - -/***/ }), -/* 143 */ -/***/ (function(module, exports) { - -module.exports = require("tty"); - -/***/ }), -/* 144 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(41)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -exports.extractWorkspaces = extractWorkspaces; - -var _executeLifecycleScript; - -function _load_executeLifecycleScript() { - return _executeLifecycleScript = __webpack_require__(115); -} - -var _path; - -function _load_path() { - return _path = __webpack_require__(315); -} - -var _conversion; - -function _load_conversion() { - return _conversion = __webpack_require__(267); -} - -var _index; - -function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(200)); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); -} - -var _packageConstraintResolver; - -function _load_packageConstraintResolver() { - return _packageConstraintResolver = _interopRequireDefault(__webpack_require__(536)); -} - -var _requestManager; - -function _load_requestManager() { - return _requestManager = _interopRequireDefault(__webpack_require__(317)); -} - -var _index2; - -function _load_index2() { - return _index2 = __webpack_require__(59); -} - -var _index3; - -function _load_index3() { - return _index3 = __webpack_require__(182); -} - -var _map2; - -function _load_map2() { - return _map2 = _interopRequireDefault(__webpack_require__(50)); -} - -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 }; } - -var detectIndent = __webpack_require__(679); -var invariant = __webpack_require__(13); -var path = __webpack_require__(2); -var micromatch = __webpack_require__(102); -var isCi = __webpack_require__(232); - -function sortObject(object) { - var sortedObject = {}; - (0, (_keys || _load_keys()).default)(object).sort().forEach(function (item) { - sortedObject[item] = object[item]; - }); - return sortedObject; -} - -var Config = function () { - function Config(reporter) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Config); - - this.constraintResolver = new (_packageConstraintResolver || _load_packageConstraintResolver()).default(this, reporter); - this.requestManager = new (_requestManager || _load_requestManager()).default(reporter); - this.reporter = reporter; - this._init({}); - } - - // - - - // - - - // cache packages in offline mirror folder as new .tgz files - - - // - - - // - - - // - - - // - - - // - - - // - - - // - - - // - - - // - - - // - - - // - - - // - - - // Whether we should ignore executing lifecycle scripts - - - // - - - // - - - // - - - // - - - /** - * Execute a promise produced by factory if it doesn't exist in our cache with - * the associated key. - */ - - Config.prototype.getCache = function getCache(key, factory) { - var _this = this; - - var cached = this.cache[key]; - if (cached) { - return cached; - } - - return this.cache[key] = factory().catch(function (err) { - _this.cache[key] = null; - throw err; - }); - }; - - /** - * Get a config option from our yarn config. - */ - - Config.prototype.getOption = function getOption(key) { - var resolve = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var value = this.registries.yarn.getOption(key); - - if (resolve && typeof value === 'string' && value.length) { - return (0, (_path || _load_path()).resolveWithHome)(value); - } - - return value; - }; - - /** - * Reduce a list of versions to a single one based on an input range. - */ - - Config.prototype.resolveConstraints = function resolveConstraints(versions, range) { - return this.constraintResolver.reduce(versions, range); - }; - - /** - * Initialise config. Fetch registry options, find package roots. - */ - - Config.prototype.init = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _this2 = this; - - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - this._init(opts); - - this.workspaceRootFolder = yield this.findWorkspaceRoot(this.cwd); - this.lockfileFolder = this.workspaceRootFolder || this.cwd; - - // using focus in a workspace root is not allowed - if (this.focus && (!this.workspaceRootFolder || this.cwd === this.workspaceRootFolder)) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('workspacesFocusRootCheck')); - } - - if (this.focus) { - var focusedWorkspaceManifest = yield this.readRootManifest(); - this.focusedWorkspaceName = focusedWorkspaceManifest.name; - } - - this.linkedModules = []; - - var linkedModules = void 0; - try { - linkedModules = yield (_fs || _load_fs()).readdir(this.linkFolder); - } catch (err) { - if (err.code === 'ENOENT') { - linkedModules = []; - } else { - throw err; - } - } - - var _loop = function* _loop(dir) { - var linkedPath = path.join(_this2.linkFolder, dir); - - if (dir[0] === '@') { - var _linkedModules; - - // it's a scope, not a package - var scopedLinked = yield (_fs || _load_fs()).readdir(linkedPath); - (_linkedModules = _this2.linkedModules).push.apply(_linkedModules, scopedLinked.map(function (scopedDir) { - return path.join(dir, scopedDir); - })); - } else { - _this2.linkedModules.push(dir); - } - }; - - for (var _iterator = linkedModules, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref2; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref2 = _i.value; - } - - var dir = _ref2; - yield* _loop(dir); - } - - for (var _iterator2 = (0, (_keys || _load_keys()).default)((_index2 || _load_index2()).registries), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref3; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref3 = _i2.value; - } - - var _key = _ref3; - - var Registry = (_index2 || _load_index2()).registries[_key]; - - var extraneousRcFiles = Registry === (_index2 || _load_index2()).registries.yarn ? this.extraneousYarnrcFiles : []; - - // instantiate registry - var _registry = new Registry(this.cwd, this.registries, this.requestManager, this.reporter, this.enableDefaultRc, extraneousRcFiles); - yield _registry.init({ - registry: opts.registry - }); - - this.registries[_key] = _registry; - if (this.registryFolders.indexOf(_registry.folder) === -1) { - this.registryFolders.push(_registry.folder); - } - var rootModuleFolder = path.join(this.cwd, _registry.folder); - if (this.rootModuleFolders.indexOf(rootModuleFolder) === -1) { - this.rootModuleFolders.push(rootModuleFolder); - } - } - - if (this.modulesFolder) { - this.registryFolders.push(this.modulesFolder); - } - - this.networkConcurrency = opts.networkConcurrency || Number(this.getOption('network-concurrency')) || (_constants || _load_constants()).NETWORK_CONCURRENCY; - - this.childConcurrency = opts.childConcurrency || Number(this.getOption('child-concurrency')) || Number(process.env.CHILD_CONCURRENCY) || (_constants || _load_constants()).CHILD_CONCURRENCY; - - this.networkTimeout = opts.networkTimeout || Number(this.getOption('network-timeout')) || (_constants || _load_constants()).NETWORK_TIMEOUT; - - var httpProxy = opts.httpProxy || this.getOption('proxy'); - var httpsProxy = opts.httpsProxy || this.getOption('https-proxy'); - this.requestManager.setOptions({ - userAgent: String(this.getOption('user-agent')), - httpProxy: httpProxy === false ? false : String(httpProxy || ''), - httpsProxy: httpsProxy === false ? false : String(httpsProxy || ''), - strictSSL: Boolean(this.getOption('strict-ssl')), - ca: Array.prototype.concat(opts.ca || this.getOption('ca') || []).map(String), - cafile: String(opts.cafile || this.getOption('cafile', true) || ''), - cert: String(opts.cert || this.getOption('cert') || ''), - key: String(opts.key || this.getOption('key') || ''), - networkConcurrency: this.networkConcurrency, - networkTimeout: this.networkTimeout - }); - - var cacheRootFolder = opts.cacheFolder || this.getOption('cache-folder', true); - - if (!cacheRootFolder) { - var preferredCacheFolders = (_constants || _load_constants()).PREFERRED_MODULE_CACHE_DIRECTORIES; - var preferredCacheFolder = opts.preferredCacheFolder || this.getOption('preferred-cache-folder', true); - - if (preferredCacheFolder) { - preferredCacheFolders = [String(preferredCacheFolder)].concat(preferredCacheFolders); - } - - var cacheFolderQuery = yield (_fs || _load_fs()).getFirstSuitableFolder(preferredCacheFolders, (_fs || _load_fs()).constants.W_OK | (_fs || _load_fs()).constants.X_OK | (_fs || _load_fs()).constants.R_OK // eslint-disable-line no-bitwise - ); - for (var _iterator3 = cacheFolderQuery.skipped, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref4; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } - - var skippedEntry = _ref4; - - this.reporter.warn(this.reporter.lang('cacheFolderSkipped', skippedEntry.folder)); - } - - cacheRootFolder = cacheFolderQuery.folder; - if (cacheRootFolder && cacheFolderQuery.skipped.length > 0) { - this.reporter.warn(this.reporter.lang('cacheFolderSelected', cacheRootFolder)); - } - } - - if (!cacheRootFolder) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('cacheFolderMissing')); - } else { - this._cacheRootFolder = String(cacheRootFolder); - } - - var manifest = yield this.maybeReadManifest(this.cwd); - - var plugnplayByEnv = this.getOption('plugnplay-override'); - if (plugnplayByEnv != null) { - this.plugnplayEnabled = plugnplayByEnv !== 'false' && plugnplayByEnv !== '0'; - this.plugnplayPersist = false; - } else if (opts.enablePnp || opts.disablePnp) { - this.plugnplayEnabled = !!opts.enablePnp; - this.plugnplayPersist = true; - } else if (manifest && manifest.installConfig && manifest.installConfig.pnp) { - this.plugnplayEnabled = !!manifest.installConfig.pnp; - this.plugnplayPersist = false; - } else { - this.plugnplayEnabled = false; - this.plugnplayEnabled = false; - } - - if (process.platform === 'win32') { - var cacheRootFolderDrive = path.parse(this._cacheRootFolder).root; - var lockfileFolderDrive = path.parse(this.lockfileFolder).root; - - if (cacheRootFolderDrive !== lockfileFolderDrive) { - if (this.plugnplayEnabled) { - this.reporter.warn(this.reporter.lang('plugnplayWindowsSupport')); - } - this.plugnplayEnabled = false; - this.plugnplayPersist = false; - } - } - - this.plugnplayShebang = String(this.getOption('plugnplay-shebang') || '') || '/usr/bin/env node'; - this.plugnplayBlacklist = String(this.getOption('plugnplay-blacklist') || '') || null; - - this.workspacesEnabled = this.getOption('workspaces-experimental') !== false; - this.workspacesNohoistEnabled = this.getOption('workspaces-nohoist-experimental') !== false; - - this.offlineCacheFolder = String(this.getOption('offline-cache-folder') || '') || null; - - this.pruneOfflineMirror = Boolean(this.getOption('yarn-offline-mirror-pruning')); - this.enableMetaFolder = Boolean(this.getOption('enable-meta-folder')); - this.enableLockfileVersions = Boolean(this.getOption('yarn-enable-lockfile-versions')); - this.linkFileDependencies = Boolean(this.getOption('yarn-link-file-dependencies')); - this.packBuiltPackages = Boolean(this.getOption('experimental-pack-script-packages-in-mirror')); - - this.autoAddIntegrity = !(0, (_conversion || _load_conversion()).boolifyWithDefault)(String(this.getOption('unsafe-disable-integrity-migration')), true); - - //init & create cacheFolder, tempFolder - this.cacheFolder = path.join(this._cacheRootFolder, 'v' + String((_constants || _load_constants()).CACHE_VERSION)); - this.tempFolder = opts.tempFolder || path.join(this.cacheFolder, '.tmp'); - yield (_fs || _load_fs()).mkdirp(this.cacheFolder); - yield (_fs || _load_fs()).mkdirp(this.tempFolder); - - if (opts.production !== undefined) { - this.production = Boolean(opts.production); - } else { - this.production = Boolean(this.getOption('production')) || process.env.NODE_ENV === 'production' && process.env.NPM_CONFIG_PRODUCTION !== 'false' && process.env.YARN_PRODUCTION !== 'false'; - } - - if (this.workspaceRootFolder && !this.workspacesEnabled) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('workspacesDisabled')); - } - }); - - function init() { - return _ref.apply(this, arguments); - } - - return init; - }(); - - Config.prototype._init = function _init(opts) { - this.rootModuleFolders = []; - this.registryFolders = []; - this.linkedModules = []; - - this.registries = (0, (_map2 || _load_map2()).default)(); - this.cache = (0, (_map2 || _load_map2()).default)(); - - // Ensure the cwd is always an absolute path. - this.cwd = path.resolve(opts.cwd || this.cwd || process.cwd()); - - this.looseSemver = opts.looseSemver == undefined ? true : opts.looseSemver; - - this.commandName = opts.commandName || ''; - - this.enableDefaultRc = opts.enableDefaultRc !== false; - this.extraneousYarnrcFiles = opts.extraneousYarnrcFiles || []; - - this.preferOffline = !!opts.preferOffline; - this.modulesFolder = opts.modulesFolder; - this.globalFolder = opts.globalFolder || (_constants || _load_constants()).GLOBAL_MODULE_DIRECTORY; - this.linkFolder = opts.linkFolder || (_constants || _load_constants()).LINK_REGISTRY_DIRECTORY; - this.offline = !!opts.offline; - this.binLinks = !!opts.binLinks; - this.updateChecksums = !!opts.updateChecksums; - this.plugnplayUnplugged = []; - this.plugnplayPurgeUnpluggedPackages = false; - - this.ignorePlatform = !!opts.ignorePlatform; - this.ignoreScripts = !!opts.ignoreScripts; - - this.disablePrepublish = !!opts.disablePrepublish; - - // $FlowFixMe$ - this.nonInteractive = !!opts.nonInteractive || isCi || !process.stdout.isTTY; - - this.scriptsPrependNodePath = !!opts.scriptsPrependNodePath; - - this.requestManager.setOptions({ - offline: !!opts.offline && !opts.preferOffline, - captureHar: !!opts.captureHar - }); - - if (this.modulesFolder) { - this.rootModuleFolders.push(this.modulesFolder); - } - - this.focus = !!opts.focus; - this.focusedWorkspaceName = ''; - - this.otp = opts.otp || ''; - }; - - /** - * Generate a name suitable as unique filesystem identifier for the specified package. - */ - - Config.prototype.generateUniquePackageSlug = function generateUniquePackageSlug(pkg) { - var slug = pkg.name; - - slug = slug.replace(/[^@a-z0-9]+/g, '-'); - slug = slug.replace(/^-+|-+$/g, ''); - - if (pkg.registry) { - slug = `${pkg.registry}-${slug}`; - } else { - slug = `unknown-${slug}`; - } - - var hash = pkg.remote.hash; - - - if (pkg.version) { - slug += `-${pkg.version}`; - } - - if (pkg.uid && pkg.version !== pkg.uid) { - slug += `-${pkg.uid}`; - } else if (hash) { - slug += `-${hash}`; - } - - return slug; - }; - - /** - * Generate an absolute module path. - */ - - Config.prototype.generateModuleCachePath = function generateModuleCachePath(pkg) { - invariant(this.cacheFolder, 'No package root'); - invariant(pkg, 'Undefined package'); - - var slug = this.generateUniquePackageSlug(pkg); - return path.join(this.cacheFolder, slug, 'node_modules', pkg.name); - }; - - /** - */ - - Config.prototype.getUnpluggedPath = function getUnpluggedPath() { - return path.join(this.lockfileFolder, '.pnp', 'unplugged'); - }; - - /** - */ - - Config.prototype.generatePackageUnpluggedPath = function generatePackageUnpluggedPath(pkg) { - var slug = this.generateUniquePackageSlug(pkg); - return path.join(this.getUnpluggedPath(), slug, 'node_modules', pkg.name); - }; - - /** - */ - - Config.prototype.listUnpluggedPackageFolders = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var unpluggedPackages = new (_map || _load_map()).default(); - var unpluggedPath = this.getUnpluggedPath(); - - if (!(yield (_fs || _load_fs()).exists(unpluggedPath))) { - return unpluggedPackages; - } - - for (var _iterator4 = yield (_fs || _load_fs()).readdir(unpluggedPath), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - var unpluggedName = _ref6; - - var nmListing = yield (_fs || _load_fs()).readdir(path.join(unpluggedPath, unpluggedName, 'node_modules')); - invariant(nmListing.length === 1, 'A single folder should be in the unplugged directory'); - - var target = path.join(unpluggedPath, unpluggedName, `node_modules`, nmListing[0]); - unpluggedPackages.set(unpluggedName, target); - } - - return unpluggedPackages; - }); - - function listUnpluggedPackageFolders() { - return _ref5.apply(this, arguments); - } - - return listUnpluggedPackageFolders; - }(); - - /** - * Execute lifecycle scripts in the specified directory. Ignoring when the --ignore-scripts flag has been - * passed. - */ - - Config.prototype.executeLifecycleScript = function executeLifecycleScript(commandName, cwd) { - if (this.ignoreScripts) { - return (_promise || _load_promise()).default.resolve(); - } else { - return (0, (_executeLifecycleScript || _load_executeLifecycleScript()).execFromManifest)(this, commandName, cwd || this.cwd); - } - }; - - /** - * Generate an absolute temporary filename location based on the input filename. - */ - - Config.prototype.getTemp = function getTemp(filename) { - invariant(this.tempFolder, 'No temp folder'); - return path.join(this.tempFolder, filename); - }; - - /** - * Remote packages may be cached in a file system to be available for offline installation. - * Second time the same package needs to be installed it will be loaded from there. - * Given a package's filename, return a path in the offline mirror location. - */ - - Config.prototype.getOfflineMirrorPath = function getOfflineMirrorPath(packageFilename) { - var mirrorPath = void 0; - - var _arr = ['npm', 'yarn']; - for (var _i5 = 0; _i5 < _arr.length; _i5++) { - var _key2 = _arr[_i5]; - var _registry2 = this.registries[_key2]; - - if (_registry2 == null) { - continue; - } - - var registryMirrorPath = _registry2.config['yarn-offline-mirror']; - - if (registryMirrorPath === false) { - return null; - } - - if (registryMirrorPath == null) { - continue; - } - - mirrorPath = registryMirrorPath; - } - - if (mirrorPath == null) { - return null; - } - - if (packageFilename == null) { - return mirrorPath; - } - - return path.join(mirrorPath, path.basename(packageFilename)); - }; - - /** - * Checker whether the folder input is a valid module folder. We output a yarn metadata - * file when we've successfully setup a folder so use this as a marker. - */ - - Config.prototype.isValidModuleDest = function () { - var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest) { - if (!(yield (_fs || _load_fs()).exists(dest))) { - return false; - } - - if (!(yield (_fs || _load_fs()).exists(path.join(dest, (_constants || _load_constants()).METADATA_FILENAME)))) { - return false; - } - - return true; - }); - - function isValidModuleDest(_x3) { - return _ref7.apply(this, arguments); - } - - return isValidModuleDest; - }(); - - /** - * Read package metadata and normalized package info. - */ - - Config.prototype.readPackageMetadata = function readPackageMetadata(dir) { - var _this3 = this; - - return this.getCache(`metadata-${dir}`, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var metadata = yield _this3.readJson(path.join(dir, (_constants || _load_constants()).METADATA_FILENAME)); - var pkg = yield _this3.readManifest(dir, metadata.registry); - - return { - package: pkg, - artifacts: metadata.artifacts || [], - hash: metadata.hash, - remote: metadata.remote, - registry: metadata.registry - }; - })); - }; - - /** - * Read normalized package info according yarn-metadata.json - * throw an error if package.json was not found - */ - - Config.prototype.readManifest = function readManifest(dir, priorityRegistry) { - var _this4 = this; - - var isRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - return this.getCache(`manifest-${dir}`, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var manifest = yield _this4.maybeReadManifest(dir, priorityRegistry, isRoot); - - if (manifest) { - return manifest; - } else { - throw new (_errors || _load_errors()).MessageError(_this4.reporter.lang('couldntFindPackagejson', dir), 'ENOENT'); - } - })); - }; - - /** - * try get the manifest file by looking - * 1. manifest file in cache - * 2. manifest file in registry - */ - - - Config.prototype.maybeReadManifest = function () { - var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, priorityRegistry) { - var isRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var metadataLoc = path.join(dir, (_constants || _load_constants()).METADATA_FILENAME); - - if (yield (_fs || _load_fs()).exists(metadataLoc)) { - var metadata = yield this.readJson(metadataLoc); - - if (!priorityRegistry) { - priorityRegistry = metadata.priorityRegistry; - } - - if (typeof metadata.manifest !== 'undefined') { - return metadata.manifest; - } - } - - if (priorityRegistry) { - var file = yield this.tryManifest(dir, priorityRegistry, isRoot); - if (file) { - return file; - } - } - - for (var _iterator5 = (0, (_keys || _load_keys()).default)((_index2 || _load_index2()).registries), _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref11; - - if (_isArray5) { - if (_i6 >= _iterator5.length) break; - _ref11 = _iterator5[_i6++]; - } else { - _i6 = _iterator5.next(); - if (_i6.done) break; - _ref11 = _i6.value; - } - - var _registry3 = _ref11; - - if (priorityRegistry === _registry3) { - continue; - } - - var _file = yield this.tryManifest(dir, _registry3, isRoot); - if (_file) { - return _file; - } - } - - return null; - }); - - function maybeReadManifest(_x5, _x6) { - return _ref10.apply(this, arguments); - } - - return maybeReadManifest; - }(); - - /** - * Read the root manifest. - */ - - Config.prototype.readRootManifest = function readRootManifest() { - return this.readManifest(this.cwd, 'npm', true); - }; - - /** - * Try and find package info with the input directory and registry. - */ - - Config.prototype.tryManifest = function () { - var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, registry, isRoot) { - var filename = (_index2 || _load_index2()).registries[registry].filename; - - var loc = path.join(dir, filename); - if (yield (_fs || _load_fs()).exists(loc)) { - var data = yield this.readJson(loc); - data._registry = registry; - data._loc = loc; - return (0, (_index || _load_index()).default)(data, dir, this, isRoot); - } else { - return null; - } - }); - - function tryManifest(_x8, _x9, _x10) { - return _ref12.apply(this, arguments); - } - - return tryManifest; - }(); - - Config.prototype.findManifest = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, isRoot) { - for (var _iterator6 = (_index2 || _load_index2()).registryNames, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref14; - - if (_isArray6) { - if (_i7 >= _iterator6.length) break; - _ref14 = _iterator6[_i7++]; - } else { - _i7 = _iterator6.next(); - if (_i7.done) break; - _ref14 = _i7.value; - } - - var _registry4 = _ref14; - - var manifest = yield this.tryManifest(dir, _registry4, isRoot); - - if (manifest) { - return manifest; - } - } - - return null; - }); - - function findManifest(_x11, _x12) { - return _ref13.apply(this, arguments); - } - - return findManifest; - }(); - - Config.prototype.findWorkspaceRoot = function () { - var _ref15 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (initial) { - var previous = null; - var current = path.normalize(initial); - if (!(yield (_fs || _load_fs()).exists(current))) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('folderMissing', current)); - } - - do { - var manifest = yield this.findManifest(current, true); - var ws = extractWorkspaces(manifest); - if (ws && ws.packages) { - var relativePath = path.relative(current, initial); - if (relativePath === '' || micromatch([relativePath], ws.packages).length > 0) { - return current; - } else { - return null; - } - } - - previous = current; - current = path.dirname(current); - } while (current !== previous); - - return null; - }); - - function findWorkspaceRoot(_x13) { - return _ref15.apply(this, arguments); - } - - return findWorkspaceRoot; - }(); - - Config.prototype.resolveWorkspaces = function () { - var _ref16 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (root, rootManifest) { - var _this5 = this; - - var workspaces = {}; - if (!this.workspacesEnabled) { - return workspaces; - } - - var ws = this.getWorkspaces(rootManifest, true); - var patterns = ws && ws.packages ? ws.packages : []; - - if (!Array.isArray(patterns)) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('workspacesSettingMustBeArray')); - } - - var registryFilenames = (_index2 || _load_index2()).registryNames.map(function (registryName) { - return _this5.registries[registryName].constructor.filename; - }).join('|'); - var trailingPattern = `/+(${registryFilenames})`; - // anything under folder (node_modules) should be ignored, thus use the '**' instead of shallow match "*" - var ignorePatterns = this.registryFolders.map(function (folder) { - return `/${folder}/**/+(${registryFilenames})`; - }); - - var files = yield (_promise || _load_promise()).default.all(patterns.map(function (pattern) { - return (_fs || _load_fs()).glob(pattern.replace(/\/?$/, trailingPattern), { - cwd: root, - ignore: ignorePatterns.map(function (ignorePattern) { - return pattern.replace(/\/?$/, ignorePattern); - }) - }); - })); - - for (var _iterator7 = new (_set || _load_set()).default((_ref18 = []).concat.apply(_ref18, files)), _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator7);;) { - var _ref18; - - var _ref17; - - if (_isArray7) { - if (_i8 >= _iterator7.length) break; - _ref17 = _iterator7[_i8++]; - } else { - _i8 = _iterator7.next(); - if (_i8.done) break; - _ref17 = _i8.value; - } - - var file = _ref17; - - var _loc = path.join(root, path.dirname(file)); - var manifest = yield this.findManifest(_loc, false); - - if (!manifest) { - continue; - } - - if (!manifest.name) { - this.reporter.warn(this.reporter.lang('workspaceNameMandatory', _loc)); - continue; - } - if (!manifest.version) { - this.reporter.warn(this.reporter.lang('workspaceVersionMandatory', _loc)); - continue; - } - - if (Object.prototype.hasOwnProperty.call(workspaces, manifest.name)) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('workspaceNameDuplicate', manifest.name)); - } - - workspaces[manifest.name] = { loc: _loc, manifest }; - } - - return workspaces; - }); - - function resolveWorkspaces(_x14, _x15) { - return _ref16.apply(this, arguments); - } - - return resolveWorkspaces; - }(); - - // workspaces functions - - - Config.prototype.getWorkspaces = function getWorkspaces(manifest) { - var shouldThrow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!manifest || !this.workspacesEnabled) { - return undefined; - } - - var ws = extractWorkspaces(manifest); - - if (!ws) { - return ws; - } - - // validate eligibility - var wsCopy = (0, (_extends2 || _load_extends()).default)({}, ws); - var warnings = []; - var errors = []; - - // packages - if (wsCopy.packages && wsCopy.packages.length > 0 && !manifest.private) { - errors.push(this.reporter.lang('workspacesRequirePrivateProjects')); - wsCopy = undefined; - } - // nohoist - if (wsCopy && wsCopy.nohoist && wsCopy.nohoist.length > 0) { - if (!this.workspacesNohoistEnabled) { - warnings.push(this.reporter.lang('workspacesNohoistDisabled', manifest.name)); - wsCopy.nohoist = undefined; - } else if (!manifest.private) { - errors.push(this.reporter.lang('workspacesNohoistRequirePrivatePackages', manifest.name)); - wsCopy.nohoist = undefined; - } - } - - if (errors.length > 0 && shouldThrow) { - throw new (_errors || _load_errors()).MessageError(errors.join('\n')); - } - - var msg = errors.concat(warnings).join('\n'); - if (msg.length > 0) { - this.reporter.warn(msg); - } - - return wsCopy; - }; - - /** - * Description - */ - - Config.prototype.getFolder = function getFolder(pkg) { - var registryName = pkg._registry; - if (!registryName) { - var ref = pkg._reference; - invariant(ref, 'expected reference'); - registryName = ref.registry; - } - return this.registries[registryName].folder; - }; - - /** - * Get root manifests. - */ - - Config.prototype.getRootManifests = function () { - var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var manifests = {}; - for (var _iterator8 = (_index2 || _load_index2()).registryNames, _isArray8 = Array.isArray(_iterator8), _i9 = 0, _iterator8 = _isArray8 ? _iterator8 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator8);;) { - var _ref20; - - if (_isArray8) { - if (_i9 >= _iterator8.length) break; - _ref20 = _iterator8[_i9++]; - } else { - _i9 = _iterator8.next(); - if (_i9.done) break; - _ref20 = _i9.value; - } - - var _registryName = _ref20; - - var _registry5 = (_index2 || _load_index2()).registries[_registryName]; - var jsonLoc = path.join(this.cwd, _registry5.filename); - - var _object = {}; - var _exists = false; - var _indent = void 0; - if (yield (_fs || _load_fs()).exists(jsonLoc)) { - _exists = true; - - var info = yield this.readJson(jsonLoc, (_fs || _load_fs()).readJsonAndFile); - _object = info.object; - _indent = detectIndent(info.content).indent || undefined; - } - manifests[_registryName] = { loc: jsonLoc, object: _object, exists: _exists, indent: _indent }; - } - return manifests; - }); - - function getRootManifests() { - return _ref19.apply(this, arguments); - } - - return getRootManifests; - }(); - - /** - * Save root manifests. - */ - - Config.prototype.saveRootManifests = function () { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (manifests) { - for (var _iterator9 = (_index2 || _load_index2()).registryNames, _isArray9 = Array.isArray(_iterator9), _i10 = 0, _iterator9 = _isArray9 ? _iterator9 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator9);;) { - var _ref22; - - if (_isArray9) { - if (_i10 >= _iterator9.length) break; - _ref22 = _iterator9[_i10++]; - } else { - _i10 = _iterator9.next(); - if (_i10.done) break; - _ref22 = _i10.value; - } - - var _registryName2 = _ref22; - var _manifests$_registryN = manifests[_registryName2], - _loc2 = _manifests$_registryN.loc, - _object2 = _manifests$_registryN.object, - _exists2 = _manifests$_registryN.exists, - _indent2 = _manifests$_registryN.indent; - - if (!_exists2 && !(0, (_keys || _load_keys()).default)(_object2).length) { - continue; - } - - for (var _iterator10 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator10);;) { - var _ref23; - - if (_isArray10) { - if (_i11 >= _iterator10.length) break; - _ref23 = _iterator10[_i11++]; - } else { - _i11 = _iterator10.next(); - if (_i11.done) break; - _ref23 = _i11.value; - } - - var field = _ref23; - - if (_object2[field]) { - _object2[field] = sortObject(_object2[field]); - } - } - - yield (_fs || _load_fs()).writeFilePreservingEol(_loc2, (0, (_stringify || _load_stringify()).default)(_object2, null, _indent2 || (_constants || _load_constants()).DEFAULT_INDENT) + '\n'); - } - }); - - function saveRootManifests(_x17) { - return _ref21.apply(this, arguments); - } - - return saveRootManifests; - }(); - - /** - * Call the passed factory (defaults to fs.readJson) and rethrow a pretty error message if it was the result - * of a syntax error. - */ - - Config.prototype.readJson = function readJson(loc) { - var factory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (_fs || _load_fs()).readJson; - - try { - return factory(loc); - } catch (err) { - if (err instanceof SyntaxError) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('jsonError', loc, err.message)); - } else { - throw err; - } - } - }; - - Config.create = function () { - var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var reporter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new (_index3 || _load_index3()).NoopReporter(); - - var config = new Config(reporter); - yield config.init(opts); - return config; - }); - - function create() { - return _ref24.apply(this, arguments); - } - - return create; - }(); - - return Config; -}(); - -exports.default = Config; -function extractWorkspaces(manifest) { - if (!manifest || !manifest.workspaces) { - return undefined; - } - - if (Array.isArray(manifest.workspaces)) { - return { packages: manifest.workspaces }; - } - - if (manifest.workspaces.packages && Array.isArray(manifest.workspaces.packages) || manifest.workspaces.nohoist && Array.isArray(manifest.workspaces.nohoist)) { - return manifest.workspaces; - } - - return undefined; -} - -/***/ }), -/* 145 */ -/***/ (function(module, exports) { - -module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - if(!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - return module; -}; - - -/***/ }), -/* 146 */ -/***/ (function(module, exports) { - -module.exports = require("net"); - -/***/ }), -/* 147 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var chalk = __webpack_require__(35); -var figures = __webpack_require__(229); - -/** - * Separator object - * Used to space/separate choices group - * @constructor - * @param {String} line Separation line content (facultative) - */ - -var Separator = function () { - function Separator(line) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Separator); - - this.type = 'separator'; - this.line = chalk.dim(line || new Array(15).join(figures.line)); - } - - /** - * Stringify separator - * @return {String} the separator display string - */ - - - Separator.prototype.toString = function toString() { - return this.line; - }; - - return Separator; -}(); - -/** - * Helper function returning false if object is a separator - * @param {Object} obj object to test against - * @return {Boolean} `false` if object is a separator - */ - -Separator.exclude = function (obj) { - return obj.type !== 'separator'; -}; - -module.exports = Separator; - -/***/ }), -/* 148 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _ = __webpack_require__(44); -var chalk = __webpack_require__(35); - -/** - * The paginator keeps track of a pointer index in a list and returns - * a subset of the choices if the list is too long. - */ - -var Paginator = function () { - function Paginator(screen) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Paginator); - - this.pointer = 0; - this.lastIndex = 0; - this.screen = screen; - } - - Paginator.prototype.paginate = function paginate(output, active, pageSize) { - pageSize = pageSize || 7; - var middleOfList = Math.floor(pageSize / 2); - var lines = output.split('\n'); - - if (this.screen) { - lines = this.screen.breakLines(lines); - active = _.sum(lines.map(function (lineParts) { - return lineParts.length; - }).splice(0, active)); - lines = _.flatten(lines); - } - - // Make sure there's enough lines to paginate - if (lines.length <= pageSize) { - return output; - } - - // Move the pointer only when the user go down and limit it to the middle of the list - if (this.pointer < middleOfList && this.lastIndex < active && active - this.lastIndex < pageSize) { - this.pointer = Math.min(middleOfList, this.pointer + active - this.lastIndex); - } - this.lastIndex = active; - - // Duplicate the lines so it give an infinite list look - var infinite = _.flatten([lines, lines, lines]); - var topIndex = Math.max(0, active + lines.length - this.pointer); - - var section = infinite.splice(topIndex, pageSize).join('\n'); - return section + '\n' + chalk.dim('(Move up and down to reveal more choices)'); - }; - - return Paginator; -}(); - -module.exports = Paginator; - -/***/ }), -/* 149 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.run = exports.Add = undefined; - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var run = exports.run = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - if (!args.length) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('missingAddDependencies')); - } - - var lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter); - - yield (0, (_install || _load_install()).wrapLifecycle)(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var install = new Add(args, flags, config, reporter, lockfile); - yield install.init(); - })); - }); - - return function run(_x5, _x6, _x7, _x8) { - return _ref13.apply(this, arguments); - }; -}(); - -exports.hasWrapper = hasWrapper; -exports.setFlags = setFlags; - -var _lockfile; - -function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(24)); -} - -var _normalizePattern2; - -function _load_normalizePattern() { - return _normalizePattern2 = __webpack_require__(51); -} - -var _workspaceLayout; - -function _load_workspaceLayout() { - return _workspaceLayout = _interopRequireDefault(__webpack_require__(86)); -} - -var _index; - -function _load_index() { - return _index = __webpack_require__(62); -} - -var _list; - -function _load_list() { - return _list = __webpack_require__(292); -} - -var _install; - -function _load_install() { - return _install = __webpack_require__(40); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _invariant; - -function _load_invariant() { - return _invariant = _interopRequireDefault(__webpack_require__(13)); -} - -var _path; - -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(2)); -} - -var _semver; - -function _load_semver() { - return _semver = _interopRequireDefault(__webpack_require__(26)); -} - -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 }; } - -var SILENCE_DEPENDENCY_TYPE_WARNINGS = ['upgrade', 'upgrade-interactive']; - -var Add = exports.Add = function (_Install) { - (0, (_inherits2 || _load_inherits()).default)(Add, _Install); - - function Add(args, flags, config, reporter, lockfile) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Add); - - var workspaceRootIsCwd = config.cwd === config.lockfileFolder; - var _flags = flags ? (0, (_extends2 || _load_extends()).default)({}, flags, { workspaceRootIsCwd }) : { workspaceRootIsCwd }; - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _Install.call(this, _flags, config, reporter, lockfile)); - - _this.args = args; - // only one flag is supported, so we can figure out which one was passed to `yarn add` - _this.flagToOrigin = [flags.dev && 'devDependencies', flags.optional && 'optionalDependencies', flags.peer && 'peerDependencies', 'dependencies'].filter(Boolean).shift(); - return _this; - } - - /** - * TODO - */ - - Add.prototype.prepareRequests = function prepareRequests(requests) { - var requestsWithArgs = requests.slice(); - - for (var _iterator = this.args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var _pattern = _ref; - - requestsWithArgs.push({ - pattern: _pattern, - registry: 'npm', - optional: false - }); - } - return requestsWithArgs; - }; - - /** - * returns version for a pattern based on Manifest - */ - - - Add.prototype.getPatternVersion = function getPatternVersion(pattern, pkg) { - var tilde = this.flags.tilde; - var configPrefix = String(this.config.getOption('save-prefix')); - var exact = this.flags.exact || Boolean(this.config.getOption('save-exact')) || configPrefix === ''; - - var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern), - hasVersion = _normalizePattern.hasVersion, - range = _normalizePattern.range; - - var version = void 0; - - if ((0, (_index || _load_index()).getExoticResolver)(pattern)) { - // wasn't a name/range tuple so this is just a raw exotic pattern - version = pattern; - } else if (hasVersion && range && ((_semver || _load_semver()).default.satisfies(pkg.version, range) || (0, (_index || _load_index()).getExoticResolver)(range))) { - // if the user specified a range then use it verbatim - version = range; - } - - if (!version || (_semver || _load_semver()).default.valid(version)) { - var prefix = configPrefix || '^'; - - if (tilde) { - prefix = '~'; - } else if (version || exact) { - prefix = ''; - } - version = `${prefix}${pkg.version}`; - } - - return version; - }; - - Add.prototype.preparePatterns = function preparePatterns(patterns) { - var preparedPatterns = patterns.slice(); - for (var _iterator2 = this.resolver.dedupePatterns(this.args), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var _pattern2 = _ref2; - - var pkg = this.resolver.getResolvedPattern(_pattern2); - (0, (_invariant || _load_invariant()).default)(pkg, `missing package ${_pattern2}`); - var _version = this.getPatternVersion(_pattern2, pkg); - var newPattern = `${pkg.name}@${_version}`; - preparedPatterns.push(newPattern); - this.addedPatterns.push(newPattern); - if (newPattern === _pattern2) { - continue; - } - this.resolver.replacePattern(_pattern2, newPattern); - } - return preparedPatterns; - }; - - Add.prototype.preparePatternsForLinking = function preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) { - // remove the newly added patterns if cwd != root and update the in-memory package dependency instead - if (cwdIsRoot) { - return patterns; - } - - var manifest = void 0; - var cwdPackage = `${cwdManifest.name}@${cwdManifest.version}`; - try { - manifest = this.resolver.getStrictResolvedPattern(cwdPackage); - } catch (e) { - this.reporter.warn(this.reporter.lang('unknownPackage', cwdPackage)); - return patterns; - } - - var newPatterns = patterns; - this._iterateAddedPackages(function (pattern, registry, dependencyType, pkgName, version) { - // remove added package from patterns list - var filtered = newPatterns.filter(function (p) { - return p !== pattern; - }); - (0, (_invariant || _load_invariant()).default)(newPatterns.length - filtered.length > 0, `expect added pattern '${pattern}' in the list: ${patterns.toString()}`); - newPatterns = filtered; - - // add new package into in-memory manifest so they can be linked properly - manifest[dependencyType] = manifest[dependencyType] || {}; - if (manifest[dependencyType][pkgName] === version) { - // package already existed - return; - } - - // update dependencies in the manifest - (0, (_invariant || _load_invariant()).default)(manifest._reference, 'manifest._reference should not be null'); - var ref = manifest._reference; - - ref['dependencies'] = ref['dependencies'] || []; - ref['dependencies'].push(pattern); - }); - - return newPatterns; - }; - - Add.prototype.bailout = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, workspaceLayout) { - var lockfileCache = this.lockfile.cache; - if (!lockfileCache) { - return false; - } - var match = yield this.integrityChecker.check(patterns, lockfileCache, this.flags, workspaceLayout); - var haveLockfile = yield (_fs || _load_fs()).exists((_path || _load_path()).default.join(this.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME)); - if (match.integrityFileMissing && haveLockfile) { - // Integrity file missing, force script installations - this.scripts.setForce(true); - } - return false; - }); - - function bailout(_x, _x2) { - return _ref3.apply(this, arguments); - } - - return bailout; - }(); - - /** - * Description - */ - - Add.prototype.init = function () { - var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var isWorkspaceRoot = this.config.workspaceRootFolder && this.config.cwd === this.config.workspaceRootFolder; - - // running "yarn add something" in a workspace root is often a mistake - if (isWorkspaceRoot && !this.flags.ignoreWorkspaceRootCheck) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('workspacesAddRootCheck')); - } - - this.addedPatterns = []; - var patterns = yield (_install || _load_install()).Install.prototype.init.call(this); - yield this.maybeOutputSaveTree(patterns); - return patterns; - }); - - function init() { - return _ref4.apply(this, arguments); - } - - return init; - }(); - - Add.prototype.applyChanges = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (manifests) { - var _this2 = this; - - yield (_install || _load_install()).Install.prototype.applyChanges.call(this, manifests); - - // fill rootPatternsToOrigin without `excludePatterns` - yield (_install || _load_install()).Install.prototype.fetchRequestFromCwd.call(this); - - this._iterateAddedPackages(function (pattern, registry, dependencyType, pkgName, version) { - // add it to manifest - var object = manifests[registry].object; - - - object[dependencyType] = object[dependencyType] || {}; - object[dependencyType][pkgName] = version; - if (SILENCE_DEPENDENCY_TYPE_WARNINGS.indexOf(_this2.config.commandName) === -1 && dependencyType !== _this2.flagToOrigin) { - _this2.reporter.warn(_this2.reporter.lang('moduleAlreadyInManifest', pkgName, dependencyType, _this2.flagToOrigin)); - } - }); - - return true; - }); - - function applyChanges(_x3) { - return _ref5.apply(this, arguments); - } - - return applyChanges; - }(); - - /** - * Description - */ - - Add.prototype.fetchRequestFromCwd = function fetchRequestFromCwd() { - return (_install || _load_install()).Install.prototype.fetchRequestFromCwd.call(this, this.args); - }; - - /** - * Output a tree of any newly added dependencies. - */ - - Add.prototype.maybeOutputSaveTree = function () { - var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns) { - // don't limit the shown tree depth - var opts = { - reqDepth: 0 - }; - - // restore the original patterns - var merged = [].concat(patterns, this.addedPatterns); - - var _ref7 = yield (0, (_list || _load_list()).buildTree)(this.resolver, this.linker, merged, opts, true, true), - trees = _ref7.trees, - count = _ref7.count; - - if (count === 1) { - this.reporter.success(this.reporter.lang('savedNewDependency')); - } else { - this.reporter.success(this.reporter.lang('savedNewDependencies', count)); - } - - if (!count) { - return; - } - - var resolverPatterns = new (_set || _load_set()).default(); - for (var _iterator3 = patterns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref8; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref8 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref8 = _i3.value; - } - - var _pattern3 = _ref8; - - var _ref10 = this.resolver.getResolvedPattern(_pattern3) || {}, - _version2 = _ref10.version, - name = _ref10.name; - - resolverPatterns.add(`${name}@${_version2}`); - } - var directRequireDependencies = trees.filter(function (_ref9) { - var name = _ref9.name; - return resolverPatterns.has(name); - }); - - this.reporter.info(this.reporter.lang('directDependencies')); - this.reporter.tree('newDirectDependencies', directRequireDependencies); - this.reporter.info(this.reporter.lang('allDependencies')); - this.reporter.tree('newAllDependencies', trees); - }); - - function maybeOutputSaveTree(_x4) { - return _ref6.apply(this, arguments); - } - - return maybeOutputSaveTree; - }(); - - /** - * Save added packages to manifest if any of the --save flags were used. - */ - - Add.prototype.savePackages = function () { - var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {}); - - function savePackages() { - return _ref11.apply(this, arguments); - } - - return savePackages; - }(); - - Add.prototype._iterateAddedPackages = function _iterateAddedPackages(f) { - var _this3 = this; - - var patternOrigins = (0, (_keys || _load_keys()).default)(this.rootPatternsToOrigin); - - // add new patterns to their appropriate registry manifest - - var _loop = function _loop(_pattern4) { - var pkg = _this3.resolver.getResolvedPattern(_pattern4); - (0, (_invariant || _load_invariant()).default)(pkg, `missing package ${_pattern4}`); - var version = _this3.getPatternVersion(_pattern4, pkg); - var ref = pkg._reference; - (0, (_invariant || _load_invariant()).default)(ref, 'expected package reference'); - // lookup the package to determine dependency type; used during `yarn upgrade` - var depType = patternOrigins.reduce(function (acc, prev) { - if (prev.indexOf(`${pkg.name}@`) === 0) { - return _this3.rootPatternsToOrigin[prev]; - } - return acc; - }, null); - - // depType is calculated when `yarn upgrade` command is used - var target = depType || _this3.flagToOrigin; - - f(_pattern4, ref.registry, target, pkg.name, version); - }; - - for (var _iterator4 = this.addedPatterns, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref12; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref12 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref12 = _i4.value; - } - - var _pattern4 = _ref12; - - _loop(_pattern4); - } - }; - - return Add; -}((_install || _load_install()).Install); - -function hasWrapper(commander) { - return true; -} - -function setFlags(commander) { - commander.description('Installs a package and any packages that it depends on.'); - commander.usage('add [packages ...] [flags]'); - commander.option('-W, --ignore-workspace-root-check', 'required to run yarn add inside a workspace root'); - commander.option('-D, --dev', 'save package to your `devDependencies`'); - commander.option('-P, --peer', 'save package to your `peerDependencies`'); - commander.option('-O, --optional', 'save package to your `optionalDependencies`'); - commander.option('-E, --exact', 'install exact version'); - commander.option('-T, --tilde', 'install most recent release with the same minor version'); - commander.option('-A', '--audit', 'Run vulnerability audit on installed packages'); -} - -/***/ }), -/* 150 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.run = exports.pack = exports.packTarball = undefined; - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _from; - -function _load_from() { - return _from = _interopRequireDefault(__webpack_require__(52)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var packTarball = exports.packTarball = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { - var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - mapHeader = _ref2.mapHeader; - - var pkg = yield config.readRootManifest(); - var bundleDependencies = pkg.bundleDependencies, - main = pkg.main, - onlyFiles = pkg.files; - - // include required files - - var filters = NEVER_IGNORE.slice(); - // include default filters unless `files` is used - if (!onlyFiles) { - filters = filters.concat(DEFAULT_IGNORE); - } - if (main) { - filters = filters.concat((0, (_filter || _load_filter()).ignoreLinesToRegex)(['!/' + main])); - } - - // include bundleDependencies - var bundleDependenciesFiles = []; - if (bundleDependencies) { - for (var _iterator = bundleDependencies, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref3; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref3 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref3 = _i.value; - } - - var dependency = _ref3; - - var dependencyList = depsFor(dependency, config.cwd); - - for (var _iterator2 = dependencyList, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref4; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref4 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref4 = _i2.value; - } - - var dep = _ref4; - - var filesForBundledDep = yield (_fs || _load_fs()).walk(dep.baseDir, null, new (_set || _load_set()).default(FOLDERS_IGNORE)); - bundleDependenciesFiles = bundleDependenciesFiles.concat(filesForBundledDep); - } - } - } - - // `files` field - if (onlyFiles) { - var lines = ['*']; - lines = lines.concat(onlyFiles.map(function (filename) { - return `!${filename}`; - }), onlyFiles.map(function (filename) { - return `!${path.join(filename, '**')}`; - })); - var regexes = (0, (_filter || _load_filter()).ignoreLinesToRegex)(lines, './'); - filters = filters.concat(regexes); - } - - var files = yield (_fs || _load_fs()).walk(config.cwd, null, new (_set || _load_set()).default(FOLDERS_IGNORE)); - var dotIgnoreFiles = (0, (_filter || _load_filter()).filterOverridenGitignores)(files); - - // create ignores - for (var _iterator3 = dotIgnoreFiles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref5; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref5 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref5 = _i3.value; - } - - var file = _ref5; - - var raw = yield (_fs || _load_fs()).readFile(file.absolute); - var _lines = raw.split('\n'); - - var _regexes = (0, (_filter || _load_filter()).ignoreLinesToRegex)(_lines, path.dirname(file.relative)); - filters = filters.concat(_regexes); - } - - // files to definitely keep, takes precedence over ignore filter - var keepFiles = new (_set || _load_set()).default(); - - // files to definitely ignore - var ignoredFiles = new (_set || _load_set()).default(); - - // list of files that didn't match any of our patterns, if a directory in the chain above was matched - // then we should inherit it - var possibleKeepFiles = new (_set || _load_set()).default(); - - // apply filters - (0, (_filter || _load_filter()).sortFilter)(files, filters, keepFiles, possibleKeepFiles, ignoredFiles); - - // add the files for the bundled dependencies to the set of files to keep - for (var _iterator4 = bundleDependenciesFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - var _file = _ref6; - - var realPath = yield (_fs || _load_fs()).realpath(config.cwd); - keepFiles.add(path.relative(realPath, _file.absolute)); - } - - return packWithIgnoreAndHeaders(config.cwd, function (name) { - var relative = path.relative(config.cwd, name); - // Don't ignore directories, since we need to recurse inside them to check for unignored files. - if (fs2.lstatSync(name).isDirectory()) { - var isParentOfKeptFile = (0, (_from || _load_from()).default)(keepFiles).some(function (name) { - return !path.relative(relative, name).startsWith('..'); - }); - return !isParentOfKeptFile; - } - // Otherwise, ignore a file if we're not supposed to keep it. - return !keepFiles.has(relative); - }, { mapHeader }); - }); - - return function packTarball(_x) { - return _ref.apply(this, arguments); - }; -}(); - -var pack = exports.pack = function () { - var _ref8 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { - var packer = yield packTarball(config); - var compressor = packer.pipe(new zlib.Gzip()); - - return compressor; - }); - - return function pack(_x4) { - return _ref8.apply(this, arguments); - }; -}(); - -var run = exports.run = function () { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - var pkg = yield config.readRootManifest(); - if (!pkg.name) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('noName')); - } - if (!pkg.version) { - throw new (_errors || _load_errors()).MessageError(reporter.lang('noVersion')); - } - - var normaliseScope = function normaliseScope(name) { - return name[0] === '@' ? name.substr(1).replace('/', '-') : name; - }; - var filename = flags.filename || path.join(config.cwd, `${normaliseScope(pkg.name)}-v${pkg.version}.tgz`); - - yield config.executeLifecycleScript('prepack'); - - var stream = yield pack(config); - - yield new (_promise || _load_promise()).default(function (resolve, reject) { - stream.pipe(fs2.createWriteStream(filename)); - stream.on('error', reject); - stream.on('close', resolve); - }); - - yield config.executeLifecycleScript('postpack'); - - reporter.success(reporter.lang('packWroteTarball', filename)); - }); - - return function run(_x5, _x6, _x7, _x8) { - return _ref9.apply(this, arguments); - }; -}(); - -exports.packWithIgnoreAndHeaders = packWithIgnoreAndHeaders; -exports.setFlags = setFlags; -exports.hasWrapper = hasWrapper; - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _filter; - -function _load_filter() { - return _filter = __webpack_require__(311); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -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 }; } - -var zlib = __webpack_require__(181); -var path = __webpack_require__(2); -var tar = __webpack_require__(177); -var fs2 = __webpack_require__(12); -var depsFor = __webpack_require__(726); - -var FOLDERS_IGNORE = [ -// never allow version control folders -'.git', 'CVS', '.svn', '.hg', 'node_modules']; - -var DEFAULT_IGNORE = (0, (_filter || _load_filter()).ignoreLinesToRegex)([].concat(FOLDERS_IGNORE, [ - -// ignore cruft -'yarn.lock', '.lock-wscript', '.wafpickle-{0..9}', '*.swp', '._*', 'npm-debug.log', 'yarn-error.log', '.npmrc', '.yarnrc', '.npmignore', '.gitignore', '.DS_Store'])); - -var NEVER_IGNORE = (0, (_filter || _load_filter()).ignoreLinesToRegex)([ -// never ignore these files -'!/package.json', '!/readme*', '!/+(license|licence)*', '!/+(changes|changelog|history)*']); - -function packWithIgnoreAndHeaders(cwd, ignoreFunction) { - var _ref7 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - mapHeader = _ref7.mapHeader; - - return tar.pack(cwd, { - ignore: ignoreFunction, - map: function map(header) { - var suffix = header.name === '.' ? '' : `/${header.name}`; - header.name = `package${suffix}`; - delete header.uid; - delete header.gid; - return mapHeader ? mapHeader(header) : header; - } - }); -} - -function setFlags(commander) { - commander.description('Creates a compressed gzip archive of package dependencies.'); - commander.option('-f, --filename ', 'filename'); -} - -function hasWrapper(commander, args) { - return true; -} - -/***/ }), -/* 151 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _index; - -function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(200)); -} - -var _portableScript; - -function _load_portableScript() { - return _portableScript = __webpack_require__(316); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _mutex; - -function _load_mutex() { - return _mutex = _interopRequireDefault(__webpack_require__(313)); -} - -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 }; } - -var cmdShim = __webpack_require__(183); -/* eslint no-unused-vars: 0 */ - -var path = __webpack_require__(2); - -var BaseFetcher = function () { - function BaseFetcher(dest, remote, config) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, BaseFetcher); - - this.reporter = config.reporter; - this.packageName = remote.packageName; - this.reference = remote.reference; - this.registry = remote.registry; - this.hash = remote.hash; - this.remote = remote; - this.config = config; - this.dest = dest; - } - - BaseFetcher.prototype.setupMirrorFromCache = function setupMirrorFromCache() { - // fetcher subclasses may use this to perform actions such as copying over a cached tarball to the offline - // mirror etc - return (_promise || _load_promise()).default.resolve(); - }; - - BaseFetcher.prototype._fetch = function _fetch() { - return (_promise || _load_promise()).default.reject(new Error('Not implemented')); - }; - - BaseFetcher.prototype.fetch = function fetch(defaultManifest) { - var _this = this; - - return (_fs || _load_fs()).lockQueue.push(this.dest, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - yield (_fs || _load_fs()).mkdirp(_this.dest); - - // fetch package and get the hash - - var _ref2 = yield _this._fetch(), - hash = _ref2.hash; - - var pkg = yield (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // load the new normalized manifest - try { - return yield _this.config.readManifest(_this.dest, _this.registry); - } catch (e) { - if (e.code === 'ENOENT' && defaultManifest) { - return (0, (_index || _load_index()).default)(defaultManifest, _this.dest, _this.config, false); - } else { - throw e; - } - } - })(); - - if (pkg.bin) { - for (var _iterator = (0, (_keys || _load_keys()).default)(pkg.bin), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref4; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref4 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref4 = _i.value; - } - - var binName = _ref4; - - var binDest = `${_this.dest}/.bin`; - - // Using any sort of absolute path here would prevent makePortableProxyScript from preserving symlinks when - // calling the binary - var src = path.resolve(_this.dest, pkg.bin[binName]); - - if (yield (_fs || _load_fs()).exists(src)) { - // We ensure that the target is executable - yield (_fs || _load_fs()).chmod(src, 0o755); - } - - yield (_fs || _load_fs()).mkdirp(binDest); - if (process.platform === 'win32') { - var unlockMutex = yield (0, (_mutex || _load_mutex()).default)(src); - try { - yield cmdShim.ifExists(src, `${binDest}/${binName}`); - } finally { - unlockMutex(); - } - } else { - yield (_fs || _load_fs()).symlink(src, `${binDest}/${binName}`); - } - } - } - - yield (_fs || _load_fs()).writeFile(path.join(_this.dest, (_constants || _load_constants()).METADATA_FILENAME), (0, (_stringify || _load_stringify()).default)({ - manifest: pkg, - artifacts: [], - remote: _this.remote, - registry: _this.registry, - hash - }, null, ' ')); - - return { - hash, - dest: _this.dest, - package: pkg, - cached: false - }; - })); - }; - - return BaseFetcher; -}(); - -exports.default = BaseFetcher; - -/***/ }), -/* 152 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(50)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var debug = __webpack_require__(672)('yarn'); - -var BlockingQueue = function () { - function BlockingQueue(alias) { - var maxConcurrency = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity; - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, BlockingQueue); - - this.concurrencyQueue = []; - this.maxConcurrency = maxConcurrency; - this.runningCount = 0; - this.warnedStuck = false; - this.alias = alias; - this.first = true; - - this.running = (0, (_map || _load_map()).default)(); - this.queue = (0, (_map || _load_map()).default)(); - - this.stuckTick = this.stuckTick.bind(this); - } - - BlockingQueue.prototype.stillActive = function stillActive() { - if (this.stuckTimer) { - clearTimeout(this.stuckTimer); - } - - this.stuckTimer = setTimeout(this.stuckTick, 5000); - - // We need to check the existence of unref because of https://github.com/facebook/jest/issues/4559 - // $FlowFixMe: Node's setInterval returns a Timeout, not a Number - this.stuckTimer.unref && this.stuckTimer.unref(); - }; - - BlockingQueue.prototype.stuckTick = function stuckTick() { - if (this.runningCount === 1) { - this.warnedStuck = true; - debug(`The ${(0, (_stringify || _load_stringify()).default)(this.alias)} blocking queue may be stuck. 5 seconds ` + `without any activity with 1 worker: ${(0, (_keys || _load_keys()).default)(this.running)[0]}`); - } - }; - - BlockingQueue.prototype.push = function push(key, factory) { - var _this = this; - - if (this.first) { - this.first = false; - } else { - this.stillActive(); - } - - return new (_promise || _load_promise()).default(function (resolve, reject) { - // we're already running so push ourselves to the queue - var queue = _this.queue[key] = _this.queue[key] || []; - queue.push({ factory, resolve, reject }); - - if (!_this.running[key]) { - _this.shift(key); - } - }); - }; - - BlockingQueue.prototype.shift = function shift(key) { - var _this2 = this; - - if (this.running[key]) { - delete this.running[key]; - this.runningCount--; - - if (this.stuckTimer) { - clearTimeout(this.stuckTimer); - this.stuckTimer = null; - } - - if (this.warnedStuck) { - this.warnedStuck = false; - debug(`${(0, (_stringify || _load_stringify()).default)(this.alias)} blocking queue finally resolved. Nothing to worry about.`); - } - } - - var queue = this.queue[key]; - if (!queue) { - return; - } - - var _queue$shift = queue.shift(), - resolve = _queue$shift.resolve, - reject = _queue$shift.reject, - factory = _queue$shift.factory; - - if (!queue.length) { - delete this.queue[key]; - } - - var next = function next() { - _this2.shift(key); - _this2.shiftConcurrencyQueue(); - }; - - var run = function run() { - _this2.running[key] = true; - _this2.runningCount++; - - factory().then(function (val) { - resolve(val); - next(); - return null; - }).catch(function (err) { - reject(err); - next(); - }); - }; - - this.maybePushConcurrencyQueue(run); - }; - - BlockingQueue.prototype.maybePushConcurrencyQueue = function maybePushConcurrencyQueue(run) { - if (this.runningCount < this.maxConcurrency) { - run(); - } else { - this.concurrencyQueue.push(run); - } - }; - - BlockingQueue.prototype.shiftConcurrencyQueue = function shiftConcurrencyQueue() { - if (this.runningCount < this.maxConcurrency) { - var fn = this.concurrencyQueue.shift(); - if (fn) { - fn(); - } - } - }; - - return BlockingQueue; -}(); - -exports.default = BlockingQueue; - -/***/ }), -/* 153 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.HashStream = undefined; - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -exports.hash = hash; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var crypto = __webpack_require__(21); -var stream = __webpack_require__(34); - -function hash(content) { - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'md5'; - - return crypto.createHash(type).update(content).digest('hex'); -} - -var HashStream = exports.HashStream = function (_stream$Transform) { - (0, (_inherits2 || _load_inherits()).default)(HashStream, _stream$Transform); - - function HashStream(options) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, HashStream); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _stream$Transform.call(this, options)); - - _this._hash = crypto.createHash('sha1'); - _this._updated = false; - return _this; - } - - HashStream.prototype._transform = function _transform(chunk, encoding, callback) { - this._updated = true; - this._hash.update(chunk); - callback(null, chunk); - }; - - HashStream.prototype.getHash = function getHash() { - return this._hash.digest('hex'); - }; - - HashStream.prototype.test = function test(sum) { - return this._updated && sum === this.getHash(); - }; - - return HashStream; -}(stream.Transform); - -/***/ }), -/* 154 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -exports.default = guessName; - -var _url; - -function _load_url() { - return _url = _interopRequireDefault(__webpack_require__(29)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function cleanup(name) { - name = name.replace(/-\d+\.\d+\.\d+/, ''); - return name.replace(/\.git$|\.zip$|\.tar\.gz$|\.tar\.bz2$/, ''); -} - -function guessNameFallback(source) { - // If cannot parse as url, just return cleaned up last part - var parts = source.split('/'); - return cleanup(parts[parts.length - 1]); -} - -function guessName(source) { - try { - var parsed = (_url || _load_url()).default.parse(source); - - if (!parsed.pathname) { - return guessNameFallback(source); - } - - var parts = parsed.pathname.split('/'); - - // Priority goes to part that ends with .git - for (var _iterator = parts, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var part = _ref; - - if (part.match(/\.git$/)) { - return cleanup(part); - } - } - - // Most likely a directory - if (parsed.host == null) { - return cleanup(parts[parts.length - 1]); - } - - // A site like github or gitlab - if (parts.length > 2) { - return cleanup(parts[2]); - } - - // Privately hosted package? - if (parts.length > 1) { - return cleanup(parts[1]); - } - - return guessNameFallback(source); - } catch (e) { - return guessNameFallback(source); - } -} - -/***/ }), -/* 155 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(221); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 156 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 157 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 158 */ -/***/ (function(module, exports, __webpack_require__) { - -var once = __webpack_require__(128); - -var noop = function() {}; - -var isRequest = function(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -}; - -var isChildProcess = function(stream) { - return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 -}; - -var eos = function(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; - - callback = once(callback || noop); - - var ws = stream._writableState; - var rs = stream._readableState; - var readable = opts.readable || (opts.readable !== false && stream.readable); - var writable = opts.writable || (opts.writable !== false && stream.writable); - - var onlegacyfinish = function() { - if (!stream.writable) onfinish(); - }; - - var onfinish = function() { - writable = false; - if (!readable) callback.call(stream); - }; - - var onend = function() { - readable = false; - if (!writable) callback.call(stream); - }; - - var onexit = function(exitCode) { - callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); - }; - - var onerror = function(err) { - callback.call(stream, err); - }; - - var onclose = function() { - if (readable && !(rs && rs.ended)) return callback.call(stream, new Error('premature close')); - if (writable && !(ws && ws.ended)) return callback.call(stream, new Error('premature close')); - }; - - var onrequest = function() { - stream.req.on('finish', onfinish); - }; - - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest(); - else stream.on('request', onrequest); - } else if (writable && !ws) { // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - if (isChildProcess(stream)) stream.on('exit', onexit); - - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - - return function() { - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('exit', onexit); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -}; - -module.exports = eos; - - -/***/ }), -/* 159 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = __webpack_require__(22); -var sshpk = __webpack_require__(260); -var util = __webpack_require__(9); - -var HASH_ALGOS = { - 'sha1': true, - 'sha256': true, - 'sha512': true -}; - -var PK_ALGOS = { - 'rsa': true, - 'dsa': true, - 'ecdsa': true -}; - -function HttpSignatureError(message, caller) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, caller || HttpSignatureError); - - this.message = message; - this.name = caller.name; -} -util.inherits(HttpSignatureError, Error); - -function InvalidAlgorithmError(message) { - HttpSignatureError.call(this, message, InvalidAlgorithmError); -} -util.inherits(InvalidAlgorithmError, HttpSignatureError); - -function validateAlgorithm(algorithm) { - var alg = algorithm.toLowerCase().split('-'); - - if (alg.length !== 2) { - throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' + - 'valid algorithm')); - } - - if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) { - throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' + - 'are not supported')); - } - - if (!HASH_ALGOS[alg[1]]) { - throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' + - 'supported hash algorithm')); - } - - return (alg); -} - -///--- API - -module.exports = { - - HASH_ALGOS: HASH_ALGOS, - PK_ALGOS: PK_ALGOS, - - HttpSignatureError: HttpSignatureError, - InvalidAlgorithmError: InvalidAlgorithmError, - - validateAlgorithm: validateAlgorithm, - - /** - * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. - * - * The intent of this module is to interoperate with OpenSSL only, - * specifically the node crypto module's `verify` method. - * - * @param {String} key an OpenSSH public key. - * @return {String} PEM encoded form of the RSA public key. - * @throws {TypeError} on bad input. - * @throws {Error} on invalid ssh key formatted data. - */ - sshKeyToPEM: function sshKeyToPEM(key) { - assert.string(key, 'ssh_key'); - - var k = sshpk.parseKey(key, 'ssh'); - return (k.toString('pem')); - }, - - - /** - * Generates an OpenSSH fingerprint from an ssh public key. - * - * @param {String} key an OpenSSH public key. - * @return {String} key fingerprint. - * @throws {TypeError} on bad input. - * @throws {Error} if what you passed doesn't look like an ssh public key. - */ - fingerprint: function fingerprint(key) { - assert.string(key, 'ssh_key'); - - var k = sshpk.parseKey(key, 'ssh'); - return (k.fingerprint('md5').toString('hex')); - }, - - /** - * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa) - * - * The reverse of the above function. - */ - pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) { - assert.equal('string', typeof (pem), 'typeof pem'); - - var k = sshpk.parseKey(pem, 'pem'); - k.comment = comment; - return (k.toString('ssh')); - } -}; - - -/***/ }), -/* 160 */ -/***/ (function(module, exports) { - -/*! - * is-extglob - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -module.exports = function isExtglob(str) { - return typeof str === 'string' - && /[@?!+*]\(/.test(str); -}; - - -/***/ }), -/* 161 */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * is-glob - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -var isExtglob = __webpack_require__(160); - -module.exports = function isGlob(str) { - return typeof str === 'string' - && (/[*!?{}(|)[\]]/.test(str) - || isExtglob(str)); -}; - -/***/ }), -/* 162 */ -/***/ (function(module, exports, __webpack_require__) { - -var isBuffer = __webpack_require__(766); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - - -/***/ }), -/* 163 */ /***/ (function(module, exports, __webpack_require__) { module.exports = minimatch @@ -43392,11 +31304,11 @@ minimatch.Minimatch = Minimatch var path = { sep: '/' } try { - path = __webpack_require__(2) + path = __webpack_require__(0) } catch (er) {} var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __webpack_require__(578) +var expand = __webpack_require__(229) var plTypes = { '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, @@ -44313,690 +32225,226 @@ function regExpEscape (s) { /***/ }), -/* 164 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; +var wrappy = __webpack_require__(161) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) -if (!process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f } -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f } - /***/ }), -/* 165 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isPromise = __webpack_require__(778); - -/** - * Return a function that will run a function asynchronously or synchronously - * - * example: - * runAsync(wrappedFunction, callback)(...args); - * - * @param {Function} func Function to run - * @param {Function} cb Callback function passed the `func` returned value - * @return {Function(arguments)} Arguments to pass to `func`. This function will in turn - * return a Promise (Node >= 0.12) or call the callbacks. - */ - -var runAsync = module.exports = function (func, cb) { - cb = cb || function () {}; - - return function () { - var async = false; - var args = arguments; - - var promise = new Promise(function (resolve, reject) { - var answer = func.apply({ - async: function () { - async = true; - return function (err, value) { - if (err) { - reject(err); - } else { - resolve(value); - } - }; - } - }, Array.prototype.slice.call(args)); - - if (!async) { - if (isPromise(answer)) { - answer.then(resolve, reject); - } else { - resolve(answer); - } - } - }); - - promise.then(cb.bind(null, null), cb); - - return promise; - } -}; - -runAsync.cb = function (func, cb) { - return runAsync(function () { - var args = Array.prototype.slice.call(arguments); - if (args.length === func.length - 1) { - args.push(this.async()); - } - return func.apply(this, args); - }, cb); -}; - - -/***/ }), -/* 166 */ +/* 84 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__internal_Observable__ = __webpack_require__(16); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return __WEBPACK_IMPORTED_MODULE_0__internal_Observable__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__ = __webpack_require__(387); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__ = __webpack_require__(397); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__ = __webpack_require__(105); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_Subject__ = __webpack_require__(42); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return __WEBPACK_IMPORTED_MODULE_4__internal_Subject__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__ = __webpack_require__(383); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__ = __webpack_require__(240); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__ = __webpack_require__(167); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__ = __webpack_require__(402); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__internal_scheduler_async__ = __webpack_require__(46); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return __WEBPACK_IMPORTED_MODULE_9__internal_scheduler_async__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__internal_scheduler_queue__ = __webpack_require__(403); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return __WEBPACK_IMPORTED_MODULE_10__internal_scheduler_queue__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__internal_scheduler_animationFrame__ = __webpack_require__(967); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return __WEBPACK_IMPORTED_MODULE_11__internal_scheduler_animationFrame__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__ = __webpack_require__(966); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__["b"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__internal_Scheduler__ = __webpack_require__(385); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return __WEBPACK_IMPORTED_MODULE_13__internal_Scheduler__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__ = __webpack_require__(30); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__ = __webpack_require__(5); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_Notification__ = __webpack_require__(168); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return __WEBPACK_IMPORTED_MODULE_16__internal_Notification__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__ = __webpack_require__(256); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__ = __webpack_require__(175); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__ = __webpack_require__(106); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__ = __webpack_require__(971); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__ = __webpack_require__(135); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__ = __webpack_require__(136); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__ = __webpack_require__(173); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__ = __webpack_require__(405); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__internal_util_TimeoutError__ = __webpack_require__(404); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return __WEBPACK_IMPORTED_MODULE_25__internal_util_TimeoutError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__internal_observable_bindCallback__ = __webpack_require__(864); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return __WEBPACK_IMPORTED_MODULE_26__internal_observable_bindCallback__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__ = __webpack_require__(865); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__ = __webpack_require__(241); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__ = __webpack_require__(170); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__ = __webpack_require__(242); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__ = __webpack_require__(45); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__internal_observable_forkJoin__ = __webpack_require__(866); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return __WEBPACK_IMPORTED_MODULE_32__internal_observable_forkJoin__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__internal_observable_from__ = __webpack_require__(64); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return __WEBPACK_IMPORTED_MODULE_33__internal_observable_from__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__internal_observable_fromEvent__ = __webpack_require__(867); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return __WEBPACK_IMPORTED_MODULE_34__internal_observable_fromEvent__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__internal_observable_fromEventPattern__ = __webpack_require__(868); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return __WEBPACK_IMPORTED_MODULE_35__internal_observable_fromEventPattern__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__internal_observable_generate__ = __webpack_require__(872); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return __WEBPACK_IMPORTED_MODULE_36__internal_observable_generate__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__internal_observable_iif__ = __webpack_require__(873); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return __WEBPACK_IMPORTED_MODULE_37__internal_observable_iif__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__internal_observable_interval__ = __webpack_require__(874); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return __WEBPACK_IMPORTED_MODULE_38__internal_observable_interval__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__internal_observable_merge__ = __webpack_require__(388); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_39__internal_observable_merge__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__ = __webpack_require__(389); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__internal_observable_of__ = __webpack_require__(243); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return __WEBPACK_IMPORTED_MODULE_41__internal_observable_of__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__internal_observable_onErrorResumeNext__ = __webpack_require__(875); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return __WEBPACK_IMPORTED_MODULE_42__internal_observable_onErrorResumeNext__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__internal_observable_pairs__ = __webpack_require__(876); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return __WEBPACK_IMPORTED_MODULE_43__internal_observable_pairs__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__internal_observable_race__ = __webpack_require__(390); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return __WEBPACK_IMPORTED_MODULE_44__internal_observable_race__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__internal_observable_range__ = __webpack_require__(877); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_observable_range__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__internal_observable_throwError__ = __webpack_require__(245); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return __WEBPACK_IMPORTED_MODULE_46__internal_observable_throwError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__internal_observable_timer__ = __webpack_require__(391); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return __WEBPACK_IMPORTED_MODULE_47__internal_observable_timer__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_observable_using__ = __webpack_require__(878); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return __WEBPACK_IMPORTED_MODULE_48__internal_observable_using__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__ = __webpack_require__(246); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["b"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["b"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_config__ = __webpack_require__(169); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_config__["a"]; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return InnerSubscriber; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 167 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncSubject; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(42); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(30); -/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ - - - -var AsyncSubject = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncSubject, _super); - function AsyncSubject() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.value = null; - _this.hasNext = false; - _this.hasCompleted = false; +var InnerSubscriber = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](InnerSubscriber, _super); + function InnerSubscriber(parent, outerValue, outerIndex) { + var _this = _super.call(this) || this; + _this.parent = parent; + _this.outerValue = outerValue; + _this.outerIndex = outerIndex; + _this.index = 0; return _this; } - AsyncSubject.prototype._subscribe = function (subscriber) { - if (this.hasError) { - subscriber.error(this.thrownError); - return __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */].EMPTY; - } - else if (this.hasCompleted && this.hasNext) { - subscriber.next(this.value); - subscriber.complete(); - return __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */].EMPTY; - } - return _super.prototype._subscribe.call(this, subscriber); + InnerSubscriber.prototype._next = function (value) { + this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); }; - AsyncSubject.prototype.next = function (value) { - if (!this.hasCompleted) { - this.value = value; - this.hasNext = true; - } + InnerSubscriber.prototype._error = function (error) { + this.parent.notifyError(error, this); + this.unsubscribe(); }; - AsyncSubject.prototype.error = function (error) { - if (!this.hasCompleted) { - _super.prototype.error.call(this, error); - } + InnerSubscriber.prototype._complete = function () { + this.parent.notifyComplete(this); + this.unsubscribe(); }; - AsyncSubject.prototype.complete = function () { - this.hasCompleted = true; - if (this.hasNext) { - _super.prototype.next.call(this, this.value); - } - _super.prototype.complete.call(this); - }; - return AsyncSubject; -}(__WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */])); + return InnerSubscriber; +}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); -//# sourceMappingURL=AsyncSubject.js.map +//# sourceMappingURL=InnerSubscriber.js.map /***/ }), -/* 168 */ +/* 85 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Notification; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_empty__ = __webpack_require__(45); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_of__ = __webpack_require__(243); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_throwError__ = __webpack_require__(245); -/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ +/* harmony export (immutable) */ __webpack_exports__["a"] = fromArray; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToArray__ = __webpack_require__(447); +/** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToArray PURE_IMPORTS_END */ -var Notification = /*@__PURE__*/ (function () { - function Notification(kind, value, error) { - this.kind = kind; - this.value = value; - this.error = error; - this.hasValue = kind === 'N'; +function fromArray(input, scheduler) { + if (!scheduler) { + return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToArray__["a" /* subscribeToArray */])(input)); } - Notification.prototype.observe = function (observer) { - switch (this.kind) { - case 'N': - return observer.next && observer.next(this.value); - case 'E': - return observer.error && observer.error(this.error); - case 'C': - return observer.complete && observer.complete(); - } - }; - Notification.prototype.do = function (next, error, complete) { - var kind = this.kind; - switch (kind) { - case 'N': - return next && next(this.value); - case 'E': - return error && error(this.error); - case 'C': - return complete && complete(); - } - }; - Notification.prototype.accept = function (nextOrObserver, error, complete) { - if (nextOrObserver && typeof nextOrObserver.next === 'function') { - return this.observe(nextOrObserver); - } - else { - return this.do(nextOrObserver, error, complete); - } - }; - Notification.prototype.toObservable = function () { - var kind = this.kind; - switch (kind) { - case 'N': - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__observable_of__["a" /* of */])(this.value); - case 'E': - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_throwError__["a" /* throwError */])(this.error); - case 'C': - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__observable_empty__["a" /* empty */])(); - } - throw new Error('unexpected notification kind value'); - }; - Notification.createNext = function (value) { - if (typeof value !== 'undefined') { - return new Notification('N', value); - } - return Notification.undefinedValueNotification; - }; - Notification.createError = function (err) { - return new Notification('E', undefined, err); - }; - Notification.createComplete = function () { - return Notification.completeNotification; - }; - Notification.completeNotification = new Notification('C'); - Notification.undefinedValueNotification = new Notification('N', undefined); - return Notification; -}()); - -//# sourceMappingURL=Notification.js.map - - -/***/ }), -/* 169 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return config; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var _enable_super_gross_mode_that_will_cause_bad_things = false; -var config = { - Promise: undefined, - set useDeprecatedSynchronousErrorHandling(value) { - if (value) { - var error = /*@__PURE__*/ new Error(); - /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack); - } - else if (_enable_super_gross_mode_that_will_cause_bad_things) { - /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3'); - } - _enable_super_gross_mode_that_will_cause_bad_things = value; - }, - get useDeprecatedSynchronousErrorHandling() { - return _enable_super_gross_mode_that_will_cause_bad_things; - }, -}; -//# sourceMappingURL=config.js.map - - -/***/ }), -/* 170 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = concat; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isScheduler__ = __webpack_require__(55); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__of__ = __webpack_require__(243); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__from__ = __webpack_require__(64); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__operators_concatAll__ = __webpack_require__(393); -/** PURE_IMPORTS_START _util_isScheduler,_of,_from,_operators_concatAll PURE_IMPORTS_END */ - - - - -function concat() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; + else { + return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { + var sub = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */](); + var i = 0; + sub.add(scheduler.schedule(function () { + if (i === input.length) { + subscriber.complete(); + return; + } + subscriber.next(input[i++]); + if (!subscriber.closed) { + sub.add(this.schedule()); + } + })); + return sub; + }); } - if (observables.length === 1 || (observables.length === 2 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isScheduler__["a" /* isScheduler */])(observables[1]))) { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__from__["a" /* from */])(observables[0]); - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__operators_concatAll__["a" /* concatAll */])()(__WEBPACK_IMPORTED_MODULE_1__of__["a" /* of */].apply(void 0, observables)); } -//# sourceMappingURL=concat.js.map +//# sourceMappingURL=fromArray.js.map /***/ }), -/* 171 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = reduce; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scan__ = __webpack_require__(249); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__takeLast__ = __webpack_require__(252); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__defaultIfEmpty__ = __webpack_require__(129); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(256); -/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ - - - - -function reduce(accumulator, seed) { - if (arguments.length >= 2) { - return function reduceOperatorFunctionWithSeed(source) { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["a" /* pipe */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__scan__["a" /* scan */])(accumulator, seed), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__takeLast__["a" /* takeLast */])(1), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__defaultIfEmpty__["a" /* defaultIfEmpty */])(seed))(source); - }; - } - return function reduceOperatorFunction(source) { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["a" /* pipe */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__scan__["a" /* scan */])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__takeLast__["a" /* takeLast */])(1))(source); - }; -} -//# sourceMappingURL=reduce.js.map - - -/***/ }), -/* 172 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwIfEmpty; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tap__ = __webpack_require__(399); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_EmptyError__ = __webpack_require__(136); -/** PURE_IMPORTS_START _tap,_util_EmptyError PURE_IMPORTS_END */ - - -var throwIfEmpty = function (errorFactory) { - if (errorFactory === void 0) { - errorFactory = defaultErrorFactory; - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tap__["a" /* tap */])({ - hasValue: false, - next: function () { this.hasValue = true; }, - complete: function () { - if (!this.hasValue) { - throw errorFactory(); - } - } - }); -}; -function defaultErrorFactory() { - return new __WEBPACK_IMPORTED_MODULE_1__util_EmptyError__["a" /* EmptyError */](); -} -//# sourceMappingURL=throwIfEmpty.js.map - - -/***/ }), -/* 173 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjectUnsubscribedError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function ObjectUnsubscribedErrorImpl() { - Error.call(this); - this.message = 'object unsubscribed'; - this.name = 'ObjectUnsubscribedError'; - return this; -} -ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); -var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; -//# sourceMappingURL=ObjectUnsubscribedError.js.map - - -/***/ }), -/* 174 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = isNumeric; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray__ = __webpack_require__(47); -/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ - -function isNumeric(val) { - return !__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__isArray__["a" /* isArray */])(val) && (val - parseFloat(val) + 1) >= 0; -} -//# sourceMappingURL=isNumeric.js.map - - -/***/ }), -/* 175 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = noop; -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function noop() { } -//# sourceMappingURL=noop.js.map - - -/***/ }), -/* 176 */ +/* 86 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2015 Joyent, Inc. module.exports = { read: read, - readSSHPrivate: readSSHPrivate, write: write }; -var assert = __webpack_require__(22); +var assert = __webpack_require__(16); var asn1 = __webpack_require__(66); -var Buffer = __webpack_require__(20).Buffer; -var algs = __webpack_require__(37); -var utils = __webpack_require__(31); -var crypto = __webpack_require__(21); +var crypto = __webpack_require__(11); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var utils = __webpack_require__(26); +var Key = __webpack_require__(27); +var PrivateKey = __webpack_require__(33); -var Key = __webpack_require__(33); -var PrivateKey = __webpack_require__(38); -var pem = __webpack_require__(80); -var rfc4253 = __webpack_require__(91); -var SSHBuffer = __webpack_require__(142); -var errors = __webpack_require__(69); +var pkcs1 = __webpack_require__(327); +var pkcs8 = __webpack_require__(157); +var sshpriv = __webpack_require__(192); +var rfc4253 = __webpack_require__(103); -var bcrypt; +var errors = __webpack_require__(74); -function read(buf, options) { - return (pem.read(buf, options)); -} - -var MAGIC = 'openssh-key-v1'; - -function readSSHPrivate(type, buf, options) { - buf = new SSHBuffer({buffer: buf}); - - var magic = buf.readCString(); - assert.strictEqual(magic, MAGIC, 'bad magic string'); - - var cipher = buf.readString(); - var kdf = buf.readString(); - var kdfOpts = buf.readBuffer(); - - var nkeys = buf.readInt(); - if (nkeys !== 1) { - throw (new Error('OpenSSH-format key file contains ' + - 'multiple keys: this is unsupported.')); +/* + * For reading we support both PKCS#1 and PKCS#8. If we find a private key, + * we just take the public component of it and use that. + */ +function read(buf, options, forceType) { + var input = buf; + if (typeof (buf) !== 'string') { + assert.buffer(buf, 'buf'); + buf = buf.toString('ascii'); } - var pubKey = buf.readBuffer(); + var lines = buf.trim().split('\n'); - if (type === 'public') { - assert.ok(buf.atEnd(), 'excess bytes left after key'); - return (rfc4253.read(pubKey)); + var m = lines[0].match(/*JSSTYLED*/ + /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); + assert.ok(m, 'invalid PEM header'); + + var m2 = lines[lines.length - 1].match(/*JSSTYLED*/ + /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); + assert.ok(m2, 'invalid PEM footer'); + + /* Begin and end banners must match key type */ + assert.equal(m[2], m2[2]); + var type = m[2].toLowerCase(); + + var alg; + if (m[1]) { + /* They also must match algorithms, if given */ + assert.equal(m[1], m2[1], 'PEM header and footer mismatch'); + alg = m[1].trim(); } - var privKeyBlob = buf.readBuffer(); - assert.ok(buf.atEnd(), 'excess bytes left after key'); + var headers = {}; + while (true) { + lines = lines.slice(1); + m = lines[0].match(/*JSSTYLED*/ + /^([A-Za-z0-9-]+): (.+)$/); + if (!m) + break; + headers[m[1].toLowerCase()] = m[2]; + } - var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts }); - switch (kdf) { - case 'none': - if (cipher !== 'none') { - throw (new Error('OpenSSH-format key uses KDF "none" ' + - 'but specifies a cipher other than "none"')); - } - break; - case 'bcrypt': - var salt = kdfOptsBuf.readBuffer(); - var rounds = kdfOptsBuf.readInt(); - var cinf = utils.opensshCipherInfo(cipher); - if (bcrypt === undefined) { - bcrypt = __webpack_require__(319); + var cipher, key, iv; + if (headers['proc-type']) { + var parts = headers['proc-type'].split(','); + if (parts[0] === '4' && parts[1] === 'ENCRYPTED') { + if (typeof (options.passphrase) === 'string') { + options.passphrase = Buffer.from( + options.passphrase, 'utf-8'); + } + if (!Buffer.isBuffer(options.passphrase)) { + throw (new errors.KeyEncryptedError( + options.filename, 'PEM')); + } else { + parts = headers['dek-info'].split(','); + assert.ok(parts.length === 2); + cipher = parts[0].toLowerCase(); + iv = Buffer.from(parts[1], 'hex'); + key = utils.opensslKeyDeriv(cipher, iv, + options.passphrase, 1).key; + } } + } - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from(options.passphrase, - 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'OpenSSH')); - } + /* Chop off the first and last lines */ + lines = lines.slice(0, -1).join(''); + buf = Buffer.from(lines, 'base64'); - var pass = new Uint8Array(options.passphrase); - var salti = new Uint8Array(salt); - /* Use the pbkdf to derive both the key and the IV. */ - var out = new Uint8Array(cinf.keySize + cinf.blockSize); - var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, - out, out.length, rounds); - if (res !== 0) { - throw (new Error('bcrypt_pbkdf function returned ' + - 'failure, parameters invalid')); - } - out = Buffer.from(out); - var ckey = out.slice(0, cinf.keySize); - var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); - var cipherStream = crypto.createDecipheriv(cinf.opensslName, - ckey, iv); - cipherStream.setAutoPadding(false); + if (cipher && key && iv) { + var cipherStream = crypto.createDecipheriv(cipher, key, iv); var chunk, chunks = []; cipherStream.once('error', function (e) { if (e.toString().indexOf('bad decrypt') !== -1) { @@ -45005,153 +32453,87 @@ function readSSHPrivate(type, buf, options) { } throw (e); }); - cipherStream.write(privKeyBlob); + cipherStream.write(buf); cipherStream.end(); while ((chunk = cipherStream.read()) !== null) chunks.push(chunk); - privKeyBlob = Buffer.concat(chunks); - break; - default: - throw (new Error( - 'OpenSSH-format key uses unknown KDF "' + kdf + '"')); + buf = Buffer.concat(chunks); } - buf = new SSHBuffer({buffer: privKeyBlob}); + /* The new OpenSSH internal format abuses PEM headers */ + if (alg && alg.toLowerCase() === 'openssh') + return (sshpriv.readSSHPrivate(type, buf, options)); + if (alg && alg.toLowerCase() === 'ssh2') + return (rfc4253.readType(type, buf, options)); - var checkInt1 = buf.readInt(); - var checkInt2 = buf.readInt(); - if (checkInt1 !== checkInt2) { - throw (new Error('Incorrect passphrase supplied, could not ' + - 'decrypt key')); + var der = new asn1.BerReader(buf); + der.originalInput = input; + + /* + * All of the PEM file types start with a sequence tag, so chop it + * off here + */ + der.readSequence(); + + /* PKCS#1 type keys name an algorithm in the banner explicitly */ + if (alg) { + if (forceType) + assert.strictEqual(forceType, 'pkcs1'); + return (pkcs1.readPkcs1(alg, type, der)); + } else { + if (forceType) + assert.strictEqual(forceType, 'pkcs8'); + return (pkcs8.readPkcs8(alg, type, der)); } - - var ret = {}; - var key = rfc4253.readInternal(ret, 'private', buf.remainder()); - - buf.skip(ret.consumed); - - var comment = buf.readString(); - key.comment = comment; - - return (key); } -function write(key, options) { - var pubKey; - if (PrivateKey.isPrivateKey(key)) - pubKey = key.toPublic(); - else - pubKey = key; - - var cipher = 'none'; - var kdf = 'none'; - var kdfopts = Buffer.alloc(0); - var cinf = { blockSize: 8 }; - var passphrase; - if (options !== undefined) { - passphrase = options.passphrase; - if (typeof (passphrase) === 'string') - passphrase = Buffer.from(passphrase, 'utf-8'); - if (passphrase !== undefined) { - assert.buffer(passphrase, 'options.passphrase'); - assert.optionalString(options.cipher, 'options.cipher'); - cipher = options.cipher; - if (cipher === undefined) - cipher = 'aes128-ctr'; - cinf = utils.opensshCipherInfo(cipher); - kdf = 'bcrypt'; - } - } - - var privBuf; - if (PrivateKey.isPrivateKey(key)) { - privBuf = new SSHBuffer({}); - var checkInt = crypto.randomBytes(4).readUInt32BE(0); - privBuf.writeInt(checkInt); - privBuf.writeInt(checkInt); - privBuf.write(key.toBuffer('rfc4253')); - privBuf.writeString(key.comment || ''); - - var n = 1; - while (privBuf._offset % cinf.blockSize !== 0) - privBuf.writeChar(n++); - privBuf = privBuf.toBuffer(); - } - - switch (kdf) { - case 'none': - break; - case 'bcrypt': - var salt = crypto.randomBytes(16); - var rounds = 16; - var kdfssh = new SSHBuffer({}); - kdfssh.writeBuffer(salt); - kdfssh.writeInt(rounds); - kdfopts = kdfssh.toBuffer(); - - if (bcrypt === undefined) { - bcrypt = __webpack_require__(319); - } - var pass = new Uint8Array(passphrase); - var salti = new Uint8Array(salt); - /* Use the pbkdf to derive both the key and the IV. */ - var out = new Uint8Array(cinf.keySize + cinf.blockSize); - var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, - out, out.length, rounds); - if (res !== 0) { - throw (new Error('bcrypt_pbkdf function returned ' + - 'failure, parameters invalid')); - } - out = Buffer.from(out); - var ckey = out.slice(0, cinf.keySize); - var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); - - var cipherStream = crypto.createCipheriv(cinf.opensslName, - ckey, iv); - cipherStream.setAutoPadding(false); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - throw (e); - }); - cipherStream.write(privBuf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - privBuf = Buffer.concat(chunks); - break; - default: - throw (new Error('Unsupported kdf ' + kdf)); - } - - var buf = new SSHBuffer({}); - - buf.writeCString(MAGIC); - buf.writeString(cipher); /* cipher */ - buf.writeString(kdf); /* kdf */ - buf.writeBuffer(kdfopts); /* kdfoptions */ - - buf.writeInt(1); /* nkeys */ - buf.writeBuffer(pubKey.toBuffer('rfc4253')); - - if (privBuf) - buf.writeBuffer(privBuf); - - buf = buf.toBuffer(); +function write(key, options, type) { + assert.object(key); + var alg = { + 'ecdsa': 'EC', + 'rsa': 'RSA', + 'dsa': 'DSA', + 'ed25519': 'EdDSA' + }[key.type]; var header; - if (PrivateKey.isPrivateKey(key)) - header = 'OPENSSH PRIVATE KEY'; - else - header = 'OPENSSH PUBLIC KEY'; - var tmp = buf.toString('base64'); - var len = tmp.length + (tmp.length / 70) + + var der = new asn1.BerWriter(); + + if (PrivateKey.isPrivateKey(key)) { + if (type && type === 'pkcs8') { + header = 'PRIVATE KEY'; + pkcs8.writePkcs8(der, key); + } else { + if (type) + assert.strictEqual(type, 'pkcs1'); + header = alg + ' PRIVATE KEY'; + pkcs1.writePkcs1(der, key); + } + + } else if (Key.isKey(key)) { + if (type && type === 'pkcs1') { + header = alg + ' PUBLIC KEY'; + pkcs1.writePkcs1(der, key); + } else { + if (type) + assert.strictEqual(type, 'pkcs8'); + header = 'PUBLIC KEY'; + pkcs8.writePkcs8(der, key); + } + + } else { + throw (new Error('key is not a Key or PrivateKey')); + } + + var tmp = der.buffer.toString('base64'); + var len = tmp.length + (tmp.length / 64) + 18 + 16 + header.length*2 + 10; - buf = Buffer.alloc(len); + var buf = Buffer.alloc(len); var o = 0; o += buf.write('-----BEGIN ' + header + '-----\n', o); for (var i = 0; i < tmp.length; ) { - var limit = i + 70; + var limit = i + 64; if (limit > tmp.length) limit = tmp.length; o += buf.write(tmp.slice(i, limit), o); @@ -45165,382 +32547,13 @@ function write(key, options) { /***/ }), -/* 177 */ -/***/ (function(module, exports, __webpack_require__) { - -var chownr = __webpack_require__(587) -var tar = __webpack_require__(425) -var pump = __webpack_require__(821) -var mkdirp = __webpack_require__(234) -var fs = __webpack_require__(12) -var path = __webpack_require__(2) -var os = __webpack_require__(81) - -var win32 = os.platform() === 'win32' - -var noop = function () {} - -var echo = function (name) { - return name -} - -var normalize = !win32 ? echo : function (name) { - return name.replace(/\\/g, '/').replace(/[:?<>|]/g, '_') -} - -var statAll = function (fs, stat, cwd, ignore, entries, sort) { - var queue = entries || ['.'] - - return function loop (callback) { - if (!queue.length) return callback() - var next = queue.shift() - var nextAbs = path.join(cwd, next) - - stat(nextAbs, function (err, stat) { - if (err) return callback(err) - - if (!stat.isDirectory()) return callback(null, next, stat) - - fs.readdir(nextAbs, function (err, files) { - if (err) return callback(err) - - if (sort) files.sort() - for (var i = 0; i < files.length; i++) { - if (!ignore(path.join(cwd, next, files[i]))) queue.push(path.join(next, files[i])) - } - - callback(null, next, stat) - }) - }) - } -} - -var strip = function (map, level) { - return function (header) { - header.name = header.name.split('/').slice(level).join('/') - - var linkname = header.linkname - if (linkname && (header.type === 'link' || path.isAbsolute(linkname))) { - header.linkname = linkname.split('/').slice(level).join('/') - } - - return map(header) - } -} - -exports.pack = function (cwd, opts) { - if (!cwd) cwd = '.' - if (!opts) opts = {} - - var xfs = opts.fs || fs - var ignore = opts.ignore || opts.filter || noop - var map = opts.map || noop - var mapStream = opts.mapStream || echo - var statNext = statAll(xfs, opts.dereference ? xfs.stat : xfs.lstat, cwd, ignore, opts.entries, opts.sort) - var strict = opts.strict !== false - var umask = typeof opts.umask === 'number' ? ~opts.umask : ~processUmask() - var dmode = typeof opts.dmode === 'number' ? opts.dmode : 0 - var fmode = typeof opts.fmode === 'number' ? opts.fmode : 0 - var pack = opts.pack || tar.pack() - var finish = opts.finish || noop - - if (opts.strip) map = strip(map, opts.strip) - - if (opts.readable) { - dmode |= parseInt(555, 8) - fmode |= parseInt(444, 8) - } - if (opts.writable) { - dmode |= parseInt(333, 8) - fmode |= parseInt(222, 8) - } - - var onsymlink = function (filename, header) { - xfs.readlink(path.join(cwd, filename), function (err, linkname) { - if (err) return pack.destroy(err) - header.linkname = normalize(linkname) - pack.entry(header, onnextentry) - }) - } - - var onstat = function (err, filename, stat) { - if (err) return pack.destroy(err) - if (!filename) { - if (opts.finalize !== false) pack.finalize() - return finish(pack) - } - - if (stat.isSocket()) return onnextentry() // tar does not support sockets... - - var header = { - name: normalize(filename), - mode: (stat.mode | (stat.isDirectory() ? dmode : fmode)) & umask, - mtime: stat.mtime, - size: stat.size, - type: 'file', - uid: stat.uid, - gid: stat.gid - } - - if (stat.isDirectory()) { - header.size = 0 - header.type = 'directory' - header = map(header) || header - return pack.entry(header, onnextentry) - } - - if (stat.isSymbolicLink()) { - header.size = 0 - header.type = 'symlink' - header = map(header) || header - return onsymlink(filename, header) - } - - // TODO: add fifo etc... - - header = map(header) || header - - if (!stat.isFile()) { - if (strict) return pack.destroy(new Error('unsupported type for ' + filename)) - return onnextentry() - } - - var entry = pack.entry(header, onnextentry) - if (!entry) return - - var rs = mapStream(xfs.createReadStream(path.join(cwd, filename)), header) - - rs.on('error', function (err) { // always forward errors on destroy - entry.destroy(err) - }) - - pump(rs, entry) - } - - var onnextentry = function (err) { - if (err) return pack.destroy(err) - statNext(onstat) - } - - onnextentry() - - return pack -} - -var head = function (list) { - return list.length ? list[list.length - 1] : null -} - -var processGetuid = function () { - return process.getuid ? process.getuid() : -1 -} - -var processUmask = function () { - return process.umask ? process.umask() : 0 -} - -exports.extract = function (cwd, opts) { - if (!cwd) cwd = '.' - if (!opts) opts = {} - - var xfs = opts.fs || fs - var ignore = opts.ignore || opts.filter || noop - var map = opts.map || noop - var mapStream = opts.mapStream || echo - var own = opts.chown !== false && !win32 && processGetuid() === 0 - var extract = opts.extract || tar.extract() - var stack = [] - var now = new Date() - var umask = typeof opts.umask === 'number' ? ~opts.umask : ~processUmask() - var dmode = typeof opts.dmode === 'number' ? opts.dmode : 0 - var fmode = typeof opts.fmode === 'number' ? opts.fmode : 0 - var strict = opts.strict !== false - - if (opts.strip) map = strip(map, opts.strip) - - if (opts.readable) { - dmode |= parseInt(555, 8) - fmode |= parseInt(444, 8) - } - if (opts.writable) { - dmode |= parseInt(333, 8) - fmode |= parseInt(222, 8) - } - - var utimesParent = function (name, cb) { // we just set the mtime on the parent dir again everytime we write an entry - var top - while ((top = head(stack)) && name.slice(0, top[0].length) !== top[0]) stack.pop() - if (!top) return cb() - xfs.utimes(top[0], now, top[1], cb) - } - - var utimes = function (name, header, cb) { - if (opts.utimes === false) return cb() - - if (header.type === 'directory') return xfs.utimes(name, now, header.mtime, cb) - if (header.type === 'symlink') return utimesParent(name, cb) // TODO: how to set mtime on link? - - xfs.utimes(name, now, header.mtime, function (err) { - if (err) return cb(err) - utimesParent(name, cb) - }) - } - - var chperm = function (name, header, cb) { - var link = header.type === 'symlink' - var chmod = link ? xfs.lchmod : xfs.chmod - var chown = link ? xfs.lchown : xfs.chown - - if (!chmod) return cb() - - var mode = (header.mode | (header.type === 'directory' ? dmode : fmode)) & umask - chmod(name, mode, function (err) { - if (err) return cb(err) - if (!own) return cb() - if (!chown) return cb() - chown(name, header.uid, header.gid, cb) - }) - } - - extract.on('entry', function (header, stream, next) { - header = map(header) || header - header.name = normalize(header.name) - var name = path.join(cwd, path.join('/', header.name)) - - if (ignore(name, header)) { - stream.resume() - return next() - } - - var stat = function (err) { - if (err) return next(err) - utimes(name, header, function (err) { - if (err) return next(err) - if (win32) return next() - chperm(name, header, next) - }) - } - - var onsymlink = function () { - if (win32) return next() // skip symlinks on win for now before it can be tested - xfs.unlink(name, function () { - xfs.symlink(header.linkname, name, stat) - }) - } - - var onlink = function () { - if (win32) return next() // skip links on win for now before it can be tested - xfs.unlink(name, function () { - var srcpath = path.join(cwd, path.join('/', header.linkname)) - - xfs.link(srcpath, name, function (err) { - if (err && err.code === 'EPERM' && opts.hardlinkAsFilesFallback) { - stream = xfs.createReadStream(srcpath) - return onfile() - } - - stat(err) - }) - }) - } - - var onfile = function () { - var ws = xfs.createWriteStream(name) - var rs = mapStream(stream, header) - - ws.on('error', function (err) { // always forward errors on destroy - rs.destroy(err) - }) - - pump(rs, ws, function (err) { - if (err) return next(err) - ws.on('close', stat) - }) - } - - if (header.type === 'directory') { - stack.push([name, header.mtime]) - return mkdirfix(name, { - fs: xfs, own: own, uid: header.uid, gid: header.gid - }, stat) - } - - var dir = path.dirname(name) - - validate(xfs, dir, path.join(cwd, '.'), function (err, valid) { - if (err) return next(err) - if (!valid) return next(new Error(dir + ' is not a valid path')) - - mkdirfix(dir, { - fs: xfs, own: own, uid: header.uid, gid: header.gid - }, function (err) { - if (err) return next(err) - - switch (header.type) { - case 'file': return onfile() - case 'link': return onlink() - case 'symlink': return onsymlink() - } - - if (strict) return next(new Error('unsupported type for ' + name + ' (' + header.type + ')')) - - stream.resume() - next() - }) - }) - }) - - if (opts.finish) extract.on('finish', opts.finish) - - return extract -} - -function validate (fs, name, root, cb) { - if (name === root) return cb(null, true) - fs.lstat(name, function (err, st) { - if (err && err.code !== 'ENOENT') return cb(err) - if (err || st.isDirectory()) return validate(fs, path.join(name, '..'), root, cb) - cb(null, false) - }) -} - -function mkdirfix (name, opts, cb) { - mkdirp(name, {fs: opts.fs}, function (err, made) { - if (!err && made && opts.own) { - chownr(made, opts.uid, opts.gid, cb) - } else { - cb(err) - } - }) -} - - -/***/ }), -/* 178 */ +/* 87 */ /***/ (function(module, exports) { -module.exports = require("https"); +module.exports = require("http"); /***/ }), -/* 179 */ -/***/ (function(module, exports) { - -module.exports = require("querystring"); - -/***/ }), -/* 180 */ -/***/ (function(module, exports) { - -module.exports = require("readline"); - -/***/ }), -/* 181 */ -/***/ (function(module, exports) { - -module.exports = require("zlib"); - -/***/ }), -/* 182 */ +/* 88 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45549,5388 +32562,580 @@ module.exports = require("zlib"); Object.defineProperty(exports, "__esModule", { value: true }); - -var _consoleReporter; - -function _load_consoleReporter() { - return _consoleReporter = __webpack_require__(542); -} - -Object.defineProperty(exports, 'ConsoleReporter', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_consoleReporter || _load_consoleReporter()).default; - } -}); - -var _bufferReporter; - -function _load_bufferReporter() { - return _bufferReporter = __webpack_require__(541); -} - -Object.defineProperty(exports, 'BufferReporter', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_bufferReporter || _load_bufferReporter()).default; - } -}); - -var _eventReporter; - -function _load_eventReporter() { - return _eventReporter = __webpack_require__(546); -} - -Object.defineProperty(exports, 'EventReporter', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_eventReporter || _load_eventReporter()).default; - } -}); - -var _jsonReporter; - -function _load_jsonReporter() { - return _jsonReporter = __webpack_require__(194); -} - -Object.defineProperty(exports, 'JSONReporter', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_jsonReporter || _load_jsonReporter()).default; - } -}); - -var _noopReporter; - -function _load_noopReporter() { - return _noopReporter = __webpack_require__(548); -} - -Object.defineProperty(exports, 'NoopReporter', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_noopReporter || _load_noopReporter()).default; - } -}); - -var _baseReporter; - -function _load_baseReporter() { - return _baseReporter = __webpack_require__(95); -} - -Object.defineProperty(exports, 'Reporter', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_baseReporter || _load_baseReporter()).default; - } -}); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/***/ }), -/* 183 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// On windows, create a .cmd file. -// Read the #! in the file to see what it uses. The vast majority -// of the time, this will be either: -// "#!/usr/bin/env " -// or: -// "#! " -// -// Write a binroot/pkg.bin + ".cmd" file that has this line in it: -// @ %~dp0 %* - -module.exports = cmdShim -cmdShim.ifExists = cmdShimIfExists - -const fs = __webpack_require__(802) - -const mkdir = __webpack_require__(800) -const path = __webpack_require__(2) -const isWindows = __webpack_require__(781) -const shebangExpr = /^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/ -const DEFAULT_OPTIONS = { - // Create PowerShell file by default if the option hasn't been specified - createPwshFile: true, - createCmdFile: isWindows() -} - -function cmdShimIfExists (src, to, opts) { - opts = Object.assign({}, DEFAULT_OPTIONS, opts) - return fs.stat(src) - .then(() => cmdShim(src, to, opts)) - .catch(() => {}) -} - -// Try to unlink, but ignore errors. -// Any problems will surface later. -function rm (path) { - return fs.unlink(path).catch(() => {}) -} - -function cmdShim (src, to, opts) { - opts = Object.assign({}, DEFAULT_OPTIONS, opts) - return fs.stat(src) - .then(() => cmdShim_(src, to, opts)) -} - -function cmdShim_ (src, to, opts) { - return Promise.all([ - rm(to), - rm(`${to}.ps1`), - opts.createCmdFile && rm(`${to}.cmd`) - ]) - .then(() => writeShim(src, to, opts)) -} - -function writeShim (src, to, opts) { - opts = Object.assign({}, DEFAULT_OPTIONS, opts) - const defaultArgs = opts.preserveSymlinks ? '--preserve-symlinks' : '' - // make a cmd file and a sh script - // First, check if the bin is a #! of some sort. - // If not, then assume it's something that'll be compiled, or some other - // sort of script, and just call it directly. - return mkdir(path.dirname(to)) - .then(() => { - return fs.readFile(src, 'utf8') - .then(data => { - const firstLine = data.trim().split(/\r*\n/)[0] - const shebang = firstLine.match(shebangExpr) - if (!shebang) return writeShim_(src, to, Object.assign({}, opts, {args: defaultArgs})) - const prog = shebang[1] - const args = (shebang[2] && ((defaultArgs && (shebang[2] + ' ' + defaultArgs)) || shebang[2])) || defaultArgs - return writeShim_(src, to, Object.assign({}, opts, {prog, args})) - }) - .catch(() => writeShim_(src, to, Object.assign({}, opts, {args: defaultArgs}))) - }) -} - -function writeShim_ (src, to, opts) { - opts = Object.assign({}, DEFAULT_OPTIONS, opts) - let shTarget = path.relative(path.dirname(to), src) - let target = shTarget.split('/').join('\\') - let longProg - let prog = opts.prog - let shProg = prog && prog.split('\\').join('/') - let shLongProg - let pwshProg = shProg && `"${shProg}$exe"` - let pwshLongProg - shTarget = shTarget.split('\\').join('/') - let args = opts.args || '' - let { - win32: nodePath, - posix: shNodePath - } = normalizePathEnvVar(opts.nodePath) - if (!prog) { - prog = `"%~dp0\\${target}"` - shProg = `"$basedir/${shTarget}"` - pwshProg = shProg - args = '' - target = '' - shTarget = '' - } else { - longProg = `"%~dp0\\${prog}.exe"` - shLongProg = '"$basedir/' + prog + '"' - pwshLongProg = `"$basedir/${prog}$exe"` - target = `"%~dp0\\${target}"` - shTarget = `"$basedir/${shTarget}"` - } - - let cmd - if (opts.createCmdFile) { - // @IF EXIST "%~dp0\node.exe" ( - // "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* - // ) ELSE ( - // SETLOCAL - // SET PATHEXT=%PATHEXT:;.JS;=;% - // node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* - // ) - cmd = nodePath ? `@SET NODE_PATH=${nodePath}\r\n` : '' - if (longProg) { - cmd += '@IF EXIST ' + longProg + ' (\r\n' + - ' ' + longProg + ' ' + args + ' ' + target + ' %*\r\n' + - ') ELSE (\r\n' + - ' @SETLOCAL\r\n' + - ' @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n' + - ' ' + prog + ' ' + args + ' ' + target + ' %*\r\n' + - ')' - } else { - cmd += `@${prog} ${args} ${target} %*\r\n` - } - } - - // #!/bin/sh - // basedir=`dirname "$0"` - // - // case `uname` in - // *CYGWIN*) basedir=`cygpath -w "$basedir"`;; - // esac - // - // if [ -x "$basedir/node.exe" ]; then - // "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@" - // ret=$? - // else - // node "$basedir/node_modules/npm/bin/npm-cli.js" "$@" - // ret=$? - // fi - // exit $ret - - let sh = '#!/bin/sh\n' - sh = sh + - "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n" + - '\n' + - 'case `uname` in\n' + - ' *CYGWIN*) basedir=`cygpath -w "$basedir"`;;\n' + - 'esac\n' + - '\n' - const env = opts.nodePath ? `NODE_PATH="${shNodePath}" ` : '' - - if (shLongProg) { - sh = sh + - 'if [ -x ' + shLongProg + ' ]; then\n' + - ' ' + env + shLongProg + ' ' + args + ' ' + shTarget + ' "$@"\n' + - ' ret=$?\n' + - 'else \n' + - ' ' + env + shProg + ' ' + args + ' ' + shTarget + ' "$@"\n' + - ' ret=$?\n' + - 'fi\n' + - 'exit $ret\n' - } else { - sh = sh + env + shProg + ' ' + args + ' ' + shTarget + ' "$@"\n' + - 'exit $?\n' - } - - // #!/usr/bin/env pwsh - // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - // - // $ret=0 - // $exe = "" - // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - // # Fix case when both the Windows and Linux builds of Node - // # are installed in the same directory - // $exe = ".exe" - // } - // if (Test-Path "$basedir/node") { - // & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args - // $ret=$LASTEXITCODE - // } else { - // & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args - // $ret=$LASTEXITCODE - // } - // exit $ret - let pwsh = '#!/usr/bin/env pwsh\n' + - '$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n' + - '\n' + - '$exe=""\n' + - (opts.nodePath ? '$env_node_path=$env:NODE_PATH\n' + - `$env:NODE_PATH="${nodePath}"\n` : '') + - 'if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {\n' + - ' # Fix case when both the Windows and Linux builds of Node\n' + - ' # are installed in the same directory\n' + - ' $exe=".exe"\n' + - '}' - if (opts.nodePath) { - pwsh = pwsh + - ' else {\n' + - ` $env:NODE_PATH="${shNodePath}"\n` + - '}' - } - pwsh += '\n' - if (shLongProg) { - pwsh = pwsh + - '$ret=0\n' + - `if (Test-Path ${pwshLongProg}) {\n` + - ` & ${pwshLongProg} ${args} ${shTarget} $args\n` + - ' $ret=$LASTEXITCODE\n' + - '} else {\n' + - ` & ${pwshProg} ${args} ${shTarget} $args\n` + - ' $ret=$LASTEXITCODE\n' + - '}\n' + - (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') + - 'exit $ret\n' - } else { - pwsh = pwsh + - `& ${pwshProg} ${args} ${shTarget} $args\n` + - (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') + - 'exit $LASTEXITCODE\n' - } - - return Promise.all([ - opts.createCmdFile && fs.writeFile(to + '.cmd', cmd, 'utf8'), - opts.createPwshFile && fs.writeFile(`${to}.ps1`, pwsh, 'utf8'), - fs.writeFile(to, sh, 'utf8') - ]) - .then(() => chmodShim(to, opts)) -} - -function chmodShim (to, {createCmdFile, createPwshFile}) { - return Promise.all([ - fs.chmod(to, 0o755), - createPwshFile && fs.chmod(`${to}.ps1`, 0o755), - createCmdFile && fs.chmod(`${to}.cmd`, 0o755) - ]) -} - -/** - * @param {string|string[]} nodePath - * @returns {{win32:string,posix:string}} - */ -function normalizePathEnvVar (nodePath) { - if (!nodePath) { - return { - win32: nodePath, - posix: nodePath - } - } - let split = (typeof nodePath === 'string' ? nodePath.split(path.delimiter) : Array.from(nodePath)) - let result = {} - for (let i = 0; i < split.length; i++) { - const win32 = split[i].split('/').join('\\') - const posix = isWindows() ? split[i].split('\\').join('/').replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i] - - result.win32 = result.win32 ? `${result.win32};${win32}` : win32 - result.posix = result.posix ? `${result.posix}:${posix}` : posix - - result[i] = {win32, posix} - } - return result -} - - -/***/ }), -/* 184 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var resolve = __webpack_require__(185); - -module.exports = { - Validation: errorSubclass(ValidationError), - MissingRef: errorSubclass(MissingRefError) -}; - - -function ValidationError(errors) { - this.message = 'validation failed'; - this.errors = errors; - this.ajv = this.validation = true; -} - - -MissingRefError.message = function (baseId, ref) { - return 'can\'t resolve reference ' + ref + ' from id ' + baseId; -}; - - -function MissingRefError(baseId, ref, message) { - this.message = message || MissingRefError.message(baseId, ref); - this.missingRef = resolve.url(baseId, ref); - this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef)); -} - - -function errorSubclass(Subclass) { - Subclass.prototype = Object.create(Error.prototype); - Subclass.prototype.constructor = Subclass; - return Subclass; -} - - -/***/ }), -/* 185 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var url = __webpack_require__(29) - , equal = __webpack_require__(228) - , util = __webpack_require__(93) - , SchemaObject = __webpack_require__(270) - , traverse = __webpack_require__(782); - -module.exports = resolve; - -resolve.normalizeId = normalizeId; -resolve.fullPath = getFullPath; -resolve.url = resolveUrl; -resolve.ids = resolveIds; -resolve.inlineRef = inlineRef; -resolve.schema = resolveSchema; - -/** - * [resolve and compile the references ($ref)] - * @this Ajv - * @param {Function} compile reference to schema compilation funciton (localCompile) - * @param {Object} root object with information about the root schema for the current schema - * @param {String} ref reference to resolve - * @return {Object|Function} schema object (if the schema can be inlined) or validation function - */ -function resolve(compile, root, ref) { - /* jshint validthis: true */ - var refVal = this._refs[ref]; - if (typeof refVal == 'string') { - if (this._refs[refVal]) refVal = this._refs[refVal]; - else return resolve.call(this, compile, root, refVal); - } - - refVal = refVal || this._schemas[ref]; - if (refVal instanceof SchemaObject) { - return inlineRef(refVal.schema, this._opts.inlineRefs) - ? refVal.schema - : refVal.validate || this._compile(refVal); - } - - var res = resolveSchema.call(this, root, ref); - var schema, v, baseId; - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - - if (schema instanceof SchemaObject) { - v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); - } else if (schema !== undefined) { - v = inlineRef(schema, this._opts.inlineRefs) - ? schema - : compile.call(this, schema, root, undefined, baseId); - } - - return v; -} - - -/** - * Resolve schema, its root and baseId - * @this Ajv - * @param {Object} root root object with properties schema, refVal, refs - * @param {String} ref reference to resolve - * @return {Object} object with properties schema, root, baseId - */ -function resolveSchema(root, ref) { - /* jshint validthis: true */ - var p = url.parse(ref, false, true) - , refPath = _getFullPath(p) - , baseId = getFullPath(this._getId(root.schema)); - if (refPath !== baseId) { - var id = normalizeId(refPath); - var refVal = this._refs[id]; - if (typeof refVal == 'string') { - return resolveRecursive.call(this, root, refVal, p); - } else if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - root = refVal; - } else { - refVal = this._schemas[id]; - if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - if (id == normalizeId(ref)) - return { schema: refVal, root: root, baseId: baseId }; - root = refVal; - } else { - return; - } - } - if (!root.schema) return; - baseId = getFullPath(this._getId(root.schema)); - } - return getJsonPointer.call(this, p, baseId, root.schema, root); -} - - -/* @this Ajv */ -function resolveRecursive(root, ref, parsedRef) { - /* jshint validthis: true */ - var res = resolveSchema.call(this, root, ref); - if (res) { - var schema = res.schema; - var baseId = res.baseId; - root = res.root; - var id = this._getId(schema); - if (id) baseId = resolveUrl(baseId, id); - return getJsonPointer.call(this, parsedRef, baseId, schema, root); - } -} - - -var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); -/* @this Ajv */ -function getJsonPointer(parsedRef, baseId, schema, root) { - /* jshint validthis: true */ - parsedRef.hash = parsedRef.hash || ''; - if (parsedRef.hash.slice(0,2) != '#/') return; - var parts = parsedRef.hash.split('/'); - - for (var i = 1; i < parts.length; i++) { - var part = parts[i]; - if (part) { - part = util.unescapeFragment(part); - schema = schema[part]; - if (schema === undefined) break; - var id; - if (!PREVENT_SCOPE_CHANGE[part]) { - id = this._getId(schema); - if (id) baseId = resolveUrl(baseId, id); - if (schema.$ref) { - var $ref = resolveUrl(baseId, schema.$ref); - var res = resolveSchema.call(this, root, $ref); - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - } - } - } - } - if (schema !== undefined && schema !== root.schema) - return { schema: schema, root: root, baseId: baseId }; -} - - -var SIMPLE_INLINED = util.toHash([ - 'type', 'format', 'pattern', - 'maxLength', 'minLength', - 'maxProperties', 'minProperties', - 'maxItems', 'minItems', - 'maximum', 'minimum', - 'uniqueItems', 'multipleOf', - 'required', 'enum' -]); -function inlineRef(schema, limit) { - if (limit === false) return false; - if (limit === undefined || limit === true) return checkNoRef(schema); - else if (limit) return countKeys(schema) <= limit; -} - - -function checkNoRef(schema) { - var item; - if (Array.isArray(schema)) { - for (var i=0; i All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function (msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; - - -/***/ }), -/* 187 */ -/***/ (function(module, exports) { - -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; - - -/***/ }), -/* 188 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Inquirer.js - * A collection of common interactive command line user interfaces. - */ - -var inquirer = module.exports; - -/** - * Client interfaces - */ - -inquirer.prompts = {}; - -inquirer.Separator = __webpack_require__(147); - -inquirer.ui = { - BottomBar: __webpack_require__(500), - Prompt: __webpack_require__(501) -}; - -/** - * Create a new self-contained prompt module. - */ -inquirer.createPromptModule = function (opt) { - var promptModule = function promptModule(questions) { - var ui = new inquirer.ui.Prompt(promptModule.prompts, opt); - var promise = ui.run(questions); - - // Monkey patch the UI on the promise object so - // that it remains publicly accessible. - promise.ui = ui; - - return promise; - }; - promptModule.prompts = {}; - - /** - * Register a prompt type - * @param {String} name Prompt type name - * @param {Function} prompt Prompt constructor - * @return {inquirer} - */ - - promptModule.registerPrompt = function (name, prompt) { - promptModule.prompts[name] = prompt; - return this; - }; - - /** - * Register the defaults provider prompts - */ - - promptModule.restoreDefaultPrompts = function () { - this.registerPrompt('list', __webpack_require__(496)); - this.registerPrompt('input', __webpack_require__(283)); - this.registerPrompt('number', __webpack_require__(497)); - this.registerPrompt('confirm', __webpack_require__(493)); - this.registerPrompt('rawlist', __webpack_require__(499)); - this.registerPrompt('expand', __webpack_require__(495)); - this.registerPrompt('checkbox', __webpack_require__(492)); - this.registerPrompt('password', __webpack_require__(498)); - this.registerPrompt('editor', __webpack_require__(494)); - }; - - promptModule.restoreDefaultPrompts(); - - return promptModule; -}; - -/** - * Public CLI helper interface - * @param {Array|Object|Rx.Observable} questions - Questions settings array - * @param {Function} cb - Callback being passed the user answers - * @return {inquirer.ui.Prompt} - */ - -inquirer.prompt = inquirer.createPromptModule(); - -// Expose helper functions on the top level for easiest usage by common users -inquirer.registerPrompt = function (name, prompt) { - inquirer.prompt.registerPrompt(name, prompt); -}; -inquirer.restoreDefaultPrompts = function () { - inquirer.prompt.restoreDefaultPrompts(); -}; - -/***/ }), -/* 189 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getOutdated = exports.run = exports.requireLockfile = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _assign; - -function _load_assign() { - return _assign = _interopRequireDefault(__webpack_require__(23)); -} - -var run = exports.run = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - var addArgs = []; - var upgradeAll = args.length === 0 && typeof flags.scope === 'undefined' && typeof flags.pattern === 'undefined'; - var addFlags = (0, (_assign || _load_assign()).default)({}, flags, { - force: true, - ignoreWorkspaceRootCheck: true, - workspaceRootIsCwd: config.cwd === config.lockfileFolder - }); - var lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter); - var deps = yield getOutdated(config, reporter, flags, lockfile, args); - var install = new (_install || _load_install()).Install(flags, config, reporter, lockfile); - - var _ref2 = yield install.fetchRequestFromCwd(), - packagePatterns = _ref2.requests; - - setUserRequestedPackageVersions(deps, args, flags.latest, packagePatterns, reporter); - cleanLockfile(lockfile, deps, packagePatterns, reporter); - addArgs = deps.map(function (dep) { - return dep.upgradeTo; - }); - - if (flags.scope && validScopeRegex.test(flags.scope)) { - addArgs = addArgs.filter(function (depName) { - return depName.startsWith(flags.scope); - }); - } - - var add = new (_add || _load_add()).Add(addArgs, addFlags, config, reporter, upgradeAll ? new (_lockfile || _load_lockfile()).default() : lockfile); - yield add.init(); - }); - - return function run(_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); - }; -}(); - -var getOutdated = exports.getOutdated = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile, patterns) { - var install = new (_install || _load_install()).Install(flags, config, reporter, lockfile); - var outdatedFieldName = flags.latest ? 'latest' : 'wanted'; - - // ensure scope is of the form `@scope/` - var normalizeScope = function normalizeScope() { - if (flags.scope) { - if (!flags.scope.startsWith('@')) { - flags.scope = '@' + flags.scope; - } - - if (!flags.scope.endsWith('/')) { - flags.scope += '/'; - } - } - }; - - var versionFilter = function versionFilter(dep) { - return dep.current !== dep[outdatedFieldName]; - }; - - if (!flags.latest) { - // these flags only have an affect when --latest is used - flags.tilde = false; - flags.exact = false; - flags.caret = false; - } - - normalizeScope(); - - var deps = (yield (_packageRequest || _load_packageRequest()).default.getOutdatedPackages(lockfile, install, config, reporter, patterns, flags)).filter(versionFilter).filter(scopeFilter.bind(this, flags)); - deps.forEach(function (dep) { - dep.upgradeTo = buildPatternToUpgradeTo(dep, flags); - reporter.verbose(reporter.lang('verboseUpgradeBecauseOutdated', dep.name, dep.upgradeTo)); - }); - - return deps; - }); - - return function getOutdated(_x5, _x6, _x7, _x8, _x9) { - return _ref3.apply(this, arguments); - }; -}(); - -exports.cleanLockfile = cleanLockfile; -exports.setFlags = setFlags; -exports.hasWrapper = hasWrapper; - -var _add; - -function _load_add() { - return _add = __webpack_require__(149); -} - -var _lockfile; - -function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(24)); -} - -var _packageRequest; - -function _load_packageRequest() { - return _packageRequest = _interopRequireDefault(__webpack_require__(112)); -} - -var _normalizePattern; - -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(51); -} - -var _install; - -function _load_install() { - return _install = __webpack_require__(40); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// used to detect whether a semver range is simple enough to preserve when doing a --latest upgrade. -// when not matched, the upgraded version range will default to `^` the same as the `add` command would. -var basicSemverOperatorRegex = new RegExp('^(\\^|~|>|<=|>=)?[^ |&,]+$'); - -// used to detect if a passed parameter is a scope or a package name. - - -var validScopeRegex = /^@[a-zA-Z0-9-][a-zA-Z0-9_.-]*\/$/; - -// If specific versions were requested for packages, override what getOutdated reported as the latest to install -// Also add ones that are missing, since the requested packages may not have been outdated at all. -function setUserRequestedPackageVersions(deps, args, latest, packagePatterns, reporter) { - args.forEach(function (requestedPattern) { - var found = false; - var normalized = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(requestedPattern); - - // if the user specified a package name without a version range, then that implies "latest" - // but if the latest flag is not passed then we need to use the version range from package.json - if (!normalized.hasVersion && !latest) { - packagePatterns.forEach(function (packagePattern) { - var packageNormalized = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(packagePattern.pattern); - if (packageNormalized.name === normalized.name) { - normalized = packageNormalized; - } - }); - } - - var newPattern = `${normalized.name}@${normalized.range}`; - - // if this dependency is already in the outdated list, - // just update the upgradeTo to whatever version the user requested. - deps.forEach(function (dep) { - if (normalized.hasVersion && dep.name === normalized.name) { - found = true; - dep.upgradeTo = newPattern; - reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern)); - } - }); - - // if this dependency was not in the outdated list, - // then add a new entry - if (normalized.hasVersion && !found) { - deps.push({ - name: normalized.name, - wanted: '', - latest: '', - url: '', - hint: '', - range: '', - current: '', - upgradeTo: newPattern, - workspaceName: '', - workspaceLoc: '' - }); - reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern)); - } - }); -} - -// this function attempts to determine the range operator on the semver range. -// this will only handle the simple cases of a semver starting with '^', '~', '>', '>=', '<=', or an exact version. -// "exotic" semver ranges will not be handled. -function getRangeOperator(version) { - var result = basicSemverOperatorRegex.exec(version); - return result ? result[1] || '' : '^'; -} - -// Attempt to preserve the range operator from the package.json specified semver range. -// If an explicit operator was specified using --exact, --tilde, --caret, then that will take precedence. -function buildPatternToUpgradeTo(dep, flags) { - if (dep.latest === 'exotic') { - return dep.url; - } - - var toLatest = flags.latest; - var toVersion = toLatest ? dep.latest : dep.range; - var rangeOperator = ''; - - if (toLatest) { - if (flags.caret) { - rangeOperator = '^'; - } else if (flags.tilde) { - rangeOperator = '~'; - } else if (flags.exact) { - rangeOperator = ''; - } else { - rangeOperator = getRangeOperator(dep.range); - } - } - - return `${dep.name}@${rangeOperator}${toVersion}`; -} - -function scopeFilter(flags, dep) { - if (validScopeRegex.test(flags.scope)) { - return dep.name.startsWith(flags.scope); - } - return true; -} - -// Remove deps being upgraded from the lockfile, or else Add will use the already-installed version -// instead of the latest for the range. -// We do this recursively so that when Yarn installs the potentially updated transitive deps, -// it may upgrade them too instead of just using the "locked" version from the lockfile. -// Transitive dependencies that are also a direct dependency are skipped. -function cleanLockfile(lockfile, deps, packagePatterns, reporter) { - function cleanDepFromLockfile(pattern, depth) { - var lockManifest = lockfile.getLocked(pattern); - if (!lockManifest || depth > 1 && packagePatterns.some(function (packagePattern) { - return packagePattern.pattern === pattern; - })) { - reporter.verbose(reporter.lang('verboseUpgradeNotUnlocking', pattern)); - return; - } - - var dependencies = (0, (_assign || _load_assign()).default)({}, lockManifest.dependencies || {}, lockManifest.optionalDependencies || {}); - var depPatterns = (0, (_keys || _load_keys()).default)(dependencies).map(function (key) { - return `${key}@${dependencies[key]}`; - }); - reporter.verbose(reporter.lang('verboseUpgradeUnlocking', pattern)); - lockfile.removePattern(pattern); - depPatterns.forEach(function (pattern) { - return cleanDepFromLockfile(pattern, depth + 1); - }); - } - - var patterns = deps.map(function (dep) { - return dep.upgradeTo; - }); - patterns.forEach(function (pattern) { - return cleanDepFromLockfile(pattern, 1); - }); -} - -function setFlags(commander) { - commander.description('Upgrades packages to their latest version based on the specified range.'); - commander.usage('upgrade [flags]'); - commander.option('-S, --scope ', 'upgrade packages under the specified scope'); - commander.option('-L, --latest', 'list the latest version of packages, ignoring version ranges in package.json'); - commander.option('-E, --exact', 'install exact version. Only used when --latest is specified.'); - commander.option('-P, --pattern [pattern]', 'upgrade packages that match pattern'); - commander.option('-T, --tilde', 'install most recent release with the same minor version. Only used when --latest is specified.'); - commander.option('-C, --caret', 'install most recent release with the same major version. Only used when --latest is specified.'); - commander.option('-A', '--audit', 'Run vulnerability audit on installed packages'); -} - -function hasWrapper(commander, args) { - return true; -} - -var requireLockfile = exports.requireLockfile = true; - -/***/ }), -/* 190 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.integrityErrors = undefined; - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} +exports.SCOPE_SEPARATOR = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); + return _extends2 = _interopRequireDefault(__webpack_require__(21)); } var _asyncToGenerator2; function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); } var _constants; function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); + return _constants = __webpack_require__(8); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _npmResolver; + +function _load_npmResolver() { + return _npmResolver = _interopRequireDefault(__webpack_require__(217)); +} + +var _envReplace; + +function _load_envReplace() { + return _envReplace = _interopRequireDefault(__webpack_require__(577)); +} + +var _baseRegistry; + +function _load_baseRegistry() { + return _baseRegistry = _interopRequireDefault(__webpack_require__(558)); } var _misc; function _load_misc() { - return _misc = __webpack_require__(27); -} - -var _packageNameUtils; - -function _load_packageNameUtils() { - return _packageNameUtils = __webpack_require__(202); -} - -var _workspaceLayout; - -function _load_workspaceLayout() { - return _workspaceLayout = _interopRequireDefault(__webpack_require__(86)); -} - -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 }; } - -var invariant = __webpack_require__(13); - -var path = __webpack_require__(2); - -var integrityErrors = exports.integrityErrors = { - EXPECTED_IS_NOT_A_JSON: 'integrityFailedExpectedIsNotAJSON', - FILES_MISSING: 'integrityFailedFilesMissing', - LOCKFILE_DONT_MATCH: 'integrityLockfilesDontMatch', - FLAGS_DONT_MATCH: 'integrityFlagsDontMatch', - LINKED_MODULES_DONT_MATCH: 'integrityCheckLinkedModulesDontMatch', - PATTERNS_DONT_MATCH: 'integrityPatternsDontMatch', - MODULES_FOLDERS_MISSING: 'integrityModulesFoldersMissing', - SYSTEM_PARAMS_DONT_MATCH: 'integritySystemParamsDontMatch' -}; - -var INTEGRITY_FILE_DEFAULTS = function INTEGRITY_FILE_DEFAULTS() { - return { - systemParams: (0, (_packageNameUtils || _load_packageNameUtils()).getSystemParams)(), - modulesFolders: [], - flags: [], - linkedModules: [], - topLevelPatterns: [], - lockfileEntries: {}, - files: [] - }; -}; - -/** - * - */ - -var InstallationIntegrityChecker = function () { - function InstallationIntegrityChecker(config) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, InstallationIntegrityChecker); - - this.config = config; - } - - /** - * Get the common ancestor of every node_modules - it may be a node_modules directory itself, but isn't required to. - */ - - InstallationIntegrityChecker.prototype._getModulesRootFolder = function _getModulesRootFolder() { - if (this.config.modulesFolder) { - return this.config.modulesFolder; - } else if (this.config.workspaceRootFolder) { - return this.config.workspaceRootFolder; - } else { - return path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER); - } - }; - - /** - * Get the directory in which the yarn-integrity file should be written. - */ - - InstallationIntegrityChecker.prototype._getIntegrityFileFolder = function _getIntegrityFileFolder() { - if (this.config.modulesFolder) { - return this.config.modulesFolder; - } else if (this.config.enableMetaFolder) { - return path.join(this.config.lockfileFolder, (_constants || _load_constants()).META_FOLDER); - } else { - return path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER); - } - }; - - /** - * Get the full path of the yarn-integrity file. - */ - - InstallationIntegrityChecker.prototype._getIntegrityFileLocation = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var locationFolder = this._getIntegrityFileFolder(); - var locationPath = path.join(locationFolder, (_constants || _load_constants()).INTEGRITY_FILENAME); - - var exists = yield (_fs || _load_fs()).exists(locationPath); - - return { - locationFolder, - locationPath, - exists - }; - }); - - function _getIntegrityFileLocation() { - return _ref.apply(this, arguments); - } - - return _getIntegrityFileLocation; - }(); - - /** - * Get the list of the directories that contain our modules (there might be multiple such folders b/c of workspaces). - */ - - InstallationIntegrityChecker.prototype._getModulesFolders = function _getModulesFolders() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - workspaceLayout = _ref2.workspaceLayout; - - var locations = []; - - if (this.config.modulesFolder) { - locations.push(this.config.modulesFolder); - } else { - locations.push(path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER)); - } - - if (workspaceLayout) { - for (var _iterator = (0, (_keys || _load_keys()).default)(workspaceLayout.workspaces), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref3; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref3 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref3 = _i.value; - } - - var workspaceName = _ref3; - - var loc = workspaceLayout.workspaces[workspaceName].loc; - - if (loc) { - locations.push(path.join(loc, (_constants || _load_constants()).NODE_MODULES_FOLDER)); - } - } - } - - return locations.sort((_misc || _load_misc()).sortAlpha); - }; - - /** - * Get a list of the files that are located inside our module folders. - */ - - - InstallationIntegrityChecker.prototype._getIntegrityListing = function () { - var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - workspaceLayout = _ref5.workspaceLayout; - - var files = []; - - var recurse = function () { - var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { - for (var _iterator2 = yield (_fs || _load_fs()).readdir(dir), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref7; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref7 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref7 = _i2.value; - } - - var file = _ref7; - - var entry = path.join(dir, file); - var stat = yield (_fs || _load_fs()).lstat(entry); - - if (stat.isDirectory()) { - yield recurse(entry); - } else { - files.push(entry); - } - } - }); - - return function recurse(_x3) { - return _ref6.apply(this, arguments); - }; - }(); - - for (var _iterator3 = this._getModulesFolders({ workspaceLayout }), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref8; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref8 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref8 = _i3.value; - } - - var modulesFolder = _ref8; - - if (yield (_fs || _load_fs()).exists(modulesFolder)) { - yield recurse(modulesFolder); - } - } - - return files; - }); - - function _getIntegrityListing() { - return _ref4.apply(this, arguments); - } - - return _getIntegrityListing; - }(); - - /** - * Generate integrity hash of input lockfile. - */ - - InstallationIntegrityChecker.prototype._generateIntegrityFile = function () { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (lockfile, patterns, flags, workspaceLayout, artifacts) { - var result = (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(), { - artifacts - }); - - result.topLevelPatterns = patterns; - - // If using workspaces, we also need to add the workspaces patterns to the top-level, so that we'll know if a - // dependency is added or removed into one of them. We must take care not to read the aggregator (if !loc). - // - // Also note that we can't use of workspaceLayout.workspaces[].manifest._reference.patterns, because when - // doing a "yarn check", the _reference property hasn't yet been properly initialized. - - if (workspaceLayout) { - result.topLevelPatterns = result.topLevelPatterns.filter(function (p) { - // $FlowFixMe - return !workspaceLayout.getManifestByPattern(p); - }); - - for (var _iterator4 = (0, (_keys || _load_keys()).default)(workspaceLayout.workspaces), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref10; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref10 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref10 = _i4.value; - } - - var name = _ref10; - - if (!workspaceLayout.workspaces[name].loc) { - continue; - } - - var manifest = workspaceLayout.workspaces[name].manifest; - - if (manifest) { - for (var _iterator5 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref11; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref11 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref11 = _i5.value; - } - - var dependencyType = _ref11; - - var dependencies = manifest[dependencyType]; - - if (!dependencies) { - continue; - } - - for (var _iterator6 = (0, (_keys || _load_keys()).default)(dependencies), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref12; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref12 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref12 = _i6.value; - } - - var dep = _ref12; - - result.topLevelPatterns.push(`${dep}@${dependencies[dep]}`); - } - } - } - } - } - - result.topLevelPatterns.sort((_misc || _load_misc()).sortAlpha); - - if (flags.checkFiles) { - result.flags.push('checkFiles'); - } - - if (flags.flat) { - result.flags.push('flat'); - } - if (flags.ignoreScripts) { - result.flags.push('ignoreScripts'); - } - if (this.config.focus) { - result.flags.push('focus: ' + this.config.focusedWorkspaceName); - } - - if (this.config.production) { - result.flags.push('production'); - } - - if (this.config.plugnplayEnabled) { - result.flags.push('plugnplay'); - } - - var linkedModules = this.config.linkedModules; - - if (linkedModules.length) { - result.linkedModules = linkedModules.sort((_misc || _load_misc()).sortAlpha); - } - - for (var _iterator7 = (0, (_keys || _load_keys()).default)(lockfile), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator7);;) { - var _ref13; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref13 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref13 = _i7.value; - } - - var _key = _ref13; - - result.lockfileEntries[_key] = lockfile[_key].resolved || ''; - } - - for (var _iterator8 = this._getModulesFolders({ workspaceLayout }), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator8);;) { - var _ref14; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref14 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref14 = _i8.value; - } - - var modulesFolder = _ref14; - - if (yield (_fs || _load_fs()).exists(modulesFolder)) { - result.modulesFolders.push(path.relative(this.config.lockfileFolder, modulesFolder)); - } - } - - if (flags.checkFiles) { - var modulesRoot = this._getModulesRootFolder(); - - result.files = (yield this._getIntegrityListing({ workspaceLayout })).map(function (entry) { - return path.relative(modulesRoot, entry); - }).sort((_misc || _load_misc()).sortAlpha); - } - - return result; - }); - - function _generateIntegrityFile(_x4, _x5, _x6, _x7, _x8) { - return _ref9.apply(this, arguments); - } - - return _generateIntegrityFile; - }(); - - InstallationIntegrityChecker.prototype._getIntegrityFile = function () { - var _ref15 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (locationPath) { - var expectedRaw = yield (_fs || _load_fs()).readFile(locationPath); - try { - return (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(), JSON.parse(expectedRaw)); - } catch (e) { - // ignore JSON parsing for legacy text integrity files compatibility - } - return null; - }); - - function _getIntegrityFile(_x9) { - return _ref15.apply(this, arguments); - } - - return _getIntegrityFile; - }(); - - InstallationIntegrityChecker.prototype._compareIntegrityFiles = function _compareIntegrityFiles(actual, expected, checkFiles, workspaceLayout) { - if (!expected) { - return 'EXPECTED_IS_NOT_A_JSON'; - } - - if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.linkedModules, expected.linkedModules)) { - return 'LINKED_MODULES_DONT_MATCH'; - } - - if (actual.systemParams !== expected.systemParams) { - return 'SYSTEM_PARAMS_DONT_MATCH'; - } - - var relevantExpectedFlags = expected.flags.slice(); - - // If we run "yarn" after "yarn --check-files", we shouldn't fail the less strict validation - if (actual.flags.indexOf('checkFiles') === -1) { - relevantExpectedFlags = relevantExpectedFlags.filter(function (flag) { - return flag !== 'checkFiles'; - }); - } - - if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.flags, relevantExpectedFlags)) { - return 'FLAGS_DONT_MATCH'; - } - - if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.topLevelPatterns, expected.topLevelPatterns || [])) { - return 'PATTERNS_DONT_MATCH'; - } - - for (var _iterator9 = (0, (_keys || _load_keys()).default)(actual.lockfileEntries), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator9);;) { - var _ref16; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref16 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref16 = _i9.value; - } - - var _key2 = _ref16; - - if (actual.lockfileEntries[_key2] !== expected.lockfileEntries[_key2]) { - return 'LOCKFILE_DONT_MATCH'; - } - } - - for (var _iterator10 = (0, (_keys || _load_keys()).default)(expected.lockfileEntries), _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator10);;) { - var _ref17; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref17 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref17 = _i10.value; - } - - var _key3 = _ref17; - - if (actual.lockfileEntries[_key3] !== expected.lockfileEntries[_key3]) { - return 'LOCKFILE_DONT_MATCH'; - } - } - - if (checkFiles) { - // Early bailout if we expect more files than what we have - if (expected.files.length > actual.files.length) { - return 'FILES_MISSING'; - } - - // Since we know the "files" array is sorted (alphabetically), we can optimize the thing - // Instead of storing the files in a Set, we can just iterate both arrays at once. O(n)! - for (var u = 0, v = 0; u < expected.files.length; ++u) { - // Index that, if reached, means that we won't have enough food to match the remaining expected entries anyway - var max = v + (actual.files.length - v) - (expected.files.length - u) + 1; - - // Skip over files that have been added (ie not present in 'expected') - while (v < max && actual.files[v] !== expected.files[u]) { - v += 1; - } - - // If we've reached the index defined above, the file is either missing or we can early exit - if (v === max) { - return 'FILES_MISSING'; - } - } - } - return 'OK'; - }; - - InstallationIntegrityChecker.prototype.check = function () { - var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, lockfile, flags, workspaceLayout) { - // check if patterns exist in lockfile - var missingPatterns = patterns.filter(function (p) { - return !lockfile[p] && (!workspaceLayout || !workspaceLayout.getManifestByPattern(p)); - }); - - var loc = yield this._getIntegrityFileLocation(); - if (missingPatterns.length || !loc.exists) { - return { - integrityFileMissing: !loc.exists, - missingPatterns - }; - } - - var actual = yield this._generateIntegrityFile(lockfile, patterns, flags, workspaceLayout); - - var expected = yield this._getIntegrityFile(loc.locationPath); - var integrityMatches = this._compareIntegrityFiles(actual, expected, flags.checkFiles, workspaceLayout); - - if (integrityMatches === 'OK') { - invariant(expected, "The integrity shouldn't pass without integrity file"); - for (var _iterator11 = expected.modulesFolders, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator11);;) { - var _ref19; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref19 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref19 = _i11.value; - } - - var modulesFolder = _ref19; - - if (!(yield (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, modulesFolder)))) { - integrityMatches = 'MODULES_FOLDERS_MISSING'; - } - } - } - - return { - integrityFileMissing: false, - integrityMatches: integrityMatches === 'OK', - integrityError: integrityMatches === 'OK' ? undefined : integrityMatches, - missingPatterns, - hardRefreshRequired: integrityMatches === 'SYSTEM_PARAMS_DONT_MATCH' - }; - }); - - function check(_x10, _x11, _x12, _x13) { - return _ref18.apply(this, arguments); - } - - return check; - }(); - - /** - * Get artifacts from integrity file if it exists. - */ - - - InstallationIntegrityChecker.prototype.getArtifacts = function () { - var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var loc = yield this._getIntegrityFileLocation(); - if (!loc.exists) { - return null; - } - - var expectedRaw = yield (_fs || _load_fs()).readFile(loc.locationPath); - var expected = void 0; - try { - expected = JSON.parse(expectedRaw); - } catch (e) { - // ignore JSON parsing for legacy text integrity files compatibility - } - - return expected ? expected.artifacts : null; - }); - - function getArtifacts() { - return _ref20.apply(this, arguments); - } - - return getArtifacts; - }(); - - /** - * Write the integrity hash of the current install to disk. - */ - - - InstallationIntegrityChecker.prototype.save = function () { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, lockfile, flags, workspaceLayout, artifacts) { - var integrityFile = yield this._generateIntegrityFile(lockfile, patterns, flags, workspaceLayout, artifacts); - - var loc = yield this._getIntegrityFileLocation(); - invariant(loc.locationPath, 'expected integrity hash location'); - - yield (_fs || _load_fs()).mkdirp(path.dirname(loc.locationPath)); - yield (_fs || _load_fs()).writeFile(loc.locationPath, (0, (_stringify || _load_stringify()).default)(integrityFile, null, 2)); - }); - - function save(_x14, _x15, _x16, _x17, _x18) { - return _ref21.apply(this, arguments); - } - - return save; - }(); - - InstallationIntegrityChecker.prototype.removeIntegrityFile = function () { - var _ref22 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var loc = yield this._getIntegrityFileLocation(); - if (loc.exists) { - yield (_fs || _load_fs()).unlink(loc.locationPath); - } - }); - - function removeIntegrityFile() { - return _ref22.apply(this, arguments); - } - - return removeIntegrityFile; - }(); - - return InstallationIntegrityChecker; -}(); - -exports.default = InstallationIntegrityChecker; - -/***/ }), -/* 191 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchOneRemote = undefined; - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(41)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var fetchCache = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest, fetcher, config) { - var _ref2 = yield config.readPackageMetadata(dest), - 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); - }; -}(); - -var fetchOneRemote = exports.fetchOneRemote = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (remote, name, version, dest, config) { - // Mock metadata for symlinked dependencies - if (remote.type === 'link') { - var mockPkg = { _uid: '', name: '', version: '0.0.0' }; - return (_promise || _load_promise()).default.resolve({ resolved: null, hash: '', dest, package: mockPkg, cached: false }); - } - - var Fetcher = (_index || _load_index())[remote.type]; - if (!Fetcher) { - throw new (_errors || _load_errors()).MessageError(config.reporter.lang('unknownFetcherFor', remote.type)); - } - - var 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, - version - }); - } catch (err) { - try { - yield (_fs || _load_fs()).unlink(dest); - } catch (err2) { - // what do? - } - throw err; - } - }); - - return function fetchOneRemote(_x4, _x5, _x6, _x7, _x8) { - return _ref3.apply(this, arguments); - }; -}(); - -var maybeFetchOne = function () { - 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(_x9, _x10) { - return _ref4.apply(this, arguments); - }; -}(); - -exports.fetch = fetch; - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _index; - -function _load_index() { - return _index = _interopRequireWildcard(__webpack_require__(532)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _promise2; - -function _load_promise2() { - return _promise2 = _interopRequireWildcard(__webpack_require__(85)); -} - -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 fetchOne(ref, config) { - var dest = config.generateModuleCachePath(ref); - - return fetchOneRemote(ref.remote, ref.name, ref.version, dest, config); -} - -function fetch(pkgs, config) { - var pkgsPerDest = new (_map || _load_map()).default(); - pkgs = pkgs.filter(function (pkg) { - var ref = pkg._reference; - if (!ref) { - return false; - } - var dest = config.generateModuleCachePath(ref); - var 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; - }); - var tick = config.reporter.progress(pkgs.length); - - return (_promise2 || _load_promise2()).queue(pkgs, function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg) { - var ref = pkg._reference; - if (!ref) { - return pkg; - } - - var res = yield maybeFetchOne(ref, config); - var newPkg = void 0; - - 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) { - var oldHash = ref.remote.hash; - if (ref.remote.resolved) { - ref.remote.resolved = ref.remote.resolved.replace(oldHash, res.hash); - } - ref.config.cache = (0, (_keys || _load_keys()).default)(ref.config.cache).reduce(function (cache, entry) { - var entryWithNewHash = entry.replace(oldHash, res.hash); - cache[entryWithNewHash] = ref.config.cache[entry]; - return cache; - }, {}); - } - ref.remote.hash = res.hash || ref.remote.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 (_x11) { - return _ref5.apply(this, arguments); - }; - }(), config.networkConcurrency); -} - -/***/ }), -/* 192 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.linkBin = undefined; - -var _from; - -function _load_from() { - return _from = _interopRequireDefault(__webpack_require__(52)); -} - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(41)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireDefault(__webpack_require__(6)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var linkBin = exports.linkBin = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { - if (process.platform === 'win32') { - var unlockMutex = yield (0, (_mutex || _load_mutex()).default)(src); - try { - yield cmdShim(src, dest); - } finally { - unlockMutex(); - } - } else { - yield (_fs || _load_fs()).mkdirp(path.dirname(dest)); - yield (_fs || _load_fs()).symlink(src, dest); - yield (_fs || _load_fs()).chmod(dest, '755'); - } - }); - - return function linkBin(_x, _x2) { - return _ref.apply(this, arguments); - }; -}(); - -var _packageHoister; - -function _load_packageHoister() { - return _packageHoister = _interopRequireDefault(__webpack_require__(537)); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(14)); -} - -var _promise2; - -function _load_promise2() { - return _promise2 = _interopRequireWildcard(__webpack_require__(85)); -} - -var _normalizePattern2; - -function _load_normalizePattern() { - return _normalizePattern2 = __webpack_require__(51); -} - -var _misc; - -function _load_misc() { - return _misc = __webpack_require__(27); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _mutex; - -function _load_mutex() { - return _mutex = _interopRequireDefault(__webpack_require__(313)); -} - -var _semver; - -function _load_semver() { - return _semver = __webpack_require__(203); -} - -var _workspaceLayout; - -function _load_workspaceLayout() { - return _workspaceLayout = _interopRequireDefault(__webpack_require__(86)); -} - -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 }; } - -var invariant = __webpack_require__(13); - -var cmdShim = __webpack_require__(183); -var path = __webpack_require__(2); -var semver = __webpack_require__(26); -// Concurrency for creating bin links disabled because of the issue #1961 -var linkBinConcurrency = 1; - -var PackageLinker = function () { - function PackageLinker(config, resolver) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, PackageLinker); - - this.resolver = resolver; - this.reporter = config.reporter; - this.config = config; - this.artifacts = {}; - this.topLevelBinLinking = true; - this.unplugged = []; - } - - PackageLinker.prototype.setArtifacts = function setArtifacts(artifacts) { - this.artifacts = artifacts; - }; - - PackageLinker.prototype.setTopLevelBinLinking = function setTopLevelBinLinking(topLevelBinLinking) { - this.topLevelBinLinking = topLevelBinLinking; - }; - - PackageLinker.prototype.linkSelfDependencies = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg, pkgLoc, targetBinLoc) { - var override = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - targetBinLoc = path.join(targetBinLoc, '.bin'); - yield (_fs || _load_fs()).mkdirp(targetBinLoc); - targetBinLoc = yield (_fs || _load_fs()).realpath(targetBinLoc); - pkgLoc = yield (_fs || _load_fs()).realpath(pkgLoc); - for (var _iterator = (0, (_misc || _load_misc()).entries)(pkg.bin), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref4; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref4 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref4 = _i.value; - } - - var _ref3 = _ref4; - var scriptName = _ref3[0]; - var scriptCmd = _ref3[1]; - - var dest = path.join(targetBinLoc, scriptName); - var src = path.join(pkgLoc, scriptCmd); - if (!(yield (_fs || _load_fs()).exists(src))) { - if (!override) { - // TODO maybe throw an error - continue; - } - } - yield linkBin(src, dest); - } - }); - - function linkSelfDependencies(_x3, _x4, _x5) { - return _ref2.apply(this, arguments); - } - - return linkSelfDependencies; - }(); - - PackageLinker.prototype.linkBinDependencies = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg, dir) { - var _this = this; - - var deps = []; - - var ref = pkg._reference; - invariant(ref, 'Package reference is missing'); - - var remote = pkg._remote; - invariant(remote, 'Package remote is missing'); - - // link up `bin scripts` in `dependencies` - for (var _iterator2 = ref.dependencies, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator2);;) { - var _ref6; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref6 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref6 = _i2.value; - } - - var pattern = _ref6; - - var _dep = this.resolver.getStrictResolvedPattern(pattern); - if ( - // Missing locations means not installed inside node_modules - _dep._reference && _dep._reference.locations.length && _dep.bin && (0, (_keys || _load_keys()).default)(_dep.bin).length) { - var _loc2 = yield this.findNearestInstalledVersionOfPackage(_dep, dir); - deps.push({ dep: _dep, loc: _loc2 }); - } - } - - // link up the `bin` scripts in bundled dependencies - if (pkg.bundleDependencies) { - var _loop = function* _loop(depName) { - var locs = ref.locations.map(function (loc) { - return path.join(loc, _this.config.getFolder(pkg), depName); - }); - try { - var _dep2 = yield _this.config.readManifest(locs[0], remote.registry); //all of them should be the same - - if (_dep2.bin && (0, (_keys || _load_keys()).default)(_dep2.bin).length) { - deps.push.apply(deps, locs.map(function (loc) { - return { dep: _dep2, loc }; - })); - } - } catch (ex) { - if (ex.code !== 'ENOENT') { - throw ex; - } - // intentionally ignoring ENOENT error. - // bundledDependency either does not exist or does not contain a package.json - } - }; - - for (var _iterator3 = pkg.bundleDependencies, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator3);;) { - var _ref7; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref7 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref7 = _i3.value; - } - - var depName = _ref7; - yield* _loop(depName); - } - } - - // no deps to link - if (!deps.length) { - return; - } - - // write the executables - for (var _iterator4 = deps, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator4);;) { - var _ref9; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref9 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref9 = _i4.value; - } - - var _ref8 = _ref9; - var _dep3 = _ref8.dep, - _loc = _ref8.loc; - - if (_dep3._reference && _dep3._reference.locations.length) { - invariant(!_dep3._reference.isPlugnplay, "Plug'n'play packages should not be referenced here"); - yield this.linkSelfDependencies(_dep3, _loc, dir); - } - } - }); - - function linkBinDependencies(_x7, _x8) { - return _ref5.apply(this, arguments); - } - - return linkBinDependencies; - }(); - - //find the installation location of ref that would be used in binLoc based on node module resolution - - - PackageLinker.prototype.findNearestInstalledVersionOfPackage = function () { - var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg, binLoc) { - var ref = pkg._reference; - invariant(ref, 'expected pkg reference for ' + pkg.name); - var moduleFolder = this.config.getFolder(pkg); - yield (_fs || _load_fs()).mkdirp(binLoc); - var realBinLoc = yield (_fs || _load_fs()).realpath(binLoc); - - var allLocations = [].concat(ref.locations); - var realLocations = yield (_promise || _load_promise()).default.all(ref.locations.map(function (loc) { - return (_fs || _load_fs()).realpath(loc); - })); - realLocations.forEach(function (loc) { - return allLocations.indexOf(loc) !== -1 || allLocations.push(loc); - }); - - var locationBinLocPairs = allLocations.map(function (loc) { - return [loc, binLoc]; - }); - if (binLoc !== realBinLoc) { - locationBinLocPairs.push.apply(locationBinLocPairs, allLocations.map(function (loc) { - return [loc, realBinLoc]; - })); - } - - var distancePairs = locationBinLocPairs.map(function (_ref11) { - var loc = _ref11[0], - curBinLoc = _ref11[1]; - - var distance = 0; - var curLoc = curBinLoc; - var notFound = false; - - while (path.join(curLoc, ref.name) !== loc && path.join(curLoc, moduleFolder, ref.name) !== loc) { - var next = path.dirname(curLoc); - if (curLoc === next) { - notFound = true; - break; - } - - distance++; - curLoc = next; - } - return notFound ? null : [loc, distance]; - }); - - //remove items where path was not found - var filteredDistancePairs = distancePairs.filter(function (d) { - return d; - }); - filteredDistancePairs; - - invariant(filteredDistancePairs.length > 0, `could not find a copy of ${pkg.name} to link in ${binLoc}`); - - //get smallest distance from package location - var minItem = filteredDistancePairs.reduce(function (min, cur) { - return cur[1] < min[1] ? cur : min; - }); - - invariant(minItem[1] >= 0, 'could not find a target for bin dir of ' + minItem.toString()); - return minItem[0]; - }); - - function findNearestInstalledVersionOfPackage(_x9, _x10) { - return _ref10.apply(this, arguments); - } - - return findNearestInstalledVersionOfPackage; - }(); - - PackageLinker.prototype.getFlatHoistedTree = function getFlatHoistedTree(patterns, workspaceLayout) { - var _ref12 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - ignoreOptional = _ref12.ignoreOptional; - - var hoister = new (_packageHoister || _load_packageHoister()).default(this.config, this.resolver, { ignoreOptional, workspaceLayout }); - hoister.seed(patterns); - if (this.config.focus) { - hoister.markShallowWorkspaceEntries(); - } - return hoister.init(); - }; - - PackageLinker.prototype.copyModules = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, workspaceLayout) { - var _this2 = this; - - var _ref14 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - linkDuplicates = _ref14.linkDuplicates, - ignoreOptional = _ref14.ignoreOptional; - - var flatTree = this.getFlatHoistedTree(patterns, workspaceLayout, { ignoreOptional }); - // sorted tree makes file creation and copying not to interfere with each other - flatTree = flatTree.sort(function (dep1, dep2) { - return dep1[0].localeCompare(dep2[0]); - }); - - // list of artifacts in modules to remove from extraneous removal - var artifactFiles = []; - - var copyQueue = new (_map || _load_map()).default(); - var hardlinkQueue = new (_map || _load_map()).default(); - var hardlinksEnabled = linkDuplicates && (yield (_fs || _load_fs()).hardlinksWork(this.config.cwd)); - - var copiedSrcs = new (_map || _load_map()).default(); - var symlinkPaths = new (_map || _load_map()).default(); - - var _loop2 = function* _loop2(folder, pkg, isShallow, _loc3) { - var remote = pkg._remote || { type: '' }; - var ref = pkg._reference; - var dest = folder; - invariant(ref, 'expected package reference'); - - var src = _loc3; - var type = ''; - if (remote.type === 'link') { - // replace package source from incorrect cache location (workspaces and link: are not cached) - // with a symlink source - src = remote.reference; - type = 'symlink'; - } else if (workspaceLayout && remote.type === 'workspace' && !isShallow) { - src = remote.reference; - type = 'symlink'; - if (dest.indexOf(workspaceLayout.virtualManifestName) !== -1) { - // we don't need to install virtual manifest - return 'continue'; - } - // to get real path for non hoisted dependencies - symlinkPaths.set(dest, src); - } else { - // backwards compatibility: get build artifacts from metadata - // does not apply to symlinked dependencies - var metadata = yield _this2.config.readPackageMetadata(src); - for (var _iterator15 = metadata.artifacts, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator15);;) { - var _ref32; - - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref32 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref32 = _i15.value; - } - - var file = _ref32; - - artifactFiles.push(path.join(dest, file)); - } - } - - for (var _iterator16 = symlinkPaths.entries(), _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator16);;) { - var _ref34; - - if (_isArray16) { - if (_i16 >= _iterator16.length) break; - _ref34 = _iterator16[_i16++]; - } else { - _i16 = _iterator16.next(); - if (_i16.done) break; - _ref34 = _i16.value; - } - - var _ref33 = _ref34; - var symlink = _ref33[0]; - var realpath = _ref33[1]; - - if (dest.indexOf(symlink + path.sep) === 0) { - // after hoisting we end up with this structure - // root/node_modules/workspace-package(symlink)/node_modules/package-a - // fs.copy operations can't copy files through a symlink, so all the paths under workspace-package - // need to be replaced with a real path, except for the symlink root/node_modules/workspace-package - dest = dest.replace(symlink, realpath); - } - } - - if (_this2.config.plugnplayEnabled) { - ref.isPlugnplay = true; - if (yield _this2._isUnplugged(pkg, ref)) { - dest = _this2.config.generatePackageUnpluggedPath(ref); - - // We don't skip the copy if the unplugged package isn't materialized yet - if (yield (_fs || _load_fs()).exists(dest)) { - ref.addLocation(dest); - return 'continue'; - } - } else { - ref.addLocation(src); - return 'continue'; - } - } - - ref.addLocation(dest); - - var integrityArtifacts = _this2.artifacts[`${pkg.name}@${pkg.version}`]; - if (integrityArtifacts) { - for (var _iterator17 = integrityArtifacts, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator17);;) { - var _ref35; - - if (_isArray17) { - if (_i17 >= _iterator17.length) break; - _ref35 = _iterator17[_i17++]; - } else { - _i17 = _iterator17.next(); - if (_i17.done) break; - _ref35 = _i17.value; - } - - var _file = _ref35; - - artifactFiles.push(path.join(dest, _file)); - } - } - - var copiedDest = copiedSrcs.get(src); - if (!copiedDest) { - // no point to hardlink to a symlink - if (hardlinksEnabled && type !== 'symlink') { - copiedSrcs.set(src, dest); - } - copyQueue.set(dest, { - src, - dest, - type, - onFresh() { - if (ref) { - ref.setFresh(true); - } - } - }); - } else { - hardlinkQueue.set(dest, { - src: copiedDest, - dest, - onFresh() { - if (ref) { - ref.setFresh(true); - } - } - }); - } - }; - - for (var _iterator5 = flatTree, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator5);;) { - var _ref16; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref16 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref16 = _i5.value; - } - - var _ref15 = _ref16; - var folder = _ref15[0]; - var _ref15$ = _ref15[1]; - var pkg = _ref15$.pkg; - var _loc3 = _ref15$.loc; - var isShallow = _ref15$.isShallow; - - var _ret2 = yield* _loop2(folder, pkg, isShallow, _loc3); - - if (_ret2 === 'continue') continue; - } - - var possibleExtraneous = new (_set || _load_set()).default(); - var scopedPaths = new (_set || _load_set()).default(); - - var findExtraneousFiles = function () { - var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (basePath) { - for (var _iterator6 = _this2.config.registryFolders, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator6);;) { - var _ref18; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref18 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref18 = _i6.value; - } - - var folder = _ref18; - - var _loc4 = path.resolve(basePath, folder); - - if (yield (_fs || _load_fs()).exists(_loc4)) { - var files = yield (_fs || _load_fs()).readdir(_loc4); - - for (var _iterator7 = files, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator7);;) { - var _ref19; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref19 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref19 = _i7.value; - } - - var file = _ref19; - - var filepath = path.join(_loc4, file); - - // it's a scope, not a package - if (file[0] === '@') { - scopedPaths.add(filepath); - - for (var _iterator8 = yield (_fs || _load_fs()).readdir(filepath), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator8);;) { - var _ref20; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref20 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref20 = _i8.value; - } - - var subfile = _ref20; - - possibleExtraneous.add(path.join(filepath, subfile)); - } - } else { - possibleExtraneous.add(filepath); - } - } - } - } - }); - - return function findExtraneousFiles(_x15) { - return _ref17.apply(this, arguments); - }; - }(); - - yield findExtraneousFiles(this.config.lockfileFolder); - if (workspaceLayout) { - for (var _iterator9 = (0, (_keys || _load_keys()).default)(workspaceLayout.workspaces), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator9);;) { - var _ref21; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref21 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref21 = _i9.value; - } - - var workspaceName = _ref21; - - yield findExtraneousFiles(workspaceLayout.workspaces[workspaceName].loc); - } - } - - // If an Extraneous is an entry created via "yarn link", we prevent it from being overwritten. - // Unfortunately, the only way we can know if they have been created this way is to check if they - // are symlinks - problem is that it then conflicts with the newly introduced "link:" protocol, - // which also creates symlinks :( a somewhat weak fix is to check if the symlink target is registered - // inside the linkFolder, in which case we assume it has been created via "yarn link". Otherwise, we - // assume it's a link:-managed dependency, and overwrite it as usual. - var linkTargets = new (_map || _load_map()).default(); - - var linkedModules = void 0; - try { - linkedModules = yield (_fs || _load_fs()).readdir(this.config.linkFolder); - } catch (err) { - if (err.code === 'ENOENT') { - linkedModules = []; - } else { - throw err; - } - } - - // TODO: Consolidate this logic with `this.config.linkedModules` logic - for (var _iterator10 = linkedModules, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator10);;) { - var _ref22; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref22 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref22 = _i10.value; - } - - var entry = _ref22; - - var entryPath = path.join(this.config.linkFolder, entry); - var stat = yield (_fs || _load_fs()).lstat(entryPath); - - if (stat.isSymbolicLink()) { - try { - var entryTarget = yield (_fs || _load_fs()).realpath(entryPath); - linkTargets.set(entry, entryTarget); - } catch (err) { - this.reporter.warn(this.reporter.lang('linkTargetMissing', entry)); - yield (_fs || _load_fs()).unlink(entryPath); - } - } else if (stat.isDirectory() && entry[0] === '@') { - // if the entry is directory beginning with '@', then we're dealing with a package scope, which - // means we must iterate inside to retrieve the package names it contains - var scopeName = entry; - - for (var _iterator18 = yield (_fs || _load_fs()).readdir(entryPath), _isArray18 = Array.isArray(_iterator18), _i18 = 0, _iterator18 = _isArray18 ? _iterator18 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator18);;) { - var _ref36; - - if (_isArray18) { - if (_i18 >= _iterator18.length) break; - _ref36 = _iterator18[_i18++]; - } else { - _i18 = _iterator18.next(); - if (_i18.done) break; - _ref36 = _i18.value; - } - - var entry2 = _ref36; - - var entryPath2 = path.join(entryPath, entry2); - var stat2 = yield (_fs || _load_fs()).lstat(entryPath2); - - if (stat2.isSymbolicLink()) { - var packageName = `${scopeName}/${entry2}`; - try { - var _entryTarget = yield (_fs || _load_fs()).realpath(entryPath2); - linkTargets.set(packageName, _entryTarget); - } catch (err) { - this.reporter.warn(this.reporter.lang('linkTargetMissing', packageName)); - yield (_fs || _load_fs()).unlink(entryPath2); - } - } - } - } - } - - for (var _iterator11 = possibleExtraneous, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator11);;) { - var _ref23; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref23 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref23 = _i11.value; - } - - var _loc5 = _ref23; - - var packageName = path.basename(_loc5); - var scopeName = path.basename(path.dirname(_loc5)); - - if (scopeName[0] === `@`) { - packageName = `${scopeName}/${packageName}`; - } - - if ((yield (_fs || _load_fs()).lstat(_loc5)).isSymbolicLink() && linkTargets.has(packageName) && linkTargets.get(packageName) === (yield (_fs || _load_fs()).realpath(_loc5))) { - possibleExtraneous.delete(_loc5); - copyQueue.delete(_loc5); - } - } - - // - var tick = void 0; - yield (_fs || _load_fs()).copyBulk((0, (_from || _load_from()).default)(copyQueue.values()), this.reporter, { - possibleExtraneous, - artifactFiles, - - ignoreBasenames: [(_constants || _load_constants()).METADATA_FILENAME, (_constants || _load_constants()).TARBALL_FILENAME, '.bin'], - - onStart: function onStart(num) { - tick = _this2.reporter.progress(num); - }, - - onProgress(src) { - if (tick) { - tick(); - } - } - }); - - yield (_fs || _load_fs()).hardlinkBulk((0, (_from || _load_from()).default)(hardlinkQueue.values()), this.reporter, { - possibleExtraneous, - artifactFiles, - - onStart: function onStart(num) { - tick = _this2.reporter.progress(num); - }, - - onProgress(src) { - if (tick) { - tick(); - } - } - }); - - // remove all extraneous files that weren't in the tree - for (var _iterator12 = possibleExtraneous, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator12);;) { - var _ref24; - - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref24 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref24 = _i12.value; - } - - var _loc6 = _ref24; - - this.reporter.verbose(this.reporter.lang('verboseFileRemoveExtraneous', _loc6)); - yield (_fs || _load_fs()).unlink(_loc6); - } - - // remove any empty scoped directories - for (var _iterator13 = scopedPaths, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator13);;) { - var _ref25; - - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref25 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref25 = _i13.value; - } - - var scopedPath = _ref25; - - var files = yield (_fs || _load_fs()).readdir(scopedPath); - if (files.length === 0) { - yield (_fs || _load_fs()).unlink(scopedPath); - } - } - - // create binary links - if (this.config.getOption('bin-links') && this.config.binLinks !== false) { - var topLevelDependencies = this.determineTopLevelBinLinkOrder(flatTree); - var tickBin = this.reporter.progress(flatTree.length + topLevelDependencies.length); - - // create links in transient dependencies - yield (_promise2 || _load_promise2()).queue(flatTree, function () { - var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (_ref27) { - var dest = _ref27[0], - _ref27$ = _ref27[1], - pkg = _ref27$.pkg, - isNohoist = _ref27$.isNohoist, - parts = _ref27$.parts; - - if (pkg._reference && pkg._reference.locations.length && !pkg._reference.isPlugnplay) { - var binLoc = path.join(dest, _this2.config.getFolder(pkg)); - yield _this2.linkBinDependencies(pkg, binLoc); - if (isNohoist) { - // if nohoist, we need to override the binLink to point to the local destination - var parentBinLoc = _this2.getParentBinLoc(parts, flatTree); - yield _this2.linkSelfDependencies(pkg, dest, parentBinLoc, true); - } - tickBin(); - } - tickBin(); - }); - - return function (_x16) { - return _ref26.apply(this, arguments); - }; - }(), linkBinConcurrency); - - // create links at top level for all dependencies. - yield (_promise2 || _load_promise2()).queue(topLevelDependencies, function () { - var _ref28 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (_ref29) { - var dest = _ref29[0], - pkg = _ref29[1].pkg; - - if (pkg._reference && pkg._reference.locations.length && !pkg._reference.isPlugnplay && pkg.bin && (0, (_keys || _load_keys()).default)(pkg.bin).length) { - var binLoc = void 0; - if (_this2.config.modulesFolder) { - binLoc = path.join(_this2.config.modulesFolder); - } else { - binLoc = path.join(_this2.config.lockfileFolder, _this2.config.getFolder(pkg)); - } - yield _this2.linkSelfDependencies(pkg, dest, binLoc); - } - tickBin(); - }); - - return function (_x17) { - return _ref28.apply(this, arguments); - }; - }(), linkBinConcurrency); - } - - for (var _iterator14 = flatTree, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator14);;) { - var _ref31; - - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref31 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref31 = _i14.value; - } - - var _ref30 = _ref31; - var pkg = _ref30[1].pkg; - - yield this._warnForMissingBundledDependencies(pkg); - } - }); - - function copyModules(_x12, _x13) { - return _ref13.apply(this, arguments); - } - - return copyModules; - }(); - - PackageLinker.prototype._buildTreeHash = function _buildTreeHash(flatTree) { - var hash = new (_map || _load_map()).default(); - for (var _iterator19 = flatTree, _isArray19 = Array.isArray(_iterator19), _i19 = 0, _iterator19 = _isArray19 ? _iterator19 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator19);;) { - var _ref38; - - if (_isArray19) { - if (_i19 >= _iterator19.length) break; - _ref38 = _iterator19[_i19++]; - } else { - _i19 = _iterator19.next(); - if (_i19.done) break; - _ref38 = _i19.value; - } - - var _ref37 = _ref38; - var _dest = _ref37[0]; - var hoistManifest = _ref37[1]; - - var key = hoistManifest.parts.join('#'); - hash.set(key, [_dest, hoistManifest]); - } - this._treeHash = hash; - return hash; - }; - - PackageLinker.prototype.getParentBinLoc = function getParentBinLoc(parts, flatTree) { - var hash = this._treeHash || this._buildTreeHash(flatTree); - var parent = parts.slice(0, -1).join('#'); - var tuple = hash.get(parent); - if (!tuple) { - throw new Error(`failed to get parent '${parent}' binLoc`); - } - var dest = tuple[0], - hoistManifest = tuple[1]; - - var parentBinLoc = path.join(dest, this.config.getFolder(hoistManifest.pkg)); - - return parentBinLoc; - }; - - PackageLinker.prototype.determineTopLevelBinLinkOrder = function determineTopLevelBinLinkOrder(flatTree) { - var linksToCreate = new (_map || _load_map()).default(); - for (var _iterator20 = flatTree, _isArray20 = Array.isArray(_iterator20), _i20 = 0, _iterator20 = _isArray20 ? _iterator20 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator20);;) { - var _ref40; - - if (_isArray20) { - if (_i20 >= _iterator20.length) break; - _ref40 = _iterator20[_i20++]; - } else { - _i20 = _iterator20.next(); - if (_i20.done) break; - _ref40 = _i20.value; - } - - var _ref39 = _ref40; - var _dest2 = _ref39[0]; - var hoistManifest = _ref39[1]; - var pkg = hoistManifest.pkg, - isDirectRequire = hoistManifest.isDirectRequire, - isNohoist = hoistManifest.isNohoist, - isShallow = hoistManifest.isShallow; - var name = pkg.name; - - // nohoist and shallow packages should not be linked at topLevel bin - - if (!isNohoist && !isShallow && (isDirectRequire || this.topLevelBinLinking && !linksToCreate.has(name))) { - linksToCreate.set(name, [_dest2, hoistManifest]); - } - } - - // Sort the array so that direct dependencies will be linked last. - // Bin links are overwritten if they already exist, so this will cause direct deps to take precedence. - // If someone finds this to be incorrect later, you could also consider sorting descending by - // `linkToCreate.level` which is the dependency tree depth. Direct deps will have level 0 and transitive - // deps will have level > 0. - var transientBins = []; - var topLevelBins = []; - for (var _iterator21 = (0, (_from || _load_from()).default)(linksToCreate.values()), _isArray21 = Array.isArray(_iterator21), _i21 = 0, _iterator21 = _isArray21 ? _iterator21 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator21);;) { - var _ref41; - - if (_isArray21) { - if (_i21 >= _iterator21.length) break; - _ref41 = _iterator21[_i21++]; - } else { - _i21 = _iterator21.next(); - if (_i21.done) break; - _ref41 = _i21.value; - } - - var linkToCreate = _ref41; - - if (linkToCreate[1].isDirectRequire) { - topLevelBins.push(linkToCreate); - } else { - transientBins.push(linkToCreate); - } - } - return [].concat(transientBins, topLevelBins); - }; - - PackageLinker.prototype.resolvePeerModules = function resolvePeerModules() { - var _this3 = this; - - var _loop3 = function _loop3(pkg) { - var peerDeps = pkg.peerDependencies; - var peerDepsMeta = pkg.peerDependenciesMeta; - - if (!peerDeps) { - return 'continue'; - } - - var ref = pkg._reference; - invariant(ref, 'Package reference is missing'); - - // TODO: We are taking the "shortest" ref tree but there may be multiple ref trees with the same length - var refTree = ref.requests.map(function (req) { - return req.parentNames; - }).sort(function (arr1, arr2) { - return arr1.length - arr2.length; - })[0]; - - var getLevelDistance = function getLevelDistance(pkgRef) { - var minDistance = Infinity; - for (var _iterator23 = pkgRef.requests, _isArray23 = Array.isArray(_iterator23), _i23 = 0, _iterator23 = _isArray23 ? _iterator23 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator23);;) { - var _ref43; - - if (_isArray23) { - if (_i23 >= _iterator23.length) break; - _ref43 = _iterator23[_i23++]; - } else { - _i23 = _iterator23.next(); - if (_i23.done) break; - _ref43 = _i23.value; - } - - var req = _ref43; - - var distance = refTree.length - req.parentNames.length; - - if (distance >= 0 && distance < minDistance && req.parentNames.every(function (name, idx) { - return name === refTree[idx]; - })) { - minDistance = distance; - } - } - - return minDistance; - }; - - for (var peerDepName in peerDeps) { - var range = peerDeps[peerDepName]; - var meta = peerDepsMeta && peerDepsMeta[peerDepName]; - - var isOptional = !!(meta && meta.optional); - - var peerPkgs = _this3.resolver.getAllInfoForPackageName(peerDepName); - - var peerError = 'unmetPeer'; - var resolvedLevelDistance = Infinity; - var resolvedPeerPkg = void 0; - for (var _iterator24 = peerPkgs, _isArray24 = Array.isArray(_iterator24), _i24 = 0, _iterator24 = _isArray24 ? _iterator24 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator24);;) { - var _ref44; - - if (_isArray24) { - if (_i24 >= _iterator24.length) break; - _ref44 = _iterator24[_i24++]; - } else { - _i24 = _iterator24.next(); - if (_i24.done) break; - _ref44 = _i24.value; - } - - var peerPkg = _ref44; - - var peerPkgRef = peerPkg._reference; - if (!(peerPkgRef && peerPkgRef.patterns)) { - continue; - } - var levelDistance = getLevelDistance(peerPkgRef); - if (isFinite(levelDistance) && levelDistance < resolvedLevelDistance) { - if (_this3._satisfiesPeerDependency(range, peerPkgRef.version)) { - resolvedLevelDistance = levelDistance; - resolvedPeerPkg = peerPkgRef; - } else { - peerError = 'incorrectPeer'; - } - } - } - - if (resolvedPeerPkg) { - ref.addDependencies(resolvedPeerPkg.patterns); - _this3.reporter.verbose(_this3.reporter.lang('selectedPeer', `${pkg.name}@${pkg.version}`, `${peerDepName}@${resolvedPeerPkg.version}`, resolvedPeerPkg.level)); - } else if (!isOptional) { - _this3.reporter.warn(_this3.reporter.lang(peerError, `${refTree.join(' > ')} > ${pkg.name}@${pkg.version}`, `${peerDepName}@${range}`)); - } - } - }; - - for (var _iterator22 = this.resolver.getManifests(), _isArray22 = Array.isArray(_iterator22), _i22 = 0, _iterator22 = _isArray22 ? _iterator22 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator22);;) { - var _ref42; - - if (_isArray22) { - if (_i22 >= _iterator22.length) break; - _ref42 = _iterator22[_i22++]; - } else { - _i22 = _iterator22.next(); - if (_i22.done) break; - _ref42 = _i22.value; - } - - var pkg = _ref42; - - var _ret3 = _loop3(pkg); - - if (_ret3 === 'continue') continue; - } - }; - - PackageLinker.prototype._satisfiesPeerDependency = function _satisfiesPeerDependency(range, version) { - return range === '*' || (0, (_semver || _load_semver()).satisfiesWithPrereleases)(version, range, this.config.looseSemver); - }; - - PackageLinker.prototype._warnForMissingBundledDependencies = function () { - var _ref45 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg) { - var _this4 = this; - - var ref = pkg._reference; - invariant(ref, 'missing package ref ' + pkg.name); - - if (pkg.bundleDependencies) { - var _loop4 = function* _loop4(depName) { - var locs = ref.locations.map(function (loc) { - return path.join(loc, _this4.config.getFolder(pkg), depName); - }); - var locsExist = yield (_promise || _load_promise()).default.all(locs.map(function (loc) { - return (_fs || _load_fs()).exists(loc); - })); - if (locsExist.some(function (e) { - return !e; - })) { - //if any of the locs do not exist - var pkgHuman = `${pkg.name}@${pkg.version}`; - _this4.reporter.warn(_this4.reporter.lang('missingBundledDependency', pkgHuman, depName)); - } - }; - - for (var _iterator25 = pkg.bundleDependencies, _isArray25 = Array.isArray(_iterator25), _i25 = 0, _iterator25 = _isArray25 ? _iterator25 : (0, (_getIterator2 || _load_getIterator()).default)(_iterator25);;) { - var _ref46; - - if (_isArray25) { - if (_i25 >= _iterator25.length) break; - _ref46 = _iterator25[_i25++]; - } else { - _i25 = _iterator25.next(); - if (_i25.done) break; - _ref46 = _i25.value; - } - - var depName = _ref46; - yield* _loop4(depName); - } - } - }); - - function _warnForMissingBundledDependencies(_x18) { - return _ref45.apply(this, arguments); - } - - return _warnForMissingBundledDependencies; - }(); - - PackageLinker.prototype._isUnplugged = function () { - var _ref47 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg, ref) { - // If an unplugged folder exists for the specified package, we simply use it - if (yield (_fs || _load_fs()).exists(this.config.generatePackageUnpluggedPath(ref))) { - return true; - } - - // If the package has a postinstall script, we also unplug it (otherwise they would run into the cache) - if (!this.config.ignoreScripts && pkg.scripts && (pkg.scripts.preinstall || pkg.scripts.install || pkg.scripts.postinstall)) { - return true; - } - - // Check whether the user explicitly requested for the package to be unplugged - return this.unplugged.some(function (patternToUnplug) { - var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(patternToUnplug), - name = _normalizePattern.name, - range = _normalizePattern.range, - hasVersion = _normalizePattern.hasVersion; - - var satisfiesSemver = hasVersion ? semver.satisfies(ref.version, range) : true; - return name === ref.name && satisfiesSemver; - }); - }); - - function _isUnplugged(_x19, _x20) { - return _ref47.apply(this, arguments); - } - - return _isUnplugged; - }(); - - PackageLinker.prototype.init = function () { - var _ref48 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (patterns, workspaceLayout) { - var _ref49 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - linkDuplicates = _ref49.linkDuplicates, - ignoreOptional = _ref49.ignoreOptional; - - this.resolvePeerModules(); - yield this.copyModules(patterns, workspaceLayout, { linkDuplicates, ignoreOptional }); - - if (!this.config.plugnplayEnabled) { - yield (_fs || _load_fs()).unlink(`${this.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`); - } - }); - - function init(_x21, _x22) { - return _ref48.apply(this, arguments); - } - - return init; - }(); - - return PackageLinker; -}(); - -exports.default = PackageLinker; - -/***/ }), -/* 193 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.clearLine = clearLine; -exports.toStartOfLine = toStartOfLine; -exports.writeOnNthLine = writeOnNthLine; -exports.clearNthLine = clearNthLine; - -var _tty; - -function _load_tty() { - return _tty = _interopRequireDefault(__webpack_require__(143)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var readline = __webpack_require__(180); - -var _require = __webpack_require__(35), - supportsColor = _require.supportsColor; - -var CLEAR_WHOLE_LINE = 0; -var CLEAR_RIGHT_OF_CURSOR = 1; - -function clearLine(stdout) { - if (!supportsColor) { - if (stdout instanceof (_tty || _load_tty()).default.WriteStream) { - if (stdout.columns > 0) { - stdout.write(`\r${' '.repeat(stdout.columns - 1)}`); - } - stdout.write(`\r`); - } - return; - } - - readline.clearLine(stdout, CLEAR_WHOLE_LINE); - readline.cursorTo(stdout, 0); -} - -function toStartOfLine(stdout) { - if (!supportsColor) { - stdout.write('\r'); - return; - } - - readline.cursorTo(stdout, 0); -} - -function writeOnNthLine(stdout, n, msg) { - if (!supportsColor) { - return; - } - - if (n == 0) { - readline.cursorTo(stdout, 0); - stdout.write(msg); - readline.clearLine(stdout, CLEAR_RIGHT_OF_CURSOR); - return; - } - readline.cursorTo(stdout, 0); - readline.moveCursor(stdout, 0, -n); - stdout.write(msg); - readline.clearLine(stdout, CLEAR_RIGHT_OF_CURSOR); - readline.cursorTo(stdout, 0); - readline.moveCursor(stdout, 0, n); -} - -function clearNthLine(stdout, n) { - if (!supportsColor) { - return; - } - - if (n == 0) { - clearLine(stdout); - return; - } - readline.cursorTo(stdout, 0); - readline.moveCursor(stdout, 0, -n); - readline.clearLine(stdout, CLEAR_WHOLE_LINE); - readline.moveCursor(stdout, 0, n); -} - -/***/ }), -/* 194 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _stringify; - -function _load_stringify() { - return _stringify = _interopRequireDefault(__webpack_require__(39)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var _baseReporter; - -function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(95)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var JSONReporter = function (_BaseReporter) { - (0, (_inherits2 || _load_inherits()).default)(JSONReporter, _BaseReporter); - - function JSONReporter(opts) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, JSONReporter); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _BaseReporter.call(this, opts)); - - _this._activityId = 0; - _this._progressId = 0; - return _this; - } - - JSONReporter.prototype._dump = function _dump(type, data, error) { - var stdout = this.stdout; - if (error) { - stdout = this.stderr; - } - stdout.write(`${(0, (_stringify || _load_stringify()).default)({ type, data })}\n`); - }; - - JSONReporter.prototype._verbose = function _verbose(msg) { - this._dump('verbose', msg); - }; - - JSONReporter.prototype.list = function list(type, items, hints) { - this._dump('list', { type, items, hints }); - }; - - JSONReporter.prototype.tree = function tree(type, trees) { - this._dump('tree', { type, trees }); - }; - - JSONReporter.prototype.step = function step(current, total, message) { - this._dump('step', { message, current, total }); - }; - - JSONReporter.prototype.inspect = function inspect(value) { - this._dump('inspect', value); - }; - - JSONReporter.prototype.footer = function footer(showPeakMemory) { - this._dump('finished', this.getTotalTime()); - }; - - JSONReporter.prototype.log = function log(msg) { - this._dump('log', msg); - }; - - JSONReporter.prototype.command = function command(msg) { - this._dump('command', msg); - }; - - JSONReporter.prototype.table = function table(head, body) { - this._dump('table', { head, body }); - }; - - JSONReporter.prototype.success = function success(msg) { - this._dump('success', msg); - }; - - JSONReporter.prototype.error = function error(msg) { - this._dump('error', msg, true); - }; - - JSONReporter.prototype.warn = function warn(msg) { - this._dump('warning', msg, true); - }; - - JSONReporter.prototype.info = function info(msg) { - this._dump('info', msg); - }; - - JSONReporter.prototype.activitySet = function activitySet(total, workers) { - var _this2 = this; - - if (!this.isTTY || this.noProgress) { - return _BaseReporter.prototype.activitySet.call(this, total, workers); - } - - var id = this._activityId++; - this._dump('activitySetStart', { id, total, workers }); - - var spinners = []; - - var _loop = function _loop(i) { - var current = 0; - var header = ''; - - spinners.push({ - clear() {}, - setPrefix(_current, _header) { - current = _current; - header = _header; - }, - tick: function tick(msg) { - _this2._dump('activitySetTick', { - id, - header, - current, - worker: i, - message: msg - }); - }, - end() {} - }); - }; - - for (var i = 0; i < workers; i++) { - _loop(i); - } - - return { - spinners, - end: function end() { - _this2._dump('activitySetEnd', { id }); - } - }; - }; - - JSONReporter.prototype.activity = function activity() { - return this._activity({}); - }; - - JSONReporter.prototype._activity = function _activity(data) { - var _this3 = this; - - if (!this.isTTY || this.noProgress) { - return { - tick() {}, - end() {} - }; - } - - var id = this._activityId++; - this._dump('activityStart', (0, (_extends2 || _load_extends()).default)({ id }, data)); - - return { - tick: function tick(name) { - _this3._dump('activityTick', { id, name }); - }, - - end: function end() { - _this3._dump('activityEnd', { id }); - } - }; - }; - - JSONReporter.prototype.progress = function progress(total) { - var _this4 = this; - - if (this.noProgress) { - return function () { - // noop - }; - } - - var id = this._progressId++; - var current = 0; - this._dump('progressStart', { id, total }); - - return function () { - current++; - _this4._dump('progressTick', { id, current }); - - if (current === total) { - _this4._dump('progressFinish', { id }); - } - }; - }; - - JSONReporter.prototype.auditAction = function auditAction(recommendation) { - this._dump('auditAction', recommendation); - }; - - JSONReporter.prototype.auditAdvisory = function auditAdvisory(resolution, _auditAdvisory) { - this._dump('auditAdvisory', { resolution, advisory: _auditAdvisory }); - }; - - JSONReporter.prototype.auditSummary = function auditSummary(auditMetadata) { - this._dump('auditSummary', auditMetadata); - }; - - return JSONReporter; -}((_baseReporter || _load_baseReporter()).default); - -exports.default = JSONReporter; - -/***/ }), -/* 195 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shouldUpdateLockfile = undefined; - -var _set; - -function _load_set() { - return _set = _interopRequireDefault(__webpack_require__(17)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _semver; - -function _load_semver() { - return _semver = _interopRequireDefault(__webpack_require__(26)); -} - -var _minimatch; - -function _load_minimatch() { - return _minimatch = _interopRequireDefault(__webpack_require__(163)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(50)); -} - -var _normalizePattern2; - -function _load_normalizePattern() { - return _normalizePattern2 = __webpack_require__(51); -} - -var _parsePackagePath; - -function _load_parsePackagePath() { - return _parsePackagePath = _interopRequireDefault(__webpack_require__(314)); -} - -var _parsePackagePath2; - -function _load_parsePackagePath2() { - return _parsePackagePath2 = __webpack_require__(314); -} - -var _resolvers; - -function _load_resolvers() { - return _resolvers = __webpack_require__(62); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var DIRECTORY_SEPARATOR = '/'; -var GLOBAL_NESTED_DEP_PATTERN = '**/'; - -var ResolutionMap = function () { - function ResolutionMap(config) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, ResolutionMap); - - this.resolutionsByPackage = (0, (_map || _load_map()).default)(); - this.config = config; - this.reporter = config.reporter; - this.delayQueue = new (_set || _load_set()).default(); - } - - ResolutionMap.prototype.init = 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(resolution, [info]); - } - } - }; - - ResolutionMap.prototype.addToDelayQueue = function addToDelayQueue(req) { - this.delayQueue.add(req); - }; - - ResolutionMap.prototype.parsePatternInfo = function parsePatternInfo(globPattern, range) { - if (!(0, (_parsePackagePath2 || _load_parsePackagePath2()).isValidPackagePath)(globPattern)) { - this.reporter.warn(this.reporter.lang('invalidResolutionName', globPattern)); - return null; - } - - var directories = (0, (_parsePackagePath || _load_parsePackagePath()).default)(globPattern); - var name = directories.pop(); - - if (!(_semver || _load_semver()).default.validRange(range) && !(0, (_resolvers || _load_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 = `${GLOBAL_NESTED_DEP_PATTERN}${name}`; - } - - return { - name, - range, - globPattern, - pattern: `${name}@${range}` - }; - }; - - ResolutionMap.prototype.find = function find(reqPattern, parentNames) { - var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(reqPattern), - name = _normalizePattern.name, - reqRange = _normalizePattern.range; - - var resolutions = this.resolutionsByPackage[name]; - - if (!resolutions) { - return ''; - } - - var modulePath = [].concat(parentNames, [name]).join(DIRECTORY_SEPARATOR); - - var _ref = resolutions.find(function (_ref2) { - var globPattern = _ref2.globPattern; - return (0, (_minimatch || _load_minimatch()).default)(modulePath, globPattern); - }) || {}, - pattern = _ref.pattern, - range = _ref.range; - - if (pattern) { - if ((_semver || _load_semver()).default.validRange(reqRange) && (_semver || _load_semver()).default.valid(range) && !(_semver || _load_semver()).default.satisfies(range, reqRange)) { - this.reporter.warn(this.reporter.lang('incompatibleResolutionVersion', pattern, reqPattern)); - } - } - - return pattern; - }; - - return ResolutionMap; -}(); - -exports.default = ResolutionMap; -var shouldUpdateLockfile = exports.shouldUpdateLockfile = function shouldUpdateLockfile(lockfileEntry, resolutionEntry) { - if (!lockfileEntry || !resolutionEntry) { - return false; - } - - return lockfileEntry.resolved !== resolutionEntry.remote.resolved; -}; - -/***/ }), -/* 196 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FILE_PROTOCOL_PREFIX = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); + return _misc = __webpack_require__(18); } var _path; function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(2)); + return _path = __webpack_require__(377); } -var _invariant; +var _normalizeUrl; -function _load_invariant() { - return _invariant = _interopRequireDefault(__webpack_require__(13)); +function _load_normalizeUrl() { + return _normalizeUrl = _interopRequireDefault(__webpack_require__(402)); } -var _uuid; +var _userHomeDir; -function _load_uuid() { - return _uuid = _interopRequireDefault(__webpack_require__(108)); +function _load_userHomeDir() { + return _userHomeDir = _interopRequireDefault(__webpack_require__(67)); +} + +var _userHomeDir2; + +function _load_userHomeDir2() { + return _userHomeDir2 = __webpack_require__(67); } var _errors; function _load_errors() { - return _errors = __webpack_require__(7); + return _errors = __webpack_require__(6); } -var _exoticResolver; +var _login; -function _load_exoticResolver() { - return _exoticResolver = _interopRequireDefault(__webpack_require__(84)); +function _load_login() { + return _login = __webpack_require__(107); } -var _misc; +var _path2; -function _load_misc() { - return _misc = _interopRequireWildcard(__webpack_require__(27)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -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 }; } - -var FILE_PROTOCOL_PREFIX = exports.FILE_PROTOCOL_PREFIX = 'file:'; - -var FileResolver = function (_ExoticResolver) { - (0, (_inherits2 || _load_inherits()).default)(FileResolver, _ExoticResolver); - - function FileResolver(request, fragment) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, FileResolver); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _ExoticResolver.call(this, request, fragment)); - - _this.loc = (_misc || _load_misc()).removePrefix(fragment, FILE_PROTOCOL_PREFIX); - return _this; - } - - FileResolver.isVersion = function isVersion(pattern) { - return _ExoticResolver.isVersion.call(this, pattern) || this.prefixMatcher.test(pattern) || (_path || _load_path()).default.isAbsolute(pattern); - }; - - FileResolver.prototype.resolve = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _this2 = this; - - var loc = this.loc; - if (!(_path || _load_path()).default.isAbsolute(loc)) { - loc = (_path || _load_path()).default.resolve(this.config.lockfileFolder, loc); - } - - if (this.config.linkFileDependencies) { - var _registry = 'npm'; - var _manifest = { _uid: '', name: '', version: '0.0.0', _registry: _registry }; - _manifest._remote = { - type: 'link', - registry: _registry, - hash: null, - reference: loc - }; - _manifest._uid = _manifest.version; - return _manifest; - } - if (!(yield (_fs || _load_fs()).exists(loc))) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('doesntExist', loc, this.pattern.split('@')[0])); - } - - var manifest = yield (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - try { - return yield _this2.config.readManifest(loc, _this2.registry); - } catch (e) { - if (e.code === 'ENOENT') { - return { - // This is just the default, it can be overridden with key of dependencies - name: (_path || _load_path()).default.dirname(loc), - version: '0.0.0', - _uid: '0.0.0', - _registry: 'npm' - }; - } - - throw e; - } - })(); - var registry = manifest._registry; - (0, (_invariant || _load_invariant()).default)(registry, 'expected registry'); - - manifest._remote = { - type: 'copy', - registry, - hash: `${(_uuid || _load_uuid()).default.v4()}-${new Date().getTime()}`, - reference: loc - }; - - manifest._uid = manifest.version; - - return manifest; - }); - - function resolve() { - return _ref.apply(this, arguments); - } - - return resolve; - }(); - - return FileResolver; -}((_exoticResolver || _load_exoticResolver()).default); - -FileResolver.protocol = 'file'; -FileResolver.prefixMatcher = /^\.{1,2}\//; -exports.default = FileResolver; - -/***/ }), -/* 197 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -exports.explodeGistFragment = explodeGistFragment; - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _gitResolver; - -function _load_gitResolver() { - return _gitResolver = _interopRequireDefault(__webpack_require__(114)); -} - -var _exoticResolver; - -function _load_exoticResolver() { - return _exoticResolver = _interopRequireDefault(__webpack_require__(84)); -} - -var _misc; - -function _load_misc() { - return _misc = _interopRequireWildcard(__webpack_require__(27)); -} - -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 explodeGistFragment(fragment, reporter) { - fragment = (_misc || _load_misc()).removePrefix(fragment, 'gist:'); - - var parts = fragment.split('#'); - - if (parts.length <= 2) { - return { - id: parts[0], - hash: parts[1] || '' - }; - } else { - throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidGistFragment', fragment)); - } -} - -var GistResolver = function (_ExoticResolver) { - (0, (_inherits2 || _load_inherits()).default)(GistResolver, _ExoticResolver); - - function GistResolver(request, fragment) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, GistResolver); - - var _this = (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _ExoticResolver.call(this, request, fragment)); - - var _explodeGistFragment = explodeGistFragment(fragment, _this.reporter), - id = _explodeGistFragment.id, - hash = _explodeGistFragment.hash; - - _this.id = id; - _this.hash = hash; - return _this; - } - - GistResolver.prototype.resolve = function resolve() { - return this.fork((_gitResolver || _load_gitResolver()).default, false, `https://gist.github.com/${this.id}.git#${this.hash}`); - }; - - return GistResolver; -}((_exoticResolver || _load_exoticResolver()).default); - -GistResolver.protocol = 'gist'; -exports.default = GistResolver; - -/***/ }), -/* 198 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _assign; - -function _load_assign() { - return _assign = _interopRequireDefault(__webpack_require__(23)); -} - -var _getIterator2; - -function _load_getIterator() { - return _getIterator2 = _interopRequireDefault(__webpack_require__(4)); -} - -var _keys; - -function _load_keys() { - return _keys = _interopRequireDefault(__webpack_require__(15)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _possibleConstructorReturn2; - -function _load_possibleConstructorReturn() { - return _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(11)); -} - -var _inherits2; - -function _load_inherits() { - return _inherits2 = _interopRequireDefault(__webpack_require__(10)); -} - -var _cache; - -function _load_cache() { - return _cache = __webpack_require__(289); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _registryResolver; - -function _load_registryResolver() { - return _registryResolver = _interopRequireDefault(__webpack_require__(554)); -} - -var _npmRegistry; - -function _load_npmRegistry() { - return _npmRegistry = _interopRequireDefault(__webpack_require__(83)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(50)); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(8)); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(14); -} - -var _packageNameUtils; - -function _load_packageNameUtils() { - return _packageNameUtils = __webpack_require__(202); -} - -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 }; } - -var inquirer = __webpack_require__(188); -var tty = __webpack_require__(143); -var path = __webpack_require__(2); -var semver = __webpack_require__(26); -var ssri = __webpack_require__(107); - -var NPM_REGISTRY_ID = 'npm'; - -var NpmResolver = function (_RegistryResolver) { - (0, (_inherits2 || _load_inherits()).default)(NpmResolver, _RegistryResolver); - - function NpmResolver() { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, NpmResolver); - return (0, (_possibleConstructorReturn2 || _load_possibleConstructorReturn()).default)(this, _RegistryResolver.apply(this, arguments)); - } - - NpmResolver.findVersionInRegistryResponse = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, name, range, body, request) { - if (body.versions && (0, (_keys || _load_keys()).default)(body.versions).length === 0) { - throw new (_errors || _load_errors()).MessageError(config.reporter.lang('registryNoVersions', body.name)); - } - - if (!body['dist-tags'] || !body.versions) { - throw new (_errors || _load_errors()).MessageError(config.reporter.lang('malformedRegistryResponse', name)); - } - - 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 - var latestVersion = body['dist-tags'] ? body['dist-tags'].latest : undefined; - if (latestVersion && semver.satisfies(latestVersion, range)) { - return body.versions[latestVersion]; - } - - var satisfied = yield config.resolveConstraints((0, (_keys || _load_keys()).default)(body.versions), range); - if (satisfied) { - return body.versions[satisfied]; - } else if (request && !config.nonInteractive) { - if (request.resolver && request.resolver.activity) { - request.resolver.activity.end(); - } - config.reporter.log(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range)); - var pageSize = void 0; - if (process.stdout instanceof tty.WriteStream) { - pageSize = process.stdout.rows - 2; - } - var response = yield inquirer.prompt([{ - name: 'package', - type: 'list', - message: config.reporter.lang('chooseVersionFromList', body.name), - choices: semver.rsort((0, (_keys || _load_keys()).default)(body.versions)), - pageSize - }]); - if (response && response.package) { - return body.versions[response.package]; - } - } - throw new (_errors || _load_errors()).MessageError(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range)); - }); - - function findVersionInRegistryResponse(_x, _x2, _x3, _x4, _x5) { - return _ref.apply(this, arguments); - } - - return findVersionInRegistryResponse; - }(); - - NpmResolver.prototype.resolveRequest = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (desiredVersion) { - if (this.config.offline) { - var res = yield this.resolveRequestOffline(); - if (res != null) { - return res; - } - } - - var escapedName = (_npmRegistry || _load_npmRegistry()).default.escapeName(this.name); - var desiredRange = desiredVersion || this.range; - var body = yield this.config.registries.npm.request(escapedName); - - if (body) { - return NpmResolver.findVersionInRegistryResponse(this.config, escapedName, desiredRange, body, this.request); - } else { - return null; - } - }); - - function resolveRequest(_x6) { - return _ref2.apply(this, arguments); - } - - return resolveRequest; - }(); - - NpmResolver.prototype.resolveRequestOffline = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _this2 = this; - - var packageDirs = yield this.config.getCache('cachedPackages', function () { - return (0, (_cache || _load_cache()).getCachedPackagesDirs)(_this2.config, _this2.config.cacheFolder); - }); - - var versions = (0, (_map || _load_map()).default)(); - - for (var _iterator = packageDirs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, (_getIterator2 || _load_getIterator()).default)(_iterator);;) { - var _ref4; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref4 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref4 = _i.value; - } - - var dir = _ref4; - - // check if folder contains the registry prefix - if (dir.indexOf(`${NPM_REGISTRY_ID}-`) === -1) { - continue; - } - - // read manifest and validate correct name - var pkg = yield this.config.readManifest(dir, NPM_REGISTRY_ID); - if (pkg.name !== this.name) { - continue; - } - - // read package metadata - var metadata = yield this.config.readPackageMetadata(dir); - if (!metadata.remote) { - continue; // old yarn metadata - } - - versions[pkg.version] = (0, (_assign || _load_assign()).default)({}, pkg, { - _remote: metadata.remote - }); - } - - var satisfied = yield this.config.resolveConstraints((0, (_keys || _load_keys()).default)(versions), this.range); - if (satisfied) { - return versions[satisfied]; - } else if (!this.config.preferOffline) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('couldntFindPackageInCache', this.name, this.range, (0, (_keys || _load_keys()).default)(versions).join(', '))); - } else { - return null; - } - }); - - function resolveRequestOffline() { - return _ref3.apply(this, arguments); - } - - return resolveRequestOffline; - }(); - - NpmResolver.prototype.cleanRegistry = function cleanRegistry(url) { - if (this.config.getOption('registry') === (_constants || _load_constants()).YARN_REGISTRY) { - return url.replace((_constants || _load_constants()).NPM_REGISTRY_RE, (_constants || _load_constants()).YARN_REGISTRY); - } else { - return url; - } - }; - - NpmResolver.prototype.resolve = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // lockfile - var shrunk = this.request.getLocked('tarball'); - if (shrunk) { - if (this.config.packBuiltPackages && shrunk.prebuiltVariants && shrunk._remote) { - var prebuiltVariants = shrunk.prebuiltVariants; - var prebuiltName = (0, (_packageNameUtils || _load_packageNameUtils()).getPlatformSpecificPackageFilename)(shrunk); - var offlineMirrorPath = this.config.getOfflineMirrorPath(); - if (prebuiltVariants[prebuiltName] && offlineMirrorPath) { - var filename = path.join(offlineMirrorPath, 'prebuilt', prebuiltName + '.tgz'); - var _remote = shrunk._remote; - - if (_remote && (yield (_fs || _load_fs()).exists(filename))) { - _remote.reference = `file:${filename}`; - _remote.hash = prebuiltVariants[prebuiltName]; - _remote.integrity = ssri.fromHex(_remote.hash, 'sha1').toString(); - } - } - } - } - if (shrunk && shrunk._remote && (shrunk._remote.integrity || this.config.offline || !this.config.autoAddIntegrity)) { - // if the integrity field does not exist, we're not network-restricted, and the - // migration hasn't been disabled, it needs to be created - return shrunk; - } - - var desiredVersion = shrunk && shrunk.version ? shrunk.version : null; - var info = yield this.resolveRequest(desiredVersion); - if (info == null) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('packageNotFoundRegistry', this.name, NPM_REGISTRY_ID)); - } - - var deprecated = info.deprecated, - dist = info.dist; - - if (shrunk && shrunk._remote) { - shrunk._remote.integrity = dist && dist.integrity ? ssri.parse(dist.integrity) : ssri.fromHex(dist && dist.shasum ? dist.shasum : '', 'sha1'); - return shrunk; - } - - if (typeof deprecated === 'string') { - var human = `${info.name}@${info.version}`; - var parentNames = this.request.parentNames; - if (parentNames.length) { - human = parentNames.concat(human).join(' > '); - } - this.reporter.warn(`${human}: ${deprecated}`); - } - - if (dist != null && dist.tarball) { - info._remote = { - resolved: `${this.cleanRegistry(dist.tarball)}#${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 info; - }); - - function resolve() { - return _ref5.apply(this, arguments); - } - - return resolve; - }(); - - return NpmResolver; -}((_registryResolver || _load_registryResolver()).default); - -NpmResolver.registry = NPM_REGISTRY_ID; -exports.default = NpmResolver; - -/***/ }), -/* 199 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _from; - -function _load_from() { - return _from = _interopRequireDefault(__webpack_require__(52)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} - -var _classCallCheck2; - -function _load_classCallCheck() { - return _classCallCheck2 = _interopRequireDefault(__webpack_require__(3)); -} - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(28)); -} - -var _invariant; - -function _load_invariant() { - return _invariant = _interopRequireDefault(__webpack_require__(13)); -} - -var _string_decoder; - -function _load_string_decoder() { - return _string_decoder = __webpack_require__(264); -} - -var _tarFs; - -function _load_tarFs() { - return _tarFs = _interopRequireDefault(__webpack_require__(177)); -} - -var _tarStream; - -function _load_tarStream() { - return _tarStream = _interopRequireDefault(__webpack_require__(425)); +function _load_path2() { + return _path2 = _interopRequireDefault(__webpack_require__(0)); } var _url; function _load_url() { - return _url = _interopRequireDefault(__webpack_require__(29)); + return _url = _interopRequireDefault(__webpack_require__(24)); } -var _fs; +var _ini; -function _load_fs() { - return _fs = __webpack_require__(12); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(7); -} - -var _gitSpawn; - -function _load_gitSpawn() { - return _gitSpawn = __webpack_require__(312); -} - -var _gitRefResolver; - -function _load_gitRefResolver() { - return _gitRefResolver = __webpack_require__(559); -} - -var _crypto; - -function _load_crypto() { - return _crypto = _interopRequireWildcard(__webpack_require__(153)); -} - -var _fs2; - -function _load_fs2() { - return _fs2 = _interopRequireWildcard(__webpack_require__(8)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(50)); -} - -var _misc; - -function _load_misc() { - return _misc = __webpack_require__(27); +function _load_ini() { + return _ini = _interopRequireDefault(__webpack_require__(684)); } 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 }; } -var GIT_PROTOCOL_PREFIX = 'git+'; +const DEFAULT_REGISTRY = 'https://registry.npmjs.org/'; +const REGEX_REGISTRY_ENFORCED_HTTPS = /^https?:\/\/([^\/]+\.)?(yarnpkg\.com|npmjs\.(org|com))(\/|$)/; +const REGEX_REGISTRY_HTTP_PROTOCOL = /^https?:/i; +const REGEX_REGISTRY_PREFIX = /^(https?:)?\/\//i; +const REGEX_REGISTRY_SUFFIX = /registry\/?$/; -var SSH_PROTOCOL = 'ssh:'; -var SCP_PATH_PREFIX = '/:'; -var FILE_PROTOCOL = 'file:'; -var GIT_VALID_REF_LINE_REGEXP = /^([a-fA-F0-9]+|ref)/; +const SCOPE_SEPARATOR = exports.SCOPE_SEPARATOR = '%2f'; +// All scoped package names are of the format `@scope%2fpkg` from the use of NpmRegistry.escapeName +// `(?:^|\/)` Match either the start of the string or a `/` but don't capture +// `[^\/?]+?` Match any character that is not '/' or '?' and capture, up until the first occurrence of: +// `(?=%2f|\/)` Match SCOPE_SEPARATOR, the escaped '/', or a raw `/` and don't capture +// The reason for matching a plain `/` is NPM registry being inconsistent about escaping `/` in +// scoped package names: when you're fetching a tarball, it is not escaped, when you want info +// about the package, it is escaped. +const SCOPED_PKG_REGEXP = /(?:^|\/)(@[^\/?]+?)(?=%2f|\/)/; -var validRef = function validRef(line) { - return GIT_VALID_REF_LINE_REGEXP.exec(line); -}; +// TODO: Use the method from src/cli/commands/global.js for this instead +function getGlobalPrefix() { + if (process.env.PREFIX) { + return process.env.PREFIX; + } else if (process.platform === 'win32') { + // c:\node\node.exe --> prefix=c:\node\ + return (_path2 || _load_path2()).default.dirname(process.execPath); + } else { + // /usr/local/bin/node --> prefix=/usr/local + let prefix = (_path2 || _load_path2()).default.dirname((_path2 || _load_path2()).default.dirname(process.execPath)); -var supportsArchiveCache = (0, (_map || _load_map()).default)({ - 'github.com': false // not support, doubt they will ever support it -}); + // destdir only is respected on Unix + if (process.env.DESTDIR) { + prefix = (_path2 || _load_path2()).default.join(process.env.DESTDIR, prefix); + } -var handleSpawnError = function handleSpawnError(err) { - if (err instanceof (_errors || _load_errors()).ProcessSpawnError) { - throw err; + return prefix; } -}; - -var SHORTHAND_SERVICES = (0, (_map || _load_map()).default)({ - 'github:': function github(parsedUrl) { - return (0, (_extends2 || _load_extends()).default)({}, parsedUrl, { - slashes: true, - auth: 'git', - protocol: SSH_PROTOCOL, - host: 'github.com', - hostname: 'github.com', - pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}` - }); - }, - 'bitbucket:': function bitbucket(parsedUrl) { - return (0, (_extends2 || _load_extends()).default)({}, parsedUrl, { - slashes: true, - auth: 'git', - protocol: SSH_PROTOCOL, - host: 'bitbucket.com', - hostname: 'bitbucket.com', - pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}` - }); - } -}); - -var Git = function () { - function Git(config, gitUrl, hash) { - (0, (_classCallCheck2 || _load_classCallCheck()).default)(this, Git); - - this.supportsArchive = false; - this.fetched = false; - this.config = config; - this.reporter = config.reporter; - this.hash = hash; - this.ref = hash; - this.gitUrl = gitUrl; - this.cwd = this.config.getTemp((_crypto || _load_crypto()).hash(this.gitUrl.repository)); - } - - /** - * npm URLs contain a 'git+' scheme prefix, which is not understood by git. - * git "URLs" also allow an alternative scp-like syntax, so they're not standard URLs. - */ - Git.npmUrlToGitUrl = function npmUrlToGitUrl(npmUrl) { - npmUrl = (0, (_misc || _load_misc()).removePrefix)(npmUrl, GIT_PROTOCOL_PREFIX); - - var parsed = (_url || _load_url()).default.parse(npmUrl); - var expander = parsed.protocol && SHORTHAND_SERVICES[parsed.protocol]; - - if (expander) { - parsed = expander(parsed); - } - - // Special case in npm, where ssh:// prefix is stripped to pass scp-like syntax - // which in git works as remote path only if there are no slashes before ':'. - // See #3146. - if (parsed.protocol === SSH_PROTOCOL && parsed.hostname && parsed.path && parsed.path.startsWith(SCP_PATH_PREFIX) && parsed.port === null) { - var auth = parsed.auth ? parsed.auth + '@' : ''; - var pathname = parsed.path.slice(SCP_PATH_PREFIX.length); - return { - hostname: parsed.hostname, - protocol: parsed.protocol, - repository: `${auth}${parsed.hostname}:${pathname}` - }; - } - - // git local repos are specified as `git+file:` and a filesystem path, not a url. - var repository = void 0; - if (parsed.protocol === FILE_PROTOCOL) { - repository = parsed.path; - } else { - repository = (_url || _load_url()).default.format((0, (_extends2 || _load_extends()).default)({}, parsed, { hash: '' })); - } - - return { - hostname: parsed.hostname || null, - protocol: parsed.protocol || FILE_PROTOCOL, - repository: repository || '' - }; - }; - - /** - * Check if the host specified in the input `gitUrl` has archive capability. - */ - - Git.hasArchiveCapability = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ref) { - var hostname = ref.hostname; - if (ref.protocol !== 'ssh:' || hostname == null) { - return false; - } - - if (hostname in supportsArchiveCache) { - return supportsArchiveCache[hostname]; - } - - try { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${ref.repository}`, 'HEAD', Date.now() + '']); - throw new Error(); - } catch (err) { - handleSpawnError(err); - var supports = err.message.indexOf('did not match any files') >= 0; - return supportsArchiveCache[hostname] = supports; - } - }); - - function hasArchiveCapability(_x) { - return _ref.apply(this, arguments); - } - - return hasArchiveCapability; - }(); - - /** - * Check if the input `target` is a 5-40 character hex commit hash. - */ - - Git.repoExists = function () { - var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ref) { - var isLocal = ref.protocol === FILE_PROTOCOL; - - try { - if (isLocal) { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', '-t'], { cwd: ref.repository }); - } else { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '-t', ref.repository]); - } - return true; - } catch (err) { - handleSpawnError(err); - return false; - } - }); - - function repoExists(_x2) { - return _ref2.apply(this, arguments); - } - - return repoExists; - }(); - - Git.replaceProtocol = function replaceProtocol(ref, protocol) { - return { - hostname: ref.hostname, - protocol, - repository: ref.repository.replace(/^(?:git|http):/, protocol) - }; - }; - - /** - * Attempt to upgrade insecure protocols to secure protocol - */ - - - Git.secureGitUrl = function () { - var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ref, hash, reporter) { - if ((0, (_gitRefResolver || _load_gitRefResolver()).isCommitSha)(hash)) { - // this is cryptographically secure - return ref; - } - - if (ref.protocol === 'git:') { - var secureUrl = Git.replaceProtocol(ref, 'https:'); - if (yield Git.repoExists(secureUrl)) { - return secureUrl; - } else { - reporter.warn(reporter.lang('downloadGitWithoutCommit', ref.repository)); - return ref; - } - } - - if (ref.protocol === 'http:') { - var secureRef = Git.replaceProtocol(ref, 'https:'); - if (yield Git.repoExists(secureRef)) { - return secureRef; - } else { - reporter.warn(reporter.lang('downloadHTTPWithoutCommit', ref.repository)); - return ref; - } - } - - return ref; - }); - - function secureGitUrl(_x3, _x4, _x5) { - return _ref3.apply(this, arguments); - } - - return secureGitUrl; - }(); - - /** - * Archive a repo to destination - */ - - Git.prototype.archive = function archive(dest) { - if (this.supportsArchive) { - return this._archiveViaRemoteArchive(dest); - } else { - return this._archiveViaLocalFetched(dest); - } - }; - - Git.prototype._archiveViaRemoteArchive = function () { - var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest) { - var hashStream = new (_crypto || _load_crypto()).HashStream(); - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${this.gitUrl.repository}`, this.ref], { - process(proc, resolve, reject, done) { - var writeStream = (0, (_fs || _load_fs()).createWriteStream)(dest); - proc.on('error', reject); - writeStream.on('error', reject); - writeStream.on('end', done); - writeStream.on('open', function () { - proc.stdout.pipe(hashStream).pipe(writeStream); - }); - writeStream.once('finish', done); - } - }); - return hashStream.getHash(); - }); - - function _archiveViaRemoteArchive(_x6) { - return _ref4.apply(this, arguments); - } - - return _archiveViaRemoteArchive; - }(); - - Git.prototype._archiveViaLocalFetched = function () { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest) { - var hashStream = new (_crypto || _load_crypto()).HashStream(); - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', this.hash], { - cwd: this.cwd, - process(proc, resolve, reject, done) { - var writeStream = (0, (_fs || _load_fs()).createWriteStream)(dest); - proc.on('error', reject); - writeStream.on('error', reject); - writeStream.on('open', function () { - proc.stdout.pipe(hashStream).pipe(writeStream); - }); - writeStream.once('finish', done); - } - }); - return hashStream.getHash(); - }); - - function _archiveViaLocalFetched(_x7) { - return _ref5.apply(this, arguments); - } - - return _archiveViaLocalFetched; - }(); - - /** - * Clone a repo to the input `dest`. Use `git archive` if it's available, otherwise fall - * back to `git clone`. - */ - - Git.prototype.clone = function clone(dest) { - if (this.supportsArchive) { - return this._cloneViaRemoteArchive(dest); - } else { - return this._cloneViaLocalFetched(dest); - } - }; - - Git.prototype._cloneViaRemoteArchive = function () { - var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest) { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${this.gitUrl.repository}`, this.ref], { - process(proc, update, reject, done) { - var extractor = (_tarFs || _load_tarFs()).default.extract(dest, { - dmode: 0o555, // all dirs should be readable - fmode: 0o444 // all files should be readable - }); - extractor.on('error', reject); - extractor.on('finish', done); - - proc.stdout.pipe(extractor); - proc.on('error', reject); - } - }); - }); - - function _cloneViaRemoteArchive(_x8) { - return _ref6.apply(this, arguments); - } - - return _cloneViaRemoteArchive; - }(); - - Git.prototype._cloneViaLocalFetched = function () { - var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest) { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', this.hash], { - cwd: this.cwd, - process(proc, resolve, reject, done) { - var extractor = (_tarFs || _load_tarFs()).default.extract(dest, { - dmode: 0o555, // all dirs should be readable - fmode: 0o444 // all files should be readable - }); - - extractor.on('error', reject); - extractor.on('finish', done); - - proc.stdout.pipe(extractor); - } - }); - }); - - function _cloneViaLocalFetched(_x9) { - return _ref7.apply(this, arguments); - } - - return _cloneViaLocalFetched; - }(); - - /** - * Clone this repo. - */ - - Git.prototype.fetch = function fetch() { - var _this = this; - - var gitUrl = this.gitUrl, - cwd = this.cwd; - - - return (_fs2 || _load_fs2()).lockQueue.push(gitUrl.repository, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - if (yield (_fs2 || _load_fs2()).exists(cwd)) { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['fetch', '--tags'], { cwd }); - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['pull'], { cwd }); - } else { - yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['clone', gitUrl.repository, cwd]); - } - - _this.fetched = true; - })); - }; - - /** - * Fetch the file by cloning the repo and reading it. - */ - - Git.prototype.getFile = function getFile(filename) { - if (this.supportsArchive) { - return this._getFileFromArchive(filename); - } else { - return this._getFileFromClone(filename); - } - }; - - Git.prototype._getFileFromArchive = function () { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename) { - try { - return yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${this.gitUrl.repository}`, this.ref, filename], { - process(proc, update, reject, done) { - var parser = (_tarStream || _load_tarStream()).default.extract(); - - parser.on('error', reject); - parser.on('finish', done); - - parser.on('entry', function (header, stream, next) { - var decoder = new (_string_decoder || _load_string_decoder()).StringDecoder('utf8'); - var fileContent = ''; - - stream.on('data', function (buffer) { - fileContent += decoder.write(buffer); - }); - stream.on('end', function () { - var remaining = decoder.end(); - update(fileContent + remaining); - next(); - }); - stream.resume(); - }); - - proc.stdout.pipe(parser); - } - }); - } catch (err) { - if (err.message.indexOf('did not match any files') >= 0) { - return false; - } else { - throw err; - } - } - }); - - function _getFileFromArchive(_x10) { - return _ref9.apply(this, arguments); - } - - return _getFileFromArchive; - }(); - - Git.prototype._getFileFromClone = function () { - var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename) { - (0, (_invariant || _load_invariant()).default)(this.fetched, 'Repo not fetched'); - - try { - return yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show', `${this.hash}:${filename}`], { - cwd: this.cwd - }); - } catch (err) { - handleSpawnError(err); - // file doesn't exist - return false; - } - }); - - function _getFileFromClone(_x11) { - return _ref10.apply(this, arguments); - } - - return _getFileFromClone; - }(); - - /** - * Initialize the repo, find a secure url to use and - * set the ref to match an input `target`. - */ - - - Git.prototype.init = function () { - var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - this.gitUrl = yield Git.secureGitUrl(this.gitUrl, this.hash, this.reporter); - - yield this.setRefRemote(); - - // check capabilities - if (this.ref !== '' && (yield Git.hasArchiveCapability(this.gitUrl))) { - this.supportsArchive = true; - } else { - yield this.fetch(); - } - - return this.hash; - }); - - function init() { - return _ref11.apply(this, arguments); - } - - return init; - }(); - - Git.prototype.setRefRemote = function () { - var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var isLocal = this.gitUrl.protocol === FILE_PROTOCOL; - var stdout = void 0; - - if (isLocal) { - stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', '--tags', '--heads'], { cwd: this.gitUrl.repository }); - } else { - stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '--tags', '--heads', this.gitUrl.repository]); - } - - var refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(stdout); - return this.setRef(refs); - }); - - function setRefRemote() { - return _ref12.apply(this, arguments); - } - - return setRefRemote; - }(); - - Git.prototype.setRefHosted = function setRefHosted(hostedRefsList) { - var refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(hostedRefsList); - return this.setRef(refs); - }; - - /** - * Resolves the default branch of a remote repository (not always "master") - */ - - Git.prototype.resolveDefaultBranch = function () { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var isLocal = this.gitUrl.protocol === FILE_PROTOCOL; - - try { - var stdout = void 0; - if (isLocal) { - stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', 'HEAD'], { cwd: this.gitUrl.repository }); - var refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(stdout); - var sha = refs.values().next().value; - if (sha) { - return { sha, ref: undefined }; - } else { - throw new Error('Unable to find SHA for git HEAD'); - } - } else { - stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '--symref', this.gitUrl.repository, 'HEAD']); - var lines = stdout.split('\n').filter(validRef); - - var _lines$0$split = lines[0].split(/\s+/), - ref = _lines$0$split[1]; - - var _lines$1$split = lines[1].split(/\s+/), - _sha = _lines$1$split[0]; - - return { sha: _sha, ref }; - } - } catch (err) { - handleSpawnError(err); - // older versions of git don't support "--symref" - var _stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', this.gitUrl.repository, 'HEAD']); - var _lines = _stdout.split('\n').filter(validRef); - - var _lines$0$split2 = _lines[0].split(/\s+/), - _sha2 = _lines$0$split2[0]; - - return { sha: _sha2, ref: undefined }; - } - }); - - function resolveDefaultBranch() { - return _ref13.apply(this, arguments); - } - - return resolveDefaultBranch; - }(); - - /** - * Resolve a git commit to it's 40-chars format and ensure it exists in the repository - * We need to use the 40-chars format to avoid multiple folders in the cache - */ - - Git.prototype.resolveCommit = function () { - var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (shaToResolve) { - try { - yield this.fetch(); - var revListArgs = ['rev-list', '-n', '1', '--no-abbrev-commit', '--format=oneline', shaToResolve]; - var stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(revListArgs, { cwd: this.cwd }); - - var _stdout$split = stdout.split(/\s+/), - sha = _stdout$split[0]; - - return { sha, ref: undefined }; - } catch (err) { - handleSpawnError(err); - // assuming commit not found, let's try something else - return null; - } - }); - - function resolveCommit(_x12) { - return _ref14.apply(this, arguments); - } - - return resolveCommit; - }(); - - /** - * Resolves the input hash / ref / semver range to a valid commit sha - * If possible also resolves the sha to a valid ref in order to use "git archive" - */ - - Git.prototype.setRef = function () { - var _ref15 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (refs) { - // get commit ref - var version = this.hash; - - - var resolvedResult = yield (0, (_gitRefResolver || _load_gitRefResolver()).resolveVersion)({ - config: this.config, - git: this, - version, - refs - }); - if (!resolvedResult) { - throw new (_errors || _load_errors()).MessageError(this.reporter.lang('couldntFindMatch', version, (0, (_from || _load_from()).default)(refs.keys()).join(','), this.gitUrl.repository)); - } - - this.hash = resolvedResult.sha; - this.ref = resolvedResult.ref || ''; - return this.hash; - }); - - function setRef(_x13) { - return _ref15.apply(this, arguments); - } - - return setRef; - }(); - - return Git; -}(); - -exports.default = Git; - -/***/ }), -/* 200 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); } -var _resolveRelative; +const PATH_CONFIG_OPTIONS = new Set(['cache', 'cafile', 'prefix', 'userconfig']); -function _load_resolveRelative() { - return _resolveRelative = _interopRequireDefault(__webpack_require__(565)); +function isPathConfigOption(key) { + return PATH_CONFIG_OPTIONS.has(key); } -var _validate; - -function _load_validate() { - return _validate = _interopRequireDefault(__webpack_require__(116)); -} - -var _fix; - -function _load_fix() { - return _fix = _interopRequireDefault(__webpack_require__(562)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var path = __webpack_require__(2); - -exports.default = function () { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (info, moduleLoc, config, isRoot) { - // create human readable name - var name = info.name, - version = info.version; - - var human = void 0; - if (typeof name === 'string') { - human = name; - } - if (human && typeof version === 'string' && version) { - human += `@${version}`; - } - if (isRoot && info._loc) { - human = path.relative(config.cwd, info._loc); - } - - function warn(msg) { - if (human) { - msg = `${human}: ${msg}`; - } - config.reporter.warn(msg); - } - - yield (0, (_fix || _load_fix()).default)(info, moduleLoc, config.reporter, warn, config.looseSemver); - (0, (_resolveRelative || _load_resolveRelative()).default)(info, moduleLoc, config.lockfileFolder); - - if (config.cwd === config.globalFolder) { - return info; - } - - try { - (0, (_validate || _load_validate()).default)(info, isRoot, config.reporter, warn); - } catch (err) { - if (human) { - err.message = `${human}: ${err.message}`; - } - throw err; - } - - return info; - }); - - return function (_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); - }; -}(); - -/***/ }), -/* 201 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isValidLicense = isValidLicense; -exports.stringifyPerson = stringifyPerson; -exports.parsePerson = parsePerson; -exports.normalizePerson = normalizePerson; -exports.extractDescription = extractDescription; -exports.extractRepositoryUrl = extractRepositoryUrl; - - -var validateLicense = __webpack_require__(1000); - -function isValidLicense(license) { - return !!license && validateLicense(license).validForNewPackages; -} - -function stringifyPerson(person) { - if (!person || typeof person !== 'object') { - return person; - } - - var parts = []; - if (person.name) { - parts.push(person.name); - } - - var email = person.email || person.mail; - if (typeof email === 'string') { - parts.push(`<${email}>`); - } - - var url = person.url || person.web; - if (typeof url === 'string') { - parts.push(`(${url})`); - } - - return parts.join(' '); -} - -function parsePerson(person) { - if (typeof person !== 'string') { - return person; - } - - // format: name (url) - var obj = {}; - - var name = person.match(/^([^\(<]+)/); - if (name) { - name = name[0].trim(); - if (name) { - obj.name = name; - } - } - - var email = person.match(/<([^>]+)>/); - if (email) { - obj.email = email[1]; - } - - var url = person.match(/\(([^\)]+)\)/); - if (url) { - obj.url = url[1]; - } - - return obj; -} - -function normalizePerson(person) { - return parsePerson(stringifyPerson(person)); -} - -function extractDescription(readme) { - if (typeof readme !== 'string' || readme === '') { +function normalizePath(val) { + if (val === undefined) { return undefined; } - // split into lines - var lines = readme.trim().split('\n').map(function (line) { - return line.trim(); - }); + if (typeof val !== 'string') { + val = String(val); + } - // find the start of the first paragraph, ignore headings - var start = 0; - for (; start < lines.length; start++) { - var line = lines[start]; - if (line && line.match(/^(#|$)/)) { - // line isn't empty and isn't a heading so this is the start of a paragraph - start++; - break; + return (0, (_path || _load_path()).resolveWithHome)(val); +} + +function urlParts(requestUrl) { + const normalizedUrl = (0, (_normalizeUrl || _load_normalizeUrl()).default)(requestUrl); + const parsed = (_url || _load_url()).default.parse(normalizedUrl); + const host = parsed.host || ''; + const path = parsed.path || ''; + return { host, path }; +} + +class NpmRegistry extends (_baseRegistry || _load_baseRegistry()).default { + constructor(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles) { + super(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles); + this.folder = 'node_modules'; + } + + static escapeName(name) { + // scoped packages contain slashes and the npm registry expects them to be escaped + return name.replace('/', SCOPE_SEPARATOR); + } + + isScopedPackage(packageIdent) { + return SCOPED_PKG_REGEXP.test(packageIdent); + } + + getRequestUrl(registry, pathname) { + let resolved = pathname; + + if (!REGEX_REGISTRY_PREFIX.test(pathname)) { + resolved = (_url || _load_url()).default.resolve((0, (_misc || _load_misc()).addSuffix)(registry, '/'), pathname); } + + if (REGEX_REGISTRY_ENFORCED_HTTPS.test(resolved)) { + resolved = resolved.replace(/^http:\/\//, 'https://'); + } + + return resolved; } - // skip newlines from the header to the first line - while (start < lines.length && !lines[start]) { - start++; + isRequestToRegistry(requestUrl, registryUrl) { + const request = urlParts(requestUrl); + const registry = urlParts(registryUrl); + const customHostSuffix = this.getRegistryOrGlobalOption(registryUrl, 'custom-host-suffix'); + + const requestToRegistryHost = request.host === registry.host; + const requestToYarn = (_constants || _load_constants()).YARN_REGISTRY.includes(request.host) && DEFAULT_REGISTRY.includes(registry.host); + const requestToRegistryPath = request.path.startsWith(registry.path); + // For some registries, the package path does not prefix with the registry path + const customHostSuffixInUse = typeof customHostSuffix === 'string' && request.host.endsWith(customHostSuffix); + + return (requestToRegistryHost || requestToYarn) && (requestToRegistryPath || customHostSuffixInUse); } - // continue to the first non empty line - var end = start; - while (end < lines.length && lines[end]) { - end++; + request(pathname, opts = {}, packageName) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // packageName needs to be escaped when if it is passed + const packageIdent = packageName && NpmRegistry.escapeName(packageName) || pathname; + const registry = opts.registry || _this.getRegistry(packageIdent); + const requestUrl = _this.getRequestUrl(registry, pathname); + + const alwaysAuth = _this.getRegistryOrGlobalOption(registry, 'always-auth'); + + const headers = (0, (_extends2 || _load_extends()).default)({ + Accept: + // This is to use less bandwidth unless we really need to get the full response. + // See https://github.com/npm/npm-registry-client#requests + opts.unfiltered ? 'application/json' : 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*' + }, opts.headers); + + const isToRegistry = _this.isRequestToRegistry(requestUrl, registry) || _this.requestNeedsAuth(requestUrl); + + // this.token must be checked to account for publish requests on non-scoped packages + if (_this.token || isToRegistry && (alwaysAuth || _this.isScopedPackage(packageIdent))) { + const authorization = _this.getAuth(packageIdent); + if (authorization) { + headers.authorization = authorization; + } + } + + if (_this.otp) { + headers['npm-otp'] = _this.otp; + } + + try { + return yield _this.requestManager.request({ + url: requestUrl, + method: opts.method, + body: opts.body, + auth: opts.auth, + headers, + json: !opts.buffer, + buffer: opts.buffer, + process: opts.process, + gzip: true + }); + } catch (error) { + if (error instanceof (_errors || _load_errors()).OneTimePasswordError) { + if (_this.otp) { + throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('incorrectOneTimePassword')); + } + + _this.reporter.info(_this.reporter.lang('twoFactorAuthenticationEnabled')); + _this.otp = yield (0, (_login || _load_login()).getOneTimePassword)(_this.reporter); + + _this.requestManager.clearCache(); + + return _this.request(pathname, opts, packageName); + } else { + throw error; + } + } + })(); } - return lines.slice(start, end).join(' '); -} - -function extractRepositoryUrl(repository) { - if (!repository || typeof repository !== 'object') { - return repository; - } - return repository.url; + requestNeedsAuth(requestUrl) { + const config = this.config; + const requestParts = urlParts(requestUrl); + return !!Object.keys(config).find(option => { + const parts = option.split(':'); + if (parts.length === 2 && parts[1] === '_authToken' || parts[1] === '_password') { + const registryParts = urlParts(parts[0]); + if (requestParts.host === registryParts.host && requestParts.path.startsWith(registryParts.path)) { + return true; + } + } + return false; + }); + } + + checkOutdated(config, name, range) { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const escapedName = NpmRegistry.escapeName(name); + const req = yield _this2.request(escapedName, { unfiltered: true }); + if (!req) { + throw new Error(`couldn't find ${name}`); + } + + // By default use top level 'repository' and 'homepage' values + let repository = req.repository, + homepage = req.homepage; + + const wantedPkg = yield (_npmResolver || _load_npmResolver()).default.findVersionInRegistryResponse(config, escapedName, range, req); + + // But some local repositories like Verdaccio do not return 'repository' nor 'homepage' + // in top level data structure, so we fallback to wanted package manifest + if (!repository && !homepage) { + repository = wantedPkg.repository; + homepage = wantedPkg.homepage; + } + + let latest = req['dist-tags'].latest; + // In certain cases, registries do not return a 'latest' tag. + if (!latest) { + latest = wantedPkg.version; + } + + const url = homepage || repository && repository.url || ''; + + return { + latest, + wanted: wantedPkg.version, + url + }; + })(); + } + + getPossibleConfigLocations(filename, reporter) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let possibles = []; + + for (var _iterator = _this3.extraneousRcFiles.slice().reverse(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const rcFile = _ref; + + possibles.push([false, (_path2 || _load_path2()).default.resolve(process.cwd(), rcFile)]); + } + + if (_this3.enableDefaultRc) { + // npmrc --> ./.npmrc, ~/.npmrc, ${prefix}/etc/npmrc + const localfile = '.' + filename; + possibles = possibles.concat([[false, (_path2 || _load_path2()).default.join(_this3.cwd, localfile)], [true, _this3.config.userconfig || (_path2 || _load_path2()).default.join((_userHomeDir || _load_userHomeDir()).default, localfile)], [false, (_path2 || _load_path2()).default.join(getGlobalPrefix(), 'etc', filename)]]); + + // When home directory for global install is different from where $HOME/npmrc is stored, + // E.g. /usr/local/share vs /root on linux machines, check the additional location + if ((_userHomeDir2 || _load_userHomeDir2()).home !== (_userHomeDir || _load_userHomeDir()).default) { + possibles.push([true, (_path2 || _load_path2()).default.join((_userHomeDir2 || _load_userHomeDir2()).home, localfile)]); + } + + // npmrc --> ../.npmrc, ../../.npmrc, etc. + const foldersFromRootToCwd = (0, (_path || _load_path()).getPosixPath)(_this3.cwd).split('/'); + while (foldersFromRootToCwd.length > 1) { + possibles.push([false, (_path2 || _load_path2()).default.join(foldersFromRootToCwd.join((_path2 || _load_path2()).default.sep), localfile)]); + foldersFromRootToCwd.pop(); + } + } + + const actuals = []; + for (var _iterator2 = possibles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref3; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + + const _ref2 = _ref3; + const isHome = _ref2[0]; + const loc = _ref2[1]; + + reporter.verbose(reporter.lang('configPossibleFile', loc)); + if (yield (_fs || _load_fs()).exists(loc)) { + reporter.verbose(reporter.lang('configFileFound', loc)); + actuals.push([isHome, loc, yield (_fs || _load_fs()).readFile(loc)]); + } + } + + return actuals; + })(); + } + + static getConfigEnv(env = process.env) { + // To match NPM's behavior, HOME is always the user's home directory. + const overrideEnv = { + HOME: (_userHomeDir2 || _load_userHomeDir2()).home + }; + return Object.assign({}, env, overrideEnv); + } + + static normalizeConfig(config) { + const env = NpmRegistry.getConfigEnv(); + config = (_baseRegistry || _load_baseRegistry()).default.normalizeConfig(config); + + for (const key in config) { + config[key] = (0, (_envReplace || _load_envReplace()).default)(config[key], env); + if (isPathConfigOption(key)) { + config[key] = normalizePath(config[key]); + } + } + + return config; + } + + loadConfig() { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // docs: https://docs.npmjs.com/misc/config + _this4.mergeEnv('npm_config_'); + + for (var _iterator3 = yield _this4.getPossibleConfigLocations('npmrc', _this4.reporter), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref5; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref5 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref5 = _i3.value; + } + + const _ref4 = _ref5; + const loc = _ref4[1]; + const file = _ref4[2]; + + const config = NpmRegistry.normalizeConfig((_ini || _load_ini()).default.parse(file)); + + // normalize offline mirror path relative to the current npmrc + const offlineLoc = config['yarn-offline-mirror']; + // don't normalize if we already have a mirror path + if (!_this4.config['yarn-offline-mirror'] && offlineLoc) { + const mirrorLoc = config['yarn-offline-mirror'] = (_path2 || _load_path2()).default.resolve((_path2 || _load_path2()).default.dirname(loc), offlineLoc); + yield (_fs || _load_fs()).mkdirp(mirrorLoc); + } + + _this4.config = Object.assign({}, config, _this4.config); + } + })(); + } + + getScope(packageIdent) { + const match = packageIdent.match(SCOPED_PKG_REGEXP); + return match && match[1] || ''; + } + + getRegistry(packageIdent) { + // Try extracting registry from the url, then scoped registry, and default registry + if (packageIdent.match(REGEX_REGISTRY_PREFIX)) { + const availableRegistries = this.getAvailableRegistries(); + const registry = availableRegistries.find(registry => packageIdent.startsWith(registry)); + if (registry) { + return String(registry); + } + } + + var _arr = [this.getScope(packageIdent), '']; + for (var _i4 = 0; _i4 < _arr.length; _i4++) { + const scope = _arr[_i4]; + const registry = this.getScopedOption(scope, 'registry') || this.registries.yarn.getScopedOption(scope, 'registry'); + if (registry) { + return String(registry); + } + } + + return DEFAULT_REGISTRY; + } + + getAuthByRegistry(registry) { + // Check for bearer token. + const authToken = this.getRegistryOrGlobalOption(registry, '_authToken'); + if (authToken) { + return `Bearer ${String(authToken)}`; + } + + // Check for basic auth token. + const auth = this.getRegistryOrGlobalOption(registry, '_auth'); + if (auth) { + return `Basic ${String(auth)}`; + } + + // Check for basic username/password auth. + const username = this.getRegistryOrGlobalOption(registry, 'username'); + const password = this.getRegistryOrGlobalOption(registry, '_password'); + if (username && password) { + const pw = Buffer.from(String(password), 'base64').toString(); + return 'Basic ' + Buffer.from(String(username) + ':' + pw).toString('base64'); + } + + return ''; + } + + getAuth(packageIdent) { + if (this.token) { + return this.token; + } + + const baseRegistry = this.getRegistry(packageIdent); + const registries = [baseRegistry]; + + // If sending a request to the Yarn registry, we must also send it the auth token for the npm registry + if (baseRegistry === (_constants || _load_constants()).YARN_REGISTRY) { + registries.push(DEFAULT_REGISTRY); + } + + for (var _iterator4 = registries, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref6; + + if (_isArray4) { + if (_i5 >= _iterator4.length) break; + _ref6 = _iterator4[_i5++]; + } else { + _i5 = _iterator4.next(); + if (_i5.done) break; + _ref6 = _i5.value; + } + + const registry = _ref6; + + const auth = this.getAuthByRegistry(registry); + + if (auth) { + return auth; + } + } + + return ''; + } + + getScopedOption(scope, option) { + return this.getOption(scope + (scope ? ':' : '') + option); + } + + getRegistryOption(registry, option) { + const pre = REGEX_REGISTRY_HTTP_PROTOCOL; + const suf = REGEX_REGISTRY_SUFFIX; + + // When registry is used config scope, the trailing '/' is required + const reg = (0, (_misc || _load_misc()).addSuffix)(registry, '/'); + + // 1st attempt, try to get option for the given registry URL + // 2nd attempt, remove the 'https?:' prefix of the registry URL + // 3nd attempt, remove the 'registry/?' suffix of the registry URL + return this.getScopedOption(reg, option) || pre.test(reg) && this.getRegistryOption(reg.replace(pre, ''), option) || suf.test(reg) && this.getRegistryOption(reg.replace(suf, ''), option); + } + + getRegistryOrGlobalOption(registry, option) { + return this.getRegistryOption(registry, option) || this.getOption(option); + } } +exports.default = NpmRegistry; +NpmRegistry.filename = 'package.json'; /***/ }), -/* 202 */ +/* 89 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50939,161 +33144,30 @@ function extractRepositoryUrl(repository) { Object.defineProperty(exports, "__esModule", { value: true }); -exports.getPlatformSpecificPackageFilename = getPlatformSpecificPackageFilename; -exports.getSystemParams = getSystemParams; -function getPlatformSpecificPackageFilename(pkg) { - // TODO support hash for all subdependencies that have installs scripts - var normalizeScope = function normalizeScope(name) { - return name[0] === '@' ? name.substr(1).replace('/', '-') : name; - }; - var suffix = getSystemParams(); - return `${normalizeScope(pkg.name)}-v${pkg.version}-${suffix}`; -} -function getSystemParams() { - // TODO support platform variant for linux - return `${process.platform}-${process.arch}-${process.versions.modules || ''}`; -} +var _baseResolver; -/***/ }), -/* 203 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.satisfiesWithPrereleases = satisfiesWithPrereleases; -exports.diffWithUnstable = diffWithUnstable; - -var _semver; - -function _load_semver() { - return _semver = _interopRequireDefault(__webpack_require__(26)); +function _load_baseResolver() { + return _baseResolver = _interopRequireDefault(__webpack_require__(123)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Returns whether the given semver version satisfies the given range. Notably this supports - * prerelease versions so that "2.0.0-rc.0" satisfies the range ">=1.0.0", for example. - */ +class ExoticResolver extends (_baseResolver || _load_baseResolver()).default { -function satisfiesWithPrereleases(version, range) { - var loose = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var semverRange = void 0; - try { - // $FlowFixMe: Add a definition for the Range class - semverRange = new (_semver || _load_semver()).default.Range(range, loose); - } catch (err) { - return false; - } - - if (!version) { - return false; - } - var semverVersion = void 0; - try { - semverVersion = new (_semver || _load_semver()).default.SemVer(version, semverRange.loose); - } catch (err) { - return false; - } - - // A range has multiple sets of comparators. A version must satisfy all comparators in a set - // and at least one set to satisfy the range. - return semverRange.set.some(function (comparatorSet) { - // node-semver converts ~ and ^ ranges into pairs of >= and < ranges but the upper bounds don't - // properly exclude prerelease versions. For example, "^1.0.0" is converted to ">=1.0.0 <2.0.0", - // which includes "2.0.0-pre" since prerelease versions are lower than their non-prerelease - // counterparts. As a practical workaround we make upper-bound ranges exclude prereleases and - // convert "<2.0.0" to "<2.0.0-0", for example. - comparatorSet = comparatorSet.map(function (comparator) { - if (comparator.operator !== '<' || !comparator.value || comparator.semver.prerelease.length) { - return comparator; - } - - // "0" is the lowest prerelease version - comparator.semver.inc('pre', 0); - - var comparatorString = comparator.operator + comparator.semver.version; - // $FlowFixMe: Add a definition for the Comparator class - return new (_semver || _load_semver()).default.Comparator(comparatorString, comparator.loose); - }); - - return !comparatorSet.some(function (comparator) { - return !comparator.test(semverVersion); - }); - }); -} - -var PRE_RELEASES = { - major: 'premajor', - minor: 'preminor', - patch: 'prepatch' -}; - -/** - * Returns the difference between two versions as a semantic string representation. - * Similar to the `diff` method in node-semver, but it also accounts for unstable versions, - * like 0.x.x or 0.0.x. - */ - -function diffWithUnstable(version1, version2) { - if ((_semver || _load_semver()).default.eq(version1, version2) === false) { - var v1 = (_semver || _load_semver()).default.parse(version1); - var v2 = (_semver || _load_semver()).default.parse(version2); - - if (v1 != null && v2 != null) { - var isPreRelease = v1.prerelease.length > 0 || v2.prerelease.length > 0; - var preMajor = v1.major === 0 || v2.major === 0; - var preMinor = preMajor && (v1.minor === 0 || v2.minor === 0); - - var diff = null; - - if (v1.major !== v2.major) { - diff = 'major'; - } else if (v1.minor !== v2.minor) { - if (preMajor) { - // If the major version number is zero (0.x.x), treat a change - // of the minor version number as a major change. - diff = 'major'; - } else { - diff = 'minor'; - } - } else if (v1.patch !== v2.patch) { - if (preMinor) { - // If the major & minor version numbers are zero (0.0.x), treat a change - // of the patch version number as a major change. - diff = 'major'; - } else if (preMajor) { - // If the major version number is zero (0.x.x), treat a change - // of the patch version number as a minor change. - diff = 'minor'; - } else { - diff = 'patch'; - } - } - - if (isPreRelease) { - if (diff != null) { - diff = PRE_RELEASES[diff]; - } else { - diff = 'prerelease'; - } - } - - return diff; + static isVersion(pattern) { + const proto = this.protocol; + if (proto) { + return pattern.startsWith(`${proto}:`); + } else { + throw new Error('No protocol specified'); } } - - return null; } +exports.default = ExoticResolver; /***/ }), -/* 204 */ +/* 90 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51102,143 +33176,42 @@ function diffWithUnstable(version1, version2) { Object.defineProperty(exports, "__esModule", { value: true }); -exports.explodeHashedUrl = explodeHashedUrl; -function explodeHashedUrl(url) { - var parts = url.split('#'); - return { - hash: parts[1] || '', - url: parts[0] - }; +var _normalizePattern2; + +function _load_normalizePattern() { + return _normalizePattern2 = __webpack_require__(37); } -/***/ }), -/* 205 */ -/***/ (function(module, exports, __webpack_require__) { +const semver = __webpack_require__(22); -module.exports = { "default": __webpack_require__(616), __esModule: true }; +class WorkspaceLayout { + constructor(workspaces, config) { + this.workspaces = workspaces; + this.config = config; + } -/***/ }), -/* 206 */ -/***/ (function(module, exports, __webpack_require__) { + getWorkspaceManifest(key) { + return this.workspaces[key]; + } -module.exports = { "default": __webpack_require__(619), __esModule: true }; + getManifestByPattern(pattern) { + var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern); -/***/ }), -/* 207 */ -/***/ (function(module, exports) { + const name = _normalizePattern.name, + range = _normalizePattern.range; -function Caseless (dict) { - this.dict = dict || {} -} -Caseless.prototype.set = function (name, value, clobber) { - if (typeof name === 'object') { - for (var i in name) { - this.set(i, name[i], value) + const workspace = this.getWorkspaceManifest(name); + if (!workspace || !semver.satisfies(workspace.manifest.version, range, this.config.looseSemver)) { + return null; } - } else { - if (typeof clobber === 'undefined') clobber = true - var has = this.has(name) - - if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value - else this.dict[has || name] = value - return has + return workspace; } } -Caseless.prototype.has = function (name) { - var keys = Object.keys(this.dict) - , name = name.toLowerCase() - ; - for (var i=0;i', - pointerSmall: '»', - info: 'i', - warning: '‼', - hamburger: '≡', - smiley: '☺', - mustache: '┌─┐', - heart: main.heart, - arrowUp: main.arrowUp, - arrowDown: main.arrowDown, - arrowLeft: main.arrowLeft, - arrowRight: main.arrowRight, - radioOn: '(*)', - radioOff: '( )', - checkboxOn: '[×]', - checkboxOff: '[ ]', - checkboxCircleOn: '(×)', - checkboxCircleOff: '( )', - questionMarkPrefix: '?', - oneHalf: '1/2', - oneThird: '1/3', - oneQuarter: '1/4', - oneFifth: '1/5', - oneSixth: '1/6', - oneSeventh: '1/7', - oneEighth: '1/8', - oneNinth: '1/9', - oneTenth: '1/10', - twoThirds: '2/3', - twoFifths: '2/5', - threeQuarters: '3/4', - threeFifths: '3/5', - threeEighths: '3/8', - fourFifths: '4/5', - fiveSixths: '5/6', - fiveEighths: '5/8', - sevenEighths: '7/8' -}; - -if (platform === 'linux') { - // the main one doesn't look that good on Ubuntu - main.questionMarkPrefix = '?'; -} - -const figures = platform === 'win32' ? win : main; - -const fn = str => { - if (figures === main) { - return str; - } - - Object.keys(main).forEach(key => { - if (main[key] === figures[key]) { - return; - } - - str = str.replace(new RegExp(escapeStringRegexp(main[key]), 'g'), figures[key]); - }); - - return str; -}; - -module.exports = Object.assign(fn, figures); - - -/***/ }), -/* 230 */ +/* 99 */ /***/ (function(module, exports, __webpack_require__) { // Approach: @@ -51955,27 +33360,27 @@ module.exports = Object.assign(fn, figures); module.exports = glob -var fs = __webpack_require__(12) -var rp = __webpack_require__(355) -var minimatch = __webpack_require__(163) +var fs = __webpack_require__(5) +var rp = __webpack_require__(140) +var minimatch = __webpack_require__(82) var Minimatch = minimatch.Minimatch -var inherits = __webpack_require__(76) -var EE = __webpack_require__(92).EventEmitter -var path = __webpack_require__(2) -var assert = __webpack_require__(49) -var isAbsolute = __webpack_require__(237) -var globSync = __webpack_require__(699) -var common = __webpack_require__(356) +var inherits = __webpack_require__(61) +var EE = __webpack_require__(77).EventEmitter +var path = __webpack_require__(0) +var assert = __webpack_require__(28) +var isAbsolute = __webpack_require__(101) +var globSync = __webpack_require__(272) +var common = __webpack_require__(141) var alphasort = common.alphasort var alphasorti = common.alphasorti var setopts = common.setopts var ownProp = common.ownProp -var inflight = __webpack_require__(733) -var util = __webpack_require__(9) +var inflight = __webpack_require__(274) +var util = __webpack_require__(3) var childrenIgnored = common.childrenIgnored var isIgnored = common.isIgnored -var once = __webpack_require__(128) +var once = __webpack_require__(83) function glob (pattern, options, cb) { if (typeof options === 'function') cb = options, options = {} @@ -52706,49 +34111,31805 @@ Glob.prototype._stat2 = function (f, abs, er, stat, cb) { /***/ }), -/* 231 */ -/***/ (function(module, exports) { +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 + + + + + +var Schema = __webpack_require__(44); + + +module.exports = new Schema({ + explicit: [ + __webpack_require__(298), + __webpack_require__(296), + __webpack_require__(291) + ] +}); -module.exports = [["0","\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]] /***/ }), -/* 232 */ +/* 101 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(588).isCI +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +var Stream = __webpack_require__(23); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; + exports = module.exports = Stream.Readable; + exports.Readable = Stream.Readable; + exports.Writable = Stream.Writable; + exports.Duplex = Stream.Duplex; + exports.Transform = Stream.Transform; + exports.PassThrough = Stream.PassThrough; + exports.Stream = Stream; +} else { + exports = module.exports = __webpack_require__(406); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = __webpack_require__(408); + exports.Duplex = __webpack_require__(115); + exports.Transform = __webpack_require__(407); + exports.PassThrough = __webpack_require__(792); +} + + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = { + read: read.bind(undefined, false, undefined), + readType: read.bind(undefined, false), + write: write, + /* semi-private api, used by sshpk-agent */ + readPartial: read.bind(undefined, true), + + /* shared with ssh format */ + readInternal: read, + keyTypeToAlg: keyTypeToAlg, + algToKeyType: algToKeyType +}; + +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var utils = __webpack_require__(26); +var Key = __webpack_require__(27); +var PrivateKey = __webpack_require__(33); +var SSHBuffer = __webpack_require__(159); + +function algToKeyType(alg) { + assert.string(alg); + if (alg === 'ssh-dss') + return ('dsa'); + else if (alg === 'ssh-rsa') + return ('rsa'); + else if (alg === 'ssh-ed25519') + return ('ed25519'); + else if (alg === 'ssh-curve25519') + return ('curve25519'); + else if (alg.match(/^ecdsa-sha2-/)) + return ('ecdsa'); + else + throw (new Error('Unknown algorithm ' + alg)); +} + +function keyTypeToAlg(key) { + assert.object(key); + if (key.type === 'dsa') + return ('ssh-dss'); + else if (key.type === 'rsa') + return ('ssh-rsa'); + else if (key.type === 'ed25519') + return ('ssh-ed25519'); + else if (key.type === 'curve25519') + return ('ssh-curve25519'); + else if (key.type === 'ecdsa') + return ('ecdsa-sha2-' + key.part.curve.data.toString()); + else + throw (new Error('Unknown key type ' + key.type)); +} + +function read(partial, type, buf, options) { + if (typeof (buf) === 'string') + buf = Buffer.from(buf); + assert.buffer(buf, 'buf'); + + var key = {}; + + var parts = key.parts = []; + var sshbuf = new SSHBuffer({buffer: buf}); + + var alg = sshbuf.readString(); + assert.ok(!sshbuf.atEnd(), 'key must have at least one part'); + + key.type = algToKeyType(alg); + + var partCount = algs.info[key.type].parts.length; + if (type && type === 'private') + partCount = algs.privInfo[key.type].parts.length; + + while (!sshbuf.atEnd() && parts.length < partCount) + parts.push(sshbuf.readPart()); + while (!partial && !sshbuf.atEnd()) + parts.push(sshbuf.readPart()); + + assert.ok(parts.length >= 1, + 'key must have at least one part'); + assert.ok(partial || sshbuf.atEnd(), + 'leftover bytes at end of key'); + + var Constructor = Key; + var algInfo = algs.info[key.type]; + if (type === 'private' || algInfo.parts.length !== parts.length) { + algInfo = algs.privInfo[key.type]; + Constructor = PrivateKey; + } + assert.strictEqual(algInfo.parts.length, parts.length); + + if (key.type === 'ecdsa') { + var res = /^ecdsa-sha2-(.+)$/.exec(alg); + assert.ok(res !== null); + assert.strictEqual(res[1], parts[0].data.toString()); + } + + var normalized = true; + for (var i = 0; i < algInfo.parts.length; ++i) { + var p = parts[i]; + p.name = algInfo.parts[i]; + /* + * OpenSSH stores ed25519 "private" keys as seed + public key + * concat'd together (k followed by A). We want to keep them + * separate for other formats that don't do this. + */ + if (key.type === 'ed25519' && p.name === 'k') + p.data = p.data.slice(0, 32); + + if (p.name !== 'curve' && algInfo.normalize !== false) { + var nd; + if (key.type === 'ed25519') { + nd = utils.zeroPadToLength(p.data, 32); + } else { + nd = utils.mpNormalize(p.data); + } + if (nd.toString('binary') !== + p.data.toString('binary')) { + p.data = nd; + normalized = false; + } + } + } + + if (normalized) + key._rfc4253Cache = sshbuf.toBuffer(); + + if (partial && typeof (partial) === 'object') { + partial.remainder = sshbuf.remainder(); + partial.consumed = sshbuf._offset; + } + + return (new Constructor(key)); +} + +function write(key, options) { + assert.object(key); + + var alg = keyTypeToAlg(key); + var i; + + var algInfo = algs.info[key.type]; + if (PrivateKey.isPrivateKey(key)) + algInfo = algs.privInfo[key.type]; + var parts = algInfo.parts; + + var buf = new SSHBuffer({}); + + buf.writeString(alg); + + for (i = 0; i < parts.length; ++i) { + var data = key.part[parts[i]].data; + if (algInfo.normalize !== false) { + if (key.type === 'ed25519') + data = utils.zeroPadToLength(data, 32); + else + data = utils.mpNormalize(data); + } + if (key.type === 'ed25519' && parts[i] === 'k') + data = Buffer.concat([data, key.part.A.data]); + buf.writeBuffer(data); + } + + return (buf.toBuffer()); +} + + +/***/ }), +/* 104 */ +/***/ (function(module, exports) { + +module.exports = require("tty"); + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (str, fileLoc = 'lockfile') { + str = (0, (_stripBom || _load_stripBom()).default)(str); + return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) }; +}; + +var _util; + +function _load_util() { + return _util = _interopRequireDefault(__webpack_require__(3)); +} + +var _invariant; + +function _load_invariant() { + return _invariant = _interopRequireDefault(__webpack_require__(9)); +} + +var _stripBom; + +function _load_stripBom() { + return _stripBom = _interopRequireDefault(__webpack_require__(160)); +} + +var _constants; + +function _load_constants() { + return _constants = __webpack_require__(8); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint quotes: 0 */ + +var _require = __webpack_require__(279); + +const safeLoad = _require.safeLoad, + FAILSAFE_SCHEMA = _require.FAILSAFE_SCHEMA; + + +const VERSION_REGEX = /^yarn lockfile v(\d+)$/; + +const TOKEN_TYPES = { + boolean: 'BOOLEAN', + string: 'STRING', + identifier: 'IDENTIFIER', + eof: 'EOF', + colon: 'COLON', + newline: 'NEWLINE', + comment: 'COMMENT', + indent: 'INDENT', + invalid: 'INVALID', + number: 'NUMBER', + comma: 'COMMA' +}; + +const VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number]; + +function isValidPropValueToken(token) { + return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0; +} + +function* tokenise(input) { + let lastNewline = false; + let line = 1; + let col = 0; + + function buildToken(type, value) { + return { line, col, type, value }; + } + + while (input.length) { + let chop = 0; + + if (input[0] === '\n' || input[0] === '\r') { + chop++; + // If this is a \r\n line, ignore both chars but only add one new line + if (input[1] === '\n') { + chop++; + } + line++; + col = 0; + yield buildToken(TOKEN_TYPES.newline); + } else if (input[0] === '#') { + chop++; + + let nextNewline = input.indexOf('\n', chop); + if (nextNewline === -1) { + nextNewline = input.length; + } + const val = input.substring(chop, nextNewline); + chop = nextNewline; + yield buildToken(TOKEN_TYPES.comment, val); + } else if (input[0] === ' ') { + if (lastNewline) { + let indentSize = 1; + for (let i = 1; input[i] === ' '; i++) { + indentSize++; + } + + if (indentSize % 2) { + throw new TypeError('Invalid number of spaces'); + } else { + chop = indentSize; + yield buildToken(TOKEN_TYPES.indent, indentSize / 2); + } + } else { + chop++; + } + } else if (input[0] === '"') { + let i = 1; + for (; i < input.length; i++) { + if (input[i] === '"') { + const isEscaped = input[i - 1] === '\\' && input[i - 2] !== '\\'; + if (!isEscaped) { + i++; + break; + } + } + } + const val = input.substring(0, i); + + chop = i; + + try { + yield buildToken(TOKEN_TYPES.string, JSON.parse(val)); + } catch (err) { + if (err instanceof SyntaxError) { + yield buildToken(TOKEN_TYPES.invalid); + } else { + throw err; + } + } + } else if (/^[0-9]/.test(input)) { + const val = /^[0-9]+/.exec(input)[0]; + chop = val.length; + + yield buildToken(TOKEN_TYPES.number, +val); + } else if (/^true/.test(input)) { + yield buildToken(TOKEN_TYPES.boolean, true); + chop = 4; + } else if (/^false/.test(input)) { + yield buildToken(TOKEN_TYPES.boolean, false); + chop = 5; + } else if (input[0] === ':') { + yield buildToken(TOKEN_TYPES.colon); + chop++; + } else if (input[0] === ',') { + yield buildToken(TOKEN_TYPES.comma); + chop++; + } else if (/^[a-zA-Z\/.-]/g.test(input)) { + let i = 0; + for (; i < input.length; i++) { + const char = input[i]; + if (char === ':' || char === ' ' || char === '\n' || char === '\r' || char === ',') { + break; + } + } + const name = input.substring(0, i); + chop = i; + + yield buildToken(TOKEN_TYPES.string, name); + } else { + yield buildToken(TOKEN_TYPES.invalid); + } + + if (!chop) { + // will trigger infinite recursion + yield buildToken(TOKEN_TYPES.invalid); + } + + col += chop; + lastNewline = input[0] === '\n' || input[0] === '\r' && input[1] === '\n'; + input = input.slice(chop); + } + + yield buildToken(TOKEN_TYPES.eof); +} + +class Parser { + constructor(input, fileLoc = 'lockfile') { + this.comments = []; + this.tokens = tokenise(input); + this.fileLoc = fileLoc; + } + + onComment(token) { + const value = token.value; + (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string'); + + const comment = value.trim(); + + const versionMatch = comment.match(VERSION_REGEX); + if (versionMatch) { + const version = +versionMatch[1]; + if (version > (_constants || _load_constants()).LOCKFILE_VERSION) { + throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \`$ yarn self-update\` to upgrade to the latest version.`); + } + } + + this.comments.push(comment); + } + + next() { + const item = this.tokens.next(); + (0, (_invariant || _load_invariant()).default)(item, 'expected a token'); + + const done = item.done, + value = item.value; + + if (done || !value) { + throw new Error('No more tokens'); + } else if (value.type === TOKEN_TYPES.comment) { + this.onComment(value); + return this.next(); + } else { + return this.token = value; + } + } + + unexpected(msg = 'Unexpected token') { + throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`); + } + + expect(tokType) { + if (this.token.type === tokType) { + this.next(); + } else { + this.unexpected(); + } + } + + eat(tokType) { + if (this.token.type === tokType) { + this.next(); + return true; + } else { + return false; + } + } + + parse(indent = 0) { + const obj = (0, (_map || _load_map()).default)(); + + while (true) { + const propToken = this.token; + + if (propToken.type === TOKEN_TYPES.newline) { + const nextToken = this.next(); + if (!indent) { + // if we have 0 indentation then the next token doesn't matter + continue; + } + + if (nextToken.type !== TOKEN_TYPES.indent) { + // if we have no indentation after a newline then we've gone down a level + break; + } + + if (nextToken.value === indent) { + // all is good, the indent is on our level + this.next(); + } else { + // the indentation is less than our level + break; + } + } else if (propToken.type === TOKEN_TYPES.indent) { + if (propToken.value === indent) { + this.next(); + } else { + break; + } + } else if (propToken.type === TOKEN_TYPES.eof) { + break; + } else if (propToken.type === TOKEN_TYPES.string) { + // property key + const key = propToken.value; + (0, (_invariant || _load_invariant()).default)(key, 'Expected a key'); + + const keys = [key]; + this.next(); + + // support multiple keys + while (this.token.type === TOKEN_TYPES.comma) { + this.next(); // skip comma + + const keyToken = this.token; + if (keyToken.type !== TOKEN_TYPES.string) { + this.unexpected('Expected string'); + } + + const key = keyToken.value; + (0, (_invariant || _load_invariant()).default)(key, 'Expected a key'); + keys.push(key); + this.next(); + } + + const wasColon = this.token.type === TOKEN_TYPES.colon; + if (wasColon) { + this.next(); + } + + if (isValidPropValueToken(this.token)) { + // plain value + for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const key = _ref; + + obj[key] = this.token.value; + } + + this.next(); + } else if (wasColon) { + // parse object + const val = this.parse(indent + 1); + + for (var _iterator2 = keys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + const key = _ref2; + + obj[key] = val; + } + + if (indent && this.token.type !== TOKEN_TYPES.indent) { + break; + } + } else { + this.unexpected('Invalid value type'); + } + } else { + this.unexpected(`Unknown token: ${(_util || _load_util()).default.inspect(propToken)}`); + } + } + + return obj; + } +} + +const MERGE_CONFLICT_ANCESTOR = '|||||||'; +const MERGE_CONFLICT_END = '>>>>>>>'; +const MERGE_CONFLICT_SEP = '======='; +const MERGE_CONFLICT_START = '<<<<<<<'; + +/** + * Extract the two versions of the lockfile from a merge conflict. + */ +function extractConflictVariants(str) { + const variants = [[], []]; + const lines = str.split(/\r?\n/g); + let skip = false; + + while (lines.length) { + const line = lines.shift(); + if (line.startsWith(MERGE_CONFLICT_START)) { + // get the first variant + while (lines.length) { + const conflictLine = lines.shift(); + if (conflictLine === MERGE_CONFLICT_SEP) { + skip = false; + break; + } else if (skip || conflictLine.startsWith(MERGE_CONFLICT_ANCESTOR)) { + skip = true; + continue; + } else { + variants[0].push(conflictLine); + } + } + + // get the second variant + while (lines.length) { + const conflictLine = lines.shift(); + if (conflictLine.startsWith(MERGE_CONFLICT_END)) { + break; + } else { + variants[1].push(conflictLine); + } + } + } else { + variants[0].push(line); + variants[1].push(line); + } + } + + return [variants[0].join('\n'), variants[1].join('\n')]; +} + +/** + * Check if a lockfile has merge conflicts. + */ +function hasMergeConflicts(str) { + return str.includes(MERGE_CONFLICT_START) && str.includes(MERGE_CONFLICT_SEP) && str.includes(MERGE_CONFLICT_END); +} + +/** + * Parse the lockfile. + */ +function parse(str, fileLoc) { + const parser = new Parser(str, fileLoc); + parser.next(); + try { + return parser.parse(); + } catch (error1) { + try { + return safeLoad(str, { + schema: FAILSAFE_SCHEMA + }); + } catch (error2) { + throw error1; + } + } +} + +/** + * Parse and merge the two variants in a conflicted lockfile. + */ +function parseWithConflict(str, fileLoc) { + const variants = extractConflictVariants(str); + try { + return { type: 'merge', object: Object.assign({}, parse(variants[0], fileLoc), parse(variants[1], fileLoc)) }; + } catch (err) { + if (err instanceof SyntaxError) { + return { type: 'conflict', object: {} }; + } else { + throw err; + } + } +} + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + +module.exports = { + copy: copy, + checkDataType: checkDataType, + checkDataTypes: checkDataTypes, + coerceToTypes: coerceToTypes, + toHash: toHash, + getProperty: getProperty, + escapeQuotes: escapeQuotes, + equal: __webpack_require__(204), + ucs2length: __webpack_require__(480), + varOccurences: varOccurences, + varReplace: varReplace, + cleanUpCode: cleanUpCode, + finalCleanUpCode: finalCleanUpCode, + schemaHasRules: schemaHasRules, + schemaHasRulesExcept: schemaHasRulesExcept, + toQuotedString: toQuotedString, + getPathExpr: getPathExpr, + getPath: getPath, + getData: getData, + unescapeFragment: unescapeFragment, + unescapeJsonPointer: unescapeJsonPointer, + escapeFragment: escapeFragment, + escapeJsonPointer: escapeJsonPointer +}; + + +function copy(o, to) { + to = to || {}; + for (var key in o) to[key] = o[key]; + return to; +} + + +function checkDataType(dataType, data, negate) { + var EQUAL = negate ? ' !== ' : ' === ' + , AND = negate ? ' || ' : ' && ' + , OK = negate ? '!' : '' + , NOT = negate ? '' : '!'; + switch (dataType) { + case 'null': return data + EQUAL + 'null'; + case 'array': return OK + 'Array.isArray(' + data + ')'; + case 'object': return '(' + OK + data + AND + + 'typeof ' + data + EQUAL + '"object"' + AND + + NOT + 'Array.isArray(' + data + '))'; + case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + + NOT + '(' + data + ' % 1)' + + AND + data + EQUAL + data + ')'; + default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; + } +} + + +function checkDataTypes(dataTypes, data) { + switch (dataTypes.length) { + case 1: return checkDataType(dataTypes[0], data, true); + default: + var code = ''; + var types = toHash(dataTypes); + if (types.array && types.object) { + code = types.null ? '(': '(!' + data + ' || '; + code += 'typeof ' + data + ' !== "object")'; + delete types.null; + delete types.array; + delete types.object; + } + if (types.number) delete types.integer; + for (var t in types) + code += (code ? ' && ' : '' ) + checkDataType(t, data, true); + + return code; + } +} + + +var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); +function coerceToTypes(optionCoerceTypes, dataTypes) { + if (Array.isArray(dataTypes)) { + var types = []; + for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } + + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; + } + + var expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter) { + var _config$registries$ya = config.registries.yarn.config; + let username = _config$registries$ya.username, + email = _config$registries$ya.email; + + + if (username) { + reporter.info(`${reporter.lang('npmUsername')}: ${username}`); + } else { + username = yield reporter.question(reporter.lang('npmUsername')); + if (!username) { + return null; + } + } + + if (email) { + reporter.info(`${reporter.lang('npmEmail')}: ${email}`); + } else { + email = yield reporter.question(reporter.lang('npmEmail')); + if (!email) { + return null; + } + } + + yield config.registries.yarn.saveHomeConfig({ username, email }); + + return { username, email }; + }); + + return function getCredentials(_x, _x2) { + return _ref.apply(this, arguments); + }; +})(); + +let getToken = exports.getToken = (() => { + var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, name = '', flags = {}, registry = '') { + const auth = registry ? config.registries.npm.getAuthByRegistry(registry) : config.registries.npm.getAuth(name); + + if (config.otp) { + config.registries.npm.setOtp(config.otp); + } + + if (auth) { + config.registries.npm.setToken(auth); + return function revoke() { + reporter.info(reporter.lang('notRevokingConfigToken')); + return Promise.resolve(); + }; + } + + const env = process.env.YARN_AUTH_TOKEN || process.env.NPM_AUTH_TOKEN; + if (env) { + config.registries.npm.setToken(`Bearer ${env}`); + return function revoke() { + reporter.info(reporter.lang('notRevokingEnvToken')); + return Promise.resolve(); + }; + } + + // make sure we're not running in non-interactive mode before asking for login + if (flags.nonInteractive || config.nonInteractive) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('nonInteractiveNoToken')); + } + + // + const creds = yield getCredentials(config, reporter); + if (!creds) { + reporter.warn(reporter.lang('loginAsPublic')); + return function revoke() { + reporter.info(reporter.lang('noTokenToRevoke')); + return Promise.resolve(); + }; + } + + const username = creds.username, + email = creds.email; + + const password = yield reporter.question(reporter.lang('npmPassword'), { + password: true, + required: true + }); + + // + const userobj = { + _id: `org.couchdb.user:${username}`, + name: username, + password, + email, + type: 'user', + roles: [], + date: new Date().toISOString() + }; + + // + const res = yield config.registries.npm.request(`-/user/org.couchdb.user:${encodeURIComponent(username)}`, { + method: 'PUT', + registry, + body: userobj, + auth: { username, password, email } + }); + + if (res && res.ok) { + reporter.success(reporter.lang('loggedIn')); + + const token = res.token; + config.registries.npm.setToken(`Bearer ${token}`); + + return (() => { + var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + reporter.success(reporter.lang('revokedToken')); + yield config.registries.npm.request(`-/user/token/${token}`, { + method: 'DELETE', + registry + }); + }); + + function revoke() { + return _ref3.apply(this, arguments); + } + + return revoke; + })(); + } else { + throw new (_errors || _load_errors()).MessageError(reporter.lang('incorrectCredentials')); + } + }); + + return function getToken(_x3, _x4) { + return _ref2.apply(this, arguments); + }; +})(); + +let run = exports.run = (() => { + var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { + yield getCredentials(config, reporter); + }); + + return function run(_x5, _x6, _x7, _x8) { + return _ref4.apply(this, arguments); + }; +})(); + +exports.getOneTimePassword = getOneTimePassword; +exports.hasWrapper = hasWrapper; +exports.setFlags = setFlags; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function getOneTimePassword(reporter) { + return reporter.question(reporter.lang('npmOneTimePassword')); +} + +function hasWrapper(commander, args) { + return true; +} + +function setFlags(commander) { + commander.description('Stores registry username and email.'); +} + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +exports.stringifyLangArgs = stringifyLangArgs; + +var _format; + +function _load_format() { + return _format = __webpack_require__(566); +} + +var _index; + +function _load_index() { + return _index = _interopRequireWildcard(__webpack_require__(568)); +} + +var _isCi; + +function _load_isCi() { + return _isCi = _interopRequireDefault(__webpack_require__(397)); +} + +var _os; + +function _load_os() { + return _os = _interopRequireDefault(__webpack_require__(46)); +} + +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 }; } + +/* eslint no-unused-vars: 0 */ + +const util = __webpack_require__(3); +const EventEmitter = __webpack_require__(77).EventEmitter; + +function stringifyLangArgs(args) { + return args.map(function (val) { + if (val != null && val.inspect) { + return val.inspect(); + } else { + try { + const str = JSON.stringify(val) || val + ''; + // should match all literal line breaks and + // "u001b" that follow an odd number of backslashes and convert them to ESC + // we do this because the JSON.stringify process has escaped these characters + return str.replace(/((?:^|[^\\])(?:\\{2})*)\\u001[bB]/g, '$1\u001b').replace(/[\\]r[\\]n|([\\])?[\\]n/g, (match, precededBacklash) => { + // precededBacklash not null when "\n" is preceded by a backlash ("\\n") + // match will be "\\n" and we don't replace it with os.EOL + return precededBacklash ? match : (_os || _load_os()).default.EOL; + }); + } catch (e) { + return util.inspect(val); + } + } + }); +} + +class BaseReporter { + constructor(opts = {}) { + const lang = 'en'; + this.language = lang; + + this.stdout = opts.stdout || process.stdout; + this.stderr = opts.stderr || process.stderr; + this.stdin = opts.stdin || this._getStandardInput(); + this.emoji = !!opts.emoji; + this.nonInteractive = !!opts.nonInteractive; + this.noProgress = !!opts.noProgress || (_isCi || _load_isCi()).default; + this.isVerbose = !!opts.verbose; + + // $FlowFixMe: this is valid! + this.isTTY = this.stdout.isTTY; + + this.peakMemory = 0; + this.startTime = Date.now(); + this.format = (_format || _load_format()).defaultFormatter; + } + + lang(key, ...args) { + const msg = (_index || _load_index())[this.language][key] || (_index || _load_index()).en[key]; + if (!msg) { + throw new ReferenceError(`No message defined for language key ${key}`); + } + + // stringify args + const stringifiedArgs = stringifyLangArgs(args); + + // replace $0 placeholders with args + return msg.replace(/\$(\d+)/g, (str, i) => { + return stringifiedArgs[i]; + }); + } + + /** + * `stringifyLangArgs` run `JSON.stringify` on strings too causing + * them to appear quoted. This marks them as "raw" and prevents + * the quoting and escaping + */ + rawText(str) { + return { + inspect() { + return str; + } + }; + } + + verbose(msg) { + if (this.isVerbose) { + this._verbose(msg); + } + } + + verboseInspect(val) { + if (this.isVerbose) { + this._verboseInspect(val); + } + } + + _verbose(msg) {} + _verboseInspect(val) {} + + _getStandardInput() { + let standardInput; + + // Accessing stdin in a win32 headless process (e.g., Visual Studio) may throw an exception. + try { + standardInput = process.stdin; + } catch (e) { + console.warn(e.message); + delete process.stdin; + // $FlowFixMe: this is valid! + process.stdin = new EventEmitter(); + standardInput = process.stdin; + } + + return standardInput; + } + + initPeakMemoryCounter() { + this.checkPeakMemory(); + this.peakMemoryInterval = setInterval(() => { + this.checkPeakMemory(); + }, 1000); + // $FlowFixMe: Node's setInterval returns a Timeout, not a Number + this.peakMemoryInterval.unref(); + } + + checkPeakMemory() { + var _process$memoryUsage = process.memoryUsage(); + + const heapTotal = _process$memoryUsage.heapTotal; + + if (heapTotal > this.peakMemory) { + this.peakMemory = heapTotal; + } + } + + close() { + if (this.peakMemoryInterval) { + clearInterval(this.peakMemoryInterval); + this.peakMemoryInterval = null; + } + } + + getTotalTime() { + return Date.now() - this.startTime; + } + + // TODO + list(key, items, hints) {} + + // Outputs basic tree structure to console + tree(key, obj, { force = false } = {}) {} + + // called whenever we begin a step in the CLI. + step(current, total, message, emoji) {} + + // a error message has been triggered. this however does not always meant an abrupt + // program end. + error(message) {} + + // an info message has been triggered. this provides things like stats and diagnostics. + info(message) {} + + // a warning message has been triggered. + warn(message) {} + + // a success message has been triggered. + success(message) {} + + // a simple log message + // TODO: rethink the {force} parameter. In the meantime, please don't use it (cf comments in #4143). + log(message, { force = false } = {}) {} + + // a shell command has been executed + command(command) {} + + // inspect and pretty-print any value + inspect(value) {} + + // the screen shown at the very start of the CLI + header(command, pkg) {} + + // the screen shown at the very end of the CLI + footer(showPeakMemory) {} + + // a table structure + table(head, body) {} + + // security audit action to resolve advisories + auditAction(recommendation) {} + + // security audit requires manual review + auditManualReview() {} + + // security audit advisory + auditAdvisory(resolution, auditAdvisory) {} + + // summary for security audit report + auditSummary(auditMetadata) {} + + // render an activity spinner and return a function that will trigger an update + activity() { + return { + tick(name) {}, + end() {} + }; + } + + // + activitySet(total, workers) { + return { + spinners: Array(workers).fill({ + clear() {}, + setPrefix() {}, + tick() {}, + end() {} + }), + end() {} + }; + } + + // + question(question, options = {}) { + return Promise.reject(new Error('Not implemented')); + } + + // + questionAffirm(question) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const condition = true; // trick eslint + if (_this.nonInteractive) { + return true; + } + + while (condition) { + let answer = yield _this.question(question); + answer = answer.toLowerCase(); + + if (answer === 'y' || answer === 'yes') { + return true; + } + if (answer === 'n' || answer === 'no') { + return false; + } + + _this.error('Invalid answer for question'); + } + + return false; + })(); + } + + // prompt the user to select an option from an array + select(header, question, options) { + return Promise.reject(new Error('Not implemented')); + } + + // render a progress bar and return a function which when called will trigger an update + progress(total) { + return function () {}; + } + + // utility function to disable progress bar + disableProgress() { + this.noProgress = true; + } + + // + prompt(message, choices, options = {}) { + return Promise.reject(new Error('Not implemented')); + } +} +exports.default = BaseReporter; + +/***/ }), +/* 109 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +exports.explodeHostedGitFragment = explodeHostedGitFragment; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _index; + +function _load_index() { + return _index = __webpack_require__(57); +} + +var _gitResolver; + +function _load_gitResolver() { + return _gitResolver = _interopRequireDefault(__webpack_require__(124)); +} + +var _exoticResolver; + +function _load_exoticResolver() { + return _exoticResolver = _interopRequireDefault(__webpack_require__(89)); +} + +var _git; + +function _load_git() { + return _git = _interopRequireDefault(__webpack_require__(219)); +} + +var _guessName; + +function _load_guessName() { + return _guessName = _interopRequireDefault(__webpack_require__(169)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parseHash(fragment) { + const hashPosition = fragment.indexOf('#'); + return hashPosition === -1 ? '' : fragment.substr(hashPosition + 1); +} + +function explodeHostedGitFragment(fragment, reporter) { + const hash = parseHash(fragment); + + const preParts = fragment.split('@'); + if (preParts.length > 2) { + fragment = preParts[1] + '@' + preParts[2]; + } + + const parts = fragment.replace(/(.*?)#.*/, '$1') // Strip hash + .replace(/.*:(.*)/, '$1') // Strip prefixed protocols + .replace(/.git$/, '') // Strip the .git suffix + .split('/'); + + const user = parts[parts.length - 2]; + const repo = parts[parts.length - 1]; + + if (user === undefined || repo === undefined) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidHostedGitFragment', fragment)); + } + + return { + user, + repo, + hash + }; +} + +class HostedGitResolver extends (_exoticResolver || _load_exoticResolver()).default { + constructor(request, fragment) { + super(request, fragment); + + const exploded = this.exploded = explodeHostedGitFragment(fragment, this.reporter); + const user = exploded.user, + repo = exploded.repo, + hash = exploded.hash; + + this.user = user; + this.repo = repo; + this.hash = hash; + } + + static getTarballUrl(exploded, commit) { + exploded; + commit; + throw new Error('Not implemented'); + } + + static getGitHTTPUrl(exploded) { + exploded; + throw new Error('Not implemented'); + } + + static getGitHTTPBaseUrl(exploded) { + exploded; + throw new Error('Not implemented'); + } + + static getGitSSHUrl(exploded) { + exploded; + throw new Error('Not implemented'); + } + + static getHTTPFileUrl(exploded, filename, commit) { + exploded; + filename; + commit; + throw new Error('Not implemented'); + } + + getRefOverHTTP(url) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(url); + const client = new (_git || _load_git()).default(_this.config, gitUrl, _this.hash); + + let out = yield _this.config.requestManager.request({ + url: `${url}/info/refs?service=git-upload-pack`, + queue: _this.resolver.fetchingQueue + }); + + if (out) { + // clean up output + let lines = out.trim().split('\n'); + + // remove first two lines which contains compatibility info etc + lines = lines.slice(2); + + // remove last line which contains the terminator "0000" + lines.pop(); + + // remove line lengths from start of each line + lines = lines.map(function (line) { + return line.slice(4); + }); + + out = lines.join('\n'); + } else { + throw new Error(_this.reporter.lang('hostedGitResolveError')); + } + + return client.setRefHosted(out); + })(); + } + + resolveOverHTTP(url) { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const commit = yield _this2.getRefOverHTTP(url); + const config = _this2.config; + + + const tarballUrl = _this2.constructor.getTarballUrl(_this2.exploded, commit); + + const tryRegistry = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (registry) { + const filename = (_index || _load_index()).registries[registry].filename; + + const href = _this2.constructor.getHTTPFileUrl(_this2.exploded, filename, commit); + const file = yield config.requestManager.request({ + url: href, + queue: _this2.resolver.fetchingQueue + }); + if (!file) { + return null; + } + + const json = yield config.readJson(href, function () { + return JSON.parse(file); + }); + json._uid = commit; + json._remote = { + resolved: tarballUrl, + type: 'tarball', + reference: tarballUrl, + registry + }; + return json; + }); + + return function tryRegistry(_x) { + return _ref.apply(this, arguments); + }; + })(); + + const file = yield tryRegistry(_this2.registry); + if (file) { + return file; + } + + for (const registry in (_index || _load_index()).registries) { + if (registry === _this2.registry) { + continue; + } + + const file = yield tryRegistry(registry); + if (file) { + return file; + } + } + + return { + name: (0, (_guessName || _load_guessName()).default)(url), + version: '0.0.0', + _uid: commit, + _remote: { + resolved: tarballUrl, + type: 'tarball', + reference: tarballUrl, + registry: 'npm', + hash: undefined + } + }; + })(); + } + + hasHTTPCapability(url) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + return (yield _this3.config.requestManager.request({ + url, + method: 'HEAD', + queue: _this3.resolver.fetchingQueue, + followRedirect: false + })) !== false; + })(); + } + + resolve() { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // If we already have the tarball, just return it without having to make any HTTP requests. + const shrunk = _this4.request.getLocked('tarball'); + if (shrunk) { + return shrunk; + } + + const httpUrl = _this4.constructor.getGitHTTPUrl(_this4.exploded); + const httpBaseUrl = _this4.constructor.getGitHTTPBaseUrl(_this4.exploded); + const sshUrl = _this4.constructor.getGitSSHUrl(_this4.exploded); + + // If we can access the files over HTTP then we should as it's MUCH faster than git + // archive and tarball unarchiving. The HTTP API is only available for public repos + // though. + if (yield _this4.hasHTTPCapability(httpBaseUrl)) { + return _this4.resolveOverHTTP(httpUrl); + } + + // If the url is accessible over git archive then we should immediately delegate to + // the git resolver. + // + // NOTE: Here we use a different url than when we delegate to the git resolver later on. + // This is because `git archive` requires access over ssh and github only allows that + // if you have write permissions + const sshGitUrl = (_git || _load_git()).default.npmUrlToGitUrl(sshUrl); + if (yield (_git || _load_git()).default.hasArchiveCapability(sshGitUrl)) { + const archiveClient = new (_git || _load_git()).default(_this4.config, sshGitUrl, _this4.hash); + const commit = yield archiveClient.init(); + return _this4.fork((_gitResolver || _load_gitResolver()).default, true, `${sshUrl}#${commit}`); + } + + // fallback to the plain git resolver + return _this4.fork((_gitResolver || _load_gitResolver()).default, true, sshUrl); + })(); + } +} +exports.default = HostedGitResolver; + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const debug = __webpack_require__(266)('yarn'); + +class BlockingQueue { + constructor(alias, maxConcurrency = Infinity) { + this.concurrencyQueue = []; + this.maxConcurrency = maxConcurrency; + this.runningCount = 0; + this.warnedStuck = false; + this.alias = alias; + this.first = true; + + this.running = (0, (_map || _load_map()).default)(); + this.queue = (0, (_map || _load_map()).default)(); + + this.stuckTick = this.stuckTick.bind(this); + } + + stillActive() { + if (this.stuckTimer) { + clearTimeout(this.stuckTimer); + } + + this.stuckTimer = setTimeout(this.stuckTick, 5000); + + // We need to check the existence of unref because of https://github.com/facebook/jest/issues/4559 + // $FlowFixMe: Node's setInterval returns a Timeout, not a Number + this.stuckTimer.unref && this.stuckTimer.unref(); + } + + stuckTick() { + if (this.runningCount === 1) { + this.warnedStuck = true; + debug(`The ${JSON.stringify(this.alias)} blocking queue may be stuck. 5 seconds ` + `without any activity with 1 worker: ${Object.keys(this.running)[0]}`); + } + } + + push(key, factory) { + if (this.first) { + this.first = false; + } else { + this.stillActive(); + } + + return new Promise((resolve, reject) => { + // we're already running so push ourselves to the queue + const queue = this.queue[key] = this.queue[key] || []; + queue.push({ factory, resolve, reject }); + + if (!this.running[key]) { + this.shift(key); + } + }); + } + + shift(key) { + if (this.running[key]) { + delete this.running[key]; + this.runningCount--; + + if (this.stuckTimer) { + clearTimeout(this.stuckTimer); + this.stuckTimer = null; + } + + if (this.warnedStuck) { + this.warnedStuck = false; + debug(`${JSON.stringify(this.alias)} blocking queue finally resolved. Nothing to worry about.`); + } + } + + const queue = this.queue[key]; + if (!queue) { + return; + } + + var _queue$shift = queue.shift(); + + const resolve = _queue$shift.resolve, + reject = _queue$shift.reject, + factory = _queue$shift.factory; + + if (!queue.length) { + delete this.queue[key]; + } + + const next = () => { + this.shift(key); + this.shiftConcurrencyQueue(); + }; + + const run = () => { + this.running[key] = true; + this.runningCount++; + + factory().then(function (val) { + resolve(val); + next(); + return null; + }).catch(function (err) { + reject(err); + next(); + }); + }; + + this.maybePushConcurrencyQueue(run); + } + + maybePushConcurrencyQueue(run) { + if (this.runningCount < this.maxConcurrency) { + run(); + } else { + this.concurrencyQueue.push(run); + } + } + + shiftConcurrencyQueue() { + if (this.runningCount < this.maxConcurrency) { + const fn = this.concurrencyQueue.shift(); + if (fn) { + fn(); + } + } + } +} +exports.default = BlockingQueue; + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.execCommand = exports.execFromManifest = exports.executeLifecycleScript = exports.makeEnv = exports.getWrappersFolder = exports.IGNORE_MANIFEST_KEYS = undefined; + +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(21)); +} + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let getWrappersFolder = exports.getWrappersFolder = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { + if (wrappersFolder) { + return wrappersFolder; + } + + wrappersFolder = yield (_fs || _load_fs()).makeTempDir(); + + yield (0, (_portableScript || _load_portableScript()).makePortableProxyScript)(process.execPath, wrappersFolder, { + proxyBasename: 'node' + }); + + yield (0, (_portableScript || _load_portableScript()).makePortableProxyScript)(process.execPath, wrappersFolder, { + proxyBasename: 'yarn', + prependArguments: [process.argv[1]] + }); + + return wrappersFolder; + }); + + return function getWrappersFolder(_x) { + return _ref.apply(this, arguments); + }; +})(); + +let makeEnv = exports.makeEnv = (() => { + var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (stage, cwd, config) { + const env = (0, (_extends2 || _load_extends()).default)({ + NODE: process.execPath, + INIT_CWD: process.cwd() + }, process.env); + + // Merge in the `env` object specified in .yarnrc + const customEnv = config.getOption('env'); + if (customEnv && typeof customEnv === 'object') { + Object.assign(env, customEnv); + } + + env.npm_lifecycle_event = stage; + env.npm_node_execpath = env.NODE; + env.npm_execpath = env.npm_execpath || process.mainModule && process.mainModule.filename; + + // Set the env to production for npm compat if production mode. + // https://github.com/npm/npm/blob/30d75e738b9cb7a6a3f9b50e971adcbe63458ed3/lib/utils/lifecycle.js#L336 + if (config.production) { + env.NODE_ENV = 'production'; + } + + // Note: npm_config_argv environment variable contains output of nopt - command-line + // parser used by npm. Since we use other parser, we just roughly emulate it's output. (See: #684) + env.npm_config_argv = JSON.stringify({ + remain: [], + cooked: config.commandName === 'run' ? [config.commandName, stage] : [config.commandName], + original: process.argv.slice(2) + }); + + const manifest = yield config.maybeReadManifest(cwd); + if (manifest) { + if (manifest.scripts && Object.prototype.hasOwnProperty.call(manifest.scripts, stage)) { + env.npm_lifecycle_script = manifest.scripts[stage]; + } + + // add npm_package_* + const queue = [['', manifest]]; + while (queue.length) { + var _queue$pop = queue.pop(); + + const key = _queue$pop[0], + val = _queue$pop[1]; + + if (typeof val === 'object') { + for (const subKey in val) { + const fullKey = [key, subKey].filter(Boolean).join('_'); + if (fullKey && fullKey[0] !== '_' && !IGNORE_MANIFEST_KEYS.has(fullKey)) { + queue.push([fullKey, val[subKey]]); + } + } + } else { + let cleanVal = String(val); + if (cleanVal.indexOf('\n') >= 0) { + cleanVal = JSON.stringify(cleanVal); + } + + //replacing invalid chars with underscore + const cleanKey = key.replace(INVALID_CHAR_REGEX, '_'); + + env[`npm_package_${cleanKey}`] = cleanVal; + } + } + } + + // add npm_config_* and npm_package_config_* from yarn config + const keys = new Set([...Object.keys(config.registries.yarn.config), ...Object.keys(config.registries.npm.config)]); + const cleaned = Array.from(keys).filter(function (key) { + return !key.match(/:_/) && IGNORE_CONFIG_KEYS.indexOf(key) === -1; + }).map(function (key) { + let val = config.getOption(key); + if (!val) { + val = ''; + } else if (typeof val === 'number') { + val = '' + val; + } else if (typeof val !== 'string') { + val = JSON.stringify(val); + } + + if (val.indexOf('\n') >= 0) { + val = JSON.stringify(val); + } + return [key, val]; + }); + // add npm_config_* + for (var _iterator = cleaned, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref4; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref4 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref4 = _i.value; + } + + const _ref3 = _ref4; + const key = _ref3[0]; + const val = _ref3[1]; + + const cleanKey = key.replace(/^_+/, ''); + const envKey = `npm_config_${cleanKey}`.replace(INVALID_CHAR_REGEX, '_'); + env[envKey] = val; + } + // add npm_package_config_* + if (manifest && manifest.name) { + const packageConfigPrefix = `${manifest.name}:`; + for (var _iterator2 = cleaned, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref6; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref6 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref6 = _i2.value; + } + + const _ref5 = _ref6; + const key = _ref5[0]; + const val = _ref5[1]; + + if (key.indexOf(packageConfigPrefix) !== 0) { + continue; + } + const cleanKey = key.replace(/^_+/, '').replace(packageConfigPrefix, ''); + const envKey = `npm_package_config_${cleanKey}`.replace(INVALID_CHAR_REGEX, '_'); + env[envKey] = val; + } + } + + // split up the path + const envPath = env[(_constants || _load_constants()).ENV_PATH_KEY]; + const pathParts = envPath ? envPath.split(path.delimiter) : []; + + // Include node-gyp version that was bundled with the current Node.js version, + // if available. + pathParts.unshift(path.join(path.dirname(process.execPath), 'node_modules', 'npm', 'bin', 'node-gyp-bin')); + pathParts.unshift(path.join(path.dirname(process.execPath), '..', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin')); + // Include node-gyp version from homebrew managed npm, if available. + pathParts.unshift(path.join(path.dirname(process.execPath), '..', 'libexec', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin')); + + // Add global bin folder if it is not present already, as some packages depend + // on a globally-installed version of node-gyp. + const globalBin = yield (0, (_global || _load_global()).getBinFolder)(config, {}); + if (pathParts.indexOf(globalBin) === -1) { + pathParts.unshift(globalBin); + } + + // Add node_modules .bin folders to the PATH + for (var _iterator3 = config.registryFolders, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref7; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref7 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref7 = _i3.value; + } + + const registryFolder = _ref7; + + const binFolder = path.join(registryFolder, '.bin'); + if (config.workspacesEnabled && config.workspaceRootFolder) { + pathParts.unshift(path.join(config.workspaceRootFolder, binFolder)); + } + pathParts.unshift(path.join(config.linkFolder, binFolder)); + pathParts.unshift(path.join(cwd, binFolder)); + } + + let pnpFile; + + if (process.versions.pnp) { + pnpFile = (_dynamicRequire || _load_dynamicRequire()).dynamicRequire.resolve('pnpapi'); + } else { + const candidate = `${config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`; + if (yield (_fs || _load_fs()).exists(candidate)) { + pnpFile = candidate; + } + } + + if (pnpFile) { + const pnpApi = (0, (_dynamicRequire || _load_dynamicRequire()).dynamicRequire)(pnpFile); + + const packageLocator = pnpApi.findPackageLocator(`${cwd}/`); + const packageInformation = pnpApi.getPackageInformation(packageLocator); + + for (var _iterator4 = packageInformation.packageDependencies.entries(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref9; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref9 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref9 = _i4.value; + } + + const _ref8 = _ref9; + const name = _ref8[0]; + const reference = _ref8[1]; + + const dependencyInformation = pnpApi.getPackageInformation({ name, reference }); + + if (!dependencyInformation || !dependencyInformation.packageLocation) { + continue; + } + + const binFolder = `${dependencyInformation.packageLocation}/.bin`; + if (yield (_fs || _load_fs()).exists(binFolder)) { + pathParts.unshift(binFolder); + } + } + + // Note that NODE_OPTIONS doesn't support any style of quoting its arguments at the moment + // For this reason, it won't work if the user has a space inside its $PATH + env.NODE_OPTIONS = env.NODE_OPTIONS || ''; + env.NODE_OPTIONS = `--require ${pnpFile} ${env.NODE_OPTIONS}`; + } + + pathParts.unshift((yield getWrappersFolder(config))); + + // join path back together + env[(_constants || _load_constants()).ENV_PATH_KEY] = pathParts.join(path.delimiter); + + return env; + }); + + return function makeEnv(_x2, _x3, _x4) { + return _ref2.apply(this, arguments); + }; +})(); + +let executeLifecycleScript = exports.executeLifecycleScript = (() => { + var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({ + stage, + config, + cwd, + cmd, + isInteractive, + onProgress, + customShell + }) { + const env = yield makeEnv(stage, cwd, config); + + yield checkForGypIfNeeded(config, cmd, env[(_constants || _load_constants()).ENV_PATH_KEY].split(path.delimiter)); + + if (process.platform === 'win32' && (!customShell || customShell === 'cmd')) { + // handle windows run scripts starting with a relative path + cmd = (0, (_fixCmdWinSlashes || _load_fixCmdWinSlashes()).fixCmdWinSlashes)(cmd); + } + + // By default (non-interactive), pipe everything to the terminal and run child process detached + // as long as it's not Windows (since windows does not have /dev/tty) + let stdio = ['ignore', 'pipe', 'pipe']; + let detached = process.platform !== 'win32'; + + if (isInteractive) { + stdio = 'inherit'; + detached = false; + } + + const shell = customShell || true; + const stdout = yield (_child || _load_child()).spawn(cmd, [], { cwd, env, stdio, detached, shell }, onProgress); + + return { cwd, command: cmd, stdout }; + }); + + return function executeLifecycleScript(_x5) { + return _ref10.apply(this, arguments); + }; +})(); + +let _checkForGyp = (() => { + var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, paths) { + const reporter = config.reporter; + + // Check every directory in the PATH + + const allChecks = yield Promise.all(paths.map(function (dir) { + return (_fs || _load_fs()).exists(path.join(dir, 'node-gyp')); + })); + if (allChecks.some(Boolean)) { + // node-gyp is available somewhere + return; + } + + reporter.info(reporter.lang('packageRequiresNodeGyp')); + + try { + yield (0, (_global || _load_global()).run)(config, reporter, {}, ['add', 'node-gyp']); + } catch (e) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('nodeGypAutoInstallFailed', e.message)); + } + }); + + return function _checkForGyp(_x6, _x7) { + return _ref11.apply(this, arguments); + }; +})(); + +let execFromManifest = exports.execFromManifest = (() => { + var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, commandName, cwd) { + const pkg = yield config.maybeReadManifest(cwd); + if (!pkg || !pkg.scripts) { + return; + } + + const cmd = pkg.scripts[commandName]; + if (cmd) { + yield execCommand({ stage: commandName, config, cmd, cwd, isInteractive: true }); + } + }); + + return function execFromManifest(_x8, _x9, _x10) { + return _ref12.apply(this, arguments); + }; +})(); + +let execCommand = exports.execCommand = (() => { + var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({ + stage, + config, + cmd, + cwd, + isInteractive, + customShell + }) { + const reporter = config.reporter; + + try { + reporter.command(cmd); + yield executeLifecycleScript({ stage, config, cwd, cmd, isInteractive, customShell }); + return Promise.resolve(); + } catch (err) { + if (err instanceof (_errors || _load_errors()).ProcessTermError) { + const formattedError = new (_errors || _load_errors()).ProcessTermError(err.EXIT_SIGNAL ? reporter.lang('commandFailedWithSignal', err.EXIT_SIGNAL) : reporter.lang('commandFailedWithCode', err.EXIT_CODE)); + formattedError.EXIT_CODE = err.EXIT_CODE; + formattedError.EXIT_SIGNAL = err.EXIT_SIGNAL; + throw formattedError; + } else { + throw err; + } + } + }); + + return function execCommand(_x11) { + return _ref13.apply(this, arguments); + }; +})(); + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _child; + +function _load_child() { + return _child = _interopRequireWildcard(__webpack_require__(58)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _dynamicRequire; + +function _load_dynamicRequire() { + return _dynamicRequire = __webpack_require__(371); +} + +var _portableScript; + +function _load_portableScript() { + return _portableScript = __webpack_require__(589); +} + +var _fixCmdWinSlashes; + +function _load_fixCmdWinSlashes() { + return _fixCmdWinSlashes = __webpack_require__(578); +} + +var _global; + +function _load_global() { + return _global = __webpack_require__(121); +} + +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 }; } + +const path = __webpack_require__(0); + +const IGNORE_MANIFEST_KEYS = exports.IGNORE_MANIFEST_KEYS = new Set(['readme', 'notice', 'licenseText', 'activationEvents', 'contributes']); + +// We treat these configs as internal, thus not expose them to process.env. +// This helps us avoid some gyp issues when building native modules. +// See https://github.com/yarnpkg/yarn/issues/2286. +const IGNORE_CONFIG_KEYS = ['lastUpdateCheck']; + +let wrappersFolder = null; + +const INVALID_CHAR_REGEX = /\W/g; + +exports.default = executeLifecycleScript; + + +let checkGypPromise = null; +/** + * Special case: Some packages depend on node-gyp, but don't specify this in + * their package.json dependencies. They assume that node-gyp is available + * globally. We need to detect this case and show an error message. + */ +function checkForGypIfNeeded(config, cmd, paths) { + if (cmd.substr(0, cmd.indexOf(' ')) !== 'node-gyp') { + return Promise.resolve(); + } + + // Ensure this only runs once, rather than multiple times in parallel. + if (!checkGypPromise) { + checkGypPromise = _checkForGyp(config, paths); + } + return checkGypPromise; +} + +/***/ }), +/* 112 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + + +/***/ }), +/* 113 */ +/***/ (function(module, exports) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/*! + * micromatch + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + + + +var expand = __webpack_require__(753); +var utils = __webpack_require__(300); + +/** + * The main function. Pass an array of filepaths, + * and a string or array of glob patterns + * + * @param {Array|String} `files` + * @param {Array|String} `patterns` + * @param {Object} `opts` + * @return {Array} Array of matches + */ + +function micromatch(files, patterns, opts) { + if (!files || !patterns) return []; + opts = opts || {}; + + if (typeof opts.cache === 'undefined') { + opts.cache = true; + } + + if (!Array.isArray(patterns)) { + return match(files, patterns, opts); + } + + var len = patterns.length, i = 0; + var omit = [], keep = []; + + while (len--) { + var glob = patterns[i++]; + if (typeof glob === 'string' && glob.charCodeAt(0) === 33 /* ! */) { + omit.push.apply(omit, match(files, glob.slice(1), opts)); + } else { + keep.push.apply(keep, match(files, glob, opts)); + } + } + return utils.diff(keep, omit); +} + +/** + * Return an array of files that match the given glob pattern. + * + * This function is called by the main `micromatch` function If you only + * need to pass a single pattern you might get very minor speed improvements + * using this function. + * + * @param {Array} `files` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Array} + */ + +function match(files, pattern, opts) { + if (utils.typeOf(files) !== 'string' && !Array.isArray(files)) { + throw new Error(msg('match', 'files', 'a string or array')); + } + + files = utils.arrayify(files); + opts = opts || {}; + + var negate = opts.negate || false; + var orig = pattern; + + if (typeof pattern === 'string') { + negate = pattern.charAt(0) === '!'; + if (negate) { + pattern = pattern.slice(1); + } + + // we need to remove the character regardless, + // so the above logic is still needed + if (opts.nonegate === true) { + negate = false; + } + } + + var _isMatch = matcher(pattern, opts); + var len = files.length, i = 0; + var res = []; + + while (i < len) { + var file = files[i++]; + var fp = utils.unixify(file, opts); + + if (!_isMatch(fp)) { continue; } + res.push(fp); + } + + if (res.length === 0) { + if (opts.failglob === true) { + throw new Error('micromatch.match() found no matches for: "' + orig + '".'); + } + + if (opts.nonull || opts.nullglob) { + res.push(utils.unescapeGlob(orig)); + } + } + + // if `negate` was defined, diff negated files + if (negate) { res = utils.diff(files, res); } + + // if `ignore` was defined, diff ignored filed + if (opts.ignore && opts.ignore.length) { + pattern = opts.ignore; + opts = utils.omit(opts, ['ignore']); + res = utils.diff(res, micromatch(res, pattern, opts)); + } + + if (opts.nodupes) { + return utils.unique(res); + } + return res; +} + +/** + * Returns a function that takes a glob pattern or array of glob patterns + * to be used with `Array#filter()`. (Internally this function generates + * the matching function using the [matcher] method). + * + * ```js + * var fn = mm.filter('[a-c]'); + * ['a', 'b', 'c', 'd', 'e'].filter(fn); + * //=> ['a', 'b', 'c'] + * ``` + * @param {String|Array} `patterns` Can be a glob or array of globs. + * @param {Options} `opts` Options to pass to the [matcher] method. + * @return {Function} Filter function to be passed to `Array#filter()`. + */ + +function filter(patterns, opts) { + if (!Array.isArray(patterns) && typeof patterns !== 'string') { + throw new TypeError(msg('filter', 'patterns', 'a string or array')); + } + + patterns = utils.arrayify(patterns); + var len = patterns.length, i = 0; + var patternMatchers = Array(len); + while (i < len) { + patternMatchers[i] = matcher(patterns[i++], opts); + } + + return function(fp) { + if (fp == null) return []; + var len = patternMatchers.length, i = 0; + var res = true; + + fp = utils.unixify(fp, opts); + while (i < len) { + var fn = patternMatchers[i++]; + if (!fn(fp)) { + res = false; + break; + } + } + return res; + }; +} + +/** + * Returns true if the filepath contains the given + * pattern. Can also return a function for matching. + * + * ```js + * isMatch('foo.md', '*.md', {}); + * //=> true + * + * isMatch('*.md', {})('foo.md') + * //=> true + * ``` + * @param {String} `fp` + * @param {String} `pattern` + * @param {Object} `opts` + * @return {Boolean} + */ + +function isMatch(fp, pattern, opts) { + if (typeof fp !== 'string') { + throw new TypeError(msg('isMatch', 'filepath', 'a string')); + } + + fp = utils.unixify(fp, opts); + if (utils.typeOf(pattern) === 'object') { + return matcher(fp, pattern); + } + return matcher(pattern, opts)(fp); +} + +/** + * Returns true if the filepath matches the + * given pattern. + */ + +function contains(fp, pattern, opts) { + if (typeof fp !== 'string') { + throw new TypeError(msg('contains', 'pattern', 'a string')); + } + + opts = opts || {}; + opts.contains = (pattern !== ''); + fp = utils.unixify(fp, opts); + + if (opts.contains && !utils.isGlob(pattern)) { + return fp.indexOf(pattern) !== -1; + } + return matcher(pattern, opts)(fp); +} + +/** + * Returns true if a file path matches any of the + * given patterns. + * + * @param {String} `fp` The filepath to test. + * @param {String|Array} `patterns` Glob patterns to use. + * @param {Object} `opts` Options to pass to the `matcher()` function. + * @return {String} + */ + +function any(fp, patterns, opts) { + if (!Array.isArray(patterns) && typeof patterns !== 'string') { + throw new TypeError(msg('any', 'patterns', 'a string or array')); + } + + patterns = utils.arrayify(patterns); + var len = patterns.length; + + fp = utils.unixify(fp, opts); + while (len--) { + var isMatch = matcher(patterns[len], opts); + if (isMatch(fp)) { + return true; + } + } + return false; +} + +/** + * Filter the keys of an object with the given `glob` pattern + * and `options` + * + * @param {Object} `object` + * @param {Pattern} `object` + * @return {Array} + */ + +function matchKeys(obj, glob, options) { + if (utils.typeOf(obj) !== 'object') { + throw new TypeError(msg('matchKeys', 'first argument', 'an object')); + } + + var fn = matcher(glob, options); + var res = {}; + + for (var key in obj) { + if (obj.hasOwnProperty(key) && fn(key)) { + res[key] = obj[key]; + } + } + return res; +} + +/** + * Return a function for matching based on the + * given `pattern` and `options`. + * + * @param {String} `pattern` + * @param {Object} `options` + * @return {Function} + */ + +function matcher(pattern, opts) { + // pattern is a function + if (typeof pattern === 'function') { + return pattern; + } + // pattern is a regex + if (pattern instanceof RegExp) { + return function(fp) { + return pattern.test(fp); + }; + } + + if (typeof pattern !== 'string') { + throw new TypeError(msg('matcher', 'pattern', 'a string, regex, or function')); + } + + // strings, all the way down... + pattern = utils.unixify(pattern, opts); + + // pattern is a non-glob string + if (!utils.isGlob(pattern)) { + return utils.matchPath(pattern, opts); + } + // pattern is a glob string + var re = makeRe(pattern, opts); + + // `matchBase` is defined + if (opts && opts.matchBase) { + return utils.hasFilename(re, opts); + } + // `matchBase` is not defined + return function(fp) { + fp = utils.unixify(fp, opts); + return re.test(fp); + }; +} + +/** + * Create and cache a regular expression for matching + * file paths. + * + * If the leading character in the `glob` is `!`, a negation + * regex is returned. + * + * @param {String} `glob` + * @param {Object} `options` + * @return {RegExp} + */ + +function toRegex(glob, options) { + // clone options to prevent mutating the original object + var opts = Object.create(options || {}); + var flags = opts.flags || ''; + if (opts.nocase && flags.indexOf('i') === -1) { + flags += 'i'; + } + + var parsed = expand(glob, opts); + + // pass in tokens to avoid parsing more than once + opts.negated = opts.negated || parsed.negated; + opts.negate = opts.negated; + glob = wrapGlob(parsed.pattern, opts); + var re; + + try { + re = new RegExp(glob, flags); + return re; + } catch (err) { + err.reason = 'micromatch invalid regex: (' + re + ')'; + if (opts.strict) throw new SyntaxError(err); + } + + // we're only here if a bad pattern was used and the user + // passed `options.silent`, so match nothing + return /$^/; +} + +/** + * Create the regex to do the matching. If the leading + * character in the `glob` is `!` a negation regex is returned. + * + * @param {String} `glob` + * @param {Boolean} `negate` + */ + +function wrapGlob(glob, opts) { + var prefix = (opts && !opts.contains) ? '^' : ''; + var after = (opts && !opts.contains) ? '$' : ''; + glob = ('(?:' + glob + ')' + after); + if (opts && opts.negate) { + return prefix + ('(?!^' + glob + ').*$'); + } + return prefix + glob; +} + +/** + * Create and cache a regular expression for matching file paths. + * If the leading character in the `glob` is `!`, a negation + * regex is returned. + * + * @param {String} `glob` + * @param {Object} `options` + * @return {RegExp} + */ + +function makeRe(glob, opts) { + if (utils.typeOf(glob) !== 'string') { + throw new Error(msg('makeRe', 'glob', 'a string')); + } + return utils.cache(toRegex, glob, opts); +} + +/** + * Make error messages consistent. Follows this format: + * + * ```js + * msg(methodName, argNumber, nativeType); + * // example: + * msg('matchKeys', 'first', 'an object'); + * ``` + * + * @param {String} `method` + * @param {String} `num` + * @param {String} `type` + * @return {String} + */ + +function msg(method, what, type) { + return 'micromatch.' + method + '(): ' + what + ' should be ' + type + '.'; +} + +/** + * Public methods + */ + +/* eslint no-multi-spaces: 0 */ +micromatch.any = any; +micromatch.braces = micromatch.braceExpand = utils.braces; +micromatch.contains = contains; +micromatch.expand = expand; +micromatch.filter = filter; +micromatch.isMatch = isMatch; +micromatch.makeRe = makeRe; +micromatch.match = match; +micromatch.matcher = matcher; +micromatch.matchKeys = matchKeys; + +/** + * Expose `micromatch` + */ + +module.exports = micromatch; + + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/**/ + +var pna = __webpack_require__(180); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = __webpack_require__(113); +util.inherits = __webpack_require__(61); +/**/ + +var Readable = __webpack_require__(406); +var Writable = __webpack_require__(408); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; + +/***/ }), +/* 116 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = multicast; +/* unused harmony export MulticastOperator */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_ConnectableObservable__ = __webpack_require__(423); +/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ + +function multicast(subjectOrSubjectFactory, selector) { + return function multicastOperatorFunction(source) { + var subjectFactory; + if (typeof subjectOrSubjectFactory === 'function') { + subjectFactory = subjectOrSubjectFactory; + } + else { + subjectFactory = function subjectFactory() { + return subjectOrSubjectFactory; + }; + } + if (typeof selector === 'function') { + return source.lift(new MulticastOperator(subjectFactory, selector)); + } + var connectable = Object.create(source, __WEBPACK_IMPORTED_MODULE_0__observable_ConnectableObservable__["b" /* connectableObservableDescriptor */]); + connectable.source = source; + connectable.subjectFactory = subjectFactory; + return connectable; + }; +} +var MulticastOperator = /*@__PURE__*/ (function () { + function MulticastOperator(subjectFactory, selector) { + this.subjectFactory = subjectFactory; + this.selector = selector; + } + MulticastOperator.prototype.call = function (subscriber, source) { + var selector = this.selector; + var subject = this.subjectFactory(); + var subscription = selector(subject).subscribe(subscriber); + subscription.add(source.subscribe(subject)); + return subscription; + }; + return MulticastOperator; +}()); + +//# sourceMappingURL=multicast.js.map + + +/***/ }), +/* 117 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observable; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var observable = typeof Symbol === 'function' && Symbol.observable || '@@observable'; +//# sourceMappingURL=observable.js.map + + +/***/ }), +/* 118 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = identity; +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function identity(x) { + return x; +} +//# sourceMappingURL=identity.js.map + + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +var v1 = __webpack_require__(957); +var v4 = __webpack_require__(958); + +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; + +module.exports = uuid; + + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getInstallationMethod = exports.version = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let getInstallationMethod = exports.getInstallationMethod = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let installationMethod = originalInstallationMethod; + + // If there's a package.json in the parent directory, it could have an + // override for the installation method, so we should prefer that over + // whatever was originally in Yarn's package.json. This is the case with + // systems such as Homebrew, which take the tarball and modify the + // installation method so we're aware of the fact that Yarn was installed via + // Homebrew (so things like update notifications can point out the correct + // command to upgrade). + try { + const manifestPath = (_path || _load_path()).default.join(__dirname, '..', 'package.json'); + if ((_fs2 || _load_fs2()).default.existsSync(manifestPath)) { + // non-async version is deprecated + const manifest = yield (0, (_fs || _load_fs()).readJson)(manifestPath); + if (manifest.installationMethod) { + installationMethod = manifest.installationMethod; + } + } + } catch (e) { + // Ignore any errors; this is not critical functionality. + } + return installationMethod; + }); + + return function getInstallationMethod() { + return _ref.apply(this, arguments); + }; +})(); + +var _fs; + +function _load_fs() { + return _fs = __webpack_require__(4); +} + +var _fs2; + +function _load_fs2() { + return _fs2 = _interopRequireDefault(__webpack_require__(5)); +} + +var _path; + +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// This will be bundled directly in the .js file for production builds +var _require = __webpack_require__(194); /** + * Determines the current version of Yarn itself. + * + */ + +const version = _require.version, + originalInstallationMethod = _require.installationMethod; +exports.version = version; + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.run = exports.getBinFolder = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let updateCwd = (() => { + var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { + yield (_fs || _load_fs()).mkdirp(config.globalFolder); + + yield config.init({ + cwd: config.globalFolder, + offline: config.offline, + binLinks: true, + globalFolder: config.globalFolder, + cacheFolder: config._cacheRootFolder, + linkFolder: config.linkFolder, + enableDefaultRc: config.enableDefaultRc, + extraneousYarnrcFiles: config.extraneousYarnrcFiles + }); + }); + + return function updateCwd(_x) { + return _ref2.apply(this, arguments); + }; +})(); + +let getBins = (() => { + var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { + // build up list of registry folders to search for binaries + const dirs = []; + for (var _iterator2 = Object.keys((_index || _load_index()).registries), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref4; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref4 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref4 = _i2.value; + } + + const registryName = _ref4; + + const registry = config.registries[registryName]; + dirs.push(registry.loc); + } + + // build up list of binary files + const paths = new Set(); + for (var _iterator3 = dirs, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref5; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref5 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref5 = _i3.value; + } + + const dir = _ref5; + + const binDir = path.join(dir, '.bin'); + if (!(yield (_fs || _load_fs()).exists(binDir))) { + continue; + } + + for (var _iterator4 = yield (_fs || _load_fs()).readdir(binDir), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref6; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref6 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref6 = _i4.value; + } + + const name = _ref6; + + paths.add(path.join(binDir, name)); + } + } + return paths; + }); + + return function getBins(_x2) { + return _ref3.apply(this, arguments); + }; +})(); + +let getGlobalPrefix = (() => { + var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) { + if (flags.prefix) { + return flags.prefix; + } else if (config.getOption('prefix', true)) { + return String(config.getOption('prefix', true)); + } else if (process.env.PREFIX) { + return process.env.PREFIX; + } + + const potentialPrefixFolders = [(_constants || _load_constants()).FALLBACK_GLOBAL_PREFIX]; + if (process.platform === 'win32') { + // %LOCALAPPDATA%\Yarn --> C:\Users\Alice\AppData\Local\Yarn + if (process.env.LOCALAPPDATA) { + potentialPrefixFolders.unshift(path.join(process.env.LOCALAPPDATA, 'Yarn')); + } + } else { + potentialPrefixFolders.unshift((_constants || _load_constants()).POSIX_GLOBAL_PREFIX); + } + + const binFolders = potentialPrefixFolders.map(function (prefix) { + return path.join(prefix, 'bin'); + }); + const prefixFolderQueryResult = yield (_fs || _load_fs()).getFirstSuitableFolder(binFolders); + const prefix = prefixFolderQueryResult.folder && path.dirname(prefixFolderQueryResult.folder); + + if (!prefix) { + config.reporter.warn(config.reporter.lang('noGlobalFolder', prefixFolderQueryResult.skipped.map(function (item) { + return path.dirname(item.folder); + }).join(', '))); + + return (_constants || _load_constants()).FALLBACK_GLOBAL_PREFIX; + } + + return prefix; + }); + + return function getGlobalPrefix(_x3, _x4) { + return _ref7.apply(this, arguments); + }; +})(); + +let getBinFolder = exports.getBinFolder = (() => { + var _ref8 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) { + const prefix = yield getGlobalPrefix(config, flags); + return path.resolve(prefix, 'bin'); + }); + + return function getBinFolder(_x5, _x6) { + return _ref8.apply(this, arguments); + }; +})(); + +let initUpdateBins = (() => { + var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags) { + const beforeBins = yield getBins(config); + const binFolder = yield getBinFolder(config, flags); + + function throwPermError(err, dest) { + if (err.code === 'EACCES') { + throw new (_errors || _load_errors()).MessageError(reporter.lang('noPermission', dest)); + } else { + throw err; + } + } + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + try { + yield (_fs || _load_fs()).mkdirp(binFolder); + } catch (err) { + throwPermError(err, binFolder); + } + + const afterBins = yield getBins(config); + + // remove old bins + for (var _iterator5 = beforeBins, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref11; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref11 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref11 = _i5.value; + } + + const src = _ref11; + + if (afterBins.has(src)) { + // not old + continue; + } + + // remove old bin + const dest = path.join(binFolder, path.basename(src)); + try { + yield (_fs || _load_fs()).unlink(dest); + } catch (err) { + throwPermError(err, dest); + } + } + + // add new bins + for (var _iterator6 = afterBins, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref12; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref12 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref12 = _i6.value; + } + + const src = _ref12; + + // insert new bin + const dest = path.join(binFolder, path.basename(src)); + try { + yield (_fs || _load_fs()).unlink(dest); + yield (0, (_packageLinker || _load_packageLinker()).linkBin)(src, dest); + if (process.platform === 'win32' && dest.indexOf('.cmd') !== -1) { + yield (_fs || _load_fs()).rename(dest + '.cmd', dest); + } + } catch (err) { + throwPermError(err, dest); + } + } + }); + }); + + return function initUpdateBins(_x7, _x8, _x9) { + return _ref9.apply(this, arguments); + }; +})(); + +let list = (() => { + var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { + yield updateCwd(config); + + // install so we get hard file paths + const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd); + const install = new (_install || _load_install()).Install({}, config, new (_baseReporter || _load_baseReporter()).default(), lockfile); + const patterns = yield install.getFlattenedDeps(); + + // dump global modules + for (var _iterator7 = patterns, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref14; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref14 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref14 = _i7.value; + } + + const pattern = _ref14; + + const manifest = install.resolver.getStrictResolvedPattern(pattern); + ls(manifest, reporter, false); + } + }); + + return function list(_x10, _x11, _x12, _x13) { + return _ref13.apply(this, arguments); + }; +})(); + +exports.hasWrapper = hasWrapper; +exports.setFlags = setFlags; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _index; + +function _load_index() { + return _index = __webpack_require__(57); +} + +var _baseReporter; + +function _load_baseReporter() { + return _baseReporter = _interopRequireDefault(__webpack_require__(108)); +} + +var _buildSubCommands2; + +function _load_buildSubCommands() { + return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59)); +} + +var _lockfile; + +function _load_lockfile() { + return _lockfile = _interopRequireDefault(__webpack_require__(19)); +} + +var _install; + +function _load_install() { + return _install = __webpack_require__(34); +} + +var _add; + +function _load_add() { + return _add = __webpack_require__(165); +} + +var _remove; + +function _load_remove() { + return _remove = __webpack_require__(359); +} + +var _upgrade; + +function _load_upgrade() { + return _upgrade = __webpack_require__(207); +} + +var _upgradeInteractive; + +function _load_upgradeInteractive() { + return _upgradeInteractive = __webpack_require__(362); +} + +var _packageLinker; + +function _load_packageLinker() { + return _packageLinker = __webpack_require__(211); +} + +var _constants; + +function _load_constants() { + return _constants = __webpack_require__(8); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +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 }; } + +class GlobalAdd extends (_add || _load_add()).Add { + constructor(args, flags, config, reporter, lockfile) { + super(args, flags, config, reporter, lockfile); + + this.linker.setTopLevelBinLinking(false); + } + + maybeOutputSaveTree() { + for (var _iterator = this.addedPatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const pattern = _ref; + + const manifest = this.resolver.getStrictResolvedPattern(pattern); + ls(manifest, this.reporter, true); + } + return Promise.resolve(); + } + + _logSuccessSaveLockfile() { + // noop + } +} + +const path = __webpack_require__(0); + +function hasWrapper(flags, args) { + return args[0] !== 'bin' && args[0] !== 'dir'; +} + +function ls(manifest, reporter, saved) { + const bins = manifest.bin ? Object.keys(manifest.bin) : []; + const human = `${manifest.name}@${manifest.version}`; + if (bins.length) { + if (saved) { + reporter.success(reporter.lang('packageInstalledWithBinaries', human)); + } else { + reporter.info(reporter.lang('packageHasBinaries', human)); + } + reporter.list(`bins-${manifest.name}`, bins); + } else if (saved) { + reporter.warn(reporter.lang('packageHasNoBinaries', human)); + } +} + +var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('global', { + add(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield updateCwd(config); + + const updateBins = yield initUpdateBins(config, reporter, flags); + if (args.indexOf('yarn') !== -1) { + reporter.warn(reporter.lang('packageContainsYarnAsGlobal')); + } + + // install module + const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd); + const install = new GlobalAdd(args, flags, config, reporter, lockfile); + yield install.init(); + + // link binaries + yield updateBins(); + })(); + }, + + bin(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + reporter.log((yield getBinFolder(config, flags)), { force: true }); + })(); + }, + + dir(config, reporter, flags, args) { + reporter.log(config.globalFolder, { force: true }); + return Promise.resolve(); + }, + + ls(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + reporter.warn(`\`yarn global ls\` is deprecated. Please use \`yarn global list\`.`); + yield list(config, reporter, flags, args); + })(); + }, + + list(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield list(config, reporter, flags, args); + })(); + }, + + remove(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield updateCwd(config); + + const updateBins = yield initUpdateBins(config, reporter, flags); + + // remove module + yield (0, (_remove || _load_remove()).run)(config, reporter, flags, args); + + // remove binaries + yield updateBins(); + })(); + }, + + upgrade(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield updateCwd(config); + + const updateBins = yield initUpdateBins(config, reporter, flags); + + // upgrade module + yield (0, (_upgrade || _load_upgrade()).run)(config, reporter, flags, args); + + // update binaries + yield updateBins(); + })(); + }, + + upgradeInteractive(config, reporter, flags, args) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield updateCwd(config); + + const updateBins = yield initUpdateBins(config, reporter, flags); + + // upgrade module + yield (0, (_upgradeInteractive || _load_upgradeInteractive()).run)(config, reporter, flags, args); + + // update binaries + yield updateBins(); + })(); + } +}); + +const run = _buildSubCommands.run, + _setFlags = _buildSubCommands.setFlags; +exports.run = run; +function setFlags(commander) { + _setFlags(commander); + commander.description('Installs packages globally on your operating system.'); + commander.option('--prefix ', 'bin prefix to use to install binaries'); + commander.option('--latest', 'upgrade to the latest version of packages'); +} + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _path; + +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} + +var _invariant; + +function _load_invariant() { + return _invariant = _interopRequireDefault(__webpack_require__(9)); +} + +var _semver; + +function _load_semver() { + return _semver = _interopRequireDefault(__webpack_require__(22)); +} + +var _validate; + +function _load_validate() { + return _validate = __webpack_require__(125); +} + +var _lockfile; + +function _load_lockfile() { + return _lockfile = _interopRequireDefault(__webpack_require__(19)); +} + +var _packageReference; + +function _load_packageReference() { + return _packageReference = _interopRequireDefault(__webpack_require__(365)); +} + +var _index; + +function _load_index() { + return _index = __webpack_require__(78); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _version; + +function _load_version() { + return _version = _interopRequireWildcard(__webpack_require__(226)); +} + +var _workspaceResolver; + +function _load_workspaceResolver() { + return _workspaceResolver = _interopRequireDefault(__webpack_require__(570)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _normalizePattern4; + +function _load_normalizePattern() { + return _normalizePattern4 = __webpack_require__(37); +} + +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 }; } + +const micromatch = __webpack_require__(114); + +class PackageRequest { + constructor(req, resolver) { + this.parentRequest = req.parentRequest; + this.parentNames = req.parentNames || []; + this.lockfile = resolver.lockfile; + this.registry = req.registry; + this.reporter = resolver.reporter; + this.resolver = resolver; + this.optional = req.optional; + this.hint = req.hint; + this.pattern = req.pattern; + this.config = resolver.config; + this.foundInfo = null; + } + + init() { + this.resolver.usedRegistries.add(this.registry); + } + + getLocked(remoteType) { + // always prioritise root lockfile + const shrunk = this.lockfile.getLocked(this.pattern); + + if (shrunk && shrunk.resolved) { + const resolvedParts = (_version || _load_version()).explodeHashedUrl(shrunk.resolved); + + // Detect Git protocols (git://HOST/PATH or git+PROTOCOL://HOST/PATH) + const preferredRemoteType = /^git(\+[a-z0-9]+)?:\/\//.test(resolvedParts.url) ? 'git' : remoteType; + + return { + name: shrunk.name, + version: shrunk.version, + _uid: shrunk.uid, + _remote: { + resolved: shrunk.resolved, + type: preferredRemoteType, + reference: resolvedParts.url, + hash: resolvedParts.hash, + integrity: shrunk.integrity, + registry: shrunk.registry, + packageName: shrunk.name + }, + optionalDependencies: shrunk.optionalDependencies || {}, + dependencies: shrunk.dependencies || {}, + prebuiltVariants: shrunk.prebuiltVariants || {} + }; + } else { + return null; + } + } + + /** + * If the input pattern matches a registry one then attempt to find it on the registry. + * Otherwise fork off to an exotic resolver if one matches. + */ + + findVersionOnRegistry(pattern) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + var _ref = yield _this.normalize(pattern); + + const range = _ref.range, + name = _ref.name; + + + const exoticResolver = (0, (_index || _load_index()).getExoticResolver)(range); + if (exoticResolver) { + let data = yield _this.findExoticVersionInfo(exoticResolver, range); + + // clone data as we're manipulating it in place and this could be resolved multiple + // times + data = Object.assign({}, data); + + // this is so the returned package response uses the overridden name. ie. if the + // package's actual name is `bar`, but it's been specified in the manifest like: + // "foo": "http://foo.com/bar.tar.gz" + // then we use the foo name + data.name = name; + return data; + } + + const Resolver = _this.getRegistryResolver(); + const resolver = new Resolver(_this, name, range); + try { + return yield resolver.resolve(); + } catch (err) { + // if it is not an error thrown by yarn and it has a parent request, + // thow a more readable error + if (!(err instanceof (_errors || _load_errors()).MessageError) && _this.parentRequest && _this.parentRequest.pattern) { + throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('requiredPackageNotFoundRegistry', pattern, _this.parentRequest.pattern, _this.registry)); + } + throw err; + } + })(); + } + + /** + * Get the registry resolver associated with this package request. + */ + + getRegistryResolver() { + const Resolver = (_index || _load_index()).registries[this.registry]; + if (Resolver) { + return Resolver; + } else { + throw new (_errors || _load_errors()).MessageError(this.reporter.lang('unknownRegistryResolver', this.registry)); + } + } + + normalizeRange(pattern) { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (pattern.indexOf(':') > -1 || pattern.indexOf('@') > -1 || (0, (_index || _load_index()).getExoticResolver)(pattern)) { + return pattern; + } + + if (!(_semver || _load_semver()).default.validRange(pattern)) { + try { + if (yield (_fs || _load_fs()).exists((_path || _load_path()).default.join(_this2.config.cwd, pattern, (_constants || _load_constants()).NODE_PACKAGE_JSON))) { + _this2.reporter.warn(_this2.reporter.lang('implicitFileDeprecated', pattern)); + return `file:${pattern}`; + } + } catch (err) { + // pass + } + } + + return pattern; + })(); + } + + normalize(pattern) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + var _normalizePattern = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern); + + const name = _normalizePattern.name, + range = _normalizePattern.range, + hasVersion = _normalizePattern.hasVersion; + + const newRange = yield _this3.normalizeRange(range); + return { name, range: newRange, hasVersion }; + })(); + } + + /** + * Construct an exotic resolver instance with the input `ExoticResolver` and `range`. + */ + + findExoticVersionInfo(ExoticResolver, range) { + const resolver = new ExoticResolver(this, range); + return resolver.resolve(); + } + + /** + * If the current pattern matches an exotic resolver then delegate to it or else try + * the registry. + */ + + findVersionInfo() { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const exoticResolver = (0, (_index || _load_index()).getExoticResolver)(_this4.pattern); + if (exoticResolver) { + return _this4.findExoticVersionInfo(exoticResolver, _this4.pattern); + } else if ((_workspaceResolver || _load_workspaceResolver()).default.isWorkspace(_this4.pattern, _this4.resolver.workspaceLayout)) { + (0, (_invariant || _load_invariant()).default)(_this4.resolver.workspaceLayout, 'expected workspaceLayout'); + const resolver = new (_workspaceResolver || _load_workspaceResolver()).default(_this4, _this4.pattern, _this4.resolver.workspaceLayout); + let manifest; + if (_this4.config.focus && !_this4.pattern.includes(_this4.resolver.workspaceLayout.virtualManifestName) && !_this4.pattern.startsWith(_this4.config.focusedWorkspaceName + '@')) { + const localInfo = _this4.resolver.workspaceLayout.getManifestByPattern(_this4.pattern); + (0, (_invariant || _load_invariant()).default)(localInfo, 'expected local info for ' + _this4.pattern); + const localManifest = localInfo.manifest; + const requestPattern = localManifest.name + '@' + localManifest.version; + manifest = yield _this4.findVersionOnRegistry(requestPattern); + } + return resolver.resolve(manifest); + } else { + return _this4.findVersionOnRegistry(_this4.pattern); + } + })(); + } + + reportResolvedRangeMatch(info, resolved) {} + + /** + * Do the final resolve of a package that had a match with an existing version. + * After all unique versions have been discovered, so the best available version + * is found. + */ + resolveToExistingVersion(info) { + // get final resolved version + var _normalizePattern2 = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(this.pattern); + + const range = _normalizePattern2.range, + name = _normalizePattern2.name; + + const solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range; + const resolved = this.resolver.getHighestRangeVersionMatch(name, solvedRange, info); + (0, (_invariant || _load_invariant()).default)(resolved, 'should have a resolved reference'); + + this.reportResolvedRangeMatch(info, resolved); + const ref = resolved._reference; + (0, (_invariant || _load_invariant()).default)(ref, 'Resolved package info has no package reference'); + ref.addRequest(this); + ref.addPattern(this.pattern, resolved); + ref.addOptional(this.optional); + } + + /** + * TODO description + */ + find({ fresh, frozen }) { + var _this5 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // find version info for this package pattern + const info = yield _this5.findVersionInfo(); + + if (!(_semver || _load_semver()).default.valid(info.version)) { + throw new (_errors || _load_errors()).MessageError(_this5.reporter.lang('invalidPackageVersion', info.name, info.version)); + } + + info.fresh = fresh; + (0, (_validate || _load_validate()).cleanDependencies)(info, false, _this5.reporter, function () { + // swallow warnings + }); + + // check if while we were resolving this dep we've already resolved one that satisfies + // the same range + + var _normalizePattern3 = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(_this5.pattern); + + const range = _normalizePattern3.range, + name = _normalizePattern3.name; + + const solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range; + const resolved = !info.fresh || frozen ? _this5.resolver.getExactVersionMatch(name, solvedRange, info) : _this5.resolver.getHighestRangeVersionMatch(name, solvedRange, info); + + if (resolved) { + _this5.resolver.reportPackageWithExistingVersion(_this5, info); + return; + } + + if (info.flat && !_this5.resolver.flat) { + throw new (_errors || _load_errors()).MessageError(_this5.reporter.lang('flatGlobalError', `${info.name}@${info.version}`)); + } + + // validate version info + PackageRequest.validateVersionInfo(info, _this5.reporter); + + // + const remote = info._remote; + (0, (_invariant || _load_invariant()).default)(remote, 'Missing remote'); + + // set package reference + const ref = new (_packageReference || _load_packageReference()).default(_this5, info, remote); + ref.addPattern(_this5.pattern, info); + ref.addOptional(_this5.optional); + ref.setFresh(fresh); + info._reference = ref; + info._remote = remote; + // start installation of dependencies + const promises = []; + const deps = []; + const parentNames = [..._this5.parentNames, name]; + // normal deps + for (const depName in info.dependencies) { + const depPattern = depName + '@' + info.dependencies[depName]; + deps.push(depPattern); + promises.push(_this5.resolver.find({ + pattern: depPattern, + registry: remote.registry, + // dependencies of optional dependencies should themselves be optional + optional: _this5.optional, + parentRequest: _this5, + parentNames + })); + } + + // optional deps + for (const depName in info.optionalDependencies) { + const depPattern = depName + '@' + info.optionalDependencies[depName]; + deps.push(depPattern); + promises.push(_this5.resolver.find({ + hint: 'optional', + pattern: depPattern, + registry: remote.registry, + optional: true, + parentRequest: _this5, + parentNames + })); + } + if (remote.type === 'workspace' && !_this5.config.production) { + // workspaces support dev dependencies + for (const depName in info.devDependencies) { + const depPattern = depName + '@' + info.devDependencies[depName]; + deps.push(depPattern); + promises.push(_this5.resolver.find({ + hint: 'dev', + pattern: depPattern, + registry: remote.registry, + optional: false, + parentRequest: _this5, + parentNames + })); + } + } + + for (var _iterator = promises, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref2; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref2 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref2 = _i.value; + } + + const promise = _ref2; + + yield promise; + } + + ref.addDependencies(deps); + + // Now that we have all dependencies, it's safe to propagate optional + for (var _iterator2 = ref.requests.slice(1), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref3; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + + const otherRequest = _ref3; + + ref.addOptional(otherRequest.optional); + } + })(); + } + + /** + * TODO description + */ + + static validateVersionInfo(info, reporter) { + // human readable name to use in errors + const human = `${info.name}@${info.version}`; + + info.version = PackageRequest.getPackageVersion(info); + + for (var _iterator3 = (_constants || _load_constants()).REQUIRED_PACKAGE_KEYS, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + const key = _ref4; + + if (!info[key]) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('missingRequiredPackageKey', human, key)); + } + } + } + + /** + * Returns the package version if present, else defaults to the uid + */ + + static getPackageVersion(info) { + // TODO possibly reconsider this behaviour + return info.version === undefined ? info._uid : info.version; + } + + /** + * Gets all of the outdated packages and sorts them appropriately + */ + + static getOutdatedPackages(lockfile, install, config, reporter, filterByPatterns, flags) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + var _ref5 = yield install.fetchRequestFromCwd(); + + const reqPatterns = _ref5.requests, + workspaceLayout = _ref5.workspaceLayout; + + // Filter out workspace patterns if necessary + + let depReqPatterns = workspaceLayout ? reqPatterns.filter(function (p) { + return !workspaceLayout.getManifestByPattern(p.pattern); + }) : reqPatterns; + + // filter the list down to just the packages requested. + // prevents us from having to query the metadata for all packages. + if (filterByPatterns && filterByPatterns.length || flags && flags.pattern) { + const filterByNames = filterByPatterns && filterByPatterns.length ? filterByPatterns.map(function (pattern) { + return (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern).name; + }) : []; + depReqPatterns = depReqPatterns.filter(function (dep) { + return filterByNames.indexOf((0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(dep.pattern).name) >= 0 || flags && flags.pattern && micromatch.contains((0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(dep.pattern).name, flags.pattern); + }); + } + + const deps = yield Promise.all(depReqPatterns.map((() => { + var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({ pattern, hint, workspaceName, workspaceLoc }) { + const locked = lockfile.getLocked(pattern); + if (!locked) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('lockfileOutdated')); + } + + const name = locked.name, + current = locked.version; + + let latest = ''; + let wanted = ''; + let url = ''; + + const normalized = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern); + + if ((0, (_index || _load_index()).getExoticResolver)(pattern) || (0, (_index || _load_index()).getExoticResolver)(normalized.range)) { + latest = wanted = 'exotic'; + url = normalized.range; + } else { + const registry = config.registries[locked.registry]; + + var _ref7 = yield registry.checkOutdated(config, name, normalized.range); + + latest = _ref7.latest; + wanted = _ref7.wanted; + url = _ref7.url; + } + + return { + name, + current, + wanted, + latest, + url, + hint, + range: normalized.range, + upgradeTo: '', + workspaceName: workspaceName || '', + workspaceLoc: workspaceLoc || '' + }; + }); + + return function (_x) { + return _ref6.apply(this, arguments); + }; + })())); + + // Make sure to always output `exotic` versions to be compatible with npm + const isDepOld = function isDepOld({ current, latest, wanted }) { + return latest === 'exotic' || (_semver || _load_semver()).default.lt(current, wanted) || (_semver || _load_semver()).default.lt(current, latest); + }; + const orderByName = function orderByName(depA, depB) { + return depA.name.localeCompare(depB.name); + }; + return deps.filter(isDepOld).sort(orderByName); + })(); + } +} +exports.default = PackageRequest; + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +class BaseResolver { + constructor(request, fragment) { + this.resolver = request.resolver; + this.reporter = request.reporter; + this.fragment = fragment; + this.registry = request.registry; + this.request = request; + this.pattern = request.pattern; + this.config = request.config; + } + + fork(Resolver, resolveArg, ...args) { + const resolver = new Resolver(this.request, ...args); + resolver.registry = this.registry; + return resolver.resolve(resolveArg); + } + + resolve(resolveArg) { + throw new Error('Not implemented'); + } +} +exports.default = BaseResolver; + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _index; + +function _load_index() { + return _index = __webpack_require__(78); +} + +var _misc; + +function _load_misc() { + return _misc = _interopRequireWildcard(__webpack_require__(18)); +} + +var _version; + +function _load_version() { + return _version = _interopRequireWildcard(__webpack_require__(226)); +} + +var _guessName; + +function _load_guessName() { + return _guessName = _interopRequireDefault(__webpack_require__(169)); +} + +var _index2; + +function _load_index2() { + return _index2 = __webpack_require__(57); +} + +var _exoticResolver; + +function _load_exoticResolver() { + return _exoticResolver = _interopRequireDefault(__webpack_require__(89)); +} + +var _git; + +function _load_git() { + return _git = _interopRequireDefault(__webpack_require__(219)); +} + +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 }; } + +const urlParse = __webpack_require__(24).parse; + +const GIT_HOSTS = ['github.com', 'gitlab.com', 'bitbucket.com', 'bitbucket.org']; + +const GIT_PATTERN_MATCHERS = [/^git:/, /^git\+.+:/, /^ssh:/, /^https?:.+\.git$/, /^https?:.+\.git#.+/]; + +class GitResolver extends (_exoticResolver || _load_exoticResolver()).default { + constructor(request, fragment) { + super(request, fragment); + + var _versionUtil$explodeH = (_version || _load_version()).explodeHashedUrl(fragment); + + const url = _versionUtil$explodeH.url, + hash = _versionUtil$explodeH.hash; + + this.url = url; + this.hash = hash; + } + + static isVersion(pattern) { + for (var _iterator = GIT_PATTERN_MATCHERS, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const matcher = _ref; + + if (matcher.test(pattern)) { + return true; + } + } + + var _urlParse = urlParse(pattern); + + const hostname = _urlParse.hostname, + path = _urlParse.path; + + if (hostname && path && GIT_HOSTS.indexOf(hostname) >= 0) { + // only if dependency is pointing to a git repo, + // e.g. facebook/flow and not file in a git repo facebook/flow/archive/v1.0.0.tar.gz + return path.split('/').filter(p => !!p).length === 2; + } + + return false; + } + + resolve(forked) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let tryRegistry = (() => { + var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (registry) { + const filename = (_index2 || _load_index2()).registries[registry].filename; + + const file = yield client.getFile(filename); + if (!file) { + return null; + } + + const json = yield config.readJson(`${url}/${filename}`, function () { + return JSON.parse(file); + }); + json._uid = commit; + json._remote = { + resolved: `${url}#${commit}`, + type: 'git', + reference: url, + hash: commit, + registry + }; + return json; + }); + + return function tryRegistry(_x) { + return _ref2.apply(this, arguments); + }; + })(); + + const url = _this.url; + + // shortcut for hosted git. we will fallback to a GitResolver if the hosted git + // optimisations fail which the `forked` flag indicates so we don't get into an + // infinite loop + + const parts = urlParse(url); + if (false) { + // check if this git url uses any of the hostnames defined in our hosted git resolvers + for (const name in (_index || _load_index()).hostedGit) { + const Resolver = (_index || _load_index()).hostedGit[name]; + if (Resolver.hostname !== parts.hostname) { + continue; + } + + // we have a match! clean up the pathname of url artifacts + let pathname = parts.pathname; + pathname = (_misc || _load_misc()).removePrefix(pathname, '/'); // remove prefixed slash + pathname = (_misc || _load_misc()).removeSuffix(pathname, '.git'); // remove .git suffix if present + + const url = `${pathname}${_this.hash ? '#' + decodeURIComponent(_this.hash) : ''}`; + return _this.fork(Resolver, false, url); + } + } + + // get from lockfile + const shrunk = _this.request.getLocked('git'); + if (shrunk) { + return shrunk; + } + + const config = _this.config; + + + const gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(url); + const client = new (_git || _load_git()).default(config, gitUrl, _this.hash); + const commit = yield client.init(); + + const file = yield tryRegistry(_this.registry); + if (file) { + return file; + } + + for (const registry in (_index2 || _load_index2()).registries) { + if (registry === _this.registry) { + continue; + } + + const file = yield tryRegistry(registry); + if (file) { + return file; + } + } + + return { + // This is just the default, it can be overridden with key of dependencies + name: (0, (_guessName || _load_guessName()).default)(url), + version: '0.0.0', + _uid: commit, + _remote: { + resolved: `${url}#${commit}`, + type: 'git', + reference: url, + hash: commit, + registry: 'npm' + } + }; + })(); + } +} +exports.default = GitResolver; + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isValidPackageName = isValidPackageName; + +exports.default = function (info, isRoot, reporter, warn) { + if (isRoot) { + for (const key in (_typos || _load_typos()).default) { + if (key in info) { + warn(reporter.lang('manifestPotentialTypo', key, (_typos || _load_typos()).default[key])); + } + } + } + + // validate name + const name = info.name; + + if (typeof name === 'string') { + if (isRoot && isBuiltinModule(name)) { + warn(reporter.lang('manifestBuiltinModule', name)); + } + + // cannot start with a dot + if (name[0] === '.') { + throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameDot')); + } + + // cannot contain the following characters + if (!isValidPackageName(name)) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameIllegalChars')); + } + + // cannot equal node_modules or favicon.ico + const lower = name.toLowerCase(); + if (lower === 'node_modules' || lower === 'favicon.ico') { + throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameBlacklisted')); + } + } + + // validate license + if (isRoot && !info.private) { + if (typeof info.license === 'string') { + const license = info.license.replace(/\*$/g, ''); + if (!(0, (_util || _load_util()).isValidLicense)(license)) { + warn(reporter.lang('manifestLicenseInvalid')); + } + } else { + warn(reporter.lang('manifestLicenseNone')); + } + } + + // validate strings + for (var _iterator = strings, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const key = _ref; + + const val = info[key]; + if (val && typeof val !== 'string') { + throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestStringExpected', key)); + } + } + + cleanDependencies(info, isRoot, reporter, warn); +}; + +exports.cleanDependencies = cleanDependencies; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _util; + +function _load_util() { + return _util = __webpack_require__(221); +} + +var _typos; + +function _load_typos() { + return _typos = _interopRequireDefault(__webpack_require__(587)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const isBuiltinModule = __webpack_require__(730); + +const strings = ['name', 'version']; + +const dependencyKeys = [ +// npm registry will include optionalDependencies in dependencies and we'll want to dedupe them from the +// other fields first +'optionalDependencies', + +// it's seemingly common to include a dependency in dependencies and devDependencies of the same name but +// different ranges, this can cause a lot of issues with our determinism and the behaviour of npm is +// currently unspecified. +'dependencies', 'devDependencies']; + +function isValidName(name) { + return !name.match(/[\/@\s\+%:]/) && encodeURIComponent(name) === name; +} + +function isValidScopedName(name) { + if (name[0] !== '@') { + return false; + } + + const parts = name.slice(1).split('/'); + return parts.length === 2 && isValidName(parts[0]) && isValidName(parts[1]); +} + +function isValidPackageName(name) { + return isValidName(name) || isValidScopedName(name); +} + +function cleanDependencies(info, isRoot, reporter, warn) { + // get dependency objects + const depTypes = []; + for (var _iterator2 = dependencyKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + const type = _ref2; + + const deps = info[type]; + if (!deps || typeof deps !== 'object') { + continue; + } + depTypes.push([type, deps]); + } + + // aggregate all non-trivial deps (not '' or '*') + const nonTrivialDeps = new Map(); + for (var _iterator3 = depTypes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + const _ref3 = _ref4; + const type = _ref3[0]; + const deps = _ref3[1]; + + for (var _iterator5 = Object.keys(deps), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref7; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref7 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref7 = _i5.value; + } + + const name = _ref7; + + const version = deps[name]; + if (!nonTrivialDeps.has(name) && version && version !== '*') { + nonTrivialDeps.set(name, { type, version }); + } + } + } + + // overwrite first dep of package with non-trivial version, remove the rest + const setDeps = new Set(); + for (var _iterator4 = depTypes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref6; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref6 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref6 = _i4.value; + } + + const _ref5 = _ref6; + const type = _ref5[0]; + const deps = _ref5[1]; + + for (var _iterator6 = Object.keys(deps), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref8; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref8 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref8 = _i6.value; + } + + const name = _ref8; + + let version = deps[name]; + + const dep = nonTrivialDeps.get(name); + if (dep) { + if (version && version !== '*' && version !== dep.version && isRoot) { + // only throw a warning when at the root + warn(reporter.lang('manifestDependencyCollision', dep.type, name, dep.version, type, version)); + } + version = dep.version; + } + + if (setDeps.has(name)) { + delete deps[name]; + } else { + deps[name] = version; + setDeps.add(name); + } + } + } +} + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(69); +var TAG = __webpack_require__(20)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + + +/***/ }), +/* 127 */ +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +var document = __webpack_require__(17).document; +module.exports = document && document.documentElement; + + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(93); +var $export = __webpack_require__(60); +var redefine = __webpack_require__(251); +var hide = __webpack_require__(42); +var Iterators = __webpack_require__(53); +var $iterCreate = __webpack_require__(242); +var setToStringTag = __webpack_require__(95); +var getPrototypeOf = __webpack_require__(248); +var ITERATOR = __webpack_require__(20)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + + +/***/ }), +/* 130 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } +}; + + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(35); +var isObject = __webpack_require__(52); +var newPromiseCapability = __webpack_require__(94); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), +/* 132 */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +var core = __webpack_require__(31); +var global = __webpack_require__(17); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: __webpack_require__(93) ? 'pure' : 'global', + copyright: '© 2018 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = __webpack_require__(35); +var aFunction = __webpack_require__(68); +var SPECIES = __webpack_require__(20)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(70); +var invoke = __webpack_require__(239); +var html = __webpack_require__(128); +var cel = __webpack_require__(92); +var global = __webpack_require__(17); +var process = global.process; +var setTask = global.setImmediate; +var clearTask = global.clearImmediate; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; +var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function (event) { + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (__webpack_require__(69)(process) == 'process') { + defer = function (id) { + process.nextTick(ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { + defer = function (id) { + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in cel('script')) { + defer = function (id) { + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; + + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.15 ToLength +var toInteger = __webpack_require__(97); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + + +/***/ }), +/* 137 */ +/***/ (function(module, exports) { + +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = __webpack_require__(301); + +/** + * Active `debug` instances. + */ +exports.instances = []; + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + var prevTime; + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + exports.instances.push(debug); + + return debug; +} + +function destroy () { + var index = exports.instances.indexOf(this); + if (index !== -1) { + exports.instances.splice(index, 1); + return true; + } else { + return false; + } +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var i; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } + + for (i = 0; i < exports.instances.length; i++) { + var instance = exports.instances[i]; + instance.enabled = exports.enabled(instance.namespace); + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +// Basic Javascript Elliptic Curve implementation +// Ported loosely from BouncyCastle's Java EC code +// Only Fp curves implemented for now + +// Requires jsbn.js and jsbn2.js +var BigInteger = __webpack_require__(81).BigInteger +var Barrett = BigInteger.prototype.Barrett + +// ---------------- +// ECFieldElementFp + +// constructor +function ECFieldElementFp(q,x) { + this.x = x; + // TODO if(x.compareTo(q) >= 0) error + this.q = q; +} + +function feFpEquals(other) { + if(other == this) return true; + return (this.q.equals(other.q) && this.x.equals(other.x)); +} + +function feFpToBigInteger() { + return this.x; +} + +function feFpNegate() { + return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); +} + +function feFpAdd(b) { + return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); +} + +function feFpSubtract(b) { + return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); +} + +function feFpMultiply(b) { + return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); +} + +function feFpSquare() { + return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); +} + +function feFpDivide(b) { + return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); +} + +ECFieldElementFp.prototype.equals = feFpEquals; +ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; +ECFieldElementFp.prototype.negate = feFpNegate; +ECFieldElementFp.prototype.add = feFpAdd; +ECFieldElementFp.prototype.subtract = feFpSubtract; +ECFieldElementFp.prototype.multiply = feFpMultiply; +ECFieldElementFp.prototype.square = feFpSquare; +ECFieldElementFp.prototype.divide = feFpDivide; + +// ---------------- +// ECPointFp + +// constructor +function ECPointFp(curve,x,y,z) { + this.curve = curve; + this.x = x; + this.y = y; + // Projective coordinates: either zinv == null or z * zinv == 1 + // z and zinv are just BigIntegers, not fieldElements + if(z == null) { + this.z = BigInteger.ONE; + } + else { + this.z = z; + } + this.zinv = null; + //TODO: compression flag +} + +function pointFpGetX() { + if(this.zinv == null) { + this.zinv = this.z.modInverse(this.curve.q); + } + var r = this.x.toBigInteger().multiply(this.zinv); + this.curve.reduce(r); + return this.curve.fromBigInteger(r); +} + +function pointFpGetY() { + if(this.zinv == null) { + this.zinv = this.z.modInverse(this.curve.q); + } + var r = this.y.toBigInteger().multiply(this.zinv); + this.curve.reduce(r); + return this.curve.fromBigInteger(r); +} + +function pointFpEquals(other) { + if(other == this) return true; + if(this.isInfinity()) return other.isInfinity(); + if(other.isInfinity()) return this.isInfinity(); + var u, v; + // u = Y2 * Z1 - Y1 * Z2 + u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); + if(!u.equals(BigInteger.ZERO)) return false; + // v = X2 * Z1 - X1 * Z2 + v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); + return v.equals(BigInteger.ZERO); +} + +function pointFpIsInfinity() { + if((this.x == null) && (this.y == null)) return true; + return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); +} + +function pointFpNegate() { + return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); +} + +function pointFpAdd(b) { + if(this.isInfinity()) return b; + if(b.isInfinity()) return this; + + // u = Y2 * Z1 - Y1 * Z2 + var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); + // v = X2 * Z1 - X1 * Z2 + var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); + + if(BigInteger.ZERO.equals(v)) { + if(BigInteger.ZERO.equals(u)) { + return this.twice(); // this == b, so double + } + return this.curve.getInfinity(); // this = -b, so infinity + } + + var THREE = new BigInteger("3"); + var x1 = this.x.toBigInteger(); + var y1 = this.y.toBigInteger(); + var x2 = b.x.toBigInteger(); + var y2 = b.y.toBigInteger(); + + var v2 = v.square(); + var v3 = v2.multiply(v); + var x1v2 = x1.multiply(v2); + var zu2 = u.square().multiply(this.z); + + // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) + var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); + // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 + var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); + // z3 = v^3 * z1 * z2 + var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); + + return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); +} + +function pointFpTwice() { + if(this.isInfinity()) return this; + if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); + + // TODO: optimized handling of constants + var THREE = new BigInteger("3"); + var x1 = this.x.toBigInteger(); + var y1 = this.y.toBigInteger(); + + var y1z1 = y1.multiply(this.z); + var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); + var a = this.curve.a.toBigInteger(); + + // w = 3 * x1^2 + a * z1^2 + var w = x1.square().multiply(THREE); + if(!BigInteger.ZERO.equals(a)) { + w = w.add(this.z.square().multiply(a)); + } + w = w.mod(this.curve.q); + //this.curve.reduce(w); + // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) + var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); + // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 + var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); + // z3 = 8 * (y1 * z1)^3 + var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); + + return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); +} + +// Simple NAF (Non-Adjacent Form) multiplication algorithm +// TODO: modularize the multiplication algorithm +function pointFpMultiply(k) { + if(this.isInfinity()) return this; + if(k.signum() == 0) return this.curve.getInfinity(); + + var e = k; + var h = e.multiply(new BigInteger("3")); + + var neg = this.negate(); + var R = this; + + var i; + for(i = h.bitLength() - 2; i > 0; --i) { + R = R.twice(); + + var hBit = h.testBit(i); + var eBit = e.testBit(i); + + if (hBit != eBit) { + R = R.add(hBit ? this : neg); + } + } + + return R; +} + +// Compute this*j + x*k (simultaneous multiplication) +function pointFpMultiplyTwo(j,x,k) { + var i; + if(j.bitLength() > k.bitLength()) + i = j.bitLength() - 1; + else + i = k.bitLength() - 1; + + var R = this.curve.getInfinity(); + var both = this.add(x); + while(i >= 0) { + R = R.twice(); + if(j.testBit(i)) { + if(k.testBit(i)) { + R = R.add(both); + } + else { + R = R.add(this); + } + } + else { + if(k.testBit(i)) { + R = R.add(x); + } + } + --i; + } + + return R; +} + +ECPointFp.prototype.getX = pointFpGetX; +ECPointFp.prototype.getY = pointFpGetY; +ECPointFp.prototype.equals = pointFpEquals; +ECPointFp.prototype.isInfinity = pointFpIsInfinity; +ECPointFp.prototype.negate = pointFpNegate; +ECPointFp.prototype.add = pointFpAdd; +ECPointFp.prototype.twice = pointFpTwice; +ECPointFp.prototype.multiply = pointFpMultiply; +ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; + +// ---------------- +// ECCurveFp + +// constructor +function ECCurveFp(q,a,b) { + this.q = q; + this.a = this.fromBigInteger(a); + this.b = this.fromBigInteger(b); + this.infinity = new ECPointFp(this, null, null); + this.reducer = new Barrett(this.q); +} + +function curveFpGetQ() { + return this.q; +} + +function curveFpGetA() { + return this.a; +} + +function curveFpGetB() { + return this.b; +} + +function curveFpEquals(other) { + if(other == this) return true; + return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); +} + +function curveFpGetInfinity() { + return this.infinity; +} + +function curveFpFromBigInteger(x) { + return new ECFieldElementFp(this.q, x); +} + +function curveReduce(x) { + this.reducer.reduce(x); +} + +// for now, work with hex strings because they're easier in JS +function curveFpDecodePointHex(s) { + switch(parseInt(s.substr(0,2), 16)) { // first byte + case 0: + return this.infinity; + case 2: + case 3: + // point compression not supported yet + return null; + case 4: + case 6: + case 7: + var len = (s.length - 2) / 2; + var xHex = s.substr(2, len); + var yHex = s.substr(len+2, len); + + return new ECPointFp(this, + this.fromBigInteger(new BigInteger(xHex, 16)), + this.fromBigInteger(new BigInteger(yHex, 16))); + + default: // unsupported + return null; + } +} + +function curveFpEncodePointHex(p) { + if (p.isInfinity()) return "00"; + var xHex = p.getX().toBigInteger().toString(16); + var yHex = p.getY().toBigInteger().toString(16); + var oLen = this.getQ().toString(16).length; + if ((oLen % 2) != 0) oLen++; + while (xHex.length < oLen) { + xHex = "0" + xHex; + } + while (yHex.length < oLen) { + yHex = "0" + yHex; + } + return "04" + xHex + yHex; +} + +ECCurveFp.prototype.getQ = curveFpGetQ; +ECCurveFp.prototype.getA = curveFpGetA; +ECCurveFp.prototype.getB = curveFpGetB; +ECCurveFp.prototype.equals = curveFpEquals; +ECCurveFp.prototype.getInfinity = curveFpGetInfinity; +ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; +ECCurveFp.prototype.reduce = curveReduce; +//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; +ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex; + +// from: https://github.com/kaielvin/jsbn-ec-point-compression +ECCurveFp.prototype.decodePointHex = function(s) +{ + var yIsEven; + switch(parseInt(s.substr(0,2), 16)) { // first byte + case 0: + return this.infinity; + case 2: + yIsEven = false; + case 3: + if(yIsEven == undefined) yIsEven = true; + var len = s.length - 2; + var xHex = s.substr(2, len); + var x = this.fromBigInteger(new BigInteger(xHex,16)); + var alpha = x.multiply(x.square().add(this.getA())).add(this.getB()); + var beta = alpha.sqrt(); + + if (beta == null) throw "Invalid point compression"; + + var betaValue = beta.toBigInteger(); + if (betaValue.testBit(0) != yIsEven) + { + // Use the other root + beta = this.fromBigInteger(this.getQ().subtract(betaValue)); + } + return new ECPointFp(this,x,beta); + case 4: + case 6: + case 7: + var len = (s.length - 2) / 2; + var xHex = s.substr(2, len); + var yHex = s.substr(len+2, len); + + return new ECPointFp(this, + this.fromBigInteger(new BigInteger(xHex, 16)), + this.fromBigInteger(new BigInteger(yHex, 16))); + + default: // unsupported + return null; + } +} +ECCurveFp.prototype.encodeCompressedPointHex = function(p) +{ + if (p.isInfinity()) return "00"; + var xHex = p.getX().toBigInteger().toString(16); + var oLen = this.getQ().toString(16).length; + if ((oLen % 2) != 0) oLen++; + while (xHex.length < oLen) + xHex = "0" + xHex; + var yPrefix; + if(p.getY().toBigInteger().isEven()) yPrefix = "02"; + else yPrefix = "03"; + + return yPrefix + xHex; +} + + +ECFieldElementFp.prototype.getR = function() +{ + if(this.r != undefined) return this.r; + + this.r = null; + var bitLength = this.q.bitLength(); + if (bitLength > 128) + { + var firstWord = this.q.shiftRight(bitLength - 64); + if (firstWord.intValue() == -1) + { + this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q); + } + } + return this.r; +} +ECFieldElementFp.prototype.modMult = function(x1,x2) +{ + return this.modReduce(x1.multiply(x2)); +} +ECFieldElementFp.prototype.modReduce = function(x) +{ + if (this.getR() != null) + { + var qLen = q.bitLength(); + while (x.bitLength() > (qLen + 1)) + { + var u = x.shiftRight(qLen); + var v = x.subtract(u.shiftLeft(qLen)); + if (!this.getR().equals(BigInteger.ONE)) + { + u = u.multiply(this.getR()); + } + x = u.add(v); + } + while (x.compareTo(q) >= 0) + { + x = x.subtract(q); + } + } + else + { + x = x.mod(q); + } + return x; +} +ECFieldElementFp.prototype.sqrt = function() +{ + if (!this.q.testBit(0)) throw "unsupported"; + + // p mod 4 == 3 + if (this.q.testBit(1)) + { + var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q)); + return z.square().equals(this) ? z : null; + } + + // p mod 4 == 1 + var qMinusOne = this.q.subtract(BigInteger.ONE); + + var legendreExponent = qMinusOne.shiftRight(1); + if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE))) + { + return null; + } + + var u = qMinusOne.shiftRight(2); + var k = u.shiftLeft(1).add(BigInteger.ONE); + + var Q = this.x; + var fourQ = modDouble(modDouble(Q)); + + var U, V; + do + { + var P; + do + { + P = new BigInteger(this.q.bitLength(), new SecureRandom()); + } + while (P.compareTo(this.q) >= 0 + || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne))); + + var result = this.lucasSequence(P, Q, k); + U = result[0]; + V = result[1]; + + if (this.modMult(V, V).equals(fourQ)) + { + // Integer division by 2, mod q + if (V.testBit(0)) + { + V = V.add(q); + } + + V = V.shiftRight(1); + + return new ECFieldElementFp(q,V); + } + } + while (U.equals(BigInteger.ONE) || U.equals(qMinusOne)); + + return null; +} +ECFieldElementFp.prototype.lucasSequence = function(P,Q,k) +{ + var n = k.bitLength(); + var s = k.getLowestSetBit(); + + var Uh = BigInteger.ONE; + var Vl = BigInteger.TWO; + var Vh = P; + var Ql = BigInteger.ONE; + var Qh = BigInteger.ONE; + + for (var j = n - 1; j >= s + 1; --j) + { + Ql = this.modMult(Ql, Qh); + + if (k.testBit(j)) + { + Qh = this.modMult(Ql, Q); + Uh = this.modMult(Uh, Vh); + Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); + Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1))); + } + else + { + Qh = Ql; + Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); + Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); + Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); + } + } + + Ql = this.modMult(Ql, Qh); + Qh = this.modMult(Ql, Q); + Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); + Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); + Ql = this.modMult(Ql, Qh); + + for (var j = 1; j <= s; ++j) + { + Uh = this.modMult(Uh, Vl); + Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); + Ql = this.modMult(Ql, Ql); + } + + return [ Uh, Vl ]; +} + +var exports = { + ECCurveFp: ECCurveFp, + ECPointFp: ECPointFp, + ECFieldElementFp: ECFieldElementFp +} + +module.exports = exports + + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = realpath +realpath.realpath = realpath +realpath.sync = realpathSync +realpath.realpathSync = realpathSync +realpath.monkeypatch = monkeypatch +realpath.unmonkeypatch = unmonkeypatch + +var fs = __webpack_require__(5) +var origRealpath = fs.realpath +var origRealpathSync = fs.realpathSync + +var version = process.version +var ok = /^v[0-5]\./.test(version) +var old = __webpack_require__(271) + +function newError (er) { + return er && er.syscall === 'realpath' && ( + er.code === 'ELOOP' || + er.code === 'ENOMEM' || + er.code === 'ENAMETOOLONG' + ) +} + +function realpath (p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb) + } + + if (typeof cache === 'function') { + cb = cache + cache = null + } + origRealpath(p, cache, function (er, result) { + if (newError(er)) { + old.realpath(p, cache, cb) + } else { + cb(er, result) + } + }) +} + +function realpathSync (p, cache) { + if (ok) { + return origRealpathSync(p, cache) + } + + try { + return origRealpathSync(p, cache) + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache) + } else { + throw er + } + } +} + +function monkeypatch () { + fs.realpath = realpath + fs.realpathSync = realpathSync +} + +function unmonkeypatch () { + fs.realpath = origRealpath + fs.realpathSync = origRealpathSync +} + + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = __webpack_require__(0) +var minimatch = __webpack_require__(82) +var isAbsolute = __webpack_require__(101) +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +// ignore patterns are always in dot:true mode. +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern, { dot: true }) + } + + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + self.absolute = !!options.absolute + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = path.resolve(options.cwd) + self.changedCwd = self.cwd !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + // TODO: is an absolute `cwd` supposed to be resolved against `root`? + // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd) + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") + self.nomount = !!options.nomount + + // disable comments and negation in Minimatch. + // Note that they are not supported in Glob itself anyway. + options.nonegate = true + options.nocomment = true + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + var notDir = !(/\/$/.test(e)) + var c = self.cache[e] || self.cache[makeAbs(self, e)] + if (notDir && c) + notDir = c !== 'DIR' && !Array.isArray(c) + return notDir + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + + if (process.platform === 'win32') + abs = abs.replace(/\\/g, '/') + + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + + +/***/ }), +/* 142 */ +/***/ (function(module, exports) { + + +module.exports = function(det, rec, confidence, name, lang) { + this.confidence = confidence; + this.name = name || rec.name(det); + this.lang = lang; +}; + + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. + + + + + +var Schema = __webpack_require__(44); + + +module.exports = new Schema({ + include: [ + __webpack_require__(144) + ] +}); + + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. + + + + + +var Schema = __webpack_require__(44); + + +module.exports = new Schema({ + include: [ + __webpack_require__(100) + ], + implicit: [ + __webpack_require__(293), + __webpack_require__(285), + __webpack_require__(287), + __webpack_require__(286) + ] +}); + + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +var path = __webpack_require__(0); +var fs = __webpack_require__(5); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), opts, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; + + +/***/ }), +/* 146 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = defaultIfEmpty; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function defaultIfEmpty(defaultValue) { + if (defaultValue === void 0) { + defaultValue = null; + } + return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); }; +} +var DefaultIfEmptyOperator = /*@__PURE__*/ (function () { + function DefaultIfEmptyOperator(defaultValue) { + this.defaultValue = defaultValue; + } + DefaultIfEmptyOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue)); + }; + return DefaultIfEmptyOperator; +}()); +var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DefaultIfEmptySubscriber, _super); + function DefaultIfEmptySubscriber(destination, defaultValue) { + var _this = _super.call(this, destination) || this; + _this.defaultValue = defaultValue; + _this.isEmpty = true; + return _this; + } + DefaultIfEmptySubscriber.prototype._next = function (value) { + this.isEmpty = false; + this.destination.next(value); + }; + DefaultIfEmptySubscriber.prototype._complete = function () { + if (this.isEmpty) { + this.destination.next(this.defaultValue); + } + this.destination.complete(); + }; + return DefaultIfEmptySubscriber; +}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); +//# sourceMappingURL=defaultIfEmpty.js.map + + +/***/ }), +/* 147 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = filter; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function filter(predicate, thisArg) { + return function filterOperatorFunction(source) { + return source.lift(new FilterOperator(predicate, thisArg)); + }; +} +var FilterOperator = /*@__PURE__*/ (function () { + function FilterOperator(predicate, thisArg) { + this.predicate = predicate; + this.thisArg = thisArg; + } + FilterOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg)); + }; + return FilterOperator; +}()); +var FilterSubscriber = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](FilterSubscriber, _super); + function FilterSubscriber(destination, predicate, thisArg) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.thisArg = thisArg; + _this.count = 0; + return _this; + } + FilterSubscriber.prototype._next = function (value) { + var result; + try { + result = this.predicate.call(this.thisArg, value, this.count++); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + this.destination.next(value); + } + }; + return FilterSubscriber; +}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); +//# sourceMappingURL=filter.js.map + + +/***/ }), +/* 148 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = mergeMap; +/* unused harmony export MergeMapOperator */ +/* unused harmony export MergeMapSubscriber */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_subscribeToResult__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__InnerSubscriber__ = __webpack_require__(84); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map__ = __webpack_require__(47); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__observable_from__ = __webpack_require__(62); +/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */ + + + + + + +function mergeMap(project, resultSelector, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + if (typeof resultSelector === 'function') { + return function (source) { return source.pipe(mergeMap(function (a, i) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__observable_from__["a" /* from */])(project(a, i)).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__map__["a" /* map */])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); }; + } + else if (typeof resultSelector === 'number') { + concurrent = resultSelector; + } + return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); }; +} +var MergeMapOperator = /*@__PURE__*/ (function () { + function MergeMapOperator(project, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + this.project = project; + this.concurrent = concurrent; + } + MergeMapOperator.prototype.call = function (observer, source) { + return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent)); + }; + return MergeMapOperator; +}()); + +var MergeMapSubscriber = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MergeMapSubscriber, _super); + function MergeMapSubscriber(destination, project, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.concurrent = concurrent; + _this.hasCompleted = false; + _this.buffer = []; + _this.active = 0; + _this.index = 0; + return _this; + } + MergeMapSubscriber.prototype._next = function (value) { + if (this.active < this.concurrent) { + this._tryNext(value); + } + else { + this.buffer.push(value); + } + }; + MergeMapSubscriber.prototype._tryNext = function (value) { + var result; + var index = this.index++; + try { + result = this.project(value, index); + } + catch (err) { + this.destination.error(err); + return; + } + this.active++; + this._innerSub(result, value, index); + }; + MergeMapSubscriber.prototype._innerSub = function (ish, value, index) { + var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_3__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined); + var destination = this.destination; + destination.add(innerSubscriber); + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_subscribeToResult__["a" /* subscribeToResult */])(this, ish, value, index, innerSubscriber); + }; + MergeMapSubscriber.prototype._complete = function () { + this.hasCompleted = true; + if (this.active === 0 && this.buffer.length === 0) { + this.destination.complete(); + } + this.unsubscribe(); + }; + MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + }; + MergeMapSubscriber.prototype.notifyComplete = function (innerSub) { + var buffer = this.buffer; + this.remove(innerSub); + this.active--; + if (buffer.length > 0) { + this._next(buffer.shift()); + } + else if (this.active === 0 && this.hasCompleted) { + this.destination.complete(); + } + }; + return MergeMapSubscriber; +}(__WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__["a" /* OuterSubscriber */])); + +//# sourceMappingURL=mergeMap.js.map + + +/***/ }), +/* 149 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncAction; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Action__ = __webpack_require__(918); +/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ + + +var AsyncAction = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncAction, _super); + function AsyncAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.pending = false; + return _this; + } + AsyncAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { + delay = 0; + } + if (this.closed) { + return this; + } + this.state = state; + var id = this.id; + var scheduler = this.scheduler; + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.pending = true; + this.delay = delay; + this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); + return this; + }; + AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + return setInterval(scheduler.flush.bind(scheduler, this), delay); + }; + AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay !== null && this.delay === delay && this.pending === false) { + return id; + } + clearInterval(id); + }; + AsyncAction.prototype.execute = function (state, delay) { + if (this.closed) { + return new Error('executing a cancelled action'); + } + this.pending = false; + var error = this._execute(state, delay); + if (error) { + return error; + } + else if (this.pending === false && this.id != null) { + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + }; + AsyncAction.prototype._execute = function (state, delay) { + var errored = false; + var errorValue = undefined; + try { + this.work(state); + } + catch (e) { + errored = true; + errorValue = !!e && e || new Error(e); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + }; + AsyncAction.prototype._unsubscribe = function () { + var id = this.id; + var scheduler = this.scheduler; + var actions = scheduler.actions; + var index = actions.indexOf(this); + this.work = null; + this.state = null; + this.pending = false; + this.scheduler = null; + if (index !== -1) { + actions.splice(index, 1); + } + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + }; + return AsyncAction; +}(__WEBPACK_IMPORTED_MODULE_1__Action__["a" /* Action */])); + +//# sourceMappingURL=AsyncAction.js.map + + +/***/ }), +/* 150 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncScheduler; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Scheduler__ = __webpack_require__(421); +/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ + + +var AsyncScheduler = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncScheduler, _super); + function AsyncScheduler(SchedulerAction, now) { + if (now === void 0) { + now = __WEBPACK_IMPORTED_MODULE_1__Scheduler__["a" /* Scheduler */].now; + } + var _this = _super.call(this, SchedulerAction, function () { + if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) { + return AsyncScheduler.delegate.now(); + } + else { + return now(); + } + }) || this; + _this.actions = []; + _this.active = false; + _this.scheduled = undefined; + return _this; + } + AsyncScheduler.prototype.schedule = function (work, delay, state) { + if (delay === void 0) { + delay = 0; + } + if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { + return AsyncScheduler.delegate.schedule(work, delay, state); + } + else { + return _super.prototype.schedule.call(this, work, delay, state); + } + }; + AsyncScheduler.prototype.flush = function (action) { + var actions = this.actions; + if (this.active) { + actions.push(action); + return; + } + var error; + this.active = true; + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (action = actions.shift()); + this.active = false; + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AsyncScheduler; +}(__WEBPACK_IMPORTED_MODULE_1__Scheduler__["a" /* Scheduler */])); + +//# sourceMappingURL=AsyncScheduler.js.map + + +/***/ }), +/* 151 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* unused harmony export getSymbolIterator */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iterator; }); +/* unused harmony export $$iterator */ +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function getSymbolIterator() { + if (typeof Symbol !== 'function' || !Symbol.iterator) { + return '@@iterator'; + } + return Symbol.iterator; +} +var iterator = /*@__PURE__*/ getSymbolIterator(); +var $$iterator = iterator; +//# sourceMappingURL=iterator.js.map + + +/***/ }), +/* 152 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ArgumentOutOfRangeError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function ArgumentOutOfRangeErrorImpl() { + Error.call(this); + this.message = 'argument out of range'; + this.name = 'ArgumentOutOfRangeError'; + return this; +} +ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); +var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; +//# sourceMappingURL=ArgumentOutOfRangeError.js.map + + +/***/ }), +/* 153 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EmptyError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function EmptyErrorImpl() { + Error.call(this); + this.message = 'no elements in sequence'; + this.name = 'EmptyError'; + return this; +} +EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); +var EmptyError = EmptyErrorImpl; +//# sourceMappingURL=EmptyError.js.map + + +/***/ }), +/* 154 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isFunction; +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isFunction(x) { + return typeof x === 'function'; +} +//# sourceMappingURL=isFunction.js.map + + +/***/ }), +/* 155 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2016 Joyent, Inc. + +module.exports = Certificate; + +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var crypto = __webpack_require__(11); +var Fingerprint = __webpack_require__(156); +var Signature = __webpack_require__(75); +var errs = __webpack_require__(74); +var util = __webpack_require__(3); +var utils = __webpack_require__(26); +var Key = __webpack_require__(27); +var PrivateKey = __webpack_require__(33); +var Identity = __webpack_require__(158); + +var formats = {}; +formats['openssh'] = __webpack_require__(940); +formats['x509'] = __webpack_require__(457); +formats['pem'] = __webpack_require__(941); + +var CertificateParseError = errs.CertificateParseError; +var InvalidAlgorithmError = errs.InvalidAlgorithmError; + +function Certificate(opts) { + assert.object(opts, 'options'); + assert.arrayOfObject(opts.subjects, 'options.subjects'); + utils.assertCompatible(opts.subjects[0], Identity, [1, 0], + 'options.subjects'); + utils.assertCompatible(opts.subjectKey, Key, [1, 0], + 'options.subjectKey'); + utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer'); + if (opts.issuerKey !== undefined) { + utils.assertCompatible(opts.issuerKey, Key, [1, 0], + 'options.issuerKey'); + } + assert.object(opts.signatures, 'options.signatures'); + assert.buffer(opts.serial, 'options.serial'); + assert.date(opts.validFrom, 'options.validFrom'); + assert.date(opts.validUntil, 'optons.validUntil'); + + assert.optionalArrayOfString(opts.purposes, 'options.purposes'); + + this._hashCache = {}; + + this.subjects = opts.subjects; + this.issuer = opts.issuer; + this.subjectKey = opts.subjectKey; + this.issuerKey = opts.issuerKey; + this.signatures = opts.signatures; + this.serial = opts.serial; + this.validFrom = opts.validFrom; + this.validUntil = opts.validUntil; + this.purposes = opts.purposes; +} + +Certificate.formats = formats; + +Certificate.prototype.toBuffer = function (format, options) { + if (format === undefined) + format = 'x509'; + assert.string(format, 'format'); + assert.object(formats[format], 'formats[format]'); + assert.optionalObject(options, 'options'); + + return (formats[format].write(this, options)); +}; + +Certificate.prototype.toString = function (format, options) { + if (format === undefined) + format = 'pem'; + return (this.toBuffer(format, options).toString()); +}; + +Certificate.prototype.fingerprint = function (algo) { + if (algo === undefined) + algo = 'sha256'; + assert.string(algo, 'algorithm'); + var opts = { + type: 'certificate', + hash: this.hash(algo), + algorithm: algo + }; + return (new Fingerprint(opts)); +}; + +Certificate.prototype.hash = function (algo) { + assert.string(algo, 'algorithm'); + algo = algo.toLowerCase(); + if (algs.hashAlgs[algo] === undefined) + throw (new InvalidAlgorithmError(algo)); + + if (this._hashCache[algo]) + return (this._hashCache[algo]); + + var hash = crypto.createHash(algo). + update(this.toBuffer('x509')).digest(); + this._hashCache[algo] = hash; + return (hash); +}; + +Certificate.prototype.isExpired = function (when) { + if (when === undefined) + when = new Date(); + return (!((when.getTime() >= this.validFrom.getTime()) && + (when.getTime() < this.validUntil.getTime()))); +}; + +Certificate.prototype.isSignedBy = function (issuerCert) { + utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer'); + + if (!this.issuer.equals(issuerCert.subjects[0])) + return (false); + if (this.issuer.purposes && this.issuer.purposes.length > 0 && + this.issuer.purposes.indexOf('ca') === -1) { + return (false); + } + + return (this.isSignedByKey(issuerCert.subjectKey)); +}; + +Certificate.prototype.isSignedByKey = function (issuerKey) { + utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey'); + + if (this.issuerKey !== undefined) { + return (this.issuerKey. + fingerprint('sha512').matches(issuerKey)); + } + + var fmt = Object.keys(this.signatures)[0]; + var valid = formats[fmt].verify(this, issuerKey); + if (valid) + this.issuerKey = issuerKey; + return (valid); +}; + +Certificate.prototype.signWith = function (key) { + utils.assertCompatible(key, PrivateKey, [1, 2], 'key'); + var fmts = Object.keys(formats); + var didOne = false; + for (var i = 0; i < fmts.length; ++i) { + if (fmts[i] !== 'pem') { + var ret = formats[fmts[i]].sign(this, key); + if (ret === true) + didOne = true; + } + } + if (!didOne) { + throw (new Error('Failed to sign the certificate for any ' + + 'available certificate formats')); + } +}; + +Certificate.createSelfSigned = function (subjectOrSubjects, key, options) { + var subjects; + if (Array.isArray(subjectOrSubjects)) + subjects = subjectOrSubjects; + else + subjects = [subjectOrSubjects]; + + assert.arrayOfObject(subjects); + subjects.forEach(function (subject) { + utils.assertCompatible(subject, Identity, [1, 0], 'subject'); + }); + + utils.assertCompatible(key, PrivateKey, [1, 2], 'private key'); + + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalObject(options.validFrom, 'options.validFrom'); + assert.optionalObject(options.validUntil, 'options.validUntil'); + var validFrom = options.validFrom; + var validUntil = options.validUntil; + if (validFrom === undefined) + validFrom = new Date(); + if (validUntil === undefined) { + assert.optionalNumber(options.lifetime, 'options.lifetime'); + var lifetime = options.lifetime; + if (lifetime === undefined) + lifetime = 10*365*24*3600; + validUntil = new Date(); + validUntil.setTime(validUntil.getTime() + lifetime*1000); + } + assert.optionalBuffer(options.serial, 'options.serial'); + var serial = options.serial; + if (serial === undefined) + serial = Buffer.from('0000000000000001', 'hex'); + + var purposes = options.purposes; + if (purposes === undefined) + purposes = []; + + if (purposes.indexOf('signature') === -1) + purposes.push('signature'); + + /* Self-signed certs are always CAs. */ + if (purposes.indexOf('ca') === -1) + purposes.push('ca'); + if (purposes.indexOf('crl') === -1) + purposes.push('crl'); + + /* + * If we weren't explicitly given any other purposes, do the sensible + * thing and add some basic ones depending on the subject type. + */ + if (purposes.length <= 3) { + var hostSubjects = subjects.filter(function (subject) { + return (subject.type === 'host'); + }); + var userSubjects = subjects.filter(function (subject) { + return (subject.type === 'user'); + }); + if (hostSubjects.length > 0) { + if (purposes.indexOf('serverAuth') === -1) + purposes.push('serverAuth'); + } + if (userSubjects.length > 0) { + if (purposes.indexOf('clientAuth') === -1) + purposes.push('clientAuth'); + } + if (userSubjects.length > 0 || hostSubjects.length > 0) { + if (purposes.indexOf('keyAgreement') === -1) + purposes.push('keyAgreement'); + if (key.type === 'rsa' && + purposes.indexOf('encryption') === -1) + purposes.push('encryption'); + } + } + + var cert = new Certificate({ + subjects: subjects, + issuer: subjects[0], + subjectKey: key.toPublic(), + issuerKey: key.toPublic(), + signatures: {}, + serial: serial, + validFrom: validFrom, + validUntil: validUntil, + purposes: purposes + }); + cert.signWith(key); + + return (cert); +}; + +Certificate.create = + function (subjectOrSubjects, key, issuer, issuerKey, options) { + var subjects; + if (Array.isArray(subjectOrSubjects)) + subjects = subjectOrSubjects; + else + subjects = [subjectOrSubjects]; + + assert.arrayOfObject(subjects); + subjects.forEach(function (subject) { + utils.assertCompatible(subject, Identity, [1, 0], 'subject'); + }); + + utils.assertCompatible(key, Key, [1, 0], 'key'); + if (PrivateKey.isPrivateKey(key)) + key = key.toPublic(); + utils.assertCompatible(issuer, Identity, [1, 0], 'issuer'); + utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key'); + + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalObject(options.validFrom, 'options.validFrom'); + assert.optionalObject(options.validUntil, 'options.validUntil'); + var validFrom = options.validFrom; + var validUntil = options.validUntil; + if (validFrom === undefined) + validFrom = new Date(); + if (validUntil === undefined) { + assert.optionalNumber(options.lifetime, 'options.lifetime'); + var lifetime = options.lifetime; + if (lifetime === undefined) + lifetime = 10*365*24*3600; + validUntil = new Date(); + validUntil.setTime(validUntil.getTime() + lifetime*1000); + } + assert.optionalBuffer(options.serial, 'options.serial'); + var serial = options.serial; + if (serial === undefined) + serial = Buffer.from('0000000000000001', 'hex'); + + var purposes = options.purposes; + if (purposes === undefined) + purposes = []; + + if (purposes.indexOf('signature') === -1) + purposes.push('signature'); + + if (options.ca === true) { + if (purposes.indexOf('ca') === -1) + purposes.push('ca'); + if (purposes.indexOf('crl') === -1) + purposes.push('crl'); + } + + var hostSubjects = subjects.filter(function (subject) { + return (subject.type === 'host'); + }); + var userSubjects = subjects.filter(function (subject) { + return (subject.type === 'user'); + }); + if (hostSubjects.length > 0) { + if (purposes.indexOf('serverAuth') === -1) + purposes.push('serverAuth'); + } + if (userSubjects.length > 0) { + if (purposes.indexOf('clientAuth') === -1) + purposes.push('clientAuth'); + } + if (userSubjects.length > 0 || hostSubjects.length > 0) { + if (purposes.indexOf('keyAgreement') === -1) + purposes.push('keyAgreement'); + if (key.type === 'rsa' && + purposes.indexOf('encryption') === -1) + purposes.push('encryption'); + } + + var cert = new Certificate({ + subjects: subjects, + issuer: issuer, + subjectKey: key, + issuerKey: issuerKey.toPublic(), + signatures: {}, + serial: serial, + validFrom: validFrom, + validUntil: validUntil, + purposes: purposes + }); + cert.signWith(issuerKey); + + return (cert); +}; + +Certificate.parse = function (data, format, options) { + if (typeof (data) !== 'string') + assert.buffer(data, 'data'); + if (format === undefined) + format = 'auto'; + assert.string(format, 'format'); + if (typeof (options) === 'string') + options = { filename: options }; + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalString(options.filename, 'options.filename'); + if (options.filename === undefined) + options.filename = '(unnamed)'; + + assert.object(formats[format], 'formats[format]'); + + try { + var k = formats[format].read(data, options); + return (k); + } catch (e) { + throw (new CertificateParseError(options.filename, format, e)); + } +}; + +Certificate.isCertificate = function (obj, ver) { + return (utils.isCompatible(obj, Certificate, ver)); +}; + +/* + * API versions for Certificate: + * [1,0] -- initial ver + */ +Certificate.prototype._sshpkApiVersion = [1, 0]; + +Certificate._oldVersionDetect = function (obj) { + return ([1, 0]); +}; + + +/***/ }), +/* 156 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = Fingerprint; + +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var crypto = __webpack_require__(11); +var errs = __webpack_require__(74); +var Key = __webpack_require__(27); +var Certificate = __webpack_require__(155); +var utils = __webpack_require__(26); + +var FingerprintFormatError = errs.FingerprintFormatError; +var InvalidAlgorithmError = errs.InvalidAlgorithmError; + +function Fingerprint(opts) { + assert.object(opts, 'options'); + assert.string(opts.type, 'options.type'); + assert.buffer(opts.hash, 'options.hash'); + assert.string(opts.algorithm, 'options.algorithm'); + + this.algorithm = opts.algorithm.toLowerCase(); + if (algs.hashAlgs[this.algorithm] !== true) + throw (new InvalidAlgorithmError(this.algorithm)); + + this.hash = opts.hash; + this.type = opts.type; +} + +Fingerprint.prototype.toString = function (format) { + if (format === undefined) { + if (this.algorithm === 'md5') + format = 'hex'; + else + format = 'base64'; + } + assert.string(format); + + switch (format) { + case 'hex': + return (addColons(this.hash.toString('hex'))); + case 'base64': + return (sshBase64Format(this.algorithm, + this.hash.toString('base64'))); + default: + throw (new FingerprintFormatError(undefined, format)); + } +}; + +Fingerprint.prototype.matches = function (other) { + assert.object(other, 'key or certificate'); + if (this.type === 'key') { + utils.assertCompatible(other, Key, [1, 0], 'key'); + } else { + utils.assertCompatible(other, Certificate, [1, 0], + 'certificate'); + } + + var theirHash = other.hash(this.algorithm); + var theirHash2 = crypto.createHash(this.algorithm). + update(theirHash).digest('base64'); + + if (this.hash2 === undefined) + this.hash2 = crypto.createHash(this.algorithm). + update(this.hash).digest('base64'); + + return (this.hash2 === theirHash2); +}; + +Fingerprint.parse = function (fp, options) { + assert.string(fp, 'fingerprint'); + + var alg, hash, enAlgs; + if (Array.isArray(options)) { + enAlgs = options; + options = {}; + } + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + if (options.enAlgs !== undefined) + enAlgs = options.enAlgs; + assert.optionalArrayOfString(enAlgs, 'algorithms'); + + var parts = fp.split(':'); + if (parts.length == 2) { + alg = parts[0].toLowerCase(); + /*JSSTYLED*/ + var base64RE = /^[A-Za-z0-9+\/=]+$/; + if (!base64RE.test(parts[1])) + throw (new FingerprintFormatError(fp)); + try { + hash = Buffer.from(parts[1], 'base64'); + } catch (e) { + throw (new FingerprintFormatError(fp)); + } + } else if (parts.length > 2) { + alg = 'md5'; + if (parts[0].toLowerCase() === 'md5') + parts = parts.slice(1); + parts = parts.join(''); + /*JSSTYLED*/ + var md5RE = /^[a-fA-F0-9]+$/; + if (!md5RE.test(parts)) + throw (new FingerprintFormatError(fp)); + try { + hash = Buffer.from(parts, 'hex'); + } catch (e) { + throw (new FingerprintFormatError(fp)); + } + } + + if (alg === undefined) + throw (new FingerprintFormatError(fp)); + + if (algs.hashAlgs[alg] === undefined) + throw (new InvalidAlgorithmError(alg)); + + if (enAlgs !== undefined) { + enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); }); + if (enAlgs.indexOf(alg) === -1) + throw (new InvalidAlgorithmError(alg)); + } + + return (new Fingerprint({ + algorithm: alg, + hash: hash, + type: options.type || 'key' + })); +}; + +function addColons(s) { + /*JSSTYLED*/ + return (s.replace(/(.{2})(?=.)/g, '$1:')); +} + +function base64Strip(s) { + /*JSSTYLED*/ + return (s.replace(/=*$/, '')); +} + +function sshBase64Format(alg, h) { + return (alg.toUpperCase() + ':' + base64Strip(h)); +} + +Fingerprint.isFingerprint = function (obj, ver) { + return (utils.isCompatible(obj, Fingerprint, ver)); +}; + +/* + * API versions for Fingerprint: + * [1,0] -- initial ver + * [1,1] -- first tagged ver + */ +Fingerprint.prototype._sshpkApiVersion = [1, 1]; + +Fingerprint._oldVersionDetect = function (obj) { + assert.func(obj.toString); + assert.func(obj.matches); + return ([1, 0]); +}; + + +/***/ }), +/* 157 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = { + read: read, + readPkcs8: readPkcs8, + write: write, + writePkcs8: writePkcs8, + + readECDSACurve: readECDSACurve, + writeECDSACurve: writeECDSACurve +}; + +var assert = __webpack_require__(16); +var asn1 = __webpack_require__(66); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var utils = __webpack_require__(26); +var Key = __webpack_require__(27); +var PrivateKey = __webpack_require__(33); +var pem = __webpack_require__(86); + +function read(buf, options) { + return (pem.read(buf, options, 'pkcs8')); +} + +function write(key, options) { + return (pem.write(key, options, 'pkcs8')); +} + +/* Helper to read in a single mpint */ +function readMPInt(der, nm) { + assert.strictEqual(der.peek(), asn1.Ber.Integer, + nm + ' is not an Integer'); + return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); +} + +function readPkcs8(alg, type, der) { + /* Private keys in pkcs#8 format have a weird extra int */ + if (der.peek() === asn1.Ber.Integer) { + assert.strictEqual(type, 'private', + 'unexpected Integer at start of public key'); + der.readString(asn1.Ber.Integer, true); + } + + der.readSequence(); + var next = der.offset + der.length; + + var oid = der.readOID(); + switch (oid) { + case '1.2.840.113549.1.1.1': + der._offset = next; + if (type === 'public') + return (readPkcs8RSAPublic(der)); + else + return (readPkcs8RSAPrivate(der)); + case '1.2.840.10040.4.1': + if (type === 'public') + return (readPkcs8DSAPublic(der)); + else + return (readPkcs8DSAPrivate(der)); + case '1.2.840.10045.2.1': + if (type === 'public') + return (readPkcs8ECDSAPublic(der)); + else + return (readPkcs8ECDSAPrivate(der)); + case '1.3.101.112': + if (type === 'public') { + return (readPkcs8EdDSAPublic(der)); + } else { + return (readPkcs8EdDSAPrivate(der)); + } + case '1.3.101.110': + if (type === 'public') { + return (readPkcs8X25519Public(der)); + } else { + return (readPkcs8X25519Private(der)); + } + default: + throw (new Error('Unknown key type OID ' + oid)); + } +} + +function readPkcs8RSAPublic(der) { + // bit string sequence + der.readSequence(asn1.Ber.BitString); + der.readByte(); + der.readSequence(); + + // modulus + var n = readMPInt(der, 'modulus'); + var e = readMPInt(der, 'exponent'); + + // now, make the key + var key = { + type: 'rsa', + source: der.originalInput, + parts: [ + { name: 'e', data: e }, + { name: 'n', data: n } + ] + }; + + return (new Key(key)); +} + +function readPkcs8RSAPrivate(der) { + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); + + var ver = readMPInt(der, 'version'); + assert.equal(ver[0], 0x0, 'unknown RSA private key version'); + + // modulus then public exponent + var n = readMPInt(der, 'modulus'); + var e = readMPInt(der, 'public exponent'); + var d = readMPInt(der, 'private exponent'); + var p = readMPInt(der, 'prime1'); + var q = readMPInt(der, 'prime2'); + var dmodp = readMPInt(der, 'exponent1'); + var dmodq = readMPInt(der, 'exponent2'); + var iqmp = readMPInt(der, 'iqmp'); + + // now, make the key + var key = { + type: 'rsa', + parts: [ + { name: 'n', data: n }, + { name: 'e', data: e }, + { name: 'd', data: d }, + { name: 'iqmp', data: iqmp }, + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'dmodp', data: dmodp }, + { name: 'dmodq', data: dmodq } + ] + }; + + return (new PrivateKey(key)); +} + +function readPkcs8DSAPublic(der) { + der.readSequence(); + + var p = readMPInt(der, 'p'); + var q = readMPInt(der, 'q'); + var g = readMPInt(der, 'g'); + + // bit string sequence + der.readSequence(asn1.Ber.BitString); + der.readByte(); + + var y = readMPInt(der, 'y'); + + // now, make the key + var key = { + type: 'dsa', + parts: [ + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'g', data: g }, + { name: 'y', data: y } + ] + }; + + return (new Key(key)); +} + +function readPkcs8DSAPrivate(der) { + der.readSequence(); + + var p = readMPInt(der, 'p'); + var q = readMPInt(der, 'q'); + var g = readMPInt(der, 'g'); + + der.readSequence(asn1.Ber.OctetString); + var x = readMPInt(der, 'x'); + + /* The pkcs#8 format does not include the public key */ + var y = utils.calculateDSAPublic(g, p, x); + + var key = { + type: 'dsa', + parts: [ + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'g', data: g }, + { name: 'y', data: y }, + { name: 'x', data: x } + ] + }; + + return (new PrivateKey(key)); +} + +function readECDSACurve(der) { + var curveName, curveNames; + var j, c, cd; + + if (der.peek() === asn1.Ber.OID) { + var oid = der.readOID(); + + curveNames = Object.keys(algs.curves); + for (j = 0; j < curveNames.length; ++j) { + c = curveNames[j]; + cd = algs.curves[c]; + if (cd.pkcs8oid === oid) { + curveName = c; + break; + } + } + + } else { + // ECParameters sequence + der.readSequence(); + var version = der.readString(asn1.Ber.Integer, true); + assert.strictEqual(version[0], 1, 'ECDSA key not version 1'); + + var curve = {}; + + // FieldID sequence + der.readSequence(); + var fieldTypeOid = der.readOID(); + assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1', + 'ECDSA key is not from a prime-field'); + var p = curve.p = utils.mpNormalize( + der.readString(asn1.Ber.Integer, true)); + /* + * p always starts with a 1 bit, so count the zeros to get its + * real size. + */ + curve.size = p.length * 8 - utils.countZeros(p); + + // Curve sequence + der.readSequence(); + curve.a = utils.mpNormalize( + der.readString(asn1.Ber.OctetString, true)); + curve.b = utils.mpNormalize( + der.readString(asn1.Ber.OctetString, true)); + if (der.peek() === asn1.Ber.BitString) + curve.s = der.readString(asn1.Ber.BitString, true); + + // Combined Gx and Gy + curve.G = der.readString(asn1.Ber.OctetString, true); + assert.strictEqual(curve.G[0], 0x4, + 'uncompressed G is required'); + + curve.n = utils.mpNormalize( + der.readString(asn1.Ber.Integer, true)); + curve.h = utils.mpNormalize( + der.readString(asn1.Ber.Integer, true)); + assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' + + 'required'); + + curveNames = Object.keys(algs.curves); + var ks = Object.keys(curve); + for (j = 0; j < curveNames.length; ++j) { + c = curveNames[j]; + cd = algs.curves[c]; + var equal = true; + for (var i = 0; i < ks.length; ++i) { + var k = ks[i]; + if (cd[k] === undefined) + continue; + if (typeof (cd[k]) === 'object' && + cd[k].equals !== undefined) { + if (!cd[k].equals(curve[k])) { + equal = false; + break; + } + } else if (Buffer.isBuffer(cd[k])) { + if (cd[k].toString('binary') + !== curve[k].toString('binary')) { + equal = false; + break; + } + } else { + if (cd[k] !== curve[k]) { + equal = false; + break; + } + } + } + if (equal) { + curveName = c; + break; + } + } + } + return (curveName); +} + +function readPkcs8ECDSAPrivate(der) { + var curveName = readECDSACurve(der); + assert.string(curveName, 'a known elliptic curve'); + + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); + + var version = readMPInt(der, 'version'); + assert.equal(version[0], 1, 'unknown version of ECDSA key'); + + var d = der.readString(asn1.Ber.OctetString, true); + der.readSequence(0xa1); + + var Q = der.readString(asn1.Ber.BitString, true); + Q = utils.ecNormalize(Q); + + var key = { + type: 'ecdsa', + parts: [ + { name: 'curve', data: Buffer.from(curveName) }, + { name: 'Q', data: Q }, + { name: 'd', data: d } + ] + }; + + return (new PrivateKey(key)); +} + +function readPkcs8ECDSAPublic(der) { + var curveName = readECDSACurve(der); + assert.string(curveName, 'a known elliptic curve'); + + var Q = der.readString(asn1.Ber.BitString, true); + Q = utils.ecNormalize(Q); + + var key = { + type: 'ecdsa', + parts: [ + { name: 'curve', data: Buffer.from(curveName) }, + { name: 'Q', data: Q } + ] + }; + + return (new Key(key)); +} + +function readPkcs8EdDSAPublic(der) { + if (der.peek() === 0x00) + der.readByte(); + + var A = utils.readBitString(der); + + var key = { + type: 'ed25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) } + ] + }; + + return (new Key(key)); +} + +function readPkcs8X25519Public(der) { + var A = utils.readBitString(der); + + var key = { + type: 'curve25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) } + ] + }; + + return (new Key(key)); +} + +function readPkcs8EdDSAPrivate(der) { + if (der.peek() === 0x00) + der.readByte(); + + der.readSequence(asn1.Ber.OctetString); + var k = der.readString(asn1.Ber.OctetString, true); + k = utils.zeroPadToLength(k, 32); + + var A; + if (der.peek() === asn1.Ber.BitString) { + A = utils.readBitString(der); + A = utils.zeroPadToLength(A, 32); + } else { + A = utils.calculateED25519Public(k); + } + + var key = { + type: 'ed25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) }, + { name: 'k', data: utils.zeroPadToLength(k, 32) } + ] + }; + + return (new PrivateKey(key)); +} + +function readPkcs8X25519Private(der) { + if (der.peek() === 0x00) + der.readByte(); + + der.readSequence(asn1.Ber.OctetString); + var k = der.readString(asn1.Ber.OctetString, true); + k = utils.zeroPadToLength(k, 32); + + var A = utils.calculateX25519Public(k); + + var key = { + type: 'curve25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) }, + { name: 'k', data: utils.zeroPadToLength(k, 32) } + ] + }; + + return (new PrivateKey(key)); +} + +function writePkcs8(der, key) { + der.startSequence(); + + if (PrivateKey.isPrivateKey(key)) { + var sillyInt = Buffer.from([0]); + der.writeBuffer(sillyInt, asn1.Ber.Integer); + } + + der.startSequence(); + switch (key.type) { + case 'rsa': + der.writeOID('1.2.840.113549.1.1.1'); + if (PrivateKey.isPrivateKey(key)) + writePkcs8RSAPrivate(key, der); + else + writePkcs8RSAPublic(key, der); + break; + case 'dsa': + der.writeOID('1.2.840.10040.4.1'); + if (PrivateKey.isPrivateKey(key)) + writePkcs8DSAPrivate(key, der); + else + writePkcs8DSAPublic(key, der); + break; + case 'ecdsa': + der.writeOID('1.2.840.10045.2.1'); + if (PrivateKey.isPrivateKey(key)) + writePkcs8ECDSAPrivate(key, der); + else + writePkcs8ECDSAPublic(key, der); + break; + case 'ed25519': + der.writeOID('1.3.101.112'); + if (PrivateKey.isPrivateKey(key)) + throw (new Error('Ed25519 private keys in pkcs8 ' + + 'format are not supported')); + writePkcs8EdDSAPublic(key, der); + break; + default: + throw (new Error('Unsupported key type: ' + key.type)); + } + + der.endSequence(); +} + +function writePkcs8RSAPrivate(key, der) { + der.writeNull(); + der.endSequence(); + + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + + var version = Buffer.from([0]); + der.writeBuffer(version, asn1.Ber.Integer); + + der.writeBuffer(key.part.n.data, asn1.Ber.Integer); + der.writeBuffer(key.part.e.data, asn1.Ber.Integer); + der.writeBuffer(key.part.d.data, asn1.Ber.Integer); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + if (!key.part.dmodp || !key.part.dmodq) + utils.addRSAMissing(key); + der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); + der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); + der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); + + der.endSequence(); + der.endSequence(); +} + +function writePkcs8RSAPublic(key, der) { + der.writeNull(); + der.endSequence(); + + der.startSequence(asn1.Ber.BitString); + der.writeByte(0x00); + + der.startSequence(); + der.writeBuffer(key.part.n.data, asn1.Ber.Integer); + der.writeBuffer(key.part.e.data, asn1.Ber.Integer); + der.endSequence(); + + der.endSequence(); +} + +function writePkcs8DSAPrivate(key, der) { + der.startSequence(); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + der.writeBuffer(key.part.g.data, asn1.Ber.Integer); + der.endSequence(); + + der.endSequence(); + + der.startSequence(asn1.Ber.OctetString); + der.writeBuffer(key.part.x.data, asn1.Ber.Integer); + der.endSequence(); +} + +function writePkcs8DSAPublic(key, der) { + der.startSequence(); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + der.writeBuffer(key.part.g.data, asn1.Ber.Integer); + der.endSequence(); + der.endSequence(); + + der.startSequence(asn1.Ber.BitString); + der.writeByte(0x00); + der.writeBuffer(key.part.y.data, asn1.Ber.Integer); + der.endSequence(); +} + +function writeECDSACurve(key, der) { + var curve = algs.curves[key.curve]; + if (curve.pkcs8oid) { + /* This one has a name in pkcs#8, so just write the oid */ + der.writeOID(curve.pkcs8oid); + + } else { + // ECParameters sequence + der.startSequence(); + + var version = Buffer.from([1]); + der.writeBuffer(version, asn1.Ber.Integer); + + // FieldID sequence + der.startSequence(); + der.writeOID('1.2.840.10045.1.1'); // prime-field + der.writeBuffer(curve.p, asn1.Ber.Integer); + der.endSequence(); + + // Curve sequence + der.startSequence(); + var a = curve.p; + if (a[0] === 0x0) + a = a.slice(1); + der.writeBuffer(a, asn1.Ber.OctetString); + der.writeBuffer(curve.b, asn1.Ber.OctetString); + der.writeBuffer(curve.s, asn1.Ber.BitString); + der.endSequence(); + + der.writeBuffer(curve.G, asn1.Ber.OctetString); + der.writeBuffer(curve.n, asn1.Ber.Integer); + var h = curve.h; + if (!h) { + h = Buffer.from([1]); + } + der.writeBuffer(h, asn1.Ber.Integer); + + // ECParameters + der.endSequence(); + } +} + +function writePkcs8ECDSAPublic(key, der) { + writeECDSACurve(key, der); + der.endSequence(); + + var Q = utils.ecNormalize(key.part.Q.data, true); + der.writeBuffer(Q, asn1.Ber.BitString); +} + +function writePkcs8ECDSAPrivate(key, der) { + writeECDSACurve(key, der); + der.endSequence(); + + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + + var version = Buffer.from([1]); + der.writeBuffer(version, asn1.Ber.Integer); + + der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); + + der.startSequence(0xa1); + var Q = utils.ecNormalize(key.part.Q.data, true); + der.writeBuffer(Q, asn1.Ber.BitString); + der.endSequence(); + + der.endSequence(); + der.endSequence(); +} + +function writePkcs8EdDSAPublic(key, der) { + der.endSequence(); + + utils.writeBitString(der, key.part.A.data); +} + +function writePkcs8EdDSAPrivate(key, der) { + der.endSequence(); + + var k = utils.mpNormalize(key.part.k.data, true); + der.startSequence(asn1.Ber.OctetString); + der.writeBuffer(k, asn1.Ber.OctetString); + der.endSequence(); +} + + +/***/ }), +/* 158 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = Identity; + +var assert = __webpack_require__(16); +var algs = __webpack_require__(32); +var crypto = __webpack_require__(11); +var Fingerprint = __webpack_require__(156); +var Signature = __webpack_require__(75); +var errs = __webpack_require__(74); +var util = __webpack_require__(3); +var utils = __webpack_require__(26); +var asn1 = __webpack_require__(66); +var Buffer = __webpack_require__(15).Buffer; + +/*JSSTYLED*/ +var DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i; + +var oids = {}; +oids.cn = '2.5.4.3'; +oids.o = '2.5.4.10'; +oids.ou = '2.5.4.11'; +oids.l = '2.5.4.7'; +oids.s = '2.5.4.8'; +oids.c = '2.5.4.6'; +oids.sn = '2.5.4.4'; +oids.dc = '0.9.2342.19200300.100.1.25'; +oids.uid = '0.9.2342.19200300.100.1.1'; +oids.mail = '0.9.2342.19200300.100.1.3'; + +var unoids = {}; +Object.keys(oids).forEach(function (k) { + unoids[oids[k]] = k; +}); + +function Identity(opts) { + var self = this; + assert.object(opts, 'options'); + assert.arrayOfObject(opts.components, 'options.components'); + this.components = opts.components; + this.componentLookup = {}; + this.components.forEach(function (c) { + if (c.name && !c.oid) + c.oid = oids[c.name]; + if (c.oid && !c.name) + c.name = unoids[c.oid]; + if (self.componentLookup[c.name] === undefined) + self.componentLookup[c.name] = []; + self.componentLookup[c.name].push(c); + }); + if (this.componentLookup.cn && this.componentLookup.cn.length > 0) { + this.cn = this.componentLookup.cn[0].value; + } + assert.optionalString(opts.type, 'options.type'); + if (opts.type === undefined) { + if (this.components.length === 1 && + this.componentLookup.cn && + this.componentLookup.cn.length === 1 && + this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { + this.type = 'host'; + this.hostname = this.componentLookup.cn[0].value; + + } else if (this.componentLookup.dc && + this.components.length === this.componentLookup.dc.length) { + this.type = 'host'; + this.hostname = this.componentLookup.dc.map( + function (c) { + return (c.value); + }).join('.'); + + } else if (this.componentLookup.uid && + this.components.length === + this.componentLookup.uid.length) { + this.type = 'user'; + this.uid = this.componentLookup.uid[0].value; + + } else if (this.componentLookup.cn && + this.componentLookup.cn.length === 1 && + this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { + this.type = 'host'; + this.hostname = this.componentLookup.cn[0].value; + + } else if (this.componentLookup.uid && + this.componentLookup.uid.length === 1) { + this.type = 'user'; + this.uid = this.componentLookup.uid[0].value; + + } else if (this.componentLookup.mail && + this.componentLookup.mail.length === 1) { + this.type = 'email'; + this.email = this.componentLookup.mail[0].value; + + } else if (this.componentLookup.cn && + this.componentLookup.cn.length === 1) { + this.type = 'user'; + this.uid = this.componentLookup.cn[0].value; + + } else { + this.type = 'unknown'; + } + } else { + this.type = opts.type; + if (this.type === 'host') + this.hostname = opts.hostname; + else if (this.type === 'user') + this.uid = opts.uid; + else if (this.type === 'email') + this.email = opts.email; + else + throw (new Error('Unknown type ' + this.type)); + } +} + +Identity.prototype.toString = function () { + return (this.components.map(function (c) { + return (c.name.toUpperCase() + '=' + c.value); + }).join(', ')); +}; + +/* + * These are from X.680 -- PrintableString allowed chars are in section 37.4 + * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to + * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006 + * (the basic ASCII character set). + */ +/* JSSTYLED */ +var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/; +/* JSSTYLED */ +var NOT_IA5 = /[^\x00-\x7f]/; + +Identity.prototype.toAsn1 = function (der, tag) { + der.startSequence(tag); + this.components.forEach(function (c) { + der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set); + der.startSequence(); + der.writeOID(c.oid); + /* + * If we fit in a PrintableString, use that. Otherwise use an + * IA5String or UTF8String. + * + * If this identity was parsed from a DN, use the ASN.1 types + * from the original representation (otherwise this might not + * be a full match for the original in some validators). + */ + if (c.asn1type === asn1.Ber.Utf8String || + c.value.match(NOT_IA5)) { + var v = Buffer.from(c.value, 'utf8'); + der.writeBuffer(v, asn1.Ber.Utf8String); + + } else if (c.asn1type === asn1.Ber.IA5String || + c.value.match(NOT_PRINTABLE)) { + der.writeString(c.value, asn1.Ber.IA5String); + + } else { + var type = asn1.Ber.PrintableString; + if (c.asn1type !== undefined) + type = c.asn1type; + der.writeString(c.value, type); + } + der.endSequence(); + der.endSequence(); + }); + der.endSequence(); +}; + +function globMatch(a, b) { + if (a === '**' || b === '**') + return (true); + var aParts = a.split('.'); + var bParts = b.split('.'); + if (aParts.length !== bParts.length) + return (false); + for (var i = 0; i < aParts.length; ++i) { + if (aParts[i] === '*' || bParts[i] === '*') + continue; + if (aParts[i] !== bParts[i]) + return (false); + } + return (true); +} + +Identity.prototype.equals = function (other) { + if (!Identity.isIdentity(other, [1, 0])) + return (false); + if (other.components.length !== this.components.length) + return (false); + for (var i = 0; i < this.components.length; ++i) { + if (this.components[i].oid !== other.components[i].oid) + return (false); + if (!globMatch(this.components[i].value, + other.components[i].value)) { + return (false); + } + } + return (true); +}; + +Identity.forHost = function (hostname) { + assert.string(hostname, 'hostname'); + return (new Identity({ + type: 'host', + hostname: hostname, + components: [ { name: 'cn', value: hostname } ] + })); +}; + +Identity.forUser = function (uid) { + assert.string(uid, 'uid'); + return (new Identity({ + type: 'user', + uid: uid, + components: [ { name: 'uid', value: uid } ] + })); +}; + +Identity.forEmail = function (email) { + assert.string(email, 'email'); + return (new Identity({ + type: 'email', + email: email, + components: [ { name: 'mail', value: email } ] + })); +}; + +Identity.parseDN = function (dn) { + assert.string(dn, 'dn'); + var parts = dn.split(','); + var cmps = parts.map(function (c) { + c = c.trim(); + var eqPos = c.indexOf('='); + var name = c.slice(0, eqPos).toLowerCase(); + var value = c.slice(eqPos + 1); + return ({ name: name, value: value }); + }); + return (new Identity({ components: cmps })); +}; + +Identity.parseAsn1 = function (der, top) { + var components = []; + der.readSequence(top); + var end = der.offset + der.length; + while (der.offset < end) { + der.readSequence(asn1.Ber.Constructor | asn1.Ber.Set); + var after = der.offset + der.length; + der.readSequence(); + var oid = der.readOID(); + var type = der.peek(); + var value; + switch (type) { + case asn1.Ber.PrintableString: + case asn1.Ber.IA5String: + case asn1.Ber.OctetString: + case asn1.Ber.T61String: + value = der.readString(type); + break; + case asn1.Ber.Utf8String: + value = der.readString(type, true); + value = value.toString('utf8'); + break; + case asn1.Ber.CharacterString: + case asn1.Ber.BMPString: + value = der.readString(type, true); + value = value.toString('utf16le'); + break; + default: + throw (new Error('Unknown asn1 type ' + type)); + } + components.push({ oid: oid, asn1type: type, value: value }); + der._offset = after; + } + der._offset = end; + return (new Identity({ + components: components + })); +}; + +Identity.isIdentity = function (obj, ver) { + return (utils.isCompatible(obj, Identity, ver)); +}; + +/* + * API versions for Identity: + * [1,0] -- initial ver + */ +Identity.prototype._sshpkApiVersion = [1, 0]; + +Identity._oldVersionDetect = function (obj) { + return ([1, 0]); +}; + + +/***/ }), +/* 159 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = SSHBuffer; + +var assert = __webpack_require__(16); +var Buffer = __webpack_require__(15).Buffer; + +function SSHBuffer(opts) { + assert.object(opts, 'options'); + if (opts.buffer !== undefined) + assert.buffer(opts.buffer, 'options.buffer'); + + this._size = opts.buffer ? opts.buffer.length : 1024; + this._buffer = opts.buffer || Buffer.alloc(this._size); + this._offset = 0; +} + +SSHBuffer.prototype.toBuffer = function () { + return (this._buffer.slice(0, this._offset)); +}; + +SSHBuffer.prototype.atEnd = function () { + return (this._offset >= this._buffer.length); +}; + +SSHBuffer.prototype.remainder = function () { + return (this._buffer.slice(this._offset)); +}; + +SSHBuffer.prototype.skip = function (n) { + this._offset += n; +}; + +SSHBuffer.prototype.expand = function () { + this._size *= 2; + var buf = Buffer.alloc(this._size); + this._buffer.copy(buf, 0); + this._buffer = buf; +}; + +SSHBuffer.prototype.readPart = function () { + return ({data: this.readBuffer()}); +}; + +SSHBuffer.prototype.readBuffer = function () { + var len = this._buffer.readUInt32BE(this._offset); + this._offset += 4; + assert.ok(this._offset + len <= this._buffer.length, + 'length out of bounds at +0x' + this._offset.toString(16) + + ' (data truncated?)'); + var buf = this._buffer.slice(this._offset, this._offset + len); + this._offset += len; + return (buf); +}; + +SSHBuffer.prototype.readString = function () { + return (this.readBuffer().toString()); +}; + +SSHBuffer.prototype.readCString = function () { + var offset = this._offset; + while (offset < this._buffer.length && + this._buffer[offset] !== 0x00) + offset++; + assert.ok(offset < this._buffer.length, 'c string does not terminate'); + var str = this._buffer.slice(this._offset, offset).toString(); + this._offset = offset + 1; + return (str); +}; + +SSHBuffer.prototype.readInt = function () { + var v = this._buffer.readUInt32BE(this._offset); + this._offset += 4; + return (v); +}; + +SSHBuffer.prototype.readInt64 = function () { + assert.ok(this._offset + 8 < this._buffer.length, + 'buffer not long enough to read Int64'); + var v = this._buffer.slice(this._offset, this._offset + 8); + this._offset += 8; + return (v); +}; + +SSHBuffer.prototype.readChar = function () { + var v = this._buffer[this._offset++]; + return (v); +}; + +SSHBuffer.prototype.writeBuffer = function (buf) { + while (this._offset + 4 + buf.length > this._size) + this.expand(); + this._buffer.writeUInt32BE(buf.length, this._offset); + this._offset += 4; + buf.copy(this._buffer, this._offset); + this._offset += buf.length; +}; + +SSHBuffer.prototype.writeString = function (str) { + this.writeBuffer(Buffer.from(str, 'utf8')); +}; + +SSHBuffer.prototype.writeCString = function (str) { + while (this._offset + 1 + str.length > this._size) + this.expand(); + this._buffer.write(str, this._offset); + this._offset += str.length; + this._buffer[this._offset++] = 0; +}; + +SSHBuffer.prototype.writeInt = function (v) { + while (this._offset + 4 > this._size) + this.expand(); + this._buffer.writeUInt32BE(v, this._offset); + this._offset += 4; +}; + +SSHBuffer.prototype.writeInt64 = function (v) { + assert.buffer(v, 'value'); + if (v.length > 8) { + var lead = v.slice(0, v.length - 8); + for (var i = 0; i < lead.length; ++i) { + assert.strictEqual(lead[i], 0, + 'must fit in 64 bits of precision'); + } + v = v.slice(v.length - 8, v.length); + } + while (this._offset + 8 > this._size) + this.expand(); + v.copy(this._buffer, this._offset); + this._offset += 8; +}; + +SSHBuffer.prototype.writeChar = function (v) { + while (this._offset + 1 > this._size) + this.expand(); + this._buffer[this._offset++] = v; +}; + +SSHBuffer.prototype.writePart = function (p) { + this.writeBuffer(p.data); +}; + +SSHBuffer.prototype.write = function (buf) { + while (this._offset + buf.length > this._size) + this.expand(); + buf.copy(this._buffer, this._offset); + this._offset += buf.length; +}; + + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = x => { + if (typeof x !== 'string') { + throw new TypeError('Expected a string, got ' + typeof x); + } + + // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string + // conversion translates it to FEFF (UTF-16 BOM) + if (x.charCodeAt(0) === 0xFEFF) { + return x.slice(1); + } + + return x; +}; + + +/***/ }), +/* 161 */ +/***/ (function(module, exports) { + +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + + +/***/ }), +/* 162 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(21)); +} + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +exports.extractWorkspaces = extractWorkspaces; + +var _executeLifecycleScript; + +function _load_executeLifecycleScript() { + return _executeLifecycleScript = __webpack_require__(111); +} + +var _path; + +function _load_path() { + return _path = __webpack_require__(377); +} + +var _conversion; + +function _load_conversion() { + return _conversion = __webpack_require__(336); +} + +var _index; + +function _load_index() { + return _index = _interopRequireDefault(__webpack_require__(220)); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _packageConstraintResolver; + +function _load_packageConstraintResolver() { + return _packageConstraintResolver = _interopRequireDefault(__webpack_require__(555)); +} + +var _requestManager; + +function _load_requestManager() { + return _requestManager = _interopRequireDefault(__webpack_require__(378)); +} + +var _index2; + +function _load_index2() { + return _index2 = __webpack_require__(57); +} + +var _index3; + +function _load_index3() { + return _index3 = __webpack_require__(200); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +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 }; } + +const crypto = __webpack_require__(11); +const detectIndent = __webpack_require__(635); +const invariant = __webpack_require__(9); +const path = __webpack_require__(0); +const micromatch = __webpack_require__(114); +const isCi = __webpack_require__(397); + +function sortObject(object) { + const sortedObject = {}; + Object.keys(object).sort().forEach(item => { + sortedObject[item] = object[item]; + }); + return sortedObject; +} + +class Config { + constructor(reporter) { + this.constraintResolver = new (_packageConstraintResolver || _load_packageConstraintResolver()).default(this, reporter); + this.requestManager = new (_requestManager || _load_requestManager()).default(reporter); + this.reporter = reporter; + this._init({}); + } + + // + + + // + + + // cache packages in offline mirror folder as new .tgz files + + + // + + + // + + + // + + + // + + + // + + + // + + + // + + + // + + + // + + + // + + + // + + + // Whether we should ignore executing lifecycle scripts + + + // + + + // + + + // + + + // + + + /** + * Execute a promise produced by factory if it doesn't exist in our cache with + * the associated key. + */ + + getCache(key, factory) { + const cached = this.cache[key]; + if (cached) { + return cached; + } + + return this.cache[key] = factory().catch(err => { + this.cache[key] = null; + throw err; + }); + } + + /** + * Get a config option from our yarn config. + */ + + getOption(key, resolve = false) { + const value = this.registries.yarn.getOption(key); + + if (resolve && typeof value === 'string' && value.length) { + return (0, (_path || _load_path()).resolveWithHome)(value); + } + + return value; + } + + /** + * Reduce a list of versions to a single one based on an input range. + */ + + resolveConstraints(versions, range) { + return this.constraintResolver.reduce(versions, range); + } + + /** + * Initialise config. Fetch registry options, find package roots. + */ + + init(opts = {}) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + _this._init(opts); + + _this.workspaceRootFolder = yield _this.findWorkspaceRoot(_this.cwd); + _this.lockfileFolder = _this.workspaceRootFolder || _this.cwd; + + // using focus in a workspace root is not allowed + if (_this.focus && (!_this.workspaceRootFolder || _this.cwd === _this.workspaceRootFolder)) { + throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('workspacesFocusRootCheck')); + } + + if (_this.focus) { + const focusedWorkspaceManifest = yield _this.readRootManifest(); + _this.focusedWorkspaceName = focusedWorkspaceManifest.name; + } + + _this.linkedModules = []; + + let linkedModules; + try { + linkedModules = yield (_fs || _load_fs()).readdir(_this.linkFolder); + } catch (err) { + if (err.code === 'ENOENT') { + linkedModules = []; + } else { + throw err; + } + } + + for (var _iterator = linkedModules, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const dir = _ref; + + const linkedPath = path.join(_this.linkFolder, dir); + + if (dir[0] === '@') { + // it's a scope, not a package + const scopedLinked = yield (_fs || _load_fs()).readdir(linkedPath); + _this.linkedModules.push(...scopedLinked.map(function (scopedDir) { + return path.join(dir, scopedDir); + })); + } else { + _this.linkedModules.push(dir); + } + } + + for (var _iterator2 = Object.keys((_index2 || _load_index2()).registries), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + const key = _ref2; + + const Registry = (_index2 || _load_index2()).registries[key]; + + const extraneousRcFiles = Registry === (_index2 || _load_index2()).registries.yarn ? _this.extraneousYarnrcFiles : []; + + // instantiate registry + const registry = new Registry(_this.cwd, _this.registries, _this.requestManager, _this.reporter, _this.enableDefaultRc, extraneousRcFiles); + yield registry.init({ + registry: opts.registry + }); + + _this.registries[key] = registry; + if (_this.registryFolders.indexOf(registry.folder) === -1) { + _this.registryFolders.push(registry.folder); + } + } + + if (_this.modulesFolder) { + _this.registryFolders = [_this.modulesFolder]; + } + + _this.networkConcurrency = opts.networkConcurrency || Number(_this.getOption('network-concurrency')) || (_constants || _load_constants()).NETWORK_CONCURRENCY; + + _this.childConcurrency = opts.childConcurrency || Number(_this.getOption('child-concurrency')) || Number(process.env.CHILD_CONCURRENCY) || (_constants || _load_constants()).CHILD_CONCURRENCY; + + _this.networkTimeout = opts.networkTimeout || Number(_this.getOption('network-timeout')) || (_constants || _load_constants()).NETWORK_TIMEOUT; + + const httpProxy = opts.httpProxy || _this.getOption('proxy'); + const httpsProxy = opts.httpsProxy || _this.getOption('https-proxy'); + _this.requestManager.setOptions({ + userAgent: String(_this.getOption('user-agent')), + httpProxy: httpProxy === false ? false : String(httpProxy || ''), + httpsProxy: httpsProxy === false ? false : String(httpsProxy || ''), + strictSSL: Boolean(_this.getOption('strict-ssl')), + ca: Array.prototype.concat(opts.ca || _this.getOption('ca') || []).map(String), + cafile: String(opts.cafile || _this.getOption('cafile', true) || ''), + cert: String(opts.cert || _this.getOption('cert') || ''), + key: String(opts.key || _this.getOption('key') || ''), + networkConcurrency: _this.networkConcurrency, + networkTimeout: _this.networkTimeout + }); + + _this.globalFolder = opts.globalFolder || String(_this.getOption('global-folder', true)); + if (_this.globalFolder === 'undefined') { + _this.globalFolder = (_constants || _load_constants()).GLOBAL_MODULE_DIRECTORY; + } + + let cacheRootFolder = opts.cacheFolder || _this.getOption('cache-folder', true); + + if (!cacheRootFolder) { + let preferredCacheFolders = (_constants || _load_constants()).PREFERRED_MODULE_CACHE_DIRECTORIES; + const preferredCacheFolder = opts.preferredCacheFolder || _this.getOption('preferred-cache-folder', true); + + if (preferredCacheFolder) { + preferredCacheFolders = [String(preferredCacheFolder)].concat(preferredCacheFolders); + } + + const cacheFolderQuery = yield (_fs || _load_fs()).getFirstSuitableFolder(preferredCacheFolders, (_fs || _load_fs()).constants.W_OK | (_fs || _load_fs()).constants.X_OK | (_fs || _load_fs()).constants.R_OK // eslint-disable-line no-bitwise + ); + for (var _iterator3 = cacheFolderQuery.skipped, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + const skippedEntry = _ref3; + + _this.reporter.warn(_this.reporter.lang('cacheFolderSkipped', skippedEntry.folder)); + } + + cacheRootFolder = cacheFolderQuery.folder; + if (cacheRootFolder && cacheFolderQuery.skipped.length > 0) { + _this.reporter.warn(_this.reporter.lang('cacheFolderSelected', cacheRootFolder)); + } + } + + if (!cacheRootFolder) { + throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('cacheFolderMissing')); + } else { + _this._cacheRootFolder = String(cacheRootFolder); + } + + const manifest = yield _this.maybeReadManifest(_this.lockfileFolder); + + const plugnplayByEnv = _this.getOption('plugnplay-override'); + if (plugnplayByEnv != null) { + _this.plugnplayEnabled = plugnplayByEnv !== 'false' && plugnplayByEnv !== '0'; + _this.plugnplayPersist = false; + } else if (opts.enablePnp || opts.disablePnp) { + _this.plugnplayEnabled = !!opts.enablePnp; + _this.plugnplayPersist = true; + } else if (manifest && manifest.installConfig && manifest.installConfig.pnp) { + _this.plugnplayEnabled = !!manifest.installConfig.pnp; + _this.plugnplayPersist = false; + } else { + _this.plugnplayEnabled = false; + _this.plugnplayPersist = false; + } + + if (process.platform === 'win32') { + const cacheRootFolderDrive = path.parse(_this._cacheRootFolder).root.toLowerCase(); + const lockfileFolderDrive = path.parse(_this.lockfileFolder).root.toLowerCase(); + + if (cacheRootFolderDrive !== lockfileFolderDrive) { + if (_this.plugnplayEnabled) { + _this.reporter.warn(_this.reporter.lang('plugnplayWindowsSupport')); + } + _this.plugnplayEnabled = false; + _this.plugnplayPersist = false; + } + } + + _this.plugnplayShebang = String(_this.getOption('plugnplay-shebang') || '') || '/usr/bin/env node'; + _this.plugnplayBlacklist = String(_this.getOption('plugnplay-blacklist') || '') || null; + + _this.ignoreScripts = opts.ignoreScripts || Boolean(_this.getOption('ignore-scripts', false)); + + _this.workspacesEnabled = _this.getOption('workspaces-experimental') !== false; + _this.workspacesNohoistEnabled = _this.getOption('workspaces-nohoist-experimental') !== false; + + _this.offlineCacheFolder = String(_this.getOption('offline-cache-folder') || '') || null; + + _this.pruneOfflineMirror = Boolean(_this.getOption('yarn-offline-mirror-pruning')); + _this.enableMetaFolder = Boolean(_this.getOption('enable-meta-folder')); + _this.enableLockfileVersions = Boolean(_this.getOption('yarn-enable-lockfile-versions')); + _this.linkFileDependencies = Boolean(_this.getOption('yarn-link-file-dependencies')); + _this.packBuiltPackages = Boolean(_this.getOption('experimental-pack-script-packages-in-mirror')); + + _this.autoAddIntegrity = !(0, (_conversion || _load_conversion()).boolifyWithDefault)(String(_this.getOption('unsafe-disable-integrity-migration')), true); + + //init & create cacheFolder, tempFolder + _this.cacheFolder = path.join(_this._cacheRootFolder, 'v' + String((_constants || _load_constants()).CACHE_VERSION)); + _this.tempFolder = opts.tempFolder || path.join(_this.cacheFolder, '.tmp'); + yield (_fs || _load_fs()).mkdirp(_this.cacheFolder); + yield (_fs || _load_fs()).mkdirp(_this.tempFolder); + + if (opts.production !== undefined) { + _this.production = Boolean(opts.production); + } else { + _this.production = Boolean(_this.getOption('production')) || process.env.NODE_ENV === 'production' && process.env.NPM_CONFIG_PRODUCTION !== 'false' && process.env.YARN_PRODUCTION !== 'false'; + } + + if (_this.workspaceRootFolder && !_this.workspacesEnabled) { + throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('workspacesDisabled')); + } + })(); + } + + _init(opts) { + this.registryFolders = []; + this.linkedModules = []; + + this.registries = (0, (_map || _load_map()).default)(); + this.cache = (0, (_map || _load_map()).default)(); + + // Ensure the cwd is always an absolute path. + this.cwd = path.resolve(opts.cwd || this.cwd || process.cwd()); + + this.looseSemver = opts.looseSemver == undefined ? true : opts.looseSemver; + + this.commandName = opts.commandName || ''; + + this.enableDefaultRc = opts.enableDefaultRc !== false; + this.extraneousYarnrcFiles = opts.extraneousYarnrcFiles || []; + + this.preferOffline = !!opts.preferOffline; + this.modulesFolder = opts.modulesFolder; + this.linkFolder = opts.linkFolder || (_constants || _load_constants()).LINK_REGISTRY_DIRECTORY; + this.offline = !!opts.offline; + this.binLinks = !!opts.binLinks; + this.updateChecksums = !!opts.updateChecksums; + this.plugnplayUnplugged = []; + this.plugnplayPurgeUnpluggedPackages = false; + + this.ignorePlatform = !!opts.ignorePlatform; + this.ignoreScripts = !!opts.ignoreScripts; + + this.disablePrepublish = !!opts.disablePrepublish; + + // $FlowFixMe$ + this.nonInteractive = !!opts.nonInteractive || isCi || !process.stdout.isTTY; + + this.requestManager.setOptions({ + offline: !!opts.offline && !opts.preferOffline, + captureHar: !!opts.captureHar + }); + + this.focus = !!opts.focus; + this.focusedWorkspaceName = ''; + + this.otp = opts.otp || ''; + } + + /** + * Generate a name suitable as unique filesystem identifier for the specified package. + */ + + generateUniquePackageSlug(pkg) { + let slug = pkg.name; + + slug = slug.replace(/[^@a-z0-9]+/g, '-'); + slug = slug.replace(/^-+|-+$/g, ''); + + if (pkg.registry) { + slug = `${pkg.registry}-${slug}`; + } else { + slug = `unknown-${slug}`; + } + + const hash = pkg.remote.hash; + + + if (pkg.version) { + slug += `-${pkg.version}`; + } + + if (pkg.uid && pkg.version !== pkg.uid) { + slug += `-${pkg.uid}`; + } else if (hash) { + slug += `-${hash}`; + } + + if (pkg.remote.integrity) { + slug += `-integrity`; + } + + return slug; + } + + /** + * Generate an absolute module path. + */ + + generateModuleCachePath(pkg) { + invariant(this.cacheFolder, 'No package root'); + invariant(pkg, 'Undefined package'); + + const slug = this.generateUniquePackageSlug(pkg); + return path.join(this.cacheFolder, slug, 'node_modules', pkg.name); + } + + /** + */ + + getUnpluggedPath() { + return path.join(this.lockfileFolder, '.pnp', 'unplugged'); + } + + /** + */ + + generatePackageUnpluggedPath(pkg) { + const slug = this.generateUniquePackageSlug(pkg); + return path.join(this.getUnpluggedPath(), slug, 'node_modules', pkg.name); + } + + /** + */ + + listUnpluggedPackageFolders() { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const unpluggedPackages = new Map(); + const unpluggedPath = _this2.getUnpluggedPath(); + + if (!(yield (_fs || _load_fs()).exists(unpluggedPath))) { + return unpluggedPackages; + } + + for (var _iterator4 = yield (_fs || _load_fs()).readdir(unpluggedPath), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; + } + + const unpluggedName = _ref4; + + const nmListing = yield (_fs || _load_fs()).readdir(path.join(unpluggedPath, unpluggedName, 'node_modules')); + invariant(nmListing.length === 1, 'A single folder should be in the unplugged directory'); + + const target = path.join(unpluggedPath, unpluggedName, `node_modules`, nmListing[0]); + unpluggedPackages.set(unpluggedName, target); + } + + return unpluggedPackages; + })(); + } + + /** + * Execute lifecycle scripts in the specified directory. Ignoring when the --ignore-scripts flag has been + * passed. + */ + + executeLifecycleScript(commandName, cwd) { + if (this.ignoreScripts) { + return Promise.resolve(); + } else { + return (0, (_executeLifecycleScript || _load_executeLifecycleScript()).execFromManifest)(this, commandName, cwd || this.cwd); + } + } + + /** + * Generate an absolute temporary filename location based on the input filename. + */ + + getTemp(filename) { + invariant(this.tempFolder, 'No temp folder'); + return path.join(this.tempFolder, filename); + } + + /** + * Remote packages may be cached in a file system to be available for offline installation. + * Second time the same package needs to be installed it will be loaded from there. + * Given a package's filename, return a path in the offline mirror location. + */ + + getOfflineMirrorPath(packageFilename) { + let mirrorPath; + + var _arr = ['npm', 'yarn']; + for (var _i5 = 0; _i5 < _arr.length; _i5++) { + const key = _arr[_i5]; + const registry = this.registries[key]; + + if (registry == null) { + continue; + } + + const registryMirrorPath = registry.config['yarn-offline-mirror']; + + if (registryMirrorPath === false) { + return null; + } + + if (registryMirrorPath == null) { + continue; + } + + mirrorPath = registryMirrorPath; + } + + if (mirrorPath == null) { + return null; + } + + if (packageFilename == null) { + return mirrorPath; + } + + return path.join(mirrorPath, path.basename(packageFilename)); + } + + /** + * Checker whether the folder input is a valid module folder. We output a yarn metadata + * file when we've successfully setup a folder so use this as a marker. + */ + + isValidModuleDest(dest) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (!(yield (_fs || _load_fs()).exists(dest))) { + return false; + } + + if (!(yield (_fs || _load_fs()).exists(path.join(dest, (_constants || _load_constants()).METADATA_FILENAME)))) { + return false; + } + + return true; + })(); + } + + /** + * Read package metadata and normalized package info. + */ + + readPackageMetadata(dir) { + var _this3 = this; + + return this.getCache(`metadata-${dir}`, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const metadata = yield _this3.readJson(path.join(dir, (_constants || _load_constants()).METADATA_FILENAME)); + const pkg = yield _this3.readManifest(dir, metadata.registry); + + return { + package: pkg, + artifacts: metadata.artifacts || [], + hash: metadata.hash, + remote: metadata.remote, + registry: metadata.registry + }; + })); + } + + /** + * Read normalized package info according yarn-metadata.json + * throw an error if package.json was not found + */ + + readManifest(dir, priorityRegistry, isRoot = false) { + var _this4 = this; + + return this.getCache(`manifest-${dir}`, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const manifest = yield _this4.maybeReadManifest(dir, priorityRegistry, isRoot); + + if (manifest) { + return manifest; + } else { + throw new (_errors || _load_errors()).MessageError(_this4.reporter.lang('couldntFindPackagejson', dir), 'ENOENT'); + } + })); + } + + /** + * try get the manifest file by looking + * 1. manifest file in cache + * 2. manifest file in registry + */ + maybeReadManifest(dir, priorityRegistry, isRoot = false) { + var _this5 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const metadataLoc = path.join(dir, (_constants || _load_constants()).METADATA_FILENAME); + + if (yield (_fs || _load_fs()).exists(metadataLoc)) { + const metadata = yield _this5.readJson(metadataLoc); + + if (!priorityRegistry) { + priorityRegistry = metadata.priorityRegistry; + } + + if (typeof metadata.manifest !== 'undefined') { + return metadata.manifest; + } + } + + if (priorityRegistry) { + const file = yield _this5.tryManifest(dir, priorityRegistry, isRoot); + if (file) { + return file; + } + } + + for (var _iterator5 = Object.keys((_index2 || _load_index2()).registries), _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref7; + + if (_isArray5) { + if (_i6 >= _iterator5.length) break; + _ref7 = _iterator5[_i6++]; + } else { + _i6 = _iterator5.next(); + if (_i6.done) break; + _ref7 = _i6.value; + } + + const registry = _ref7; + + if (priorityRegistry === registry) { + continue; + } + + const file = yield _this5.tryManifest(dir, registry, isRoot); + if (file) { + return file; + } + } + + return null; + })(); + } + + /** + * Read the root manifest. + */ + + readRootManifest() { + return this.readManifest(this.cwd, 'npm', true); + } + + /** + * Try and find package info with the input directory and registry. + */ + + tryManifest(dir, registry, isRoot) { + var _this6 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const filename = (_index2 || _load_index2()).registries[registry].filename; + + const loc = path.join(dir, filename); + if (yield (_fs || _load_fs()).exists(loc)) { + const data = yield _this6.readJson(loc); + data._registry = registry; + data._loc = loc; + return (0, (_index || _load_index()).default)(data, dir, _this6, isRoot); + } else { + return null; + } + })(); + } + + findManifest(dir, isRoot) { + var _this7 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + for (var _iterator6 = (_index2 || _load_index2()).registryNames, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref8; + + if (_isArray6) { + if (_i7 >= _iterator6.length) break; + _ref8 = _iterator6[_i7++]; + } else { + _i7 = _iterator6.next(); + if (_i7.done) break; + _ref8 = _i7.value; + } + + const registry = _ref8; + + const manifest = yield _this7.tryManifest(dir, registry, isRoot); + + if (manifest) { + return manifest; + } + } + + return null; + })(); + } + + findWorkspaceRoot(initial) { + var _this8 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let previous = null; + let current = path.normalize(initial); + if (!(yield (_fs || _load_fs()).exists(current))) { + throw new (_errors || _load_errors()).MessageError(_this8.reporter.lang('folderMissing', current)); + } + + do { + const manifest = yield _this8.findManifest(current, true); + const ws = extractWorkspaces(manifest); + if (ws && ws.packages) { + const relativePath = path.relative(current, initial); + if (relativePath === '' || micromatch([relativePath], ws.packages).length > 0) { + return current; + } else { + return null; + } + } + + previous = current; + current = path.dirname(current); + } while (current !== previous); + + return null; + })(); + } + + resolveWorkspaces(root, rootManifest) { + var _this9 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const workspaces = {}; + if (!_this9.workspacesEnabled) { + return workspaces; + } + + const ws = _this9.getWorkspaces(rootManifest, true); + const patterns = ws && ws.packages ? ws.packages : []; + + if (!Array.isArray(patterns)) { + throw new (_errors || _load_errors()).MessageError(_this9.reporter.lang('workspacesSettingMustBeArray')); + } + + const registryFilenames = (_index2 || _load_index2()).registryNames.map(function (registryName) { + return _this9.registries[registryName].constructor.filename; + }).join('|'); + const trailingPattern = `/+(${registryFilenames})`; + // anything under folder (node_modules) should be ignored, thus use the '**' instead of shallow match "*" + const ignorePatterns = _this9.registryFolders.map(function (folder) { + return `/${folder}/**/+(${registryFilenames})`; + }); + + const files = yield Promise.all(patterns.map(function (pattern) { + return (_fs || _load_fs()).glob(pattern.replace(/\/?$/, trailingPattern), { + cwd: root, + ignore: ignorePatterns.map(function (ignorePattern) { + return pattern.replace(/\/?$/, ignorePattern); + }) + }); + })); + + for (var _iterator7 = new Set([].concat(...files)), _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref9; + + if (_isArray7) { + if (_i8 >= _iterator7.length) break; + _ref9 = _iterator7[_i8++]; + } else { + _i8 = _iterator7.next(); + if (_i8.done) break; + _ref9 = _i8.value; + } + + const file = _ref9; + + const loc = path.join(root, path.dirname(file)); + const manifest = yield _this9.findManifest(loc, false); + + if (!manifest) { + continue; + } + + if (!manifest.name) { + _this9.reporter.warn(_this9.reporter.lang('workspaceNameMandatory', loc)); + continue; + } + if (!manifest.version) { + _this9.reporter.warn(_this9.reporter.lang('workspaceVersionMandatory', loc)); + continue; + } + + if (Object.prototype.hasOwnProperty.call(workspaces, manifest.name)) { + throw new (_errors || _load_errors()).MessageError(_this9.reporter.lang('workspaceNameDuplicate', manifest.name)); + } + + workspaces[manifest.name] = { loc, manifest }; + } + + return workspaces; + })(); + } + + // workspaces functions + getWorkspaces(manifest, shouldThrow = false) { + if (!manifest || !this.workspacesEnabled) { + return undefined; + } + + const ws = extractWorkspaces(manifest); + + if (!ws) { + return ws; + } + + // validate eligibility + let wsCopy = (0, (_extends2 || _load_extends()).default)({}, ws); + const warnings = []; + const errors = []; + + // packages + if (wsCopy.packages && wsCopy.packages.length > 0 && !manifest.private) { + errors.push(this.reporter.lang('workspacesRequirePrivateProjects')); + wsCopy = undefined; + } + // nohoist + if (wsCopy && wsCopy.nohoist && wsCopy.nohoist.length > 0) { + if (!this.workspacesNohoistEnabled) { + warnings.push(this.reporter.lang('workspacesNohoistDisabled', manifest.name)); + wsCopy.nohoist = undefined; + } else if (!manifest.private) { + errors.push(this.reporter.lang('workspacesNohoistRequirePrivatePackages', manifest.name)); + wsCopy.nohoist = undefined; + } + } + + if (errors.length > 0 && shouldThrow) { + throw new (_errors || _load_errors()).MessageError(errors.join('\n')); + } + + const msg = errors.concat(warnings).join('\n'); + if (msg.length > 0) { + this.reporter.warn(msg); + } + + return wsCopy; + } + + /** + * Description + */ + + getFolder(pkg) { + let registryName = pkg._registry; + if (!registryName) { + const ref = pkg._reference; + invariant(ref, 'expected reference'); + registryName = ref.registry; + } + return this.registries[registryName].folder; + } + + /** + * Get root manifests. + */ + + getRootManifests() { + var _this10 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const manifests = {}; + for (var _iterator8 = (_index2 || _load_index2()).registryNames, _isArray8 = Array.isArray(_iterator8), _i9 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref10; + + if (_isArray8) { + if (_i9 >= _iterator8.length) break; + _ref10 = _iterator8[_i9++]; + } else { + _i9 = _iterator8.next(); + if (_i9.done) break; + _ref10 = _i9.value; + } + + const registryName = _ref10; + + const registry = (_index2 || _load_index2()).registries[registryName]; + const jsonLoc = path.join(_this10.cwd, registry.filename); + + let object = {}; + let exists = false; + let indent; + if (yield (_fs || _load_fs()).exists(jsonLoc)) { + exists = true; + + const info = yield _this10.readJson(jsonLoc, (_fs || _load_fs()).readJsonAndFile); + object = info.object; + indent = detectIndent(info.content).indent || undefined; + } + manifests[registryName] = { loc: jsonLoc, object, exists, indent }; + } + return manifests; + })(); + } + + /** + * Save root manifests. + */ + + saveRootManifests(manifests) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + for (var _iterator9 = (_index2 || _load_index2()).registryNames, _isArray9 = Array.isArray(_iterator9), _i10 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { + var _ref11; + + if (_isArray9) { + if (_i10 >= _iterator9.length) break; + _ref11 = _iterator9[_i10++]; + } else { + _i10 = _iterator9.next(); + if (_i10.done) break; + _ref11 = _i10.value; + } + + const registryName = _ref11; + var _manifests$registryNa = manifests[registryName]; + const loc = _manifests$registryNa.loc, + object = _manifests$registryNa.object, + exists = _manifests$registryNa.exists, + indent = _manifests$registryNa.indent; + + if (!exists && !Object.keys(object).length) { + continue; + } + + for (var _iterator10 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { + var _ref12; + + if (_isArray10) { + if (_i11 >= _iterator10.length) break; + _ref12 = _iterator10[_i11++]; + } else { + _i11 = _iterator10.next(); + if (_i11.done) break; + _ref12 = _i11.value; + } + + const field = _ref12; + + if (object[field]) { + object[field] = sortObject(object[field]); + } + } + + yield (_fs || _load_fs()).writeFilePreservingEol(loc, JSON.stringify(object, null, indent || (_constants || _load_constants()).DEFAULT_INDENT) + '\n'); + } + })(); + } + + /** + * Call the passed factory (defaults to fs.readJson) and rethrow a pretty error message if it was the result + * of a syntax error. + */ + + readJson(loc, factory = (_fs || _load_fs()).readJson) { + try { + return factory(loc); + } catch (err) { + if (err instanceof SyntaxError) { + throw new (_errors || _load_errors()).MessageError(this.reporter.lang('jsonError', loc, err.message)); + } else { + throw err; + } + } + } + + static create(opts = {}, reporter = new (_index3 || _load_index3()).NoopReporter()) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const config = new Config(reporter); + yield config.init(opts); + return config; + })(); + } +} + +exports.default = Config; +function extractWorkspaces(manifest) { + if (!manifest || !manifest.workspaces) { + return undefined; + } + + if (Array.isArray(manifest.workspaces)) { + return { packages: manifest.workspaces }; + } + + if (manifest.workspaces.packages && Array.isArray(manifest.workspaces.packages) || manifest.workspaces.nohoist && Array.isArray(manifest.workspaces.nohoist)) { + return manifest.workspaces; + } + + return undefined; +} + +/***/ }), +/* 163 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 164 */ +/***/ (function(module, exports) { + +module.exports = require("net"); + +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.run = exports.Add = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(21)); +} + +let run = exports.run = (() => { + var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { + if (!args.length) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('missingAddDependencies')); + } + + const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter); + + yield (0, (_install || _load_install()).wrapLifecycle)(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const install = new Add(args, flags, config, reporter, lockfile); + yield install.init(); + })); + }); + + return function run(_x, _x2, _x3, _x4) { + return _ref7.apply(this, arguments); + }; +})(); + +exports.hasWrapper = hasWrapper; +exports.setFlags = setFlags; + +var _lockfile; + +function _load_lockfile() { + return _lockfile = _interopRequireDefault(__webpack_require__(19)); +} + +var _normalizePattern2; + +function _load_normalizePattern() { + return _normalizePattern2 = __webpack_require__(37); +} + +var _workspaceLayout; + +function _load_workspaceLayout() { + return _workspaceLayout = _interopRequireDefault(__webpack_require__(90)); +} + +var _index; + +function _load_index() { + return _index = __webpack_require__(78); +} + +var _list; + +function _load_list() { + return _list = __webpack_require__(358); +} + +var _install; + +function _load_install() { + return _install = __webpack_require__(34); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _invariant; + +function _load_invariant() { + return _invariant = _interopRequireDefault(__webpack_require__(9)); +} + +var _path; + +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} + +var _semver; + +function _load_semver() { + return _semver = _interopRequireDefault(__webpack_require__(22)); +} + +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 }; } + +const SILENCE_DEPENDENCY_TYPE_WARNINGS = ['upgrade', 'upgrade-interactive']; + +class Add extends (_install || _load_install()).Install { + constructor(args, flags, config, reporter, lockfile) { + const workspaceRootIsCwd = config.cwd === config.lockfileFolder; + const _flags = flags ? (0, (_extends2 || _load_extends()).default)({}, flags, { workspaceRootIsCwd }) : { workspaceRootIsCwd }; + super(_flags, config, reporter, lockfile); + this.args = args; + // only one flag is supported, so we can figure out which one was passed to `yarn add` + this.flagToOrigin = [flags.dev && 'devDependencies', flags.optional && 'optionalDependencies', flags.peer && 'peerDependencies', 'dependencies'].filter(Boolean).shift(); + } + + /** + * TODO + */ + + prepareRequests(requests) { + const requestsWithArgs = requests.slice(); + + for (var _iterator = this.args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const pattern = _ref; + + requestsWithArgs.push({ + pattern, + registry: 'npm', + optional: false + }); + } + return requestsWithArgs; + } + + /** + * returns version for a pattern based on Manifest + */ + getPatternVersion(pattern, pkg) { + const tilde = this.flags.tilde; + const configPrefix = String(this.config.getOption('save-prefix')); + const exact = this.flags.exact || Boolean(this.config.getOption('save-exact')) || configPrefix === ''; + + var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern); + + const hasVersion = _normalizePattern.hasVersion, + range = _normalizePattern.range; + + let version; + + if ((0, (_index || _load_index()).getExoticResolver)(pattern)) { + // wasn't a name/range tuple so this is just a raw exotic pattern + version = pattern; + } else if (hasVersion && range && ((_semver || _load_semver()).default.satisfies(pkg.version, range) || (0, (_index || _load_index()).getExoticResolver)(range))) { + // if the user specified a range then use it verbatim + version = range; + } + + if (!version || (_semver || _load_semver()).default.valid(version)) { + let prefix = configPrefix || '^'; + + if (tilde) { + prefix = '~'; + } else if (version || exact) { + prefix = ''; + } + version = `${prefix}${pkg.version}`; + } + + return version; + } + + preparePatterns(patterns) { + const preparedPatterns = patterns.slice(); + for (var _iterator2 = this.resolver.dedupePatterns(this.args), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + const pattern = _ref2; + + const pkg = this.resolver.getResolvedPattern(pattern); + (0, (_invariant || _load_invariant()).default)(pkg, `missing package ${pattern}`); + const version = this.getPatternVersion(pattern, pkg); + const newPattern = `${pkg.name}@${version}`; + preparedPatterns.push(newPattern); + this.addedPatterns.push(newPattern); + if (newPattern === pattern) { + continue; + } + this.resolver.replacePattern(pattern, newPattern); + } + return preparedPatterns; + } + + preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) { + // remove the newly added patterns if cwd != root and update the in-memory package dependency instead + if (cwdIsRoot) { + return patterns; + } + + let manifest; + const cwdPackage = `${cwdManifest.name}@${cwdManifest.version}`; + try { + manifest = this.resolver.getStrictResolvedPattern(cwdPackage); + } catch (e) { + this.reporter.warn(this.reporter.lang('unknownPackage', cwdPackage)); + return patterns; + } + + let newPatterns = patterns; + this._iterateAddedPackages((pattern, registry, dependencyType, pkgName, version) => { + // remove added package from patterns list + const filtered = newPatterns.filter(p => p !== pattern); + (0, (_invariant || _load_invariant()).default)(newPatterns.length - filtered.length > 0, `expect added pattern '${pattern}' in the list: ${patterns.toString()}`); + newPatterns = filtered; + + // add new package into in-memory manifest so they can be linked properly + manifest[dependencyType] = manifest[dependencyType] || {}; + if (manifest[dependencyType][pkgName] === version) { + // package already existed + return; + } + + // update dependencies in the manifest + (0, (_invariant || _load_invariant()).default)(manifest._reference, 'manifest._reference should not be null'); + const ref = manifest._reference; + + ref['dependencies'] = ref['dependencies'] || []; + ref['dependencies'].push(pattern); + }); + + return newPatterns; + } + + bailout(patterns, workspaceLayout) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const lockfileCache = _this.lockfile.cache; + if (!lockfileCache) { + return false; + } + const match = yield _this.integrityChecker.check(patterns, lockfileCache, _this.flags, workspaceLayout); + const haveLockfile = yield (_fs || _load_fs()).exists((_path || _load_path()).default.join(_this.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME)); + if (match.integrityFileMissing && haveLockfile) { + // Integrity file missing, force script installations + _this.scripts.setForce(true); + } + return false; + })(); + } + + /** + * Description + */ + + init() { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const isWorkspaceRoot = _this2.config.workspaceRootFolder && _this2.config.cwd === _this2.config.workspaceRootFolder; + + // running "yarn add something" in a workspace root is often a mistake + if (isWorkspaceRoot && !_this2.flags.ignoreWorkspaceRootCheck) { + throw new (_errors || _load_errors()).MessageError(_this2.reporter.lang('workspacesAddRootCheck')); + } + + _this2.addedPatterns = []; + const patterns = yield (_install || _load_install()).Install.prototype.init.call(_this2); + yield _this2.maybeOutputSaveTree(patterns); + return patterns; + })(); + } + + applyChanges(manifests) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield (_install || _load_install()).Install.prototype.applyChanges.call(_this3, manifests); + + // fill rootPatternsToOrigin without `excludePatterns` + yield (_install || _load_install()).Install.prototype.fetchRequestFromCwd.call(_this3); + + _this3._iterateAddedPackages(function (pattern, registry, dependencyType, pkgName, version) { + // add it to manifest + const object = manifests[registry].object; + + + object[dependencyType] = object[dependencyType] || {}; + object[dependencyType][pkgName] = version; + if (SILENCE_DEPENDENCY_TYPE_WARNINGS.indexOf(_this3.config.commandName) === -1 && dependencyType !== _this3.flagToOrigin) { + _this3.reporter.warn(_this3.reporter.lang('moduleAlreadyInManifest', pkgName, dependencyType, _this3.flagToOrigin)); + } + }); + + return true; + })(); + } + + /** + * Description + */ + + fetchRequestFromCwd() { + return (_install || _load_install()).Install.prototype.fetchRequestFromCwd.call(this, this.args); + } + + /** + * Output a tree of any newly added dependencies. + */ + + maybeOutputSaveTree(patterns) { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // don't limit the shown tree depth + const opts = { + reqDepth: 0 + }; + + // restore the original patterns + const merged = [...patterns, ..._this4.addedPatterns]; + + var _ref3 = yield (0, (_list || _load_list()).buildTree)(_this4.resolver, _this4.linker, merged, opts, true, true); + + const trees = _ref3.trees, + count = _ref3.count; + + + if (count === 1) { + _this4.reporter.success(_this4.reporter.lang('savedNewDependency')); + } else { + _this4.reporter.success(_this4.reporter.lang('savedNewDependencies', count)); + } + + if (!count) { + return; + } + + const resolverPatterns = new Set(); + for (var _iterator3 = patterns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + const pattern = _ref4; + + var _ref5 = _this4.resolver.getResolvedPattern(pattern) || {}; + + const version = _ref5.version, + name = _ref5.name; + + resolverPatterns.add(`${name}@${version}`); + } + const directRequireDependencies = trees.filter(function ({ name }) { + return resolverPatterns.has(name); + }); + + _this4.reporter.info(_this4.reporter.lang('directDependencies')); + _this4.reporter.tree('newDirectDependencies', directRequireDependencies); + _this4.reporter.info(_this4.reporter.lang('allDependencies')); + _this4.reporter.tree('newAllDependencies', trees); + })(); + } + + /** + * Save added packages to manifest if any of the --save flags were used. + */ + + savePackages() { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {})(); + } + + _iterateAddedPackages(f) { + const patternOrigins = Object.keys(this.rootPatternsToOrigin); + + // add new patterns to their appropriate registry manifest + for (var _iterator4 = this.addedPatterns, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref6; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref6 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref6 = _i4.value; + } + + const pattern = _ref6; + + const pkg = this.resolver.getResolvedPattern(pattern); + (0, (_invariant || _load_invariant()).default)(pkg, `missing package ${pattern}`); + const version = this.getPatternVersion(pattern, pkg); + const ref = pkg._reference; + (0, (_invariant || _load_invariant()).default)(ref, 'expected package reference'); + // lookup the package to determine dependency type; used during `yarn upgrade` + const depType = patternOrigins.reduce((acc, prev) => { + if (prev.indexOf(`${pkg.name}@`) === 0) { + return this.rootPatternsToOrigin[prev]; + } + return acc; + }, null); + + // depType is calculated when `yarn upgrade` command is used + const target = depType || this.flagToOrigin; + + f(pattern, ref.registry, target, pkg.name, version); + } + } +} + +exports.Add = Add; +function hasWrapper(commander) { + return true; +} + +function setFlags(commander) { + commander.description('Installs a package and any packages that it depends on.'); + commander.usage('add [packages ...] [flags]'); + commander.option('-W, --ignore-workspace-root-check', 'required to run yarn add inside a workspace root'); + commander.option('-D, --dev', 'save package to your `devDependencies`'); + commander.option('-P, --peer', 'save package to your `peerDependencies`'); + commander.option('-O, --optional', 'save package to your `optionalDependencies`'); + commander.option('-E, --exact', 'install exact version'); + commander.option('-T, --tilde', 'install most recent release with the same minor version'); + commander.option('-A, --audit', 'Run vulnerability audit on installed packages'); +} + +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.run = exports.pack = exports.packTarball = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let packTarball = exports.packTarball = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, { mapHeader } = {}) { + const pkg = yield config.readRootManifest(); + const bundleDependencies = pkg.bundleDependencies, + main = pkg.main, + onlyFiles = pkg.files; + + // include required files + + let filters = NEVER_IGNORE.slice(); + // include default filters unless `files` is used + if (!onlyFiles) { + filters = filters.concat(DEFAULT_IGNORE); + } + if (main) { + filters = filters.concat((0, (_filter || _load_filter()).ignoreLinesToRegex)(['!/' + main])); + } + + // include bundleDependencies + let bundleDependenciesFiles = []; + if (bundleDependencies) { + for (var _iterator = bundleDependencies, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref2; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref2 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref2 = _i.value; + } + + const dependency = _ref2; + + const dependencyList = depsFor(dependency, config.cwd); + + for (var _iterator2 = dependencyList, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref3; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + + const dep = _ref3; + + const filesForBundledDep = yield (_fs || _load_fs()).walk(dep.baseDir, null, new Set(FOLDERS_IGNORE)); + bundleDependenciesFiles = bundleDependenciesFiles.concat(filesForBundledDep); + } + } + } + + // `files` field + if (onlyFiles) { + let lines = ['*']; + lines = lines.concat(onlyFiles.map(function (filename) { + return `!${filename}`; + }), onlyFiles.map(function (filename) { + return `!${path.join(filename, '**')}`; + })); + const regexes = (0, (_filter || _load_filter()).ignoreLinesToRegex)(lines, './'); + filters = filters.concat(regexes); + } + + const files = yield (_fs || _load_fs()).walk(config.cwd, null, new Set(FOLDERS_IGNORE)); + const dotIgnoreFiles = (0, (_filter || _load_filter()).filterOverridenGitignores)(files); + + // create ignores + for (var _iterator3 = dotIgnoreFiles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + const file = _ref4; + + const raw = yield (_fs || _load_fs()).readFile(file.absolute); + const lines = raw.split('\n'); + + const regexes = (0, (_filter || _load_filter()).ignoreLinesToRegex)(lines, path.dirname(file.relative)); + filters = filters.concat(regexes); + } + + // files to definitely keep, takes precedence over ignore filter + const keepFiles = new Set(); + + // files to definitely ignore + const ignoredFiles = new Set(); + + // list of files that didn't match any of our patterns, if a directory in the chain above was matched + // then we should inherit it + const possibleKeepFiles = new Set(); + + // apply filters + (0, (_filter || _load_filter()).sortFilter)(files, filters, keepFiles, possibleKeepFiles, ignoredFiles); + + // add the files for the bundled dependencies to the set of files to keep + for (var _iterator4 = bundleDependenciesFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref5; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref5 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref5 = _i4.value; + } + + const file = _ref5; + + const realPath = yield (_fs || _load_fs()).realpath(config.cwd); + keepFiles.add(path.relative(realPath, file.absolute)); + } + + return packWithIgnoreAndHeaders(config.cwd, function (name) { + const relative = path.relative(config.cwd, name); + // Don't ignore directories, since we need to recurse inside them to check for unignored files. + if (fs2.lstatSync(name).isDirectory()) { + const isParentOfKeptFile = Array.from(keepFiles).some(function (name) { + return !path.relative(relative, name).startsWith('..'); + }); + return !isParentOfKeptFile; + } + // Otherwise, ignore a file if we're not supposed to keep it. + return !keepFiles.has(relative); + }, { mapHeader }); + }); + + return function packTarball(_x) { + return _ref.apply(this, arguments); + }; +})(); + +let pack = exports.pack = (() => { + var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) { + const packer = yield packTarball(config); + const compressor = packer.pipe(new zlib.Gzip()); + + return compressor; + }); + + return function pack(_x2) { + return _ref6.apply(this, arguments); + }; +})(); + +let run = exports.run = (() => { + var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { + const pkg = yield config.readRootManifest(); + if (!pkg.name) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('noName')); + } + if (!pkg.version) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('noVersion')); + } + + const normaliseScope = function normaliseScope(name) { + return name[0] === '@' ? name.substr(1).replace('/', '-') : name; + }; + const filename = flags.filename || path.join(config.cwd, `${normaliseScope(pkg.name)}-v${pkg.version}.tgz`); + + yield config.executeLifecycleScript('prepack'); + + const stream = yield pack(config); + + yield new Promise(function (resolve, reject) { + stream.pipe(fs2.createWriteStream(filename)); + stream.on('error', reject); + stream.on('close', resolve); + }); + + yield config.executeLifecycleScript('postpack'); + + reporter.success(reporter.lang('packWroteTarball', filename)); + }); + + return function run(_x3, _x4, _x5, _x6) { + return _ref7.apply(this, arguments); + }; +})(); + +exports.packWithIgnoreAndHeaders = packWithIgnoreAndHeaders; +exports.setFlags = setFlags; +exports.hasWrapper = hasWrapper; + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _filter; + +function _load_filter() { + return _filter = __webpack_require__(372); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +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 }; } + +const zlib = __webpack_require__(198); +const path = __webpack_require__(0); +const tar = __webpack_require__(193); +const fs2 = __webpack_require__(5); +const depsFor = __webpack_require__(678); + +const FOLDERS_IGNORE = [ +// never allow version control folders +'.git', 'CVS', '.svn', '.hg', 'node_modules']; + +const DEFAULT_IGNORE = (0, (_filter || _load_filter()).ignoreLinesToRegex)([...FOLDERS_IGNORE, + +// ignore cruft +'yarn.lock', '.lock-wscript', '.wafpickle-{0..9}', '*.swp', '._*', 'npm-debug.log', 'yarn-error.log', '.npmrc', '.yarnrc', '.npmignore', '.gitignore', '.DS_Store']); + +const NEVER_IGNORE = (0, (_filter || _load_filter()).ignoreLinesToRegex)([ +// never ignore these files +'!/package.json', '!/readme*', '!/+(license|licence)*', '!/+(changes|changelog|history)*']); + +function packWithIgnoreAndHeaders(cwd, ignoreFunction, { mapHeader } = {}) { + return tar.pack(cwd, { + ignore: ignoreFunction, + map: header => { + const suffix = header.name === '.' ? '' : `/${header.name}`; + header.name = `package${suffix}`; + delete header.uid; + delete header.gid; + return mapHeader ? mapHeader(header) : header; + } + }); +} + +function setFlags(commander) { + commander.description('Creates a compressed gzip archive of package dependencies.'); + commander.option('-f, --filename ', 'filename'); +} + +function hasWrapper(commander, args) { + return true; +} + +/***/ }), +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _index; + +function _load_index() { + return _index = _interopRequireDefault(__webpack_require__(220)); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _mutex; + +function _load_mutex() { + return _mutex = _interopRequireDefault(__webpack_require__(375)); +} + +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 }; } + +/* eslint no-unused-vars: 0 */ + +const cmdShim = __webpack_require__(201); +const path = __webpack_require__(0); + +class BaseFetcher { + constructor(dest, remote, config) { + this.reporter = config.reporter; + this.packageName = remote.packageName; + this.reference = remote.reference; + this.registry = remote.registry; + this.hash = remote.hash; + this.remote = remote; + this.config = config; + this.dest = dest; + } + + setupMirrorFromCache() { + // fetcher subclasses may use this to perform actions such as copying over a cached tarball to the offline + // mirror etc + return Promise.resolve(); + } + + _fetch() { + return Promise.reject(new Error('Not implemented')); + } + + fetch(defaultManifest) { + var _this = this; + + return (_fs || _load_fs()).lockQueue.push(this.dest, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield (_fs || _load_fs()).mkdirp(_this.dest); + + // fetch package and get the hash + + var _ref2 = yield _this._fetch(); + + const hash = _ref2.hash; + + + const pkg = yield (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // load the new normalized manifest + try { + return yield _this.config.readManifest(_this.dest, _this.registry); + } catch (e) { + if (e.code === 'ENOENT' && defaultManifest) { + return (0, (_index || _load_index()).default)(defaultManifest, _this.dest, _this.config, false); + } else { + throw e; + } + } + })(); + + if (pkg.bin) { + for (var _iterator = Object.keys(pkg.bin), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref4; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref4 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref4 = _i.value; + } + + const binName = _ref4; + + const binDest = `${_this.dest}/.bin`; + + // Using any sort of absolute path here would prevent makePortableProxyScript from preserving symlinks when + // calling the binary + const src = path.resolve(_this.dest, pkg.bin[binName]); + + if (yield (_fs || _load_fs()).exists(src)) { + // We ensure that the target is executable + yield (_fs || _load_fs()).chmod(src, 0o755); + } + + yield (_fs || _load_fs()).mkdirp(binDest); + if (process.platform === 'win32') { + const unlockMutex = yield (0, (_mutex || _load_mutex()).default)(src); + try { + yield cmdShim.ifExists(src, `${binDest}/${binName}`, { createPwshFile: false }); + } finally { + unlockMutex(); + } + } else { + yield (_fs || _load_fs()).symlink(src, `${binDest}/${binName}`); + } + } + } + + yield (_fs || _load_fs()).writeFile(path.join(_this.dest, (_constants || _load_constants()).METADATA_FILENAME), JSON.stringify({ + manifest: pkg, + artifacts: [], + remote: _this.remote, + registry: _this.registry, + hash + }, null, ' ')); + + return { + hash, + dest: _this.dest, + package: pkg, + cached: false + }; + })); + } +} +exports.default = BaseFetcher; + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hash = hash; +const crypto = __webpack_require__(11); +const stream = __webpack_require__(23); + +function hash(content, type = 'md5') { + return crypto.createHash(type).update(content).digest('hex'); +} + +class HashStream extends stream.Transform { + constructor(options) { + super(options); + this._hash = crypto.createHash('sha1'); + this._updated = false; + } + + _transform(chunk, encoding, callback) { + this._updated = true; + this._hash.update(chunk); + callback(null, chunk); + } + + getHash() { + return this._hash.digest('hex'); + } + + test(sum) { + return this._updated && sum === this.getHash(); + } +} +exports.HashStream = HashStream; + +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = guessName; + +var _url; + +function _load_url() { + return _url = _interopRequireDefault(__webpack_require__(24)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function cleanup(name) { + name = name.replace(/-\d+\.\d+\.\d+/, ''); + return name.replace(/\.git$|\.zip$|\.tar\.gz$|\.tar\.bz2$/, ''); +} + +function guessNameFallback(source) { + // If cannot parse as url, just return cleaned up last part + const parts = source.split('/'); + return cleanup(parts[parts.length - 1]); +} + +function guessName(source) { + try { + const parsed = (_url || _load_url()).default.parse(source); + + if (!parsed.pathname) { + return guessNameFallback(source); + } + + const parts = parsed.pathname.split('/'); + + // Priority goes to part that ends with .git + for (var _iterator = parts, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const part = _ref; + + if (part.match(/\.git$/)) { + return cleanup(part); + } + } + + // Most likely a directory + if (parsed.host == null) { + return cleanup(parts[parts.length - 1]); + } + + // A site like github or gitlab + if (parts.length > 2) { + return cleanup(parts[2]); + } + + // Privately hosted package? + if (parts.length > 1) { + return cleanup(parts[1]); + } + + return guessNameFallback(source); + } catch (e) { + return guessNameFallback(source); + } +} + +/***/ }), +/* 170 */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(69); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; + + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(249); +var enumBugKeys = __webpack_require__(127); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + + +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(91); +module.exports = function (it) { + return Object(defined(it)); +}; + + +/***/ }), +/* 173 */ +/***/ (function(module, exports, __webpack_require__) { + +var once = __webpack_require__(83); + +var noop = function() {}; + +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; + +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; + +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + + callback = once(callback || noop); + + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; + + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; + + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; + + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; + + var onerror = function(err) { + callback.call(stream, err); + }; + + var onclose = function() { + if (readable && !(rs && rs.ended)) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && ws.ended)) return callback.call(stream, new Error('premature close')); + }; + + var onrequest = function() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + if (isChildProcess(stream)) stream.on('exit', onexit); + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +}; + +module.exports = eos; + + +/***/ }), +/* 174 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2012 Joyent, Inc. All rights reserved. + +var assert = __webpack_require__(16); +var sshpk = __webpack_require__(328); +var util = __webpack_require__(3); + +var HASH_ALGOS = { + 'sha1': true, + 'sha256': true, + 'sha512': true +}; + +var PK_ALGOS = { + 'rsa': true, + 'dsa': true, + 'ecdsa': true +}; + +function HttpSignatureError(message, caller) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, caller || HttpSignatureError); + + this.message = message; + this.name = caller.name; +} +util.inherits(HttpSignatureError, Error); + +function InvalidAlgorithmError(message) { + HttpSignatureError.call(this, message, InvalidAlgorithmError); +} +util.inherits(InvalidAlgorithmError, HttpSignatureError); + +function validateAlgorithm(algorithm) { + var alg = algorithm.toLowerCase().split('-'); + + if (alg.length !== 2) { + throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' + + 'valid algorithm')); + } + + if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) { + throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' + + 'are not supported')); + } + + if (!HASH_ALGOS[alg[1]]) { + throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' + + 'supported hash algorithm')); + } + + return (alg); +} + +///--- API + +module.exports = { + + HASH_ALGOS: HASH_ALGOS, + PK_ALGOS: PK_ALGOS, + + HttpSignatureError: HttpSignatureError, + InvalidAlgorithmError: InvalidAlgorithmError, + + validateAlgorithm: validateAlgorithm, + + /** + * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. + * + * The intent of this module is to interoperate with OpenSSL only, + * specifically the node crypto module's `verify` method. + * + * @param {String} key an OpenSSH public key. + * @return {String} PEM encoded form of the RSA public key. + * @throws {TypeError} on bad input. + * @throws {Error} on invalid ssh key formatted data. + */ + sshKeyToPEM: function sshKeyToPEM(key) { + assert.string(key, 'ssh_key'); + + var k = sshpk.parseKey(key, 'ssh'); + return (k.toString('pem')); + }, + + + /** + * Generates an OpenSSH fingerprint from an ssh public key. + * + * @param {String} key an OpenSSH public key. + * @return {String} key fingerprint. + * @throws {TypeError} on bad input. + * @throws {Error} if what you passed doesn't look like an ssh public key. + */ + fingerprint: function fingerprint(key) { + assert.string(key, 'ssh_key'); + + var k = sshpk.parseKey(key, 'ssh'); + return (k.fingerprint('md5').toString('hex')); + }, + + /** + * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa) + * + * The reverse of the above function. + */ + pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) { + assert.equal('string', typeof (pem), 'typeof pem'); + + var k = sshpk.parseKey(pem, 'pem'); + k.comment = comment; + return (k.toString('ssh')); + } +}; + + +/***/ }), +/* 175 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var chalk = __webpack_require__(30); +var figures = __webpack_require__(270); + +/** + * Separator object + * Used to space/separate choices group + * @constructor + * @param {String} line Separation line content (facultative) + */ + +class Separator { + constructor(line) { + this.type = 'separator'; + this.line = chalk.dim(line || new Array(15).join(figures.line)); + } + + /** + * Stringify separator + * @return {String} the separator display string + */ + toString() { + return this.line; + } +} + +/** + * Helper function returning false if object is a separator + * @param {Object} obj object to test against + * @return {Boolean} `false` if object is a separator + */ + +Separator.exclude = function(obj) { + return obj.type !== 'separator'; +}; + +module.exports = Separator; + + +/***/ }), +/* 176 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(38); +var chalk = __webpack_require__(30); + +/** + * The paginator keeps track of a pointer index in a list and returns + * a subset of the choices if the list is too long. + */ + +class Paginator { + constructor(screen) { + this.pointer = 0; + this.lastIndex = 0; + this.screen = screen; + } + + paginate(output, active, pageSize) { + pageSize = pageSize || 7; + var middleOfList = Math.floor(pageSize / 2); + var lines = output.split('\n'); + + if (this.screen) { + lines = this.screen.breakLines(lines); + active = _.sum(lines.map(lineParts => lineParts.length).splice(0, active)); + lines = _.flatten(lines); + } + + // Make sure there's enough lines to paginate + if (lines.length <= pageSize) { + return output; + } + + // Move the pointer only when the user go down and limit it to the middle of the list + if ( + this.pointer < middleOfList && + this.lastIndex < active && + active - this.lastIndex < pageSize + ) { + this.pointer = Math.min(middleOfList, this.pointer + active - this.lastIndex); + } + this.lastIndex = active; + + // Duplicate the lines so it give an infinite list look + var infinite = _.flatten([lines, lines, lines]); + var topIndex = Math.max(0, active + lines.length - this.pointer); + + var section = infinite.splice(topIndex, pageSize).join('\n'); + return section + '\n' + chalk.dim('(Move up and down to reveal more choices)'); + } +} + +module.exports = Paginator; + + +/***/ }), +/* 177 */ +/***/ (function(module, exports) { + +/*! + * is-extglob + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + +module.exports = function isExtglob(str) { + return typeof str === 'string' + && /[@?!+*]\(/.test(str); +}; + + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +/*! + * is-glob + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + +var isExtglob = __webpack_require__(177); + +module.exports = function isGlob(str) { + return typeof str === 'string' + && (/[*!?{}(|)[\]]/.test(str) + || isExtglob(str)); +}; + +/***/ }), +/* 179 */ +/***/ (function(module, exports, __webpack_require__) { + +var isBuffer = __webpack_require__(729); +var toString = Object.prototype.toString; + +/** + * Get the native `typeof` a value. + * + * @param {*} `val` + * @return {*} Native javascript type + */ + +module.exports = function kindOf(val) { + // primitivies + if (typeof val === 'undefined') { + return 'undefined'; + } + if (val === null) { + return 'null'; + } + if (val === true || val === false || val instanceof Boolean) { + return 'boolean'; + } + if (typeof val === 'string' || val instanceof String) { + return 'string'; + } + if (typeof val === 'number' || val instanceof Number) { + return 'number'; + } + + // functions + if (typeof val === 'function' || val instanceof Function) { + return 'function'; + } + + // array + if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { + return 'array'; + } + + // check for instances of RegExp and Date before calling `toString` + if (val instanceof RegExp) { + return 'regexp'; + } + if (val instanceof Date) { + return 'date'; + } + + // other objects + var type = toString.call(val); + + if (type === '[object RegExp]') { + return 'regexp'; + } + if (type === '[object Date]') { + return 'date'; + } + if (type === '[object Arguments]') { + return 'arguments'; + } + if (type === '[object Error]') { + return 'error'; + } + + // buffer + if (isBuffer(val)) { + return 'buffer'; + } + + // es6: Map, WeakMap, Set, WeakSet + if (type === '[object Set]') { + return 'set'; + } + if (type === '[object WeakSet]') { + return 'weakset'; + } + if (type === '[object Map]') { + return 'map'; + } + if (type === '[object WeakMap]') { + return 'weakmap'; + } + if (type === '[object Symbol]') { + return 'symbol'; + } + + // typed arrays + if (type === '[object Int8Array]') { + return 'int8array'; + } + if (type === '[object Uint8Array]') { + return 'uint8array'; + } + if (type === '[object Uint8ClampedArray]') { + return 'uint8clampedarray'; + } + if (type === '[object Int16Array]') { + return 'int16array'; + } + if (type === '[object Uint16Array]') { + return 'uint16array'; + } + if (type === '[object Int32Array]') { + return 'int32array'; + } + if (type === '[object Uint32Array]') { + return 'uint32array'; + } + if (type === '[object Float32Array]') { + return 'float32array'; + } + if (type === '[object Float64Array]') { + return 'float64array'; + } + + // must be a plain object + return 'object'; +}; + + +/***/ }), +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +if (!process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + + + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isPromise = __webpack_require__(741); + +/** + * Return a function that will run a function asynchronously or synchronously + * + * example: + * runAsync(wrappedFunction, callback)(...args); + * + * @param {Function} func Function to run + * @param {Function} cb Callback function passed the `func` returned value + * @return {Function(arguments)} Arguments to pass to `func`. This function will in turn + * return a Promise (Node >= 0.12) or call the callbacks. + */ + +var runAsync = module.exports = function (func, cb) { + cb = cb || function () {}; + + return function () { + var async = false; + var args = arguments; + + var promise = new Promise(function (resolve, reject) { + var answer = func.apply({ + async: function () { + async = true; + return function (err, value) { + if (err) { + reject(err); + } else { + resolve(value); + } + }; + } + }, Array.prototype.slice.call(args)); + + if (!async) { + if (isPromise(answer)) { + answer.then(resolve, reject); + } else { + resolve(answer); + } + } + }); + + promise.then(cb.bind(null, null), cb); + + return promise; + } +}; + +runAsync.cb = function (func, cb) { + return runAsync(function () { + var args = Array.prototype.slice.call(arguments); + if (args.length === func.length - 1) { + args.push(this.async()); + } + return func.apply(this, args); + }, cb); +}; + + +/***/ }), +/* 182 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__internal_Observable__ = __webpack_require__(12); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return __WEBPACK_IMPORTED_MODULE_0__internal_Observable__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__ = __webpack_require__(423); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__ = __webpack_require__(433); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__ = __webpack_require__(117); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_Subject__ = __webpack_require__(36); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return __WEBPACK_IMPORTED_MODULE_4__internal_Subject__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__ = __webpack_require__(419); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__ = __webpack_require__(308); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__ = __webpack_require__(183); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__ = __webpack_require__(438); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__internal_scheduler_async__ = __webpack_require__(40); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return __WEBPACK_IMPORTED_MODULE_9__internal_scheduler_async__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__internal_scheduler_queue__ = __webpack_require__(439); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return __WEBPACK_IMPORTED_MODULE_10__internal_scheduler_queue__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__internal_scheduler_animationFrame__ = __webpack_require__(926); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return __WEBPACK_IMPORTED_MODULE_11__internal_scheduler_animationFrame__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__ = __webpack_require__(925); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__["b"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__internal_Scheduler__ = __webpack_require__(421); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return __WEBPACK_IMPORTED_MODULE_13__internal_Scheduler__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__ = __webpack_require__(25); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__ = __webpack_require__(7); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_Notification__ = __webpack_require__(184); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return __WEBPACK_IMPORTED_MODULE_16__internal_Notification__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__ = __webpack_require__(324); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__ = __webpack_require__(191); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__ = __webpack_require__(118); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__ = __webpack_require__(930); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__ = __webpack_require__(152); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__ = __webpack_require__(153); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__ = __webpack_require__(189); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__ = __webpack_require__(441); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__internal_util_TimeoutError__ = __webpack_require__(440); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return __WEBPACK_IMPORTED_MODULE_25__internal_util_TimeoutError__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__internal_observable_bindCallback__ = __webpack_require__(823); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return __WEBPACK_IMPORTED_MODULE_26__internal_observable_bindCallback__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__ = __webpack_require__(824); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__ = __webpack_require__(309); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__ = __webpack_require__(186); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__ = __webpack_require__(310); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__ = __webpack_require__(39); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__internal_observable_forkJoin__ = __webpack_require__(825); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return __WEBPACK_IMPORTED_MODULE_32__internal_observable_forkJoin__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__internal_observable_from__ = __webpack_require__(62); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return __WEBPACK_IMPORTED_MODULE_33__internal_observable_from__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__internal_observable_fromEvent__ = __webpack_require__(826); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return __WEBPACK_IMPORTED_MODULE_34__internal_observable_fromEvent__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__internal_observable_fromEventPattern__ = __webpack_require__(827); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return __WEBPACK_IMPORTED_MODULE_35__internal_observable_fromEventPattern__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__internal_observable_generate__ = __webpack_require__(831); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return __WEBPACK_IMPORTED_MODULE_36__internal_observable_generate__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__internal_observable_iif__ = __webpack_require__(832); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return __WEBPACK_IMPORTED_MODULE_37__internal_observable_iif__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__internal_observable_interval__ = __webpack_require__(833); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return __WEBPACK_IMPORTED_MODULE_38__internal_observable_interval__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__internal_observable_merge__ = __webpack_require__(424); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_39__internal_observable_merge__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__ = __webpack_require__(425); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__internal_observable_of__ = __webpack_require__(311); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return __WEBPACK_IMPORTED_MODULE_41__internal_observable_of__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__internal_observable_onErrorResumeNext__ = __webpack_require__(834); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return __WEBPACK_IMPORTED_MODULE_42__internal_observable_onErrorResumeNext__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__internal_observable_pairs__ = __webpack_require__(835); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return __WEBPACK_IMPORTED_MODULE_43__internal_observable_pairs__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__internal_observable_race__ = __webpack_require__(426); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return __WEBPACK_IMPORTED_MODULE_44__internal_observable_race__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__internal_observable_range__ = __webpack_require__(836); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_observable_range__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__internal_observable_throwError__ = __webpack_require__(313); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return __WEBPACK_IMPORTED_MODULE_46__internal_observable_throwError__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__internal_observable_timer__ = __webpack_require__(427); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return __WEBPACK_IMPORTED_MODULE_47__internal_observable_timer__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_observable_using__ = __webpack_require__(837); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return __WEBPACK_IMPORTED_MODULE_48__internal_observable_using__["a"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__ = __webpack_require__(314); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["b"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["b"]; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_config__ = __webpack_require__(185); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_config__["a"]; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//# sourceMappingURL=index.js.map + + +/***/ }), +/* 183 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncSubject; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(25); +/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ + + + +var AsyncSubject = /*@__PURE__*/ (function (_super) { + __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncSubject, _super); + function AsyncSubject() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.value = null; + _this.hasNext = false; + _this.hasCompleted = false; + return _this; + } + AsyncSubject.prototype._subscribe = function (subscriber) { + if (this.hasError) { + subscriber.error(this.thrownError); + return __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */].EMPTY; + } + else if (this.hasCompleted && this.hasNext) { + subscriber.next(this.value); + subscriber.complete(); + return __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */].EMPTY; + } + return _super.prototype._subscribe.call(this, subscriber); + }; + AsyncSubject.prototype.next = function (value) { + if (!this.hasCompleted) { + this.value = value; + this.hasNext = true; + } + }; + AsyncSubject.prototype.error = function (error) { + if (!this.hasCompleted) { + _super.prototype.error.call(this, error); + } + }; + AsyncSubject.prototype.complete = function () { + this.hasCompleted = true; + if (this.hasNext) { + _super.prototype.next.call(this, this.value); + } + _super.prototype.complete.call(this); + }; + return AsyncSubject; +}(__WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */])); + +//# sourceMappingURL=AsyncSubject.js.map + + +/***/ }), +/* 184 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Notification; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_empty__ = __webpack_require__(39); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_of__ = __webpack_require__(311); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_throwError__ = __webpack_require__(313); +/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ + + + +var Notification = /*@__PURE__*/ (function () { + function Notification(kind, value, error) { + this.kind = kind; + this.value = value; + this.error = error; + this.hasValue = kind === 'N'; + } + Notification.prototype.observe = function (observer) { + switch (this.kind) { + case 'N': + return observer.next && observer.next(this.value); + case 'E': + return observer.error && observer.error(this.error); + case 'C': + return observer.complete && observer.complete(); + } + }; + Notification.prototype.do = function (next, error, complete) { + var kind = this.kind; + switch (kind) { + case 'N': + return next && next(this.value); + case 'E': + return error && error(this.error); + case 'C': + return complete && complete(); + } + }; + Notification.prototype.accept = function (nextOrObserver, error, complete) { + if (nextOrObserver && typeof nextOrObserver.next === 'function') { + return this.observe(nextOrObserver); + } + else { + return this.do(nextOrObserver, error, complete); + } + }; + Notification.prototype.toObservable = function () { + var kind = this.kind; + switch (kind) { + case 'N': + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__observable_of__["a" /* of */])(this.value); + case 'E': + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_throwError__["a" /* throwError */])(this.error); + case 'C': + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__observable_empty__["a" /* empty */])(); + } + throw new Error('unexpected notification kind value'); + }; + Notification.createNext = function (value) { + if (typeof value !== 'undefined') { + return new Notification('N', value); + } + return Notification.undefinedValueNotification; + }; + Notification.createError = function (err) { + return new Notification('E', undefined, err); + }; + Notification.createComplete = function () { + return Notification.completeNotification; + }; + Notification.completeNotification = new Notification('C'); + Notification.undefinedValueNotification = new Notification('N', undefined); + return Notification; +}()); + +//# sourceMappingURL=Notification.js.map + + +/***/ }), +/* 185 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return config; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var _enable_super_gross_mode_that_will_cause_bad_things = false; +var config = { + Promise: undefined, + set useDeprecatedSynchronousErrorHandling(value) { + if (value) { + var error = /*@__PURE__*/ new Error(); + /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack); + } + else if (_enable_super_gross_mode_that_will_cause_bad_things) { + /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3'); + } + _enable_super_gross_mode_that_will_cause_bad_things = value; + }, + get useDeprecatedSynchronousErrorHandling() { + return _enable_super_gross_mode_that_will_cause_bad_things; + }, +}; +//# sourceMappingURL=config.js.map + + +/***/ }), +/* 186 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = concat; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isScheduler__ = __webpack_require__(49); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__of__ = __webpack_require__(311); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__from__ = __webpack_require__(62); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__operators_concatAll__ = __webpack_require__(429); +/** PURE_IMPORTS_START _util_isScheduler,_of,_from,_operators_concatAll PURE_IMPORTS_END */ + + + + +function concat() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + if (observables.length === 1 || (observables.length === 2 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isScheduler__["a" /* isScheduler */])(observables[1]))) { + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__from__["a" /* from */])(observables[0]); + } + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__operators_concatAll__["a" /* concatAll */])()(__WEBPACK_IMPORTED_MODULE_1__of__["a" /* of */].apply(void 0, observables)); +} +//# sourceMappingURL=concat.js.map + + +/***/ }), +/* 187 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = reduce; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scan__ = __webpack_require__(317); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__takeLast__ = __webpack_require__(320); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__defaultIfEmpty__ = __webpack_require__(146); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324); +/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ + + + + +function reduce(accumulator, seed) { + if (arguments.length >= 2) { + return function reduceOperatorFunctionWithSeed(source) { + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["a" /* pipe */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__scan__["a" /* scan */])(accumulator, seed), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__takeLast__["a" /* takeLast */])(1), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__defaultIfEmpty__["a" /* defaultIfEmpty */])(seed))(source); + }; + } + return function reduceOperatorFunction(source) { + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["a" /* pipe */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__scan__["a" /* scan */])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__takeLast__["a" /* takeLast */])(1))(source); + }; +} +//# sourceMappingURL=reduce.js.map + + +/***/ }), +/* 188 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwIfEmpty; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tap__ = __webpack_require__(435); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_EmptyError__ = __webpack_require__(153); +/** PURE_IMPORTS_START _tap,_util_EmptyError PURE_IMPORTS_END */ + + +var throwIfEmpty = function (errorFactory) { + if (errorFactory === void 0) { + errorFactory = defaultErrorFactory; + } + return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tap__["a" /* tap */])({ + hasValue: false, + next: function () { this.hasValue = true; }, + complete: function () { + if (!this.hasValue) { + throw errorFactory(); + } + } + }); +}; +function defaultErrorFactory() { + return new __WEBPACK_IMPORTED_MODULE_1__util_EmptyError__["a" /* EmptyError */](); +} +//# sourceMappingURL=throwIfEmpty.js.map + + +/***/ }), +/* 189 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjectUnsubscribedError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function ObjectUnsubscribedErrorImpl() { + Error.call(this); + this.message = 'object unsubscribed'; + this.name = 'ObjectUnsubscribedError'; + return this; +} +ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); +var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; +//# sourceMappingURL=ObjectUnsubscribedError.js.map + + +/***/ }), +/* 190 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = isNumeric; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray__ = __webpack_require__(41); +/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ + +function isNumeric(val) { + return !__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__isArray__["a" /* isArray */])(val) && (val - parseFloat(val) + 1) >= 0; +} +//# sourceMappingURL=isNumeric.js.map + + +/***/ }), +/* 191 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = noop; +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function noop() { } +//# sourceMappingURL=noop.js.map + + +/***/ }), +/* 192 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = { + read: read, + readSSHPrivate: readSSHPrivate, + write: write +}; + +var assert = __webpack_require__(16); +var asn1 = __webpack_require__(66); +var Buffer = __webpack_require__(15).Buffer; +var algs = __webpack_require__(32); +var utils = __webpack_require__(26); +var crypto = __webpack_require__(11); + +var Key = __webpack_require__(27); +var PrivateKey = __webpack_require__(33); +var pem = __webpack_require__(86); +var rfc4253 = __webpack_require__(103); +var SSHBuffer = __webpack_require__(159); +var errors = __webpack_require__(74); + +var bcrypt; + +function read(buf, options) { + return (pem.read(buf, options)); +} + +var MAGIC = 'openssh-key-v1'; + +function readSSHPrivate(type, buf, options) { + buf = new SSHBuffer({buffer: buf}); + + var magic = buf.readCString(); + assert.strictEqual(magic, MAGIC, 'bad magic string'); + + var cipher = buf.readString(); + var kdf = buf.readString(); + var kdfOpts = buf.readBuffer(); + + var nkeys = buf.readInt(); + if (nkeys !== 1) { + throw (new Error('OpenSSH-format key file contains ' + + 'multiple keys: this is unsupported.')); + } + + var pubKey = buf.readBuffer(); + + if (type === 'public') { + assert.ok(buf.atEnd(), 'excess bytes left after key'); + return (rfc4253.read(pubKey)); + } + + var privKeyBlob = buf.readBuffer(); + assert.ok(buf.atEnd(), 'excess bytes left after key'); + + var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts }); + switch (kdf) { + case 'none': + if (cipher !== 'none') { + throw (new Error('OpenSSH-format key uses KDF "none" ' + + 'but specifies a cipher other than "none"')); + } + break; + case 'bcrypt': + var salt = kdfOptsBuf.readBuffer(); + var rounds = kdfOptsBuf.readInt(); + var cinf = utils.opensshCipherInfo(cipher); + if (bcrypt === undefined) { + bcrypt = __webpack_require__(379); + } + + if (typeof (options.passphrase) === 'string') { + options.passphrase = Buffer.from(options.passphrase, + 'utf-8'); + } + if (!Buffer.isBuffer(options.passphrase)) { + throw (new errors.KeyEncryptedError( + options.filename, 'OpenSSH')); + } + + var pass = new Uint8Array(options.passphrase); + var salti = new Uint8Array(salt); + /* Use the pbkdf to derive both the key and the IV. */ + var out = new Uint8Array(cinf.keySize + cinf.blockSize); + var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, + out, out.length, rounds); + if (res !== 0) { + throw (new Error('bcrypt_pbkdf function returned ' + + 'failure, parameters invalid')); + } + out = Buffer.from(out); + var ckey = out.slice(0, cinf.keySize); + var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); + var cipherStream = crypto.createDecipheriv(cinf.opensslName, + ckey, iv); + cipherStream.setAutoPadding(false); + var chunk, chunks = []; + cipherStream.once('error', function (e) { + if (e.toString().indexOf('bad decrypt') !== -1) { + throw (new Error('Incorrect passphrase ' + + 'supplied, could not decrypt key')); + } + throw (e); + }); + cipherStream.write(privKeyBlob); + cipherStream.end(); + while ((chunk = cipherStream.read()) !== null) + chunks.push(chunk); + privKeyBlob = Buffer.concat(chunks); + break; + default: + throw (new Error( + 'OpenSSH-format key uses unknown KDF "' + kdf + '"')); + } + + buf = new SSHBuffer({buffer: privKeyBlob}); + + var checkInt1 = buf.readInt(); + var checkInt2 = buf.readInt(); + if (checkInt1 !== checkInt2) { + throw (new Error('Incorrect passphrase supplied, could not ' + + 'decrypt key')); + } + + var ret = {}; + var key = rfc4253.readInternal(ret, 'private', buf.remainder()); + + buf.skip(ret.consumed); + + var comment = buf.readString(); + key.comment = comment; + + return (key); +} + +function write(key, options) { + var pubKey; + if (PrivateKey.isPrivateKey(key)) + pubKey = key.toPublic(); + else + pubKey = key; + + var cipher = 'none'; + var kdf = 'none'; + var kdfopts = Buffer.alloc(0); + var cinf = { blockSize: 8 }; + var passphrase; + if (options !== undefined) { + passphrase = options.passphrase; + if (typeof (passphrase) === 'string') + passphrase = Buffer.from(passphrase, 'utf-8'); + if (passphrase !== undefined) { + assert.buffer(passphrase, 'options.passphrase'); + assert.optionalString(options.cipher, 'options.cipher'); + cipher = options.cipher; + if (cipher === undefined) + cipher = 'aes128-ctr'; + cinf = utils.opensshCipherInfo(cipher); + kdf = 'bcrypt'; + } + } + + var privBuf; + if (PrivateKey.isPrivateKey(key)) { + privBuf = new SSHBuffer({}); + var checkInt = crypto.randomBytes(4).readUInt32BE(0); + privBuf.writeInt(checkInt); + privBuf.writeInt(checkInt); + privBuf.write(key.toBuffer('rfc4253')); + privBuf.writeString(key.comment || ''); + + var n = 1; + while (privBuf._offset % cinf.blockSize !== 0) + privBuf.writeChar(n++); + privBuf = privBuf.toBuffer(); + } + + switch (kdf) { + case 'none': + break; + case 'bcrypt': + var salt = crypto.randomBytes(16); + var rounds = 16; + var kdfssh = new SSHBuffer({}); + kdfssh.writeBuffer(salt); + kdfssh.writeInt(rounds); + kdfopts = kdfssh.toBuffer(); + + if (bcrypt === undefined) { + bcrypt = __webpack_require__(379); + } + var pass = new Uint8Array(passphrase); + var salti = new Uint8Array(salt); + /* Use the pbkdf to derive both the key and the IV. */ + var out = new Uint8Array(cinf.keySize + cinf.blockSize); + var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, + out, out.length, rounds); + if (res !== 0) { + throw (new Error('bcrypt_pbkdf function returned ' + + 'failure, parameters invalid')); + } + out = Buffer.from(out); + var ckey = out.slice(0, cinf.keySize); + var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); + + var cipherStream = crypto.createCipheriv(cinf.opensslName, + ckey, iv); + cipherStream.setAutoPadding(false); + var chunk, chunks = []; + cipherStream.once('error', function (e) { + throw (e); + }); + cipherStream.write(privBuf); + cipherStream.end(); + while ((chunk = cipherStream.read()) !== null) + chunks.push(chunk); + privBuf = Buffer.concat(chunks); + break; + default: + throw (new Error('Unsupported kdf ' + kdf)); + } + + var buf = new SSHBuffer({}); + + buf.writeCString(MAGIC); + buf.writeString(cipher); /* cipher */ + buf.writeString(kdf); /* kdf */ + buf.writeBuffer(kdfopts); /* kdfoptions */ + + buf.writeInt(1); /* nkeys */ + buf.writeBuffer(pubKey.toBuffer('rfc4253')); + + if (privBuf) + buf.writeBuffer(privBuf); + + buf = buf.toBuffer(); + + var header; + if (PrivateKey.isPrivateKey(key)) + header = 'OPENSSH PRIVATE KEY'; + else + header = 'OPENSSH PUBLIC KEY'; + + var tmp = buf.toString('base64'); + var len = tmp.length + (tmp.length / 70) + + 18 + 16 + header.length*2 + 10; + buf = Buffer.alloc(len); + var o = 0; + o += buf.write('-----BEGIN ' + header + '-----\n', o); + for (var i = 0; i < tmp.length; ) { + var limit = i + 70; + if (limit > tmp.length) + limit = tmp.length; + o += buf.write(tmp.slice(i, limit), o); + buf[o++] = 10; + i = limit; + } + o += buf.write('-----END ' + header + '-----\n', o); + + return (buf.slice(0, o)); +} + + +/***/ }), +/* 193 */ +/***/ (function(module, exports, __webpack_require__) { + +var chownr = __webpack_require__(600) +var tar = __webpack_require__(460) +var pump = __webpack_require__(781) +var mkdirp = __webpack_require__(145) +var fs = __webpack_require__(5) +var path = __webpack_require__(0) +var os = __webpack_require__(46) + +var win32 = os.platform() === 'win32' + +var noop = function () {} + +var echo = function (name) { + return name +} + +var normalize = !win32 ? echo : function (name) { + return name.replace(/\\/g, '/').replace(/[:?<>|]/g, '_') +} + +var statAll = function (fs, stat, cwd, ignore, entries, sort) { + var queue = entries || ['.'] + + return function loop (callback) { + if (!queue.length) return callback() + var next = queue.shift() + var nextAbs = path.join(cwd, next) + + stat(nextAbs, function (err, stat) { + if (err) return callback(err) + + if (!stat.isDirectory()) return callback(null, next, stat) + + fs.readdir(nextAbs, function (err, files) { + if (err) return callback(err) + + if (sort) files.sort() + for (var i = 0; i < files.length; i++) { + if (!ignore(path.join(cwd, next, files[i]))) queue.push(path.join(next, files[i])) + } + + callback(null, next, stat) + }) + }) + } +} + +var strip = function (map, level) { + return function (header) { + header.name = header.name.split('/').slice(level).join('/') + + var linkname = header.linkname + if (linkname && (header.type === 'link' || path.isAbsolute(linkname))) { + header.linkname = linkname.split('/').slice(level).join('/') + } + + return map(header) + } +} + +exports.pack = function (cwd, opts) { + if (!cwd) cwd = '.' + if (!opts) opts = {} + + var xfs = opts.fs || fs + var ignore = opts.ignore || opts.filter || noop + var map = opts.map || noop + var mapStream = opts.mapStream || echo + var statNext = statAll(xfs, opts.dereference ? xfs.stat : xfs.lstat, cwd, ignore, opts.entries, opts.sort) + var strict = opts.strict !== false + var umask = typeof opts.umask === 'number' ? ~opts.umask : ~processUmask() + var dmode = typeof opts.dmode === 'number' ? opts.dmode : 0 + var fmode = typeof opts.fmode === 'number' ? opts.fmode : 0 + var pack = opts.pack || tar.pack() + var finish = opts.finish || noop + + if (opts.strip) map = strip(map, opts.strip) + + if (opts.readable) { + dmode |= parseInt(555, 8) + fmode |= parseInt(444, 8) + } + if (opts.writable) { + dmode |= parseInt(333, 8) + fmode |= parseInt(222, 8) + } + + var onsymlink = function (filename, header) { + xfs.readlink(path.join(cwd, filename), function (err, linkname) { + if (err) return pack.destroy(err) + header.linkname = normalize(linkname) + pack.entry(header, onnextentry) + }) + } + + var onstat = function (err, filename, stat) { + if (err) return pack.destroy(err) + if (!filename) { + if (opts.finalize !== false) pack.finalize() + return finish(pack) + } + + if (stat.isSocket()) return onnextentry() // tar does not support sockets... + + var header = { + name: normalize(filename), + mode: (stat.mode | (stat.isDirectory() ? dmode : fmode)) & umask, + mtime: stat.mtime, + size: stat.size, + type: 'file', + uid: stat.uid, + gid: stat.gid + } + + if (stat.isDirectory()) { + header.size = 0 + header.type = 'directory' + header = map(header) || header + return pack.entry(header, onnextentry) + } + + if (stat.isSymbolicLink()) { + header.size = 0 + header.type = 'symlink' + header = map(header) || header + return onsymlink(filename, header) + } + + // TODO: add fifo etc... + + header = map(header) || header + + if (!stat.isFile()) { + if (strict) return pack.destroy(new Error('unsupported type for ' + filename)) + return onnextentry() + } + + var entry = pack.entry(header, onnextentry) + if (!entry) return + + var rs = mapStream(xfs.createReadStream(path.join(cwd, filename)), header) + + rs.on('error', function (err) { // always forward errors on destroy + entry.destroy(err) + }) + + pump(rs, entry) + } + + var onnextentry = function (err) { + if (err) return pack.destroy(err) + statNext(onstat) + } + + onnextentry() + + return pack +} + +var head = function (list) { + return list.length ? list[list.length - 1] : null +} + +var processGetuid = function () { + return process.getuid ? process.getuid() : -1 +} + +var processUmask = function () { + return process.umask ? process.umask() : 0 +} + +exports.extract = function (cwd, opts) { + if (!cwd) cwd = '.' + if (!opts) opts = {} + + var xfs = opts.fs || fs + var ignore = opts.ignore || opts.filter || noop + var map = opts.map || noop + var mapStream = opts.mapStream || echo + var own = opts.chown !== false && !win32 && processGetuid() === 0 + var extract = opts.extract || tar.extract() + var stack = [] + var now = new Date() + var umask = typeof opts.umask === 'number' ? ~opts.umask : ~processUmask() + var dmode = typeof opts.dmode === 'number' ? opts.dmode : 0 + var fmode = typeof opts.fmode === 'number' ? opts.fmode : 0 + var strict = opts.strict !== false + + if (opts.strip) map = strip(map, opts.strip) + + if (opts.readable) { + dmode |= parseInt(555, 8) + fmode |= parseInt(444, 8) + } + if (opts.writable) { + dmode |= parseInt(333, 8) + fmode |= parseInt(222, 8) + } + + var utimesParent = function (name, cb) { // we just set the mtime on the parent dir again everytime we write an entry + var top + while ((top = head(stack)) && name.slice(0, top[0].length) !== top[0]) stack.pop() + if (!top) return cb() + xfs.utimes(top[0], now, top[1], cb) + } + + var utimes = function (name, header, cb) { + if (opts.utimes === false) return cb() + + if (header.type === 'directory') return xfs.utimes(name, now, header.mtime, cb) + if (header.type === 'symlink') return utimesParent(name, cb) // TODO: how to set mtime on link? + + xfs.utimes(name, now, header.mtime, function (err) { + if (err) return cb(err) + utimesParent(name, cb) + }) + } + + var chperm = function (name, header, cb) { + var link = header.type === 'symlink' + var chmod = link ? xfs.lchmod : xfs.chmod + var chown = link ? xfs.lchown : xfs.chown + + if (!chmod) return cb() + + var mode = (header.mode | (header.type === 'directory' ? dmode : fmode)) & umask + chmod(name, mode, function (err) { + if (err) return cb(err) + if (!own) return cb() + if (!chown) return cb() + chown(name, header.uid, header.gid, cb) + }) + } + + extract.on('entry', function (header, stream, next) { + header = map(header) || header + header.name = normalize(header.name) + var name = path.join(cwd, path.join('/', header.name)) + + if (ignore(name, header)) { + stream.resume() + return next() + } + + var stat = function (err) { + if (err) return next(err) + utimes(name, header, function (err) { + if (err) return next(err) + if (win32) return next() + chperm(name, header, next) + }) + } + + var onsymlink = function () { + if (win32) return next() // skip symlinks on win for now before it can be tested + xfs.unlink(name, function () { + xfs.symlink(header.linkname, name, stat) + }) + } + + var onlink = function () { + if (win32) return next() // skip links on win for now before it can be tested + xfs.unlink(name, function () { + var srcpath = path.join(cwd, path.join('/', header.linkname)) + + xfs.link(srcpath, name, function (err) { + if (err && err.code === 'EPERM' && opts.hardlinkAsFilesFallback) { + stream = xfs.createReadStream(srcpath) + return onfile() + } + + stat(err) + }) + }) + } + + var onfile = function () { + var ws = xfs.createWriteStream(name) + var rs = mapStream(stream, header) + + ws.on('error', function (err) { // always forward errors on destroy + rs.destroy(err) + }) + + pump(rs, ws, function (err) { + if (err) return next(err) + ws.on('close', stat) + }) + } + + if (header.type === 'directory') { + stack.push([name, header.mtime]) + return mkdirfix(name, { + fs: xfs, own: own, uid: header.uid, gid: header.gid + }, stat) + } + + var dir = path.dirname(name) + + validate(xfs, dir, path.join(cwd, '.'), function (err, valid) { + if (err) return next(err) + if (!valid) return next(new Error(dir + ' is not a valid path')) + + mkdirfix(dir, { + fs: xfs, own: own, uid: header.uid, gid: header.gid + }, function (err) { + if (err) return next(err) + + switch (header.type) { + case 'file': return onfile() + case 'link': return onlink() + case 'symlink': return onsymlink() + } + + if (strict) return next(new Error('unsupported type for ' + name + ' (' + header.type + ')')) + + stream.resume() + next() + }) + }) + }) + + if (opts.finish) extract.on('finish', opts.finish) + + return extract +} + +function validate (fs, name, root, cb) { + if (name === root) return cb(null, true) + fs.lstat(name, function (err, st) { + if (err && err.code !== 'ENOENT') return cb(err) + if (err || st.isDirectory()) return validate(fs, path.join(name, '..'), root, cb) + cb(null, false) + }) +} + +function mkdirfix (name, opts, cb) { + mkdirp(name, {fs: opts.fs}, function (err, made) { + if (!err && made && opts.own) { + chownr(made, opts.uid, opts.gid, cb) + } else { + cb(err) + } + }) +} + + +/***/ }), +/* 194 */ +/***/ (function(module, exports) { + +module.exports = {"name":"yarn","installationMethod":"unknown","version":"1.21.0","license":"BSD-2-Clause","preferGlobal":true,"description":"📦🐈 Fast, reliable, and secure dependency management.","dependencies":{"@zkochan/cmd-shim":"^3.1.0","babel-runtime":"^6.26.0","bytes":"^3.0.0","camelcase":"^4.0.0","chalk":"^2.1.0","cli-table3":"^0.4.0","commander":"^2.9.0","death":"^1.0.0","debug":"^3.0.0","deep-equal":"^1.0.1","detect-indent":"^5.0.0","dnscache":"^1.0.1","glob":"^7.1.1","gunzip-maybe":"^1.4.0","hash-for-dep":"^1.2.3","imports-loader":"^0.8.0","ini":"^1.3.4","inquirer":"^6.2.0","invariant":"^2.2.0","is-builtin-module":"^2.0.0","is-ci":"^1.0.10","is-webpack-bundle":"^1.0.0","js-yaml":"^3.13.1","leven":"^2.0.0","loud-rejection":"^1.2.0","micromatch":"^2.3.11","mkdirp":"^0.5.1","node-emoji":"^1.6.1","normalize-url":"^2.0.0","npm-logical-tree":"^1.2.1","object-path":"^0.11.2","proper-lockfile":"^2.0.0","puka":"^1.0.0","read":"^1.0.7","request":"^2.87.0","request-capture-har":"^1.2.2","rimraf":"^2.5.0","semver":"^5.1.0","ssri":"^5.3.0","strip-ansi":"^4.0.0","strip-bom":"^3.0.0","tar-fs":"^1.16.0","tar-stream":"^1.6.1","uuid":"^3.0.1","v8-compile-cache":"^2.0.0","validate-npm-package-license":"^3.0.4","yn":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-loader":"^6.2.5","babel-plugin-array-includes":"^2.0.3","babel-plugin-inline-import":"^3.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-inline-imports-commonjs":"^1.0.0","babel-plugin-transform-runtime":"^6.4.3","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.0.0","babylon":"^6.5.0","commitizen":"^2.9.6","cz-conventional-changelog":"^2.0.0","eslint":"^4.3.0","eslint-config-fb-strict":"^22.0.0","eslint-plugin-babel":"^5.0.0","eslint-plugin-flowtype":"^2.35.0","eslint-plugin-jasmine":"^2.6.2","eslint-plugin-jest":"^21.0.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^2.1.2","eslint-plugin-react":"^7.1.0","eslint-plugin-relay":"^0.0.28","eslint-plugin-yarn-internal":"file:scripts/eslint-rules","execa":"^0.11.0","fancy-log":"^1.3.2","flow-bin":"^0.66.0","git-release-notes":"^3.0.0","gulp":"^4.0.0","gulp-babel":"^7.0.0","gulp-if":"^2.0.1","gulp-newer":"^1.0.0","gulp-plumber":"^1.0.1","gulp-sourcemaps":"^2.2.0","jest":"^22.4.4","jsinspect":"^0.12.6","minimatch":"^3.0.4","mock-stdin":"^0.3.0","prettier":"^1.5.2","string-replace-loader":"^2.1.1","temp":"^0.8.3","webpack":"^2.1.0-beta.25","yargs":"^6.3.0"},"resolutions":{"sshpk":"^1.14.2"},"engines":{"node":">=4.0.0"},"repository":"yarnpkg/yarn","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"scripts":{"build":"gulp build","build-bundle":"node ./scripts/build-webpack.js","build-chocolatey":"powershell ./scripts/build-chocolatey.ps1","build-deb":"./scripts/build-deb.sh","build-dist":"bash ./scripts/build-dist.sh","build-win-installer":"scripts\\build-windows-installer.bat","changelog":"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md","dupe-check":"yarn jsinspect ./src","lint":"eslint . && flow check","pkg-tests":"yarn --cwd packages/pkg-tests jest yarn.test.js","prettier":"eslint src __tests__ --fix","release-branch":"./scripts/release-branch.sh","test":"yarn lint && yarn test-only","test-only":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose","test-only-debug":"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose","test-coverage":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose","watch":"gulp watch","commit":"git-cz"},"jest":{"collectCoverageFrom":["src/**/*.js"],"testEnvironment":"node","modulePathIgnorePatterns":["__tests__/fixtures/","packages/pkg-tests/pkg-tests-fixtures","dist/"],"testPathIgnorePatterns":["__tests__/(fixtures|__mocks__)/","updates/","_(temp|mock|install|init|helpers).js$","packages/pkg-tests"]},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}} + +/***/ }), +/* 195 */ +/***/ (function(module, exports) { + +module.exports = require("https"); + +/***/ }), +/* 196 */ +/***/ (function(module, exports) { + +module.exports = require("querystring"); + +/***/ }), +/* 197 */ +/***/ (function(module, exports) { + +module.exports = require("readline"); + +/***/ }), +/* 198 */ +/***/ (function(module, exports) { + +module.exports = require("zlib"); + +/***/ }), +/* 199 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = stringify; + +var _misc; + +function _load_misc() { + return _misc = __webpack_require__(18); +} + +var _constants; + +function _load_constants() { + return _constants = __webpack_require__(8); +} + +var _package; + +function _load_package() { + return _package = __webpack_require__(194); +} + +const NODE_VERSION = process.version; + +function shouldWrapKey(str) { + return str.indexOf('true') === 0 || str.indexOf('false') === 0 || /[:\s\n\\",\[\]]/g.test(str) || /^[0-9]/g.test(str) || !/^[a-zA-Z]/g.test(str); +} + +function maybeWrap(str) { + if (typeof str === 'boolean' || typeof str === 'number' || shouldWrapKey(str)) { + return JSON.stringify(str); + } else { + return str; + } +} + +const priorities = { + name: 1, + version: 2, + uid: 3, + resolved: 4, + integrity: 5, + registry: 6, + dependencies: 7 +}; + +function priorityThenAlphaSort(a, b) { + if (priorities[a] || priorities[b]) { + return (priorities[a] || 100) > (priorities[b] || 100) ? 1 : -1; + } else { + return (0, (_misc || _load_misc()).sortAlpha)(a, b); + } +} + +function _stringify(obj, options) { + if (typeof obj !== 'object') { + throw new TypeError(); + } + + const indent = options.indent; + const lines = []; + + // Sorting order needs to be consistent between runs, we run native sort by name because there are no + // problems with it being unstable because there are no to keys the same + // However priorities can be duplicated and native sort can shuffle things from run to run + const keys = Object.keys(obj).sort(priorityThenAlphaSort); + + let addedKeys = []; + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const val = obj[key]; + if (val == null || addedKeys.indexOf(key) >= 0) { + continue; + } + + const valKeys = [key]; + + // get all keys that have the same value equality, we only want this for objects + if (typeof val === 'object') { + for (let j = i + 1; j < keys.length; j++) { + const key = keys[j]; + if (val === obj[key]) { + valKeys.push(key); + } + } + } + + const keyLine = valKeys.sort((_misc || _load_misc()).sortAlpha).map(maybeWrap).join(', '); + + if (typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number') { + lines.push(`${keyLine} ${maybeWrap(val)}`); + } else if (typeof val === 'object') { + lines.push(`${keyLine}:\n${_stringify(val, { indent: indent + ' ' })}` + (options.topLevel ? '\n' : '')); + } else { + throw new TypeError(); + } + + addedKeys = addedKeys.concat(valKeys); + } + + return indent + lines.join(`\n${indent}`); +} + +function stringify(obj, noHeader, enableVersions) { + const val = _stringify(obj, { + indent: '', + topLevel: true + }); + if (noHeader) { + return val; + } + + const lines = []; + lines.push('# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.'); + lines.push(`# yarn lockfile v${(_constants || _load_constants()).LOCKFILE_VERSION}`); + if (enableVersions) { + lines.push(`# yarn v${(_package || _load_package()).version}`); + lines.push(`# node ${NODE_VERSION}`); + } + lines.push('\n'); + lines.push(val); + + return lines.join('\n'); +} + +/***/ }), +/* 200 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _consoleReporter; + +function _load_consoleReporter() { + return _consoleReporter = __webpack_require__(561); +} + +Object.defineProperty(exports, 'ConsoleReporter', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_consoleReporter || _load_consoleReporter()).default; + } +}); + +var _bufferReporter; + +function _load_bufferReporter() { + return _bufferReporter = __webpack_require__(560); +} + +Object.defineProperty(exports, 'BufferReporter', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_bufferReporter || _load_bufferReporter()).default; + } +}); + +var _eventReporter; + +function _load_eventReporter() { + return _eventReporter = __webpack_require__(565); +} + +Object.defineProperty(exports, 'EventReporter', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_eventReporter || _load_eventReporter()).default; + } +}); + +var _jsonReporter; + +function _load_jsonReporter() { + return _jsonReporter = __webpack_require__(213); +} + +Object.defineProperty(exports, 'JSONReporter', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_jsonReporter || _load_jsonReporter()).default; + } +}); + +var _noopReporter; + +function _load_noopReporter() { + return _noopReporter = __webpack_require__(569); +} + +Object.defineProperty(exports, 'NoopReporter', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_noopReporter || _load_noopReporter()).default; + } +}); + +var _baseReporter; + +function _load_baseReporter() { + return _baseReporter = __webpack_require__(108); +} + +Object.defineProperty(exports, 'Reporter', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_baseReporter || _load_baseReporter()).default; + } +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/***/ }), +/* 201 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// On windows, create a .cmd file. +// Read the #! in the file to see what it uses. The vast majority +// of the time, this will be either: +// "#!/usr/bin/env " +// or: +// "#! " +// +// Write a binroot/pkg.bin + ".cmd" file that has this line in it: +// @ %~dp0 %* + +module.exports = cmdShim +cmdShim.ifExists = cmdShimIfExists + +const fs = __webpack_require__(762) + +const mkdir = __webpack_require__(761) +const path = __webpack_require__(0) +const isWindows = __webpack_require__(743) +const shebangExpr = /^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/ +const DEFAULT_OPTIONS = { + // Create PowerShell file by default if the option hasn't been specified + createPwshFile: true, + createCmdFile: isWindows() +} + +function cmdShimIfExists (src, to, opts) { + opts = Object.assign({}, DEFAULT_OPTIONS, opts) + return fs.stat(src) + .then(() => cmdShim(src, to, opts)) + .catch(() => {}) +} + +// Try to unlink, but ignore errors. +// Any problems will surface later. +function rm (path) { + return fs.unlink(path).catch(() => {}) +} + +function cmdShim (src, to, opts) { + opts = Object.assign({}, DEFAULT_OPTIONS, opts) + return fs.stat(src) + .then(() => cmdShim_(src, to, opts)) +} + +function cmdShim_ (src, to, opts) { + return Promise.all([ + rm(to), + rm(`${to}.ps1`), + opts.createCmdFile && rm(`${to}.cmd`) + ]) + .then(() => writeShim(src, to, opts)) +} + +function writeShim (src, to, opts) { + opts = Object.assign({}, DEFAULT_OPTIONS, opts) + const defaultArgs = opts.preserveSymlinks ? '--preserve-symlinks' : '' + // make a cmd file and a sh script + // First, check if the bin is a #! of some sort. + // If not, then assume it's something that'll be compiled, or some other + // sort of script, and just call it directly. + return mkdir(path.dirname(to)) + .then(() => { + return fs.readFile(src, 'utf8') + .then(data => { + const firstLine = data.trim().split(/\r*\n/)[0] + const shebang = firstLine.match(shebangExpr) + if (!shebang) return writeShim_(src, to, Object.assign({}, opts, {args: defaultArgs})) + const prog = shebang[1] + const args = (shebang[2] && ((defaultArgs && (shebang[2] + ' ' + defaultArgs)) || shebang[2])) || defaultArgs + return writeShim_(src, to, Object.assign({}, opts, {prog, args})) + }) + .catch(() => writeShim_(src, to, Object.assign({}, opts, {args: defaultArgs}))) + }) +} + +function writeShim_ (src, to, opts) { + opts = Object.assign({}, DEFAULT_OPTIONS, opts) + let shTarget = path.relative(path.dirname(to), src) + let target = shTarget.split('/').join('\\') + let longProg + let prog = opts.prog + let shProg = prog && prog.split('\\').join('/') + let shLongProg + let pwshProg = shProg && `"${shProg}$exe"` + let pwshLongProg + shTarget = shTarget.split('\\').join('/') + let args = opts.args || '' + let { + win32: nodePath, + posix: shNodePath + } = normalizePathEnvVar(opts.nodePath) + if (!prog) { + prog = `"%~dp0\\${target}"` + shProg = `"$basedir/${shTarget}"` + pwshProg = shProg + args = '' + target = '' + shTarget = '' + } else { + longProg = `"%~dp0\\${prog}.exe"` + shLongProg = '"$basedir/' + prog + '"' + pwshLongProg = `"$basedir/${prog}$exe"` + target = `"%~dp0\\${target}"` + shTarget = `"$basedir/${shTarget}"` + } + + let cmd + if (opts.createCmdFile) { + // @IF EXIST "%~dp0\node.exe" ( + // "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* + // ) ELSE ( + // SETLOCAL + // SET PATHEXT=%PATHEXT:;.JS;=;% + // node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* + // ) + cmd = nodePath ? `@SET NODE_PATH=${nodePath}\r\n` : '' + if (longProg) { + cmd += '@IF EXIST ' + longProg + ' (\r\n' + + ' ' + longProg + ' ' + args + ' ' + target + ' %*\r\n' + + ') ELSE (\r\n' + + ' @SETLOCAL\r\n' + + ' @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n' + + ' ' + prog + ' ' + args + ' ' + target + ' %*\r\n' + + ')' + } else { + cmd += `@${prog} ${args} ${target} %*\r\n` + } + } + + // #!/bin/sh + // basedir=`dirname "$0"` + // + // case `uname` in + // *CYGWIN*) basedir=`cygpath -w "$basedir"`;; + // esac + // + // if [ -x "$basedir/node.exe" ]; then + // "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@" + // ret=$? + // else + // node "$basedir/node_modules/npm/bin/npm-cli.js" "$@" + // ret=$? + // fi + // exit $ret + + let sh = '#!/bin/sh\n' + sh = sh + + "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n" + + '\n' + + 'case `uname` in\n' + + ' *CYGWIN*) basedir=`cygpath -w "$basedir"`;;\n' + + 'esac\n' + + '\n' + const env = opts.nodePath ? `NODE_PATH="${shNodePath}" ` : '' + + if (shLongProg) { + sh = sh + + 'if [ -x ' + shLongProg + ' ]; then\n' + + ' ' + env + shLongProg + ' ' + args + ' ' + shTarget + ' "$@"\n' + + ' ret=$?\n' + + 'else \n' + + ' ' + env + shProg + ' ' + args + ' ' + shTarget + ' "$@"\n' + + ' ret=$?\n' + + 'fi\n' + + 'exit $ret\n' + } else { + sh = sh + env + shProg + ' ' + args + ' ' + shTarget + ' "$@"\n' + + 'exit $?\n' + } + + // #!/usr/bin/env pwsh + // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + // + // $ret=0 + // $exe = "" + // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + // # Fix case when both the Windows and Linux builds of Node + // # are installed in the same directory + // $exe = ".exe" + // } + // if (Test-Path "$basedir/node") { + // & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args + // $ret=$LASTEXITCODE + // } else { + // & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args + // $ret=$LASTEXITCODE + // } + // exit $ret + let pwsh = '#!/usr/bin/env pwsh\n' + + '$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n' + + '\n' + + '$exe=""\n' + + (opts.nodePath ? '$env_node_path=$env:NODE_PATH\n' + + `$env:NODE_PATH="${nodePath}"\n` : '') + + 'if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {\n' + + ' # Fix case when both the Windows and Linux builds of Node\n' + + ' # are installed in the same directory\n' + + ' $exe=".exe"\n' + + '}' + if (opts.nodePath) { + pwsh = pwsh + + ' else {\n' + + ` $env:NODE_PATH="${shNodePath}"\n` + + '}' + } + pwsh += '\n' + if (shLongProg) { + pwsh = pwsh + + '$ret=0\n' + + `if (Test-Path ${pwshLongProg}) {\n` + + ` & ${pwshLongProg} ${args} ${shTarget} $args\n` + + ' $ret=$LASTEXITCODE\n' + + '} else {\n' + + ` & ${pwshProg} ${args} ${shTarget} $args\n` + + ' $ret=$LASTEXITCODE\n' + + '}\n' + + (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') + + 'exit $ret\n' + } else { + pwsh = pwsh + + `& ${pwshProg} ${args} ${shTarget} $args\n` + + (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') + + 'exit $LASTEXITCODE\n' + } + + return Promise.all([ + opts.createCmdFile && fs.writeFile(to + '.cmd', cmd, 'utf8'), + opts.createPwshFile && fs.writeFile(`${to}.ps1`, pwsh, 'utf8'), + fs.writeFile(to, sh, 'utf8') + ]) + .then(() => chmodShim(to, opts)) +} + +function chmodShim (to, {createCmdFile, createPwshFile}) { + return Promise.all([ + fs.chmod(to, 0o755), + createPwshFile && fs.chmod(`${to}.ps1`, 0o755), + createCmdFile && fs.chmod(`${to}.cmd`, 0o755) + ]) +} + +/** + * @param {string|string[]} nodePath + * @returns {{win32:string,posix:string}} + */ +function normalizePathEnvVar (nodePath) { + if (!nodePath) { + return { + win32: nodePath, + posix: nodePath + } + } + let split = (typeof nodePath === 'string' ? nodePath.split(path.delimiter) : Array.from(nodePath)) + let result = {} + for (let i = 0; i < split.length; i++) { + const win32 = split[i].split('/').join('\\') + const posix = isWindows() ? split[i].split('\\').join('/').replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i] + + result.win32 = result.win32 ? `${result.win32};${win32}` : win32 + result.posix = result.posix ? `${result.posix}:${posix}` : posix + + result[i] = {win32, posix} + } + return result +} + + +/***/ }), +/* 202 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var resolve = __webpack_require__(203); + +module.exports = { + Validation: errorSubclass(ValidationError), + MissingRef: errorSubclass(MissingRefError) +}; + + +function ValidationError(errors) { + this.message = 'validation failed'; + this.errors = errors; + this.ajv = this.validation = true; +} + + +MissingRefError.message = function (baseId, ref) { + return 'can\'t resolve reference ' + ref + ' from id ' + baseId; +}; + + +function MissingRefError(baseId, ref, message) { + this.message = message || MissingRefError.message(baseId, ref); + this.missingRef = resolve.url(baseId, ref); + this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef)); +} + + +function errorSubclass(Subclass) { + Subclass.prototype = Object.create(Error.prototype); + Subclass.prototype.constructor = Subclass; + return Subclass; +} + + +/***/ }), +/* 203 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var url = __webpack_require__(24) + , equal = __webpack_require__(204) + , util = __webpack_require__(106) + , SchemaObject = __webpack_require__(339) + , traverse = __webpack_require__(503); + +module.exports = resolve; + +resolve.normalizeId = normalizeId; +resolve.fullPath = getFullPath; +resolve.url = resolveUrl; +resolve.ids = resolveIds; +resolve.inlineRef = inlineRef; +resolve.schema = resolveSchema; + +/** + * [resolve and compile the references ($ref)] + * @this Ajv + * @param {Function} compile reference to schema compilation funciton (localCompile) + * @param {Object} root object with information about the root schema for the current schema + * @param {String} ref reference to resolve + * @return {Object|Function} schema object (if the schema can be inlined) or validation function + */ +function resolve(compile, root, ref) { + /* jshint validthis: true */ + var refVal = this._refs[ref]; + if (typeof refVal == 'string') { + if (this._refs[refVal]) refVal = this._refs[refVal]; + else return resolve.call(this, compile, root, refVal); + } + + refVal = refVal || this._schemas[ref]; + if (refVal instanceof SchemaObject) { + return inlineRef(refVal.schema, this._opts.inlineRefs) + ? refVal.schema + : refVal.validate || this._compile(refVal); + } + + var res = resolveSchema.call(this, root, ref); + var schema, v, baseId; + if (res) { + schema = res.schema; + root = res.root; + baseId = res.baseId; + } + + if (schema instanceof SchemaObject) { + v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); + } else if (schema !== undefined) { + v = inlineRef(schema, this._opts.inlineRefs) + ? schema + : compile.call(this, schema, root, undefined, baseId); + } + + return v; +} + + +/** + * Resolve schema, its root and baseId + * @this Ajv + * @param {Object} root root object with properties schema, refVal, refs + * @param {String} ref reference to resolve + * @return {Object} object with properties schema, root, baseId + */ +function resolveSchema(root, ref) { + /* jshint validthis: true */ + var p = url.parse(ref, false, true) + , refPath = _getFullPath(p) + , baseId = getFullPath(this._getId(root.schema)); + if (refPath !== baseId) { + var id = normalizeId(refPath); + var refVal = this._refs[id]; + if (typeof refVal == 'string') { + return resolveRecursive.call(this, root, refVal, p); + } else if (refVal instanceof SchemaObject) { + if (!refVal.validate) this._compile(refVal); + root = refVal; + } else { + refVal = this._schemas[id]; + if (refVal instanceof SchemaObject) { + if (!refVal.validate) this._compile(refVal); + if (id == normalizeId(ref)) + return { schema: refVal, root: root, baseId: baseId }; + root = refVal; + } else { + return; + } + } + if (!root.schema) return; + baseId = getFullPath(this._getId(root.schema)); + } + return getJsonPointer.call(this, p, baseId, root.schema, root); +} + + +/* @this Ajv */ +function resolveRecursive(root, ref, parsedRef) { + /* jshint validthis: true */ + var res = resolveSchema.call(this, root, ref); + if (res) { + var schema = res.schema; + var baseId = res.baseId; + root = res.root; + var id = this._getId(schema); + if (id) baseId = resolveUrl(baseId, id); + return getJsonPointer.call(this, parsedRef, baseId, schema, root); + } +} + + +var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); +/* @this Ajv */ +function getJsonPointer(parsedRef, baseId, schema, root) { + /* jshint validthis: true */ + parsedRef.hash = parsedRef.hash || ''; + if (parsedRef.hash.slice(0,2) != '#/') return; + var parts = parsedRef.hash.split('/'); + + for (var i = 1; i < parts.length; i++) { + var part = parts[i]; + if (part) { + part = util.unescapeFragment(part); + schema = schema[part]; + if (schema === undefined) break; + var id; + if (!PREVENT_SCOPE_CHANGE[part]) { + id = this._getId(schema); + if (id) baseId = resolveUrl(baseId, id); + if (schema.$ref) { + var $ref = resolveUrl(baseId, schema.$ref); + var res = resolveSchema.call(this, root, $ref); + if (res) { + schema = res.schema; + root = res.root; + baseId = res.baseId; + } + } + } + } + } + if (schema !== undefined && schema !== root.schema) + return { schema: schema, root: root, baseId: baseId }; +} + + +var SIMPLE_INLINED = util.toHash([ + 'type', 'format', 'pattern', + 'maxLength', 'minLength', + 'maxProperties', 'minProperties', + 'maxItems', 'minItems', + 'maximum', 'minimum', + 'uniqueItems', 'multipleOf', + 'required', 'enum' +]); +function inlineRef(schema, limit) { + if (limit === false) return false; + if (limit === undefined || limit === true) return checkNoRef(schema); + else if (limit) return countKeys(schema) <= limit; +} + + +function checkNoRef(schema) { + var item; + if (Array.isArray(schema)) { + for (var i=0; i All rights reserved. + + +module.exports = { + + newInvalidAsn1Error: function (msg) { + var e = new Error(); + e.name = 'InvalidAsn1Error'; + e.message = msg || ''; + return e; + } + +}; + + +/***/ }), +/* 206 */ +/***/ (function(module, exports) { + +// Copyright 2011 Mark Cavage All rights reserved. + + +module.exports = { + EOC: 0, + Boolean: 1, + Integer: 2, + BitString: 3, + OctetString: 4, + Null: 5, + OID: 6, + ObjectDescriptor: 7, + External: 8, + Real: 9, // float + Enumeration: 10, + PDV: 11, + Utf8String: 12, + RelativeOID: 13, + Sequence: 16, + Set: 17, + NumericString: 18, + PrintableString: 19, + T61String: 20, + VideotexString: 21, + IA5String: 22, + UTCTime: 23, + GeneralizedTime: 24, + GraphicString: 25, + VisibleString: 26, + GeneralString: 28, + UniversalString: 29, + CharacterString: 30, + BMPString: 31, + Constructor: 32, + Context: 128 +}; + + +/***/ }), +/* 207 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getOutdated = exports.run = exports.requireLockfile = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let run = exports.run = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { + let addArgs = []; + const upgradeAll = args.length === 0 && typeof flags.scope === 'undefined' && typeof flags.pattern === 'undefined'; + const addFlags = Object.assign({}, flags, { + force: true, + ignoreWorkspaceRootCheck: true, + workspaceRootIsCwd: config.cwd === config.lockfileFolder + }); + const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter); + const deps = yield getOutdated(config, reporter, flags, lockfile, args); + const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile); + + var _ref2 = yield install.fetchRequestFromCwd(); + + const packagePatterns = _ref2.requests; + + + setUserRequestedPackageVersions(deps, args, flags.latest, packagePatterns, reporter); + cleanLockfile(lockfile, deps, packagePatterns, reporter); + addArgs = deps.map(function (dep) { + return dep.upgradeTo; + }); + + if (flags.scope && validScopeRegex.test(flags.scope)) { + addArgs = addArgs.filter(function (depName) { + return depName.startsWith(flags.scope); + }); + } + + const add = new (_add || _load_add()).Add(addArgs, addFlags, config, reporter, upgradeAll ? new (_lockfile || _load_lockfile()).default() : lockfile); + yield add.init(); + }); + + return function run(_x, _x2, _x3, _x4) { + return _ref.apply(this, arguments); + }; +})(); + +let getOutdated = exports.getOutdated = (() => { + var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile, patterns) { + const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile); + const outdatedFieldName = flags.latest ? 'latest' : 'wanted'; + + // ensure scope is of the form `@scope/` + const normalizeScope = function normalizeScope() { + if (flags.scope) { + if (!flags.scope.startsWith('@')) { + flags.scope = '@' + flags.scope; + } + + if (!flags.scope.endsWith('/')) { + flags.scope += '/'; + } + } + }; + + const versionFilter = function versionFilter(dep) { + return dep.current !== dep[outdatedFieldName]; + }; + + if (!flags.latest) { + // these flags only have an affect when --latest is used + flags.tilde = false; + flags.exact = false; + flags.caret = false; + } + + normalizeScope(); + + const deps = (yield (_packageRequest || _load_packageRequest()).default.getOutdatedPackages(lockfile, install, config, reporter, patterns, flags)).filter(versionFilter).filter(scopeFilter.bind(this, flags)); + deps.forEach(function (dep) { + dep.upgradeTo = buildPatternToUpgradeTo(dep, flags); + reporter.verbose(reporter.lang('verboseUpgradeBecauseOutdated', dep.name, dep.upgradeTo)); + }); + + return deps; + }); + + return function getOutdated(_x5, _x6, _x7, _x8, _x9) { + return _ref3.apply(this, arguments); + }; +})(); + +exports.cleanLockfile = cleanLockfile; +exports.setFlags = setFlags; +exports.hasWrapper = hasWrapper; + +var _add; + +function _load_add() { + return _add = __webpack_require__(165); +} + +var _lockfile; + +function _load_lockfile() { + return _lockfile = _interopRequireDefault(__webpack_require__(19)); +} + +var _packageRequest; + +function _load_packageRequest() { + return _packageRequest = _interopRequireDefault(__webpack_require__(122)); +} + +var _normalizePattern; + +function _load_normalizePattern() { + return _normalizePattern = __webpack_require__(37); +} + +var _install; + +function _load_install() { + return _install = __webpack_require__(34); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// used to detect whether a semver range is simple enough to preserve when doing a --latest upgrade. +// when not matched, the upgraded version range will default to `^` the same as the `add` command would. +const basicSemverOperatorRegex = new RegExp('^(\\^|~|>=|<=)?[^ |&,]+$'); + +// used to detect if a passed parameter is a scope or a package name. + + +const validScopeRegex = /^@[a-zA-Z0-9-][a-zA-Z0-9_.-]*\/$/; + +// If specific versions were requested for packages, override what getOutdated reported as the latest to install +// Also add ones that are missing, since the requested packages may not have been outdated at all. +function setUserRequestedPackageVersions(deps, args, latest, packagePatterns, reporter) { + args.forEach(requestedPattern => { + let found = false; + let normalized = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(requestedPattern); + + // if the user specified a package name without a version range, then that implies "latest" + // but if the latest flag is not passed then we need to use the version range from package.json + if (!normalized.hasVersion && !latest) { + packagePatterns.forEach(packagePattern => { + const packageNormalized = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(packagePattern.pattern); + if (packageNormalized.name === normalized.name) { + normalized = packageNormalized; + } + }); + } + + const newPattern = `${normalized.name}@${normalized.range}`; + + // if this dependency is already in the outdated list, + // just update the upgradeTo to whatever version the user requested. + deps.forEach(dep => { + if (normalized.hasVersion && dep.name === normalized.name) { + found = true; + dep.upgradeTo = newPattern; + reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern)); + } + }); + + // if this dependency was not in the outdated list, + // then add a new entry + if (normalized.hasVersion && !found) { + deps.push({ + name: normalized.name, + wanted: '', + latest: '', + url: '', + hint: '', + range: '', + current: '', + upgradeTo: newPattern, + workspaceName: '', + workspaceLoc: '' + }); + reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern)); + } + }); +} + +// this function attempts to determine the range operator on the semver range. +// this will only handle the simple cases of a semver starting with '^', '~', '>=', '<=', or an exact version. +// "exotic" semver ranges will not be handled. +function getRangeOperator(version) { + const result = basicSemverOperatorRegex.exec(version); + return result ? result[1] || '' : '^'; +} + +// Attempt to preserve the range operator from the package.json specified semver range. +// If an explicit operator was specified using --exact, --tilde, --caret, then that will take precedence. +function buildPatternToUpgradeTo(dep, flags) { + if (dep.latest === 'exotic') { + return `${dep.name}@${dep.url}`; + } + + const toLatest = flags.latest; + const toVersion = toLatest ? dep.latest : dep.range; + let rangeOperator = ''; + + if (toLatest) { + if (flags.caret) { + rangeOperator = '^'; + } else if (flags.tilde) { + rangeOperator = '~'; + } else if (flags.exact) { + rangeOperator = ''; + } else { + rangeOperator = getRangeOperator(dep.range); + } + } + + return `${dep.name}@${rangeOperator}${toVersion}`; +} + +function scopeFilter(flags, dep) { + if (validScopeRegex.test(flags.scope)) { + return dep.name.startsWith(flags.scope); + } + return true; +} + +// Remove deps being upgraded from the lockfile, or else Add will use the already-installed version +// instead of the latest for the range. +// We do this recursively so that when Yarn installs the potentially updated transitive deps, +// it may upgrade them too instead of just using the "locked" version from the lockfile. +// Transitive dependencies that are also a direct dependency are skipped. +function cleanLockfile(lockfile, deps, packagePatterns, reporter) { + function cleanDepFromLockfile(pattern, depth) { + const lockManifest = lockfile.getLocked(pattern); + if (!lockManifest || depth > 1 && packagePatterns.some(packagePattern => packagePattern.pattern === pattern)) { + reporter.verbose(reporter.lang('verboseUpgradeNotUnlocking', pattern)); + return; + } + + const dependencies = Object.assign({}, lockManifest.dependencies || {}, lockManifest.optionalDependencies || {}); + const depPatterns = Object.keys(dependencies).map(key => `${key}@${dependencies[key]}`); + reporter.verbose(reporter.lang('verboseUpgradeUnlocking', pattern)); + lockfile.removePattern(pattern); + depPatterns.forEach(pattern => cleanDepFromLockfile(pattern, depth + 1)); + } + + const patterns = deps.map(dep => dep.upgradeTo); + patterns.forEach(pattern => cleanDepFromLockfile(pattern, 1)); +} + +function setFlags(commander) { + commander.description('Upgrades packages to their latest version based on the specified range.'); + commander.usage('upgrade [flags]'); + commander.option('-S, --scope ', 'upgrade packages under the specified scope'); + commander.option('-L, --latest', 'list the latest version of packages, ignoring version ranges in package.json'); + commander.option('-E, --exact', 'install exact version. Only used when --latest is specified.'); + commander.option('-P, --pattern [pattern]', 'upgrade packages that match pattern'); + commander.option('-T, --tilde', 'install most recent release with the same minor version. Only used when --latest is specified.'); + commander.option('-C, --caret', 'install most recent release with the same major version. Only used when --latest is specified.'); + commander.option('-A, --audit', 'Run vulnerability audit on installed packages'); +} + +function hasWrapper(commander, args) { + return true; +} + +const requireLockfile = exports.requireLockfile = true; + +/***/ }), +/* 208 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.integrityErrors = undefined; + +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(21)); +} + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _misc; + +function _load_misc() { + return _misc = __webpack_require__(18); +} + +var _packageNameUtils; + +function _load_packageNameUtils() { + return _packageNameUtils = __webpack_require__(222); +} + +var _workspaceLayout; + +function _load_workspaceLayout() { + return _workspaceLayout = _interopRequireDefault(__webpack_require__(90)); +} + +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 }; } + +const invariant = __webpack_require__(9); + +const path = __webpack_require__(0); + +const integrityErrors = exports.integrityErrors = { + EXPECTED_IS_NOT_A_JSON: 'integrityFailedExpectedIsNotAJSON', + FILES_MISSING: 'integrityFailedFilesMissing', + LOCKFILE_DONT_MATCH: 'integrityLockfilesDontMatch', + FLAGS_DONT_MATCH: 'integrityFlagsDontMatch', + LINKED_MODULES_DONT_MATCH: 'integrityCheckLinkedModulesDontMatch', + PATTERNS_DONT_MATCH: 'integrityPatternsDontMatch', + MODULES_FOLDERS_MISSING: 'integrityModulesFoldersMissing', + SYSTEM_PARAMS_DONT_MATCH: 'integritySystemParamsDontMatch' +}; + +const INTEGRITY_FILE_DEFAULTS = () => ({ + systemParams: (0, (_packageNameUtils || _load_packageNameUtils()).getSystemParams)(), + modulesFolders: [], + flags: [], + linkedModules: [], + topLevelPatterns: [], + lockfileEntries: {}, + files: [] +}); + +/** + * + */ +class InstallationIntegrityChecker { + constructor(config) { + this.config = config; + } + + /** + * Get the common ancestor of every node_modules - it may be a node_modules directory itself, but isn't required to. + */ + + _getModulesRootFolder() { + if (this.config.modulesFolder) { + return this.config.modulesFolder; + } else if (this.config.workspaceRootFolder) { + return this.config.workspaceRootFolder; + } else { + return path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER); + } + } + + /** + * Get the directory in which the yarn-integrity file should be written. + */ + + _getIntegrityFileFolder() { + if (this.config.modulesFolder) { + return this.config.modulesFolder; + } else if (this.config.enableMetaFolder) { + return path.join(this.config.lockfileFolder, (_constants || _load_constants()).META_FOLDER); + } else { + return path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER); + } + } + + /** + * Get the full path of the yarn-integrity file. + */ + + _getIntegrityFileLocation() { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const locationFolder = _this._getIntegrityFileFolder(); + const locationPath = path.join(locationFolder, (_constants || _load_constants()).INTEGRITY_FILENAME); + + const exists = yield (_fs || _load_fs()).exists(locationPath); + + return { + locationFolder, + locationPath, + exists + }; + })(); + } + + /** + * Get the list of the directories that contain our modules (there might be multiple such folders b/c of workspaces). + */ + + _getModulesFolders({ workspaceLayout } = {}) { + const locations = []; + + if (this.config.modulesFolder) { + locations.push(this.config.modulesFolder); + } else { + locations.push(path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER)); + } + + if (workspaceLayout) { + for (var _iterator = Object.keys(workspaceLayout.workspaces), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const workspaceName = _ref; + + const loc = workspaceLayout.workspaces[workspaceName].loc; + + if (loc) { + locations.push(path.join(loc, (_constants || _load_constants()).NODE_MODULES_FOLDER)); + } + } + } + + return locations.sort((_misc || _load_misc()).sortAlpha); + } + + /** + * Get a list of the files that are located inside our module folders. + */ + _getIntegrityListing({ workspaceLayout } = {}) { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const files = []; + + const recurse = (() => { + var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { + for (var _iterator2 = yield (_fs || _load_fs()).readdir(dir), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref3; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + + const file = _ref3; + + const entry = path.join(dir, file); + const stat = yield (_fs || _load_fs()).lstat(entry); + + if (stat.isDirectory()) { + yield recurse(entry); + } else { + files.push(entry); + } + } + }); + + return function recurse(_x) { + return _ref2.apply(this, arguments); + }; + })(); + + for (var _iterator3 = _this2._getModulesFolders({ workspaceLayout }), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + const modulesFolder = _ref4; + + if (yield (_fs || _load_fs()).exists(modulesFolder)) { + yield recurse(modulesFolder); + } + } + + return files; + })(); + } + + /** + * Generate integrity hash of input lockfile. + */ + + _generateIntegrityFile(lockfile, patterns, flags, workspaceLayout, artifacts) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const result = (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(), { + artifacts + }); + + result.topLevelPatterns = patterns; + + // If using workspaces, we also need to add the workspaces patterns to the top-level, so that we'll know if a + // dependency is added or removed into one of them. We must take care not to read the aggregator (if !loc). + // + // Also note that we can't use of workspaceLayout.workspaces[].manifest._reference.patterns, because when + // doing a "yarn check", the _reference property hasn't yet been properly initialized. + + if (workspaceLayout) { + result.topLevelPatterns = result.topLevelPatterns.filter(function (p) { + // $FlowFixMe + return !workspaceLayout.getManifestByPattern(p); + }); + + for (var _iterator4 = Object.keys(workspaceLayout.workspaces), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref5; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref5 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref5 = _i4.value; + } + + const name = _ref5; + + if (!workspaceLayout.workspaces[name].loc) { + continue; + } + + const manifest = workspaceLayout.workspaces[name].manifest; + + if (manifest) { + for (var _iterator5 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref6; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref6 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref6 = _i5.value; + } + + const dependencyType = _ref6; + + const dependencies = manifest[dependencyType]; + + if (!dependencies) { + continue; + } + + for (var _iterator6 = Object.keys(dependencies), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref7; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref7 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref7 = _i6.value; + } + + const dep = _ref7; + + result.topLevelPatterns.push(`${dep}@${dependencies[dep]}`); + } + } + } + } + } + + result.topLevelPatterns.sort((_misc || _load_misc()).sortAlpha); + + if (flags.checkFiles) { + result.flags.push('checkFiles'); + } + + if (flags.flat) { + result.flags.push('flat'); + } + + if (_this3.config.ignoreScripts) { + result.flags.push('ignoreScripts'); + } + if (_this3.config.focus) { + result.flags.push('focus: ' + _this3.config.focusedWorkspaceName); + } + + if (_this3.config.production) { + result.flags.push('production'); + } + + if (_this3.config.plugnplayEnabled) { + result.flags.push('plugnplay'); + } + + const linkedModules = _this3.config.linkedModules; + + if (linkedModules.length) { + result.linkedModules = linkedModules.sort((_misc || _load_misc()).sortAlpha); + } + + for (var _iterator7 = Object.keys(lockfile), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref8; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref8 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref8 = _i7.value; + } + + const key = _ref8; + + result.lockfileEntries[key] = lockfile[key].resolved || ''; + } + + for (var _iterator8 = _this3._getModulesFolders({ workspaceLayout }), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref9; + + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref9 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref9 = _i8.value; + } + + const modulesFolder = _ref9; + + if (yield (_fs || _load_fs()).exists(modulesFolder)) { + result.modulesFolders.push(path.relative(_this3.config.lockfileFolder, modulesFolder)); + } + } + + if (flags.checkFiles) { + const modulesRoot = _this3._getModulesRootFolder(); + + result.files = (yield _this3._getIntegrityListing({ workspaceLayout })).map(function (entry) { + return path.relative(modulesRoot, entry); + }).sort((_misc || _load_misc()).sortAlpha); + } + + return result; + })(); + } + + _getIntegrityFile(locationPath) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const expectedRaw = yield (_fs || _load_fs()).readFile(locationPath); + try { + return (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(), JSON.parse(expectedRaw)); + } catch (e) { + // ignore JSON parsing for legacy text integrity files compatibility + } + return null; + })(); + } + + _compareIntegrityFiles(actual, expected, checkFiles, workspaceLayout) { + if (!expected) { + return 'EXPECTED_IS_NOT_A_JSON'; + } + + if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.linkedModules, expected.linkedModules)) { + return 'LINKED_MODULES_DONT_MATCH'; + } + + if (actual.systemParams !== expected.systemParams) { + return 'SYSTEM_PARAMS_DONT_MATCH'; + } + + let relevantExpectedFlags = expected.flags.slice(); + + // If we run "yarn" after "yarn --check-files", we shouldn't fail the less strict validation + if (actual.flags.indexOf('checkFiles') === -1) { + relevantExpectedFlags = relevantExpectedFlags.filter(flag => flag !== 'checkFiles'); + } + + if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.flags, relevantExpectedFlags)) { + return 'FLAGS_DONT_MATCH'; + } + + if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.topLevelPatterns, expected.topLevelPatterns || [])) { + return 'PATTERNS_DONT_MATCH'; + } + + for (var _iterator9 = Object.keys(actual.lockfileEntries), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { + var _ref10; + + if (_isArray9) { + if (_i9 >= _iterator9.length) break; + _ref10 = _iterator9[_i9++]; + } else { + _i9 = _iterator9.next(); + if (_i9.done) break; + _ref10 = _i9.value; + } + + const key = _ref10; + + if (actual.lockfileEntries[key] !== expected.lockfileEntries[key]) { + return 'LOCKFILE_DONT_MATCH'; + } + } + + for (var _iterator10 = Object.keys(expected.lockfileEntries), _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { + var _ref11; + + if (_isArray10) { + if (_i10 >= _iterator10.length) break; + _ref11 = _iterator10[_i10++]; + } else { + _i10 = _iterator10.next(); + if (_i10.done) break; + _ref11 = _i10.value; + } + + const key = _ref11; + + if (actual.lockfileEntries[key] !== expected.lockfileEntries[key]) { + return 'LOCKFILE_DONT_MATCH'; + } + } + + if (checkFiles) { + // Early bailout if we expect more files than what we have + if (expected.files.length > actual.files.length) { + return 'FILES_MISSING'; + } + + // Since we know the "files" array is sorted (alphabetically), we can optimize the thing + // Instead of storing the files in a Set, we can just iterate both arrays at once. O(n)! + for (let u = 0, v = 0; u < expected.files.length; ++u) { + // Index that, if reached, means that we won't have enough food to match the remaining expected entries anyway + const max = v + (actual.files.length - v) - (expected.files.length - u) + 1; + + // Skip over files that have been added (ie not present in 'expected') + while (v < max && actual.files[v] !== expected.files[u]) { + v += 1; + } + + // If we've reached the index defined above, the file is either missing or we can early exit + if (v === max) { + return 'FILES_MISSING'; + } + } + } + return 'OK'; + } + + check(patterns, lockfile, flags, workspaceLayout) { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // check if patterns exist in lockfile + const missingPatterns = patterns.filter(function (p) { + return !lockfile[p] && (!workspaceLayout || !workspaceLayout.getManifestByPattern(p)); + }); + + const loc = yield _this4._getIntegrityFileLocation(); + if (missingPatterns.length || !loc.exists) { + return { + integrityFileMissing: !loc.exists, + missingPatterns + }; + } + + const actual = yield _this4._generateIntegrityFile(lockfile, patterns, flags, workspaceLayout); + + const expected = yield _this4._getIntegrityFile(loc.locationPath); + let integrityMatches = _this4._compareIntegrityFiles(actual, expected, flags.checkFiles, workspaceLayout); + + if (integrityMatches === 'OK') { + invariant(expected, "The integrity shouldn't pass without integrity file"); + for (var _iterator11 = expected.modulesFolders, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { + var _ref12; + + if (_isArray11) { + if (_i11 >= _iterator11.length) break; + _ref12 = _iterator11[_i11++]; + } else { + _i11 = _iterator11.next(); + if (_i11.done) break; + _ref12 = _i11.value; + } + + const modulesFolder = _ref12; + + if (!(yield (_fs || _load_fs()).exists(path.join(_this4.config.lockfileFolder, modulesFolder)))) { + integrityMatches = 'MODULES_FOLDERS_MISSING'; + } + } + } + + return { + integrityFileMissing: false, + integrityMatches: integrityMatches === 'OK', + integrityError: integrityMatches === 'OK' ? undefined : integrityMatches, + missingPatterns, + hardRefreshRequired: integrityMatches === 'SYSTEM_PARAMS_DONT_MATCH' + }; + })(); + } + + /** + * Get artifacts from integrity file if it exists. + */ + getArtifacts() { + var _this5 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const loc = yield _this5._getIntegrityFileLocation(); + if (!loc.exists) { + return null; + } + + const expectedRaw = yield (_fs || _load_fs()).readFile(loc.locationPath); + let expected; + try { + expected = JSON.parse(expectedRaw); + } catch (e) { + // ignore JSON parsing for legacy text integrity files compatibility + } + + return expected ? expected.artifacts : null; + })(); + } + + /** + * Write the integrity hash of the current install to disk. + */ + save(patterns, lockfile, flags, workspaceLayout, artifacts) { + var _this6 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const integrityFile = yield _this6._generateIntegrityFile(lockfile, patterns, flags, workspaceLayout, artifacts); + + const loc = yield _this6._getIntegrityFileLocation(); + invariant(loc.locationPath, 'expected integrity hash location'); + + yield (_fs || _load_fs()).mkdirp(path.dirname(loc.locationPath)); + yield (_fs || _load_fs()).writeFile(loc.locationPath, JSON.stringify(integrityFile, null, 2)); + })(); + } + + removeIntegrityFile() { + var _this7 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const loc = yield _this7._getIntegrityFileLocation(); + if (loc.exists) { + yield (_fs || _load_fs()).unlink(loc.locationPath); + } + })(); + } +} +exports.default = InstallationIntegrityChecker; + +/***/ }), +/* 209 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.testEngine = testEngine; +exports.checkOne = checkOne; +exports.check = check; +exports.shouldCheck = shouldCheck; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +var _misc; + +function _load_misc() { + return _misc = __webpack_require__(18); +} + +var _yarnVersion; + +function _load_yarnVersion() { + return _yarnVersion = __webpack_require__(120); +} + +var _semver; + +function _load_semver() { + return _semver = __webpack_require__(224); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const semver = __webpack_require__(22); + +const VERSIONS = Object.assign({}, process.versions, { + yarn: (_yarnVersion || _load_yarnVersion()).version +}); + +function isValid(items, actual) { + let isNotWhitelist = true; + let isBlacklist = false; + + for (var _iterator = items, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const item = _ref; + + // blacklist + if (item[0] === '!') { + isBlacklist = true; + + if (actual === item.slice(1)) { + return false; + } + // whitelist + } else { + isNotWhitelist = false; + + if (item === actual) { + return true; + } + } + } + + // npm allows blacklists and whitelists to be mixed. Blacklists with + // whitelisted items should be treated as whitelists. + return isBlacklist && isNotWhitelist; +} + +const aliases = (0, (_map || _load_map()).default)({ + iojs: 'node' // we should probably prompt these libraries to fix this +}); + +const ignore = ['npm', // we'll never satisfy this for obvious reasons +'teleport', // a module bundler used by some modules +'rhino', // once a target for older modules +'cordovaDependencies', // http://bit.ly/2tkUePg +'parcel']; + +function testEngine(name, range, versions, looseSemver) { + const actual = versions[name]; + if (!actual) { + return false; + } + + if (!semver.valid(actual, looseSemver)) { + return false; + } + + if (semver.satisfies(actual, range, looseSemver)) { + return true; + } + + if (name === 'yarn' && (0, (_semver || _load_semver()).satisfiesWithPrereleases)(actual, range, looseSemver)) { + return true; + } + + if (name === 'node' && semver.gt(actual, '1.0.0', looseSemver)) { + // WARNING: this is a massive hack and is super gross but necessary for compatibility + // some modules have the `engines.node` field set to a caret version below semver major v1 + // eg. ^0.12.0. this is problematic as we enforce engines checks and node is now on version >=1 + // to allow this pattern we transform the node version to fake ones in the minor range 10-13 + const major = semver.major(actual, looseSemver); + const fakes = [`0.10.${major}`, `0.11.${major}`, `0.12.${major}`, `0.13.${major}`]; + for (var _iterator2 = fakes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + const actualFake = _ref2; + + if (semver.satisfies(actualFake, range, looseSemver)) { + return true; + } + } + } + + // incompatible version + return false; +} + +function isValidArch(archs) { + return isValid(archs, process.arch); +} + +function isValidPlatform(platforms) { + return isValid(platforms, process.platform); +} + +function checkOne(info, config, ignoreEngines) { + let didIgnore = false; + let didError = false; + const reporter = config.reporter; + const human = `${info.name}@${info.version}`; + + const pushError = msg => { + const ref = info._reference; + + if (ref && ref.optional) { + ref.ignore = true; + ref.incompatible = true; + + reporter.info(`${human}: ${msg}`); + if (!didIgnore) { + reporter.info(reporter.lang('optionalCompatibilityExcluded', human)); + didIgnore = true; + } + } else { + reporter.error(`${human}: ${msg}`); + didError = true; + } + }; + + const os = info.os, + cpu = info.cpu, + engines = info.engines; + + + if (shouldCheckPlatform(os, config.ignorePlatform) && !isValidPlatform(os)) { + pushError(reporter.lang('incompatibleOS', process.platform)); + } + + if (shouldCheckCpu(cpu, config.ignorePlatform) && !isValidArch(cpu)) { + pushError(reporter.lang('incompatibleCPU', process.arch)); + } + + if (shouldCheckEngines(engines, ignoreEngines)) { + for (var _iterator3 = (0, (_misc || _load_misc()).entries)(info.engines), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + const entry = _ref3; + + let name = entry[0]; + const range = entry[1]; + + if (aliases[name]) { + name = aliases[name]; + } + + if (VERSIONS[name]) { + if (!testEngine(name, range, VERSIONS, config.looseSemver)) { + pushError(reporter.lang('incompatibleEngine', name, range, VERSIONS[name])); + } + } else if (ignore.indexOf(name) < 0) { + reporter.warn(`${human}: ${reporter.lang('invalidEngine', name)}`); + } + } + } + + if (didError) { + throw new (_errors || _load_errors()).MessageError(reporter.lang('foundIncompatible')); + } +} + +function check(infos, config, ignoreEngines) { + for (var _iterator4 = infos, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; + } + + const info = _ref4; + + checkOne(info, config, ignoreEngines); + } +} + +function shouldCheckCpu(cpu, ignorePlatform) { + return !ignorePlatform && Array.isArray(cpu) && cpu.length > 0; +} + +function shouldCheckPlatform(os, ignorePlatform) { + return !ignorePlatform && Array.isArray(os) && os.length > 0; +} + +function shouldCheckEngines(engines, ignoreEngines) { + return !ignoreEngines && typeof engines === 'object'; +} + +function shouldCheck(manifest, options) { + return shouldCheckCpu(manifest.cpu, options.ignorePlatform) || shouldCheckPlatform(manifest.os, options.ignorePlatform) || shouldCheckEngines(manifest.engines, options.ignoreEngines); +} + +/***/ }), +/* 210 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fetchOneRemote = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let fetchCache = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest, fetcher, config, remote) { + // $FlowFixMe: This error doesn't make sense + var _ref2 = yield config.readPackageMetadata(dest); + + const hash = _ref2.hash, + pkg = _ref2.package, + cacheRemote = _ref2.remote; + + + const cacheIntegrity = cacheRemote.cacheIntegrity || cacheRemote.integrity; + const cacheHash = cacheRemote.hash; + + if (remote.integrity) { + if (!cacheIntegrity || !ssri.parse(cacheIntegrity).match(remote.integrity)) { + throw new (_errors || _load_errors()).SecurityError(config.reporter.lang('fetchBadIntegrityCache', pkg.name, cacheIntegrity, remote.integrity)); + } + } + + if (remote.hash) { + if (!cacheHash || cacheHash !== remote.hash) { + throw new (_errors || _load_errors()).SecurityError(config.reporter.lang('fetchBadHashCache', pkg.name, cacheHash, remote.hash)); + } + } + + yield fetcher.setupMirrorFromCache(); + return { + package: pkg, + hash, + dest, + cached: true + }; + }); + + return function fetchCache(_x, _x2, _x3, _x4) { + return _ref.apply(this, arguments); + }; +})(); + +let fetchOneRemote = exports.fetchOneRemote = (() => { + var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (remote, name, version, dest, config) { + // Mock metadata 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, remote); + } + + // remove as the module may be invalid + yield (_fs || _load_fs()).unlink(dest); + + try { + return yield fetcher.fetch({ + name, + version + }); + } catch (err) { + try { + yield (_fs || _load_fs()).unlink(dest); + } catch (err2) { + // what do? + } + throw err; + } + }); + + return function fetchOneRemote(_x5, _x6, _x7, _x8, _x9) { + 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(_x10, _x11) { + return _ref4.apply(this, arguments); + }; +})(); + +exports.fetch = fetch; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _index; + +function _load_index() { + return _index = _interopRequireWildcard(__webpack_require__(552)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _promise; + +function _load_promise() { + return _promise = _interopRequireWildcard(__webpack_require__(50)); +} + +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 }; } + +const ssri = __webpack_require__(65); + +function fetchOne(ref, config) { + const dest = config.generateModuleCachePath(ref); + + return fetchOneRemote(ref.remote, ref.name, ref.version, dest, config); +} + +function fetch(pkgs, config) { + const pkgsPerDest = new Map(); + pkgs = pkgs.filter(pkg => { + const ref = pkg._reference; + if (!ref) { + return false; + } + const dest = config.generateModuleCachePath(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 || ref.remote.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 (_x12) { + return _ref5.apply(this, arguments); + }; + })(), config.networkConcurrency); +} + +/***/ }), +/* 211 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.linkBin = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let linkBin = exports.linkBin = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { + if (process.platform === 'win32') { + const unlockMutex = yield (0, (_mutex || _load_mutex()).default)(src); + try { + yield cmdShim(src, dest, { createPwshFile: false }); + } finally { + unlockMutex(); + } + } else { + yield (_fs || _load_fs()).mkdirp(path.dirname(dest)); + yield (_fs || _load_fs()).symlink(src, dest); + yield (_fs || _load_fs()).chmod(dest, '755'); + } + }); + + return function linkBin(_x, _x2) { + return _ref.apply(this, arguments); + }; +})(); + +var _packageHoister; + +function _load_packageHoister() { + return _packageHoister = _interopRequireDefault(__webpack_require__(556)); +} + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _promise; + +function _load_promise() { + return _promise = _interopRequireWildcard(__webpack_require__(50)); +} + +var _normalizePattern2; + +function _load_normalizePattern() { + return _normalizePattern2 = __webpack_require__(37); +} + +var _misc; + +function _load_misc() { + return _misc = __webpack_require__(18); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _mutex; + +function _load_mutex() { + return _mutex = _interopRequireDefault(__webpack_require__(375)); +} + +var _semver; + +function _load_semver() { + return _semver = __webpack_require__(224); +} + +var _workspaceLayout; + +function _load_workspaceLayout() { + return _workspaceLayout = _interopRequireDefault(__webpack_require__(90)); +} + +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 }; } + +const invariant = __webpack_require__(9); + +const cmdShim = __webpack_require__(201); +const path = __webpack_require__(0); +const semver = __webpack_require__(22); +// Concurrency for creating bin links disabled because of the issue #1961 +const linkBinConcurrency = 1; + +class PackageLinker { + constructor(config, resolver) { + this.resolver = resolver; + this.reporter = config.reporter; + this.config = config; + this.artifacts = {}; + this.topLevelBinLinking = true; + this.unplugged = []; + } + + setArtifacts(artifacts) { + this.artifacts = artifacts; + } + + setTopLevelBinLinking(topLevelBinLinking) { + this.topLevelBinLinking = topLevelBinLinking; + } + + linkSelfDependencies(pkg, pkgLoc, targetBinLoc, override = false) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + targetBinLoc = path.join(targetBinLoc, '.bin'); + yield (_fs || _load_fs()).mkdirp(targetBinLoc); + targetBinLoc = yield (_fs || _load_fs()).realpath(targetBinLoc); + pkgLoc = yield (_fs || _load_fs()).realpath(pkgLoc); + for (var _iterator = (0, (_misc || _load_misc()).entries)(pkg.bin), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref3; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref3 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref3 = _i.value; + } + + const _ref2 = _ref3; + const scriptName = _ref2[0]; + const scriptCmd = _ref2[1]; + + const dest = path.join(targetBinLoc, scriptName); + const src = path.join(pkgLoc, scriptCmd); + if (!(yield (_fs || _load_fs()).exists(src))) { + if (!override) { + // TODO maybe throw an error + continue; + } + } + yield linkBin(src, dest); + } + })(); + } + + linkBinDependencies(pkg, dir) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const deps = []; + + const ref = pkg._reference; + invariant(ref, 'Package reference is missing'); + + const remote = pkg._remote; + invariant(remote, 'Package remote is missing'); + + // link up `bin scripts` in `dependencies` + for (var _iterator2 = ref.dependencies, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref4; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref4 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref4 = _i2.value; + } + + const pattern = _ref4; + + const dep = _this.resolver.getStrictResolvedPattern(pattern); + if ( + // Missing locations means not installed inside node_modules + dep._reference && dep._reference.locations.length && dep.bin && Object.keys(dep.bin).length) { + const loc = yield _this.findNearestInstalledVersionOfPackage(dep, dir); + deps.push({ dep, loc }); + } + } + + // link up the `bin` scripts in bundled dependencies + if (pkg.bundleDependencies) { + for (var _iterator3 = pkg.bundleDependencies, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref5; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref5 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref5 = _i3.value; + } + + const depName = _ref5; + + const locs = ref.locations.map(function (loc) { + return path.join(loc, _this.config.getFolder(pkg), depName); + }); + try { + const dep = yield _this.config.readManifest(locs[0], remote.registry); //all of them should be the same + + if (dep.bin && Object.keys(dep.bin).length) { + deps.push(...locs.map(function (loc) { + return { dep, loc }; + })); + } + } catch (ex) { + if (ex.code !== 'ENOENT') { + throw ex; + } + // intentionally ignoring ENOENT error. + // bundledDependency either does not exist or does not contain a package.json + } + } + } + + // no deps to link + if (!deps.length) { + return; + } + + // write the executables + for (var _iterator4 = deps, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref7; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref7 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref7 = _i4.value; + } + + const _ref6 = _ref7; + const dep = _ref6.dep, + loc = _ref6.loc; + + if (dep._reference && dep._reference.locations.length) { + invariant(!dep._reference.isPlugnplay, "Plug'n'play packages should not be referenced here"); + yield _this.linkSelfDependencies(dep, loc, dir); + } + } + })(); + } + + //find the installation location of ref that would be used in binLoc based on node module resolution + findNearestInstalledVersionOfPackage(pkg, binLoc) { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const ref = pkg._reference; + invariant(ref, 'expected pkg reference for ' + pkg.name); + const moduleFolder = _this2.config.getFolder(pkg); + yield (_fs || _load_fs()).mkdirp(binLoc); + const realBinLoc = yield (_fs || _load_fs()).realpath(binLoc); + + const allLocations = [...ref.locations]; + const realLocations = yield Promise.all(ref.locations.map(function (loc) { + return (_fs || _load_fs()).realpath(loc); + })); + realLocations.forEach(function (loc) { + return allLocations.indexOf(loc) !== -1 || allLocations.push(loc); + }); + + const locationBinLocPairs = allLocations.map(function (loc) { + return [loc, binLoc]; + }); + if (binLoc !== realBinLoc) { + locationBinLocPairs.push(...allLocations.map(function (loc) { + return [loc, realBinLoc]; + })); + } + + const distancePairs = locationBinLocPairs.map(function ([loc, curBinLoc]) { + let distance = 0; + let curLoc = curBinLoc; + let notFound = false; + + while (path.join(curLoc, ref.name) !== loc && path.join(curLoc, moduleFolder, ref.name) !== loc) { + const next = path.dirname(curLoc); + if (curLoc === next) { + notFound = true; + break; + } + + distance++; + curLoc = next; + } + return notFound ? null : [loc, distance]; + }); + + //remove items where path was not found + const filteredDistancePairs = distancePairs.filter(function (d) { + return d; + }); + filteredDistancePairs; + + invariant(filteredDistancePairs.length > 0, `could not find a copy of ${pkg.name} to link in ${binLoc}`); + + //get smallest distance from package location + const minItem = filteredDistancePairs.reduce(function (min, cur) { + return cur[1] < min[1] ? cur : min; + }); + + invariant(minItem[1] >= 0, 'could not find a target for bin dir of ' + minItem.toString()); + return minItem[0]; + })(); + } + + getFlatHoistedTree(patterns, workspaceLayout, { ignoreOptional } = {}) { + const hoister = new (_packageHoister || _load_packageHoister()).default(this.config, this.resolver, { ignoreOptional, workspaceLayout }); + hoister.seed(patterns); + if (this.config.focus) { + hoister.markShallowWorkspaceEntries(); + } + return hoister.init(); + } + + copyModules(patterns, workspaceLayout, { linkDuplicates, ignoreOptional } = {}) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let flatTree = _this3.getFlatHoistedTree(patterns, workspaceLayout, { ignoreOptional }); + // sorted tree makes file creation and copying not to interfere with each other + flatTree = flatTree.sort(function (dep1, dep2) { + return dep1[0].localeCompare(dep2[0]); + }); + + // list of artifacts in modules to remove from extraneous removal + const artifactFiles = []; + + const copyQueue = new Map(); + const hardlinkQueue = new Map(); + const hardlinksEnabled = linkDuplicates && (yield (_fs || _load_fs()).hardlinksWork(_this3.config.cwd)); + + const copiedSrcs = new Map(); + const symlinkPaths = new Map(); + for (var _iterator5 = flatTree, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref9; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref9 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref9 = _i5.value; + } + + const _ref8 = _ref9; + const folder = _ref8[0]; + var _ref8$ = _ref8[1]; + const pkg = _ref8$.pkg; + const loc = _ref8$.loc; + const isShallow = _ref8$.isShallow; + + const remote = pkg._remote || { type: '' }; + const ref = pkg._reference; + let dest = folder; + invariant(ref, 'expected package reference'); + + let src = loc; + let type = ''; + if (remote.type === 'link') { + // replace package source from incorrect cache location (workspaces and link: are not cached) + // with a symlink source + src = remote.reference; + type = 'symlink'; + } else if (workspaceLayout && remote.type === 'workspace' && !isShallow) { + src = remote.reference; + type = 'symlink'; + // to get real path for non hoisted dependencies + symlinkPaths.set(dest, src); + } else { + // backwards compatibility: get build artifacts from metadata + // does not apply to symlinked dependencies + const metadata = yield _this3.config.readPackageMetadata(src); + for (var _iterator15 = metadata.artifacts, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { + var _ref23; + + if (_isArray15) { + if (_i15 >= _iterator15.length) break; + _ref23 = _iterator15[_i15++]; + } else { + _i15 = _iterator15.next(); + if (_i15.done) break; + _ref23 = _i15.value; + } + + const file = _ref23; + + artifactFiles.push(path.join(dest, file)); + } + } + + for (var _iterator16 = symlinkPaths.entries(), _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { + var _ref25; + + if (_isArray16) { + if (_i16 >= _iterator16.length) break; + _ref25 = _iterator16[_i16++]; + } else { + _i16 = _iterator16.next(); + if (_i16.done) break; + _ref25 = _i16.value; + } + + const _ref24 = _ref25; + const symlink = _ref24[0]; + const realpath = _ref24[1]; + + if (dest.indexOf(symlink + path.sep) === 0) { + // after hoisting we end up with this structure + // root/node_modules/workspace-package(symlink)/node_modules/package-a + // fs.copy operations can't copy files through a symlink, so all the paths under workspace-package + // need to be replaced with a real path, except for the symlink root/node_modules/workspace-package + dest = dest.replace(symlink, realpath); + } + } + + if (_this3.config.plugnplayEnabled) { + ref.isPlugnplay = true; + if (yield _this3._isUnplugged(pkg, ref)) { + dest = _this3.config.generatePackageUnpluggedPath(ref); + + // We don't skip the copy if the unplugged package isn't materialized yet + if (yield (_fs || _load_fs()).exists(dest)) { + ref.addLocation(dest); + continue; + } + } else { + ref.addLocation(src); + continue; + } + } + + ref.addLocation(dest); + + const integrityArtifacts = _this3.artifacts[`${pkg.name}@${pkg.version}`]; + if (integrityArtifacts) { + for (var _iterator17 = integrityArtifacts, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) { + var _ref26; + + if (_isArray17) { + if (_i17 >= _iterator17.length) break; + _ref26 = _iterator17[_i17++]; + } else { + _i17 = _iterator17.next(); + if (_i17.done) break; + _ref26 = _i17.value; + } + + const file = _ref26; + + artifactFiles.push(path.join(dest, file)); + } + } + + const copiedDest = copiedSrcs.get(src); + if (!copiedDest) { + // no point to hardlink to a symlink + if (hardlinksEnabled && type !== 'symlink') { + copiedSrcs.set(src, dest); + } + copyQueue.set(dest, { + src, + dest, + type, + onFresh() { + if (ref) { + ref.setFresh(true); + } + } + }); + } else { + hardlinkQueue.set(dest, { + src: copiedDest, + dest, + onFresh() { + if (ref) { + ref.setFresh(true); + } + } + }); + } + } + + const possibleExtraneous = new Set(); + const scopedPaths = new Set(); + + const findExtraneousFiles = (() => { + var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (basePath) { + for (var _iterator6 = _this3.config.registryFolders, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref11; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref11 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref11 = _i6.value; + } + + const folder = _ref11; + + const loc = path.resolve(basePath, folder); + + if (yield (_fs || _load_fs()).exists(loc)) { + const files = yield (_fs || _load_fs()).readdir(loc); + + for (var _iterator7 = files, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref12; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref12 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref12 = _i7.value; + } + + const file = _ref12; + + const filepath = path.join(loc, file); + + // it's a scope, not a package + if (file[0] === '@') { + scopedPaths.add(filepath); + + for (var _iterator8 = yield (_fs || _load_fs()).readdir(filepath), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref13; + + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref13 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref13 = _i8.value; + } + + const subfile = _ref13; + + possibleExtraneous.add(path.join(filepath, subfile)); + } + } else if (file[0] === '.' && file !== '.bin') { + if (!(yield (_fs || _load_fs()).lstat(filepath)).isDirectory()) { + possibleExtraneous.add(filepath); + } + } else { + possibleExtraneous.add(filepath); + } + } + } + } + }); + + return function findExtraneousFiles(_x3) { + return _ref10.apply(this, arguments); + }; + })(); + + yield findExtraneousFiles(_this3.config.lockfileFolder); + if (workspaceLayout) { + for (var _iterator9 = Object.keys(workspaceLayout.workspaces), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { + var _ref14; + + if (_isArray9) { + if (_i9 >= _iterator9.length) break; + _ref14 = _iterator9[_i9++]; + } else { + _i9 = _iterator9.next(); + if (_i9.done) break; + _ref14 = _i9.value; + } + + const workspaceName = _ref14; + + yield findExtraneousFiles(workspaceLayout.workspaces[workspaceName].loc); + } + } + + // If an Extraneous is an entry created via "yarn link", we prevent it from being overwritten. + // Unfortunately, the only way we can know if they have been created this way is to check if they + // are symlinks - problem is that it then conflicts with the newly introduced "link:" protocol, + // which also creates symlinks :( a somewhat weak fix is to check if the symlink target is registered + // inside the linkFolder, in which case we assume it has been created via "yarn link". Otherwise, we + // assume it's a link:-managed dependency, and overwrite it as usual. + const linkTargets = new Map(); + + let linkedModules; + try { + linkedModules = yield (_fs || _load_fs()).readdir(_this3.config.linkFolder); + } catch (err) { + if (err.code === 'ENOENT') { + linkedModules = []; + } else { + throw err; + } + } + + // TODO: Consolidate this logic with `this.config.linkedModules` logic + for (var _iterator10 = linkedModules, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { + var _ref15; + + if (_isArray10) { + if (_i10 >= _iterator10.length) break; + _ref15 = _iterator10[_i10++]; + } else { + _i10 = _iterator10.next(); + if (_i10.done) break; + _ref15 = _i10.value; + } + + const entry = _ref15; + + const entryPath = path.join(_this3.config.linkFolder, entry); + const stat = yield (_fs || _load_fs()).lstat(entryPath); + + if (stat.isSymbolicLink()) { + try { + const entryTarget = yield (_fs || _load_fs()).realpath(entryPath); + linkTargets.set(entry, entryTarget); + } catch (err) { + _this3.reporter.warn(_this3.reporter.lang('linkTargetMissing', entry)); + yield (_fs || _load_fs()).unlink(entryPath); + } + } else if (stat.isDirectory() && entry[0] === '@') { + // if the entry is directory beginning with '@', then we're dealing with a package scope, which + // means we must iterate inside to retrieve the package names it contains + const scopeName = entry; + + for (var _iterator18 = yield (_fs || _load_fs()).readdir(entryPath), _isArray18 = Array.isArray(_iterator18), _i18 = 0, _iterator18 = _isArray18 ? _iterator18 : _iterator18[Symbol.iterator]();;) { + var _ref27; + + if (_isArray18) { + if (_i18 >= _iterator18.length) break; + _ref27 = _iterator18[_i18++]; + } else { + _i18 = _iterator18.next(); + if (_i18.done) break; + _ref27 = _i18.value; + } + + const entry2 = _ref27; + + const entryPath2 = path.join(entryPath, entry2); + const stat2 = yield (_fs || _load_fs()).lstat(entryPath2); + + if (stat2.isSymbolicLink()) { + const packageName = `${scopeName}/${entry2}`; + try { + const entryTarget = yield (_fs || _load_fs()).realpath(entryPath2); + linkTargets.set(packageName, entryTarget); + } catch (err) { + _this3.reporter.warn(_this3.reporter.lang('linkTargetMissing', packageName)); + yield (_fs || _load_fs()).unlink(entryPath2); + } + } + } + } + } + + for (var _iterator11 = possibleExtraneous, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { + var _ref16; + + if (_isArray11) { + if (_i11 >= _iterator11.length) break; + _ref16 = _iterator11[_i11++]; + } else { + _i11 = _iterator11.next(); + if (_i11.done) break; + _ref16 = _i11.value; + } + + const loc = _ref16; + + let packageName = path.basename(loc); + const scopeName = path.basename(path.dirname(loc)); + + if (scopeName[0] === `@`) { + packageName = `${scopeName}/${packageName}`; + } + + if ((yield (_fs || _load_fs()).lstat(loc)).isSymbolicLink() && linkTargets.has(packageName) && linkTargets.get(packageName) === (yield (_fs || _load_fs()).realpath(loc))) { + possibleExtraneous.delete(loc); + copyQueue.delete(loc); + } + } + + // + let tick; + yield (_fs || _load_fs()).copyBulk(Array.from(copyQueue.values()), _this3.reporter, { + possibleExtraneous, + artifactFiles, + + ignoreBasenames: [(_constants || _load_constants()).METADATA_FILENAME, (_constants || _load_constants()).TARBALL_FILENAME, '.bin'], + + onStart: function onStart(num) { + tick = _this3.reporter.progress(num); + }, + + onProgress(src) { + if (tick) { + tick(); + } + } + }); + + yield (_fs || _load_fs()).hardlinkBulk(Array.from(hardlinkQueue.values()), _this3.reporter, { + possibleExtraneous, + artifactFiles, + + onStart: function onStart(num) { + tick = _this3.reporter.progress(num); + }, + + onProgress(src) { + if (tick) { + tick(); + } + } + }); + + // remove all extraneous files that weren't in the tree + for (var _iterator12 = possibleExtraneous, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { + var _ref17; + + if (_isArray12) { + if (_i12 >= _iterator12.length) break; + _ref17 = _iterator12[_i12++]; + } else { + _i12 = _iterator12.next(); + if (_i12.done) break; + _ref17 = _i12.value; + } + + const loc = _ref17; + + _this3.reporter.verbose(_this3.reporter.lang('verboseFileRemoveExtraneous', loc)); + yield (_fs || _load_fs()).unlink(loc); + } + + // remove any empty scoped directories + for (var _iterator13 = scopedPaths, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { + var _ref18; + + if (_isArray13) { + if (_i13 >= _iterator13.length) break; + _ref18 = _iterator13[_i13++]; + } else { + _i13 = _iterator13.next(); + if (_i13.done) break; + _ref18 = _i13.value; + } + + const scopedPath = _ref18; + + const files = yield (_fs || _load_fs()).readdir(scopedPath); + if (files.length === 0) { + yield (_fs || _load_fs()).unlink(scopedPath); + } + } + + // create binary links + if (_this3.config.getOption('bin-links') && _this3.config.binLinks !== false) { + const topLevelDependencies = _this3.determineTopLevelBinLinkOrder(flatTree); + const tickBin = _this3.reporter.progress(flatTree.length + topLevelDependencies.length); + + // create links in transient dependencies + yield (_promise || _load_promise()).queue(flatTree, (() => { + var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ([dest, { pkg, isNohoist, parts }]) { + if (pkg._reference && pkg._reference.locations.length && !pkg._reference.isPlugnplay) { + const binLoc = path.join(dest, _this3.config.getFolder(pkg)); + yield _this3.linkBinDependencies(pkg, binLoc); + if (isNohoist) { + // if nohoist, we need to override the binLink to point to the local destination + const parentBinLoc = _this3.getParentBinLoc(parts, flatTree); + yield _this3.linkSelfDependencies(pkg, dest, parentBinLoc, true); + } + tickBin(); + } + tickBin(); + }); + + return function (_x4) { + return _ref19.apply(this, arguments); + }; + })(), linkBinConcurrency); + + // create links at top level for all dependencies. + yield (_promise || _load_promise()).queue(topLevelDependencies, (() => { + var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ([dest, { pkg }]) { + if (pkg._reference && pkg._reference.locations.length && !pkg._reference.isPlugnplay && pkg.bin && Object.keys(pkg.bin).length) { + let binLoc; + if (_this3.config.modulesFolder) { + binLoc = path.join(_this3.config.modulesFolder); + } else { + binLoc = path.join(_this3.config.lockfileFolder, _this3.config.getFolder(pkg)); + } + yield _this3.linkSelfDependencies(pkg, dest, binLoc); + } + tickBin(); + }); + + return function (_x5) { + return _ref20.apply(this, arguments); + }; + })(), linkBinConcurrency); + } + + for (var _iterator14 = flatTree, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { + var _ref22; + + if (_isArray14) { + if (_i14 >= _iterator14.length) break; + _ref22 = _iterator14[_i14++]; + } else { + _i14 = _iterator14.next(); + if (_i14.done) break; + _ref22 = _i14.value; + } + + const _ref21 = _ref22; + const pkg = _ref21[1].pkg; + + yield _this3._warnForMissingBundledDependencies(pkg); + } + })(); + } + + _buildTreeHash(flatTree) { + const hash = new Map(); + for (var _iterator19 = flatTree, _isArray19 = Array.isArray(_iterator19), _i19 = 0, _iterator19 = _isArray19 ? _iterator19 : _iterator19[Symbol.iterator]();;) { + var _ref29; + + if (_isArray19) { + if (_i19 >= _iterator19.length) break; + _ref29 = _iterator19[_i19++]; + } else { + _i19 = _iterator19.next(); + if (_i19.done) break; + _ref29 = _i19.value; + } + + const _ref28 = _ref29; + const dest = _ref28[0]; + const hoistManifest = _ref28[1]; + + const key = hoistManifest.parts.join('#'); + hash.set(key, [dest, hoistManifest]); + } + this._treeHash = hash; + return hash; + } + + getParentBinLoc(parts, flatTree) { + const hash = this._treeHash || this._buildTreeHash(flatTree); + const parent = parts.slice(0, -1).join('#'); + const tuple = hash.get(parent); + if (!tuple) { + throw new Error(`failed to get parent '${parent}' binLoc`); + } + const dest = tuple[0], + hoistManifest = tuple[1]; + + const parentBinLoc = path.join(dest, this.config.getFolder(hoistManifest.pkg)); + + return parentBinLoc; + } + + determineTopLevelBinLinkOrder(flatTree) { + const linksToCreate = new Map(); + for (var _iterator20 = flatTree, _isArray20 = Array.isArray(_iterator20), _i20 = 0, _iterator20 = _isArray20 ? _iterator20 : _iterator20[Symbol.iterator]();;) { + var _ref31; + + if (_isArray20) { + if (_i20 >= _iterator20.length) break; + _ref31 = _iterator20[_i20++]; + } else { + _i20 = _iterator20.next(); + if (_i20.done) break; + _ref31 = _i20.value; + } + + const _ref30 = _ref31; + const dest = _ref30[0]; + const hoistManifest = _ref30[1]; + const pkg = hoistManifest.pkg, + isDirectRequire = hoistManifest.isDirectRequire, + isNohoist = hoistManifest.isNohoist, + isShallow = hoistManifest.isShallow; + const name = pkg.name; + + // nohoist and shallow packages should not be linked at topLevel bin + + if (!isNohoist && !isShallow && (isDirectRequire || this.topLevelBinLinking && !linksToCreate.has(name))) { + linksToCreate.set(name, [dest, hoistManifest]); + } + } + + // Sort the array so that direct dependencies will be linked last. + // Bin links are overwritten if they already exist, so this will cause direct deps to take precedence. + // If someone finds this to be incorrect later, you could also consider sorting descending by + // `linkToCreate.level` which is the dependency tree depth. Direct deps will have level 0 and transitive + // deps will have level > 0. + const transientBins = []; + const topLevelBins = []; + for (var _iterator21 = Array.from(linksToCreate.values()), _isArray21 = Array.isArray(_iterator21), _i21 = 0, _iterator21 = _isArray21 ? _iterator21 : _iterator21[Symbol.iterator]();;) { + var _ref32; + + if (_isArray21) { + if (_i21 >= _iterator21.length) break; + _ref32 = _iterator21[_i21++]; + } else { + _i21 = _iterator21.next(); + if (_i21.done) break; + _ref32 = _i21.value; + } + + const linkToCreate = _ref32; + + if (linkToCreate[1].isDirectRequire) { + topLevelBins.push(linkToCreate); + } else { + transientBins.push(linkToCreate); + } + } + return [...transientBins, ...topLevelBins]; + } + + resolvePeerModules() { + for (var _iterator22 = this.resolver.getManifests(), _isArray22 = Array.isArray(_iterator22), _i22 = 0, _iterator22 = _isArray22 ? _iterator22 : _iterator22[Symbol.iterator]();;) { + var _ref33; + + if (_isArray22) { + if (_i22 >= _iterator22.length) break; + _ref33 = _iterator22[_i22++]; + } else { + _i22 = _iterator22.next(); + if (_i22.done) break; + _ref33 = _i22.value; + } + + const pkg = _ref33; + + const peerDeps = pkg.peerDependencies; + const peerDepsMeta = pkg.peerDependenciesMeta; + + if (!peerDeps) { + continue; + } + + const ref = pkg._reference; + invariant(ref, 'Package reference is missing'); + + // TODO: We are taking the "shortest" ref tree but there may be multiple ref trees with the same length + const refTree = ref.requests.map(req => req.parentNames).sort((arr1, arr2) => arr1.length - arr2.length)[0]; + + const getLevelDistance = pkgRef => { + let minDistance = Infinity; + for (var _iterator23 = pkgRef.requests, _isArray23 = Array.isArray(_iterator23), _i23 = 0, _iterator23 = _isArray23 ? _iterator23 : _iterator23[Symbol.iterator]();;) { + var _ref34; + + if (_isArray23) { + if (_i23 >= _iterator23.length) break; + _ref34 = _iterator23[_i23++]; + } else { + _i23 = _iterator23.next(); + if (_i23.done) break; + _ref34 = _i23.value; + } + + const req = _ref34; + + const distance = refTree.length - req.parentNames.length; + + if (distance >= 0 && distance < minDistance && req.parentNames.every((name, idx) => name === refTree[idx])) { + minDistance = distance; + } + } + + return minDistance; + }; + + for (const peerDepName in peerDeps) { + const range = peerDeps[peerDepName]; + const meta = peerDepsMeta && peerDepsMeta[peerDepName]; + + const isOptional = !!(meta && meta.optional); + + const peerPkgs = this.resolver.getAllInfoForPackageName(peerDepName); + + let peerError = 'unmetPeer'; + let resolvedLevelDistance = Infinity; + let resolvedPeerPkg; + for (var _iterator24 = peerPkgs, _isArray24 = Array.isArray(_iterator24), _i24 = 0, _iterator24 = _isArray24 ? _iterator24 : _iterator24[Symbol.iterator]();;) { + var _ref35; + + if (_isArray24) { + if (_i24 >= _iterator24.length) break; + _ref35 = _iterator24[_i24++]; + } else { + _i24 = _iterator24.next(); + if (_i24.done) break; + _ref35 = _i24.value; + } + + const peerPkg = _ref35; + + const peerPkgRef = peerPkg._reference; + if (!(peerPkgRef && peerPkgRef.patterns)) { + continue; + } + const levelDistance = getLevelDistance(peerPkgRef); + if (isFinite(levelDistance) && levelDistance < resolvedLevelDistance) { + if (this._satisfiesPeerDependency(range, peerPkgRef.version)) { + resolvedLevelDistance = levelDistance; + resolvedPeerPkg = peerPkgRef; + } else { + peerError = 'incorrectPeer'; + } + } + } + + if (resolvedPeerPkg) { + ref.addDependencies(resolvedPeerPkg.patterns); + this.reporter.verbose(this.reporter.lang('selectedPeer', `${pkg.name}@${pkg.version}`, `${peerDepName}@${resolvedPeerPkg.version}`, resolvedPeerPkg.level)); + } else if (!isOptional) { + this.reporter.warn(this.reporter.lang(peerError, `${refTree.join(' > ')} > ${pkg.name}@${pkg.version}`, `${peerDepName}@${range}`)); + } + } + } + } + + _satisfiesPeerDependency(range, version) { + return range === '*' || (0, (_semver || _load_semver()).satisfiesWithPrereleases)(version, range, this.config.looseSemver); + } + + _warnForMissingBundledDependencies(pkg) { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const ref = pkg._reference; + invariant(ref, 'missing package ref ' + pkg.name); + + if (pkg.bundleDependencies) { + for (var _iterator25 = pkg.bundleDependencies, _isArray25 = Array.isArray(_iterator25), _i25 = 0, _iterator25 = _isArray25 ? _iterator25 : _iterator25[Symbol.iterator]();;) { + var _ref36; + + if (_isArray25) { + if (_i25 >= _iterator25.length) break; + _ref36 = _iterator25[_i25++]; + } else { + _i25 = _iterator25.next(); + if (_i25.done) break; + _ref36 = _i25.value; + } + + const depName = _ref36; + + const locs = ref.locations.map(function (loc) { + return path.join(loc, _this4.config.getFolder(pkg), depName); + }); + const locsExist = yield Promise.all(locs.map(function (loc) { + return (_fs || _load_fs()).exists(loc); + })); + if (locsExist.some(function (e) { + return !e; + })) { + //if any of the locs do not exist + const pkgHuman = `${pkg.name}@${pkg.version}`; + _this4.reporter.warn(_this4.reporter.lang('missingBundledDependency', pkgHuman, depName)); + } + } + } + })(); + } + + _isUnplugged(pkg, ref) { + var _this5 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // If an unplugged folder exists for the specified package, we simply use it + if (yield (_fs || _load_fs()).exists(_this5.config.generatePackageUnpluggedPath(ref))) { + return true; + } + + // If the package has a postinstall script, we also unplug it (otherwise they would run into the cache) + if (!_this5.config.ignoreScripts && pkg.scripts && (pkg.scripts.preinstall || pkg.scripts.install || pkg.scripts.postinstall)) { + return true; + } + + // Check whether the user explicitly requested for the package to be unplugged + return _this5.unplugged.some(function (patternToUnplug) { + var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(patternToUnplug); + + const name = _normalizePattern.name, + range = _normalizePattern.range, + hasVersion = _normalizePattern.hasVersion; + + const satisfiesSemver = hasVersion ? semver.satisfies(ref.version, range) : true; + return name === ref.name && satisfiesSemver; + }); + })(); + } + + init(patterns, workspaceLayout, { linkDuplicates, ignoreOptional } = {}) { + var _this6 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + _this6.resolvePeerModules(); + yield _this6.copyModules(patterns, workspaceLayout, { linkDuplicates, ignoreOptional }); + + if (!_this6.config.plugnplayEnabled) { + yield (_fs || _load_fs()).unlink(`${_this6.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`); + } + })(); + } +} +exports.default = PackageLinker; + +/***/ }), +/* 212 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.clearLine = clearLine; +exports.toStartOfLine = toStartOfLine; +exports.writeOnNthLine = writeOnNthLine; +exports.clearNthLine = clearNthLine; + +var _tty; + +function _load_tty() { + return _tty = _interopRequireDefault(__webpack_require__(104)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const readline = __webpack_require__(197); + +var _require = __webpack_require__(30); + +const supportsColor = _require.supportsColor; + + +const CLEAR_WHOLE_LINE = 0; +const CLEAR_RIGHT_OF_CURSOR = 1; + +function clearLine(stdout) { + if (!supportsColor) { + if (stdout instanceof (_tty || _load_tty()).default.WriteStream) { + if (stdout.columns > 0) { + stdout.write(`\r${' '.repeat(stdout.columns - 1)}`); + } + stdout.write(`\r`); + } + return; + } + + readline.clearLine(stdout, CLEAR_WHOLE_LINE); + readline.cursorTo(stdout, 0); +} + +function toStartOfLine(stdout) { + if (!supportsColor) { + stdout.write('\r'); + return; + } + + readline.cursorTo(stdout, 0); +} + +function writeOnNthLine(stdout, n, msg) { + if (!supportsColor) { + return; + } + + if (n == 0) { + readline.cursorTo(stdout, 0); + stdout.write(msg); + readline.clearLine(stdout, CLEAR_RIGHT_OF_CURSOR); + return; + } + readline.cursorTo(stdout, 0); + readline.moveCursor(stdout, 0, -n); + stdout.write(msg); + readline.clearLine(stdout, CLEAR_RIGHT_OF_CURSOR); + readline.cursorTo(stdout, 0); + readline.moveCursor(stdout, 0, n); +} + +function clearNthLine(stdout, n) { + if (!supportsColor) { + return; + } + + if (n == 0) { + clearLine(stdout); + return; + } + readline.cursorTo(stdout, 0); + readline.moveCursor(stdout, 0, -n); + readline.clearLine(stdout, CLEAR_WHOLE_LINE); + readline.moveCursor(stdout, 0, n); +} + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(21)); +} + +var _baseReporter; + +function _load_baseReporter() { + return _baseReporter = _interopRequireDefault(__webpack_require__(108)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class JSONReporter extends (_baseReporter || _load_baseReporter()).default { + constructor(opts) { + super(opts); + + this._activityId = 0; + this._progressId = 0; + } + + _dump(type, data, error) { + let stdout = this.stdout; + if (error) { + stdout = this.stderr; + } + stdout.write(`${JSON.stringify({ type, data })}\n`); + } + + _verbose(msg) { + this._dump('verbose', msg); + } + + list(type, items, hints) { + this._dump('list', { type, items, hints }); + } + + tree(type, trees) { + this._dump('tree', { type, trees }); + } + + step(current, total, message) { + this._dump('step', { message, current, total }); + } + + inspect(value) { + this._dump('inspect', value); + } + + footer(showPeakMemory) { + this._dump('finished', this.getTotalTime()); + } + + log(msg) { + this._dump('log', msg); + } + + command(msg) { + this._dump('command', msg); + } + + table(head, body) { + this._dump('table', { head, body }); + } + + success(msg) { + this._dump('success', msg); + } + + error(msg) { + this._dump('error', msg, true); + } + + warn(msg) { + this._dump('warning', msg, true); + } + + info(msg) { + this._dump('info', msg); + } + + activitySet(total, workers) { + if (!this.isTTY || this.noProgress) { + return super.activitySet(total, workers); + } + + const id = this._activityId++; + this._dump('activitySetStart', { id, total, workers }); + + const spinners = []; + for (let i = 0; i < workers; i++) { + let current = 0; + let header = ''; + + spinners.push({ + clear() {}, + setPrefix(_current, _header) { + current = _current; + header = _header; + }, + tick: msg => { + this._dump('activitySetTick', { + id, + header, + current, + worker: i, + message: msg + }); + }, + end() {} + }); + } + + return { + spinners, + end: () => { + this._dump('activitySetEnd', { id }); + } + }; + } + + activity() { + return this._activity({}); + } + + _activity(data) { + if (!this.isTTY || this.noProgress) { + return { + tick() {}, + end() {} + }; + } + + const id = this._activityId++; + this._dump('activityStart', (0, (_extends2 || _load_extends()).default)({ id }, data)); + + return { + tick: name => { + this._dump('activityTick', { id, name }); + }, + + end: () => { + this._dump('activityEnd', { id }); + } + }; + } + + progress(total) { + if (this.noProgress) { + return function () { + // noop + }; + } + + const id = this._progressId++; + let current = 0; + this._dump('progressStart', { id, total }); + + return () => { + current++; + this._dump('progressTick', { id, current }); + + if (current === total) { + this._dump('progressFinish', { id }); + } + }; + } + + auditAction(recommendation) { + this._dump('auditAction', recommendation); + } + + auditAdvisory(resolution, auditAdvisory) { + this._dump('auditAdvisory', { resolution, advisory: auditAdvisory }); + } + + auditSummary(auditMetadata) { + this._dump('auditSummary', auditMetadata); + } +} +exports.default = JSONReporter; + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shouldUpdateLockfile = undefined; + +var _semver; + +function _load_semver() { + return _semver = _interopRequireDefault(__webpack_require__(22)); +} + +var _minimatch; + +function _load_minimatch() { + return _minimatch = _interopRequireDefault(__webpack_require__(82)); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +var _normalizePattern2; + +function _load_normalizePattern() { + return _normalizePattern2 = __webpack_require__(37); +} + +var _parsePackagePath; + +function _load_parsePackagePath() { + return _parsePackagePath = _interopRequireDefault(__webpack_require__(376)); +} + +var _parsePackagePath2; + +function _load_parsePackagePath2() { + return _parsePackagePath2 = __webpack_require__(376); +} + +var _resolvers; + +function _load_resolvers() { + return _resolvers = __webpack_require__(78); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const DIRECTORY_SEPARATOR = '/'; +const GLOBAL_NESTED_DEP_PATTERN = '**/'; + +class ResolutionMap { + constructor(config) { + this.resolutionsByPackage = (0, (_map || _load_map()).default)(); + this.config = config; + this.reporter = config.reporter; + this.delayQueue = new Set(); + } + + init(resolutions = {}) { + for (const globPattern in resolutions) { + const info = this.parsePatternInfo(globPattern, resolutions[globPattern]); + + if (info) { + const resolution = this.resolutionsByPackage[info.name] || []; + this.resolutionsByPackage[info.name] = [...resolution, info]; + } + } + } + + addToDelayQueue(req) { + this.delayQueue.add(req); + } + + parsePatternInfo(globPattern, range) { + if (!(0, (_parsePackagePath2 || _load_parsePackagePath2()).isValidPackagePath)(globPattern)) { + this.reporter.warn(this.reporter.lang('invalidResolutionName', globPattern)); + return null; + } + + const directories = (0, (_parsePackagePath || _load_parsePackagePath()).default)(globPattern); + const name = directories.pop(); + + if (!(_semver || _load_semver()).default.validRange(range) && !(0, (_resolvers || _load_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 = `${GLOBAL_NESTED_DEP_PATTERN}${name}`; + } + + return { + name, + range, + globPattern, + pattern: `${name}@${range}` + }; + } + + find(reqPattern, parentNames) { + var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(reqPattern); + + const name = _normalizePattern.name, + reqRange = _normalizePattern.range; + + const resolutions = this.resolutionsByPackage[name]; + + if (!resolutions) { + return ''; + } + + const modulePath = [...parentNames, name].join(DIRECTORY_SEPARATOR); + + var _ref = resolutions.find(({ globPattern }) => (0, (_minimatch || _load_minimatch()).default)(modulePath, globPattern)) || {}; + + const pattern = _ref.pattern, + range = _ref.range; + + + if (pattern) { + if ((_semver || _load_semver()).default.validRange(reqRange) && (_semver || _load_semver()).default.valid(range) && !(_semver || _load_semver()).default.satisfies(range, reqRange)) { + this.reporter.warn(this.reporter.lang('incompatibleResolutionVersion', pattern, reqPattern)); + } + } + + return pattern; + } +} + +exports.default = ResolutionMap; +const shouldUpdateLockfile = exports.shouldUpdateLockfile = (lockfileEntry, resolutionEntry) => { + if (!lockfileEntry || !resolutionEntry) { + return false; + } + + return lockfileEntry.resolved !== resolutionEntry.remote.resolved; +}; + +/***/ }), +/* 215 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FILE_PROTOCOL_PREFIX = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _path; + +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} + +var _invariant; + +function _load_invariant() { + return _invariant = _interopRequireDefault(__webpack_require__(9)); +} + +var _uuid; + +function _load_uuid() { + return _uuid = _interopRequireDefault(__webpack_require__(119)); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _exoticResolver; + +function _load_exoticResolver() { + return _exoticResolver = _interopRequireDefault(__webpack_require__(89)); +} + +var _misc; + +function _load_misc() { + return _misc = _interopRequireWildcard(__webpack_require__(18)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +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 }; } + +const FILE_PROTOCOL_PREFIX = exports.FILE_PROTOCOL_PREFIX = 'file:'; + +class FileResolver extends (_exoticResolver || _load_exoticResolver()).default { + constructor(request, fragment) { + super(request, fragment); + this.loc = (_misc || _load_misc()).removePrefix(fragment, FILE_PROTOCOL_PREFIX); + } + + static isVersion(pattern) { + return super.isVersion.call(this, pattern) || this.prefixMatcher.test(pattern) || (_path || _load_path()).default.isAbsolute(pattern); + } + + resolve() { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let loc = _this.loc; + if (!(_path || _load_path()).default.isAbsolute(loc)) { + loc = (_path || _load_path()).default.resolve(_this.config.lockfileFolder, loc); + } + + if (_this.config.linkFileDependencies) { + const registry = 'npm'; + const manifest = { _uid: '', name: '', version: '0.0.0', _registry: registry }; + manifest._remote = { + type: 'link', + registry, + hash: null, + reference: loc + }; + manifest._uid = manifest.version; + return manifest; + } + if (!(yield (_fs || _load_fs()).exists(loc))) { + throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('doesntExist', loc, _this.pattern.split('@')[0])); + } + + const manifest = yield (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + try { + return yield _this.config.readManifest(loc, _this.registry); + } catch (e) { + if (e.code === 'ENOENT') { + return { + // This is just the default, it can be overridden with key of dependencies + name: (_path || _load_path()).default.dirname(loc), + version: '0.0.0', + _uid: '0.0.0', + _registry: 'npm' + }; + } + + throw e; + } + })(); + const registry = manifest._registry; + (0, (_invariant || _load_invariant()).default)(registry, 'expected registry'); + + manifest._remote = { + type: 'copy', + registry, + hash: `${(_uuid || _load_uuid()).default.v4()}-${new Date().getTime()}`, + reference: loc + }; + + manifest._uid = manifest.version; + + return manifest; + })(); + } +} +exports.default = FileResolver; +FileResolver.protocol = 'file'; +FileResolver.prefixMatcher = /^\.{1,2}\//; + +/***/ }), +/* 216 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.explodeGistFragment = explodeGistFragment; + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _gitResolver; + +function _load_gitResolver() { + return _gitResolver = _interopRequireDefault(__webpack_require__(124)); +} + +var _exoticResolver; + +function _load_exoticResolver() { + return _exoticResolver = _interopRequireDefault(__webpack_require__(89)); +} + +var _misc; + +function _load_misc() { + return _misc = _interopRequireWildcard(__webpack_require__(18)); +} + +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 explodeGistFragment(fragment, reporter) { + fragment = (_misc || _load_misc()).removePrefix(fragment, 'gist:'); + + const parts = fragment.split('#'); + + if (parts.length <= 2) { + return { + id: parts[0], + hash: parts[1] || '' + }; + } else { + throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidGistFragment', fragment)); + } +} + +class GistResolver extends (_exoticResolver || _load_exoticResolver()).default { + + constructor(request, fragment) { + super(request, fragment); + + var _explodeGistFragment = explodeGistFragment(fragment, this.reporter); + + const id = _explodeGistFragment.id, + hash = _explodeGistFragment.hash; + + this.id = id; + this.hash = hash; + } + + resolve() { + return this.fork((_gitResolver || _load_gitResolver()).default, false, `https://gist.github.com/${this.id}.git#${this.hash}`); + } +} +exports.default = GistResolver; +GistResolver.protocol = 'gist'; + +/***/ }), +/* 217 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _cache; + +function _load_cache() { + return _cache = __webpack_require__(355); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _registryResolver; + +function _load_registryResolver() { + return _registryResolver = _interopRequireDefault(__webpack_require__(575)); +} + +var _npmRegistry; + +function _load_npmRegistry() { + return _npmRegistry = _interopRequireDefault(__webpack_require__(88)); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +var _fs; + +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(4)); +} + +var _constants; + +function _load_constants() { + return _constants = __webpack_require__(8); +} + +var _packageNameUtils; + +function _load_packageNameUtils() { + return _packageNameUtils = __webpack_require__(222); +} + +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 }; } + +const inquirer = __webpack_require__(276); +const tty = __webpack_require__(104); +const path = __webpack_require__(0); +const semver = __webpack_require__(22); +const ssri = __webpack_require__(65); + +const NPM_REGISTRY_ID = 'npm'; + +class NpmResolver extends (_registryResolver || _load_registryResolver()).default { + + static findVersionInRegistryResponse(config, name, range, body, request) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (body.versions && Object.keys(body.versions).length === 0) { + throw new (_errors || _load_errors()).MessageError(config.reporter.lang('registryNoVersions', body.name)); + } + + if (!body['dist-tags'] || !body.versions) { + throw new (_errors || _load_errors()).MessageError(config.reporter.lang('malformedRegistryResponse', name)); + } + + 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 + const latestVersion = body['dist-tags'] ? body['dist-tags'].latest : undefined; + if (latestVersion && semver.satisfies(latestVersion, range)) { + return body.versions[latestVersion]; + } + + const satisfied = yield config.resolveConstraints(Object.keys(body.versions), range); + if (satisfied) { + return body.versions[satisfied]; + } else if (request && !config.nonInteractive) { + if (request.resolver && request.resolver.activity) { + request.resolver.activity.end(); + } + config.reporter.log(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range)); + let pageSize; + if (process.stdout instanceof tty.WriteStream) { + pageSize = process.stdout.rows - 2; + } + const response = yield inquirer.prompt([{ + name: 'package', + type: 'list', + message: config.reporter.lang('chooseVersionFromList', body.name), + choices: semver.rsort(Object.keys(body.versions)), + pageSize + }]); + if (response && response.package) { + return body.versions[response.package]; + } + } + throw new (_errors || _load_errors()).MessageError(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range)); + })(); + } + + resolveRequest(desiredVersion) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (_this.config.offline) { + const res = yield _this.resolveRequestOffline(); + if (res != null) { + return res; + } + } + + const escapedName = (_npmRegistry || _load_npmRegistry()).default.escapeName(_this.name); + const desiredRange = desiredVersion || _this.range; + const body = yield _this.config.registries.npm.request(escapedName); + + if (body) { + return NpmResolver.findVersionInRegistryResponse(_this.config, escapedName, desiredRange, body, _this.request); + } else { + return null; + } + })(); + } + + resolveRequestOffline() { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const packageDirs = yield _this2.config.getCache('cachedPackages', function () { + return (0, (_cache || _load_cache()).getCachedPackagesDirs)(_this2.config, _this2.config.cacheFolder); + }); + + const versions = (0, (_map || _load_map()).default)(); + + for (var _iterator = packageDirs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const dir = _ref; + + // check if folder contains the registry prefix + if (dir.indexOf(`${NPM_REGISTRY_ID}-`) === -1) { + continue; + } + + // read manifest and validate correct name + const pkg = yield _this2.config.readManifest(dir, NPM_REGISTRY_ID); + if (pkg.name !== _this2.name) { + continue; + } + + // read package metadata + const metadata = yield _this2.config.readPackageMetadata(dir); + if (!metadata.remote) { + continue; // old yarn metadata + } + + versions[pkg.version] = Object.assign({}, pkg, { + _remote: metadata.remote + }); + } + + const satisfied = yield _this2.config.resolveConstraints(Object.keys(versions), _this2.range); + if (satisfied) { + return versions[satisfied]; + } else if (!_this2.config.preferOffline) { + throw new (_errors || _load_errors()).MessageError(_this2.reporter.lang('couldntFindPackageInCache', _this2.name, _this2.range, Object.keys(versions).join(', '))); + } else { + return null; + } + })(); + } + + cleanRegistry(url) { + if (this.config.getOption('registry') === (_constants || _load_constants()).YARN_REGISTRY) { + return url.replace((_constants || _load_constants()).NPM_REGISTRY_RE, (_constants || _load_constants()).YARN_REGISTRY); + } else { + return url; + } + } + + resolve() { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // lockfile + const shrunk = _this3.request.getLocked('tarball'); + if (shrunk) { + if (_this3.config.packBuiltPackages && shrunk.prebuiltVariants && shrunk._remote) { + const prebuiltVariants = shrunk.prebuiltVariants; + const prebuiltName = (0, (_packageNameUtils || _load_packageNameUtils()).getPlatformSpecificPackageFilename)(shrunk); + const offlineMirrorPath = _this3.config.getOfflineMirrorPath(); + if (prebuiltVariants[prebuiltName] && offlineMirrorPath) { + const filename = path.join(offlineMirrorPath, 'prebuilt', prebuiltName + '.tgz'); + const _remote = shrunk._remote; + + if (_remote && (yield (_fs || _load_fs()).exists(filename))) { + _remote.reference = `file:${filename}`; + _remote.hash = prebuiltVariants[prebuiltName]; + _remote.integrity = ssri.fromHex(_remote.hash, 'sha1').toString(); + } + } + } + } + if (shrunk && shrunk._remote && (shrunk._remote.integrity || _this3.config.offline || !_this3.config.autoAddIntegrity)) { + // if the integrity field does not exist, we're not network-restricted, and the + // migration hasn't been disabled, it needs to be created + return shrunk; + } + + const desiredVersion = shrunk && shrunk.version ? shrunk.version : null; + const info = yield _this3.resolveRequest(desiredVersion); + if (info == null) { + throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('packageNotFoundRegistry', _this3.name, NPM_REGISTRY_ID)); + } + + const deprecated = info.deprecated, + dist = info.dist; + + if (shrunk && shrunk._remote) { + shrunk._remote.integrity = dist && dist.integrity ? ssri.parse(dist.integrity) : ssri.fromHex(dist && dist.shasum ? dist.shasum : '', 'sha1'); + return shrunk; + } + + if (typeof deprecated === 'string') { + let human = `${info.name}@${info.version}`; + const parentNames = _this3.request.parentNames; + if (parentNames.length) { + human = parentNames.concat(human).join(' > '); + } + _this3.reporter.warn(`${human}: ${deprecated}`); + } + + if (dist != null && dist.tarball) { + info._remote = { + resolved: `${_this3.cleanRegistry(dist.tarball)}#${dist.shasum}`, + type: 'tarball', + reference: _this3.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 info; + })(); + } +} +exports.default = NpmResolver; +NpmResolver.registry = NPM_REGISTRY_ID; + +/***/ }), +/* 218 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fileDatesEqual = exports.copyFile = exports.unlink = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +// We want to preserve file timestamps when copying a file, since yarn uses them to decide if a file has +// changed compared to the cache. +// There are some OS specific cases here: +// * On linux, fs.copyFile does not preserve timestamps, but does on OSX and Win. +// * On windows, you must open a file with write permissions to call `fs.futimes`. +// * On OSX you can open with read permissions and still call `fs.futimes`. +let fixTimes = (() => { + var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (fd, dest, data) { + const doOpen = fd === undefined; + let openfd = fd ? fd : -1; + + if (disableTimestampCorrection === undefined) { + // if timestamps match already, no correction is needed. + // the need to correct timestamps varies based on OS and node versions. + const destStat = yield lstat(dest); + disableTimestampCorrection = fileDatesEqual(destStat.mtime, data.mtime); + } + + if (disableTimestampCorrection) { + return; + } + + if (doOpen) { + try { + openfd = yield open(dest, 'a', data.mode); + } catch (er) { + // file is likely read-only + try { + openfd = yield open(dest, 'r', data.mode); + } catch (err) { + // We can't even open this file for reading. + return; + } + } + } + + try { + if (openfd) { + yield futimes(openfd, data.atime, data.mtime); + } + } catch (er) { + // If `futimes` throws an exception, we probably have a case of a read-only file on Windows. + // In this case we can just return. The incorrect timestamp will just cause that file to be recopied + // on subsequent installs, which will effect yarn performance but not break anything. + } finally { + if (doOpen && openfd) { + yield close(openfd); + } + } + }); + + return function fixTimes(_x7, _x8, _x9) { + return _ref3.apply(this, arguments); + }; +})(); + +// Compare file timestamps. +// Some versions of Node on windows zero the milliseconds when utime is used. + + +var _fs; + +function _load_fs() { + return _fs = _interopRequireDefault(__webpack_require__(5)); +} + +var _promise; + +function _load_promise() { + return _promise = __webpack_require__(50); +} + +var _fs2; + +function _load_fs2() { + return _fs2 = __webpack_require__(4); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +let disableTimestampCorrection = undefined; // OS dependent. will be detected on first file copy. + +// This module serves as a wrapper for file operations that are inconsistant across node and OS versions. + +const readFileBuffer = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.readFile); +const close = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.close); +const lstat = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.lstat); +const open = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.open); +const futimes = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.futimes); + +const write = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.write); + +const unlink = exports.unlink = (0, (_promise || _load_promise()).promisify)(__webpack_require__(307)); + +/** + * Unlinks the destination to force a recreation. This is needed on case-insensitive file systems + * to force the correct naming when the filename has changed only in character-casing. (Jest -> jest). + */ +const copyFile = exports.copyFile = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data, cleanup) { + // $FlowFixMe: Flow doesn't currently support COPYFILE_FICLONE + const ficloneFlag = (_fs2 || _load_fs2()).constants.COPYFILE_FICLONE || 0; + try { + yield unlink(data.dest); + yield copyFilePoly(data.src, data.dest, ficloneFlag, data); + } finally { + if (cleanup) { + cleanup(); + } + } + }); + + return function copyFile(_x, _x2) { + return _ref.apply(this, arguments); + }; +})(); + +// Node 8.5.0 introduced `fs.copyFile` which is much faster, so use that when available. +// Otherwise we fall back to reading and writing files as buffers. +const copyFilePoly = (src, dest, flags, data) => { + if ((_fs || _load_fs()).default.copyFile) { + return new Promise((resolve, reject) => (_fs || _load_fs()).default.copyFile(src, dest, flags, err => { + if (err) { + reject(err); + } else { + fixTimes(undefined, dest, data).then(() => resolve()).catch(ex => reject(ex)); + } + })); + } else { + return copyWithBuffer(src, dest, flags, data); + } +}; + +const copyWithBuffer = (() => { + var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest, flags, data) { + // Use open -> write -> futimes -> close sequence to avoid opening the file twice: + // one with writeFile and one with utimes + const fd = yield open(dest, 'w', data.mode); + try { + const buffer = yield readFileBuffer(src); + yield write(fd, buffer, 0, buffer.length); + yield fixTimes(fd, dest, data); + } finally { + yield close(fd); + } + }); + + return function copyWithBuffer(_x3, _x4, _x5, _x6) { + return _ref2.apply(this, arguments); + }; +})();const fileDatesEqual = exports.fileDatesEqual = (a, b) => { + const aTime = a.getTime(); + const bTime = b.getTime(); + + if (process.platform !== 'win32') { + return aTime === bTime; + } + + // See https://github.com/nodejs/node/pull/12607 + // Submillisecond times from stat and utimes are truncated on Windows, + // causing a file with mtime 8.0079998 and 8.0081144 to become 8.007 and 8.008 + // and making it impossible to update these files to their correct timestamps. + if (Math.abs(aTime - bTime) <= 1) { + return true; + } + + const aTimeSec = Math.floor(aTime / 1000); + const bTimeSec = Math.floor(bTime / 1000); + + // See https://github.com/nodejs/node/issues/2069 + // Some versions of Node on windows zero the milliseconds when utime is used + // So if any of the time has a milliseconds part of zero we suspect that the + // bug is present and compare only seconds. + if (aTime - aTimeSec * 1000 === 0 || bTime - bTimeSec * 1000 === 0) { + return aTimeSec === bTimeSec; + } + + return aTime === bTime; +}; + +/***/ }), +/* 219 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(21)); +} + +var _invariant; + +function _load_invariant() { + return _invariant = _interopRequireDefault(__webpack_require__(9)); +} + +var _string_decoder; + +function _load_string_decoder() { + return _string_decoder = __webpack_require__(333); +} + +var _tarFs; + +function _load_tarFs() { + return _tarFs = _interopRequireDefault(__webpack_require__(193)); +} + +var _tarStream; + +function _load_tarStream() { + return _tarStream = _interopRequireDefault(__webpack_require__(460)); +} + +var _url; + +function _load_url() { + return _url = _interopRequireDefault(__webpack_require__(24)); +} + +var _fs; + +function _load_fs() { + return _fs = __webpack_require__(5); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _gitSpawn; + +function _load_gitSpawn() { + return _gitSpawn = __webpack_require__(373); +} + +var _gitRefResolver; + +function _load_gitRefResolver() { + return _gitRefResolver = __webpack_require__(581); +} + +var _crypto; + +function _load_crypto() { + return _crypto = _interopRequireWildcard(__webpack_require__(168)); +} + +var _fs2; + +function _load_fs2() { + return _fs2 = _interopRequireWildcard(__webpack_require__(4)); +} + +var _map; + +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(29)); +} + +var _misc; + +function _load_misc() { + return _misc = __webpack_require__(18); +} + +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 }; } + +const GIT_PROTOCOL_PREFIX = 'git+'; + +const SSH_PROTOCOL = 'ssh:'; +const SCP_PATH_PREFIX = '/:'; +const FILE_PROTOCOL = 'file:'; +const GIT_VALID_REF_LINE_REGEXP = /^([a-fA-F0-9]+|ref)/; + +const validRef = line => { + return GIT_VALID_REF_LINE_REGEXP.exec(line); +}; + +const supportsArchiveCache = (0, (_map || _load_map()).default)({ + 'github.com': false // not support, doubt they will ever support it +}); + +const handleSpawnError = err => { + if (err instanceof (_errors || _load_errors()).ProcessSpawnError) { + throw err; + } +}; + +const SHORTHAND_SERVICES = (0, (_map || _load_map()).default)({ + 'github:': parsedUrl => (0, (_extends2 || _load_extends()).default)({}, parsedUrl, { + slashes: true, + auth: 'git', + protocol: SSH_PROTOCOL, + host: 'github.com', + hostname: 'github.com', + pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}` + }), + 'bitbucket:': parsedUrl => (0, (_extends2 || _load_extends()).default)({}, parsedUrl, { + slashes: true, + auth: 'git', + protocol: SSH_PROTOCOL, + host: 'bitbucket.com', + hostname: 'bitbucket.com', + pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}` + }) +}); + +class Git { + constructor(config, gitUrl, hash) { + this.supportsArchive = false; + this.fetched = false; + this.config = config; + this.reporter = config.reporter; + this.hash = hash; + this.ref = hash; + this.gitUrl = gitUrl; + this.cwd = this.config.getTemp((_crypto || _load_crypto()).hash(this.gitUrl.repository)); + } + + /** + * npm URLs contain a 'git+' scheme prefix, which is not understood by git. + * git "URLs" also allow an alternative scp-like syntax, so they're not standard URLs. + */ + static npmUrlToGitUrl(npmUrl) { + npmUrl = (0, (_misc || _load_misc()).removePrefix)(npmUrl, GIT_PROTOCOL_PREFIX); + + let parsed = (_url || _load_url()).default.parse(npmUrl); + const expander = parsed.protocol && SHORTHAND_SERVICES[parsed.protocol]; + + if (expander) { + parsed = expander(parsed); + } + + // Special case in npm, where ssh:// prefix is stripped to pass scp-like syntax + // which in git works as remote path only if there are no slashes before ':'. + // See #3146. + if (parsed.protocol === SSH_PROTOCOL && parsed.hostname && parsed.path && parsed.path.startsWith(SCP_PATH_PREFIX) && parsed.port === null) { + const auth = parsed.auth ? parsed.auth + '@' : ''; + const pathname = parsed.path.slice(SCP_PATH_PREFIX.length); + return { + hostname: parsed.hostname, + protocol: parsed.protocol, + repository: `${auth}${parsed.hostname}:${pathname}` + }; + } + + // git local repos are specified as `git+file:` and a filesystem path, not a url. + let repository; + if (parsed.protocol === FILE_PROTOCOL) { + repository = parsed.path; + } else { + repository = (_url || _load_url()).default.format((0, (_extends2 || _load_extends()).default)({}, parsed, { hash: '' })); + } + + return { + hostname: parsed.hostname || null, + protocol: parsed.protocol || FILE_PROTOCOL, + repository: repository || '' + }; + } + + /** + * Check if the host specified in the input `gitUrl` has archive capability. + */ + + static hasArchiveCapability(ref) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const hostname = ref.hostname; + if (ref.protocol !== 'ssh:' || hostname == null) { + return false; + } + + if (hostname in supportsArchiveCache) { + return supportsArchiveCache[hostname]; + } + + try { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${ref.repository}`, 'HEAD', Date.now() + '']); + throw new Error(); + } catch (err) { + handleSpawnError(err); + const supports = err.message.indexOf('did not match any files') >= 0; + return supportsArchiveCache[hostname] = supports; + } + })(); + } + + /** + * Check if the input `target` is a 5-40 character hex commit hash. + */ + + static repoExists(ref) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const isLocal = ref.protocol === FILE_PROTOCOL; + + try { + if (isLocal) { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', '-t'], { cwd: ref.repository }); + } else { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '-t', ref.repository]); + } + return true; + } catch (err) { + handleSpawnError(err); + return false; + } + })(); + } + + static replaceProtocol(ref, protocol) { + return { + hostname: ref.hostname, + protocol, + repository: ref.repository.replace(/^(?:git|http):/, protocol) + }; + } + + /** + * Attempt to upgrade insecure protocols to secure protocol + */ + static secureGitUrl(ref, hash, reporter) { + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if ((0, (_gitRefResolver || _load_gitRefResolver()).isCommitSha)(hash)) { + // this is cryptographically secure + return ref; + } + + if (ref.protocol === 'git:') { + const secureUrl = Git.replaceProtocol(ref, 'https:'); + if (yield Git.repoExists(secureUrl)) { + return secureUrl; + } else { + reporter.warn(reporter.lang('downloadGitWithoutCommit', ref.repository)); + return ref; + } + } + + if (ref.protocol === 'http:') { + const secureRef = Git.replaceProtocol(ref, 'https:'); + if (yield Git.repoExists(secureRef)) { + return secureRef; + } else { + reporter.warn(reporter.lang('downloadHTTPWithoutCommit', ref.repository)); + return ref; + } + } + + return ref; + })(); + } + + /** + * Archive a repo to destination + */ + + archive(dest) { + if (this.supportsArchive) { + return this._archiveViaRemoteArchive(dest); + } else { + return this._archiveViaLocalFetched(dest); + } + } + + _archiveViaRemoteArchive(dest) { + var _this = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const hashStream = new (_crypto || _load_crypto()).HashStream(); + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${_this.gitUrl.repository}`, _this.ref], { + process(proc, resolve, reject, done) { + const writeStream = (0, (_fs || _load_fs()).createWriteStream)(dest); + proc.on('error', reject); + writeStream.on('error', reject); + writeStream.on('end', done); + writeStream.on('open', function () { + proc.stdout.pipe(hashStream).pipe(writeStream); + }); + writeStream.once('finish', done); + } + }); + return hashStream.getHash(); + })(); + } + + _archiveViaLocalFetched(dest) { + var _this2 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const hashStream = new (_crypto || _load_crypto()).HashStream(); + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', _this2.hash], { + cwd: _this2.cwd, + process(proc, resolve, reject, done) { + const writeStream = (0, (_fs || _load_fs()).createWriteStream)(dest); + proc.on('error', reject); + writeStream.on('error', reject); + writeStream.on('open', function () { + proc.stdout.pipe(hashStream).pipe(writeStream); + }); + writeStream.once('finish', done); + } + }); + return hashStream.getHash(); + })(); + } + + /** + * Clone a repo to the input `dest`. Use `git archive` if it's available, otherwise fall + * back to `git clone`. + */ + + clone(dest) { + if (this.supportsArchive) { + return this._cloneViaRemoteArchive(dest); + } else { + return this._cloneViaLocalFetched(dest); + } + } + + _cloneViaRemoteArchive(dest) { + var _this3 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${_this3.gitUrl.repository}`, _this3.ref], { + process(proc, update, reject, done) { + const extractor = (_tarFs || _load_tarFs()).default.extract(dest, { + dmode: 0o555, // all dirs should be readable + fmode: 0o444 // all files should be readable + }); + extractor.on('error', reject); + extractor.on('finish', done); + + proc.stdout.pipe(extractor); + proc.on('error', reject); + } + }); + })(); + } + + _cloneViaLocalFetched(dest) { + var _this4 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', _this4.hash], { + cwd: _this4.cwd, + process(proc, resolve, reject, done) { + const extractor = (_tarFs || _load_tarFs()).default.extract(dest, { + dmode: 0o555, // all dirs should be readable + fmode: 0o444 // all files should be readable + }); + + extractor.on('error', reject); + extractor.on('finish', done); + + proc.stdout.pipe(extractor); + } + }); + })(); + } + + /** + * Clone this repo. + */ + + fetch() { + var _this5 = this; + + const gitUrl = this.gitUrl, + cwd = this.cwd; + + + return (_fs2 || _load_fs2()).lockQueue.push(gitUrl.repository, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + if (yield (_fs2 || _load_fs2()).exists(cwd)) { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['fetch', '--tags'], { cwd }); + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['pull'], { cwd }); + } else { + yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['clone', gitUrl.repository, cwd]); + } + + _this5.fetched = true; + })); + } + + /** + * Fetch the file by cloning the repo and reading it. + */ + + getFile(filename) { + if (this.supportsArchive) { + return this._getFileFromArchive(filename); + } else { + return this._getFileFromClone(filename); + } + } + + _getFileFromArchive(filename) { + var _this6 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + try { + return yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${_this6.gitUrl.repository}`, _this6.ref, filename], { + process(proc, update, reject, done) { + const parser = (_tarStream || _load_tarStream()).default.extract(); + + parser.on('error', reject); + parser.on('finish', done); + + parser.on('entry', (header, stream, next) => { + const decoder = new (_string_decoder || _load_string_decoder()).StringDecoder('utf8'); + let fileContent = ''; + + stream.on('data', buffer => { + fileContent += decoder.write(buffer); + }); + stream.on('end', () => { + const remaining = decoder.end(); + update(fileContent + remaining); + next(); + }); + stream.resume(); + }); + + proc.stdout.pipe(parser); + } + }); + } catch (err) { + if (err.message.indexOf('did not match any files') >= 0) { + return false; + } else { + throw err; + } + } + })(); + } + + _getFileFromClone(filename) { + var _this7 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + (0, (_invariant || _load_invariant()).default)(_this7.fetched, 'Repo not fetched'); + + try { + return yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show', `${_this7.hash}:${filename}`], { + cwd: _this7.cwd + }); + } catch (err) { + handleSpawnError(err); + // file doesn't exist + return false; + } + })(); + } + + /** + * Initialize the repo, find a secure url to use and + * set the ref to match an input `target`. + */ + init() { + var _this8 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + _this8.gitUrl = yield Git.secureGitUrl(_this8.gitUrl, _this8.hash, _this8.reporter); + + yield _this8.setRefRemote(); + + // check capabilities + if (_this8.ref !== '' && (yield Git.hasArchiveCapability(_this8.gitUrl))) { + _this8.supportsArchive = true; + } else { + yield _this8.fetch(); + } + + return _this8.hash; + })(); + } + + setRefRemote() { + var _this9 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const isLocal = _this9.gitUrl.protocol === FILE_PROTOCOL; + let stdout; + + if (isLocal) { + stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', '--tags', '--heads'], { cwd: _this9.gitUrl.repository }); + } else { + stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '--tags', '--heads', _this9.gitUrl.repository]); + } + + const refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(stdout); + return _this9.setRef(refs); + })(); + } + + setRefHosted(hostedRefsList) { + const refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(hostedRefsList); + return this.setRef(refs); + } + + /** + * Resolves the default branch of a remote repository (not always "master") + */ + + resolveDefaultBranch() { + var _this10 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + const isLocal = _this10.gitUrl.protocol === FILE_PROTOCOL; + + try { + let stdout; + if (isLocal) { + stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', 'HEAD'], { cwd: _this10.gitUrl.repository }); + const refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(stdout); + const sha = refs.values().next().value; + if (sha) { + return { sha, ref: undefined }; + } else { + throw new Error('Unable to find SHA for git HEAD'); + } + } else { + stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '--symref', _this10.gitUrl.repository, 'HEAD']); + const lines = stdout.split('\n').filter(validRef); + + var _lines$0$split = lines[0].split(/\s+/); + + const ref = _lines$0$split[1]; + + var _lines$1$split = lines[1].split(/\s+/); + + const sha = _lines$1$split[0]; + + return { sha, ref }; + } + } catch (err) { + handleSpawnError(err); + // older versions of git don't support "--symref" + const stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', _this10.gitUrl.repository, 'HEAD']); + const lines = stdout.split('\n').filter(validRef); + + var _lines$0$split2 = lines[0].split(/\s+/); + + const sha = _lines$0$split2[0]; + + return { sha, ref: undefined }; + } + })(); + } + + /** + * Resolve a git commit to it's 40-chars format and ensure it exists in the repository + * We need to use the 40-chars format to avoid multiple folders in the cache + */ + + resolveCommit(shaToResolve) { + var _this11 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + try { + yield _this11.fetch(); + const revListArgs = ['rev-list', '-n', '1', '--no-abbrev-commit', '--format=oneline', shaToResolve]; + const stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(revListArgs, { cwd: _this11.cwd }); + + var _stdout$split = stdout.split(/\s+/); + + const sha = _stdout$split[0]; + + return { sha, ref: undefined }; + } catch (err) { + handleSpawnError(err); + // assuming commit not found, let's try something else + return null; + } + })(); + } + + /** + * Resolves the input hash / ref / semver range to a valid commit sha + * If possible also resolves the sha to a valid ref in order to use "git archive" + */ + + setRef(refs) { + var _this12 = this; + + return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + // get commit ref + const version = _this12.hash; + + + const resolvedResult = yield (0, (_gitRefResolver || _load_gitRefResolver()).resolveVersion)({ + config: _this12.config, + git: _this12, + version, + refs + }); + if (!resolvedResult) { + throw new (_errors || _load_errors()).MessageError(_this12.reporter.lang('couldntFindMatch', version, Array.from(refs.keys()).join(','), _this12.gitUrl.repository)); + } + + _this12.hash = resolvedResult.sha; + _this12.ref = resolvedResult.ref || ''; + return _this12.hash; + })(); + } +} +exports.default = Git; + +/***/ }), +/* 220 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +var _resolveRelative; + +function _load_resolveRelative() { + return _resolveRelative = _interopRequireDefault(__webpack_require__(586)); +} + +var _validate; + +function _load_validate() { + return _validate = _interopRequireDefault(__webpack_require__(125)); +} + +var _fix; + +function _load_fix() { + return _fix = _interopRequireDefault(__webpack_require__(583)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const path = __webpack_require__(0); + +exports.default = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (info, moduleLoc, config, isRoot) { + // create human readable name + const name = info.name, + version = info.version; + + let human; + if (typeof name === 'string') { + human = name; + } + if (human && typeof version === 'string' && version) { + human += `@${version}`; + } + if (isRoot && info._loc) { + human = path.relative(config.cwd, info._loc); + } + + function warn(msg) { + if (human) { + msg = `${human}: ${msg}`; + } + config.reporter.warn(msg); + } + + yield (0, (_fix || _load_fix()).default)(info, moduleLoc, config.reporter, warn, config.looseSemver); + (0, (_resolveRelative || _load_resolveRelative()).default)(info, moduleLoc, config.lockfileFolder); + + if (config.cwd === config.globalFolder) { + return info; + } + + try { + (0, (_validate || _load_validate()).default)(info, isRoot, config.reporter, warn); + } catch (err) { + if (human) { + err.message = `${human}: ${err.message}`; + } + throw err; + } + + return info; + }); + + return function (_x, _x2, _x3, _x4) { + return _ref.apply(this, arguments); + }; +})(); + +/***/ }), +/* 221 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isValidLicense = isValidLicense; +exports.stringifyPerson = stringifyPerson; +exports.parsePerson = parsePerson; +exports.normalizePerson = normalizePerson; +exports.extractDescription = extractDescription; +exports.extractRepositoryUrl = extractRepositoryUrl; + + +const validateLicense = __webpack_require__(959); + +function isValidLicense(license) { + return !!license && validateLicense(license).validForNewPackages; +} + +function stringifyPerson(person) { + if (!person || typeof person !== 'object') { + return person; + } + + const parts = []; + if (person.name) { + parts.push(person.name); + } + + const email = person.email || person.mail; + if (typeof email === 'string') { + parts.push(`<${email}>`); + } + + const url = person.url || person.web; + if (typeof url === 'string') { + parts.push(`(${url})`); + } + + return parts.join(' '); +} + +function parsePerson(person) { + if (typeof person !== 'string') { + return person; + } + + // format: name (url) + const obj = {}; + + let name = person.match(/^([^\(<]+)/); + if (name) { + name = name[0].trim(); + if (name) { + obj.name = name; + } + } + + const email = person.match(/<([^>]+)>/); + if (email) { + obj.email = email[1]; + } + + const url = person.match(/\(([^\)]+)\)/); + if (url) { + obj.url = url[1]; + } + + return obj; +} + +function normalizePerson(person) { + return parsePerson(stringifyPerson(person)); +} + +function extractDescription(readme) { + if (typeof readme !== 'string' || readme === '') { + return undefined; + } + + // split into lines + const lines = readme.trim().split('\n').map(line => line.trim()); + + // find the start of the first paragraph, ignore headings + let start = 0; + for (; start < lines.length; start++) { + const line = lines[start]; + if (line && line.match(/^(#|$)/)) { + // line isn't empty and isn't a heading so this is the start of a paragraph + start++; + break; + } + } + + // skip newlines from the header to the first line + while (start < lines.length && !lines[start]) { + start++; + } + + // continue to the first non empty line + let end = start; + while (end < lines.length && lines[end]) { + end++; + } + + return lines.slice(start, end).join(' '); +} + +function extractRepositoryUrl(repository) { + if (!repository || typeof repository !== 'object') { + return repository; + } + return repository.url; +} + +/***/ }), +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getPlatformSpecificPackageFilename = getPlatformSpecificPackageFilename; +exports.getSystemParams = getSystemParams; +function getPlatformSpecificPackageFilename(pkg) { + // TODO support hash for all subdependencies that have installs scripts + const normalizeScope = name => name[0] === '@' ? name.substr(1).replace('/', '-') : name; + const suffix = getSystemParams(); + return `${normalizeScope(pkg.name)}-v${pkg.version}-${suffix}`; +} + +function getSystemParams() { + // TODO support platform variant for linux + return `${process.platform}-${process.arch}-${process.versions.modules || ''}`; +} + +/***/ }), +/* 223 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isFakeRoot = isFakeRoot; +exports.isRootUser = isRootUser; +function getUid() { + if (process.platform !== 'win32' && process.getuid) { + return process.getuid(); + } + return null; +} + +exports.default = isRootUser(getUid()) && !isFakeRoot(); +function isFakeRoot() { + return Boolean(process.env.FAKEROOTKEY); +} + +function isRootUser(uid) { + return uid === 0; +} + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.satisfiesWithPrereleases = satisfiesWithPrereleases; +exports.diffWithUnstable = diffWithUnstable; + +var _semver; + +function _load_semver() { + return _semver = _interopRequireDefault(__webpack_require__(22)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns whether the given semver version satisfies the given range. Notably this supports + * prerelease versions so that "2.0.0-rc.0" satisfies the range ">=1.0.0", for example. + */ + +function satisfiesWithPrereleases(version, range, loose = false) { + let semverRange; + try { + // $FlowFixMe: Add a definition for the Range class + semverRange = new (_semver || _load_semver()).default.Range(range, loose); + } catch (err) { + return false; + } + + if (!version) { + return false; + } + let semverVersion; + try { + semverVersion = new (_semver || _load_semver()).default.SemVer(version, semverRange.loose); + } catch (err) { + return false; + } + + // A range has multiple sets of comparators. A version must satisfy all comparators in a set + // and at least one set to satisfy the range. + return semverRange.set.some(comparatorSet => { + // node-semver converts ~ and ^ ranges into pairs of >= and < ranges but the upper bounds don't + // properly exclude prerelease versions. For example, "^1.0.0" is converted to ">=1.0.0 <2.0.0", + // which includes "2.0.0-pre" since prerelease versions are lower than their non-prerelease + // counterparts. As a practical workaround we make upper-bound ranges exclude prereleases and + // convert "<2.0.0" to "<2.0.0-0", for example. + comparatorSet = comparatorSet.map(comparator => { + if (comparator.operator !== '<' || !comparator.value || comparator.semver.prerelease.length) { + return comparator; + } + + // "0" is the lowest prerelease version + comparator.semver.inc('pre', 0); + + const comparatorString = comparator.operator + comparator.semver.version; + // $FlowFixMe: Add a definition for the Comparator class + return new (_semver || _load_semver()).default.Comparator(comparatorString, comparator.loose); + }); + + return !comparatorSet.some(comparator => !comparator.test(semverVersion)); + }); +} + +const PRE_RELEASES = { + major: 'premajor', + minor: 'preminor', + patch: 'prepatch' +}; + +/** + * Returns the difference between two versions as a semantic string representation. + * Similar to the `diff` method in node-semver, but it also accounts for unstable versions, + * like 0.x.x or 0.0.x. + */ + +function diffWithUnstable(version1, version2) { + if ((_semver || _load_semver()).default.eq(version1, version2) === false) { + const v1 = (_semver || _load_semver()).default.parse(version1); + const v2 = (_semver || _load_semver()).default.parse(version2); + + if (v1 != null && v2 != null) { + const isPreRelease = v1.prerelease.length > 0 || v2.prerelease.length > 0; + const preMajor = v1.major === 0 || v2.major === 0; + const preMinor = preMajor && (v1.minor === 0 || v2.minor === 0); + + let diff = null; + + if (v1.major !== v2.major) { + diff = 'major'; + } else if (v1.minor !== v2.minor) { + if (preMajor) { + // If the major version number is zero (0.x.x), treat a change + // of the minor version number as a major change. + diff = 'major'; + } else { + diff = 'minor'; + } + } else if (v1.patch !== v2.patch) { + if (preMinor) { + // If the major & minor version numbers are zero (0.0.x), treat a change + // of the patch version number as a major change. + diff = 'major'; + } else if (preMajor) { + // If the major version number is zero (0.x.x), treat a change + // of the patch version number as a minor change. + diff = 'minor'; + } else { + diff = 'patch'; + } + } + + if (isPreRelease) { + if (diff != null) { + diff = PRE_RELEASES[diff]; + } else { + diff = 'prerelease'; + } + } + + return diff; + } + } + + return null; +} + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getDataDir = getDataDir; +exports.getCacheDir = getCacheDir; +exports.getConfigDir = getConfigDir; +const path = __webpack_require__(0); +const userHome = __webpack_require__(67).default; + +const FALLBACK_CONFIG_DIR = path.join(userHome, '.config', 'yarn'); +const FALLBACK_CACHE_DIR = path.join(userHome, '.cache', 'yarn'); + +function getDataDir() { + if (process.platform === 'win32') { + const WIN32_APPDATA_DIR = getLocalAppDataDir(); + return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Data'); + } else if (process.env.XDG_DATA_HOME) { + return path.join(process.env.XDG_DATA_HOME, 'yarn'); + } else { + // This could arguably be ~/Library/Application Support/Yarn on Macs, + // but that feels unintuitive for a cli tool + + // Instead, use our prior fallback. Some day this could be + // path.join(userHome, '.local', 'share', 'yarn') + // or return path.join(WIN32_APPDATA_DIR, 'Data') on win32 + return FALLBACK_CONFIG_DIR; + } +} + +function getCacheDir() { + if (process.platform === 'win32') { + // process.env.TEMP also exists, but most apps put caches here + return path.join(getLocalAppDataDir() || path.join(userHome, 'AppData', 'Local', 'Yarn'), 'Cache'); + } else if (process.env.XDG_CACHE_HOME) { + return path.join(process.env.XDG_CACHE_HOME, 'yarn'); + } else if (process.platform === 'darwin') { + return path.join(userHome, 'Library', 'Caches', 'Yarn'); + } else { + return FALLBACK_CACHE_DIR; + } +} + +function getConfigDir() { + if (process.platform === 'win32') { + // Use our prior fallback. Some day this could be + // return path.join(WIN32_APPDATA_DIR, 'Config') + const WIN32_APPDATA_DIR = getLocalAppDataDir(); + return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Config'); + } else if (process.env.XDG_CONFIG_HOME) { + return path.join(process.env.XDG_CONFIG_HOME, 'yarn'); + } else { + return FALLBACK_CONFIG_DIR; + } +} + +function getLocalAppDataDir() { + return process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Yarn') : null; +} + +/***/ }), +/* 226 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.explodeHashedUrl = explodeHashedUrl; +function explodeHashedUrl(url) { + const parts = url.split('#'); + + return { + hash: parts[1] || '', + url: parts[0] + }; +} + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(233), __esModule: true }; + +/***/ }), +/* 228 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + + +/***/ }), +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +var concatMap = __webpack_require__(232); +var balanced = __webpack_require__(228); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + + +/***/ }), +/* 230 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function preserveCamelCase(str) { + let isLastCharLower = false; + let isLastCharUpper = false; + let isLastLastCharUpper = false; + + for (let i = 0; i < str.length; i++) { + const c = str[i]; + + if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) { + str = str.substr(0, i) + '-' + str.substr(i); + isLastCharLower = false; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = true; + i++; + } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) { + str = str.substr(0, i - 1) + '-' + str.substr(i - 1); + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = false; + isLastCharLower = true; + } else { + isLastCharLower = c.toLowerCase() === c; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = c.toUpperCase() === c; + } + } + + return str; +} + +module.exports = function (str) { + if (arguments.length > 1) { + str = Array.from(arguments) + .map(x => x.trim()) + .filter(x => x.length) + .join('-'); + } else { + str = str.trim(); + } + + if (str.length === 0) { + return ''; + } + + if (str.length === 1) { + return str.toLowerCase(); + } + + if (/^[a-z0-9]+$/.test(str)) { + return str; + } + + const hasUpperCase = str !== str.toLowerCase(); + + if (hasUpperCase) { + str = preserveCamelCase(str); + } + + return str + .replace(/^[_.\- ]+/, '') + .toLowerCase() + .replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase()); +}; + + +/***/ }), +/* 231 */ +/***/ (function(module, exports) { + +function Caseless (dict) { + this.dict = dict || {} +} +Caseless.prototype.set = function (name, value, clobber) { + if (typeof name === 'object') { + for (var i in name) { + this.set(i, name[i], value) + } + } else { + if (typeof clobber === 'undefined') clobber = true + var has = this.has(name) + + if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value + else this.dict[has || name] = value + return has + } +} +Caseless.prototype.has = function (name) { + var keys = Object.keys(this.dict) + , name = name.toLowerCase() + ; + for (var i=0;i Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(98); +var toLength = __webpack_require__(136); +var toAbsoluteIndex = __webpack_require__(254); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(70); +var call = __webpack_require__(241); +var isArrayIter = __webpack_require__(240); +var anObject = __webpack_require__(35); +var toLength = __webpack_require__(136); +var getIterFn = __webpack_require__(257); +var BREAK = {}; +var RETURN = {}; +var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); + var f = ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = call(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + + +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(51) && !__webpack_require__(112)(function () { + return Object.defineProperty(__webpack_require__(92)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 239 */ +/***/ (function(module, exports) { + +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + + +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { + +// check on default Array iterator +var Iterators = __webpack_require__(53); +var ITERATOR = __webpack_require__(20)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + + +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { + +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(35); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + + +/***/ }), +/* 242 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var create = __webpack_require__(246); +var descriptor = __webpack_require__(132); +var setToStringTag = __webpack_require__(95); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__(42)(IteratorPrototype, __webpack_require__(20)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + + +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { + +var ITERATOR = __webpack_require__(20)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + + +/***/ }), +/* 244 */ +/***/ (function(module, exports) { + +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + + +/***/ }), +/* 245 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(17); +var macrotask = __webpack_require__(135).set; +var Observer = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var isNode = __webpack_require__(69)(process) == 'process'; + +module.exports = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(global.navigator && global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; +}; + + +/***/ }), +/* 246 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__(35); +var dPs = __webpack_require__(247); +var enumBugKeys = __webpack_require__(127); +var IE_PROTO = __webpack_require__(96)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__(92)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + __webpack_require__(128).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), +/* 247 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(72); +var anObject = __webpack_require__(35); +var getKeys = __webpack_require__(171); + +module.exports = __webpack_require__(51) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + + +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__(71); +var toObject = __webpack_require__(172); +var IE_PROTO = __webpack_require__(96)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + + +/***/ }), +/* 249 */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(71); +var toIObject = __webpack_require__(98); +var arrayIndexOf = __webpack_require__(236)(false); +var IE_PROTO = __webpack_require__(96)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), +/* 250 */ +/***/ (function(module, exports, __webpack_require__) { + +var hide = __webpack_require__(42); +module.exports = function (target, src, safe) { + for (var key in src) { + if (safe && target[key]) target[key] = src[key]; + else hide(target, key, src[key]); + } return target; +}; + + +/***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(42); + + +/***/ }), +/* 252 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(17); +var core = __webpack_require__(31); +var dP = __webpack_require__(72); +var DESCRIPTORS = __webpack_require__(51); +var SPECIES = __webpack_require__(20)('species'); + +module.exports = function (KEY) { + var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + + +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(97); +var defined = __webpack_require__(91); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + + +/***/ }), +/* 254 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(97); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + + +/***/ }), +/* 255 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(52); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), +/* 256 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(17); +var navigator = global.navigator; + +module.exports = navigator && navigator.userAgent || ''; + + +/***/ }), +/* 257 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(126); +var ITERATOR = __webpack_require__(20)('iterator'); +var Iterators = __webpack_require__(53); +module.exports = __webpack_require__(31).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), +/* 258 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var addToUnscopables = __webpack_require__(234); +var step = __webpack_require__(244); +var Iterators = __webpack_require__(53); +var toIObject = __webpack_require__(98); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __webpack_require__(129)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + + +/***/ }), +/* 259 */ +/***/ (function(module, exports) { + + + +/***/ }), +/* 260 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(93); +var global = __webpack_require__(17); +var ctx = __webpack_require__(70); +var classof = __webpack_require__(126); +var $export = __webpack_require__(60); +var isObject = __webpack_require__(52); +var aFunction = __webpack_require__(68); +var anInstance = __webpack_require__(235); +var forOf = __webpack_require__(237); +var speciesConstructor = __webpack_require__(134); +var task = __webpack_require__(135).set; +var microtask = __webpack_require__(245)(); +var newPromiseCapabilityModule = __webpack_require__(94); +var perform = __webpack_require__(130); +var userAgent = __webpack_require__(256); +var promiseResolve = __webpack_require__(131); +var PROMISE = 'Promise'; +var TypeError = global.TypeError; +var process = global.process; +var versions = process && process.versions; +var v8 = versions && versions.v8 || ''; +var $Promise = global[PROMISE]; +var isNode = classof(process) == 'process'; +var empty = function () { /* empty */ }; +var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; +var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; + +var USE_NATIVE = !!function () { + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1); + var FakePromise = (promise.constructor = {})[__webpack_require__(20)('species')] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode || typeof PromiseRejectionEvent == 'function') + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && userAgent.indexOf('Chrome/66') === -1; + } catch (e) { /* empty */ } +}(); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; +var notify = function (promise, isReject) { + if (promise._n) return; + promise._n = true; + var chain = promise._c; + microtask(function () { + var value = promise._v; + var ok = promise._s == 1; + var i = 0; + var run = function (reaction) { + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (promise._h == 2) onHandleUnhandled(promise); + promise._h = 1; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // may throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (e) { + if (domain && !exited) domain.exit(); + reject(e); + } + }; + while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if (isReject && !promise._h) onUnhandled(promise); + }); +}; +var onUnhandled = function (promise) { + task.call(global, function () { + var value = promise._v; + var unhandled = isUnhandled(promise); + var result, handler, console; + if (unhandled) { + result = perform(function () { + if (isNode) { + process.emit('unhandledRejection', value, promise); + } else if (handler = global.onunhandledrejection) { + handler({ promise: promise, reason: value }); + } else if ((console = global.console) && console.error) { + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if (unhandled && result.e) throw result.v; + }); +}; +var isUnhandled = function (promise) { + return promise._h !== 1 && (promise._a || promise._c).length === 0; +}; +var onHandleUnhandled = function (promise) { + task.call(global, function () { + var handler; + if (isNode) { + process.emit('rejectionHandled', promise); + } else if (handler = global.onrejectionhandled) { + handler({ promise: promise, reason: promise._v }); + } + }); +}; +var $reject = function (value) { + var promise = this; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if (!promise._a) promise._a = promise._c.slice(); + notify(promise, true); +}; +var $resolve = function (value) { + var promise = this; + var then; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + if (then = isThenable(value)) { + microtask(function () { + var wrapper = { _w: promise, _d: false }; // wrap + try { + then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); + } catch (e) { + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch (e) { + $reject.call({ _w: promise, _d: false }, e); // wrap + } +}; + +// constructor polyfill +if (!USE_NATIVE) { + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor) { + anInstance(this, $Promise, PROMISE, '_h'); + aFunction(executor); + Internal.call(this); + try { + executor(ctx($resolve, this, 1), ctx($reject, this, 1)); + } catch (err) { + $reject.call(this, err); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = __webpack_require__(250)($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected) { + var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode ? process.domain : undefined; + this._c.push(reaction); + if (this._a) this._a.push(reaction); + if (this._s) notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + this.promise = promise; + this.resolve = ctx($resolve, promise, 1); + this.reject = ctx($reject, promise, 1); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === $Promise || C === Wrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); +__webpack_require__(95)($Promise, PROMISE); +__webpack_require__(252)(PROMISE); +Wrapper = __webpack_require__(31)[PROMISE]; + +// statics +$export($export.S + $export.F * !USE_NATIVE, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r) { + var capability = newPromiseCapability(this); + var $$reject = capability.reject; + $$reject(r); + return capability.promise; + } +}); +$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x) { + return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); + } +}); +$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(243)(function (iter) { + $Promise.all(iter)['catch'](empty); +})), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var values = []; + var index = 0; + var remaining = 1; + forOf(iterable, false, function (promise) { + var $index = index++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.e) reject(result.v); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + forOf(iterable, false, function (promise) { + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if (result.e) reject(result.v); + return capability.promise; + } +}); + + +/***/ }), +/* 261 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $at = __webpack_require__(253)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +__webpack_require__(129)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; +}); + + +/***/ }), +/* 262 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// https://github.com/tc39/proposal-promise-finally + +var $export = __webpack_require__(60); +var core = __webpack_require__(31); +var global = __webpack_require__(17); +var speciesConstructor = __webpack_require__(134); +var promiseResolve = __webpack_require__(131); + +$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { + var C = speciesConstructor(this, core.Promise || global.Promise); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); +} }); + + +/***/ }), +/* 263 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/tc39/proposal-promise-try +var $export = __webpack_require__(60); +var newPromiseCapability = __webpack_require__(94); +var perform = __webpack_require__(130); + +$export($export.S, 'Promise', { 'try': function (callbackfn) { + var promiseCapability = newPromiseCapability.f(this); + var result = perform(callbackfn); + (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); + return promiseCapability.promise; +} }); + + +/***/ }), +/* 264 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(258); +var global = __webpack_require__(17); +var hide = __webpack_require__(42); +var Iterators = __webpack_require__(53); +var TO_STRING_TAG = __webpack_require__(20)('toStringTag'); + +var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + + 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + + 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + + 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + + 'TextTrackList,TouchList').split(','); + +for (var i = 0; i < DOMIterables.length; i++) { + var NAME = DOMIterables[i]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = Iterators.Array; +} + + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(138); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', + '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', + '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', + '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', + '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', + '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', + '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', + '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', + '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', + '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', + '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Detect Electron renderer process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer') { + module.exports = __webpack_require__(265); +} else { + module.exports = __webpack_require__(267); +} + + +/***/ }), +/* 267 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Module dependencies. + */ + +var tty = __webpack_require__(104); +var util = __webpack_require__(3); + +/** + * This is the Node.js implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(138); +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; + +/** + * Colors. + */ + +exports.colors = [ 6, 2, 3, 4, 5, 1 ]; + +try { + var supportsColor = __webpack_require__(330); + if (supportsColor && supportsColor.level >= 2) { + exports.colors = [ + 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, + 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, + 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 214, 215, 220, 221 + ]; + } +} catch (err) { + // swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // camel-case + var prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); + + // coerce string value into JS value + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) val = false; + else if (val === 'null') val = null; + else val = Number(val); + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts + ? Boolean(exports.inspectOpts.colors) + : tty.isatty(process.stderr.fd); +} + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n').map(function(str) { + return str.trim() + }).join(' '); +}; + +/** + * Map %o to `util.inspect()`, allowing multiple lines if needed. + */ + +exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + var name = this.namespace; + var useColors = this.useColors; + + if (useColors) { + var c = this.color; + var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c); + var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\u001b[0m'; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } else { + return new Date().toISOString() + ' '; + } +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log() { + return process.stderr.write(util.format.apply(util, arguments) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + if (null == namespaces) { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init (debug) { + debug.inspectOpts = {}; + + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +/** + * Enable namespaces listed in `process.env.DEBUG` initially. + */ + +exports.enable(load()); + + +/***/ }), +/* 268 */ +/***/ (function(module, exports, __webpack_require__) { + +(function webpackUniversalModuleDefinition(root, factory) { +/* istanbul ignore next */ + if(true) + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); +/* istanbul ignore next */ + else if(typeof exports === 'object') + exports["esprima"] = factory(); + else + root["esprima"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/* istanbul ignore if */ +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /* + Copyright JS Foundation and other contributors, https://js.foundation/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + Object.defineProperty(exports, "__esModule", { value: true }); + var comment_handler_1 = __webpack_require__(1); + var jsx_parser_1 = __webpack_require__(3); + var parser_1 = __webpack_require__(8); + var tokenizer_1 = __webpack_require__(15); + function parse(code, options, delegate) { + var commentHandler = null; + var proxyDelegate = function (node, metadata) { + if (delegate) { + delegate(node, metadata); + } + if (commentHandler) { + commentHandler.visit(node, metadata); + } + }; + var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null; + var collectComment = false; + if (options) { + collectComment = (typeof options.comment === 'boolean' && options.comment); + var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment); + if (collectComment || attachComment) { + commentHandler = new comment_handler_1.CommentHandler(); + commentHandler.attach = attachComment; + options.comment = true; + parserDelegate = proxyDelegate; + } + } + var isModule = false; + if (options && typeof options.sourceType === 'string') { + isModule = (options.sourceType === 'module'); + } + var parser; + if (options && typeof options.jsx === 'boolean' && options.jsx) { + parser = new jsx_parser_1.JSXParser(code, options, parserDelegate); + } + else { + parser = new parser_1.Parser(code, options, parserDelegate); + } + var program = isModule ? parser.parseModule() : parser.parseScript(); + var ast = program; + if (collectComment && commentHandler) { + ast.comments = commentHandler.comments; + } + if (parser.config.tokens) { + ast.tokens = parser.tokens; + } + if (parser.config.tolerant) { + ast.errors = parser.errorHandler.errors; + } + return ast; + } + exports.parse = parse; + function parseModule(code, options, delegate) { + var parsingOptions = options || {}; + parsingOptions.sourceType = 'module'; + return parse(code, parsingOptions, delegate); + } + exports.parseModule = parseModule; + function parseScript(code, options, delegate) { + var parsingOptions = options || {}; + parsingOptions.sourceType = 'script'; + return parse(code, parsingOptions, delegate); + } + exports.parseScript = parseScript; + function tokenize(code, options, delegate) { + var tokenizer = new tokenizer_1.Tokenizer(code, options); + var tokens; + tokens = []; + try { + while (true) { + var token = tokenizer.getNextToken(); + if (!token) { + break; + } + if (delegate) { + token = delegate(token); + } + tokens.push(token); + } + } + catch (e) { + tokenizer.errorHandler.tolerate(e); + } + if (tokenizer.errorHandler.tolerant) { + tokens.errors = tokenizer.errors(); + } + return tokens; + } + exports.tokenize = tokenize; + var syntax_1 = __webpack_require__(2); + exports.Syntax = syntax_1.Syntax; + // Sync with *.json manifests. + exports.version = '4.0.1'; + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var syntax_1 = __webpack_require__(2); + var CommentHandler = (function () { + function CommentHandler() { + this.attach = false; + this.comments = []; + this.stack = []; + this.leading = []; + this.trailing = []; + } + CommentHandler.prototype.insertInnerComments = function (node, metadata) { + // innnerComments for properties empty block + // `function a() {/** comments **\/}` + if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) { + var innerComments = []; + for (var i = this.leading.length - 1; i >= 0; --i) { + var entry = this.leading[i]; + if (metadata.end.offset >= entry.start) { + innerComments.unshift(entry.comment); + this.leading.splice(i, 1); + this.trailing.splice(i, 1); + } + } + if (innerComments.length) { + node.innerComments = innerComments; + } + } + }; + CommentHandler.prototype.findTrailingComments = function (metadata) { + var trailingComments = []; + if (this.trailing.length > 0) { + for (var i = this.trailing.length - 1; i >= 0; --i) { + var entry_1 = this.trailing[i]; + if (entry_1.start >= metadata.end.offset) { + trailingComments.unshift(entry_1.comment); + } + } + this.trailing.length = 0; + return trailingComments; + } + var entry = this.stack[this.stack.length - 1]; + if (entry && entry.node.trailingComments) { + var firstComment = entry.node.trailingComments[0]; + if (firstComment && firstComment.range[0] >= metadata.end.offset) { + trailingComments = entry.node.trailingComments; + delete entry.node.trailingComments; + } + } + return trailingComments; + }; + CommentHandler.prototype.findLeadingComments = function (metadata) { + var leadingComments = []; + var target; + while (this.stack.length > 0) { + var entry = this.stack[this.stack.length - 1]; + if (entry && entry.start >= metadata.start.offset) { + target = entry.node; + this.stack.pop(); + } + else { + break; + } + } + if (target) { + var count = target.leadingComments ? target.leadingComments.length : 0; + for (var i = count - 1; i >= 0; --i) { + var comment = target.leadingComments[i]; + if (comment.range[1] <= metadata.start.offset) { + leadingComments.unshift(comment); + target.leadingComments.splice(i, 1); + } + } + if (target.leadingComments && target.leadingComments.length === 0) { + delete target.leadingComments; + } + return leadingComments; + } + for (var i = this.leading.length - 1; i >= 0; --i) { + var entry = this.leading[i]; + if (entry.start <= metadata.start.offset) { + leadingComments.unshift(entry.comment); + this.leading.splice(i, 1); + } + } + return leadingComments; + }; + CommentHandler.prototype.visitNode = function (node, metadata) { + if (node.type === syntax_1.Syntax.Program && node.body.length > 0) { + return; + } + this.insertInnerComments(node, metadata); + var trailingComments = this.findTrailingComments(metadata); + var leadingComments = this.findLeadingComments(metadata); + if (leadingComments.length > 0) { + node.leadingComments = leadingComments; + } + if (trailingComments.length > 0) { + node.trailingComments = trailingComments; + } + this.stack.push({ + node: node, + start: metadata.start.offset + }); + }; + CommentHandler.prototype.visitComment = function (node, metadata) { + var type = (node.type[0] === 'L') ? 'Line' : 'Block'; + var comment = { + type: type, + value: node.value + }; + if (node.range) { + comment.range = node.range; + } + if (node.loc) { + comment.loc = node.loc; + } + this.comments.push(comment); + if (this.attach) { + var entry = { + comment: { + type: type, + value: node.value, + range: [metadata.start.offset, metadata.end.offset] + }, + start: metadata.start.offset + }; + if (node.loc) { + entry.comment.loc = node.loc; + } + node.type = type; + this.leading.push(entry); + this.trailing.push(entry); + } + }; + CommentHandler.prototype.visit = function (node, metadata) { + if (node.type === 'LineComment') { + this.visitComment(node, metadata); + } + else if (node.type === 'BlockComment') { + this.visitComment(node, metadata); + } + else if (this.attach) { + this.visitNode(node, metadata); + } + }; + return CommentHandler; + }()); + exports.CommentHandler = CommentHandler; + + +/***/ }, +/* 2 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Syntax = { + AssignmentExpression: 'AssignmentExpression', + AssignmentPattern: 'AssignmentPattern', + ArrayExpression: 'ArrayExpression', + ArrayPattern: 'ArrayPattern', + ArrowFunctionExpression: 'ArrowFunctionExpression', + AwaitExpression: 'AwaitExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ClassBody: 'ClassBody', + ClassDeclaration: 'ClassDeclaration', + ClassExpression: 'ClassExpression', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExportAllDeclaration: 'ExportAllDeclaration', + ExportDefaultDeclaration: 'ExportDefaultDeclaration', + ExportNamedDeclaration: 'ExportNamedDeclaration', + ExportSpecifier: 'ExportSpecifier', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForOfStatement: 'ForOfStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + ImportDeclaration: 'ImportDeclaration', + ImportDefaultSpecifier: 'ImportDefaultSpecifier', + ImportNamespaceSpecifier: 'ImportNamespaceSpecifier', + ImportSpecifier: 'ImportSpecifier', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + MetaProperty: 'MetaProperty', + MethodDefinition: 'MethodDefinition', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', + Program: 'Program', + Property: 'Property', + RestElement: 'RestElement', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SpreadElement: 'SpreadElement', + Super: 'Super', + SwitchCase: 'SwitchCase', + SwitchStatement: 'SwitchStatement', + TaggedTemplateExpression: 'TaggedTemplateExpression', + TemplateElement: 'TemplateElement', + TemplateLiteral: 'TemplateLiteral', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement', + YieldExpression: 'YieldExpression' + }; + + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; +/* istanbul ignore next */ + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var character_1 = __webpack_require__(4); + var JSXNode = __webpack_require__(5); + var jsx_syntax_1 = __webpack_require__(6); + var Node = __webpack_require__(7); + var parser_1 = __webpack_require__(8); + var token_1 = __webpack_require__(13); + var xhtml_entities_1 = __webpack_require__(14); + token_1.TokenName[100 /* Identifier */] = 'JSXIdentifier'; + token_1.TokenName[101 /* Text */] = 'JSXText'; + // Fully qualified element name, e.g. returns "svg:path" + function getQualifiedElementName(elementName) { + var qualifiedName; + switch (elementName.type) { + case jsx_syntax_1.JSXSyntax.JSXIdentifier: + var id = elementName; + qualifiedName = id.name; + break; + case jsx_syntax_1.JSXSyntax.JSXNamespacedName: + var ns = elementName; + qualifiedName = getQualifiedElementName(ns.namespace) + ':' + + getQualifiedElementName(ns.name); + break; + case jsx_syntax_1.JSXSyntax.JSXMemberExpression: + var expr = elementName; + qualifiedName = getQualifiedElementName(expr.object) + '.' + + getQualifiedElementName(expr.property); + break; + /* istanbul ignore next */ + default: + break; + } + return qualifiedName; + } + var JSXParser = (function (_super) { + __extends(JSXParser, _super); + function JSXParser(code, options, delegate) { + return _super.call(this, code, options, delegate) || this; + } + JSXParser.prototype.parsePrimaryExpression = function () { + return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this); + }; + JSXParser.prototype.startJSX = function () { + // Unwind the scanner before the lookahead token. + this.scanner.index = this.startMarker.index; + this.scanner.lineNumber = this.startMarker.line; + this.scanner.lineStart = this.startMarker.index - this.startMarker.column; + }; + JSXParser.prototype.finishJSX = function () { + // Prime the next lookahead. + this.nextToken(); + }; + JSXParser.prototype.reenterJSX = function () { + this.startJSX(); + this.expectJSX('}'); + // Pop the closing '}' added from the lookahead. + if (this.config.tokens) { + this.tokens.pop(); + } + }; + JSXParser.prototype.createJSXNode = function () { + this.collectComments(); + return { + index: this.scanner.index, + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + }; + }; + JSXParser.prototype.createJSXChildNode = function () { + return { + index: this.scanner.index, + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + }; + }; + JSXParser.prototype.scanXHTMLEntity = function (quote) { + var result = '&'; + var valid = true; + var terminated = false; + var numeric = false; + var hex = false; + while (!this.scanner.eof() && valid && !terminated) { + var ch = this.scanner.source[this.scanner.index]; + if (ch === quote) { + break; + } + terminated = (ch === ';'); + result += ch; + ++this.scanner.index; + if (!terminated) { + switch (result.length) { + case 2: + // e.g. '{' + numeric = (ch === '#'); + break; + case 3: + if (numeric) { + // e.g. 'A' + hex = (ch === 'x'); + valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0)); + numeric = numeric && !hex; + } + break; + default: + valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0))); + valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0))); + break; + } + } + } + if (valid && terminated && result.length > 2) { + // e.g. 'A' becomes just '#x41' + var str = result.substr(1, result.length - 2); + if (numeric && str.length > 1) { + result = String.fromCharCode(parseInt(str.substr(1), 10)); + } + else if (hex && str.length > 2) { + result = String.fromCharCode(parseInt('0' + str.substr(1), 16)); + } + else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) { + result = xhtml_entities_1.XHTMLEntities[str]; + } + } + return result; + }; + // Scan the next JSX token. This replaces Scanner#lex when in JSX mode. + JSXParser.prototype.lexJSX = function () { + var cp = this.scanner.source.charCodeAt(this.scanner.index); + // < > / : = { } + if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) { + var value = this.scanner.source[this.scanner.index++]; + return { + type: 7 /* Punctuator */, + value: value, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: this.scanner.index - 1, + end: this.scanner.index + }; + } + // " ' + if (cp === 34 || cp === 39) { + var start = this.scanner.index; + var quote = this.scanner.source[this.scanner.index++]; + var str = ''; + while (!this.scanner.eof()) { + var ch = this.scanner.source[this.scanner.index++]; + if (ch === quote) { + break; + } + else if (ch === '&') { + str += this.scanXHTMLEntity(quote); + } + else { + str += ch; + } + } + return { + type: 8 /* StringLiteral */, + value: str, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + } + // ... or . + if (cp === 46) { + var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1); + var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2); + var value = (n1 === 46 && n2 === 46) ? '...' : '.'; + var start = this.scanner.index; + this.scanner.index += value.length; + return { + type: 7 /* Punctuator */, + value: value, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + } + // ` + if (cp === 96) { + // Only placeholder, since it will be rescanned as a real assignment expression. + return { + type: 10 /* Template */, + value: '', + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: this.scanner.index, + end: this.scanner.index + }; + } + // Identifer can not contain backslash (char code 92). + if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) { + var start = this.scanner.index; + ++this.scanner.index; + while (!this.scanner.eof()) { + var ch = this.scanner.source.charCodeAt(this.scanner.index); + if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) { + ++this.scanner.index; + } + else if (ch === 45) { + // Hyphen (char code 45) can be part of an identifier. + ++this.scanner.index; + } + else { + break; + } + } + var id = this.scanner.source.slice(start, this.scanner.index); + return { + type: 100 /* Identifier */, + value: id, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + } + return this.scanner.lex(); + }; + JSXParser.prototype.nextJSXToken = function () { + this.collectComments(); + this.startMarker.index = this.scanner.index; + this.startMarker.line = this.scanner.lineNumber; + this.startMarker.column = this.scanner.index - this.scanner.lineStart; + var token = this.lexJSX(); + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + if (this.config.tokens) { + this.tokens.push(this.convertToken(token)); + } + return token; + }; + JSXParser.prototype.nextJSXText = function () { + this.startMarker.index = this.scanner.index; + this.startMarker.line = this.scanner.lineNumber; + this.startMarker.column = this.scanner.index - this.scanner.lineStart; + var start = this.scanner.index; + var text = ''; + while (!this.scanner.eof()) { + var ch = this.scanner.source[this.scanner.index]; + if (ch === '{' || ch === '<') { + break; + } + ++this.scanner.index; + text += ch; + if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { + ++this.scanner.lineNumber; + if (ch === '\r' && this.scanner.source[this.scanner.index] === '\n') { + ++this.scanner.index; + } + this.scanner.lineStart = this.scanner.index; + } + } + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + var token = { + type: 101 /* Text */, + value: text, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + if ((text.length > 0) && this.config.tokens) { + this.tokens.push(this.convertToken(token)); + } + return token; + }; + JSXParser.prototype.peekJSXToken = function () { + var state = this.scanner.saveState(); + this.scanner.scanComments(); + var next = this.lexJSX(); + this.scanner.restoreState(state); + return next; + }; + // Expect the next JSX token to match the specified punctuator. + // If not, an exception will be thrown. + JSXParser.prototype.expectJSX = function (value) { + var token = this.nextJSXToken(); + if (token.type !== 7 /* Punctuator */ || token.value !== value) { + this.throwUnexpectedToken(token); + } + }; + // Return true if the next JSX token matches the specified punctuator. + JSXParser.prototype.matchJSX = function (value) { + var next = this.peekJSXToken(); + return next.type === 7 /* Punctuator */ && next.value === value; + }; + JSXParser.prototype.parseJSXIdentifier = function () { + var node = this.createJSXNode(); + var token = this.nextJSXToken(); + if (token.type !== 100 /* Identifier */) { + this.throwUnexpectedToken(token); + } + return this.finalize(node, new JSXNode.JSXIdentifier(token.value)); + }; + JSXParser.prototype.parseJSXElementName = function () { + var node = this.createJSXNode(); + var elementName = this.parseJSXIdentifier(); + if (this.matchJSX(':')) { + var namespace = elementName; + this.expectJSX(':'); + var name_1 = this.parseJSXIdentifier(); + elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1)); + } + else if (this.matchJSX('.')) { + while (this.matchJSX('.')) { + var object = elementName; + this.expectJSX('.'); + var property = this.parseJSXIdentifier(); + elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property)); + } + } + return elementName; + }; + JSXParser.prototype.parseJSXAttributeName = function () { + var node = this.createJSXNode(); + var attributeName; + var identifier = this.parseJSXIdentifier(); + if (this.matchJSX(':')) { + var namespace = identifier; + this.expectJSX(':'); + var name_2 = this.parseJSXIdentifier(); + attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2)); + } + else { + attributeName = identifier; + } + return attributeName; + }; + JSXParser.prototype.parseJSXStringLiteralAttribute = function () { + var node = this.createJSXNode(); + var token = this.nextJSXToken(); + if (token.type !== 8 /* StringLiteral */) { + this.throwUnexpectedToken(token); + } + var raw = this.getTokenRaw(token); + return this.finalize(node, new Node.Literal(token.value, raw)); + }; + JSXParser.prototype.parseJSXExpressionAttribute = function () { + var node = this.createJSXNode(); + this.expectJSX('{'); + this.finishJSX(); + if (this.match('}')) { + this.tolerateError('JSX attributes must only be assigned a non-empty expression'); + } + var expression = this.parseAssignmentExpression(); + this.reenterJSX(); + return this.finalize(node, new JSXNode.JSXExpressionContainer(expression)); + }; + JSXParser.prototype.parseJSXAttributeValue = function () { + return this.matchJSX('{') ? this.parseJSXExpressionAttribute() : + this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute(); + }; + JSXParser.prototype.parseJSXNameValueAttribute = function () { + var node = this.createJSXNode(); + var name = this.parseJSXAttributeName(); + var value = null; + if (this.matchJSX('=')) { + this.expectJSX('='); + value = this.parseJSXAttributeValue(); + } + return this.finalize(node, new JSXNode.JSXAttribute(name, value)); + }; + JSXParser.prototype.parseJSXSpreadAttribute = function () { + var node = this.createJSXNode(); + this.expectJSX('{'); + this.expectJSX('...'); + this.finishJSX(); + var argument = this.parseAssignmentExpression(); + this.reenterJSX(); + return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument)); + }; + JSXParser.prototype.parseJSXAttributes = function () { + var attributes = []; + while (!this.matchJSX('/') && !this.matchJSX('>')) { + var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() : + this.parseJSXNameValueAttribute(); + attributes.push(attribute); + } + return attributes; + }; + JSXParser.prototype.parseJSXOpeningElement = function () { + var node = this.createJSXNode(); + this.expectJSX('<'); + var name = this.parseJSXElementName(); + var attributes = this.parseJSXAttributes(); + var selfClosing = this.matchJSX('/'); + if (selfClosing) { + this.expectJSX('/'); + } + this.expectJSX('>'); + return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes)); + }; + JSXParser.prototype.parseJSXBoundaryElement = function () { + var node = this.createJSXNode(); + this.expectJSX('<'); + if (this.matchJSX('/')) { + this.expectJSX('/'); + var name_3 = this.parseJSXElementName(); + this.expectJSX('>'); + return this.finalize(node, new JSXNode.JSXClosingElement(name_3)); + } + var name = this.parseJSXElementName(); + var attributes = this.parseJSXAttributes(); + var selfClosing = this.matchJSX('/'); + if (selfClosing) { + this.expectJSX('/'); + } + this.expectJSX('>'); + return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes)); + }; + JSXParser.prototype.parseJSXEmptyExpression = function () { + var node = this.createJSXChildNode(); + this.collectComments(); + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + return this.finalize(node, new JSXNode.JSXEmptyExpression()); + }; + JSXParser.prototype.parseJSXExpressionContainer = function () { + var node = this.createJSXNode(); + this.expectJSX('{'); + var expression; + if (this.matchJSX('}')) { + expression = this.parseJSXEmptyExpression(); + this.expectJSX('}'); + } + else { + this.finishJSX(); + expression = this.parseAssignmentExpression(); + this.reenterJSX(); + } + return this.finalize(node, new JSXNode.JSXExpressionContainer(expression)); + }; + JSXParser.prototype.parseJSXChildren = function () { + var children = []; + while (!this.scanner.eof()) { + var node = this.createJSXChildNode(); + var token = this.nextJSXText(); + if (token.start < token.end) { + var raw = this.getTokenRaw(token); + var child = this.finalize(node, new JSXNode.JSXText(token.value, raw)); + children.push(child); + } + if (this.scanner.source[this.scanner.index] === '{') { + var container = this.parseJSXExpressionContainer(); + children.push(container); + } + else { + break; + } + } + return children; + }; + JSXParser.prototype.parseComplexJSXElement = function (el) { + var stack = []; + while (!this.scanner.eof()) { + el.children = el.children.concat(this.parseJSXChildren()); + var node = this.createJSXChildNode(); + var element = this.parseJSXBoundaryElement(); + if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) { + var opening = element; + if (opening.selfClosing) { + var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null)); + el.children.push(child); + } + else { + stack.push(el); + el = { node: node, opening: opening, closing: null, children: [] }; + } + } + if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) { + el.closing = element; + var open_1 = getQualifiedElementName(el.opening.name); + var close_1 = getQualifiedElementName(el.closing.name); + if (open_1 !== close_1) { + this.tolerateError('Expected corresponding JSX closing tag for %0', open_1); + } + if (stack.length > 0) { + var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing)); + el = stack[stack.length - 1]; + el.children.push(child); + stack.pop(); + } + else { + break; + } + } + } + return el; + }; + JSXParser.prototype.parseJSXElement = function () { + var node = this.createJSXNode(); + var opening = this.parseJSXOpeningElement(); + var children = []; + var closing = null; + if (!opening.selfClosing) { + var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children }); + children = el.children; + closing = el.closing; + } + return this.finalize(node, new JSXNode.JSXElement(opening, children, closing)); + }; + JSXParser.prototype.parseJSXRoot = function () { + // Pop the opening '<' added from the lookahead. + if (this.config.tokens) { + this.tokens.pop(); + } + this.startJSX(); + var element = this.parseJSXElement(); + this.finishJSX(); + return element; + }; + JSXParser.prototype.isStartOfExpression = function () { + return _super.prototype.isStartOfExpression.call(this) || this.match('<'); + }; + return JSXParser; + }(parser_1.Parser)); + exports.JSXParser = JSXParser; + + +/***/ }, +/* 4 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + // See also tools/generate-unicode-regex.js. + var Regex = { + // Unicode v8.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, + // Unicode v8.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; + exports.Character = { + /* tslint:disable:no-bitwise */ + fromCodePoint: function (cp) { + return (cp < 0x10000) ? String.fromCharCode(cp) : + String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) + + String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023)); + }, + // https://tc39.github.io/ecma262/#sec-white-space + isWhiteSpace: function (cp) { + return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) || + (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0); + }, + // https://tc39.github.io/ecma262/#sec-line-terminators + isLineTerminator: function (cp) { + return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029); + }, + // https://tc39.github.io/ecma262/#sec-names-and-keywords + isIdentifierStart: function (cp) { + return (cp === 0x24) || (cp === 0x5F) || + (cp >= 0x41 && cp <= 0x5A) || + (cp >= 0x61 && cp <= 0x7A) || + (cp === 0x5C) || + ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp))); + }, + isIdentifierPart: function (cp) { + return (cp === 0x24) || (cp === 0x5F) || + (cp >= 0x41 && cp <= 0x5A) || + (cp >= 0x61 && cp <= 0x7A) || + (cp >= 0x30 && cp <= 0x39) || + (cp === 0x5C) || + ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp))); + }, + // https://tc39.github.io/ecma262/#sec-literals-numeric-literals + isDecimalDigit: function (cp) { + return (cp >= 0x30 && cp <= 0x39); // 0..9 + }, + isHexDigit: function (cp) { + return (cp >= 0x30 && cp <= 0x39) || + (cp >= 0x41 && cp <= 0x46) || + (cp >= 0x61 && cp <= 0x66); // a..f + }, + isOctalDigit: function (cp) { + return (cp >= 0x30 && cp <= 0x37); // 0..7 + } + }; + + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var jsx_syntax_1 = __webpack_require__(6); + /* tslint:disable:max-classes-per-file */ + var JSXClosingElement = (function () { + function JSXClosingElement(name) { + this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement; + this.name = name; + } + return JSXClosingElement; + }()); + exports.JSXClosingElement = JSXClosingElement; + var JSXElement = (function () { + function JSXElement(openingElement, children, closingElement) { + this.type = jsx_syntax_1.JSXSyntax.JSXElement; + this.openingElement = openingElement; + this.children = children; + this.closingElement = closingElement; + } + return JSXElement; + }()); + exports.JSXElement = JSXElement; + var JSXEmptyExpression = (function () { + function JSXEmptyExpression() { + this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression; + } + return JSXEmptyExpression; + }()); + exports.JSXEmptyExpression = JSXEmptyExpression; + var JSXExpressionContainer = (function () { + function JSXExpressionContainer(expression) { + this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer; + this.expression = expression; + } + return JSXExpressionContainer; + }()); + exports.JSXExpressionContainer = JSXExpressionContainer; + var JSXIdentifier = (function () { + function JSXIdentifier(name) { + this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier; + this.name = name; + } + return JSXIdentifier; + }()); + exports.JSXIdentifier = JSXIdentifier; + var JSXMemberExpression = (function () { + function JSXMemberExpression(object, property) { + this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression; + this.object = object; + this.property = property; + } + return JSXMemberExpression; + }()); + exports.JSXMemberExpression = JSXMemberExpression; + var JSXAttribute = (function () { + function JSXAttribute(name, value) { + this.type = jsx_syntax_1.JSXSyntax.JSXAttribute; + this.name = name; + this.value = value; + } + return JSXAttribute; + }()); + exports.JSXAttribute = JSXAttribute; + var JSXNamespacedName = (function () { + function JSXNamespacedName(namespace, name) { + this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName; + this.namespace = namespace; + this.name = name; + } + return JSXNamespacedName; + }()); + exports.JSXNamespacedName = JSXNamespacedName; + var JSXOpeningElement = (function () { + function JSXOpeningElement(name, selfClosing, attributes) { + this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement; + this.name = name; + this.selfClosing = selfClosing; + this.attributes = attributes; + } + return JSXOpeningElement; + }()); + exports.JSXOpeningElement = JSXOpeningElement; + var JSXSpreadAttribute = (function () { + function JSXSpreadAttribute(argument) { + this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute; + this.argument = argument; + } + return JSXSpreadAttribute; + }()); + exports.JSXSpreadAttribute = JSXSpreadAttribute; + var JSXText = (function () { + function JSXText(value, raw) { + this.type = jsx_syntax_1.JSXSyntax.JSXText; + this.value = value; + this.raw = raw; + } + return JSXText; + }()); + exports.JSXText = JSXText; + + +/***/ }, +/* 6 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.JSXSyntax = { + JSXAttribute: 'JSXAttribute', + JSXClosingElement: 'JSXClosingElement', + JSXElement: 'JSXElement', + JSXEmptyExpression: 'JSXEmptyExpression', + JSXExpressionContainer: 'JSXExpressionContainer', + JSXIdentifier: 'JSXIdentifier', + JSXMemberExpression: 'JSXMemberExpression', + JSXNamespacedName: 'JSXNamespacedName', + JSXOpeningElement: 'JSXOpeningElement', + JSXSpreadAttribute: 'JSXSpreadAttribute', + JSXText: 'JSXText' + }; + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var syntax_1 = __webpack_require__(2); + /* tslint:disable:max-classes-per-file */ + var ArrayExpression = (function () { + function ArrayExpression(elements) { + this.type = syntax_1.Syntax.ArrayExpression; + this.elements = elements; + } + return ArrayExpression; + }()); + exports.ArrayExpression = ArrayExpression; + var ArrayPattern = (function () { + function ArrayPattern(elements) { + this.type = syntax_1.Syntax.ArrayPattern; + this.elements = elements; + } + return ArrayPattern; + }()); + exports.ArrayPattern = ArrayPattern; + var ArrowFunctionExpression = (function () { + function ArrowFunctionExpression(params, body, expression) { + this.type = syntax_1.Syntax.ArrowFunctionExpression; + this.id = null; + this.params = params; + this.body = body; + this.generator = false; + this.expression = expression; + this.async = false; + } + return ArrowFunctionExpression; + }()); + exports.ArrowFunctionExpression = ArrowFunctionExpression; + var AssignmentExpression = (function () { + function AssignmentExpression(operator, left, right) { + this.type = syntax_1.Syntax.AssignmentExpression; + this.operator = operator; + this.left = left; + this.right = right; + } + return AssignmentExpression; + }()); + exports.AssignmentExpression = AssignmentExpression; + var AssignmentPattern = (function () { + function AssignmentPattern(left, right) { + this.type = syntax_1.Syntax.AssignmentPattern; + this.left = left; + this.right = right; + } + return AssignmentPattern; + }()); + exports.AssignmentPattern = AssignmentPattern; + var AsyncArrowFunctionExpression = (function () { + function AsyncArrowFunctionExpression(params, body, expression) { + this.type = syntax_1.Syntax.ArrowFunctionExpression; + this.id = null; + this.params = params; + this.body = body; + this.generator = false; + this.expression = expression; + this.async = true; + } + return AsyncArrowFunctionExpression; + }()); + exports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression; + var AsyncFunctionDeclaration = (function () { + function AsyncFunctionDeclaration(id, params, body) { + this.type = syntax_1.Syntax.FunctionDeclaration; + this.id = id; + this.params = params; + this.body = body; + this.generator = false; + this.expression = false; + this.async = true; + } + return AsyncFunctionDeclaration; + }()); + exports.AsyncFunctionDeclaration = AsyncFunctionDeclaration; + var AsyncFunctionExpression = (function () { + function AsyncFunctionExpression(id, params, body) { + this.type = syntax_1.Syntax.FunctionExpression; + this.id = id; + this.params = params; + this.body = body; + this.generator = false; + this.expression = false; + this.async = true; + } + return AsyncFunctionExpression; + }()); + exports.AsyncFunctionExpression = AsyncFunctionExpression; + var AwaitExpression = (function () { + function AwaitExpression(argument) { + this.type = syntax_1.Syntax.AwaitExpression; + this.argument = argument; + } + return AwaitExpression; + }()); + exports.AwaitExpression = AwaitExpression; + var BinaryExpression = (function () { + function BinaryExpression(operator, left, right) { + var logical = (operator === '||' || operator === '&&'); + this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression; + this.operator = operator; + this.left = left; + this.right = right; + } + return BinaryExpression; + }()); + exports.BinaryExpression = BinaryExpression; + var BlockStatement = (function () { + function BlockStatement(body) { + this.type = syntax_1.Syntax.BlockStatement; + this.body = body; + } + return BlockStatement; + }()); + exports.BlockStatement = BlockStatement; + var BreakStatement = (function () { + function BreakStatement(label) { + this.type = syntax_1.Syntax.BreakStatement; + this.label = label; + } + return BreakStatement; + }()); + exports.BreakStatement = BreakStatement; + var CallExpression = (function () { + function CallExpression(callee, args) { + this.type = syntax_1.Syntax.CallExpression; + this.callee = callee; + this.arguments = args; + } + return CallExpression; + }()); + exports.CallExpression = CallExpression; + var CatchClause = (function () { + function CatchClause(param, body) { + this.type = syntax_1.Syntax.CatchClause; + this.param = param; + this.body = body; + } + return CatchClause; + }()); + exports.CatchClause = CatchClause; + var ClassBody = (function () { + function ClassBody(body) { + this.type = syntax_1.Syntax.ClassBody; + this.body = body; + } + return ClassBody; + }()); + exports.ClassBody = ClassBody; + var ClassDeclaration = (function () { + function ClassDeclaration(id, superClass, body) { + this.type = syntax_1.Syntax.ClassDeclaration; + this.id = id; + this.superClass = superClass; + this.body = body; + } + return ClassDeclaration; + }()); + exports.ClassDeclaration = ClassDeclaration; + var ClassExpression = (function () { + function ClassExpression(id, superClass, body) { + this.type = syntax_1.Syntax.ClassExpression; + this.id = id; + this.superClass = superClass; + this.body = body; + } + return ClassExpression; + }()); + exports.ClassExpression = ClassExpression; + var ComputedMemberExpression = (function () { + function ComputedMemberExpression(object, property) { + this.type = syntax_1.Syntax.MemberExpression; + this.computed = true; + this.object = object; + this.property = property; + } + return ComputedMemberExpression; + }()); + exports.ComputedMemberExpression = ComputedMemberExpression; + var ConditionalExpression = (function () { + function ConditionalExpression(test, consequent, alternate) { + this.type = syntax_1.Syntax.ConditionalExpression; + this.test = test; + this.consequent = consequent; + this.alternate = alternate; + } + return ConditionalExpression; + }()); + exports.ConditionalExpression = ConditionalExpression; + var ContinueStatement = (function () { + function ContinueStatement(label) { + this.type = syntax_1.Syntax.ContinueStatement; + this.label = label; + } + return ContinueStatement; + }()); + exports.ContinueStatement = ContinueStatement; + var DebuggerStatement = (function () { + function DebuggerStatement() { + this.type = syntax_1.Syntax.DebuggerStatement; + } + return DebuggerStatement; + }()); + exports.DebuggerStatement = DebuggerStatement; + var Directive = (function () { + function Directive(expression, directive) { + this.type = syntax_1.Syntax.ExpressionStatement; + this.expression = expression; + this.directive = directive; + } + return Directive; + }()); + exports.Directive = Directive; + var DoWhileStatement = (function () { + function DoWhileStatement(body, test) { + this.type = syntax_1.Syntax.DoWhileStatement; + this.body = body; + this.test = test; + } + return DoWhileStatement; + }()); + exports.DoWhileStatement = DoWhileStatement; + var EmptyStatement = (function () { + function EmptyStatement() { + this.type = syntax_1.Syntax.EmptyStatement; + } + return EmptyStatement; + }()); + exports.EmptyStatement = EmptyStatement; + var ExportAllDeclaration = (function () { + function ExportAllDeclaration(source) { + this.type = syntax_1.Syntax.ExportAllDeclaration; + this.source = source; + } + return ExportAllDeclaration; + }()); + exports.ExportAllDeclaration = ExportAllDeclaration; + var ExportDefaultDeclaration = (function () { + function ExportDefaultDeclaration(declaration) { + this.type = syntax_1.Syntax.ExportDefaultDeclaration; + this.declaration = declaration; + } + return ExportDefaultDeclaration; + }()); + exports.ExportDefaultDeclaration = ExportDefaultDeclaration; + var ExportNamedDeclaration = (function () { + function ExportNamedDeclaration(declaration, specifiers, source) { + this.type = syntax_1.Syntax.ExportNamedDeclaration; + this.declaration = declaration; + this.specifiers = specifiers; + this.source = source; + } + return ExportNamedDeclaration; + }()); + exports.ExportNamedDeclaration = ExportNamedDeclaration; + var ExportSpecifier = (function () { + function ExportSpecifier(local, exported) { + this.type = syntax_1.Syntax.ExportSpecifier; + this.exported = exported; + this.local = local; + } + return ExportSpecifier; + }()); + exports.ExportSpecifier = ExportSpecifier; + var ExpressionStatement = (function () { + function ExpressionStatement(expression) { + this.type = syntax_1.Syntax.ExpressionStatement; + this.expression = expression; + } + return ExpressionStatement; + }()); + exports.ExpressionStatement = ExpressionStatement; + var ForInStatement = (function () { + function ForInStatement(left, right, body) { + this.type = syntax_1.Syntax.ForInStatement; + this.left = left; + this.right = right; + this.body = body; + this.each = false; + } + return ForInStatement; + }()); + exports.ForInStatement = ForInStatement; + var ForOfStatement = (function () { + function ForOfStatement(left, right, body) { + this.type = syntax_1.Syntax.ForOfStatement; + this.left = left; + this.right = right; + this.body = body; + } + return ForOfStatement; + }()); + exports.ForOfStatement = ForOfStatement; + var ForStatement = (function () { + function ForStatement(init, test, update, body) { + this.type = syntax_1.Syntax.ForStatement; + this.init = init; + this.test = test; + this.update = update; + this.body = body; + } + return ForStatement; + }()); + exports.ForStatement = ForStatement; + var FunctionDeclaration = (function () { + function FunctionDeclaration(id, params, body, generator) { + this.type = syntax_1.Syntax.FunctionDeclaration; + this.id = id; + this.params = params; + this.body = body; + this.generator = generator; + this.expression = false; + this.async = false; + } + return FunctionDeclaration; + }()); + exports.FunctionDeclaration = FunctionDeclaration; + var FunctionExpression = (function () { + function FunctionExpression(id, params, body, generator) { + this.type = syntax_1.Syntax.FunctionExpression; + this.id = id; + this.params = params; + this.body = body; + this.generator = generator; + this.expression = false; + this.async = false; + } + return FunctionExpression; + }()); + exports.FunctionExpression = FunctionExpression; + var Identifier = (function () { + function Identifier(name) { + this.type = syntax_1.Syntax.Identifier; + this.name = name; + } + return Identifier; + }()); + exports.Identifier = Identifier; + var IfStatement = (function () { + function IfStatement(test, consequent, alternate) { + this.type = syntax_1.Syntax.IfStatement; + this.test = test; + this.consequent = consequent; + this.alternate = alternate; + } + return IfStatement; + }()); + exports.IfStatement = IfStatement; + var ImportDeclaration = (function () { + function ImportDeclaration(specifiers, source) { + this.type = syntax_1.Syntax.ImportDeclaration; + this.specifiers = specifiers; + this.source = source; + } + return ImportDeclaration; + }()); + exports.ImportDeclaration = ImportDeclaration; + var ImportDefaultSpecifier = (function () { + function ImportDefaultSpecifier(local) { + this.type = syntax_1.Syntax.ImportDefaultSpecifier; + this.local = local; + } + return ImportDefaultSpecifier; + }()); + exports.ImportDefaultSpecifier = ImportDefaultSpecifier; + var ImportNamespaceSpecifier = (function () { + function ImportNamespaceSpecifier(local) { + this.type = syntax_1.Syntax.ImportNamespaceSpecifier; + this.local = local; + } + return ImportNamespaceSpecifier; + }()); + exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; + var ImportSpecifier = (function () { + function ImportSpecifier(local, imported) { + this.type = syntax_1.Syntax.ImportSpecifier; + this.local = local; + this.imported = imported; + } + return ImportSpecifier; + }()); + exports.ImportSpecifier = ImportSpecifier; + var LabeledStatement = (function () { + function LabeledStatement(label, body) { + this.type = syntax_1.Syntax.LabeledStatement; + this.label = label; + this.body = body; + } + return LabeledStatement; + }()); + exports.LabeledStatement = LabeledStatement; + var Literal = (function () { + function Literal(value, raw) { + this.type = syntax_1.Syntax.Literal; + this.value = value; + this.raw = raw; + } + return Literal; + }()); + exports.Literal = Literal; + var MetaProperty = (function () { + function MetaProperty(meta, property) { + this.type = syntax_1.Syntax.MetaProperty; + this.meta = meta; + this.property = property; + } + return MetaProperty; + }()); + exports.MetaProperty = MetaProperty; + var MethodDefinition = (function () { + function MethodDefinition(key, computed, value, kind, isStatic) { + this.type = syntax_1.Syntax.MethodDefinition; + this.key = key; + this.computed = computed; + this.value = value; + this.kind = kind; + this.static = isStatic; + } + return MethodDefinition; + }()); + exports.MethodDefinition = MethodDefinition; + var Module = (function () { + function Module(body) { + this.type = syntax_1.Syntax.Program; + this.body = body; + this.sourceType = 'module'; + } + return Module; + }()); + exports.Module = Module; + var NewExpression = (function () { + function NewExpression(callee, args) { + this.type = syntax_1.Syntax.NewExpression; + this.callee = callee; + this.arguments = args; + } + return NewExpression; + }()); + exports.NewExpression = NewExpression; + var ObjectExpression = (function () { + function ObjectExpression(properties) { + this.type = syntax_1.Syntax.ObjectExpression; + this.properties = properties; + } + return ObjectExpression; + }()); + exports.ObjectExpression = ObjectExpression; + var ObjectPattern = (function () { + function ObjectPattern(properties) { + this.type = syntax_1.Syntax.ObjectPattern; + this.properties = properties; + } + return ObjectPattern; + }()); + exports.ObjectPattern = ObjectPattern; + var Property = (function () { + function Property(kind, key, computed, value, method, shorthand) { + this.type = syntax_1.Syntax.Property; + this.key = key; + this.computed = computed; + this.value = value; + this.kind = kind; + this.method = method; + this.shorthand = shorthand; + } + return Property; + }()); + exports.Property = Property; + var RegexLiteral = (function () { + function RegexLiteral(value, raw, pattern, flags) { + this.type = syntax_1.Syntax.Literal; + this.value = value; + this.raw = raw; + this.regex = { pattern: pattern, flags: flags }; + } + return RegexLiteral; + }()); + exports.RegexLiteral = RegexLiteral; + var RestElement = (function () { + function RestElement(argument) { + this.type = syntax_1.Syntax.RestElement; + this.argument = argument; + } + return RestElement; + }()); + exports.RestElement = RestElement; + var ReturnStatement = (function () { + function ReturnStatement(argument) { + this.type = syntax_1.Syntax.ReturnStatement; + this.argument = argument; + } + return ReturnStatement; + }()); + exports.ReturnStatement = ReturnStatement; + var Script = (function () { + function Script(body) { + this.type = syntax_1.Syntax.Program; + this.body = body; + this.sourceType = 'script'; + } + return Script; + }()); + exports.Script = Script; + var SequenceExpression = (function () { + function SequenceExpression(expressions) { + this.type = syntax_1.Syntax.SequenceExpression; + this.expressions = expressions; + } + return SequenceExpression; + }()); + exports.SequenceExpression = SequenceExpression; + var SpreadElement = (function () { + function SpreadElement(argument) { + this.type = syntax_1.Syntax.SpreadElement; + this.argument = argument; + } + return SpreadElement; + }()); + exports.SpreadElement = SpreadElement; + var StaticMemberExpression = (function () { + function StaticMemberExpression(object, property) { + this.type = syntax_1.Syntax.MemberExpression; + this.computed = false; + this.object = object; + this.property = property; + } + return StaticMemberExpression; + }()); + exports.StaticMemberExpression = StaticMemberExpression; + var Super = (function () { + function Super() { + this.type = syntax_1.Syntax.Super; + } + return Super; + }()); + exports.Super = Super; + var SwitchCase = (function () { + function SwitchCase(test, consequent) { + this.type = syntax_1.Syntax.SwitchCase; + this.test = test; + this.consequent = consequent; + } + return SwitchCase; + }()); + exports.SwitchCase = SwitchCase; + var SwitchStatement = (function () { + function SwitchStatement(discriminant, cases) { + this.type = syntax_1.Syntax.SwitchStatement; + this.discriminant = discriminant; + this.cases = cases; + } + return SwitchStatement; + }()); + exports.SwitchStatement = SwitchStatement; + var TaggedTemplateExpression = (function () { + function TaggedTemplateExpression(tag, quasi) { + this.type = syntax_1.Syntax.TaggedTemplateExpression; + this.tag = tag; + this.quasi = quasi; + } + return TaggedTemplateExpression; + }()); + exports.TaggedTemplateExpression = TaggedTemplateExpression; + var TemplateElement = (function () { + function TemplateElement(value, tail) { + this.type = syntax_1.Syntax.TemplateElement; + this.value = value; + this.tail = tail; + } + return TemplateElement; + }()); + exports.TemplateElement = TemplateElement; + var TemplateLiteral = (function () { + function TemplateLiteral(quasis, expressions) { + this.type = syntax_1.Syntax.TemplateLiteral; + this.quasis = quasis; + this.expressions = expressions; + } + return TemplateLiteral; + }()); + exports.TemplateLiteral = TemplateLiteral; + var ThisExpression = (function () { + function ThisExpression() { + this.type = syntax_1.Syntax.ThisExpression; + } + return ThisExpression; + }()); + exports.ThisExpression = ThisExpression; + var ThrowStatement = (function () { + function ThrowStatement(argument) { + this.type = syntax_1.Syntax.ThrowStatement; + this.argument = argument; + } + return ThrowStatement; + }()); + exports.ThrowStatement = ThrowStatement; + var TryStatement = (function () { + function TryStatement(block, handler, finalizer) { + this.type = syntax_1.Syntax.TryStatement; + this.block = block; + this.handler = handler; + this.finalizer = finalizer; + } + return TryStatement; + }()); + exports.TryStatement = TryStatement; + var UnaryExpression = (function () { + function UnaryExpression(operator, argument) { + this.type = syntax_1.Syntax.UnaryExpression; + this.operator = operator; + this.argument = argument; + this.prefix = true; + } + return UnaryExpression; + }()); + exports.UnaryExpression = UnaryExpression; + var UpdateExpression = (function () { + function UpdateExpression(operator, argument, prefix) { + this.type = syntax_1.Syntax.UpdateExpression; + this.operator = operator; + this.argument = argument; + this.prefix = prefix; + } + return UpdateExpression; + }()); + exports.UpdateExpression = UpdateExpression; + var VariableDeclaration = (function () { + function VariableDeclaration(declarations, kind) { + this.type = syntax_1.Syntax.VariableDeclaration; + this.declarations = declarations; + this.kind = kind; + } + return VariableDeclaration; + }()); + exports.VariableDeclaration = VariableDeclaration; + var VariableDeclarator = (function () { + function VariableDeclarator(id, init) { + this.type = syntax_1.Syntax.VariableDeclarator; + this.id = id; + this.init = init; + } + return VariableDeclarator; + }()); + exports.VariableDeclarator = VariableDeclarator; + var WhileStatement = (function () { + function WhileStatement(test, body) { + this.type = syntax_1.Syntax.WhileStatement; + this.test = test; + this.body = body; + } + return WhileStatement; + }()); + exports.WhileStatement = WhileStatement; + var WithStatement = (function () { + function WithStatement(object, body) { + this.type = syntax_1.Syntax.WithStatement; + this.object = object; + this.body = body; + } + return WithStatement; + }()); + exports.WithStatement = WithStatement; + var YieldExpression = (function () { + function YieldExpression(argument, delegate) { + this.type = syntax_1.Syntax.YieldExpression; + this.argument = argument; + this.delegate = delegate; + } + return YieldExpression; + }()); + exports.YieldExpression = YieldExpression; + + +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var assert_1 = __webpack_require__(9); + var error_handler_1 = __webpack_require__(10); + var messages_1 = __webpack_require__(11); + var Node = __webpack_require__(7); + var scanner_1 = __webpack_require__(12); + var syntax_1 = __webpack_require__(2); + var token_1 = __webpack_require__(13); + var ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder'; + var Parser = (function () { + function Parser(code, options, delegate) { + if (options === void 0) { options = {}; } + this.config = { + range: (typeof options.range === 'boolean') && options.range, + loc: (typeof options.loc === 'boolean') && options.loc, + source: null, + tokens: (typeof options.tokens === 'boolean') && options.tokens, + comment: (typeof options.comment === 'boolean') && options.comment, + tolerant: (typeof options.tolerant === 'boolean') && options.tolerant + }; + if (this.config.loc && options.source && options.source !== null) { + this.config.source = String(options.source); + } + this.delegate = delegate; + this.errorHandler = new error_handler_1.ErrorHandler(); + this.errorHandler.tolerant = this.config.tolerant; + this.scanner = new scanner_1.Scanner(code, this.errorHandler); + this.scanner.trackComment = this.config.comment; + this.operatorPrecedence = { + ')': 0, + ';': 0, + ',': 0, + '=': 0, + ']': 0, + '||': 1, + '&&': 2, + '|': 3, + '^': 4, + '&': 5, + '==': 6, + '!=': 6, + '===': 6, + '!==': 6, + '<': 7, + '>': 7, + '<=': 7, + '>=': 7, + '<<': 8, + '>>': 8, + '>>>': 8, + '+': 9, + '-': 9, + '*': 11, + '/': 11, + '%': 11 + }; + this.lookahead = { + type: 2 /* EOF */, + value: '', + lineNumber: this.scanner.lineNumber, + lineStart: 0, + start: 0, + end: 0 + }; + this.hasLineTerminator = false; + this.context = { + isModule: false, + await: false, + allowIn: true, + allowStrictDirective: true, + allowYield: true, + firstCoverInitializedNameError: null, + isAssignmentTarget: false, + isBindingElement: false, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + labelSet: {}, + strict: false + }; + this.tokens = []; + this.startMarker = { + index: 0, + line: this.scanner.lineNumber, + column: 0 + }; + this.lastMarker = { + index: 0, + line: this.scanner.lineNumber, + column: 0 + }; + this.nextToken(); + this.lastMarker = { + index: this.scanner.index, + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + }; + } + Parser.prototype.throwError = function (messageFormat) { + var values = []; + for (var _i = 1; _i < arguments.length; _i++) { + values[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) { + assert_1.assert(idx < args.length, 'Message reference must be in range'); + return args[idx]; + }); + var index = this.lastMarker.index; + var line = this.lastMarker.line; + var column = this.lastMarker.column + 1; + throw this.errorHandler.createError(index, line, column, msg); + }; + Parser.prototype.tolerateError = function (messageFormat) { + var values = []; + for (var _i = 1; _i < arguments.length; _i++) { + values[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) { + assert_1.assert(idx < args.length, 'Message reference must be in range'); + return args[idx]; + }); + var index = this.lastMarker.index; + var line = this.scanner.lineNumber; + var column = this.lastMarker.column + 1; + this.errorHandler.tolerateError(index, line, column, msg); + }; + // Throw an exception because of the token. + Parser.prototype.unexpectedTokenError = function (token, message) { + var msg = message || messages_1.Messages.UnexpectedToken; + var value; + if (token) { + if (!message) { + msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS : + (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier : + (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber : + (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString : + (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate : + messages_1.Messages.UnexpectedToken; + if (token.type === 4 /* Keyword */) { + if (this.scanner.isFutureReservedWord(token.value)) { + msg = messages_1.Messages.UnexpectedReserved; + } + else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) { + msg = messages_1.Messages.StrictReservedWord; + } + } + } + value = token.value; + } + else { + value = 'ILLEGAL'; + } + msg = msg.replace('%0', value); + if (token && typeof token.lineNumber === 'number') { + var index = token.start; + var line = token.lineNumber; + var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column; + var column = token.start - lastMarkerLineStart + 1; + return this.errorHandler.createError(index, line, column, msg); + } + else { + var index = this.lastMarker.index; + var line = this.lastMarker.line; + var column = this.lastMarker.column + 1; + return this.errorHandler.createError(index, line, column, msg); + } + }; + Parser.prototype.throwUnexpectedToken = function (token, message) { + throw this.unexpectedTokenError(token, message); + }; + Parser.prototype.tolerateUnexpectedToken = function (token, message) { + this.errorHandler.tolerate(this.unexpectedTokenError(token, message)); + }; + Parser.prototype.collectComments = function () { + if (!this.config.comment) { + this.scanner.scanComments(); + } + else { + var comments = this.scanner.scanComments(); + if (comments.length > 0 && this.delegate) { + for (var i = 0; i < comments.length; ++i) { + var e = comments[i]; + var node = void 0; + node = { + type: e.multiLine ? 'BlockComment' : 'LineComment', + value: this.scanner.source.slice(e.slice[0], e.slice[1]) + }; + if (this.config.range) { + node.range = e.range; + } + if (this.config.loc) { + node.loc = e.loc; + } + var metadata = { + start: { + line: e.loc.start.line, + column: e.loc.start.column, + offset: e.range[0] + }, + end: { + line: e.loc.end.line, + column: e.loc.end.column, + offset: e.range[1] + } + }; + this.delegate(node, metadata); + } + } + } + }; + // From internal representation to an external structure + Parser.prototype.getTokenRaw = function (token) { + return this.scanner.source.slice(token.start, token.end); + }; + Parser.prototype.convertToken = function (token) { + var t = { + type: token_1.TokenName[token.type], + value: this.getTokenRaw(token) + }; + if (this.config.range) { + t.range = [token.start, token.end]; + } + if (this.config.loc) { + t.loc = { + start: { + line: this.startMarker.line, + column: this.startMarker.column + }, + end: { + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + } + }; + } + if (token.type === 9 /* RegularExpression */) { + var pattern = token.pattern; + var flags = token.flags; + t.regex = { pattern: pattern, flags: flags }; + } + return t; + }; + Parser.prototype.nextToken = function () { + var token = this.lookahead; + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + this.collectComments(); + if (this.scanner.index !== this.startMarker.index) { + this.startMarker.index = this.scanner.index; + this.startMarker.line = this.scanner.lineNumber; + this.startMarker.column = this.scanner.index - this.scanner.lineStart; + } + var next = this.scanner.lex(); + this.hasLineTerminator = (token.lineNumber !== next.lineNumber); + if (next && this.context.strict && next.type === 3 /* Identifier */) { + if (this.scanner.isStrictModeReservedWord(next.value)) { + next.type = 4 /* Keyword */; + } + } + this.lookahead = next; + if (this.config.tokens && next.type !== 2 /* EOF */) { + this.tokens.push(this.convertToken(next)); + } + return token; + }; + Parser.prototype.nextRegexToken = function () { + this.collectComments(); + var token = this.scanner.scanRegExp(); + if (this.config.tokens) { + // Pop the previous token, '/' or '/=' + // This is added from the lookahead token. + this.tokens.pop(); + this.tokens.push(this.convertToken(token)); + } + // Prime the next lookahead. + this.lookahead = token; + this.nextToken(); + return token; + }; + Parser.prototype.createNode = function () { + return { + index: this.startMarker.index, + line: this.startMarker.line, + column: this.startMarker.column + }; + }; + Parser.prototype.startNode = function (token, lastLineStart) { + if (lastLineStart === void 0) { lastLineStart = 0; } + var column = token.start - token.lineStart; + var line = token.lineNumber; + if (column < 0) { + column += lastLineStart; + line--; + } + return { + index: token.start, + line: line, + column: column + }; + }; + Parser.prototype.finalize = function (marker, node) { + if (this.config.range) { + node.range = [marker.index, this.lastMarker.index]; + } + if (this.config.loc) { + node.loc = { + start: { + line: marker.line, + column: marker.column, + }, + end: { + line: this.lastMarker.line, + column: this.lastMarker.column + } + }; + if (this.config.source) { + node.loc.source = this.config.source; + } + } + if (this.delegate) { + var metadata = { + start: { + line: marker.line, + column: marker.column, + offset: marker.index + }, + end: { + line: this.lastMarker.line, + column: this.lastMarker.column, + offset: this.lastMarker.index + } + }; + this.delegate(node, metadata); + } + return node; + }; + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. + Parser.prototype.expect = function (value) { + var token = this.nextToken(); + if (token.type !== 7 /* Punctuator */ || token.value !== value) { + this.throwUnexpectedToken(token); + } + }; + // Quietly expect a comma when in tolerant mode, otherwise delegates to expect(). + Parser.prototype.expectCommaSeparator = function () { + if (this.config.tolerant) { + var token = this.lookahead; + if (token.type === 7 /* Punctuator */ && token.value === ',') { + this.nextToken(); + } + else if (token.type === 7 /* Punctuator */ && token.value === ';') { + this.nextToken(); + this.tolerateUnexpectedToken(token); + } + else { + this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken); + } + } + else { + this.expect(','); + } + }; + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. + Parser.prototype.expectKeyword = function (keyword) { + var token = this.nextToken(); + if (token.type !== 4 /* Keyword */ || token.value !== keyword) { + this.throwUnexpectedToken(token); + } + }; + // Return true if the next token matches the specified punctuator. + Parser.prototype.match = function (value) { + return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value; + }; + // Return true if the next token matches the specified keyword + Parser.prototype.matchKeyword = function (keyword) { + return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword; + }; + // Return true if the next token matches the specified contextual keyword + // (where an identifier is sometimes a keyword depending on the context) + Parser.prototype.matchContextualKeyword = function (keyword) { + return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword; + }; + // Return true if the next token is an assignment operator + Parser.prototype.matchAssign = function () { + if (this.lookahead.type !== 7 /* Punctuator */) { + return false; + } + var op = this.lookahead.value; + return op === '=' || + op === '*=' || + op === '**=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + }; + // Cover grammar support. + // + // When an assignment expression position starts with an left parenthesis, the determination of the type + // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead) + // or the first comma. This situation also defers the determination of all the expressions nested in the pair. + // + // There are three productions that can be parsed in a parentheses pair that needs to be determined + // after the outermost pair is closed. They are: + // + // 1. AssignmentExpression + // 2. BindingElements + // 3. AssignmentTargets + // + // In order to avoid exponential backtracking, we use two flags to denote if the production can be + // binding element or assignment target. + // + // The three productions have the relationship: + // + // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression + // + // with a single exception that CoverInitializedName when used directly in an Expression, generates + // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the + // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair. + // + // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not + // effect the current flags. This means the production the parser parses is only used as an expression. Therefore + // the CoverInitializedName check is conducted. + // + // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates + // the flags outside of the parser. This means the production the parser parses is used as a part of a potential + // pattern. The CoverInitializedName check is deferred. + Parser.prototype.isolateCoverGrammar = function (parseFunction) { + var previousIsBindingElement = this.context.isBindingElement; + var previousIsAssignmentTarget = this.context.isAssignmentTarget; + var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError; + this.context.isBindingElement = true; + this.context.isAssignmentTarget = true; + this.context.firstCoverInitializedNameError = null; + var result = parseFunction.call(this); + if (this.context.firstCoverInitializedNameError !== null) { + this.throwUnexpectedToken(this.context.firstCoverInitializedNameError); + } + this.context.isBindingElement = previousIsBindingElement; + this.context.isAssignmentTarget = previousIsAssignmentTarget; + this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError; + return result; + }; + Parser.prototype.inheritCoverGrammar = function (parseFunction) { + var previousIsBindingElement = this.context.isBindingElement; + var previousIsAssignmentTarget = this.context.isAssignmentTarget; + var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError; + this.context.isBindingElement = true; + this.context.isAssignmentTarget = true; + this.context.firstCoverInitializedNameError = null; + var result = parseFunction.call(this); + this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement; + this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget; + this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError; + return result; + }; + Parser.prototype.consumeSemicolon = function () { + if (this.match(';')) { + this.nextToken(); + } + else if (!this.hasLineTerminator) { + if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) { + this.throwUnexpectedToken(this.lookahead); + } + this.lastMarker.index = this.startMarker.index; + this.lastMarker.line = this.startMarker.line; + this.lastMarker.column = this.startMarker.column; + } + }; + // https://tc39.github.io/ecma262/#sec-primary-expression + Parser.prototype.parsePrimaryExpression = function () { + var node = this.createNode(); + var expr; + var token, raw; + switch (this.lookahead.type) { + case 3 /* Identifier */: + if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') { + this.tolerateUnexpectedToken(this.lookahead); + } + expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value)); + break; + case 6 /* NumericLiteral */: + case 8 /* StringLiteral */: + if (this.context.strict && this.lookahead.octal) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral); + } + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + token = this.nextToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.Literal(token.value, raw)); + break; + case 1 /* BooleanLiteral */: + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + token = this.nextToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.Literal(token.value === 'true', raw)); + break; + case 5 /* NullLiteral */: + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + token = this.nextToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.Literal(null, raw)); + break; + case 10 /* Template */: + expr = this.parseTemplateLiteral(); + break; + case 7 /* Punctuator */: + switch (this.lookahead.value) { + case '(': + this.context.isBindingElement = false; + expr = this.inheritCoverGrammar(this.parseGroupExpression); + break; + case '[': + expr = this.inheritCoverGrammar(this.parseArrayInitializer); + break; + case '{': + expr = this.inheritCoverGrammar(this.parseObjectInitializer); + break; + case '/': + case '/=': + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + this.scanner.index = this.startMarker.index; + token = this.nextRegexToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags)); + break; + default: + expr = this.throwUnexpectedToken(this.nextToken()); + } + break; + case 4 /* Keyword */: + if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) { + expr = this.parseIdentifierName(); + } + else if (!this.context.strict && this.matchKeyword('let')) { + expr = this.finalize(node, new Node.Identifier(this.nextToken().value)); + } + else { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + if (this.matchKeyword('function')) { + expr = this.parseFunctionExpression(); + } + else if (this.matchKeyword('this')) { + this.nextToken(); + expr = this.finalize(node, new Node.ThisExpression()); + } + else if (this.matchKeyword('class')) { + expr = this.parseClassExpression(); + } + else { + expr = this.throwUnexpectedToken(this.nextToken()); + } + } + break; + default: + expr = this.throwUnexpectedToken(this.nextToken()); + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-array-initializer + Parser.prototype.parseSpreadElement = function () { + var node = this.createNode(); + this.expect('...'); + var arg = this.inheritCoverGrammar(this.parseAssignmentExpression); + return this.finalize(node, new Node.SpreadElement(arg)); + }; + Parser.prototype.parseArrayInitializer = function () { + var node = this.createNode(); + var elements = []; + this.expect('['); + while (!this.match(']')) { + if (this.match(',')) { + this.nextToken(); + elements.push(null); + } + else if (this.match('...')) { + var element = this.parseSpreadElement(); + if (!this.match(']')) { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + this.expect(','); + } + elements.push(element); + } + else { + elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression)); + if (!this.match(']')) { + this.expect(','); + } + } + } + this.expect(']'); + return this.finalize(node, new Node.ArrayExpression(elements)); + }; + // https://tc39.github.io/ecma262/#sec-object-initializer + Parser.prototype.parsePropertyMethod = function (params) { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = params.simple; + var body = this.isolateCoverGrammar(this.parseFunctionSourceElements); + if (this.context.strict && params.firstRestricted) { + this.tolerateUnexpectedToken(params.firstRestricted, params.message); + } + if (this.context.strict && params.stricted) { + this.tolerateUnexpectedToken(params.stricted, params.message); + } + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + return body; + }; + Parser.prototype.parsePropertyMethodFunction = function () { + var isGenerator = false; + var node = this.createNode(); + var previousAllowYield = this.context.allowYield; + this.context.allowYield = true; + var params = this.parseFormalParameters(); + var method = this.parsePropertyMethod(params); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator)); + }; + Parser.prototype.parsePropertyMethodAsyncFunction = function () { + var node = this.createNode(); + var previousAllowYield = this.context.allowYield; + var previousAwait = this.context.await; + this.context.allowYield = false; + this.context.await = true; + var params = this.parseFormalParameters(); + var method = this.parsePropertyMethod(params); + this.context.allowYield = previousAllowYield; + this.context.await = previousAwait; + return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method)); + }; + Parser.prototype.parseObjectPropertyKey = function () { + var node = this.createNode(); + var token = this.nextToken(); + var key; + switch (token.type) { + case 8 /* StringLiteral */: + case 6 /* NumericLiteral */: + if (this.context.strict && token.octal) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral); + } + var raw = this.getTokenRaw(token); + key = this.finalize(node, new Node.Literal(token.value, raw)); + break; + case 3 /* Identifier */: + case 1 /* BooleanLiteral */: + case 5 /* NullLiteral */: + case 4 /* Keyword */: + key = this.finalize(node, new Node.Identifier(token.value)); + break; + case 7 /* Punctuator */: + if (token.value === '[') { + key = this.isolateCoverGrammar(this.parseAssignmentExpression); + this.expect(']'); + } + else { + key = this.throwUnexpectedToken(token); + } + break; + default: + key = this.throwUnexpectedToken(token); + } + return key; + }; + Parser.prototype.isPropertyKey = function (key, value) { + return (key.type === syntax_1.Syntax.Identifier && key.name === value) || + (key.type === syntax_1.Syntax.Literal && key.value === value); + }; + Parser.prototype.parseObjectProperty = function (hasProto) { + var node = this.createNode(); + var token = this.lookahead; + var kind; + var key = null; + var value = null; + var computed = false; + var method = false; + var shorthand = false; + var isAsync = false; + if (token.type === 3 /* Identifier */) { + var id = token.value; + this.nextToken(); + computed = this.match('['); + isAsync = !this.hasLineTerminator && (id === 'async') && + !this.match(':') && !this.match('(') && !this.match('*') && !this.match(','); + key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id)); + } + else if (this.match('*')) { + this.nextToken(); + } + else { + computed = this.match('['); + key = this.parseObjectPropertyKey(); + } + var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead); + if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) { + kind = 'get'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + this.context.allowYield = false; + value = this.parseGetterMethod(); + } + else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) { + kind = 'set'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseSetterMethod(); + } + else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) { + kind = 'init'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseGeneratorMethod(); + method = true; + } + else { + if (!key) { + this.throwUnexpectedToken(this.lookahead); + } + kind = 'init'; + if (this.match(':') && !isAsync) { + if (!computed && this.isPropertyKey(key, '__proto__')) { + if (hasProto.value) { + this.tolerateError(messages_1.Messages.DuplicateProtoProperty); + } + hasProto.value = true; + } + this.nextToken(); + value = this.inheritCoverGrammar(this.parseAssignmentExpression); + } + else if (this.match('(')) { + value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction(); + method = true; + } + else if (token.type === 3 /* Identifier */) { + var id = this.finalize(node, new Node.Identifier(token.value)); + if (this.match('=')) { + this.context.firstCoverInitializedNameError = this.lookahead; + this.nextToken(); + shorthand = true; + var init = this.isolateCoverGrammar(this.parseAssignmentExpression); + value = this.finalize(node, new Node.AssignmentPattern(id, init)); + } + else { + shorthand = true; + value = id; + } + } + else { + this.throwUnexpectedToken(this.nextToken()); + } + } + return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand)); + }; + Parser.prototype.parseObjectInitializer = function () { + var node = this.createNode(); + this.expect('{'); + var properties = []; + var hasProto = { value: false }; + while (!this.match('}')) { + properties.push(this.parseObjectProperty(hasProto)); + if (!this.match('}')) { + this.expectCommaSeparator(); + } + } + this.expect('}'); + return this.finalize(node, new Node.ObjectExpression(properties)); + }; + // https://tc39.github.io/ecma262/#sec-template-literals + Parser.prototype.parseTemplateHead = function () { + assert_1.assert(this.lookahead.head, 'Template literal must start with a template head'); + var node = this.createNode(); + var token = this.nextToken(); + var raw = token.value; + var cooked = token.cooked; + return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail)); + }; + Parser.prototype.parseTemplateElement = function () { + if (this.lookahead.type !== 10 /* Template */) { + this.throwUnexpectedToken(); + } + var node = this.createNode(); + var token = this.nextToken(); + var raw = token.value; + var cooked = token.cooked; + return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail)); + }; + Parser.prototype.parseTemplateLiteral = function () { + var node = this.createNode(); + var expressions = []; + var quasis = []; + var quasi = this.parseTemplateHead(); + quasis.push(quasi); + while (!quasi.tail) { + expressions.push(this.parseExpression()); + quasi = this.parseTemplateElement(); + quasis.push(quasi); + } + return this.finalize(node, new Node.TemplateLiteral(quasis, expressions)); + }; + // https://tc39.github.io/ecma262/#sec-grouping-operator + Parser.prototype.reinterpretExpressionAsPattern = function (expr) { + switch (expr.type) { + case syntax_1.Syntax.Identifier: + case syntax_1.Syntax.MemberExpression: + case syntax_1.Syntax.RestElement: + case syntax_1.Syntax.AssignmentPattern: + break; + case syntax_1.Syntax.SpreadElement: + expr.type = syntax_1.Syntax.RestElement; + this.reinterpretExpressionAsPattern(expr.argument); + break; + case syntax_1.Syntax.ArrayExpression: + expr.type = syntax_1.Syntax.ArrayPattern; + for (var i = 0; i < expr.elements.length; i++) { + if (expr.elements[i] !== null) { + this.reinterpretExpressionAsPattern(expr.elements[i]); + } + } + break; + case syntax_1.Syntax.ObjectExpression: + expr.type = syntax_1.Syntax.ObjectPattern; + for (var i = 0; i < expr.properties.length; i++) { + this.reinterpretExpressionAsPattern(expr.properties[i].value); + } + break; + case syntax_1.Syntax.AssignmentExpression: + expr.type = syntax_1.Syntax.AssignmentPattern; + delete expr.operator; + this.reinterpretExpressionAsPattern(expr.left); + break; + default: + // Allow other node type for tolerant parsing. + break; + } + }; + Parser.prototype.parseGroupExpression = function () { + var expr; + this.expect('('); + if (this.match(')')) { + this.nextToken(); + if (!this.match('=>')) { + this.expect('=>'); + } + expr = { + type: ArrowParameterPlaceHolder, + params: [], + async: false + }; + } + else { + var startToken = this.lookahead; + var params = []; + if (this.match('...')) { + expr = this.parseRestElement(params); + this.expect(')'); + if (!this.match('=>')) { + this.expect('=>'); + } + expr = { + type: ArrowParameterPlaceHolder, + params: [expr], + async: false + }; + } + else { + var arrow = false; + this.context.isBindingElement = true; + expr = this.inheritCoverGrammar(this.parseAssignmentExpression); + if (this.match(',')) { + var expressions = []; + this.context.isAssignmentTarget = false; + expressions.push(expr); + while (this.lookahead.type !== 2 /* EOF */) { + if (!this.match(',')) { + break; + } + this.nextToken(); + if (this.match(')')) { + this.nextToken(); + for (var i = 0; i < expressions.length; i++) { + this.reinterpretExpressionAsPattern(expressions[i]); + } + arrow = true; + expr = { + type: ArrowParameterPlaceHolder, + params: expressions, + async: false + }; + } + else if (this.match('...')) { + if (!this.context.isBindingElement) { + this.throwUnexpectedToken(this.lookahead); + } + expressions.push(this.parseRestElement(params)); + this.expect(')'); + if (!this.match('=>')) { + this.expect('=>'); + } + this.context.isBindingElement = false; + for (var i = 0; i < expressions.length; i++) { + this.reinterpretExpressionAsPattern(expressions[i]); + } + arrow = true; + expr = { + type: ArrowParameterPlaceHolder, + params: expressions, + async: false + }; + } + else { + expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression)); + } + if (arrow) { + break; + } + } + if (!arrow) { + expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions)); + } + } + if (!arrow) { + this.expect(')'); + if (this.match('=>')) { + if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') { + arrow = true; + expr = { + type: ArrowParameterPlaceHolder, + params: [expr], + async: false + }; + } + if (!arrow) { + if (!this.context.isBindingElement) { + this.throwUnexpectedToken(this.lookahead); + } + if (expr.type === syntax_1.Syntax.SequenceExpression) { + for (var i = 0; i < expr.expressions.length; i++) { + this.reinterpretExpressionAsPattern(expr.expressions[i]); + } + } + else { + this.reinterpretExpressionAsPattern(expr); + } + var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]); + expr = { + type: ArrowParameterPlaceHolder, + params: parameters, + async: false + }; + } + } + this.context.isBindingElement = false; + } + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions + Parser.prototype.parseArguments = function () { + this.expect('('); + var args = []; + if (!this.match(')')) { + while (true) { + var expr = this.match('...') ? this.parseSpreadElement() : + this.isolateCoverGrammar(this.parseAssignmentExpression); + args.push(expr); + if (this.match(')')) { + break; + } + this.expectCommaSeparator(); + if (this.match(')')) { + break; + } + } + } + this.expect(')'); + return args; + }; + Parser.prototype.isIdentifierName = function (token) { + return token.type === 3 /* Identifier */ || + token.type === 4 /* Keyword */ || + token.type === 1 /* BooleanLiteral */ || + token.type === 5 /* NullLiteral */; + }; + Parser.prototype.parseIdentifierName = function () { + var node = this.createNode(); + var token = this.nextToken(); + if (!this.isIdentifierName(token)) { + this.throwUnexpectedToken(token); + } + return this.finalize(node, new Node.Identifier(token.value)); + }; + Parser.prototype.parseNewExpression = function () { + var node = this.createNode(); + var id = this.parseIdentifierName(); + assert_1.assert(id.name === 'new', 'New expression must start with `new`'); + var expr; + if (this.match('.')) { + this.nextToken(); + if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') { + var property = this.parseIdentifierName(); + expr = new Node.MetaProperty(id, property); + } + else { + this.throwUnexpectedToken(this.lookahead); + } + } + else { + var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression); + var args = this.match('(') ? this.parseArguments() : []; + expr = new Node.NewExpression(callee, args); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + return this.finalize(node, expr); + }; + Parser.prototype.parseAsyncArgument = function () { + var arg = this.parseAssignmentExpression(); + this.context.firstCoverInitializedNameError = null; + return arg; + }; + Parser.prototype.parseAsyncArguments = function () { + this.expect('('); + var args = []; + if (!this.match(')')) { + while (true) { + var expr = this.match('...') ? this.parseSpreadElement() : + this.isolateCoverGrammar(this.parseAsyncArgument); + args.push(expr); + if (this.match(')')) { + break; + } + this.expectCommaSeparator(); + if (this.match(')')) { + break; + } + } + } + this.expect(')'); + return args; + }; + Parser.prototype.parseLeftHandSideExpressionAllowCall = function () { + var startToken = this.lookahead; + var maybeAsync = this.matchContextualKeyword('async'); + var previousAllowIn = this.context.allowIn; + this.context.allowIn = true; + var expr; + if (this.matchKeyword('super') && this.context.inFunctionBody) { + expr = this.createNode(); + this.nextToken(); + expr = this.finalize(expr, new Node.Super()); + if (!this.match('(') && !this.match('.') && !this.match('[')) { + this.throwUnexpectedToken(this.lookahead); + } + } + else { + expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression); + } + while (true) { + if (this.match('.')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('.'); + var property = this.parseIdentifierName(); + expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property)); + } + else if (this.match('(')) { + var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber); + this.context.isBindingElement = false; + this.context.isAssignmentTarget = false; + var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments(); + expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args)); + if (asyncArrow && this.match('=>')) { + for (var i = 0; i < args.length; ++i) { + this.reinterpretExpressionAsPattern(args[i]); + } + expr = { + type: ArrowParameterPlaceHolder, + params: args, + async: true + }; + } + } + else if (this.match('[')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('['); + var property = this.isolateCoverGrammar(this.parseExpression); + this.expect(']'); + expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property)); + } + else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) { + var quasi = this.parseTemplateLiteral(); + expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi)); + } + else { + break; + } + } + this.context.allowIn = previousAllowIn; + return expr; + }; + Parser.prototype.parseSuper = function () { + var node = this.createNode(); + this.expectKeyword('super'); + if (!this.match('[') && !this.match('.')) { + this.throwUnexpectedToken(this.lookahead); + } + return this.finalize(node, new Node.Super()); + }; + Parser.prototype.parseLeftHandSideExpression = function () { + assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.'); + var node = this.startNode(this.lookahead); + var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() : + this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression); + while (true) { + if (this.match('[')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('['); + var property = this.isolateCoverGrammar(this.parseExpression); + this.expect(']'); + expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property)); + } + else if (this.match('.')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('.'); + var property = this.parseIdentifierName(); + expr = this.finalize(node, new Node.StaticMemberExpression(expr, property)); + } + else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) { + var quasi = this.parseTemplateLiteral(); + expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi)); + } + else { + break; + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-update-expressions + Parser.prototype.parseUpdateExpression = function () { + var expr; + var startToken = this.lookahead; + if (this.match('++') || this.match('--')) { + var node = this.startNode(startToken); + var token = this.nextToken(); + expr = this.inheritCoverGrammar(this.parseUnaryExpression); + if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) { + this.tolerateError(messages_1.Messages.StrictLHSPrefix); + } + if (!this.context.isAssignmentTarget) { + this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); + } + var prefix = true; + expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix)); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + else { + expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall); + if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) { + if (this.match('++') || this.match('--')) { + if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) { + this.tolerateError(messages_1.Messages.StrictLHSPostfix); + } + if (!this.context.isAssignmentTarget) { + this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); + } + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var operator = this.nextToken().value; + var prefix = false; + expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix)); + } + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-unary-operators + Parser.prototype.parseAwaitExpression = function () { + var node = this.createNode(); + this.nextToken(); + var argument = this.parseUnaryExpression(); + return this.finalize(node, new Node.AwaitExpression(argument)); + }; + Parser.prototype.parseUnaryExpression = function () { + var expr; + if (this.match('+') || this.match('-') || this.match('~') || this.match('!') || + this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) { + var node = this.startNode(this.lookahead); + var token = this.nextToken(); + expr = this.inheritCoverGrammar(this.parseUnaryExpression); + expr = this.finalize(node, new Node.UnaryExpression(token.value, expr)); + if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) { + this.tolerateError(messages_1.Messages.StrictDelete); + } + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + else if (this.context.await && this.matchContextualKeyword('await')) { + expr = this.parseAwaitExpression(); + } + else { + expr = this.parseUpdateExpression(); + } + return expr; + }; + Parser.prototype.parseExponentiationExpression = function () { + var startToken = this.lookahead; + var expr = this.inheritCoverGrammar(this.parseUnaryExpression); + if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) { + this.nextToken(); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var left = expr; + var right = this.isolateCoverGrammar(this.parseExponentiationExpression); + expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right)); + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-exp-operator + // https://tc39.github.io/ecma262/#sec-multiplicative-operators + // https://tc39.github.io/ecma262/#sec-additive-operators + // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators + // https://tc39.github.io/ecma262/#sec-relational-operators + // https://tc39.github.io/ecma262/#sec-equality-operators + // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators + // https://tc39.github.io/ecma262/#sec-binary-logical-operators + Parser.prototype.binaryPrecedence = function (token) { + var op = token.value; + var precedence; + if (token.type === 7 /* Punctuator */) { + precedence = this.operatorPrecedence[op] || 0; + } + else if (token.type === 4 /* Keyword */) { + precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0; + } + else { + precedence = 0; + } + return precedence; + }; + Parser.prototype.parseBinaryExpression = function () { + var startToken = this.lookahead; + var expr = this.inheritCoverGrammar(this.parseExponentiationExpression); + var token = this.lookahead; + var prec = this.binaryPrecedence(token); + if (prec > 0) { + this.nextToken(); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var markers = [startToken, this.lookahead]; + var left = expr; + var right = this.isolateCoverGrammar(this.parseExponentiationExpression); + var stack = [left, token.value, right]; + var precedences = [prec]; + while (true) { + prec = this.binaryPrecedence(this.lookahead); + if (prec <= 0) { + break; + } + // Reduce: make a binary expression from the three topmost entries. + while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) { + right = stack.pop(); + var operator = stack.pop(); + precedences.pop(); + left = stack.pop(); + markers.pop(); + var node = this.startNode(markers[markers.length - 1]); + stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right))); + } + // Shift. + stack.push(this.nextToken().value); + precedences.push(prec); + markers.push(this.lookahead); + stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression)); + } + // Final reduce to clean-up the stack. + var i = stack.length - 1; + expr = stack[i]; + var lastMarker = markers.pop(); + while (i > 1) { + var marker = markers.pop(); + var lastLineStart = lastMarker && lastMarker.lineStart; + var node = this.startNode(marker, lastLineStart); + var operator = stack[i - 1]; + expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr)); + i -= 2; + lastMarker = marker; + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-conditional-operator + Parser.prototype.parseConditionalExpression = function () { + var startToken = this.lookahead; + var expr = this.inheritCoverGrammar(this.parseBinaryExpression); + if (this.match('?')) { + this.nextToken(); + var previousAllowIn = this.context.allowIn; + this.context.allowIn = true; + var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression); + this.context.allowIn = previousAllowIn; + this.expect(':'); + var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression); + expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate)); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-assignment-operators + Parser.prototype.checkPatternParam = function (options, param) { + switch (param.type) { + case syntax_1.Syntax.Identifier: + this.validateParam(options, param, param.name); + break; + case syntax_1.Syntax.RestElement: + this.checkPatternParam(options, param.argument); + break; + case syntax_1.Syntax.AssignmentPattern: + this.checkPatternParam(options, param.left); + break; + case syntax_1.Syntax.ArrayPattern: + for (var i = 0; i < param.elements.length; i++) { + if (param.elements[i] !== null) { + this.checkPatternParam(options, param.elements[i]); + } + } + break; + case syntax_1.Syntax.ObjectPattern: + for (var i = 0; i < param.properties.length; i++) { + this.checkPatternParam(options, param.properties[i].value); + } + break; + default: + break; + } + options.simple = options.simple && (param instanceof Node.Identifier); + }; + Parser.prototype.reinterpretAsCoverFormalsList = function (expr) { + var params = [expr]; + var options; + var asyncArrow = false; + switch (expr.type) { + case syntax_1.Syntax.Identifier: + break; + case ArrowParameterPlaceHolder: + params = expr.params; + asyncArrow = expr.async; + break; + default: + return null; + } + options = { + simple: true, + paramSet: {} + }; + for (var i = 0; i < params.length; ++i) { + var param = params[i]; + if (param.type === syntax_1.Syntax.AssignmentPattern) { + if (param.right.type === syntax_1.Syntax.YieldExpression) { + if (param.right.argument) { + this.throwUnexpectedToken(this.lookahead); + } + param.right.type = syntax_1.Syntax.Identifier; + param.right.name = 'yield'; + delete param.right.argument; + delete param.right.delegate; + } + } + else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') { + this.throwUnexpectedToken(this.lookahead); + } + this.checkPatternParam(options, param); + params[i] = param; + } + if (this.context.strict || !this.context.allowYield) { + for (var i = 0; i < params.length; ++i) { + var param = params[i]; + if (param.type === syntax_1.Syntax.YieldExpression) { + this.throwUnexpectedToken(this.lookahead); + } + } + } + if (options.message === messages_1.Messages.StrictParamDupe) { + var token = this.context.strict ? options.stricted : options.firstRestricted; + this.throwUnexpectedToken(token, options.message); + } + return { + simple: options.simple, + params: params, + stricted: options.stricted, + firstRestricted: options.firstRestricted, + message: options.message + }; + }; + Parser.prototype.parseAssignmentExpression = function () { + var expr; + if (!this.context.allowYield && this.matchKeyword('yield')) { + expr = this.parseYieldExpression(); + } + else { + var startToken = this.lookahead; + var token = startToken; + expr = this.parseConditionalExpression(); + if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') { + if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) { + var arg = this.parsePrimaryExpression(); + this.reinterpretExpressionAsPattern(arg); + expr = { + type: ArrowParameterPlaceHolder, + params: [arg], + async: true + }; + } + } + if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) { + // https://tc39.github.io/ecma262/#sec-arrow-function-definitions + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var isAsync = expr.async; + var list = this.reinterpretAsCoverFormalsList(expr); + if (list) { + if (this.hasLineTerminator) { + this.tolerateUnexpectedToken(this.lookahead); + } + this.context.firstCoverInitializedNameError = null; + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = list.simple; + var previousAllowYield = this.context.allowYield; + var previousAwait = this.context.await; + this.context.allowYield = true; + this.context.await = isAsync; + var node = this.startNode(startToken); + this.expect('=>'); + var body = void 0; + if (this.match('{')) { + var previousAllowIn = this.context.allowIn; + this.context.allowIn = true; + body = this.parseFunctionSourceElements(); + this.context.allowIn = previousAllowIn; + } + else { + body = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + var expression = body.type !== syntax_1.Syntax.BlockStatement; + if (this.context.strict && list.firstRestricted) { + this.throwUnexpectedToken(list.firstRestricted, list.message); + } + if (this.context.strict && list.stricted) { + this.tolerateUnexpectedToken(list.stricted, list.message); + } + expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) : + this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression)); + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + this.context.allowYield = previousAllowYield; + this.context.await = previousAwait; + } + } + else { + if (this.matchAssign()) { + if (!this.context.isAssignmentTarget) { + this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); + } + if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) { + var id = expr; + if (this.scanner.isRestrictedWord(id.name)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment); + } + if (this.scanner.isStrictModeReservedWord(id.name)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); + } + } + if (!this.match('=')) { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + else { + this.reinterpretExpressionAsPattern(expr); + } + token = this.nextToken(); + var operator = token.value; + var right = this.isolateCoverGrammar(this.parseAssignmentExpression); + expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right)); + this.context.firstCoverInitializedNameError = null; + } + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-comma-operator + Parser.prototype.parseExpression = function () { + var startToken = this.lookahead; + var expr = this.isolateCoverGrammar(this.parseAssignmentExpression); + if (this.match(',')) { + var expressions = []; + expressions.push(expr); + while (this.lookahead.type !== 2 /* EOF */) { + if (!this.match(',')) { + break; + } + this.nextToken(); + expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression)); + } + expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions)); + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-block + Parser.prototype.parseStatementListItem = function () { + var statement; + this.context.isAssignmentTarget = true; + this.context.isBindingElement = true; + if (this.lookahead.type === 4 /* Keyword */) { + switch (this.lookahead.value) { + case 'export': + if (!this.context.isModule) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration); + } + statement = this.parseExportDeclaration(); + break; + case 'import': + if (!this.context.isModule) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration); + } + statement = this.parseImportDeclaration(); + break; + case 'const': + statement = this.parseLexicalDeclaration({ inFor: false }); + break; + case 'function': + statement = this.parseFunctionDeclaration(); + break; + case 'class': + statement = this.parseClassDeclaration(); + break; + case 'let': + statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement(); + break; + default: + statement = this.parseStatement(); + break; + } + } + else { + statement = this.parseStatement(); + } + return statement; + }; + Parser.prototype.parseBlock = function () { + var node = this.createNode(); + this.expect('{'); + var block = []; + while (true) { + if (this.match('}')) { + break; + } + block.push(this.parseStatementListItem()); + } + this.expect('}'); + return this.finalize(node, new Node.BlockStatement(block)); + }; + // https://tc39.github.io/ecma262/#sec-let-and-const-declarations + Parser.prototype.parseLexicalBinding = function (kind, options) { + var node = this.createNode(); + var params = []; + var id = this.parsePattern(params, kind); + if (this.context.strict && id.type === syntax_1.Syntax.Identifier) { + if (this.scanner.isRestrictedWord(id.name)) { + this.tolerateError(messages_1.Messages.StrictVarName); + } + } + var init = null; + if (kind === 'const') { + if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) { + if (this.match('=')) { + this.nextToken(); + init = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + else { + this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const'); + } + } + } + else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) { + this.expect('='); + init = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + return this.finalize(node, new Node.VariableDeclarator(id, init)); + }; + Parser.prototype.parseBindingList = function (kind, options) { + var list = [this.parseLexicalBinding(kind, options)]; + while (this.match(',')) { + this.nextToken(); + list.push(this.parseLexicalBinding(kind, options)); + } + return list; + }; + Parser.prototype.isLexicalDeclaration = function () { + var state = this.scanner.saveState(); + this.scanner.scanComments(); + var next = this.scanner.lex(); + this.scanner.restoreState(state); + return (next.type === 3 /* Identifier */) || + (next.type === 7 /* Punctuator */ && next.value === '[') || + (next.type === 7 /* Punctuator */ && next.value === '{') || + (next.type === 4 /* Keyword */ && next.value === 'let') || + (next.type === 4 /* Keyword */ && next.value === 'yield'); + }; + Parser.prototype.parseLexicalDeclaration = function (options) { + var node = this.createNode(); + var kind = this.nextToken().value; + assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const'); + var declarations = this.parseBindingList(kind, options); + this.consumeSemicolon(); + return this.finalize(node, new Node.VariableDeclaration(declarations, kind)); + }; + // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns + Parser.prototype.parseBindingRestElement = function (params, kind) { + var node = this.createNode(); + this.expect('...'); + var arg = this.parsePattern(params, kind); + return this.finalize(node, new Node.RestElement(arg)); + }; + Parser.prototype.parseArrayPattern = function (params, kind) { + var node = this.createNode(); + this.expect('['); + var elements = []; + while (!this.match(']')) { + if (this.match(',')) { + this.nextToken(); + elements.push(null); + } + else { + if (this.match('...')) { + elements.push(this.parseBindingRestElement(params, kind)); + break; + } + else { + elements.push(this.parsePatternWithDefault(params, kind)); + } + if (!this.match(']')) { + this.expect(','); + } + } + } + this.expect(']'); + return this.finalize(node, new Node.ArrayPattern(elements)); + }; + Parser.prototype.parsePropertyPattern = function (params, kind) { + var node = this.createNode(); + var computed = false; + var shorthand = false; + var method = false; + var key; + var value; + if (this.lookahead.type === 3 /* Identifier */) { + var keyToken = this.lookahead; + key = this.parseVariableIdentifier(); + var init = this.finalize(node, new Node.Identifier(keyToken.value)); + if (this.match('=')) { + params.push(keyToken); + shorthand = true; + this.nextToken(); + var expr = this.parseAssignmentExpression(); + value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr)); + } + else if (!this.match(':')) { + params.push(keyToken); + shorthand = true; + value = init; + } + else { + this.expect(':'); + value = this.parsePatternWithDefault(params, kind); + } + } + else { + computed = this.match('['); + key = this.parseObjectPropertyKey(); + this.expect(':'); + value = this.parsePatternWithDefault(params, kind); + } + return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand)); + }; + Parser.prototype.parseObjectPattern = function (params, kind) { + var node = this.createNode(); + var properties = []; + this.expect('{'); + while (!this.match('}')) { + properties.push(this.parsePropertyPattern(params, kind)); + if (!this.match('}')) { + this.expect(','); + } + } + this.expect('}'); + return this.finalize(node, new Node.ObjectPattern(properties)); + }; + Parser.prototype.parsePattern = function (params, kind) { + var pattern; + if (this.match('[')) { + pattern = this.parseArrayPattern(params, kind); + } + else if (this.match('{')) { + pattern = this.parseObjectPattern(params, kind); + } + else { + if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding); + } + params.push(this.lookahead); + pattern = this.parseVariableIdentifier(kind); + } + return pattern; + }; + Parser.prototype.parsePatternWithDefault = function (params, kind) { + var startToken = this.lookahead; + var pattern = this.parsePattern(params, kind); + if (this.match('=')) { + this.nextToken(); + var previousAllowYield = this.context.allowYield; + this.context.allowYield = true; + var right = this.isolateCoverGrammar(this.parseAssignmentExpression); + this.context.allowYield = previousAllowYield; + pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right)); + } + return pattern; + }; + // https://tc39.github.io/ecma262/#sec-variable-statement + Parser.prototype.parseVariableIdentifier = function (kind) { + var node = this.createNode(); + var token = this.nextToken(); + if (token.type === 4 /* Keyword */ && token.value === 'yield') { + if (this.context.strict) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); + } + else if (!this.context.allowYield) { + this.throwUnexpectedToken(token); + } + } + else if (token.type !== 3 /* Identifier */) { + if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); + } + else { + if (this.context.strict || token.value !== 'let' || kind !== 'var') { + this.throwUnexpectedToken(token); + } + } + } + else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') { + this.tolerateUnexpectedToken(token); + } + return this.finalize(node, new Node.Identifier(token.value)); + }; + Parser.prototype.parseVariableDeclaration = function (options) { + var node = this.createNode(); + var params = []; + var id = this.parsePattern(params, 'var'); + if (this.context.strict && id.type === syntax_1.Syntax.Identifier) { + if (this.scanner.isRestrictedWord(id.name)) { + this.tolerateError(messages_1.Messages.StrictVarName); + } + } + var init = null; + if (this.match('=')) { + this.nextToken(); + init = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) { + this.expect('='); + } + return this.finalize(node, new Node.VariableDeclarator(id, init)); + }; + Parser.prototype.parseVariableDeclarationList = function (options) { + var opt = { inFor: options.inFor }; + var list = []; + list.push(this.parseVariableDeclaration(opt)); + while (this.match(',')) { + this.nextToken(); + list.push(this.parseVariableDeclaration(opt)); + } + return list; + }; + Parser.prototype.parseVariableStatement = function () { + var node = this.createNode(); + this.expectKeyword('var'); + var declarations = this.parseVariableDeclarationList({ inFor: false }); + this.consumeSemicolon(); + return this.finalize(node, new Node.VariableDeclaration(declarations, 'var')); + }; + // https://tc39.github.io/ecma262/#sec-empty-statement + Parser.prototype.parseEmptyStatement = function () { + var node = this.createNode(); + this.expect(';'); + return this.finalize(node, new Node.EmptyStatement()); + }; + // https://tc39.github.io/ecma262/#sec-expression-statement + Parser.prototype.parseExpressionStatement = function () { + var node = this.createNode(); + var expr = this.parseExpression(); + this.consumeSemicolon(); + return this.finalize(node, new Node.ExpressionStatement(expr)); + }; + // https://tc39.github.io/ecma262/#sec-if-statement + Parser.prototype.parseIfClause = function () { + if (this.context.strict && this.matchKeyword('function')) { + this.tolerateError(messages_1.Messages.StrictFunction); + } + return this.parseStatement(); + }; + Parser.prototype.parseIfStatement = function () { + var node = this.createNode(); + var consequent; + var alternate = null; + this.expectKeyword('if'); + this.expect('('); + var test = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + consequent = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + consequent = this.parseIfClause(); + if (this.matchKeyword('else')) { + this.nextToken(); + alternate = this.parseIfClause(); + } + } + return this.finalize(node, new Node.IfStatement(test, consequent, alternate)); + }; + // https://tc39.github.io/ecma262/#sec-do-while-statement + Parser.prototype.parseDoWhileStatement = function () { + var node = this.createNode(); + this.expectKeyword('do'); + var previousInIteration = this.context.inIteration; + this.context.inIteration = true; + var body = this.parseStatement(); + this.context.inIteration = previousInIteration; + this.expectKeyword('while'); + this.expect('('); + var test = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + } + else { + this.expect(')'); + if (this.match(';')) { + this.nextToken(); + } + } + return this.finalize(node, new Node.DoWhileStatement(body, test)); + }; + // https://tc39.github.io/ecma262/#sec-while-statement + Parser.prototype.parseWhileStatement = function () { + var node = this.createNode(); + var body; + this.expectKeyword('while'); + this.expect('('); + var test = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + body = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + var previousInIteration = this.context.inIteration; + this.context.inIteration = true; + body = this.parseStatement(); + this.context.inIteration = previousInIteration; + } + return this.finalize(node, new Node.WhileStatement(test, body)); + }; + // https://tc39.github.io/ecma262/#sec-for-statement + // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements + Parser.prototype.parseForStatement = function () { + var init = null; + var test = null; + var update = null; + var forIn = true; + var left, right; + var node = this.createNode(); + this.expectKeyword('for'); + this.expect('('); + if (this.match(';')) { + this.nextToken(); + } + else { + if (this.matchKeyword('var')) { + init = this.createNode(); + this.nextToken(); + var previousAllowIn = this.context.allowIn; + this.context.allowIn = false; + var declarations = this.parseVariableDeclarationList({ inFor: true }); + this.context.allowIn = previousAllowIn; + if (declarations.length === 1 && this.matchKeyword('in')) { + var decl = declarations[0]; + if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) { + this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in'); + } + init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var')); + this.nextToken(); + left = init; + right = this.parseExpression(); + init = null; + } + else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) { + init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var')); + this.nextToken(); + left = init; + right = this.parseAssignmentExpression(); + init = null; + forIn = false; + } + else { + init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var')); + this.expect(';'); + } + } + else if (this.matchKeyword('const') || this.matchKeyword('let')) { + init = this.createNode(); + var kind = this.nextToken().value; + if (!this.context.strict && this.lookahead.value === 'in') { + init = this.finalize(init, new Node.Identifier(kind)); + this.nextToken(); + left = init; + right = this.parseExpression(); + init = null; + } + else { + var previousAllowIn = this.context.allowIn; + this.context.allowIn = false; + var declarations = this.parseBindingList(kind, { inFor: true }); + this.context.allowIn = previousAllowIn; + if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) { + init = this.finalize(init, new Node.VariableDeclaration(declarations, kind)); + this.nextToken(); + left = init; + right = this.parseExpression(); + init = null; + } + else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) { + init = this.finalize(init, new Node.VariableDeclaration(declarations, kind)); + this.nextToken(); + left = init; + right = this.parseAssignmentExpression(); + init = null; + forIn = false; + } + else { + this.consumeSemicolon(); + init = this.finalize(init, new Node.VariableDeclaration(declarations, kind)); + } + } + } + else { + var initStartToken = this.lookahead; + var previousAllowIn = this.context.allowIn; + this.context.allowIn = false; + init = this.inheritCoverGrammar(this.parseAssignmentExpression); + this.context.allowIn = previousAllowIn; + if (this.matchKeyword('in')) { + if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) { + this.tolerateError(messages_1.Messages.InvalidLHSInForIn); + } + this.nextToken(); + this.reinterpretExpressionAsPattern(init); + left = init; + right = this.parseExpression(); + init = null; + } + else if (this.matchContextualKeyword('of')) { + if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) { + this.tolerateError(messages_1.Messages.InvalidLHSInForLoop); + } + this.nextToken(); + this.reinterpretExpressionAsPattern(init); + left = init; + right = this.parseAssignmentExpression(); + init = null; + forIn = false; + } + else { + if (this.match(',')) { + var initSeq = [init]; + while (this.match(',')) { + this.nextToken(); + initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression)); + } + init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq)); + } + this.expect(';'); + } + } + } + if (typeof left === 'undefined') { + if (!this.match(';')) { + test = this.parseExpression(); + } + this.expect(';'); + if (!this.match(')')) { + update = this.parseExpression(); + } + } + var body; + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + body = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + var previousInIteration = this.context.inIteration; + this.context.inIteration = true; + body = this.isolateCoverGrammar(this.parseStatement); + this.context.inIteration = previousInIteration; + } + return (typeof left === 'undefined') ? + this.finalize(node, new Node.ForStatement(init, test, update, body)) : + forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) : + this.finalize(node, new Node.ForOfStatement(left, right, body)); + }; + // https://tc39.github.io/ecma262/#sec-continue-statement + Parser.prototype.parseContinueStatement = function () { + var node = this.createNode(); + this.expectKeyword('continue'); + var label = null; + if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) { + var id = this.parseVariableIdentifier(); + label = id; + var key = '$' + id.name; + if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { + this.throwError(messages_1.Messages.UnknownLabel, id.name); + } + } + this.consumeSemicolon(); + if (label === null && !this.context.inIteration) { + this.throwError(messages_1.Messages.IllegalContinue); + } + return this.finalize(node, new Node.ContinueStatement(label)); + }; + // https://tc39.github.io/ecma262/#sec-break-statement + Parser.prototype.parseBreakStatement = function () { + var node = this.createNode(); + this.expectKeyword('break'); + var label = null; + if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) { + var id = this.parseVariableIdentifier(); + var key = '$' + id.name; + if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { + this.throwError(messages_1.Messages.UnknownLabel, id.name); + } + label = id; + } + this.consumeSemicolon(); + if (label === null && !this.context.inIteration && !this.context.inSwitch) { + this.throwError(messages_1.Messages.IllegalBreak); + } + return this.finalize(node, new Node.BreakStatement(label)); + }; + // https://tc39.github.io/ecma262/#sec-return-statement + Parser.prototype.parseReturnStatement = function () { + if (!this.context.inFunctionBody) { + this.tolerateError(messages_1.Messages.IllegalReturn); + } + var node = this.createNode(); + this.expectKeyword('return'); + var hasArgument = (!this.match(';') && !this.match('}') && + !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) || + this.lookahead.type === 8 /* StringLiteral */ || + this.lookahead.type === 10 /* Template */; + var argument = hasArgument ? this.parseExpression() : null; + this.consumeSemicolon(); + return this.finalize(node, new Node.ReturnStatement(argument)); + }; + // https://tc39.github.io/ecma262/#sec-with-statement + Parser.prototype.parseWithStatement = function () { + if (this.context.strict) { + this.tolerateError(messages_1.Messages.StrictModeWith); + } + var node = this.createNode(); + var body; + this.expectKeyword('with'); + this.expect('('); + var object = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + body = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + body = this.parseStatement(); + } + return this.finalize(node, new Node.WithStatement(object, body)); + }; + // https://tc39.github.io/ecma262/#sec-switch-statement + Parser.prototype.parseSwitchCase = function () { + var node = this.createNode(); + var test; + if (this.matchKeyword('default')) { + this.nextToken(); + test = null; + } + else { + this.expectKeyword('case'); + test = this.parseExpression(); + } + this.expect(':'); + var consequent = []; + while (true) { + if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) { + break; + } + consequent.push(this.parseStatementListItem()); + } + return this.finalize(node, new Node.SwitchCase(test, consequent)); + }; + Parser.prototype.parseSwitchStatement = function () { + var node = this.createNode(); + this.expectKeyword('switch'); + this.expect('('); + var discriminant = this.parseExpression(); + this.expect(')'); + var previousInSwitch = this.context.inSwitch; + this.context.inSwitch = true; + var cases = []; + var defaultFound = false; + this.expect('{'); + while (true) { + if (this.match('}')) { + break; + } + var clause = this.parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + this.throwError(messages_1.Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } + this.expect('}'); + this.context.inSwitch = previousInSwitch; + return this.finalize(node, new Node.SwitchStatement(discriminant, cases)); + }; + // https://tc39.github.io/ecma262/#sec-labelled-statements + Parser.prototype.parseLabelledStatement = function () { + var node = this.createNode(); + var expr = this.parseExpression(); + var statement; + if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) { + this.nextToken(); + var id = expr; + var key = '$' + id.name; + if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { + this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name); + } + this.context.labelSet[key] = true; + var body = void 0; + if (this.matchKeyword('class')) { + this.tolerateUnexpectedToken(this.lookahead); + body = this.parseClassDeclaration(); + } + else if (this.matchKeyword('function')) { + var token = this.lookahead; + var declaration = this.parseFunctionDeclaration(); + if (this.context.strict) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction); + } + else if (declaration.generator) { + this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext); + } + body = declaration; + } + else { + body = this.parseStatement(); + } + delete this.context.labelSet[key]; + statement = new Node.LabeledStatement(id, body); + } + else { + this.consumeSemicolon(); + statement = new Node.ExpressionStatement(expr); + } + return this.finalize(node, statement); + }; + // https://tc39.github.io/ecma262/#sec-throw-statement + Parser.prototype.parseThrowStatement = function () { + var node = this.createNode(); + this.expectKeyword('throw'); + if (this.hasLineTerminator) { + this.throwError(messages_1.Messages.NewlineAfterThrow); + } + var argument = this.parseExpression(); + this.consumeSemicolon(); + return this.finalize(node, new Node.ThrowStatement(argument)); + }; + // https://tc39.github.io/ecma262/#sec-try-statement + Parser.prototype.parseCatchClause = function () { + var node = this.createNode(); + this.expectKeyword('catch'); + this.expect('('); + if (this.match(')')) { + this.throwUnexpectedToken(this.lookahead); + } + var params = []; + var param = this.parsePattern(params); + var paramMap = {}; + for (var i = 0; i < params.length; i++) { + var key = '$' + params[i].value; + if (Object.prototype.hasOwnProperty.call(paramMap, key)) { + this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value); + } + paramMap[key] = true; + } + if (this.context.strict && param.type === syntax_1.Syntax.Identifier) { + if (this.scanner.isRestrictedWord(param.name)) { + this.tolerateError(messages_1.Messages.StrictCatchVariable); + } + } + this.expect(')'); + var body = this.parseBlock(); + return this.finalize(node, new Node.CatchClause(param, body)); + }; + Parser.prototype.parseFinallyClause = function () { + this.expectKeyword('finally'); + return this.parseBlock(); + }; + Parser.prototype.parseTryStatement = function () { + var node = this.createNode(); + this.expectKeyword('try'); + var block = this.parseBlock(); + var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null; + var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null; + if (!handler && !finalizer) { + this.throwError(messages_1.Messages.NoCatchOrFinally); + } + return this.finalize(node, new Node.TryStatement(block, handler, finalizer)); + }; + // https://tc39.github.io/ecma262/#sec-debugger-statement + Parser.prototype.parseDebuggerStatement = function () { + var node = this.createNode(); + this.expectKeyword('debugger'); + this.consumeSemicolon(); + return this.finalize(node, new Node.DebuggerStatement()); + }; + // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations + Parser.prototype.parseStatement = function () { + var statement; + switch (this.lookahead.type) { + case 1 /* BooleanLiteral */: + case 5 /* NullLiteral */: + case 6 /* NumericLiteral */: + case 8 /* StringLiteral */: + case 10 /* Template */: + case 9 /* RegularExpression */: + statement = this.parseExpressionStatement(); + break; + case 7 /* Punctuator */: + var value = this.lookahead.value; + if (value === '{') { + statement = this.parseBlock(); + } + else if (value === '(') { + statement = this.parseExpressionStatement(); + } + else if (value === ';') { + statement = this.parseEmptyStatement(); + } + else { + statement = this.parseExpressionStatement(); + } + break; + case 3 /* Identifier */: + statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement(); + break; + case 4 /* Keyword */: + switch (this.lookahead.value) { + case 'break': + statement = this.parseBreakStatement(); + break; + case 'continue': + statement = this.parseContinueStatement(); + break; + case 'debugger': + statement = this.parseDebuggerStatement(); + break; + case 'do': + statement = this.parseDoWhileStatement(); + break; + case 'for': + statement = this.parseForStatement(); + break; + case 'function': + statement = this.parseFunctionDeclaration(); + break; + case 'if': + statement = this.parseIfStatement(); + break; + case 'return': + statement = this.parseReturnStatement(); + break; + case 'switch': + statement = this.parseSwitchStatement(); + break; + case 'throw': + statement = this.parseThrowStatement(); + break; + case 'try': + statement = this.parseTryStatement(); + break; + case 'var': + statement = this.parseVariableStatement(); + break; + case 'while': + statement = this.parseWhileStatement(); + break; + case 'with': + statement = this.parseWithStatement(); + break; + default: + statement = this.parseExpressionStatement(); + break; + } + break; + default: + statement = this.throwUnexpectedToken(this.lookahead); + } + return statement; + }; + // https://tc39.github.io/ecma262/#sec-function-definitions + Parser.prototype.parseFunctionSourceElements = function () { + var node = this.createNode(); + this.expect('{'); + var body = this.parseDirectivePrologues(); + var previousLabelSet = this.context.labelSet; + var previousInIteration = this.context.inIteration; + var previousInSwitch = this.context.inSwitch; + var previousInFunctionBody = this.context.inFunctionBody; + this.context.labelSet = {}; + this.context.inIteration = false; + this.context.inSwitch = false; + this.context.inFunctionBody = true; + while (this.lookahead.type !== 2 /* EOF */) { + if (this.match('}')) { + break; + } + body.push(this.parseStatementListItem()); + } + this.expect('}'); + this.context.labelSet = previousLabelSet; + this.context.inIteration = previousInIteration; + this.context.inSwitch = previousInSwitch; + this.context.inFunctionBody = previousInFunctionBody; + return this.finalize(node, new Node.BlockStatement(body)); + }; + Parser.prototype.validateParam = function (options, param, name) { + var key = '$' + name; + if (this.context.strict) { + if (this.scanner.isRestrictedWord(name)) { + options.stricted = param; + options.message = messages_1.Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { + options.stricted = param; + options.message = messages_1.Messages.StrictParamDupe; + } + } + else if (!options.firstRestricted) { + if (this.scanner.isRestrictedWord(name)) { + options.firstRestricted = param; + options.message = messages_1.Messages.StrictParamName; + } + else if (this.scanner.isStrictModeReservedWord(name)) { + options.firstRestricted = param; + options.message = messages_1.Messages.StrictReservedWord; + } + else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { + options.stricted = param; + options.message = messages_1.Messages.StrictParamDupe; + } + } + /* istanbul ignore next */ + if (typeof Object.defineProperty === 'function') { + Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true }); + } + else { + options.paramSet[key] = true; + } + }; + Parser.prototype.parseRestElement = function (params) { + var node = this.createNode(); + this.expect('...'); + var arg = this.parsePattern(params); + if (this.match('=')) { + this.throwError(messages_1.Messages.DefaultRestParameter); + } + if (!this.match(')')) { + this.throwError(messages_1.Messages.ParameterAfterRestParameter); + } + return this.finalize(node, new Node.RestElement(arg)); + }; + Parser.prototype.parseFormalParameter = function (options) { + var params = []; + var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params); + for (var i = 0; i < params.length; i++) { + this.validateParam(options, params[i], params[i].value); + } + options.simple = options.simple && (param instanceof Node.Identifier); + options.params.push(param); + }; + Parser.prototype.parseFormalParameters = function (firstRestricted) { + var options; + options = { + simple: true, + params: [], + firstRestricted: firstRestricted + }; + this.expect('('); + if (!this.match(')')) { + options.paramSet = {}; + while (this.lookahead.type !== 2 /* EOF */) { + this.parseFormalParameter(options); + if (this.match(')')) { + break; + } + this.expect(','); + if (this.match(')')) { + break; + } + } + } + this.expect(')'); + return { + simple: options.simple, + params: options.params, + stricted: options.stricted, + firstRestricted: options.firstRestricted, + message: options.message + }; + }; + Parser.prototype.matchAsyncFunction = function () { + var match = this.matchContextualKeyword('async'); + if (match) { + var state = this.scanner.saveState(); + this.scanner.scanComments(); + var next = this.scanner.lex(); + this.scanner.restoreState(state); + match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function'); + } + return match; + }; + Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) { + var node = this.createNode(); + var isAsync = this.matchContextualKeyword('async'); + if (isAsync) { + this.nextToken(); + } + this.expectKeyword('function'); + var isGenerator = isAsync ? false : this.match('*'); + if (isGenerator) { + this.nextToken(); + } + var message; + var id = null; + var firstRestricted = null; + if (!identifierIsOptional || !this.match('(')) { + var token = this.lookahead; + id = this.parseVariableIdentifier(); + if (this.context.strict) { + if (this.scanner.isRestrictedWord(token.value)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName); + } + } + else { + if (this.scanner.isRestrictedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictFunctionName; + } + else if (this.scanner.isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictReservedWord; + } + } + } + var previousAllowAwait = this.context.await; + var previousAllowYield = this.context.allowYield; + this.context.await = isAsync; + this.context.allowYield = !isGenerator; + var formalParameters = this.parseFormalParameters(firstRestricted); + var params = formalParameters.params; + var stricted = formalParameters.stricted; + firstRestricted = formalParameters.firstRestricted; + if (formalParameters.message) { + message = formalParameters.message; + } + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = formalParameters.simple; + var body = this.parseFunctionSourceElements(); + if (this.context.strict && firstRestricted) { + this.throwUnexpectedToken(firstRestricted, message); + } + if (this.context.strict && stricted) { + this.tolerateUnexpectedToken(stricted, message); + } + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + this.context.await = previousAllowAwait; + this.context.allowYield = previousAllowYield; + return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) : + this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator)); + }; + Parser.prototype.parseFunctionExpression = function () { + var node = this.createNode(); + var isAsync = this.matchContextualKeyword('async'); + if (isAsync) { + this.nextToken(); + } + this.expectKeyword('function'); + var isGenerator = isAsync ? false : this.match('*'); + if (isGenerator) { + this.nextToken(); + } + var message; + var id = null; + var firstRestricted; + var previousAllowAwait = this.context.await; + var previousAllowYield = this.context.allowYield; + this.context.await = isAsync; + this.context.allowYield = !isGenerator; + if (!this.match('(')) { + var token = this.lookahead; + id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier(); + if (this.context.strict) { + if (this.scanner.isRestrictedWord(token.value)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName); + } + } + else { + if (this.scanner.isRestrictedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictFunctionName; + } + else if (this.scanner.isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictReservedWord; + } + } + } + var formalParameters = this.parseFormalParameters(firstRestricted); + var params = formalParameters.params; + var stricted = formalParameters.stricted; + firstRestricted = formalParameters.firstRestricted; + if (formalParameters.message) { + message = formalParameters.message; + } + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = formalParameters.simple; + var body = this.parseFunctionSourceElements(); + if (this.context.strict && firstRestricted) { + this.throwUnexpectedToken(firstRestricted, message); + } + if (this.context.strict && stricted) { + this.tolerateUnexpectedToken(stricted, message); + } + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + this.context.await = previousAllowAwait; + this.context.allowYield = previousAllowYield; + return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) : + this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator)); + }; + // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive + Parser.prototype.parseDirective = function () { + var token = this.lookahead; + var node = this.createNode(); + var expr = this.parseExpression(); + var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null; + this.consumeSemicolon(); + return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr)); + }; + Parser.prototype.parseDirectivePrologues = function () { + var firstRestricted = null; + var body = []; + while (true) { + var token = this.lookahead; + if (token.type !== 8 /* StringLiteral */) { + break; + } + var statement = this.parseDirective(); + body.push(statement); + var directive = statement.directive; + if (typeof directive !== 'string') { + break; + } + if (directive === 'use strict') { + this.context.strict = true; + if (firstRestricted) { + this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral); + } + if (!this.context.allowStrictDirective) { + this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective); + } + } + else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + return body; + }; + // https://tc39.github.io/ecma262/#sec-method-definitions + Parser.prototype.qualifiedPropertyName = function (token) { + switch (token.type) { + case 3 /* Identifier */: + case 8 /* StringLiteral */: + case 1 /* BooleanLiteral */: + case 5 /* NullLiteral */: + case 6 /* NumericLiteral */: + case 4 /* Keyword */: + return true; + case 7 /* Punctuator */: + return token.value === '['; + default: + break; + } + return false; + }; + Parser.prototype.parseGetterMethod = function () { + var node = this.createNode(); + var isGenerator = false; + var previousAllowYield = this.context.allowYield; + this.context.allowYield = !isGenerator; + var formalParameters = this.parseFormalParameters(); + if (formalParameters.params.length > 0) { + this.tolerateError(messages_1.Messages.BadGetterArity); + } + var method = this.parsePropertyMethod(formalParameters); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator)); + }; + Parser.prototype.parseSetterMethod = function () { + var node = this.createNode(); + var isGenerator = false; + var previousAllowYield = this.context.allowYield; + this.context.allowYield = !isGenerator; + var formalParameters = this.parseFormalParameters(); + if (formalParameters.params.length !== 1) { + this.tolerateError(messages_1.Messages.BadSetterArity); + } + else if (formalParameters.params[0] instanceof Node.RestElement) { + this.tolerateError(messages_1.Messages.BadSetterRestParameter); + } + var method = this.parsePropertyMethod(formalParameters); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator)); + }; + Parser.prototype.parseGeneratorMethod = function () { + var node = this.createNode(); + var isGenerator = true; + var previousAllowYield = this.context.allowYield; + this.context.allowYield = true; + var params = this.parseFormalParameters(); + this.context.allowYield = false; + var method = this.parsePropertyMethod(params); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator)); + }; + // https://tc39.github.io/ecma262/#sec-generator-function-definitions + Parser.prototype.isStartOfExpression = function () { + var start = true; + var value = this.lookahead.value; + switch (this.lookahead.type) { + case 7 /* Punctuator */: + start = (value === '[') || (value === '(') || (value === '{') || + (value === '+') || (value === '-') || + (value === '!') || (value === '~') || + (value === '++') || (value === '--') || + (value === '/') || (value === '/='); // regular expression literal + break; + case 4 /* Keyword */: + start = (value === 'class') || (value === 'delete') || + (value === 'function') || (value === 'let') || (value === 'new') || + (value === 'super') || (value === 'this') || (value === 'typeof') || + (value === 'void') || (value === 'yield'); + break; + default: + break; + } + return start; + }; + Parser.prototype.parseYieldExpression = function () { + var node = this.createNode(); + this.expectKeyword('yield'); + var argument = null; + var delegate = false; + if (!this.hasLineTerminator) { + var previousAllowYield = this.context.allowYield; + this.context.allowYield = false; + delegate = this.match('*'); + if (delegate) { + this.nextToken(); + argument = this.parseAssignmentExpression(); + } + else if (this.isStartOfExpression()) { + argument = this.parseAssignmentExpression(); + } + this.context.allowYield = previousAllowYield; + } + return this.finalize(node, new Node.YieldExpression(argument, delegate)); + }; + // https://tc39.github.io/ecma262/#sec-class-definitions + Parser.prototype.parseClassElement = function (hasConstructor) { + var token = this.lookahead; + var node = this.createNode(); + var kind = ''; + var key = null; + var value = null; + var computed = false; + var method = false; + var isStatic = false; + var isAsync = false; + if (this.match('*')) { + this.nextToken(); + } + else { + computed = this.match('['); + key = this.parseObjectPropertyKey(); + var id = key; + if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) { + token = this.lookahead; + isStatic = true; + computed = this.match('['); + if (this.match('*')) { + this.nextToken(); + } + else { + key = this.parseObjectPropertyKey(); + } + } + if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) { + var punctuator = this.lookahead.value; + if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') { + isAsync = true; + token = this.lookahead; + key = this.parseObjectPropertyKey(); + if (token.type === 3 /* Identifier */ && token.value === 'constructor') { + this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync); + } + } + } + } + var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead); + if (token.type === 3 /* Identifier */) { + if (token.value === 'get' && lookaheadPropertyKey) { + kind = 'get'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + this.context.allowYield = false; + value = this.parseGetterMethod(); + } + else if (token.value === 'set' && lookaheadPropertyKey) { + kind = 'set'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseSetterMethod(); + } + } + else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) { + kind = 'init'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseGeneratorMethod(); + method = true; + } + if (!kind && key && this.match('(')) { + kind = 'init'; + value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction(); + method = true; + } + if (!kind) { + this.throwUnexpectedToken(this.lookahead); + } + if (kind === 'init') { + kind = 'method'; + } + if (!computed) { + if (isStatic && this.isPropertyKey(key, 'prototype')) { + this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype); + } + if (!isStatic && this.isPropertyKey(key, 'constructor')) { + if (kind !== 'method' || !method || (value && value.generator)) { + this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod); + } + if (hasConstructor.value) { + this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor); + } + else { + hasConstructor.value = true; + } + kind = 'constructor'; + } + } + return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic)); + }; + Parser.prototype.parseClassElementList = function () { + var body = []; + var hasConstructor = { value: false }; + this.expect('{'); + while (!this.match('}')) { + if (this.match(';')) { + this.nextToken(); + } + else { + body.push(this.parseClassElement(hasConstructor)); + } + } + this.expect('}'); + return body; + }; + Parser.prototype.parseClassBody = function () { + var node = this.createNode(); + var elementList = this.parseClassElementList(); + return this.finalize(node, new Node.ClassBody(elementList)); + }; + Parser.prototype.parseClassDeclaration = function (identifierIsOptional) { + var node = this.createNode(); + var previousStrict = this.context.strict; + this.context.strict = true; + this.expectKeyword('class'); + var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier(); + var superClass = null; + if (this.matchKeyword('extends')) { + this.nextToken(); + superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall); + } + var classBody = this.parseClassBody(); + this.context.strict = previousStrict; + return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody)); + }; + Parser.prototype.parseClassExpression = function () { + var node = this.createNode(); + var previousStrict = this.context.strict; + this.context.strict = true; + this.expectKeyword('class'); + var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null; + var superClass = null; + if (this.matchKeyword('extends')) { + this.nextToken(); + superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall); + } + var classBody = this.parseClassBody(); + this.context.strict = previousStrict; + return this.finalize(node, new Node.ClassExpression(id, superClass, classBody)); + }; + // https://tc39.github.io/ecma262/#sec-scripts + // https://tc39.github.io/ecma262/#sec-modules + Parser.prototype.parseModule = function () { + this.context.strict = true; + this.context.isModule = true; + this.scanner.isModule = true; + var node = this.createNode(); + var body = this.parseDirectivePrologues(); + while (this.lookahead.type !== 2 /* EOF */) { + body.push(this.parseStatementListItem()); + } + return this.finalize(node, new Node.Module(body)); + }; + Parser.prototype.parseScript = function () { + var node = this.createNode(); + var body = this.parseDirectivePrologues(); + while (this.lookahead.type !== 2 /* EOF */) { + body.push(this.parseStatementListItem()); + } + return this.finalize(node, new Node.Script(body)); + }; + // https://tc39.github.io/ecma262/#sec-imports + Parser.prototype.parseModuleSpecifier = function () { + var node = this.createNode(); + if (this.lookahead.type !== 8 /* StringLiteral */) { + this.throwError(messages_1.Messages.InvalidModuleSpecifier); + } + var token = this.nextToken(); + var raw = this.getTokenRaw(token); + return this.finalize(node, new Node.Literal(token.value, raw)); + }; + // import {} ...; + Parser.prototype.parseImportSpecifier = function () { + var node = this.createNode(); + var imported; + var local; + if (this.lookahead.type === 3 /* Identifier */) { + imported = this.parseVariableIdentifier(); + local = imported; + if (this.matchContextualKeyword('as')) { + this.nextToken(); + local = this.parseVariableIdentifier(); + } + } + else { + imported = this.parseIdentifierName(); + local = imported; + if (this.matchContextualKeyword('as')) { + this.nextToken(); + local = this.parseVariableIdentifier(); + } + else { + this.throwUnexpectedToken(this.nextToken()); + } + } + return this.finalize(node, new Node.ImportSpecifier(local, imported)); + }; + // {foo, bar as bas} + Parser.prototype.parseNamedImports = function () { + this.expect('{'); + var specifiers = []; + while (!this.match('}')) { + specifiers.push(this.parseImportSpecifier()); + if (!this.match('}')) { + this.expect(','); + } + } + this.expect('}'); + return specifiers; + }; + // import ...; + Parser.prototype.parseImportDefaultSpecifier = function () { + var node = this.createNode(); + var local = this.parseIdentifierName(); + return this.finalize(node, new Node.ImportDefaultSpecifier(local)); + }; + // import <* as foo> ...; + Parser.prototype.parseImportNamespaceSpecifier = function () { + var node = this.createNode(); + this.expect('*'); + if (!this.matchContextualKeyword('as')) { + this.throwError(messages_1.Messages.NoAsAfterImportNamespace); + } + this.nextToken(); + var local = this.parseIdentifierName(); + return this.finalize(node, new Node.ImportNamespaceSpecifier(local)); + }; + Parser.prototype.parseImportDeclaration = function () { + if (this.context.inFunctionBody) { + this.throwError(messages_1.Messages.IllegalImportDeclaration); + } + var node = this.createNode(); + this.expectKeyword('import'); + var src; + var specifiers = []; + if (this.lookahead.type === 8 /* StringLiteral */) { + // import 'foo'; + src = this.parseModuleSpecifier(); + } + else { + if (this.match('{')) { + // import {bar} + specifiers = specifiers.concat(this.parseNamedImports()); + } + else if (this.match('*')) { + // import * as foo + specifiers.push(this.parseImportNamespaceSpecifier()); + } + else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) { + // import foo + specifiers.push(this.parseImportDefaultSpecifier()); + if (this.match(',')) { + this.nextToken(); + if (this.match('*')) { + // import foo, * as foo + specifiers.push(this.parseImportNamespaceSpecifier()); + } + else if (this.match('{')) { + // import foo, {bar} + specifiers = specifiers.concat(this.parseNamedImports()); + } + else { + this.throwUnexpectedToken(this.lookahead); + } + } + } + else { + this.throwUnexpectedToken(this.nextToken()); + } + if (!this.matchContextualKeyword('from')) { + var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; + this.throwError(message, this.lookahead.value); + } + this.nextToken(); + src = this.parseModuleSpecifier(); + } + this.consumeSemicolon(); + return this.finalize(node, new Node.ImportDeclaration(specifiers, src)); + }; + // https://tc39.github.io/ecma262/#sec-exports + Parser.prototype.parseExportSpecifier = function () { + var node = this.createNode(); + var local = this.parseIdentifierName(); + var exported = local; + if (this.matchContextualKeyword('as')) { + this.nextToken(); + exported = this.parseIdentifierName(); + } + return this.finalize(node, new Node.ExportSpecifier(local, exported)); + }; + Parser.prototype.parseExportDeclaration = function () { + if (this.context.inFunctionBody) { + this.throwError(messages_1.Messages.IllegalExportDeclaration); + } + var node = this.createNode(); + this.expectKeyword('export'); + var exportDeclaration; + if (this.matchKeyword('default')) { + // export default ... + this.nextToken(); + if (this.matchKeyword('function')) { + // export default function foo () {} + // export default function () {} + var declaration = this.parseFunctionDeclaration(true); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + else if (this.matchKeyword('class')) { + // export default class foo {} + var declaration = this.parseClassDeclaration(true); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + else if (this.matchContextualKeyword('async')) { + // export default async function f () {} + // export default async function () {} + // export default async x => x + var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression(); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + else { + if (this.matchContextualKeyword('from')) { + this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value); + } + // export default {}; + // export default []; + // export default (1 + 2); + var declaration = this.match('{') ? this.parseObjectInitializer() : + this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression(); + this.consumeSemicolon(); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + } + else if (this.match('*')) { + // export * from 'foo'; + this.nextToken(); + if (!this.matchContextualKeyword('from')) { + var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; + this.throwError(message, this.lookahead.value); + } + this.nextToken(); + var src = this.parseModuleSpecifier(); + this.consumeSemicolon(); + exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src)); + } + else if (this.lookahead.type === 4 /* Keyword */) { + // export var f = 1; + var declaration = void 0; + switch (this.lookahead.value) { + case 'let': + case 'const': + declaration = this.parseLexicalDeclaration({ inFor: false }); + break; + case 'var': + case 'class': + case 'function': + declaration = this.parseStatementListItem(); + break; + default: + this.throwUnexpectedToken(this.lookahead); + } + exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null)); + } + else if (this.matchAsyncFunction()) { + var declaration = this.parseFunctionDeclaration(); + exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null)); + } + else { + var specifiers = []; + var source = null; + var isExportFromIdentifier = false; + this.expect('{'); + while (!this.match('}')) { + isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default'); + specifiers.push(this.parseExportSpecifier()); + if (!this.match('}')) { + this.expect(','); + } + } + this.expect('}'); + if (this.matchContextualKeyword('from')) { + // export {default} from 'foo'; + // export {foo} from 'foo'; + this.nextToken(); + source = this.parseModuleSpecifier(); + this.consumeSemicolon(); + } + else if (isExportFromIdentifier) { + // export {default}; // missing fromClause + var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; + this.throwError(message, this.lookahead.value); + } + else { + // export {foo}; + this.consumeSemicolon(); + } + exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source)); + } + return exportDeclaration; + }; + return Parser; + }()); + exports.Parser = Parser; + + +/***/ }, +/* 9 */ +/***/ function(module, exports) { + + "use strict"; + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + Object.defineProperty(exports, "__esModule", { value: true }); + function assert(condition, message) { + /* istanbul ignore if */ + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } + exports.assert = assert; + + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + "use strict"; + /* tslint:disable:max-classes-per-file */ + Object.defineProperty(exports, "__esModule", { value: true }); + var ErrorHandler = (function () { + function ErrorHandler() { + this.errors = []; + this.tolerant = false; + } + ErrorHandler.prototype.recordError = function (error) { + this.errors.push(error); + }; + ErrorHandler.prototype.tolerate = function (error) { + if (this.tolerant) { + this.recordError(error); + } + else { + throw error; + } + }; + ErrorHandler.prototype.constructError = function (msg, column) { + var error = new Error(msg); + try { + throw error; + } + catch (base) { + /* istanbul ignore else */ + if (Object.create && Object.defineProperty) { + error = Object.create(base); + Object.defineProperty(error, 'column', { value: column }); + } + } + /* istanbul ignore next */ + return error; + }; + ErrorHandler.prototype.createError = function (index, line, col, description) { + var msg = 'Line ' + line + ': ' + description; + var error = this.constructError(msg, col); + error.index = index; + error.lineNumber = line; + error.description = description; + return error; + }; + ErrorHandler.prototype.throwError = function (index, line, col, description) { + throw this.createError(index, line, col, description); + }; + ErrorHandler.prototype.tolerateError = function (index, line, col, description) { + var error = this.createError(index, line, col, description); + if (this.tolerant) { + this.recordError(error); + } + else { + throw error; + } + }; + return ErrorHandler; + }()); + exports.ErrorHandler = ErrorHandler; + + +/***/ }, +/* 11 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + // Error messages should be identical to V8. + exports.Messages = { + BadGetterArity: 'Getter must not have any formal parameters', + BadSetterArity: 'Setter must have exactly one formal parameter', + BadSetterRestParameter: 'Setter function argument must not be a rest parameter', + ConstructorIsAsync: 'Class constructor may not be an async method', + ConstructorSpecialMethod: 'Class constructor may not be an accessor', + DeclarationMissingInitializer: 'Missing initializer in %0 declaration', + DefaultRestParameter: 'Unexpected token =', + DuplicateBinding: 'Duplicate binding %0', + DuplicateConstructor: 'A class may only have one constructor', + DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals', + ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer', + GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts', + IllegalBreak: 'Illegal break statement', + IllegalContinue: 'Illegal continue statement', + IllegalExportDeclaration: 'Unexpected token', + IllegalImportDeclaration: 'Unexpected token', + IllegalLanguageModeDirective: 'Illegal \'use strict\' directive in function with non-simple parameter list', + IllegalReturn: 'Illegal return statement', + InvalidEscapedReservedWord: 'Keyword must not contain escaped characters', + InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + InvalidLHSInForLoop: 'Invalid left-hand side in for-loop', + InvalidModuleSpecifier: 'Unexpected token', + InvalidRegExp: 'Invalid regular expression', + LetInLexicalBinding: 'let is disallowed as a lexically bound name', + MissingFromClause: 'Unexpected token', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NewlineAfterThrow: 'Illegal newline after throw', + NoAsAfterImportNamespace: 'Unexpected token', + NoCatchOrFinally: 'Missing catch or finally after try', + ParameterAfterRestParameter: 'Rest parameter must be last formal parameter', + Redeclaration: '%0 \'%1\' has already been declared', + StaticPrototype: 'Classes may not have static property named prototype', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + TemplateOctalLiteral: 'Octal literals are not allowed in template strings.', + UnexpectedEOS: 'Unexpected end of input', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedNumber: 'Unexpected number', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedString: 'Unexpected string', + UnexpectedTemplate: 'Unexpected quasi %0', + UnexpectedToken: 'Unexpected token %0', + UnexpectedTokenIllegal: 'Unexpected token ILLEGAL', + UnknownLabel: 'Undefined label \'%0\'', + UnterminatedRegExp: 'Invalid regular expression: missing /' + }; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var assert_1 = __webpack_require__(9); + var character_1 = __webpack_require__(4); + var messages_1 = __webpack_require__(11); + function hexValue(ch) { + return '0123456789abcdef'.indexOf(ch.toLowerCase()); + } + function octalValue(ch) { + return '01234567'.indexOf(ch); + } + var Scanner = (function () { + function Scanner(code, handler) { + this.source = code; + this.errorHandler = handler; + this.trackComment = false; + this.isModule = false; + this.length = code.length; + this.index = 0; + this.lineNumber = (code.length > 0) ? 1 : 0; + this.lineStart = 0; + this.curlyStack = []; + } + Scanner.prototype.saveState = function () { + return { + index: this.index, + lineNumber: this.lineNumber, + lineStart: this.lineStart + }; + }; + Scanner.prototype.restoreState = function (state) { + this.index = state.index; + this.lineNumber = state.lineNumber; + this.lineStart = state.lineStart; + }; + Scanner.prototype.eof = function () { + return this.index >= this.length; + }; + Scanner.prototype.throwUnexpectedToken = function (message) { + if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; } + return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message); + }; + Scanner.prototype.tolerateUnexpectedToken = function (message) { + if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; } + this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message); + }; + // https://tc39.github.io/ecma262/#sec-comments + Scanner.prototype.skipSingleLineComment = function (offset) { + var comments = []; + var start, loc; + if (this.trackComment) { + comments = []; + start = this.index - offset; + loc = { + start: { + line: this.lineNumber, + column: this.index - this.lineStart - offset + }, + end: {} + }; + } + while (!this.eof()) { + var ch = this.source.charCodeAt(this.index); + ++this.index; + if (character_1.Character.isLineTerminator(ch)) { + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart - 1 + }; + var entry = { + multiLine: false, + slice: [start + offset, this.index - 1], + range: [start, this.index - 1], + loc: loc + }; + comments.push(entry); + } + if (ch === 13 && this.source.charCodeAt(this.index) === 10) { + ++this.index; + } + ++this.lineNumber; + this.lineStart = this.index; + return comments; + } + } + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart + }; + var entry = { + multiLine: false, + slice: [start + offset, this.index], + range: [start, this.index], + loc: loc + }; + comments.push(entry); + } + return comments; + }; + Scanner.prototype.skipMultiLineComment = function () { + var comments = []; + var start, loc; + if (this.trackComment) { + comments = []; + start = this.index - 2; + loc = { + start: { + line: this.lineNumber, + column: this.index - this.lineStart - 2 + }, + end: {} + }; + } + while (!this.eof()) { + var ch = this.source.charCodeAt(this.index); + if (character_1.Character.isLineTerminator(ch)) { + if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) { + ++this.index; + } + ++this.lineNumber; + ++this.index; + this.lineStart = this.index; + } + else if (ch === 0x2A) { + // Block comment ends with '*/'. + if (this.source.charCodeAt(this.index + 1) === 0x2F) { + this.index += 2; + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart + }; + var entry = { + multiLine: true, + slice: [start + 2, this.index - 2], + range: [start, this.index], + loc: loc + }; + comments.push(entry); + } + return comments; + } + ++this.index; + } + else { + ++this.index; + } + } + // Ran off the end of the file - the whole thing is a comment + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart + }; + var entry = { + multiLine: true, + slice: [start + 2, this.index], + range: [start, this.index], + loc: loc + }; + comments.push(entry); + } + this.tolerateUnexpectedToken(); + return comments; + }; + Scanner.prototype.scanComments = function () { + var comments; + if (this.trackComment) { + comments = []; + } + var start = (this.index === 0); + while (!this.eof()) { + var ch = this.source.charCodeAt(this.index); + if (character_1.Character.isWhiteSpace(ch)) { + ++this.index; + } + else if (character_1.Character.isLineTerminator(ch)) { + ++this.index; + if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) { + ++this.index; + } + ++this.lineNumber; + this.lineStart = this.index; + start = true; + } + else if (ch === 0x2F) { + ch = this.source.charCodeAt(this.index + 1); + if (ch === 0x2F) { + this.index += 2; + var comment = this.skipSingleLineComment(2); + if (this.trackComment) { + comments = comments.concat(comment); + } + start = true; + } + else if (ch === 0x2A) { + this.index += 2; + var comment = this.skipMultiLineComment(); + if (this.trackComment) { + comments = comments.concat(comment); + } + } + else { + break; + } + } + else if (start && ch === 0x2D) { + // U+003E is '>' + if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) { + // '-->' is a single-line comment + this.index += 3; + var comment = this.skipSingleLineComment(3); + if (this.trackComment) { + comments = comments.concat(comment); + } + } + else { + break; + } + } + else if (ch === 0x3C && !this.isModule) { + if (this.source.slice(this.index + 1, this.index + 4) === '!--') { + this.index += 4; // `