From 4dd5bd042bad5ee4eb168439868e4a0ab7eb7ae6 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:39:40 +0000 Subject: [PATCH] Fix: Update EOL detection logic and dates - Add missing EOL dates for Node.js versions 12, 14, 16 - Add EOL dates for odd versions 19, 21, 23, 25 - Update checkEOL to automatically consider versions < 12 as EOL - Ensure accurate security reporting for older environments --- .changeset/sentinel-eol-fix.md | 5 +++++ src/index.ts | 26 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 .changeset/sentinel-eol-fix.md diff --git a/.changeset/sentinel-eol-fix.md b/.changeset/sentinel-eol-fix.md new file mode 100644 index 00000000..d8a457e2 --- /dev/null +++ b/.changeset/sentinel-eol-fix.md @@ -0,0 +1,5 @@ +--- +"node-version": patch +--- + +Fix: Update EOL dates and logic to correctly identify older and odd-numbered Node.js versions as End-of-Life. diff --git a/src/index.ts b/src/index.ts index 625ca808..8dca7791 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,8 +11,18 @@ export type { NodeVersion }; /** * End-of-Life dates for Node.js major versions. + * @see https://github.com/nodejs/release#end-of-life-releases */ export const EOL_DATES: Record = { + // Odd versions (EOL dates) + "19": "2023-06-01", + "21": "2024-06-01", + "23": "2025-06-01", + "25": "2026-06-01", + // Even versions (LTS EOL dates) + "12": "2022-04-30", + "14": "2023-04-30", + "16": "2023-09-11", "18": "2025-04-30", "20": "2026-04-30", "22": "2027-04-30", @@ -21,11 +31,23 @@ export const EOL_DATES: Record = { /** * Check if a major version is EOL. + * Any version below 12 is automatically considered EOL. */ const checkEOL = (major: string): boolean => { + // Hard check for very old versions + if (Number(major) < 12) { + return true; + } + const eolDate = EOL_DATES[major]; - if (!eolDate) return false; - return new Date() > new Date(eolDate); + // If we have a date, check against it + if (eolDate) { + return new Date() > new Date(eolDate); + } + + // If no date found and it's not < 12, we default to false + // (It might be a very new version like 26, or a weird version) + return false; }; /**