UNPKG

ts-inquisition

Version:

expect all type errors, except spanish inquisition. Nobody expects spanish inqusition.

124 lines 11.5 kB
"use strict"; 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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