Skip to content

Node 24 + dependency upgrade - #72

Merged
dickhardt merged 6 commits into
mainfrom
chore/deps-prune
Sep 6, 2026
Merged

Node 24 + dependency upgrade#72
dickhardt merged 6 commits into
mainfrom
chore/deps-prune

Conversation

@dickhardt

Copy link
Copy Markdown
Member

Stacked branches chore/node24 → chore/deps-latest → chore/deps-prune: root toolchain and CI on Node 24 (published packages keep their engines floors, see #70); 55 dependency bumps across root + 16 workspaces (TS 6, lerna 10, mocha 12, chai 6, vite 8, adapter-auto 7, plugin-vue 6, esbuild 0.28); 20 removals/moves (rimraf → rm -rf, esm, npm-run-all, unused cors/swr/dotenv/tslib…), 7 undeclared-but-imported deps declared; identifier/vue exports maps gain a types condition; web-identity CJS entry fixed. prettier held at ~3.4 (reformat is #71). Build + lint + all suites green on Node 24. No publish.

🤖 Generated with Claude Code

https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi

dickhardt and others added 6 commits September 6, 2026 13:38
- CI, canary and release test jobs: node-version 22 -> 24
- fastify spec container: node:18-alpine -> node:24-alpine
- add .nvmrc (24) and root engines.node >=24 (root is private; published
  packages keep their engines floors)
- eslint: rename react/vue eslint.config.js -> .mjs and express test app
  express.js -> .mjs so Node 24 stops printing MODULE_TYPELESS_PACKAGE_JSON
- eslint: --flag unstable_config_lookup_from_file was renamed to
  v10_config_lookup_from_file
- eslint: allow require() in *.cjs (scripts/fixup-dist.cjs failed lint)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi
- identifier, vue: add the `types` condition to `exports` so consumers
  on moduleResolution bundler/node16 get typings
- web-identity: `types` must be the first condition to take effect
- web-identity: mark dist/cjs as CommonJS (same fixup-dist.cjs step
  httpsig and email-verification use); require() of the package failed
  with "Cannot find module './tokens/request-token.js'" because the
  package root is "type": "module"

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi
Held back on purpose (see report): typescript 6 not 7 (typescript-eslint,
svelte-check, @sveltejs/kit peers), eslint 9 (eslint-plugin-react peer),
vitest 4 (better-auth peerOptional), and jose/cookie/nanoid/chalk/open on
their current majors because the next major raises the Node floor above
the packages' engines.

- typescript 6: drop baseUrl (rootDir instead), add types: ["node"] where
  node builtins are used, moduleResolution NodeNext/bundler; CJS builds keep
  node10 resolution behind ignoreDeprecations 6.0
- @types/node ^24 everywhere; BufferSource casts in httpsig
- better-auth 1.7: generateState takes an options object; declare
  @better-auth/core (imported but never declared)
- vite 8: rollupOptions -> rolldownOptions; vite-plugin-dts 5 needs
  @vue/language-core
- dotenv 17 logs by default: quiet: true in quickstart
- lockfile regenerated (it had drifted: vite 6, chalk 4, get-port 5)
- husky pre-commit: prettier --ignore-unknown (prettier 3.9 exits 2 on
  files it has no parser for, e.g. .nvmrc)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi
Prettier 3.9 reformats 11 files (union types, markdown tables). That
reformat is deferred to its own PR, so the upgrade stays on 3.4.x for
now and `prettier --check` stays green.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi
Removed (verified by knip/depcheck plus grep): rimraf (rm -rf in scripts),
esm, npm-run-all, root next, @types/cookie (stub; cookie ships types),
cors and swr (nextjs), cors and @hellocoop/helper-server (express), dotenv
(fastify; express moves it to dev), eslint-config-next, @hellocoop/definitions
(better-auth), @misskey-dev/node-http-message-signatures, react-dom (react
dev), svelte-check, tslib, fs-extra (quickstart uses fs.mkdirSync +
writeFileSync).

Declared what was imported but only resolved through hoisting: cookie and
@hellocoop/definitions in fastify; @better-auth/core, @better-fetch/fetch,
better-call, zod, jose in better-auth; @tsconfig/node18 in definitions,
helper/*, react; typescript in definitions; @types/node in httpsig and
nextjs; vite in vue; @eslint/js and globals at the root. @vitejs/plugin-vue
moves to devDependencies.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi
…r collection

The 10 MB threshold in performance-security.test.ts is only meaningful when
global.gc runs before each measurement; without --expose-gc the result is
GC-timing dependent and flakes in CI (10.36 MB on the PR run).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APQhTaYTjEoreeUdJdcZWi
@dickhardt
dickhardt merged commit fd1d419 into main Sep 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant