diff --git a/.github/actions/setup-toolchain/action.yaml b/.github/actions/setup-toolchain/action.yaml index 47de1c4..2872473 100644 --- a/.github/actions/setup-toolchain/action.yaml +++ b/.github/actions/setup-toolchain/action.yaml @@ -7,7 +7,7 @@ runs: - name: Setup Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: 22.22.1 + node-version: 24.19.0 package-manager-cache: false - name: Setup aube diff --git a/AGENTS.md b/AGENTS.md index a2d907e..cc3f796 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,7 +11,7 @@ These instructions apply to humans and coding agents working in this repository. ## Toolchain -- Use Node.js 22.18 or newer and the aube version pinned in `package.json`. `mise.toml` pins both for local setup. +- Use Node.js 24.2 or newer and the aube version pinned in `package.json`. `mise.toml` pins both for local setup. - Use aube for dependencies and scripts. It reads and writes `pnpm-lock.yaml` and `pnpm-workspace.yaml` in place; keep both files and do not create npm, Yarn, or Bun lockfiles. - `typescript` is overridden to `typescript-native-bridge` in `pnpm-workspace.yaml`, so `tsc` and every Compiler API consumer type-check on tsgo. Keep the pin exact and reinstall after changing it. - Use Turborepo through the root scripts; do not duplicate orchestration in package scripts. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d488e9e..456e811 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ Participation is governed by the [Code of Conduct](CODE_OF_CONDUCT.md), and proj Requirements: -- Node.js 22.18 or newer +- Node.js 24.2 or newer - [aube](https://aube.jdx.dev), the pinned package manager - Git diff --git a/README.md b/README.md index a5e43f4..0c79a62 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Adapters depend on the runtime; the runtime never depends on adapters. See [docs ## Quick start -Requirements: Node.js 22.18+ and [aube](https://aube.jdx.dev), the package manager pinned in `package.json`. Both are pinned in `mise.toml`, so [mise](https://mise.jdx.dev) can install them together. Generated Node.js bundles target Node.js 20.11+. +Requirements: Node.js 24.2+ and [aube](https://aube.jdx.dev), the package manager pinned in `package.json`. Both are pinned in `mise.toml`, so [mise](https://mise.jdx.dev) can install them together. Generated Node.js bundles target Node.js 24.2+. ```bash mise install # or: npm install -g --ignore-scripts=false @endevco/aube diff --git a/mise.toml b/mise.toml index 17a83dd..33414d1 100644 --- a/mise.toml +++ b/mise.toml @@ -1,3 +1,3 @@ [tools] -node = "22.22.1" +node = "24.19.0" aube = "1.38.0" diff --git a/package.json b/package.json index d8d05e0..23d0d97 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "*.{js,mjs,cjs,ts,tsx,json,jsonc,yaml,yml,md}": "oxfmt --write --no-error-on-unmatched-pattern" }, "engines": { - "node": ">=22.18" + "node": ">=24.2" }, "packageManager": "aube@1.38.0" } diff --git a/scripts/tsdown.config.ts b/scripts/tsdown.config.ts index dd79315..f6aa0d1 100644 --- a/scripts/tsdown.config.ts +++ b/scripts/tsdown.config.ts @@ -4,7 +4,7 @@ import { defineConfig, type OutExtensionContext, type UserConfig } from 'tsdown' const baseConfig = { entry: ['src/index.ts'], platform: 'node', - target: 'node20.11', + target: 'node24.2', outDir: 'dist', clean: true, sourcemap: true, @@ -25,6 +25,13 @@ const baseConfig = { const packageConfig = { ...baseConfig, format: ['esm', 'cjs'], + checks: { + ...baseConfig.checks, + // Packages intentionally dual-publish ESM and CJS. With a node24.2 target + // (which supports require(esm)), tsdown escalates its legacy-CJS + // recommendation to an error under failOnWarn, so opt out of that check. + legacyCjs: false, + }, outExtensions: (context: OutExtensionContext) => ({ js: context.format === 'es' ? '.mjs' : '.cjs', dts: context.format === 'es' ? '.d.mts' : '.d.cts',