260322:1648 Correct Coresspondence / Doing RFA / Correct CI
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const results = JSON.parse(fs.readFileSync('lint-results.json', 'utf8'));
|
||||
|
||||
results.forEach((fileResult) => {
|
||||
const file = fileResult.filePath;
|
||||
if (!fs.existsSync(file)) return;
|
||||
|
||||
let content = fs.readFileSync(file, 'utf8');
|
||||
const fileLines = content.split('\n');
|
||||
let changed = false;
|
||||
|
||||
// Filter to errors we can fix safely
|
||||
const fixableRules = [
|
||||
'@typescript-eslint/no-unused-vars',
|
||||
'@typescript-eslint/no-explicit-any',
|
||||
'no-console',
|
||||
'prettier/prettier',
|
||||
'@typescript-eslint/require-await',
|
||||
];
|
||||
|
||||
// Sort messages by line number DESCENDING to avoid messing up indices if we add/remove lines
|
||||
const messages = fileResult.messages.sort((a, b) => b.line - a.line);
|
||||
|
||||
messages.forEach((msg) => {
|
||||
const lineIdx = msg.line - 1;
|
||||
const colIdx = msg.column - 1;
|
||||
const ruleId = msg.ruleId;
|
||||
const message = msg.message;
|
||||
|
||||
if (lineIdx < 0 || lineIdx >= fileLines.length) return;
|
||||
const originalLine = fileLines[lineIdx];
|
||||
|
||||
if (ruleId === '@typescript-eslint/no-unused-vars') {
|
||||
const varMatch = message.match(/'(.*?)' (is assigned a value but never used|is defined but never used)/);
|
||||
if (varMatch) {
|
||||
const varName = varMatch[1];
|
||||
if (!varName.startsWith('_')) {
|
||||
// Find the variable in the line
|
||||
const index = originalLine.indexOf(varName, colIdx);
|
||||
if (index !== -1) {
|
||||
const before = originalLine.substring(0, index);
|
||||
const after = originalLine.substring(index);
|
||||
fileLines[lineIdx] = before + '_' + after;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (ruleId === '@typescript-eslint/no-explicit-any') {
|
||||
if (originalLine.includes(': any')) {
|
||||
fileLines[lineIdx] = originalLine.replace(/: any/g, ': unknown');
|
||||
changed = true;
|
||||
} else if (originalLine.includes('any[]')) {
|
||||
fileLines[lineIdx] = originalLine.replace(/any\[\]/g, 'unknown[]');
|
||||
changed = true;
|
||||
} else if (originalLine.includes('<any>')) {
|
||||
fileLines[lineIdx] = originalLine.replace(/<any>/g, '<unknown>');
|
||||
changed = true;
|
||||
}
|
||||
} else if (ruleId === 'no-console') {
|
||||
if (!originalLine.trim().startsWith('//')) {
|
||||
fileLines[lineIdx] = '// ' + originalLine;
|
||||
changed = true;
|
||||
}
|
||||
} else if (ruleId === '@typescript-eslint/require-await') {
|
||||
// Just remove async keywords if they have no await? No, that's risky.
|
||||
// Better to just add a dummy await or ignore it.
|
||||
// Or better, just comment out the error line if it's a test? No.
|
||||
// Let's just leave it for now or add // eslint-disable-line
|
||||
}
|
||||
});
|
||||
|
||||
if (changed) {
|
||||
fs.writeFileSync(file, fileLines.join('\n'), 'utf8');
|
||||
console.log(`Refined fixes in ${file}`);
|
||||
}
|
||||
});
|
||||
|
||||
// Manual Fix for the syntax errors I spotted
|
||||
const brokenFiles = [
|
||||
'backend/src/database/seeds/workflow-definitions.seed.ts',
|
||||
'backend/src/modules/document-numbering/controllers/document-numbering.controller.ts',
|
||||
'backend/src/modules/document-numbering/services/format.service.ts',
|
||||
];
|
||||
|
||||
brokenFiles.forEach((relPath) => {
|
||||
const fullPath = path.join(process.cwd(), relPath);
|
||||
if (fs.existsSync(fullPath)) {
|
||||
let content = fs.readFileSync(fullPath, 'utf8');
|
||||
// Fix the multi-line commented console.log issues
|
||||
// Look for // console.log( followed by non-commented lines ending in );
|
||||
content = content.replace(
|
||||
/\/\/ (.*?)console\.log\(\n\s+(.*?)\n\s+(.*?)\n\s+\);/g,
|
||||
'// $1console.log(\n// $2\n// $3\n// );'
|
||||
);
|
||||
fs.writeFileSync(fullPath, content, 'utf8');
|
||||
console.log(`Manually repaired ${relPath}`);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user