JezK
Edit File: autoclean.js
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.clean = clean; exports.hasWrapper = hasWrapper; exports.requireLockfile = exports.noArguments = void 0; exports.run = run; exports.setFlags = setFlags; function _regenerator() { var data = _interopRequireDefault(require("@babel/runtime/regenerator")); _regenerator = function _regenerator() { return data; }; return data; } function _asyncToGenerator2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); _asyncToGenerator2 = function _asyncToGenerator2() { return data; }; return data; } function _index() { var data = require("../../registries/index.js"); _index = function _index() { return data; }; return data; } function _filter() { var data = require("../../util/filter.js"); _filter = function _filter() { return data; }; return data; } function _constants() { var data = require("../../constants.js"); _constants = function _constants() { return data; }; return data; } function fs() { var data = _interopRequireWildcard(require("../../util/fs.js")); fs = function fs() { return data; }; return data; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } var invariant = require('invariant'); var path = require('path'); var requireLockfile = true; exports.requireLockfile = requireLockfile; var noArguments = true; exports.noArguments = noArguments; var DEFAULT_FILTER = "\n# test directories\n__tests__\ntest\ntests\npowered-test\n\n# asset directories\ndocs\ndoc\nwebsite\nimages\nassets\n\n# examples\nexample\nexamples\n\n# code coverage directories\ncoverage\n.nyc_output\n\n# build scripts\nMakefile\nGulpfile.js\nGruntfile.js\n\n# configs\nappveyor.yml\ncircle.yml\ncodeship-services.yml\ncodeship-steps.yml\nwercker.yml\n.tern-project\n.gitattributes\n.editorconfig\n.*ignore\n.eslintrc\n.jshintrc\n.flowconfig\n.documentup.json\n.yarn-metadata.json\n.travis.yml\n\n# misc\n*.md\n".trim(); function clean(_x, _x2) { return _clean.apply(this, arguments); } function _clean() { _clean = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee(config, reporter) { var loc, file, lines, filters, removedFiles, removedSize, locs, _iterator, _step, registryFolder, workspaceRootFolder, manifest, workspaces, _i, _Object$keys, workspaceName, _iterator2, _step2, name, registry, _iterator3, _step3, folder, spinner, files, _sortFilter, ignoreFiles, tick, _iterator4, _step4, _file, _loc, stat, _iterator5, _step5, _file2, _loc2; return _regenerator()["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: loc = path.join(config.lockfileFolder, _constants().CLEAN_FILENAME); _context.next = 3; return fs().readFile(loc); case 3: file = _context.sent; lines = file.split('\n'); filters = (0, _filter().ignoreLinesToRegex)(lines); removedFiles = 0; removedSize = 0; // build list of possible module folders locs = new Set(); _iterator = _createForOfIteratorHelper(config.registryFolders); try { for (_iterator.s(); !(_step = _iterator.n()).done;) { registryFolder = _step.value; locs.add(path.resolve(config.lockfileFolder, registryFolder)); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } workspaceRootFolder = config.workspaceRootFolder; if (!workspaceRootFolder) { _context.next = 21; break; } _context.next = 15; return config.findManifest(workspaceRootFolder, false); case 15: manifest = _context.sent; invariant(manifest && manifest.workspaces, 'We must find a manifest with a "workspaces" property'); _context.next = 19; return config.resolveWorkspaces(workspaceRootFolder, manifest); case 19: workspaces = _context.sent; for (_i = 0, _Object$keys = Object.keys(workspaces); _i < _Object$keys.length; _i++) { workspaceName = _Object$keys[_i]; _iterator2 = _createForOfIteratorHelper(_index().registryNames); try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { name = _step2.value; registry = config.registries[name]; locs.add(path.join(workspaces[workspaceName].loc, registry.folder)); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } case 21: _iterator3 = _createForOfIteratorHelper(locs); _context.prev = 22; _iterator3.s(); case 24: if ((_step3 = _iterator3.n()).done) { _context.next = 79; break; } folder = _step3.value; _context.next = 28; return fs().exists(folder); case 28: if (_context.sent) { _context.next = 30; break; } return _context.abrupt("continue", 77); case 30: spinner = reporter.activity(); _context.next = 33; return fs().walk(folder); case 33: files = _context.sent; _sortFilter = (0, _filter().sortFilter)(files, filters), ignoreFiles = _sortFilter.ignoreFiles; spinner.end(); tick = reporter.progress(ignoreFiles.size); // TODO make sure `main` field of all modules isn't ignored _iterator4 = _createForOfIteratorHelper(ignoreFiles); _context.prev = 38; _iterator4.s(); case 40: if ((_step4 = _iterator4.n()).done) { _context.next = 50; break; } _file = _step4.value; _loc = path.join(folder, _file); _context.next = 45; return fs().lstat(_loc); case 45: stat = _context.sent; removedSize += stat.size; removedFiles++; case 48: _context.next = 40; break; case 50: _context.next = 55; break; case 52: _context.prev = 52; _context.t0 = _context["catch"](38); _iterator4.e(_context.t0); case 55: _context.prev = 55; _iterator4.f(); return _context.finish(55); case 58: _iterator5 = _createForOfIteratorHelper(ignoreFiles); _context.prev = 59; _iterator5.s(); case 61: if ((_step5 = _iterator5.n()).done) { _context.next = 69; break; } _file2 = _step5.value; _loc2 = path.join(folder, _file2); _context.next = 66; return fs().unlink(_loc2); case 66: tick(); case 67: _context.next = 61; break; case 69: _context.next = 74; break; case 71: _context.prev = 71; _context.t1 = _context["catch"](59); _iterator5.e(_context.t1); case 74: _context.prev = 74; _iterator5.f(); return _context.finish(74); case 77: _context.next = 24; break; case 79: _context.next = 84; break; case 81: _context.prev = 81; _context.t2 = _context["catch"](22); _iterator3.e(_context.t2); case 84: _context.prev = 84; _iterator3.f(); return _context.finish(84); case 87: return _context.abrupt("return", { removedFiles: removedFiles, removedSize: removedSize }); case 88: case "end": return _context.stop(); } }, _callee, null, [[22, 81, 84, 87], [38, 52, 55, 58], [59, 71, 74, 77]]); })); return _clean.apply(this, arguments); } function runInit(_x3, _x4) { return _runInit.apply(this, arguments); } function _runInit() { _runInit = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee2(cwd, reporter) { var cleanLoc; return _regenerator()["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: reporter.step(1, 1, reporter.lang('cleanCreatingFile', _constants().CLEAN_FILENAME)); cleanLoc = path.join(cwd, _constants().CLEAN_FILENAME); _context2.next = 4; return fs().writeFile(cleanLoc, "".concat(DEFAULT_FILTER, "\n"), { flag: 'wx' }); case 4: reporter.info(reporter.lang('cleanCreatedFile', _constants().CLEAN_FILENAME)); case 5: case "end": return _context2.stop(); } }, _callee2); })); return _runInit.apply(this, arguments); } function runAutoClean(_x5, _x6) { return _runAutoClean.apply(this, arguments); } function _runAutoClean() { _runAutoClean = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee3(config, reporter) { var _yield$clean, removedFiles, removedSize; return _regenerator()["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: reporter.step(1, 1, reporter.lang('cleaning')); _context3.next = 3; return clean(config, reporter); case 3: _yield$clean = _context3.sent; removedFiles = _yield$clean.removedFiles; removedSize = _yield$clean.removedSize; reporter.info(reporter.lang('cleanRemovedFiles', removedFiles)); reporter.info(reporter.lang('cleanSavedSize', Number((removedSize / 1024 / 1024).toFixed(2)))); case 8: case "end": return _context3.stop(); } }, _callee3); })); return _runAutoClean.apply(this, arguments); } function checkForCleanFile(_x7) { return _checkForCleanFile.apply(this, arguments); } function _checkForCleanFile() { _checkForCleanFile = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee4(cwd) { var cleanLoc, exists; return _regenerator()["default"].wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: cleanLoc = path.join(cwd, _constants().CLEAN_FILENAME); _context4.next = 3; return fs().exists(cleanLoc); case 3: exists = _context4.sent; return _context4.abrupt("return", exists); case 5: case "end": return _context4.stop(); } }, _callee4); })); return _checkForCleanFile.apply(this, arguments); } function run(_x8, _x9, _x10, _x11, _x12) { return _run.apply(this, arguments); } function _run() { _run = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee5(config, reporter, commander, flags, args) { var cleanFileExists; return _regenerator()["default"].wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return checkForCleanFile(config.cwd); case 2: cleanFileExists = _context5.sent; if (!(flags.init && cleanFileExists)) { _context5.next = 7; break; } reporter.info(reporter.lang('cleanAlreadyExists', _constants().CLEAN_FILENAME)); _context5.next = 18; break; case 7: if (!flags.init) { _context5.next = 12; break; } _context5.next = 10; return runInit(config.cwd, reporter); case 10: _context5.next = 18; break; case 12: if (!(flags.force && cleanFileExists)) { _context5.next = 17; break; } _context5.next = 15; return runAutoClean(config, reporter); case 15: _context5.next = 18; break; case 17: if (cleanFileExists) { reporter.info(reporter.lang('cleanRequiresForce', _constants().CLEAN_FILENAME)); } else { reporter.info(reporter.lang('cleanDoesNotExist', _constants().CLEAN_FILENAME)); } case 18: case "end": return _context5.stop(); } }, _callee5); })); return _run.apply(this, arguments); } function setFlags(commander) { commander.description('Cleans and removes unnecessary files from package dependencies.'); commander.usage('autoclean [flags]'); commander.option('-I, --init', "Create \"".concat(_constants().CLEAN_FILENAME, "\" file with the default entries.")); commander.option('-F, --force', "Run autoclean using the existing \"".concat(_constants().CLEAN_FILENAME, "\" file.")); } function hasWrapper(commander) { return true; } //# sourceMappingURL=autoclean.js.map