fix: use readFile utility in hooks and add pattern type safety

- Replace raw fs.readFileSync with readFile() from utils in
  check-console-log.js and post-edit-console-warn.js to eliminate
  TOCTOU race conditions (file deleted between existsSync and read)
- Remove redundant existsSync in post-edit-format.js (exec already
  handles missing files via its catch block)
- Resolve path upfront in post-edit-typecheck.js before tsconfig walk
- Add type guard in getGitModifiedFiles() to skip non-string and
  empty patterns before regex compilation
This commit is contained in:
Affaan Mustafa
2026-02-12 15:28:30 -08:00
parent 911d38f686
commit e7b5c62eb7
5 changed files with 14 additions and 9 deletions

View File

@@ -27,9 +27,11 @@ process.stdin.on('end', () => {
const input = JSON.parse(data);
const filePath = input.tool_input?.file_path;
if (filePath && /\.(ts|tsx)$/.test(filePath) && fs.existsSync(filePath)) {
if (filePath && /\.(ts|tsx)$/.test(filePath)) {
const resolvedPath = path.resolve(filePath);
if (!fs.existsSync(resolvedPath)) { console.log(data); return; }
// Find nearest tsconfig.json by walking up (max 20 levels to prevent infinite loop)
let dir = path.dirname(path.resolve(filePath));
let dir = path.dirname(resolvedPath);
const root = path.parse(dir).root;
let depth = 0;