Skip to content

Commit b4d9cb3

Browse files
committed
fix: Switch to URL instead of url.resolve (nodejs#3256)
1 parent 3f81949 commit b4d9cb3

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

lib/process-release.js

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
'use strict'
44

55
const semver = require('semver')
6-
const url = require('url')
76
const path = require('path')
87
const log = require('./log')
98

@@ -78,7 +77,7 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
7877

7978
// new style, based on process.release so we have a lot of the data we need
8079
if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) {
81-
baseUrl = url.resolve(defaultRelease.headersUrl, './')
80+
baseUrl = new URL('./', defaultRelease.headersUrl)
8281
libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major)
8382
libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major)
8483
libUrlArm64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'arm64', versionSemver.major)
@@ -96,7 +95,7 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
9695
// have a *-headers.tar.gz file in its dist location, even some frankenstein
9796
// custom version
9897
canGetHeaders = semver.satisfies(versionSemver, headersTarballRange)
99-
tarballUrl = url.resolve(baseUrl, name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz')
98+
tarballUrl = new URL(name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz', baseUrl)
10099
}
101100

102101
return {
@@ -105,19 +104,19 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
105104
name,
106105
baseUrl,
107106
tarballUrl,
108-
shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'),
107+
shasumsUrl: new URL('SHASUMS256.txt', baseUrl),
109108
versionDir: (name !== 'node' ? name + '-' : '') + version,
110109
ia32: {
111110
libUrl: libUrl32,
112-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl32).pathname))
111+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrl32.pathname))
113112
},
114113
x64: {
115114
libUrl: libUrl64,
116-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl64).pathname))
115+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrl64.pathname))
117116
},
118117
arm64: {
119118
libUrl: libUrlArm64,
120-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrlArm64).pathname))
119+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrlArm64.pathname))
121120
}
122121
}
123122
}
@@ -127,20 +126,20 @@ function normalizePath (p) {
127126
}
128127

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

133132
if (!hasLibUrl) {
134133
// let's assume it's a baseUrl then
135134
if (versionMajor >= 1) {
136-
return url.resolve(base, 'win-' + arch + '/' + name + '.lib')
135+
return new URL('win-' + arch + '/' + name + '.lib', base)
137136
}
138137
// 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')
138+
return new URL((arch === 'x86' ? '' : arch + '/') + name + '.lib', base)
140139
}
141140

142141
// 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 + '/')
142+
return new URL(defaultUrl.pathname.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/'), defaultUrl)
144143
}
145144

146145
module.exports = processRelease

0 commit comments

Comments
 (0)