From 0cd951e1292bf6845ec96ffdc1ca8dadfdb8200b Mon Sep 17 00:00:00 2001 From: Robin Tail Date: Mon, 12 May 2025 13:25:27 +0200 Subject: [PATCH 1/6] Switching to undici 7 with min Node version 20.18.1. --- express-zod-api/package.json | 4 ++-- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/express-zod-api/package.json b/express-zod-api/package.json index e198c3782..3bc43d4e1 100644 --- a/express-zod-api/package.json +++ b/express-zod-api/package.json @@ -58,7 +58,7 @@ "*.md" ], "engines": { - "node": "^20.9.0 || ^22.0.0 || ^24.0.0" + "node": "^20.18.1 || ^22.0.0 || ^24.0.0" }, "dependencies": { "ansis": "^4.1.0", @@ -112,7 +112,7 @@ "semver": "^7.7.2", "snakify-ts": "^2.3.0", "tsup": "^8.5.0", - "undici": "^6.19.8" + "undici": "^7.9.0" }, "keywords": [ "nodejs", diff --git a/yarn.lock b/yarn.lock index 47e246146..83d5eb578 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2951,10 +2951,10 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -undici@^6.19.8: - version "6.21.3" - resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.3.tgz#185752ad92c3d0efe7a7d1f6854a50f83b552d7a" - integrity sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw== +undici@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.9.0.tgz#09266190e9281cb049ba79ca6a5ec9372175dfd9" + integrity sha512-e696y354tf5cFZPXsF26Yg+5M63+5H3oE6Vtkh2oqbvsE2Oe7s2nIbcQh5lmG7Lp/eS29vJtTpw9+p6PX0qNSg== unicode-emoji-modifier-base@^1.0.0: version "1.0.0" From 8ce68333b6b2f29e2072fe8ac81205da93abb965 Mon Sep 17 00:00:00 2001 From: Robin Tail Date: Mon, 12 May 2025 13:26:39 +0200 Subject: [PATCH 2/6] CI: adjusting the matrix. --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 4e98de4d5..590ca750e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [20.9.0, 20.x, 22.0.0, 22.x, 24.0.0, 24.x] + node-version: [20.18.1, 20.x, 22.0.0, 22.x, 24.0.0, 24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - name: Get yarn cache dir From 7f290381fac26d1b62cb069ab15bb00a772742f4 Mon Sep 17 00:00:00 2001 From: Robin Tail Date: Thu, 29 May 2025 20:18:19 +0200 Subject: [PATCH 3/6] Changelog: declaring the elevated Node.js min version. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d00055229..4c8367416 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### v24.0.0 +- Minimum Node.js version supported: 20.18.1; - Switched to Zod 4: - Minimum supported version of `zod` is 3.25.35, BUT imports MUST be from `zod/v4`; - Read the [Explanation of the versioning strategy](https://github.com/colinhacks/zod/issues/4371); From b72932033221f117e0bd3da5dd9d097712e58ca8 Mon Sep 17 00:00:00 2001 From: Robin Tail Date: Thu, 29 May 2025 20:22:03 +0200 Subject: [PATCH 4/6] Revert "Changelog: declaring the elevated Node.js min version." This reverts commit 7f290381fac26d1b62cb069ab15bb00a772742f4. --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c8367416..d00055229 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,6 @@ ### v24.0.0 -- Minimum Node.js version supported: 20.18.1; - Switched to Zod 4: - Minimum supported version of `zod` is 3.25.35, BUT imports MUST be from `zod/v4`; - Read the [Explanation of the versioning strategy](https://github.com/colinhacks/zod/issues/4371); From a63891f9e75802bf2399a5d23d2da11f659440cc Mon Sep 17 00:00:00 2001 From: Robin Tail Date: Fri, 13 Jun 2025 16:50:13 +0200 Subject: [PATCH 5/6] Replacing undici with an experimental flag in example workspace. --- example/index.spec.ts | 9 --------- example/package.json | 7 +++---- example/vitest.config.ts | 14 ++++++++++++++ pnpm-lock.yaml | 3 --- 4 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 example/vitest.config.ts diff --git a/example/index.spec.ts b/example/index.spec.ts index 1fbd4fa2b..f06bd1a6e 100644 --- a/example/index.spec.ts +++ b/example/index.spec.ts @@ -1,5 +1,4 @@ import assert from "node:assert/strict"; -import { EventSource } from "undici"; import { spawn } from "node:child_process"; import { createReadStream, readFileSync } from "node:fs"; import { Client, Subscription } from "./example.client"; @@ -18,14 +17,6 @@ describe("Example", async () => { const port = givePort("example"); await vi.waitFor(() => assert(out.includes(`Listening`)), { timeout: 1e4 }); - beforeAll(() => { - /** - * @todo when min Node v22.3.0 and 20.18.0, can use the --experimental-eventsource flag and remove undici - * @todo later, revisit when unflagged https://nodejs.org/docs/v24.0.0/api/globals.html#eventsource - */ - vi.stubGlobal("EventSource", EventSource); - }); - afterAll(async () => { example.stdout.removeListener("data", listener); example.kill(); diff --git a/example/package.json b/example/package.json index 5178bf924..005ae570a 100644 --- a/example/package.json +++ b/example/package.json @@ -9,15 +9,14 @@ "build:docs": "tsx generate-documentation.ts", "build:client": "tsx generate-client.ts", "pretest": "tsc --noEmit", - "test": "vitest run --globals index.spec.ts", - "validate": "vitest run --globals validate.spec.ts" + "test": "vitest run index.spec.ts", + "validate": "vitest run validate.spec.ts" }, "dependencies": { "express-zod-api": "workspace:*", "swagger-ui-express": "^5.0.0" }, "devDependencies": { - "@types/swagger-ui-express": "^4.1.8", - "undici": "^7.10.0" + "@types/swagger-ui-express": "^4.1.8" } } diff --git a/example/vitest.config.ts b/example/vitest.config.ts new file mode 100644 index 000000000..817569158 --- /dev/null +++ b/example/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + pool: "threads", + poolOptions: { + threads: { + /** @todo remove when unflagged https://nodejs.org/docs/v24.0.0/api/globals.html#eventsource */ + execArgv: ["--experimental-eventsource"], + }, + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7eaa499c8..a9d765e21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,9 +105,6 @@ importers: '@types/swagger-ui-express': specifier: ^4.1.8 version: 4.1.8 - undici: - specifier: ^7.10.0 - version: 7.10.0 express-zod-api: dependencies: From 5022d6c45a35f3db3c1adf78248191ad8408e4d9 Mon Sep 17 00:00:00 2001 From: Robin Tail Date: Fri, 13 Jun 2025 16:53:31 +0200 Subject: [PATCH 6/6] Elevating min Node 22 to 22.3.0. --- .github/workflows/node.js.yml | 2 +- express-zod-api/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 840fe7970..bba2848b3 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [20.18.1, 20.x, 22.0.0, 22.x, 24.0.0, 24.x] + node-version: [20.18.1, 20.x, 22.3.0, 22.x, 24.0.0, 24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - name: Checkout diff --git a/express-zod-api/package.json b/express-zod-api/package.json index d46f0abc6..b9bfd4aff 100644 --- a/express-zod-api/package.json +++ b/express-zod-api/package.json @@ -57,7 +57,7 @@ "*.md" ], "engines": { - "node": "^20.18.1 || ^22.0.0 || ^24.0.0" + "node": "^20.18.1 || ^22.3.0 || ^24.0.0" }, "dependencies": { "ansis": "^4.1.0",