Skip to content

Commit 46d7576

Browse files
authored
fix: Switch to URL instead of url.resolve (#3256) (#3263)
1 parent 878061f commit 46d7576

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

lib/process-release.js

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
/* eslint-disable n/no-deprecated-api */
2-
31
'use strict'
42

53
const semver = require('semver')
6-
const url = require('url')
74
const path = require('path')
85
const log = require('./log')
96

@@ -74,11 +71,11 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
7471
} else {
7572
distBaseUrl = 'https://nodejs.org/dist'
7673
}
77-
distBaseUrl += '/v' + version + '/'
74+
distBaseUrl = new URL(distBaseUrl + '/v' + version + '/')
7875

7976
// new style, based on process.release so we have a lot of the data we need
8077
if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) {
81-
baseUrl = url.resolve(defaultRelease.headersUrl, './')
78+
baseUrl = new URL('./', defaultRelease.headersUrl)
8279
libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major)
8380
libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major)
8481
libUrlArm64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'arm64', versionSemver.major)
@@ -96,28 +93,28 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
9693
// have a *-headers.tar.gz file in its dist location, even some frankenstein
9794
// custom version
9895
canGetHeaders = semver.satisfies(versionSemver, headersTarballRange)
99-
tarballUrl = url.resolve(baseUrl, name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz')
96+
tarballUrl = new URL(name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz', baseUrl).href
10097
}
10198

10299
return {
103100
version,
104101
semver: versionSemver,
105102
name,
106-
baseUrl,
103+
baseUrl: baseUrl.href,
107104
tarballUrl,
108-
shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'),
105+
shasumsUrl: new URL('SHASUMS256.txt', baseUrl).href,
109106
versionDir: (name !== 'node' ? name + '-' : '') + version,
110107
ia32: {
111-
libUrl: libUrl32,
112-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl32).pathname))
108+
libUrl: libUrl32.href,
109+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrl32.pathname))
113110
},
114111
x64: {
115-
libUrl: libUrl64,
116-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl64).pathname))
112+
libUrl: libUrl64.href,
113+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrl64.pathname))
117114
},
118115
arm64: {
119-
libUrl: libUrlArm64,
120-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrlArm64).pathname))
116+
libUrl: libUrlArm64.href,
117+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrlArm64.pathname))
121118
}
122119
}
123120
}
@@ -127,20 +124,21 @@ function normalizePath (p) {
127124
}
128125

129126
function resolveLibUrl (name, defaultUrl, arch, versionMajor) {
130-
const base = url.resolve(defaultUrl, './')
131-
const hasLibUrl = bitsre.test(defaultUrl) || (versionMajor === 3 && bitsreV3.test(defaultUrl))
127+
if (!defaultUrl.pathname) defaultUrl = new URL(defaultUrl)
128+
const base = new URL('./', defaultUrl)
129+
const hasLibUrl = bitsre.test(defaultUrl.pathname) || (versionMajor === 3 && bitsreV3.test(defaultUrl.pathname))
132130

133131
if (!hasLibUrl) {
134132
// let's assume it's a baseUrl then
135133
if (versionMajor >= 1) {
136-
return url.resolve(base, 'win-' + arch + '/' + name + '.lib')
134+
return new URL('win-' + arch + '/' + name + '.lib', base)
137135
}
138136
// prior to io.js@1.0.0 32-bit node.lib lives in /, 64-bit lives in /x64/
139-
return url.resolve(base, (arch === 'x86' ? '' : arch + '/') + name + '.lib')
137+
return new URL((arch === 'x86' ? '' : arch + '/') + name + '.lib', base)
140138
}
141139

142140
// else we have a proper url to a .lib, just make sure it's the right arch
143-
return defaultUrl.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/')
141+
return new URL(defaultUrl.pathname.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/'), defaultUrl)
144142
}
145143

146144
module.exports = processRelease

0 commit comments

Comments
 (0)