diff options
| author | amankumarsingh77 <amankumarsingh7702@gmail.com> | 2026-07-28 19:10:30 +0530 |
|---|---|---|
| committer | Aman Kumar <145339995+amankumarsingh77@users.noreply.github.com> | 2026-08-02 19:12:46 +0530 |
| commit | 0fa62d8177f2216b95739e3d36f87fc1a95886c5 (patch) | |
| tree | a81b2e461d4cf3a7af7c36d89fa6c9355e3f04bb /scripts/boundary-allowlist.ts | |
| parent | f9dcdf7f6dcdf2979693a9f179eda2b9995d57ae (diff) | |
chore: fail the build on unguarded type assertions
A clean tsc does not prove the absence of casts. This scans src/ for
as any, ts-ignore, non-null assertions, inline object casts, and double
casts, wired into a new npm run check that CI runs as a single step.
The escape hatch is an external allowlist module rather than an inline
comment marker: comments are not used in this codebase, and an entry
carries a count, so adding a new cast to an already-exempted file still
fails until someone raises a number that shows up in the diff. Exactly
one exemption is needed today, for the dynamic sharp import.
scripts/ was gitignored wholesale, so the two new files are un-ignored
individually and everything else dropped there stays ignored.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'scripts/boundary-allowlist.ts')
| -rw-r--r-- | scripts/boundary-allowlist.ts | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/scripts/boundary-allowlist.ts b/scripts/boundary-allowlist.ts new file mode 100644 index 0000000..be6816f --- /dev/null +++ b/scripts/boundary-allowlist.ts @@ -0,0 +1,16 @@ +export type Exemption = { + readonly path: string; + readonly rule: string; + readonly count: number; + readonly reason: string; +}; + +export const ALLOWLIST: ReadonlyArray<Exemption> = [ + { + path: "src/util/sharp-shim.ts", + rule: "inline-object-cast", + count: 1, + reason: + "sharp is an optional dependency resolved by a dynamic import, so its shape is unknown at compile time; the cast only claims an optional .default and every value read off it is re-checked with typeof before use", + }, +]; |
