33'use strict'
44
55const semver = require ( 'semver' )
6- const url = require ( 'url' )
76const path = require ( 'path' )
87const 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
129128function 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
146145module . exports = processRelease
0 commit comments