From 3ecf19cdc35684ccb15280b2c34d27496aa1c634 Mon Sep 17 00:00:00 2001 From: Gar Date: Fri, 2 Jul 2021 06:55:14 -0700 Subject: [PATCH] fix(config): fix noproxy The flattener worked for everything except for when you are using `npm config set` itself. Now it works for both. PR-URL: https://github.com/npm/cli/pull/3508 Credit: @wraithgar Close: #3508 Reviewed-by: @nlf --- lib/utils/config/definitions.js | 5 ++++- test/lib/utils/config/definitions.js | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/utils/config/definitions.js b/lib/utils/config/definitions.js index 5375aeced6904..9e560fb715f85 100644 --- a/lib/utils/config/definitions.js +++ b/lib/utils/config/definitions.js @@ -1204,7 +1204,10 @@ define('noproxy', { Also accepts a comma-delimited string. `, flatten (key, obj, flatOptions) { - flatOptions.noProxy = obj[key].join(',') + if (Array.isArray(obj[key])) + flatOptions.noProxy = obj[key].join(',') + else + flatOptions.noProxy = obj[key] }, }) diff --git a/test/lib/utils/config/definitions.js b/test/lib/utils/config/definitions.js index 8724f0e3bd3eb..e829780fcd219 100644 --- a/test/lib/utils/config/definitions.js +++ b/test/lib/utils/config/definitions.js @@ -463,7 +463,7 @@ t.test('search options', t => { t.end() }) -t.test('noProxy', t => { +t.test('noProxy - array', t => { const obj = { noproxy: ['1.2.3.4,2.3.4.5', '3.4.5.6'] } const flat = {} definitions.noproxy.flatten('noproxy', obj, flat) @@ -471,6 +471,14 @@ t.test('noProxy', t => { t.end() }) +t.test('noProxy - string', t => { + const obj = { noproxy: '1.2.3.4,2.3.4.5,3.4.5.6' } + const flat = {} + definitions.noproxy.flatten('noproxy', obj, flat) + t.strictSame(flat, { noProxy: '1.2.3.4,2.3.4.5,3.4.5.6' }) + t.end() +}) + t.test('maxSockets', t => { const obj = { maxsockets: 123 } const flat = {}