mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-02-16 03:13:08 +08:00
Bug fixes:
- utils.js: glob-to-regex conversion now escapes all regex special chars
(+, ^, $, |, (), {}, [], \) before converting * and ? wildcards
- validate-hooks.js: escape sequence processing order corrected —
\\\\ now processed before \\n and \\t to prevent double-processing
- 6 hooks: added process.stdin.setEncoding('utf8') to prevent
multi-byte UTF-8 character corruption at chunk boundaries
(check-console-log, post-edit-format, post-edit-typecheck,
post-edit-console-warn, session-end, evaluate-session)
New tests (37):
- CI validator test suite (tests/ci/validators.test.js):
- validate-agents: 9 tests (real project, frontmatter parsing,
BOM/CRLF, colons in values, missing fields, non-md skip)
- validate-hooks: 13 tests (real project, invalid JSON, invalid
event types, missing fields, async/timeout validation, inline JS
syntax, array commands, legacy format)
- validate-skills: 6 tests (real project, missing SKILL.md, empty
files, non-directory entries)
- validate-commands: 5 tests (real project, empty files, non-md skip)
- validate-rules: 4 tests (real project, empty files)
Total test count: 228 (up from 191)
44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* PostToolUse Hook: Auto-format JS/TS files with Prettier after edits
|
|
*
|
|
* Cross-platform (Windows, macOS, Linux)
|
|
*
|
|
* Runs after Edit tool use. If the edited file is a JS/TS file,
|
|
* formats it with Prettier. Fails silently if Prettier isn't installed.
|
|
*/
|
|
|
|
const { execFileSync } = require('child_process');
|
|
|
|
const MAX_STDIN = 1024 * 1024; // 1MB limit
|
|
let data = '';
|
|
process.stdin.setEncoding('utf8');
|
|
|
|
process.stdin.on('data', chunk => {
|
|
if (data.length < MAX_STDIN) {
|
|
data += chunk;
|
|
}
|
|
});
|
|
|
|
process.stdin.on('end', () => {
|
|
try {
|
|
const input = JSON.parse(data);
|
|
const filePath = input.tool_input?.file_path;
|
|
|
|
if (filePath && /\.(ts|tsx|js|jsx)$/.test(filePath)) {
|
|
try {
|
|
execFileSync('npx', ['prettier', '--write', filePath], {
|
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
timeout: 15000
|
|
});
|
|
} catch {
|
|
// Prettier not installed, file missing, or failed — non-blocking
|
|
}
|
|
}
|
|
} catch {
|
|
// Invalid input — pass through
|
|
}
|
|
|
|
console.log(data);
|
|
});
|