@@ -198,7 +198,8 @@ export function getNpmPackageJson(
198
198
getNpmConfigOption ( '_authToken' , registryKey ) ,
199
199
getNpmConfigOption ( 'username' , registryKey , true ) ,
200
200
getNpmConfigOption ( 'password' , registryKey , true ) ,
201
- getNpmConfigOption ( 'alwaysAuth' , registryKey , true ) ,
201
+ getNpmConfigOption ( 'email' , registryKey , true ) ,
202
+ getNpmConfigOption ( 'always-auth' , registryKey , true ) ,
202
203
) . pipe (
203
204
toArray ( ) ,
204
205
concatMap ( options => {
@@ -211,6 +212,7 @@ export function getNpmPackageJson(
211
212
authToken ,
212
213
username ,
213
214
password ,
215
+ email ,
214
216
alwaysAuth ,
215
217
] = options ;
216
218
@@ -222,17 +224,38 @@ export function getNpmPackageJson(
222
224
token ?: string ,
223
225
alwaysAuth ?: boolean ;
224
226
username ?: string ;
225
- password ?: string
227
+ password ?: string ;
228
+ email ?: string ;
226
229
} = { } ;
227
230
228
231
if ( alwaysAuth !== undefined ) {
229
232
auth . alwaysAuth = alwaysAuth === 'false' ? false : ! ! alwaysAuth ;
230
233
}
231
234
235
+ if ( email ) {
236
+ auth . email = email ;
237
+ }
238
+
232
239
if ( authToken ) {
233
240
auth . token = authToken ;
234
241
} else if ( token ) {
235
- auth . token = token ;
242
+ try {
243
+ // attempt to parse "username:password" from base64 token
244
+ // to enable Artifactory / Nexus-like repositories support
245
+ const delimiter = ':' ;
246
+ const parsedToken = Buffer . from ( token , 'base64' ) . toString ( 'ascii' ) ;
247
+ const [ extractedUsername , ...passwordArr ] = parsedToken . split ( delimiter ) ;
248
+ const extractedPassword = passwordArr . join ( delimiter ) ;
249
+
250
+ if ( extractedUsername && extractedPassword ) {
251
+ auth . username = extractedUsername ;
252
+ auth . password = extractedPassword ;
253
+ } else {
254
+ throw new Error ( 'Unable to extract username and password from _auth token' ) ;
255
+ }
256
+ } catch ( ex ) {
257
+ auth . token = token ;
258
+ }
236
259
} else if ( username ) {
237
260
auth . username = username ;
238
261
auth . password = password ;
0 commit comments