Files
TREK/server/scripts/eslint-ratchet.mjs
Maurice 724c88c201 style: format server and shared with prettier
A mechanical prettier --write over server/src, server/tests, server/scripts
and shared/src with the workspaces' .prettierrc; nothing but layout and
import order changes, and every file keeps the same set of imports. shared
is formatted throughout and its format baseline is empty. The server
baseline keeps the 35 files that Prettier would grow past their lint:size
limit (they need a split first, which is not a formatting change), and the
generated entity files stay as their generator writes them.
2026-10-10 21:23:37 +02:00

34 lines
1.8 KiB
JavaScript

#!/usr/bin/env node
/*
* lint:warnings: ESLint errors fail, warnings may only go down.
*
* Several rules in eslint.config.mjs are warnings (no-explicit-any,
* no-unused-vars, no-require-imports, no-await-in-loop, no-non-null-assertion,
* no-console and a few js.recommended ones), set that way because the code
* had hits when they came in, and a warning never fails a build. So this runs
* ESLint over the server with its own config, as `eslint .` does, and counts
* the warnings per rule, separately for src/ and tests/, plus the messages an
* eslint-disable comment silenced as a third group. Each count may not pass
* its entry in scripts/eslint-baseline.json, and an entry above its count
* fails as well until --update lowers it, so a fixed warning cannot come back
* unseen. Any error fails, so the check stands in for `npm run lint:check`,
* and so does a block comment that configures a rule inline: it leaves no
* message to count, so it would otherwise be the free way past the ratchet.
*
* npm run lint:warnings check against the baseline (CI)
* npm run lint:warnings -- --update lower the baseline to today's counts;
* it never raises an entry
*
* The tally lives in scripts/lib/eslint-warnings.mjs at the repository root;
* ESLint comes from this workspace, so the server lints with the major its
* config was written for.
*/
import { check, lintWith } from '../../scripts/lib/eslint-warnings.mjs';
import { runCli } from '../../scripts/lib/ratchet.mjs';
import { ESLint } from 'eslint';
import { fileURLToPath } from 'node:url';
const root = fileURLToPath(new URL('..', import.meta.url));
await runCli('lint:warnings', (args) => check({ root, update: args.includes('--update'), lint: lintWith(ESLint) }));