@depup/undici 7.24.3-depup.0

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.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/changes.json +5 -0
  4. package/docs/docs/api/Agent.md +84 -0
  5. package/docs/docs/api/BalancedPool.md +99 -0
  6. package/docs/docs/api/CacheStorage.md +30 -0
  7. package/docs/docs/api/CacheStore.md +164 -0
  8. package/docs/docs/api/Client.md +285 -0
  9. package/docs/docs/api/ClientStats.md +27 -0
  10. package/docs/docs/api/Connector.md +115 -0
  11. package/docs/docs/api/ContentType.md +57 -0
  12. package/docs/docs/api/Cookies.md +101 -0
  13. package/docs/docs/api/Debug.md +62 -0
  14. package/docs/docs/api/DiagnosticsChannel.md +313 -0
  15. package/docs/docs/api/Dispatcher.md +1392 -0
  16. package/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  17. package/docs/docs/api/Errors.md +49 -0
  18. package/docs/docs/api/EventSource.md +45 -0
  19. package/docs/docs/api/Fetch.md +52 -0
  20. package/docs/docs/api/GlobalInstallation.md +91 -0
  21. package/docs/docs/api/H2CClient.md +263 -0
  22. package/docs/docs/api/MockAgent.md +603 -0
  23. package/docs/docs/api/MockCallHistory.md +197 -0
  24. package/docs/docs/api/MockCallHistoryLog.md +43 -0
  25. package/docs/docs/api/MockClient.md +81 -0
  26. package/docs/docs/api/MockErrors.md +12 -0
  27. package/docs/docs/api/MockPool.md +555 -0
  28. package/docs/docs/api/Pool.md +84 -0
  29. package/docs/docs/api/PoolStats.md +35 -0
  30. package/docs/docs/api/ProxyAgent.md +229 -0
  31. package/docs/docs/api/RedirectHandler.md +96 -0
  32. package/docs/docs/api/RetryAgent.md +50 -0
  33. package/docs/docs/api/RetryHandler.md +118 -0
  34. package/docs/docs/api/RoundRobinPool.md +145 -0
  35. package/docs/docs/api/SnapshotAgent.md +616 -0
  36. package/docs/docs/api/Socks5ProxyAgent.md +274 -0
  37. package/docs/docs/api/Util.md +25 -0
  38. package/docs/docs/api/WebSocket.md +141 -0
  39. package/docs/docs/api/api-lifecycle.md +91 -0
  40. package/docs/docs/best-practices/client-certificate.md +64 -0
  41. package/docs/docs/best-practices/crawling.md +58 -0
  42. package/docs/docs/best-practices/mocking-request.md +190 -0
  43. package/docs/docs/best-practices/proxy.md +127 -0
  44. package/docs/docs/best-practices/undici-vs-builtin-fetch.md +137 -0
  45. package/docs/docs/best-practices/writing-tests.md +20 -0
  46. package/index-fetch.js +65 -0
  47. package/index.d.ts +3 -0
  48. package/index.js +234 -0
  49. package/lib/api/abort-signal.js +59 -0
  50. package/lib/api/api-connect.js +110 -0
  51. package/lib/api/api-pipeline.js +252 -0
  52. package/lib/api/api-request.js +214 -0
  53. package/lib/api/api-stream.js +209 -0
  54. package/lib/api/api-upgrade.js +111 -0
  55. package/lib/api/index.js +7 -0
  56. package/lib/api/readable.js +580 -0
  57. package/lib/cache/memory-cache-store.js +234 -0
  58. package/lib/cache/sqlite-cache-store.js +461 -0
  59. package/lib/core/connect.js +137 -0
  60. package/lib/core/constants.js +143 -0
  61. package/lib/core/diagnostics.js +225 -0
  62. package/lib/core/errors.js +477 -0
  63. package/lib/core/request.js +430 -0
  64. package/lib/core/socks5-client.js +407 -0
  65. package/lib/core/socks5-utils.js +203 -0
  66. package/lib/core/symbols.js +75 -0
  67. package/lib/core/tree.js +160 -0
  68. package/lib/core/util.js +972 -0
  69. package/lib/dispatcher/agent.js +158 -0
  70. package/lib/dispatcher/balanced-pool.js +219 -0
  71. package/lib/dispatcher/client-h1.js +1610 -0
  72. package/lib/dispatcher/client-h2.js +995 -0
  73. package/lib/dispatcher/client.js +654 -0
  74. package/lib/dispatcher/dispatcher-base.js +165 -0
  75. package/lib/dispatcher/dispatcher.js +48 -0
  76. package/lib/dispatcher/env-http-proxy-agent.js +146 -0
  77. package/lib/dispatcher/fixed-queue.js +135 -0
  78. package/lib/dispatcher/h2c-client.js +51 -0
  79. package/lib/dispatcher/pool-base.js +214 -0
  80. package/lib/dispatcher/pool.js +118 -0
  81. package/lib/dispatcher/proxy-agent.js +318 -0
  82. package/lib/dispatcher/retry-agent.js +35 -0
  83. package/lib/dispatcher/round-robin-pool.js +137 -0
  84. package/lib/dispatcher/socks5-proxy-agent.js +249 -0
  85. package/lib/encoding/index.js +33 -0
  86. package/lib/global.js +50 -0
  87. package/lib/handler/cache-handler.js +561 -0
  88. package/lib/handler/cache-revalidation-handler.js +124 -0
  89. package/lib/handler/decorator-handler.js +67 -0
  90. package/lib/handler/deduplication-handler.js +460 -0
  91. package/lib/handler/redirect-handler.js +238 -0
  92. package/lib/handler/retry-handler.js +394 -0
  93. package/lib/handler/unwrap-handler.js +100 -0
  94. package/lib/handler/wrap-handler.js +105 -0
  95. package/lib/interceptor/cache.js +495 -0
  96. package/lib/interceptor/decompress.js +259 -0
  97. package/lib/interceptor/deduplicate.js +117 -0
  98. package/lib/interceptor/dns.js +571 -0
  99. package/lib/interceptor/dump.js +112 -0
  100. package/lib/interceptor/redirect.js +21 -0
  101. package/lib/interceptor/response-error.js +95 -0
  102. package/lib/interceptor/retry.js +19 -0
  103. package/lib/llhttp/.gitkeep +0 -0
  104. package/lib/llhttp/constants.d.ts +195 -0
  105. package/lib/llhttp/constants.js +531 -0
  106. package/lib/llhttp/llhttp-wasm.js +15 -0
  107. package/lib/llhttp/llhttp_simd-wasm.js +15 -0
  108. package/lib/llhttp/utils.d.ts +2 -0
  109. package/lib/llhttp/utils.js +12 -0
  110. package/lib/mock/mock-agent.js +232 -0
  111. package/lib/mock/mock-call-history.js +248 -0
  112. package/lib/mock/mock-client.js +68 -0
  113. package/lib/mock/mock-errors.js +29 -0
  114. package/lib/mock/mock-interceptor.js +209 -0
  115. package/lib/mock/mock-pool.js +68 -0
  116. package/lib/mock/mock-symbols.js +31 -0
  117. package/lib/mock/mock-utils.js +480 -0
  118. package/lib/mock/pending-interceptors-formatter.js +43 -0
  119. package/lib/mock/snapshot-agent.js +353 -0
  120. package/lib/mock/snapshot-recorder.js +588 -0
  121. package/lib/mock/snapshot-utils.js +158 -0
  122. package/lib/util/cache.js +407 -0
  123. package/lib/util/date.js +653 -0
  124. package/lib/util/promise.js +28 -0
  125. package/lib/util/runtime-features.js +124 -0
  126. package/lib/util/stats.js +32 -0
  127. package/lib/util/timers.js +425 -0
  128. package/lib/web/cache/cache.js +864 -0
  129. package/lib/web/cache/cachestorage.js +152 -0
  130. package/lib/web/cache/util.js +45 -0
  131. package/lib/web/cookies/constants.js +12 -0
  132. package/lib/web/cookies/index.js +199 -0
  133. package/lib/web/cookies/parse.js +322 -0
  134. package/lib/web/cookies/util.js +282 -0
  135. package/lib/web/eventsource/eventsource-stream.js +399 -0
  136. package/lib/web/eventsource/eventsource.js +501 -0
  137. package/lib/web/eventsource/util.js +29 -0
  138. package/lib/web/fetch/LICENSE +21 -0
  139. package/lib/web/fetch/body.js +509 -0
  140. package/lib/web/fetch/constants.js +131 -0
  141. package/lib/web/fetch/data-url.js +596 -0
  142. package/lib/web/fetch/formdata-parser.js +575 -0
  143. package/lib/web/fetch/formdata.js +259 -0
  144. package/lib/web/fetch/global.js +40 -0
  145. package/lib/web/fetch/headers.js +719 -0
  146. package/lib/web/fetch/index.js +2378 -0
  147. package/lib/web/fetch/request.js +1115 -0
  148. package/lib/web/fetch/response.js +641 -0
  149. package/lib/web/fetch/util.js +1520 -0
  150. package/lib/web/infra/index.js +229 -0
  151. package/lib/web/subresource-integrity/Readme.md +9 -0
  152. package/lib/web/subresource-integrity/subresource-integrity.js +307 -0
  153. package/lib/web/webidl/index.js +1006 -0
  154. package/lib/web/websocket/connection.js +329 -0
  155. package/lib/web/websocket/constants.js +126 -0
  156. package/lib/web/websocket/events.js +331 -0
  157. package/lib/web/websocket/frame.js +133 -0
  158. package/lib/web/websocket/permessage-deflate.js +118 -0
  159. package/lib/web/websocket/receiver.js +450 -0
  160. package/lib/web/websocket/sender.js +109 -0
  161. package/lib/web/websocket/stream/websocketerror.js +104 -0
  162. package/lib/web/websocket/stream/websocketstream.js +497 -0
  163. package/lib/web/websocket/util.js +347 -0
  164. package/lib/web/websocket/websocket.js +739 -0
  165. package/package.json +163 -0
  166. package/scripts/strip-comments.js +10 -0
  167. package/types/README.md +6 -0
  168. package/types/agent.d.ts +32 -0
  169. package/types/api.d.ts +43 -0
  170. package/types/balanced-pool.d.ts +30 -0
  171. package/types/cache-interceptor.d.ts +179 -0
  172. package/types/cache.d.ts +36 -0
  173. package/types/client-stats.d.ts +15 -0
  174. package/types/client.d.ts +123 -0
  175. package/types/connector.d.ts +36 -0
  176. package/types/content-type.d.ts +21 -0
  177. package/types/cookies.d.ts +30 -0
  178. package/types/diagnostics-channel.d.ts +74 -0
  179. package/types/dispatcher.d.ts +279 -0
  180. package/types/env-http-proxy-agent.d.ts +22 -0
  181. package/types/errors.d.ts +177 -0
  182. package/types/eventsource.d.ts +66 -0
  183. package/types/fetch.d.ts +211 -0
  184. package/types/formdata.d.ts +108 -0
  185. package/types/global-dispatcher.d.ts +9 -0
  186. package/types/global-origin.d.ts +7 -0
  187. package/types/h2c-client.d.ts +73 -0
  188. package/types/handlers.d.ts +15 -0
  189. package/types/header.d.ts +160 -0
  190. package/types/index.d.ts +91 -0
  191. package/types/interceptors.d.ts +80 -0
  192. package/types/mock-agent.d.ts +68 -0
  193. package/types/mock-call-history.d.ts +111 -0
  194. package/types/mock-client.d.ts +27 -0
  195. package/types/mock-errors.d.ts +12 -0
  196. package/types/mock-interceptor.d.ts +94 -0
  197. package/types/mock-pool.d.ts +27 -0
  198. package/types/patch.d.ts +29 -0
  199. package/types/pool-stats.d.ts +19 -0
  200. package/types/pool.d.ts +41 -0
  201. package/types/proxy-agent.d.ts +29 -0
  202. package/types/readable.d.ts +68 -0
  203. package/types/retry-agent.d.ts +8 -0
  204. package/types/retry-handler.d.ts +125 -0
  205. package/types/round-robin-pool.d.ts +41 -0
  206. package/types/snapshot-agent.d.ts +109 -0
  207. package/types/socks5-proxy-agent.d.ts +25 -0
  208. package/types/util.d.ts +18 -0
  209. package/types/utility.d.ts +7 -0
  210. package/types/webidl.d.ts +347 -0
  211. package/types/websocket.d.ts +188 -0
