deepv-code 1.0.182 → 1.0.183
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/dvcode.js +635 -635
- package/package.json +1 -1
- package/bundle/assets/help/README.md +0 -113
- package/bundle/assets/sounds/README.md +0 -74
- package/bundle/node_modules/undici/LICENSE +0 -21
- package/bundle/node_modules/undici/README.md +0 -472
- package/bundle/node_modules/undici/docs/docs/api/Agent.md +0 -83
- package/bundle/node_modules/undici/docs/docs/api/BalancedPool.md +0 -99
- package/bundle/node_modules/undici/docs/docs/api/CacheStorage.md +0 -30
- package/bundle/node_modules/undici/docs/docs/api/CacheStore.md +0 -151
- package/bundle/node_modules/undici/docs/docs/api/Client.md +0 -281
- package/bundle/node_modules/undici/docs/docs/api/ClientStats.md +0 -27
- package/bundle/node_modules/undici/docs/docs/api/Connector.md +0 -115
- package/bundle/node_modules/undici/docs/docs/api/ContentType.md +0 -57
- package/bundle/node_modules/undici/docs/docs/api/Cookies.md +0 -101
- package/bundle/node_modules/undici/docs/docs/api/Debug.md +0 -62
- package/bundle/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +0 -204
- package/bundle/node_modules/undici/docs/docs/api/Dispatcher.md +0 -1200
- package/bundle/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +0 -159
- package/bundle/node_modules/undici/docs/docs/api/Errors.md +0 -49
- package/bundle/node_modules/undici/docs/docs/api/EventSource.md +0 -45
- package/bundle/node_modules/undici/docs/docs/api/Fetch.md +0 -52
- package/bundle/node_modules/undici/docs/docs/api/H2CClient.md +0 -262
- package/bundle/node_modules/undici/docs/docs/api/MockAgent.md +0 -603
- package/bundle/node_modules/undici/docs/docs/api/MockCallHistory.md +0 -197
- package/bundle/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +0 -43
- package/bundle/node_modules/undici/docs/docs/api/MockClient.md +0 -77
- package/bundle/node_modules/undici/docs/docs/api/MockErrors.md +0 -12
- package/bundle/node_modules/undici/docs/docs/api/MockPool.md +0 -548
- package/bundle/node_modules/undici/docs/docs/api/Pool.md +0 -84
- package/bundle/node_modules/undici/docs/docs/api/PoolStats.md +0 -35
- package/bundle/node_modules/undici/docs/docs/api/ProxyAgent.md +0 -227
- package/bundle/node_modules/undici/docs/docs/api/RedirectHandler.md +0 -96
- package/bundle/node_modules/undici/docs/docs/api/RetryAgent.md +0 -45
- package/bundle/node_modules/undici/docs/docs/api/RetryHandler.md +0 -117
- package/bundle/node_modules/undici/docs/docs/api/Util.md +0 -25
- package/bundle/node_modules/undici/docs/docs/api/WebSocket.md +0 -85
- package/bundle/node_modules/undici/docs/docs/api/api-lifecycle.md +0 -91
- package/bundle/node_modules/undici/docs/docs/best-practices/client-certificate.md +0 -64
- package/bundle/node_modules/undici/docs/docs/best-practices/mocking-request.md +0 -190
- package/bundle/node_modules/undici/docs/docs/best-practices/proxy.md +0 -127
- package/bundle/node_modules/undici/docs/docs/best-practices/writing-tests.md +0 -20
- package/bundle/node_modules/undici/index-fetch.js +0 -35
- package/bundle/node_modules/undici/index.d.ts +0 -3
- package/bundle/node_modules/undici/index.js +0 -183
- package/bundle/node_modules/undici/lib/api/abort-signal.js +0 -59
- package/bundle/node_modules/undici/lib/api/api-connect.js +0 -110
- package/bundle/node_modules/undici/lib/api/api-pipeline.js +0 -252
- package/bundle/node_modules/undici/lib/api/api-request.js +0 -199
- package/bundle/node_modules/undici/lib/api/api-stream.js +0 -209
- package/bundle/node_modules/undici/lib/api/api-upgrade.js +0 -110
- package/bundle/node_modules/undici/lib/api/index.js +0 -7
- package/bundle/node_modules/undici/lib/api/readable.js +0 -558
- package/bundle/node_modules/undici/lib/api/util.js +0 -95
- package/bundle/node_modules/undici/lib/cache/memory-cache-store.js +0 -234
- package/bundle/node_modules/undici/lib/cache/sqlite-cache-store.js +0 -461
- package/bundle/node_modules/undici/lib/core/connect.js +0 -164
- package/bundle/node_modules/undici/lib/core/constants.js +0 -143
- package/bundle/node_modules/undici/lib/core/diagnostics.js +0 -196
- package/bundle/node_modules/undici/lib/core/errors.js +0 -244
- package/bundle/node_modules/undici/lib/core/request.js +0 -397
- package/bundle/node_modules/undici/lib/core/symbols.js +0 -68
- package/bundle/node_modules/undici/lib/core/tree.js +0 -160
- package/bundle/node_modules/undici/lib/core/util.js +0 -988
- package/bundle/node_modules/undici/lib/dispatcher/agent.js +0 -135
- package/bundle/node_modules/undici/lib/dispatcher/balanced-pool.js +0 -206
- package/bundle/node_modules/undici/lib/dispatcher/client-h1.js +0 -1615
- package/bundle/node_modules/undici/lib/dispatcher/client-h2.js +0 -798
- package/bundle/node_modules/undici/lib/dispatcher/client.js +0 -614
- package/bundle/node_modules/undici/lib/dispatcher/dispatcher-base.js +0 -161
- package/bundle/node_modules/undici/lib/dispatcher/dispatcher.js +0 -48
- package/bundle/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +0 -151
- package/bundle/node_modules/undici/lib/dispatcher/fixed-queue.js +0 -159
- package/bundle/node_modules/undici/lib/dispatcher/h2c-client.js +0 -122
- package/bundle/node_modules/undici/lib/dispatcher/pool-base.js +0 -191
- package/bundle/node_modules/undici/lib/dispatcher/pool.js +0 -118
- package/bundle/node_modules/undici/lib/dispatcher/proxy-agent.js +0 -275
- package/bundle/node_modules/undici/lib/dispatcher/retry-agent.js +0 -35
- package/bundle/node_modules/undici/lib/global.js +0 -32
- package/bundle/node_modules/undici/lib/handler/cache-handler.js +0 -448
- package/bundle/node_modules/undici/lib/handler/cache-revalidation-handler.js +0 -124
- package/bundle/node_modules/undici/lib/handler/decorator-handler.js +0 -67
- package/bundle/node_modules/undici/lib/handler/redirect-handler.js +0 -227
- package/bundle/node_modules/undici/lib/handler/retry-handler.js +0 -342
- package/bundle/node_modules/undici/lib/handler/unwrap-handler.js +0 -96
- package/bundle/node_modules/undici/lib/handler/wrap-handler.js +0 -95
- package/bundle/node_modules/undici/lib/interceptor/cache.js +0 -372
- package/bundle/node_modules/undici/lib/interceptor/dns.js +0 -432
- package/bundle/node_modules/undici/lib/interceptor/dump.js +0 -111
- package/bundle/node_modules/undici/lib/interceptor/redirect.js +0 -21
- package/bundle/node_modules/undici/lib/interceptor/response-error.js +0 -95
- package/bundle/node_modules/undici/lib/interceptor/retry.js +0 -19
- package/bundle/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/bundle/node_modules/undici/lib/llhttp/constants.d.ts +0 -97
- package/bundle/node_modules/undici/lib/llhttp/constants.js +0 -498
- package/bundle/node_modules/undici/lib/llhttp/constants.js.map +0 -1
- package/bundle/node_modules/undici/lib/llhttp/llhttp-wasm.js +0 -15
- package/bundle/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +0 -15
- package/bundle/node_modules/undici/lib/llhttp/utils.d.ts +0 -2
- package/bundle/node_modules/undici/lib/llhttp/utils.js +0 -15
- package/bundle/node_modules/undici/lib/llhttp/utils.js.map +0 -1
- package/bundle/node_modules/undici/lib/mock/mock-agent.js +0 -224
- package/bundle/node_modules/undici/lib/mock/mock-call-history.js +0 -248
- package/bundle/node_modules/undici/lib/mock/mock-client.js +0 -64
- package/bundle/node_modules/undici/lib/mock/mock-errors.js +0 -19
- package/bundle/node_modules/undici/lib/mock/mock-interceptor.js +0 -209
- package/bundle/node_modules/undici/lib/mock/mock-pool.js +0 -64
- package/bundle/node_modules/undici/lib/mock/mock-symbols.js +0 -31
- package/bundle/node_modules/undici/lib/mock/mock-utils.js +0 -433
- package/bundle/node_modules/undici/lib/mock/pending-interceptors-formatter.js +0 -43
- package/bundle/node_modules/undici/lib/util/cache.js +0 -368
- package/bundle/node_modules/undici/lib/util/date.js +0 -259
- package/bundle/node_modules/undici/lib/util/stats.js +0 -32
- package/bundle/node_modules/undici/lib/util/timers.js +0 -423
- package/bundle/node_modules/undici/lib/web/cache/cache.js +0 -862
- package/bundle/node_modules/undici/lib/web/cache/cachestorage.js +0 -152
- package/bundle/node_modules/undici/lib/web/cache/util.js +0 -45
- package/bundle/node_modules/undici/lib/web/cookies/constants.js +0 -12
- package/bundle/node_modules/undici/lib/web/cookies/index.js +0 -199
- package/bundle/node_modules/undici/lib/web/cookies/parse.js +0 -322
- package/bundle/node_modules/undici/lib/web/cookies/util.js +0 -282
- package/bundle/node_modules/undici/lib/web/eventsource/eventsource-stream.js +0 -399
- package/bundle/node_modules/undici/lib/web/eventsource/eventsource.js +0 -484
- package/bundle/node_modules/undici/lib/web/eventsource/util.js +0 -37
- package/bundle/node_modules/undici/lib/web/fetch/LICENSE +0 -21
- package/bundle/node_modules/undici/lib/web/fetch/body.js +0 -532
- package/bundle/node_modules/undici/lib/web/fetch/constants.js +0 -131
- package/bundle/node_modules/undici/lib/web/fetch/data-url.js +0 -744
- package/bundle/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +0 -46
- package/bundle/node_modules/undici/lib/web/fetch/formdata-parser.js +0 -501
- package/bundle/node_modules/undici/lib/web/fetch/formdata.js +0 -263
- package/bundle/node_modules/undici/lib/web/fetch/global.js +0 -40
- package/bundle/node_modules/undici/lib/web/fetch/headers.js +0 -719
- package/bundle/node_modules/undici/lib/web/fetch/index.js +0 -2258
- package/bundle/node_modules/undici/lib/web/fetch/request.js +0 -1099
- package/bundle/node_modules/undici/lib/web/fetch/response.js +0 -636
- package/bundle/node_modules/undici/lib/web/fetch/util.js +0 -1782
- package/bundle/node_modules/undici/lib/web/fetch/webidl.js +0 -740
- package/bundle/node_modules/undici/lib/web/websocket/connection.js +0 -325
- package/bundle/node_modules/undici/lib/web/websocket/constants.js +0 -126
- package/bundle/node_modules/undici/lib/web/websocket/events.js +0 -331
- package/bundle/node_modules/undici/lib/web/websocket/frame.js +0 -138
- package/bundle/node_modules/undici/lib/web/websocket/permessage-deflate.js +0 -70
- package/bundle/node_modules/undici/lib/web/websocket/receiver.js +0 -454
- package/bundle/node_modules/undici/lib/web/websocket/sender.js +0 -109
- package/bundle/node_modules/undici/lib/web/websocket/stream/websocketerror.js +0 -83
- package/bundle/node_modules/undici/lib/web/websocket/stream/websocketstream.js +0 -485
- package/bundle/node_modules/undici/lib/web/websocket/util.js +0 -338
- package/bundle/node_modules/undici/lib/web/websocket/websocket.js +0 -686
- package/bundle/node_modules/undici/package.json +0 -149
- package/bundle/node_modules/undici/scripts/strip-comments.js +0 -10
- package/bundle/node_modules/undici/types/README.md +0 -6
- package/bundle/node_modules/undici/types/agent.d.ts +0 -35
- package/bundle/node_modules/undici/types/api.d.ts +0 -43
- package/bundle/node_modules/undici/types/balanced-pool.d.ts +0 -29
- package/bundle/node_modules/undici/types/cache-interceptor.d.ts +0 -172
- package/bundle/node_modules/undici/types/cache.d.ts +0 -36
- package/bundle/node_modules/undici/types/client-stats.d.ts +0 -15
- package/bundle/node_modules/undici/types/client.d.ts +0 -110
- package/bundle/node_modules/undici/types/connector.d.ts +0 -34
- package/bundle/node_modules/undici/types/content-type.d.ts +0 -21
- package/bundle/node_modules/undici/types/cookies.d.ts +0 -30
- package/bundle/node_modules/undici/types/diagnostics-channel.d.ts +0 -66
- package/bundle/node_modules/undici/types/dispatcher.d.ts +0 -281
- package/bundle/node_modules/undici/types/env-http-proxy-agent.d.ts +0 -21
- package/bundle/node_modules/undici/types/errors.d.ts +0 -171
- package/bundle/node_modules/undici/types/eventsource.d.ts +0 -61
- package/bundle/node_modules/undici/types/fetch.d.ts +0 -210
- package/bundle/node_modules/undici/types/formdata.d.ts +0 -108
- package/bundle/node_modules/undici/types/global-dispatcher.d.ts +0 -9
- package/bundle/node_modules/undici/types/global-origin.d.ts +0 -7
- package/bundle/node_modules/undici/types/h2c-client.d.ts +0 -75
- package/bundle/node_modules/undici/types/handlers.d.ts +0 -15
- package/bundle/node_modules/undici/types/header.d.ts +0 -160
- package/bundle/node_modules/undici/types/index.d.ts +0 -75
- package/bundle/node_modules/undici/types/interceptors.d.ts +0 -34
- package/bundle/node_modules/undici/types/mock-agent.d.ts +0 -68
- package/bundle/node_modules/undici/types/mock-call-history.d.ts +0 -111
- package/bundle/node_modules/undici/types/mock-client.d.ts +0 -25
- package/bundle/node_modules/undici/types/mock-errors.d.ts +0 -12
- package/bundle/node_modules/undici/types/mock-interceptor.d.ts +0 -93
- package/bundle/node_modules/undici/types/mock-pool.d.ts +0 -25
- package/bundle/node_modules/undici/types/patch.d.ts +0 -29
- package/bundle/node_modules/undici/types/pool-stats.d.ts +0 -19
- package/bundle/node_modules/undici/types/pool.d.ts +0 -41
- package/bundle/node_modules/undici/types/proxy-agent.d.ts +0 -29
- package/bundle/node_modules/undici/types/readable.d.ts +0 -68
- package/bundle/node_modules/undici/types/retry-agent.d.ts +0 -8
- package/bundle/node_modules/undici/types/retry-handler.d.ts +0 -116
- package/bundle/node_modules/undici/types/util.d.ts +0 -18
- package/bundle/node_modules/undici/types/utility.d.ts +0 -7
- package/bundle/node_modules/undici/types/webidl.d.ts +0 -266
- package/bundle/node_modules/undici/types/websocket.d.ts +0 -184
|
@@ -1,719 +0,0 @@
|
|
|
1
|
-
// https://github.com/Ethan-Arrowood/undici-fetch
|
|
2
|
-
|
|
3
|
-
'use strict'
|
|
4
|
-
|
|
5
|
-
const { kConstruct } = require('../../core/symbols')
|
|
6
|
-
const { kEnumerableProperty } = require('../../core/util')
|
|
7
|
-
const {
|
|
8
|
-
iteratorMixin,
|
|
9
|
-
isValidHeaderName,
|
|
10
|
-
isValidHeaderValue
|
|
11
|
-
} = require('./util')
|
|
12
|
-
const { webidl } = require('./webidl')
|
|
13
|
-
const assert = require('node:assert')
|
|
14
|
-
const util = require('node:util')
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @param {number} code
|
|
18
|
-
* @returns {code is (0x0a | 0x0d | 0x09 | 0x20)}
|
|
19
|
-
*/
|
|
20
|
-
function isHTTPWhiteSpaceCharCode (code) {
|
|
21
|
-
return code === 0x0a || code === 0x0d || code === 0x09 || code === 0x20
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
|
|
26
|
-
* @param {string} potentialValue
|
|
27
|
-
* @returns {string}
|
|
28
|
-
*/
|
|
29
|
-
function headerValueNormalize (potentialValue) {
|
|
30
|
-
// To normalize a byte sequence potentialValue, remove
|
|
31
|
-
// any leading and trailing HTTP whitespace bytes from
|
|
32
|
-
// potentialValue.
|
|
33
|
-
let i = 0; let j = potentialValue.length
|
|
34
|
-
|
|
35
|
-
while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j
|
|
36
|
-
while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i
|
|
37
|
-
|
|
38
|
-
return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* @param {Headers} headers
|
|
43
|
-
* @param {Array|Object} object
|
|
44
|
-
*/
|
|
45
|
-
function fill (headers, object) {
|
|
46
|
-
// To fill a Headers object headers with a given object object, run these steps:
|
|
47
|
-
|
|
48
|
-
// 1. If object is a sequence, then for each header in object:
|
|
49
|
-
// Note: webidl conversion to array has already been done.
|
|
50
|
-
if (Array.isArray(object)) {
|
|
51
|
-
for (let i = 0; i < object.length; ++i) {
|
|
52
|
-
const header = object[i]
|
|
53
|
-
// 1. If header does not contain exactly two items, then throw a TypeError.
|
|
54
|
-
if (header.length !== 2) {
|
|
55
|
-
throw webidl.errors.exception({
|
|
56
|
-
header: 'Headers constructor',
|
|
57
|
-
message: `expected name/value pair to be length 2, found ${header.length}.`
|
|
58
|
-
})
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// 2. Append (header’s first item, header’s second item) to headers.
|
|
62
|
-
appendHeader(headers, header[0], header[1])
|
|
63
|
-
}
|
|
64
|
-
} else if (typeof object === 'object' && object !== null) {
|
|
65
|
-
// Note: null should throw
|
|
66
|
-
|
|
67
|
-
// 2. Otherwise, object is a record, then for each key → value in object,
|
|
68
|
-
// append (key, value) to headers
|
|
69
|
-
const keys = Object.keys(object)
|
|
70
|
-
for (let i = 0; i < keys.length; ++i) {
|
|
71
|
-
appendHeader(headers, keys[i], object[keys[i]])
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
throw webidl.errors.conversionFailed({
|
|
75
|
-
prefix: 'Headers constructor',
|
|
76
|
-
argument: 'Argument 1',
|
|
77
|
-
types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* @see https://fetch.spec.whatwg.org/#concept-headers-append
|
|
84
|
-
* @param {Headers} headers
|
|
85
|
-
* @param {string} name
|
|
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
|
-
/**
|
|
130
|
-
* @param {Headers} target
|
|
131
|
-
*/
|
|
132
|
-
function headersListSortAndCombine (target) {
|
|
133
|
-
const headersList = getHeadersList(target)
|
|
134
|
-
|
|
135
|
-
if (!headersList) {
|
|
136
|
-
return []
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (headersList.sortedMap) {
|
|
140
|
-
return headersList.sortedMap
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// 1. Let headers be an empty list of headers with the key being the name
|
|
144
|
-
// and value the value.
|
|
145
|
-
const headers = []
|
|
146
|
-
|
|
147
|
-
// 2. Let names be the result of convert header names to a sorted-lowercase
|
|
148
|
-
// set with all the names of the headers in list.
|
|
149
|
-
const names = headersList.toSortedArray()
|
|
150
|
-
|
|
151
|
-
const cookies = headersList.cookies
|
|
152
|
-
|
|
153
|
-
// fast-path
|
|
154
|
-
if (cookies === null || cookies.length === 1) {
|
|
155
|
-
// Note: The non-null assertion of value has already been done by `HeadersList#toSortedArray`
|
|
156
|
-
return (headersList.sortedMap = names)
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// 3. For each name of names:
|
|
160
|
-
for (let i = 0; i < names.length; ++i) {
|
|
161
|
-
const { 0: name, 1: value } = names[i]
|
|
162
|
-
// 1. If name is `set-cookie`, then:
|
|
163
|
-
if (name === 'set-cookie') {
|
|
164
|
-
// 1. Let values be a list of all values of headers in list whose name
|
|
165
|
-
// is a byte-case-insensitive match for name, in order.
|
|
166
|
-
|
|
167
|
-
// 2. For each value of values:
|
|
168
|
-
// 1. Append (name, value) to headers.
|
|
169
|
-
for (let j = 0; j < cookies.length; ++j) {
|
|
170
|
-
headers.push([name, cookies[j]])
|
|
171
|
-
}
|
|
172
|
-
} else {
|
|
173
|
-
// 2. Otherwise:
|
|
174
|
-
|
|
175
|
-
// 1. Let value be the result of getting name from list.
|
|
176
|
-
|
|
177
|
-
// 2. Assert: value is non-null.
|
|
178
|
-
// Note: This operation was done by `HeadersList#toSortedArray`.
|
|
179
|
-
|
|
180
|
-
// 3. Append (name, value) to headers.
|
|
181
|
-
headers.push([name, value])
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// 4. Return headers.
|
|
186
|
-
return (headersList.sortedMap = headers)
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function compareHeaderName (a, b) {
|
|
190
|
-
return a[0] < b[0] ? -1 : 1
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
class HeadersList {
|
|
194
|
-
/** @type {[string, string][]|null} */
|
|
195
|
-
cookies = null
|
|
196
|
-
|
|
197
|
-
sortedMap
|
|
198
|
-
headersMap
|
|
199
|
-
|
|
200
|
-
constructor (init) {
|
|
201
|
-
if (init instanceof HeadersList) {
|
|
202
|
-
this.headersMap = new Map(init.headersMap)
|
|
203
|
-
this.sortedMap = init.sortedMap
|
|
204
|
-
this.cookies = init.cookies === null ? null : [...init.cookies]
|
|
205
|
-
} else {
|
|
206
|
-
this.headersMap = new Map(init)
|
|
207
|
-
this.sortedMap = null
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* @see https://fetch.spec.whatwg.org/#header-list-contains
|
|
213
|
-
* @param {string} name
|
|
214
|
-
* @param {boolean} isLowerCase
|
|
215
|
-
*/
|
|
216
|
-
contains (name, isLowerCase) {
|
|
217
|
-
// A header list list contains a header name name if list
|
|
218
|
-
// contains a header whose name is a byte-case-insensitive
|
|
219
|
-
// match for name.
|
|
220
|
-
|
|
221
|
-
return this.headersMap.has(isLowerCase ? name : name.toLowerCase())
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
clear () {
|
|
225
|
-
this.headersMap.clear()
|
|
226
|
-
this.sortedMap = null
|
|
227
|
-
this.cookies = null
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* @see https://fetch.spec.whatwg.org/#concept-header-list-append
|
|
232
|
-
* @param {string} name
|
|
233
|
-
* @param {string} value
|
|
234
|
-
* @param {boolean} isLowerCase
|
|
235
|
-
*/
|
|
236
|
-
append (name, value, isLowerCase) {
|
|
237
|
-
this.sortedMap = null
|
|
238
|
-
|
|
239
|
-
// 1. If list contains name, then set name to the first such
|
|
240
|
-
// header’s name.
|
|
241
|
-
const lowercaseName = isLowerCase ? name : name.toLowerCase()
|
|
242
|
-
const exists = this.headersMap.get(lowercaseName)
|
|
243
|
-
|
|
244
|
-
// 2. Append (name, value) to list.
|
|
245
|
-
if (exists) {
|
|
246
|
-
const delimiter = lowercaseName === 'cookie' ? '; ' : ', '
|
|
247
|
-
this.headersMap.set(lowercaseName, {
|
|
248
|
-
name: exists.name,
|
|
249
|
-
value: `${exists.value}${delimiter}${value}`
|
|
250
|
-
})
|
|
251
|
-
} else {
|
|
252
|
-
this.headersMap.set(lowercaseName, { name, value })
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (lowercaseName === 'set-cookie') {
|
|
256
|
-
(this.cookies ??= []).push(value)
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* @see https://fetch.spec.whatwg.org/#concept-header-list-set
|
|
262
|
-
* @param {string} name
|
|
263
|
-
* @param {string} value
|
|
264
|
-
* @param {boolean} isLowerCase
|
|
265
|
-
*/
|
|
266
|
-
set (name, value, isLowerCase) {
|
|
267
|
-
this.sortedMap = null
|
|
268
|
-
const lowercaseName = isLowerCase ? name : name.toLowerCase()
|
|
269
|
-
|
|
270
|
-
if (lowercaseName === 'set-cookie') {
|
|
271
|
-
this.cookies = [value]
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// 1. If list contains name, then set the value of
|
|
275
|
-
// the first such header to value and remove the
|
|
276
|
-
// others.
|
|
277
|
-
// 2. Otherwise, append header (name, value) to list.
|
|
278
|
-
this.headersMap.set(lowercaseName, { name, value })
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* @see https://fetch.spec.whatwg.org/#concept-header-list-delete
|
|
283
|
-
* @param {string} name
|
|
284
|
-
* @param {boolean} isLowerCase
|
|
285
|
-
*/
|
|
286
|
-
delete (name, isLowerCase) {
|
|
287
|
-
this.sortedMap = null
|
|
288
|
-
if (!isLowerCase) name = name.toLowerCase()
|
|
289
|
-
|
|
290
|
-
if (name === 'set-cookie') {
|
|
291
|
-
this.cookies = null
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
this.headersMap.delete(name)
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* @see https://fetch.spec.whatwg.org/#concept-header-list-get
|
|
299
|
-
* @param {string} name
|
|
300
|
-
* @param {boolean} isLowerCase
|
|
301
|
-
* @returns {string | null}
|
|
302
|
-
*/
|
|
303
|
-
get (name, isLowerCase) {
|
|
304
|
-
// 1. If list does not contain name, then return null.
|
|
305
|
-
// 2. Return the values of all headers in list whose name
|
|
306
|
-
// is a byte-case-insensitive match for name,
|
|
307
|
-
// separated from each other by 0x2C 0x20, in order.
|
|
308
|
-
return this.headersMap.get(isLowerCase ? name : name.toLowerCase())?.value ?? null
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
* [Symbol.iterator] () {
|
|
312
|
-
// use the lowercased name
|
|
313
|
-
for (const { 0: name, 1: { value } } of this.headersMap) {
|
|
314
|
-
yield [name, value]
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
get entries () {
|
|
319
|
-
const headers = {}
|
|
320
|
-
|
|
321
|
-
if (this.headersMap.size !== 0) {
|
|
322
|
-
for (const { name, value } of this.headersMap.values()) {
|
|
323
|
-
headers[name] = value
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return headers
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
rawValues () {
|
|
331
|
-
return this.headersMap.values()
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
get entriesList () {
|
|
335
|
-
const headers = []
|
|
336
|
-
|
|
337
|
-
if (this.headersMap.size !== 0) {
|
|
338
|
-
for (const { 0: lowerName, 1: { name, value } } of this.headersMap) {
|
|
339
|
-
if (lowerName === 'set-cookie') {
|
|
340
|
-
for (const cookie of this.cookies) {
|
|
341
|
-
headers.push([name, cookie])
|
|
342
|
-
}
|
|
343
|
-
} else {
|
|
344
|
-
headers.push([name, value])
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
return headers
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set
|
|
353
|
-
toSortedArray () {
|
|
354
|
-
const size = this.headersMap.size
|
|
355
|
-
const array = new Array(size)
|
|
356
|
-
// In most cases, you will use the fast-path.
|
|
357
|
-
// fast-path: Use binary insertion sort for small arrays.
|
|
358
|
-
if (size <= 32) {
|
|
359
|
-
if (size === 0) {
|
|
360
|
-
// If empty, it is an empty array. To avoid the first index assignment.
|
|
361
|
-
return array
|
|
362
|
-
}
|
|
363
|
-
// Improve performance by unrolling loop and avoiding double-loop.
|
|
364
|
-
// Double-loop-less version of the binary insertion sort.
|
|
365
|
-
const iterator = this.headersMap[Symbol.iterator]()
|
|
366
|
-
const firstValue = iterator.next().value
|
|
367
|
-
// set [name, value] to first index.
|
|
368
|
-
array[0] = [firstValue[0], firstValue[1].value]
|
|
369
|
-
// https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine
|
|
370
|
-
// 3.2.2. Assert: value is non-null.
|
|
371
|
-
assert(firstValue[1].value !== null)
|
|
372
|
-
for (
|
|
373
|
-
let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value;
|
|
374
|
-
i < size;
|
|
375
|
-
++i
|
|
376
|
-
) {
|
|
377
|
-
// get next value
|
|
378
|
-
value = iterator.next().value
|
|
379
|
-
// set [name, value] to current index.
|
|
380
|
-
x = array[i] = [value[0], value[1].value]
|
|
381
|
-
// https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine
|
|
382
|
-
// 3.2.2. Assert: value is non-null.
|
|
383
|
-
assert(x[1] !== null)
|
|
384
|
-
left = 0
|
|
385
|
-
right = i
|
|
386
|
-
// binary search
|
|
387
|
-
while (left < right) {
|
|
388
|
-
// middle index
|
|
389
|
-
pivot = left + ((right - left) >> 1)
|
|
390
|
-
// compare header name
|
|
391
|
-
if (array[pivot][0] <= x[0]) {
|
|
392
|
-
left = pivot + 1
|
|
393
|
-
} else {
|
|
394
|
-
right = pivot
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
if (i !== pivot) {
|
|
398
|
-
j = i
|
|
399
|
-
while (j > left) {
|
|
400
|
-
array[j] = array[--j]
|
|
401
|
-
}
|
|
402
|
-
array[left] = x
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
/* c8 ignore next 4 */
|
|
406
|
-
if (!iterator.next().done) {
|
|
407
|
-
// This is for debugging and will never be called.
|
|
408
|
-
throw new TypeError('Unreachable')
|
|
409
|
-
}
|
|
410
|
-
return array
|
|
411
|
-
} else {
|
|
412
|
-
// This case would be a rare occurrence.
|
|
413
|
-
// slow-path: fallback
|
|
414
|
-
let i = 0
|
|
415
|
-
for (const { 0: name, 1: { value } } of this.headersMap) {
|
|
416
|
-
array[i++] = [name, value]
|
|
417
|
-
// https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine
|
|
418
|
-
// 3.2.2. Assert: value is non-null.
|
|
419
|
-
assert(value !== null)
|
|
420
|
-
}
|
|
421
|
-
return array.sort(compareHeaderName)
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
// https://fetch.spec.whatwg.org/#headers-class
|
|
427
|
-
class Headers {
|
|
428
|
-
#guard
|
|
429
|
-
/**
|
|
430
|
-
* @type {HeadersList}
|
|
431
|
-
*/
|
|
432
|
-
#headersList
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* @param {HeadersInit|Symbol} [init]
|
|
436
|
-
* @returns
|
|
437
|
-
*/
|
|
438
|
-
constructor (init = undefined) {
|
|
439
|
-
webidl.util.markAsUncloneable(this)
|
|
440
|
-
|
|
441
|
-
if (init === kConstruct) {
|
|
442
|
-
return
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
this.#headersList = new HeadersList()
|
|
446
|
-
|
|
447
|
-
// The new Headers(init) constructor steps are:
|
|
448
|
-
|
|
449
|
-
// 1. Set this’s guard to "none".
|
|
450
|
-
this.#guard = 'none'
|
|
451
|
-
|
|
452
|
-
// 2. If init is given, then fill this with init.
|
|
453
|
-
if (init !== undefined) {
|
|
454
|
-
init = webidl.converters.HeadersInit(init, 'Headers constructor', 'init')
|
|
455
|
-
fill(this, init)
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
// https://fetch.spec.whatwg.org/#dom-headers-append
|
|
460
|
-
append (name, value) {
|
|
461
|
-
webidl.brandCheck(this, Headers)
|
|
462
|
-
|
|
463
|
-
webidl.argumentLengthCheck(arguments, 2, 'Headers.append')
|
|
464
|
-
|
|
465
|
-
const prefix = 'Headers.append'
|
|
466
|
-
name = webidl.converters.ByteString(name, prefix, 'name')
|
|
467
|
-
value = webidl.converters.ByteString(value, prefix, 'value')
|
|
468
|
-
|
|
469
|
-
return appendHeader(this, name, value)
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
// https://fetch.spec.whatwg.org/#dom-headers-delete
|
|
473
|
-
delete (name) {
|
|
474
|
-
webidl.brandCheck(this, Headers)
|
|
475
|
-
|
|
476
|
-
webidl.argumentLengthCheck(arguments, 1, 'Headers.delete')
|
|
477
|
-
|
|
478
|
-
const prefix = 'Headers.delete'
|
|
479
|
-
name = webidl.converters.ByteString(name, prefix, 'name')
|
|
480
|
-
|
|
481
|
-
// 1. If name is not a header name, then throw a TypeError.
|
|
482
|
-
if (!isValidHeaderName(name)) {
|
|
483
|
-
throw webidl.errors.invalidArgument({
|
|
484
|
-
prefix: 'Headers.delete',
|
|
485
|
-
value: name,
|
|
486
|
-
type: 'header name'
|
|
487
|
-
})
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
// 2. If this’s guard is "immutable", then throw a TypeError.
|
|
491
|
-
// 3. Otherwise, if this’s guard is "request" and name is a
|
|
492
|
-
// forbidden header name, return.
|
|
493
|
-
// 4. Otherwise, if this’s guard is "request-no-cors", name
|
|
494
|
-
// is not a no-CORS-safelisted request-header name, and
|
|
495
|
-
// name is not a privileged no-CORS request-header name,
|
|
496
|
-
// return.
|
|
497
|
-
// 5. Otherwise, if this’s guard is "response" and name is
|
|
498
|
-
// a forbidden response-header name, return.
|
|
499
|
-
// Note: undici does not implement forbidden header names
|
|
500
|
-
if (this.#guard === 'immutable') {
|
|
501
|
-
throw new TypeError('immutable')
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
// 6. If this’s header list does not contain name, then
|
|
505
|
-
// return.
|
|
506
|
-
if (!this.#headersList.contains(name, false)) {
|
|
507
|
-
return
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
// 7. Delete name from this’s header list.
|
|
511
|
-
// 8. If this’s guard is "request-no-cors", then remove
|
|
512
|
-
// privileged no-CORS request headers from this.
|
|
513
|
-
this.#headersList.delete(name, false)
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
// https://fetch.spec.whatwg.org/#dom-headers-get
|
|
517
|
-
get (name) {
|
|
518
|
-
webidl.brandCheck(this, Headers)
|
|
519
|
-
|
|
520
|
-
webidl.argumentLengthCheck(arguments, 1, 'Headers.get')
|
|
521
|
-
|
|
522
|
-
const prefix = 'Headers.get'
|
|
523
|
-
name = webidl.converters.ByteString(name, prefix, 'name')
|
|
524
|
-
|
|
525
|
-
// 1. If name is not a header name, then throw a TypeError.
|
|
526
|
-
if (!isValidHeaderName(name)) {
|
|
527
|
-
throw webidl.errors.invalidArgument({
|
|
528
|
-
prefix,
|
|
529
|
-
value: name,
|
|
530
|
-
type: 'header name'
|
|
531
|
-
})
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
// 2. Return the result of getting name from this’s header
|
|
535
|
-
// list.
|
|
536
|
-
return this.#headersList.get(name, false)
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
// https://fetch.spec.whatwg.org/#dom-headers-has
|
|
540
|
-
has (name) {
|
|
541
|
-
webidl.brandCheck(this, Headers)
|
|
542
|
-
|
|
543
|
-
webidl.argumentLengthCheck(arguments, 1, 'Headers.has')
|
|
544
|
-
|
|
545
|
-
const prefix = 'Headers.has'
|
|
546
|
-
name = webidl.converters.ByteString(name, prefix, 'name')
|
|
547
|
-
|
|
548
|
-
// 1. If name is not a header name, then throw a TypeError.
|
|
549
|
-
if (!isValidHeaderName(name)) {
|
|
550
|
-
throw webidl.errors.invalidArgument({
|
|
551
|
-
prefix,
|
|
552
|
-
value: name,
|
|
553
|
-
type: 'header name'
|
|
554
|
-
})
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
// 2. Return true if this’s header list contains name;
|
|
558
|
-
// otherwise false.
|
|
559
|
-
return this.#headersList.contains(name, false)
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
// https://fetch.spec.whatwg.org/#dom-headers-set
|
|
563
|
-
set (name, value) {
|
|
564
|
-
webidl.brandCheck(this, Headers)
|
|
565
|
-
|
|
566
|
-
webidl.argumentLengthCheck(arguments, 2, 'Headers.set')
|
|
567
|
-
|
|
568
|
-
const prefix = 'Headers.set'
|
|
569
|
-
name = webidl.converters.ByteString(name, prefix, 'name')
|
|
570
|
-
value = webidl.converters.ByteString(value, prefix, 'value')
|
|
571
|
-
|
|
572
|
-
// 1. Normalize value.
|
|
573
|
-
value = headerValueNormalize(value)
|
|
574
|
-
|
|
575
|
-
// 2. If name is not a header name or value is not a
|
|
576
|
-
// header value, then throw a TypeError.
|
|
577
|
-
if (!isValidHeaderName(name)) {
|
|
578
|
-
throw webidl.errors.invalidArgument({
|
|
579
|
-
prefix,
|
|
580
|
-
value: name,
|
|
581
|
-
type: 'header name'
|
|
582
|
-
})
|
|
583
|
-
} else if (!isValidHeaderValue(value)) {
|
|
584
|
-
throw webidl.errors.invalidArgument({
|
|
585
|
-
prefix,
|
|
586
|
-
value,
|
|
587
|
-
type: 'header value'
|
|
588
|
-
})
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
// 3. If this’s guard is "immutable", then throw a TypeError.
|
|
592
|
-
// 4. Otherwise, if this’s guard is "request" and name is a
|
|
593
|
-
// forbidden header name, return.
|
|
594
|
-
// 5. Otherwise, if this’s guard is "request-no-cors" and
|
|
595
|
-
// name/value is not a no-CORS-safelisted request-header,
|
|
596
|
-
// return.
|
|
597
|
-
// 6. Otherwise, if this’s guard is "response" and name is a
|
|
598
|
-
// forbidden response-header name, return.
|
|
599
|
-
// Note: undici does not implement forbidden header names
|
|
600
|
-
if (this.#guard === 'immutable') {
|
|
601
|
-
throw new TypeError('immutable')
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
// 7. Set (name, value) in this’s header list.
|
|
605
|
-
// 8. If this’s guard is "request-no-cors", then remove
|
|
606
|
-
// privileged no-CORS request headers from this
|
|
607
|
-
this.#headersList.set(name, value, false)
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
// https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
|
|
611
|
-
getSetCookie () {
|
|
612
|
-
webidl.brandCheck(this, Headers)
|
|
613
|
-
|
|
614
|
-
// 1. If this’s header list does not contain `Set-Cookie`, then return « ».
|
|
615
|
-
// 2. Return the values of all headers in this’s header list whose name is
|
|
616
|
-
// a byte-case-insensitive match for `Set-Cookie`, in order.
|
|
617
|
-
|
|
618
|
-
const list = this.#headersList.cookies
|
|
619
|
-
|
|
620
|
-
if (list) {
|
|
621
|
-
return [...list]
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
return []
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
[util.inspect.custom] (depth, options) {
|
|
628
|
-
options.depth ??= depth
|
|
629
|
-
|
|
630
|
-
return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}`
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
static getHeadersGuard (o) {
|
|
634
|
-
return o.#guard
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
static setHeadersGuard (o, guard) {
|
|
638
|
-
o.#guard = guard
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
/**
|
|
642
|
-
* @param {Headers} o
|
|
643
|
-
*/
|
|
644
|
-
static getHeadersList (o) {
|
|
645
|
-
return o.#headersList
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
/**
|
|
649
|
-
* @param {Headers} target
|
|
650
|
-
* @param {HeadersList} list
|
|
651
|
-
*/
|
|
652
|
-
static setHeadersList (target, list) {
|
|
653
|
-
target.#headersList = list
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
const { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers
|
|
658
|
-
Reflect.deleteProperty(Headers, 'getHeadersGuard')
|
|
659
|
-
Reflect.deleteProperty(Headers, 'setHeadersGuard')
|
|
660
|
-
Reflect.deleteProperty(Headers, 'getHeadersList')
|
|
661
|
-
Reflect.deleteProperty(Headers, 'setHeadersList')
|
|
662
|
-
|
|
663
|
-
iteratorMixin('Headers', Headers, headersListSortAndCombine, 0, 1)
|
|
664
|
-
|
|
665
|
-
Object.defineProperties(Headers.prototype, {
|
|
666
|
-
append: kEnumerableProperty,
|
|
667
|
-
delete: kEnumerableProperty,
|
|
668
|
-
get: kEnumerableProperty,
|
|
669
|
-
has: kEnumerableProperty,
|
|
670
|
-
set: kEnumerableProperty,
|
|
671
|
-
getSetCookie: kEnumerableProperty,
|
|
672
|
-
[Symbol.toStringTag]: {
|
|
673
|
-
value: 'Headers',
|
|
674
|
-
configurable: true
|
|
675
|
-
},
|
|
676
|
-
[util.inspect.custom]: {
|
|
677
|
-
enumerable: false
|
|
678
|
-
}
|
|
679
|
-
})
|
|
680
|
-
|
|
681
|
-
webidl.converters.HeadersInit = function (V, prefix, argument) {
|
|
682
|
-
if (webidl.util.Type(V) === webidl.util.Types.OBJECT) {
|
|
683
|
-
const iterator = Reflect.get(V, Symbol.iterator)
|
|
684
|
-
|
|
685
|
-
// A work-around to ensure we send the properly-cased Headers when V is a Headers object.
|
|
686
|
-
// Read https://github.com/nodejs/undici/pull/3159#issuecomment-2075537226 before touching, please.
|
|
687
|
-
if (!util.types.isProxy(V) && iterator === Headers.prototype.entries) { // Headers object
|
|
688
|
-
try {
|
|
689
|
-
return getHeadersList(V).entriesList
|
|
690
|
-
} catch {
|
|
691
|
-
// fall-through
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
if (typeof iterator === 'function') {
|
|
696
|
-
return webidl.converters['sequence<sequence<ByteString>>'](V, prefix, argument, iterator.bind(V))
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
return webidl.converters['record<ByteString, ByteString>'](V, prefix, argument)
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
throw webidl.errors.conversionFailed({
|
|
703
|
-
prefix: 'Headers constructor',
|
|
704
|
-
argument: 'Argument 1',
|
|
705
|
-
types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']
|
|
706
|
-
})
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
module.exports = {
|
|
710
|
-
fill,
|
|
711
|
-
// for test.
|
|
712
|
-
compareHeaderName,
|
|
713
|
-
Headers,
|
|
714
|
-
HeadersList,
|
|
715
|
-
getHeadersGuard,
|
|
716
|
-
setHeadersGuard,
|
|
717
|
-
setHeadersList,
|
|
718
|
-
getHeadersList
|
|
719
|
-
}
|