If I Wrote a Linter, Part 1: Architecture

This is how I would architect a modern linter from scratch: focusing on built-in TypeScript support, a straightforward rule development experience, and deduplicating tooling.