1- /* eslint-disable n/no-deprecated-api */
2-
31'use strict'
42
53const semver = require ( 'semver' )
6- const url = require ( 'url' )
74const path = require ( 'path' )
85const 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
129126function 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
146144module . exports = processRelease
0 commit comments