SIGN IN SIGN UP

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