From 5555e5e8e0b286ad65e91b9c85050912e83b9a05 Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Tue, 14 Nov 2023 09:04:18 +0900 Subject: [PATCH] fix: implement `Headers#set` correctly (#2432) * fix: implement `Headers#set` correctly * fix: HeadersList * test: add * test: fix --- lib/fetch/headers.js | 4 ++-- test/fetch/headers.js | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/fetch/headers.js b/lib/fetch/headers.js index f37c5c99e03..035560428bc 100644 --- a/lib/fetch/headers.js +++ b/lib/fetch/headers.js @@ -190,7 +190,7 @@ class HeadersList { // the first such header to value and remove the // others. // 2. Otherwise, append header (name, value) to list. - return this[kHeadersMap].set(lowercaseName, { name, value }) + this[kHeadersMap].set(lowercaseName, { name, value }) } // https://fetch.spec.whatwg.org/#concept-header-list-delete @@ -401,7 +401,7 @@ class Headers { // 7. Set (name, value) in this’s header list. // 8. If this’s guard is "request-no-cors", then remove // privileged no-CORS request headers from this - return this[kHeadersList].set(name, value) + this[kHeadersList].set(name, value) } // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie diff --git a/test/fetch/headers.js b/test/fetch/headers.js index c4b4e03d297..5da1a1ded1f 100644 --- a/test/fetch/headers.js +++ b/test/fetch/headers.js @@ -250,7 +250,7 @@ tap.test('Headers has', t => { }) tap.test('Headers set', t => { - t.plan(4) + t.plan(5) t.test('sets valid header entry to instance', t => { t.plan(2) @@ -294,6 +294,16 @@ tap.test('Headers set', t => { t.throws(() => headers.set('undici'), 'throws on missing value') t.throws(() => headers.set('invalid @ header ? name', 'valid value'), 'throws on invalid name') }) + + // https://github.com/nodejs/undici/issues/2431 + t.test('`Headers#set` returns undefined', t => { + t.plan(2) + const headers = new Headers() + + t.same(headers.set('a', 'b'), undefined) + + t.notOk(headers.set('c', 'd') instanceof Map) + }) }) tap.test('Headers forEach', t => {