ts-ignore
Version:
ignore typescript errors
119 lines (90 loc) • 9.98 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
require("core-js/modules/es.symbol.description");
require("core-js/modules/es.array.iterator");
require("core-js/modules/es.array.map");
require("core-js/modules/es.array.splice");
require("core-js/modules/es.object.values");
require("core-js/modules/es.promise");
require("core-js/modules/es.string.match");
require("core-js/modules/es.string.split");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _execa = _interopRequireDefault(require("execa"));
var _runtime = require("babel-plugin-ts-optchain/lib/runtime");
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _ora = _interopRequireDefault(require("ora"));
var _path = _interopRequireDefault(require("path"));
var _pkgDir = _interopRequireDefault(require("pkg-dir"));
var _command = require("@oclif/command");
var _bluebird = require("bluebird");
const rootPath = _pkgDir.default.sync(process.cwd()) || process.cwd();
class TSIgnore extends _command.Command {
run() {
return (0, _asyncToGenerator2.default)(function* () {
const spinner = (0, _ora.default)();
spinner.start('finding errors');
const files = {};
const lines = (yield (0, _execa.default)('tsc', ['--noEmit'], {
cwd: rootPath
}).catch(err => {
if (err.stdout) return err;
throw err;
})).stdout.split('\n');
spinner.start('fixing errors');
let count = 0;
yield (0, _bluebird.mapSeries)(lines,
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(function* (line) {
const _ref2 = line.match(/(.+\.tsx?)\((\d+),\d+\): error TS\d{4}: /) || [null, null, null],
_ref3 = (0, _slicedToArray2.default)(_ref2, 3),
filePath = _ref3[1],
lineNumber = _ref3[2];
if (!filePath) return;
if (!(filePath in files)) {
files[filePath] = {
count: 0,
lines: (yield _fsExtra.default.readFile(filePath)).toString().split('\n'),
path: _path.default.resolve(process.cwd(), filePath)
};
}
++count;
const file = files[filePath];
const padding = (0, _runtime.oc)(file.lines[Number(lineNumber) + file.count - 1].match(/^ */), [], [''])[0].length;
file.lines.splice(Number(lineNumber) + file.count - 1, 0, `${Array(padding).fill(' ').join('')}// @ts-ignore`);
++file.count;
});
return function (_x) {
return _ref.apply(this, arguments);
};
}());
yield Promise.all(Object.values(files).map(
/*#__PURE__*/
function () {
var _ref4 = (0, _asyncToGenerator2.default)(function* (file) {
yield _fsExtra.default.writeFile(file.path, file.lines.join('\n'));
});
return function (_x2) {
return _ref4.apply(this, arguments);
};
}()));
spinner.succeed(`fixed ${count} errors`);
})();
}
}
exports.default = TSIgnore;
TSIgnore.description = 'ignore typescript errors';
TSIgnore.flags = {
help: _command.flags.help({
char: 'h'
}),
version: _command.flags.version({
char: 'v'
})
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJyb290UGF0aCIsInBrZ0RpciIsInN5bmMiLCJwcm9jZXNzIiwiY3dkIiwiVFNJZ25vcmUiLCJDb21tYW5kIiwicnVuIiwic3Bpbm5lciIsInN0YXJ0IiwiZmlsZXMiLCJsaW5lcyIsImNhdGNoIiwiZXJyIiwic3Rkb3V0Iiwic3BsaXQiLCJjb3VudCIsImxpbmUiLCJtYXRjaCIsImZpbGVQYXRoIiwibGluZU51bWJlciIsImZzIiwicmVhZEZpbGUiLCJ0b1N0cmluZyIsInBhdGgiLCJyZXNvbHZlIiwiZmlsZSIsInBhZGRpbmciLCJOdW1iZXIiLCJsZW5ndGgiLCJzcGxpY2UiLCJBcnJheSIsImZpbGwiLCJqb2luIiwiUHJvbWlzZSIsImFsbCIsIk9iamVjdCIsInZhbHVlcyIsIm1hcCIsIndyaXRlRmlsZSIsInN1Y2NlZWQiLCJkZXNjcmlwdGlvbiIsImZsYWdzIiwiaGVscCIsImNoYXIiLCJ2ZXJzaW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVlBLE1BQU1BLFFBQVEsR0FBR0MsZ0JBQU9DLElBQVAsQ0FBWUMsT0FBTyxDQUFDQyxHQUFSLEVBQVosS0FBOEJELE9BQU8sQ0FBQ0MsR0FBUixFQUEvQzs7QUFFZSxNQUFNQyxRQUFOLFNBQXVCQyxnQkFBdkIsQ0FBK0I7QUFRdENDLEVBQUFBLEdBQU4sR0FBWTtBQUFBO0FBQ1YsWUFBTUMsT0FBTyxHQUFHLG1CQUFoQjtBQUNBQSxNQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBYyxnQkFBZDtBQUNBLFlBQU1DLEtBQVksR0FBRyxFQUFyQjtBQUNBLFlBQU1DLEtBQUssR0FBRyxPQUFPLG9CQUFNLEtBQU4sRUFBYSxDQUFDLFVBQUQsQ0FBYixFQUEyQjtBQUFFUCxRQUFBQSxHQUFHLEVBQUVKO0FBQVAsT0FBM0IsRUFBOENZLEtBQTlD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IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7IG9jIH0gZnJvbSAndHMtb3B0Y2hhaW4ubWFjcm8nO1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHBrZ0RpciBmcm9tICdwa2ctZGlyJztcbmltcG9ydCB7IENvbW1hbmQsIGZsYWdzIH0gZnJvbSAnQG9jbGlmL2NvbW1hbmQnO1xuaW1wb3J0IHsgbWFwU2VyaWVzIH0gZnJvbSAnYmx1ZWJpcmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGUge1xuICBjb3VudDogbnVtYmVyO1xuICBsaW5lczogc3RyaW5nW107XG4gIHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlcyB7XG4gIFtrZXk6IHN0cmluZ106IEZpbGU7XG59XG5cbmNvbnN0IHJvb3RQYXRoID0gcGtnRGlyLnN5bmMocHJvY2Vzcy5jd2QoKSkgfHwgcHJvY2Vzcy5jd2QoKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVFNJZ25vcmUgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gJ2lnbm9yZSB0eXBlc2NyaXB0IGVycm9ycyc7XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIGhlbHA6IGZsYWdzLmhlbHAoeyBjaGFyOiAnaCcgfSksXG4gICAgdmVyc2lvbjogZmxhZ3MudmVyc2lvbih7IGNoYXI6ICd2JyB9KVxuICB9O1xuXG4gIGFzeW5jIHJ1bigpIHtcbiAgICBjb25zdCBzcGlubmVyID0gb3JhKCk7XG4gICAgc3Bpbm5lci5zdGFydCgnZmluZGluZyBlcnJvcnMnKTtcbiAgICBjb25zdCBmaWxlczogRmlsZXMgPSB7fTtcbiAgICBjb25zdCBsaW5lcyA9IChhd2FpdCBleGVjYSgndHNjJywgWyctLW5vRW1pdCddLCB7IGN3ZDogcm9vdFBhdGggfSkuY2F0Y2goXG4gICAgICBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyLnN0ZG91dCkgcmV0dXJuIGVycjtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICkpLnN0ZG91dC5zcGxpdCgnXFxuJyk7XG4gICAgc3Bpbm5lci5zdGFydCgnZml4aW5nIGVycm9ycycpO1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgYXdhaXQgbWFwU2VyaWVzKGxpbmVzLCBhc3luYyAobGluZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBbLCBmaWxlUGF0aCwgbGluZU51bWJlcl0gPSBsaW5lLm1hdGNoKFxuICAgICAgICAvKC4rXFwudHN4PylcXCgoXFxkKyksXFxkK1xcKTogZXJyb3IgVFNcXGR7NH06IC9cbiAgICAgICkgfHwgW251bGwsIG51bGwsIG51bGxdO1xuICAgICAgaWYgKCFmaWxlUGF0aCkgcmV0dXJuO1xuICAgICAgaWYgKCEoZmlsZVBhdGggaW4gZmlsZXMpKSB7XG4gICAgICAgIGZpbGVzW2ZpbGVQYXRoXSA9IHtcbiAgICAgICAgICBjb3VudDogMCxcbiAgICAgICAgICBsaW5lczogKGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVQYXRoKSkudG9TdHJpbmcoKS5zcGxpdCgnXFxuJyksXG4gICAgICAgICAgcGF0aDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGZpbGVQYXRoKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgKytjb3VudDtcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1tmaWxlUGF0aF07XG4gICAgICBjb25zdCBwYWRkaW5nOiBudW1iZXIgPSBvYyhcbiAgICAgICAgZmlsZS5saW5lc1tOdW1iZXIobGluZU51bWJlcikgKyBmaWxlLmNvdW50IC0gMV0ubWF0Y2goL14gKi8pXG4gICAgICApKFsnJ10pWzBdLmxlbmd0aDtcbiAgICAgIGZpbGUubGluZXMuc3BsaWNlKFxuICAgICAgICBOdW1iZXIobGluZU51bWJlcikgKyBmaWxlLmNvdW50IC0gMSxcbiAgICAgICAgMCxcbiAgICAgICAgYCR7QXJyYXkocGFkZGluZylcbiAgICAgICAgICAuZmlsbCgnICcpXG4gICAgICAgICAgLmpvaW4oJycpfS8vIEB0cy1pZ25vcmVgXG4gICAgICApO1xuICAgICAgKytmaWxlLmNvdW50O1xuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhmaWxlcykubWFwKGFzeW5jIChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlLnBhdGgsIGZpbGUubGluZXMuam9pbignXFxuJykpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHNwaW5uZXIuc3VjY2VlZChgZml4ZWQgJHtjb3VudH0gZXJyb3JzYCk7XG4gIH1cbn1cbiJdfQ==