ts-inquisition
Version:
expect all type errors, except spanish inquisition. Nobody expects spanish inqusition.
124 lines • 11.5 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.runGlobAndModifyTsFiles = void 0;
const json5_1 = __importDefault(require("json5"));
const globby_1 = __importDefault(require("globby"));
const lodash_1 = __importStar(require("lodash"));
const os_1 = __importDefault(require("os"));
// @ts-expect-error
const unpad_1 = __importDefault(require("unpad"));
const path_1 = __importDefault(require("path"));
const typescript_1 = __importDefault(require("typescript"));
const fs_1 = require("fs");
const tsJsonPath = path_1.default.join(process.cwd(), 'tsconfig.json');
console.log('path', tsJsonPath);
const tsconfig = json5_1.default.parse((0, fs_1.readFileSync)(tsJsonPath, 'utf8'));
const compilerOptions = lodash_1.default.omit(tsconfig.compilerOptions, ['moduleResolution']);
compilerOptions.noEmit = true;
compilerOptions.lib = ['lib.dom.d.ts', `${process.cwd()}/types/custom.d.ts`];
function nthIndex(str, pat, n) {
const L = str.length;
let i = -1;
while (n-- && i++ < L) {
i = str.indexOf(pat, i);
if (i < 0)
break;
}
return i;
}
const insertAt = (str, sub, pos) => `${str.slice(0, pos)}${sub}${str.slice(pos)}`;
async function runGlobAndModifyTsFiles(folder, breadcrumbDate = true) {
const globPath = path_1.default.join(process.cwd(), `${folder}/*.{ts,tsx}`);
console.log('runGlobAndModifyTsFiles -> globPath', globPath);
const files = await (0, globby_1.default)([globPath]);
files && addExpectErrors(files, compilerOptions, breadcrumbDate);
}
exports.runGlobAndModifyTsFiles = runGlobAndModifyTsFiles;
function addExpectErrors(fileNames, options, breadcrumbDate) {
const program = typescript_1.default.createProgram(fileNames, options);
const allDiagnostics = typescript_1.default.getPreEmitDiagnostics(program);
const errorLinesByFiles = {};
allDiagnostics.forEach((diagnostic) => {
if (diagnostic.file) {
const { fileName } = diagnostic.file;
if (fileNames.indexOf(fileName) < 0) {
return;
}
if (!errorLinesByFiles[fileName]) {
errorLinesByFiles[fileName] = [];
}
const { line } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
if ([2724, 2307].includes(diagnostic.code)) {
// bad import, let's keep those
return;
}
errorLinesByFiles[fileName].push(line);
}
else {
console.log(`${typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`);
}
});
const breadcrumb = breadcrumbDate
? ' ' + new Date().toLocaleString().split(',')[0]
: '';
Object.entries(errorLinesByFiles).forEach(([file, badLines]) => {
let fileContent = (0, fs_1.readFileSync)(file, 'utf8');
const badLinesDeduped = (0, lodash_1.uniq)(badLines);
let lineShift = 0;
badLinesDeduped.forEach((line) => {
// console.log(`line ${line + 1}`);
const indexOfTheLine = nthIndex(fileContent, os_1.default.EOL, line + lineShift);
const currentLine = fileContent.substring(indexOfTheLine, nthIndex(fileContent, os_1.default.EOL, line + lineShift + 1));
const unpaddedCurrentLine = (0, unpad_1.default)(currentLine);
if (file.endsWith('tsx')) {
const prevChar = fileContent[indexOfTheLine - 1];
// console.log('addExpectErrors -> prevChar', prevChar);
// console.log(
// 'addExpectErrors -> unpaddedCurrentLine',
// unpaddedCurrentLine
// );
if (['>', '}'].includes(prevChar) &&
['<', '{'].includes(unpaddedCurrentLine[0])) {
// this is JSX formatted with prettier
fileContent = insertAt(fileContent, `${os_1.default.EOL}${` {/* @ts-expect-error ${breadcrumb}*/}`.padStart(currentLine.length - unpaddedCurrentLine.length)}`, indexOfTheLine);
}
else {
fileContent = insertAt(fileContent, `${os_1.default.EOL}${` // @ts-expect-error${breadcrumb}`.padStart(currentLine.length - unpaddedCurrentLine.length)}`, indexOfTheLine);
}
}
else {
fileContent = insertAt(fileContent, `${os_1.default.EOL}${` // @ts-expect-error${breadcrumb}`.padStart(currentLine.length - unpaddedCurrentLine.length)}`, indexOfTheLine);
}
lineShift += 1;
});
(0, fs_1.writeFileSync)(file, fileContent, 'utf8');
console.log(`${badLinesDeduped.length} error/s expected in ${file}`);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMtaW5xdWlzaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHMtaW5xdWlzaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBeUI7QUFFekIsb0RBQTJCO0FBQzNCLGlEQUFnQztBQUNoQyw0Q0FBbUI7QUFDbkIsbUJBQW1CO0FBQ25CLGtEQUF5QjtBQUN6QixnREFBdUI7QUFDdkIsNERBQWdEO0FBQ2hELDJCQUFnRDtBQUNoRCxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQTtBQUU1RCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUMvQixNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsaUJBQVksRUFBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUU5RCxNQUFNLGVBQWUsR0FBRyxnQkFBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBO0FBQzlFLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO0FBQzdCLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUE7QUFFNUUsU0FBUyxRQUFRLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxDQUFTO0lBQ25ELE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDVixPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyQixDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FB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