@@ -0,0 +1,95 @@
1
+ 'use strict'
2
+
3
+ // const { parseHeaders } = require('../core/util')
4
+ const DecoratorHandler = require('../handler/decorator-handler')
5
+ const { ResponseError } = require('../core/errors')
6
+
7
+ class ResponseErrorHandler extends DecoratorHandler {
8
+ #statusCode
9
+ #contentType
10
+ #decoder
11
+ #headers
12
+ #body
13
+
14
+ constructor (_opts, { handler }) {
15
+ super(handler)
16
+ }
17
+
18
+ #checkContentType (contentType) {
19
+ return (this.#contentType ?? '').indexOf(contentType) === 0
20
+ }
21
+
22
+ onRequestStart (controller, context) {
23
+ this.#statusCode = 0
24
+ this.#contentType = null
25
+ this.#decoder = null
26
+ this.#headers = null
27
+ this.#body = ''
28
+
29
+ return super.onRequestStart(controller, context)
30
+ }
31
+
32
+ onResponseStart (controller, statusCode, headers, statusMessage) {
33
+ this.#statusCode = statusCode
34
+ this.#headers = headers
35
+ this.#contentType = headers['content-type']
36
+
37
+ if (this.#statusCode < 400) {
38
+ return super.onResponseStart(controller, statusCode, headers, statusMessage)
39
+ }
40
+
41
+ if (this.#checkContentType('application/json') || this.#checkContentType('text/plain')) {
42
+ this.#decoder = new TextDecoder('utf-8')
43
+ }
44
+ }
45
+
46
+ onResponseData (controller, chunk) {
47
+ if (this.#statusCode < 400) {
48
+ return super.onResponseData(controller, chunk)
49
+ }
50
+
51
+ this.#body += this.#decoder?.decode(chunk, { stream: true }) ?? ''
52
+ }
53
+
54
+ onResponseEnd (controller, trailers) {
55
+ if (this.#statusCode >= 400) {
56
+ this.#body += this.#decoder?.decode(undefined, { stream: false }) ?? ''
57
+
58
+ if (this.#checkContentType('application/json')) {
59
+ try {
60
+ this.#body = JSON.parse(this.#body)
61
+ } catch {
62
+ // Do nothing...
63
+ }
64
+ }
65
+
66
+ let err
67
+ const stackTraceLimit = Error.stackTraceLimit
68
+ Error.stackTraceLimit = 0
69
+ try {
70
+ err = new ResponseError('Response Error', this.#statusCode, {
71
+ body: this.#body,
72
+ headers: this.#headers
73
+ })
74
+ } finally {
75
+ Error.stackTraceLimit = stackTraceLimit
76
+ }
77
+
78
+ super.onResponseError(controller, err)
79
+ } else {
80
+ super.onResponseEnd(controller, trailers)
81
+ }
82
+ }
83
+
84
+ onResponseError (controller, err) {
85
+ super.onResponseError(controller, err)
86
+ }
87
+ }
88
+
89
+ module.exports = () => {
90
+ return (dispatch) => {
91
+ return function Intercept (opts, handler) {
92
+ return dispatch(opts, new ResponseErrorHandler(opts, { handler }))
93
+ }
94
+ }
95
+ }
@@ -0,0 +1,19 @@
1
+ 'use strict'
2
+ const RetryHandler = require('../handler/retry-handler')
3
+
4
+ module.exports = globalOpts => {
5
+ return dispatch => {
6
+ return function retryInterceptor (opts, handler) {
7
+ return dispatch(
8
+ opts,
9
+ new RetryHandler(
10
+ { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } },
11
+ {
12
+ handler,
13
+ dispatch
14
+ }
15
+ )
16
+ )
17
+ }
18
+ }
19
+ }
File without changes
@@ -0,0 +1,195 @@
1
+ export type IntDict = Record<string, number>;
2
+ export declare const ERROR: IntDict;
3
+ export declare const TYPE: IntDict;
4
+ export declare const FLAGS: IntDict;
5
+ export declare const LENIENT_FLAGS: IntDict;
6
+ export declare const METHODS: IntDict;
7
+ export declare const STATUSES: IntDict;
8
+ export declare const FINISH: IntDict;
9
+ export declare const HEADER_STATE: IntDict;
10
+ export declare const METHODS_HTTP: number[];
11
+ export declare const METHODS_ICE: number[];
12
+ export declare const METHODS_RTSP: number[];
13
+ export declare const METHOD_MAP: IntDict;
14
+ export declare const H_METHOD_MAP: {
15
+ [k: string]: number;
16
+ };
17
+ export declare const STATUSES_HTTP: number[];
18
+ export type CharList = (string | number)[];
19
+ export declare const ALPHA: CharList;
20
+ export declare const NUM_MAP: {
21
+ 0: number;
22
+ 1: number;
23
+ 2: number;
24
+ 3: number;
25
+ 4: number;
26
+ 5: number;
27
+ 6: number;
28
+ 7: number;
29
+ 8: number;
30
+ 9: number;
31
+ };
32
+ export declare const HEX_MAP: {
33
+ 0: number;
34
+ 1: number;
35
+ 2: number;
36
+ 3: number;
37
+ 4: number;
38
+ 5: number;
39
+ 6: number;
40
+ 7: number;
41
+ 8: number;
42
+ 9: number;
43
+ A: number;
44
+ B: number;
45
+ C: number;
46
+ D: number;
47
+ E: number;
48
+ F: number;
49
+ a: number;
50
+ b: number;
51
+ c: number;
52
+ d: number;
53
+ e: number;
54
+ f: number;
55
+ };
56
+ export declare const NUM: CharList;
57
+ export declare const ALPHANUM: CharList;
58
+ export declare const MARK: CharList;
59
+ export declare const USERINFO_CHARS: CharList;
60
+ export declare const URL_CHAR: CharList;
61
+ export declare const HEX: CharList;
62
+ export declare const TOKEN: CharList;
63
+ export declare const HEADER_CHARS: CharList;
64
+ export declare const CONNECTION_TOKEN_CHARS: CharList;
65
+ export declare const QUOTED_STRING: CharList;
66
+ export declare const HTAB_SP_VCHAR_OBS_TEXT: CharList;
67
+ export declare const MAJOR: {
68
+ 0: number;
69
+ 1: number;
70
+ 2: number;
71
+ 3: number;
72
+ 4: number;
73
+ 5: number;
74
+ 6: number;
75
+ 7: number;
76
+ 8: number;
77
+ 9: number;
78
+ };
79
+ export declare const MINOR: {
80
+ 0: number;
81
+ 1: number;
82
+ 2: number;
83
+ 3: number;
84
+ 4: number;
85
+ 5: number;
86
+ 6: number;
87
+ 7: number;
88
+ 8: number;
89
+ 9: number;
90
+ };
91
+ export declare const SPECIAL_HEADERS: {
92
+ connection: number;
93
+ 'content-length': number;
94
+ 'proxy-connection': number;
95
+ 'transfer-encoding': number;
96
+ upgrade: number;
97
+ };
98
+ declare const _default: {
99
+ ERROR: IntDict;
100
+ TYPE: IntDict;
101
+ FLAGS: IntDict;
102
+ LENIENT_FLAGS: IntDict;
103
+ METHODS: IntDict;
104
+ STATUSES: IntDict;
105
+ FINISH: IntDict;
106
+ HEADER_STATE: IntDict;
107
+ ALPHA: CharList;
108
+ NUM_MAP: {
109
+ 0: number;
110
+ 1: number;
111
+ 2: number;
112
+ 3: number;
113
+ 4: number;
114
+ 5: number;
115
+ 6: number;
116
+ 7: number;
117
+ 8: number;
118
+ 9: number;
119
+ };
120
+ HEX_MAP: {
121
+ 0: number;
122
+ 1: number;
123
+ 2: number;
124
+ 3: number;
125
+ 4: number;
126
+ 5: number;
127
+ 6: number;
128
+ 7: number;
129
+ 8: number;
130
+ 9: number;
131
+ A: number;
132
+ B: number;
133
+ C: number;
134
+ D: number;
135
+ E: number;
136
+ F: number;
137
+ a: number;
138
+ b: number;
139
+ c: number;
140
+ d: number;
141
+ e: number;
142
+ f: number;
143
+ };
144
+ NUM: CharList;
145
+ ALPHANUM: CharList;
146
+ MARK: CharList;
147
+ USERINFO_CHARS: CharList;
148
+ URL_CHAR: CharList;
149
+ HEX: CharList;
150
+ TOKEN: CharList;
151
+ HEADER_CHARS: CharList;
152
+ CONNECTION_TOKEN_CHARS: CharList;
153
+ QUOTED_STRING: CharList;
154
+ HTAB_SP_VCHAR_OBS_TEXT: CharList;
155
+ MAJOR: {
156
+ 0: number;
157
+ 1: number;
158
+ 2: number;
159
+ 3: number;
160
+ 4: number;
161
+ 5: number;
162
+ 6: number;
163
+ 7: number;
164
+ 8: number;
165
+ 9: number;
166
+ };
167
+ MINOR: {
168
+ 0: number;
169
+ 1: number;
170
+ 2: number;
171
+ 3: number;
172
+ 4: number;
173
+ 5: number;
174
+ 6: number;
175
+ 7: number;
176
+ 8: number;
177
+ 9: number;
178
+ };
179
+ SPECIAL_HEADERS: {
180
+ connection: number;
181
+ 'content-length': number;
182
+ 'proxy-connection': number;
183
+ 'transfer-encoding': number;
184
+ upgrade: number;
185
+ };
186
+ METHODS_HTTP: number[];
187
+ METHODS_ICE: number[];
188
+ METHODS_RTSP: number[];
189
+ METHOD_MAP: IntDict;
190
+ H_METHOD_MAP: {
191
+ [k: string]: number;
192
+ };
193
+ STATUSES_HTTP: number[];
194
+ };
195
+ export default _default;