Skip to content

Commit 02e101c

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

1 file changed

Lines changed: 11 additions & 14 deletions

File tree

lib/process-release.js

Lines changed: 11 additions & 14 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

@@ -78,7 +75,7 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
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,7 +93,7 @@ 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)
10097
}
10198

10299
return {
@@ -105,19 +102,19 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
105102
name,
106103
baseUrl,
107104
tarballUrl,
108-
shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'),
105+
shasumsUrl: new URL('SHASUMS256.txt', baseUrl),
109106
versionDir: (name !== 'node' ? name + '-' : '') + version,
110107
ia32: {
111108
libUrl: libUrl32,
112-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl32).pathname))
109+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrl32.pathname))
113110
},
114111
x64: {
115112
libUrl: libUrl64,
116-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl64).pathname))
113+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrl64.pathname))
117114
},
118115
arm64: {
119116
libUrl: libUrlArm64,
120-
libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrlArm64).pathname))
117+
libPath: normalizePath(path.relative(baseUrl.pathname, libUrlArm64.pathname))
121118
}
122119
}
123120
}
@@ -127,20 +124,20 @@ 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+
const base = new URL('./', defaultUrl)
128+
const hasLibUrl = bitsre.test(defaultUrl.pathname) || (versionMajor === 3 && bitsreV3.test(defaultUrl.pathname))
132129

133130
if (!hasLibUrl) {
134131
// let's assume it's a baseUrl then
135132
if (versionMajor >= 1) {
136-
return url.resolve(base, 'win-' + arch + '/' + name + '.lib')
133+
return new URL('win-' + arch + '/' + name + '.lib', base)
137134
}
138135
// 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')
136+
return new URL((arch === 'x86' ? '' : arch + '/') + name + '.lib', base)
140137
}
141138

142139
// 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 + '/')
140+
return new URL(defaultUrl.pathname.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/'), defaultUrl)
144141
}
145142

146143
module.exports = processRelease

0 commit comments

Comments
 (0)