diff --git a/.changeset/dull-pens-wash.md b/.changeset/dull-pens-wash.md new file mode 100644 index 000000000..7ba8f156e --- /dev/null +++ b/.changeset/dull-pens-wash.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +fix: account for Node `current` releases with even majors when resolving `@types/node` version diff --git a/packages/addons/common.ts b/packages/addons/common.ts index 90fb9ebaf..b03d9d5e8 100644 --- a/packages/addons/common.ts +++ b/packages/addons/common.ts @@ -85,13 +85,19 @@ export function addToDemoPage(content: string, path: string): string { */ export function getNodeTypesVersion(): string { const nodeVersion = process.versions.node; + const isDenoOrBun = Boolean(process.versions.deno ?? process.versions.bun); const [major] = nodeVersion.split('.'); - const isLTS = Number(major) % 2 === 0; + const majorNum = Number(major); + const isEvenMajor = majorNum % 2 === 0; + const isLTS = !!process.release.lts || (isDenoOrBun && isEvenMajor); if (isLTS) { return `^${major}`; } - const previousLTSMajor = Number(major) - 1; + // It's possible for an even major number to _temporarily_ not + // be an `LTS` release (meaning `process.release.lts` is `undefined`) during it's `Current` stage. + // In those cases, we'll decrement the major by 2. + const previousLTSMajor = isEvenMajor ? majorNum - 2 : majorNum - 1; return `^${previousLTSMajor}`; }