* @see https://fetch.spec.whatwg.org/#concept-headers-append * @param {Headers} headers * @param {string} name * @param {string} value
(headers, name, value)
| 86 | * @param {string} value |
| 87 | */ |
| 88 | function appendHeader (headers, name, value) { |
| 89 | // 1. Normalize value. |
| 90 | value = headerValueNormalize(value) |
| 91 | |
| 92 | // 2. If name is not a header name or value is not a |
| 93 | // header value, then throw a TypeError. |
| 94 | if (!isValidHeaderName(name)) { |
| 95 | throw webidl.errors.invalidArgument({ |
| 96 | prefix: 'Headers.append', |
| 97 | value: name, |
| 98 | type: 'header name' |
| 99 | }) |
| 100 | } else if (!isValidHeaderValue(value)) { |
| 101 | throw webidl.errors.invalidArgument({ |
| 102 | prefix: 'Headers.append', |
| 103 | value, |
| 104 | type: 'header value' |
| 105 | }) |
| 106 | } |
| 107 | |
| 108 | // 3. If headers’s guard is "immutable", then throw a TypeError. |
| 109 | // 4. Otherwise, if headers’s guard is "request" and name is a |
| 110 | // forbidden header name, return. |
| 111 | // 5. Otherwise, if headers’s guard is "request-no-cors": |
| 112 | // TODO |
| 113 | // Note: undici does not implement forbidden header names |
| 114 | if (getHeadersGuard(headers) === 'immutable') { |
| 115 | throw new TypeError('immutable') |
| 116 | } |
| 117 | |
| 118 | // 6. Otherwise, if headers’s guard is "response" and name is a |
| 119 | // forbidden response-header name, return. |
| 120 | |
| 121 | // 7. Append (name, value) to headers’s header list. |
| 122 | return getHeadersList(headers).append(name, value, false) |
| 123 | |
| 124 | // 8. If headers’s guard is "request-no-cors", then remove |
| 125 | // privileged no-CORS request headers from headers |
| 126 | } |
| 127 | |
| 128 | // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine |
| 129 | /** |
no test coverage detected