feat!: modernize the toolchain and drop EOL Node versions (#331)
### Overview Modernizes the build and test toolchain, and fixes CI, which has been red on `main` since June. Yarn 1 → 4, Rollup → Vite 8 library mode, Vitest 3 → 4, ESLint 8 → 10 with typescript-eslint 8, TS target ES2020 → ES2022, and the GitHub Actions bumped to their latest majors. Node matrix is 22/24/26 now and `engines.node` is `>=22.12.0`, since 18 and 20 are both EOL. Rollup drops out of the tree entirely — Vite 8 bundles with rolldown. `eslint-config-standard-with-typescript` had to go too, since it's deprecated and pinned to ESLint 8; the config uses typescript-eslint's `recommendedTypeChecked` instead, which also made `eslint-plugin-import`, `-n` and `-promise` unnecessary. I diffed the built output against the old Rollup build to be sure nothing moved: same filenames, byte-identical `.d.ts`, same externals and exports, `PKG_VERSION` still inlined. Declarations come from `tsc --emitDeclarationOnly`, which also keeps type errors failing the build. BREAKING CHANGE: minimum supported Node.js is now 22.12.0. Node 18 went EOL in April 2025, Node 20 in April 2026. BREAKING CHANGE: `@types/node` moved to devDependencies, so it's no longer installed transitively. The public API exposes `Buffer` (e.g. `verifyWebhook(requestBody: string | Buffer)`), so consumers type-checking against those signatures now need `@types/node` themselves. --------- Co-authored-by: Zita Szupera <szuperaz@gmail.com>
O
Oliver Lazoroski committed
dbabec0f003e086a2d19b1a1bf4ff635c4f214cd
Parent: 90e2bbe
Committed by GitHub <noreply@github.com>
on 8/18/2026, 7:46:04 AM