UNPKG

danger-plugin-no-console

Version:

Danger plugin to prevent merging code that still has `console.log`s inside it.

81 lines (65 loc) 2.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var PATTERN = /console\.(log|error|warn|info)/; var GLOBAL_PATTERN = new RegExp(PATTERN.source, 'g'); var JS_FILE = /\.(js|ts)x?$/i; /** * Danger plugin to prevent merging code that still has `console.log`s inside it. */ exports.default = function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var whitelist, files, contents; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: whitelist = options.whitelist || []; if (Array.isArray(whitelist)) { _context.next = 3; break; } throw new Error('[danger-plugin-no-console] whitelist option has to be an array.'); case 3: files = danger.git.modified_files.concat(danger.git.created_files).filter(function (file) { return JS_FILE.test(file); }); _context.next = 6; return Promise.all(files.map(function (file) { return danger.github.utils.fileContents(file).then(function (content) { return { file, content }; }); })); case 6: contents = _context.sent; contents.forEach(function (_ref2) { var file = _ref2.file, content = _ref2.content; var matches = content.match(GLOBAL_PATTERN); if (!matches) return; matches = matches.filter(function (match) { var singleMatch = PATTERN.exec(match); if (!singleMatch || singleMatch.length === 0) return false; return !whitelist.includes(singleMatch[1]); }); if (matches.length === 0) return; fail(`${matches.length} console statement(s) left in ${file}.`); }); case 8: case 'end': return _context.stop(); } } }, _callee, this); })); function noConsole() { return _ref.apply(this, arguments); } return noConsole; }();