From 428d3969abe00e47f36f2724c9ef22efdb0106f5 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Fri, 16 Oct 2026 12:25:38 -0300 Subject: [PATCH] feat: support alpha versions Node.js 27 introduces Alpha releases versioned as vN.0.0-alpha.X.Y.Z (see nodejs/node#63135). Recognise them in directory names and release asset file names, like release candidates. Refs: https://github.com/nodejs/Release/issues/1187 Signed-off-by: RafaelGSS --- src/decode-ref.js | 2 +- src/transform-filename.js | 2 +- test/decode-ref.test.js | 6 +++++- test/transform-filename.test.js | 15 +++++++++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/decode-ref.js b/src/decode-ref.js index 71663e4..c0c473e 100644 --- a/src/decode-ref.js +++ b/src/decode-ref.js @@ -1,4 +1,4 @@ -const dirre = /^(v\d+\.\d+\.\d+(?:-rc\.\d+)?)(?:-((?:next-)?nightly|test|v8-canary)\d{8}(\w+))?$/ // get version or commit from dir name +const dirre = /^(v\d+\.\d+\.\d+(?:-rc\.\d+|-alpha\.\d+\.\d+\.\d+)?)(?:-((?:next-)?nightly|test|v8-canary)\d{8}(\w+))?$/ // get version or commit from dir name function decodeRef (dir) { const m = dir.match(dirre) diff --git a/src/transform-filename.js b/src/transform-filename.js index a5a37ff..0be5954 100644 --- a/src/transform-filename.js +++ b/src/transform-filename.js @@ -48,7 +48,7 @@ const types = { } function transformFilename (file) { - file = file && file.replace(/^(?:\.\/)?(?:iojs|node)-v\d+\.\d+\.\d+-?((rc\.\d+|(?:(next-)?nightly|test|v8-canary)\d{8}[^-.]+)-?)?\.?/, '') + file = file && file.replace(/^(?:\.\/)?(?:iojs|node)-v\d+\.\d+\.\d+-?((rc\.\d+|alpha\.\d+\.\d+\.\d+|(?:(next-)?nightly|test|v8-canary)\d{8}[^-.]+)-?)?\.?/, '') .replace(/\.tar\.gz$/, '') return types[file] diff --git a/test/decode-ref.test.js b/test/decode-ref.test.js index d090d2b..8ed84ea 100644 --- a/test/decode-ref.test.js +++ b/test/decode-ref.test.js @@ -9,10 +9,14 @@ const tests = [ { dir: 'v2.3.1-next-nightly201506308f6f4280c6', ref: 'node/8f6f4280c6' }, { dir: 'v3.0.0-rc.1', ref: 'node/v3.0.0-rc.1' }, { dir: 'v33.22.1-rc.111', ref: 'node/v33.22.1-rc.111' }, + { dir: 'v27.0.0-alpha.0.0.0', ref: 'node/v27.0.0-alpha.0.0.0' }, + { dir: 'v27.0.0-alpha.1.10.2', ref: 'node/v27.0.0-alpha.1.10.2' }, { dir: 'v0.6.1', ref: 'node/v0.6.1' }, { dir: 'v0.5.1', ref: 'node/v0.5.1' }, { dir: 'v6.0.0-test20151107093b0e865c', ref: 'node/093b0e865c' }, - { dir: 'v9.0.0-v8-canary20170609cd40078f1f', ref: 'v8-canary/cd40078f1f' } + { dir: 'v9.0.0-v8-canary20170609cd40078f1f', ref: 'v8-canary/cd40078f1f' }, + { dir: 'v27.0.0-alpha.0.0', ref: null }, + { dir: 'v27.0.0-alpha', ref: null } ] describe('decodeRef', () => { diff --git a/test/transform-filename.test.js b/test/transform-filename.test.js index 95425fb..ece183a 100644 --- a/test/transform-filename.test.js +++ b/test/transform-filename.test.js @@ -74,6 +74,21 @@ const tests = [ { file: 'iojs-v3.0.0-rc.1.tar.xz' }, { file: 'iojs-v3.0.0-rc.1-x64.msi', type: 'win-x64-msi' }, { file: 'iojs-v3.0.0-rc.1-x86.msi', type: 'win-x86-msi' }, + { file: 'node-v27.0.0-alpha.0.0.0-darwin-arm64.tar.gz', type: 'osx-arm64-tar' }, + { file: 'node-v27.0.0-alpha.0.0.0-darwin-arm64.tar.xz' }, + { file: 'node-v27.0.0-alpha.0.0.0-headers.tar.gz', type: 'headers' }, + { file: 'node-v27.0.0-alpha.0.0.0-headers.tar.xz' }, + { file: 'node-v27.0.0-alpha.0.0.0-linux-x64.tar.gz', type: 'linux-x64' }, + { file: 'node-v27.0.0-alpha.0.0.0-linux-x64.tar.xz' }, + { file: 'node-v27.0.0-alpha.0.0.0-linux-arm64.tar.gz', type: 'linux-arm64' }, + { file: 'node-v27.0.0-alpha.0.0.0-linux-arm64.tar.xz' }, + { file: 'node-v27.0.0-alpha.0.0.0.pkg', type: 'osx-x64-pkg' }, + { file: 'node-v27.0.0-alpha.0.0.0.tar.gz', type: 'src' }, + { file: 'node-v27.0.0-alpha.0.0.0.tar.xz' }, + { file: 'node-v27.0.0-alpha.0.0.0-x64.msi', type: 'win-x64-msi' }, + { file: 'node-v27.0.0-alpha.0.0.0-win-x64.zip', type: 'win-x64-zip' }, + { file: 'node-v27.0.0-alpha.0.0.0-win-x64.7z', type: 'win-x64-7z' }, + { file: 'node-v27.0.0-alpha.1.10.2-linux-x64.tar.gz', type: 'linux-x64' }, { file: 'SHASUMS256.txt' }, { file: 'win-x64/iojs.exe', type: 'win-x64-exe' }, { file: 'win-x86/iojs.exe', type: 'win-x86-exe' },