@nocobase/plugin-idp-oauth 2.1.0-alpha.17 → 2.1.0-alpha.18

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 (214) hide show
  1. package/build.config.ts +1 -1
  2. package/dist/externalVersion.js +4 -4
  3. package/dist/node_modules/light-my-request/package.json +1 -1
  4. package/dist/node_modules/undici/LICENSE +21 -0
  5. package/dist/node_modules/undici/README.md +741 -0
  6. package/dist/node_modules/undici/docs/docs/api/Agent.md +84 -0
  7. package/dist/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  8. package/dist/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  9. package/dist/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
  10. package/dist/node_modules/undici/docs/docs/api/Client.md +285 -0
  11. package/dist/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
  12. package/dist/node_modules/undici/docs/docs/api/Connector.md +115 -0
  13. package/dist/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  14. package/dist/node_modules/undici/docs/docs/api/Cookies.md +101 -0
  15. package/dist/node_modules/undici/docs/docs/api/Debug.md +62 -0
  16. package/dist/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +315 -0
  17. package/dist/node_modules/undici/docs/docs/api/Dispatcher.md +1392 -0
  18. package/dist/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  19. package/dist/node_modules/undici/docs/docs/api/Errors.md +49 -0
  20. package/dist/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  21. package/dist/node_modules/undici/docs/docs/api/Fetch.md +60 -0
  22. package/dist/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
  23. package/dist/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
  24. package/dist/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
  25. package/dist/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
  26. package/dist/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
  27. package/dist/node_modules/undici/docs/docs/api/MockClient.md +81 -0
  28. package/dist/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  29. package/dist/node_modules/undici/docs/docs/api/MockPool.md +555 -0
  30. package/dist/node_modules/undici/docs/docs/api/Pool.md +84 -0
  31. package/dist/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  32. package/dist/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
  33. package/dist/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
  34. package/dist/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
  35. package/dist/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
  36. package/dist/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
  37. package/dist/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
  38. package/dist/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +274 -0
  39. package/dist/node_modules/undici/docs/docs/api/Util.md +25 -0
  40. package/dist/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
  41. package/dist/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  42. package/dist/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  43. package/dist/node_modules/undici/docs/docs/best-practices/crawling.md +58 -0
  44. package/dist/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
  45. package/dist/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  46. package/dist/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +224 -0
  47. package/dist/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
  48. package/dist/node_modules/undici/index-fetch.js +65 -0
  49. package/dist/node_modules/undici/index.d.ts +3 -0
  50. package/dist/node_modules/undici/index.js +234 -0
  51. package/dist/node_modules/undici/lib/api/abort-signal.js +59 -0
  52. package/dist/node_modules/undici/lib/api/api-connect.js +110 -0
  53. package/dist/node_modules/undici/lib/api/api-pipeline.js +252 -0
  54. package/dist/node_modules/undici/lib/api/api-request.js +214 -0
  55. package/dist/node_modules/undici/lib/api/api-stream.js +209 -0
  56. package/dist/node_modules/undici/lib/api/api-upgrade.js +111 -0
  57. package/dist/node_modules/undici/lib/api/index.js +7 -0
  58. package/dist/node_modules/undici/lib/api/readable.js +580 -0
  59. package/dist/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
  60. package/dist/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
  61. package/dist/node_modules/undici/lib/core/connect.js +137 -0
  62. package/dist/node_modules/undici/lib/core/constants.js +143 -0
  63. package/dist/node_modules/undici/lib/core/diagnostics.js +227 -0
  64. package/dist/node_modules/undici/lib/core/errors.js +477 -0
  65. package/dist/node_modules/undici/lib/core/request.js +438 -0
  66. package/dist/node_modules/undici/lib/core/socks5-client.js +407 -0
  67. package/dist/node_modules/undici/lib/core/socks5-utils.js +203 -0
  68. package/dist/node_modules/undici/lib/core/symbols.js +75 -0
  69. package/dist/node_modules/undici/lib/core/tree.js +160 -0
  70. package/dist/node_modules/undici/lib/core/util.js +992 -0
  71. package/dist/node_modules/undici/lib/dispatcher/agent.js +158 -0
  72. package/dist/node_modules/undici/lib/dispatcher/balanced-pool.js +219 -0
  73. package/dist/node_modules/undici/lib/dispatcher/client-h1.js +1610 -0
  74. package/dist/node_modules/undici/lib/dispatcher/client-h2.js +995 -0
  75. package/dist/node_modules/undici/lib/dispatcher/client.js +659 -0
  76. package/dist/node_modules/undici/lib/dispatcher/dispatcher-base.js +165 -0
  77. package/dist/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
  78. package/dist/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
  79. package/dist/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
  80. package/dist/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
  81. package/dist/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
  82. package/dist/node_modules/undici/lib/dispatcher/pool.js +118 -0
  83. package/dist/node_modules/undici/lib/dispatcher/proxy-agent.js +318 -0
  84. package/dist/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  85. package/dist/node_modules/undici/lib/dispatcher/round-robin-pool.js +137 -0
  86. package/dist/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +249 -0
  87. package/dist/node_modules/undici/lib/encoding/index.js +33 -0
  88. package/dist/node_modules/undici/lib/global.js +50 -0
  89. package/dist/node_modules/undici/lib/handler/cache-handler.js +578 -0
  90. package/dist/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
  91. package/dist/node_modules/undici/lib/handler/decorator-handler.js +67 -0
  92. package/dist/node_modules/undici/lib/handler/deduplication-handler.js +460 -0
  93. package/dist/node_modules/undici/lib/handler/redirect-handler.js +238 -0
  94. package/dist/node_modules/undici/lib/handler/retry-handler.js +394 -0
  95. package/dist/node_modules/undici/lib/handler/unwrap-handler.js +100 -0
  96. package/dist/node_modules/undici/lib/handler/wrap-handler.js +105 -0
  97. package/dist/node_modules/undici/lib/interceptor/cache.js +495 -0
  98. package/dist/node_modules/undici/lib/interceptor/decompress.js +259 -0
  99. package/dist/node_modules/undici/lib/interceptor/deduplicate.js +117 -0
  100. package/dist/node_modules/undici/lib/interceptor/dns.js +571 -0
  101. package/dist/node_modules/undici/lib/interceptor/dump.js +112 -0
  102. package/dist/node_modules/undici/lib/interceptor/redirect.js +21 -0
  103. package/dist/node_modules/undici/lib/interceptor/response-error.js +95 -0
  104. package/dist/node_modules/undici/lib/interceptor/retry.js +19 -0
  105. package/dist/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  106. package/dist/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
  107. package/dist/node_modules/undici/lib/llhttp/constants.js +531 -0
  108. package/dist/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  109. package/dist/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  110. package/dist/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
  111. package/dist/node_modules/undici/lib/llhttp/utils.js +12 -0
  112. package/dist/node_modules/undici/lib/mock/mock-agent.js +232 -0
  113. package/dist/node_modules/undici/lib/mock/mock-call-history.js +248 -0
  114. package/dist/node_modules/undici/lib/mock/mock-client.js +68 -0
  115. package/dist/node_modules/undici/lib/mock/mock-errors.js +29 -0
  116. package/dist/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
  117. package/dist/node_modules/undici/lib/mock/mock-pool.js +68 -0
  118. package/dist/node_modules/undici/lib/mock/mock-symbols.js +32 -0
  119. package/dist/node_modules/undici/lib/mock/mock-utils.js +486 -0
  120. package/dist/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  121. package/dist/node_modules/undici/lib/mock/snapshot-agent.js +353 -0
  122. package/dist/node_modules/undici/lib/mock/snapshot-recorder.js +588 -0
  123. package/dist/node_modules/undici/lib/mock/snapshot-utils.js +158 -0
  124. package/dist/node_modules/undici/lib/util/cache.js +407 -0
  125. package/dist/node_modules/undici/lib/util/date.js +653 -0
  126. package/dist/node_modules/undici/lib/util/promise.js +28 -0
  127. package/dist/node_modules/undici/lib/util/runtime-features.js +124 -0
  128. package/dist/node_modules/undici/lib/util/stats.js +32 -0
  129. package/dist/node_modules/undici/lib/util/timers.js +425 -0
  130. package/dist/node_modules/undici/lib/web/cache/cache.js +864 -0
  131. package/dist/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  132. package/dist/node_modules/undici/lib/web/cache/util.js +45 -0
  133. package/dist/node_modules/undici/lib/web/cookies/constants.js +12 -0
  134. package/dist/node_modules/undici/lib/web/cookies/index.js +199 -0
  135. package/dist/node_modules/undici/lib/web/cookies/parse.js +322 -0
  136. package/dist/node_modules/undici/lib/web/cookies/util.js +282 -0
  137. package/dist/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
  138. package/dist/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
  139. package/dist/node_modules/undici/lib/web/eventsource/util.js +29 -0
  140. package/dist/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  141. package/dist/node_modules/undici/lib/web/fetch/body.js +509 -0
  142. package/dist/node_modules/undici/lib/web/fetch/constants.js +131 -0
  143. package/dist/node_modules/undici/lib/web/fetch/data-url.js +596 -0
  144. package/dist/node_modules/undici/lib/web/fetch/formdata-parser.js +575 -0
  145. package/dist/node_modules/undici/lib/web/fetch/formdata.js +259 -0
  146. package/dist/node_modules/undici/lib/web/fetch/global.js +40 -0
  147. package/dist/node_modules/undici/lib/web/fetch/headers.js +719 -0
  148. package/dist/node_modules/undici/lib/web/fetch/index.js +2397 -0
  149. package/dist/node_modules/undici/lib/web/fetch/request.js +1115 -0
  150. package/dist/node_modules/undici/lib/web/fetch/response.js +641 -0
  151. package/dist/node_modules/undici/lib/web/fetch/util.js +1520 -0
  152. package/dist/node_modules/undici/lib/web/infra/index.js +229 -0
  153. package/dist/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
  154. package/dist/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
  155. package/dist/node_modules/undici/lib/web/webidl/index.js +1006 -0
  156. package/dist/node_modules/undici/lib/web/websocket/connection.js +329 -0
  157. package/dist/node_modules/undici/lib/web/websocket/constants.js +126 -0
  158. package/dist/node_modules/undici/lib/web/websocket/events.js +331 -0
  159. package/dist/node_modules/undici/lib/web/websocket/frame.js +133 -0
  160. package/dist/node_modules/undici/lib/web/websocket/permessage-deflate.js +118 -0
  161. package/dist/node_modules/undici/lib/web/websocket/receiver.js +450 -0
  162. package/dist/node_modules/undici/lib/web/websocket/sender.js +109 -0
  163. package/dist/node_modules/undici/lib/web/websocket/stream/websocketerror.js +104 -0
  164. package/dist/node_modules/undici/lib/web/websocket/stream/websocketstream.js +497 -0
  165. package/dist/node_modules/undici/lib/web/websocket/util.js +347 -0
  166. package/dist/node_modules/undici/lib/web/websocket/websocket.js +751 -0
  167. package/dist/node_modules/undici/package.json +152 -0
  168. package/dist/node_modules/undici/scripts/strip-comments.js +10 -0
  169. package/dist/node_modules/undici/types/README.md +6 -0
  170. package/dist/node_modules/undici/types/agent.d.ts +32 -0
  171. package/dist/node_modules/undici/types/api.d.ts +43 -0
  172. package/dist/node_modules/undici/types/balanced-pool.d.ts +30 -0
  173. package/dist/node_modules/undici/types/cache-interceptor.d.ts +179 -0
  174. package/dist/node_modules/undici/types/cache.d.ts +36 -0
  175. package/dist/node_modules/undici/types/client-stats.d.ts +15 -0
  176. package/dist/node_modules/undici/types/client.d.ts +123 -0
  177. package/dist/node_modules/undici/types/connector.d.ts +36 -0
  178. package/dist/node_modules/undici/types/content-type.d.ts +21 -0
  179. package/dist/node_modules/undici/types/cookies.d.ts +30 -0
  180. package/dist/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
  181. package/dist/node_modules/undici/types/dispatcher.d.ts +273 -0
  182. package/dist/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
  183. package/dist/node_modules/undici/types/errors.d.ts +177 -0
  184. package/dist/node_modules/undici/types/eventsource.d.ts +66 -0
  185. package/dist/node_modules/undici/types/fetch.d.ts +231 -0
  186. package/dist/node_modules/undici/types/formdata.d.ts +114 -0
  187. package/dist/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  188. package/dist/node_modules/undici/types/global-origin.d.ts +7 -0
  189. package/dist/node_modules/undici/types/h2c-client.d.ts +73 -0
  190. package/dist/node_modules/undici/types/handlers.d.ts +14 -0
  191. package/dist/node_modules/undici/types/header.d.ts +160 -0
  192. package/dist/node_modules/undici/types/index.d.ts +91 -0
  193. package/dist/node_modules/undici/types/interceptors.d.ts +80 -0
  194. package/dist/node_modules/undici/types/mock-agent.d.ts +68 -0
  195. package/dist/node_modules/undici/types/mock-call-history.d.ts +111 -0
  196. package/dist/node_modules/undici/types/mock-client.d.ts +27 -0
  197. package/dist/node_modules/undici/types/mock-errors.d.ts +12 -0
  198. package/dist/node_modules/undici/types/mock-interceptor.d.ts +94 -0
  199. package/dist/node_modules/undici/types/mock-pool.d.ts +27 -0
  200. package/dist/node_modules/undici/types/patch.d.ts +29 -0
  201. package/dist/node_modules/undici/types/pool-stats.d.ts +19 -0
  202. package/dist/node_modules/undici/types/pool.d.ts +41 -0
  203. package/dist/node_modules/undici/types/proxy-agent.d.ts +29 -0
  204. package/dist/node_modules/undici/types/readable.d.ts +68 -0
  205. package/dist/node_modules/undici/types/retry-agent.d.ts +8 -0
  206. package/dist/node_modules/undici/types/retry-handler.d.ts +125 -0
  207. package/dist/node_modules/undici/types/round-robin-pool.d.ts +41 -0
  208. package/dist/node_modules/undici/types/snapshot-agent.d.ts +109 -0
  209. package/dist/node_modules/undici/types/socks5-proxy-agent.d.ts +25 -0
  210. package/dist/node_modules/undici/types/util.d.ts +18 -0
  211. package/dist/node_modules/undici/types/utility.d.ts +7 -0
  212. package/dist/node_modules/undici/types/webidl.d.ts +347 -0
  213. package/dist/node_modules/undici/types/websocket.d.ts +188 -0
  214. package/package.json +2 -2
@@ -0,0 +1,137 @@
1
+ 'use strict'
2
+
3
+ const net = require('node:net')
4
+ const assert = require('node:assert')
5
+ const util = require('./util')
6
+ const { InvalidArgumentError } = require('./errors')
7
+
8
+ let tls // include tls conditionally since it is not always available
9
+
10
+ // TODO: session re-use does not wait for the first
11
+ // connection to resolve the session and might therefore
12
+ // resolve the same servername multiple times even when
13
+ // re-use is enabled.
14
+
15
+ const SessionCache = class WeakSessionCache {
16
+ constructor (maxCachedSessions) {
17
+ this._maxCachedSessions = maxCachedSessions
18
+ this._sessionCache = new Map()
19
+ this._sessionRegistry = new FinalizationRegistry((key) => {
20
+ if (this._sessionCache.size < this._maxCachedSessions) {
21
+ return
22
+ }
23
+
24
+ const ref = this._sessionCache.get(key)
25
+ if (ref !== undefined && ref.deref() === undefined) {
26
+ this._sessionCache.delete(key)
27
+ }
28
+ })
29
+ }
30
+
31
+ get (sessionKey) {
32
+ const ref = this._sessionCache.get(sessionKey)
33
+ return ref ? ref.deref() : null
34
+ }
35
+
36
+ set (sessionKey, session) {
37
+ if (this._maxCachedSessions === 0) {
38
+ return
39
+ }
40
+
41
+ this._sessionCache.set(sessionKey, new WeakRef(session))
42
+ this._sessionRegistry.register(session, sessionKey)
43
+ }
44
+ }
45
+
46
+ function buildConnector ({ allowH2, useH2c, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {
47
+ if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
48
+ throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')
49
+ }
50
+
51
+ const options = { path: socketPath, ...opts }
52
+ const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)
53
+ timeout = timeout == null ? 10e3 : timeout
54
+ allowH2 = allowH2 != null ? allowH2 : false
55
+ return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {
56
+ let socket
57
+ if (protocol === 'https:') {
58
+ if (!tls) {
59
+ tls = require('node:tls')
60
+ }
61
+ servername = servername || options.servername || util.getServerName(host) || null
62
+
63
+ const sessionKey = servername || hostname
64
+ assert(sessionKey)
65
+
66
+ const session = customSession || sessionCache.get(sessionKey) || null
67
+
68
+ port = port || 443
69
+
70
+ socket = tls.connect({
71
+ highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...
72
+ ...options,
73
+ servername,
74
+ session,
75
+ localAddress,
76
+ ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],
77
+ socket: httpSocket, // upgrade socket connection
78
+ port,
79
+ host: hostname
80
+ })
81
+
82
+ socket
83
+ .on('session', function (session) {
84
+ // TODO (fix): Can a session become invalid once established? Don't think so?
85
+ sessionCache.set(sessionKey, session)
86
+ })
87
+ } else {
88
+ assert(!httpSocket, 'httpSocket can only be sent on TLS update')
89
+
90
+ port = port || 80
91
+
92
+ socket = net.connect({
93
+ highWaterMark: 64 * 1024, // Same as nodejs fs streams.
94
+ ...options,
95
+ localAddress,
96
+ port,
97
+ host: hostname
98
+ })
99
+ if (useH2c === true) {
100
+ socket.alpnProtocol = 'h2'
101
+ }
102
+ }
103
+
104
+ // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket
105
+ if (options.keepAlive == null || options.keepAlive) {
106
+ const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay
107
+ socket.setKeepAlive(true, keepAliveInitialDelay)
108
+ }
109
+
110
+ const clearConnectTimeout = util.setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port })
111
+
112
+ socket
113
+ .setNoDelay(true)
114
+ .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {
115
+ queueMicrotask(clearConnectTimeout)
116
+
117
+ if (callback) {
118
+ const cb = callback
119
+ callback = null
120
+ cb(null, this)
121
+ }
122
+ })
123
+ .on('error', function (err) {
124
+ queueMicrotask(clearConnectTimeout)
125
+
126
+ if (callback) {
127
+ const cb = callback
128
+ callback = null
129
+ cb(err)
130
+ }
131
+ })
132
+
133
+ return socket
134
+ }
135
+ }
136
+
137
+ module.exports = buildConnector
@@ -0,0 +1,143 @@
1
+ 'use strict'
2
+
3
+ /**
4
+ * @see https://developer.mozilla.org/docs/Web/HTTP/Headers
5
+ */
6
+ const wellknownHeaderNames = /** @type {const} */ ([
7
+ 'Accept',
8
+ 'Accept-Encoding',
9
+ 'Accept-Language',
10
+ 'Accept-Ranges',
11
+ 'Access-Control-Allow-Credentials',
12
+ 'Access-Control-Allow-Headers',
13
+ 'Access-Control-Allow-Methods',
14
+ 'Access-Control-Allow-Origin',
15
+ 'Access-Control-Expose-Headers',
16
+ 'Access-Control-Max-Age',
17
+ 'Access-Control-Request-Headers',
18
+ 'Access-Control-Request-Method',
19
+ 'Age',
20
+ 'Allow',
21
+ 'Alt-Svc',
22
+ 'Alt-Used',
23
+ 'Authorization',
24
+ 'Cache-Control',
25
+ 'Clear-Site-Data',
26
+ 'Connection',
27
+ 'Content-Disposition',
28
+ 'Content-Encoding',
29
+ 'Content-Language',
30
+ 'Content-Length',
31
+ 'Content-Location',
32
+ 'Content-Range',
33
+ 'Content-Security-Policy',
34
+ 'Content-Security-Policy-Report-Only',
35
+ 'Content-Type',
36
+ 'Cookie',
37
+ 'Cross-Origin-Embedder-Policy',
38
+ 'Cross-Origin-Opener-Policy',
39
+ 'Cross-Origin-Resource-Policy',
40
+ 'Date',
41
+ 'Device-Memory',
42
+ 'Downlink',
43
+ 'ECT',
44
+ 'ETag',
45
+ 'Expect',
46
+ 'Expect-CT',
47
+ 'Expires',
48
+ 'Forwarded',
49
+ 'From',
50
+ 'Host',
51
+ 'If-Match',
52
+ 'If-Modified-Since',
53
+ 'If-None-Match',
54
+ 'If-Range',
55
+ 'If-Unmodified-Since',
56
+ 'Keep-Alive',
57
+ 'Last-Modified',
58
+ 'Link',
59
+ 'Location',
60
+ 'Max-Forwards',
61
+ 'Origin',
62
+ 'Permissions-Policy',
63
+ 'Pragma',
64
+ 'Proxy-Authenticate',
65
+ 'Proxy-Authorization',
66
+ 'RTT',
67
+ 'Range',
68
+ 'Referer',
69
+ 'Referrer-Policy',
70
+ 'Refresh',
71
+ 'Retry-After',
72
+ 'Sec-WebSocket-Accept',
73
+ 'Sec-WebSocket-Extensions',
74
+ 'Sec-WebSocket-Key',
75
+ 'Sec-WebSocket-Protocol',
76
+ 'Sec-WebSocket-Version',
77
+ 'Server',
78
+ 'Server-Timing',
79
+ 'Service-Worker-Allowed',
80
+ 'Service-Worker-Navigation-Preload',
81
+ 'Set-Cookie',
82
+ 'SourceMap',
83
+ 'Strict-Transport-Security',
84
+ 'Supports-Loading-Mode',
85
+ 'TE',
86
+ 'Timing-Allow-Origin',
87
+ 'Trailer',
88
+ 'Transfer-Encoding',
89
+ 'Upgrade',
90
+ 'Upgrade-Insecure-Requests',
91
+ 'User-Agent',
92
+ 'Vary',
93
+ 'Via',
94
+ 'WWW-Authenticate',
95
+ 'X-Content-Type-Options',
96
+ 'X-DNS-Prefetch-Control',
97
+ 'X-Frame-Options',
98
+ 'X-Permitted-Cross-Domain-Policies',
99
+ 'X-Powered-By',
100
+ 'X-Requested-With',
101
+ 'X-XSS-Protection'
102
+ ])
103
+
104
+ /** @type {Record<typeof wellknownHeaderNames[number]|Lowercase<typeof wellknownHeaderNames[number]>, string>} */
105
+ const headerNameLowerCasedRecord = {}
106
+
107
+ // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
108
+ Object.setPrototypeOf(headerNameLowerCasedRecord, null)
109
+
110
+ /**
111
+ * @type {Record<Lowercase<typeof wellknownHeaderNames[number]>, Buffer>}
112
+ */
113
+ const wellknownHeaderNameBuffers = {}
114
+
115
+ // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
116
+ Object.setPrototypeOf(wellknownHeaderNameBuffers, null)
117
+
118
+ /**
119
+ * @param {string} header Lowercased header
120
+ * @returns {Buffer}
121
+ */
122
+ function getHeaderNameAsBuffer (header) {
123
+ let buffer = wellknownHeaderNameBuffers[header]
124
+
125
+ if (buffer === undefined) {
126
+ buffer = Buffer.from(header)
127
+ }
128
+
129
+ return buffer
130
+ }
131
+
132
+ for (let i = 0; i < wellknownHeaderNames.length; ++i) {
133
+ const key = wellknownHeaderNames[i]
134
+ const lowerCasedKey = key.toLowerCase()
135
+ headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =
136
+ lowerCasedKey
137
+ }
138
+
139
+ module.exports = {
140
+ wellknownHeaderNames,
141
+ headerNameLowerCasedRecord,
142
+ getHeaderNameAsBuffer
143
+ }
@@ -0,0 +1,227 @@
1
+ 'use strict'
2
+
3
+ const diagnosticsChannel = require('node:diagnostics_channel')
4
+ const util = require('node:util')
5
+
6
+ const undiciDebugLog = util.debuglog('undici')
7
+ const fetchDebuglog = util.debuglog('fetch')
8
+ const websocketDebuglog = util.debuglog('websocket')
9
+
10
+ const channels = {
11
+ // Client
12
+ beforeConnect: diagnosticsChannel.channel('undici:client:beforeConnect'),
13
+ connected: diagnosticsChannel.channel('undici:client:connected'),
14
+ connectError: diagnosticsChannel.channel('undici:client:connectError'),
15
+ sendHeaders: diagnosticsChannel.channel('undici:client:sendHeaders'),
16
+ // Request
17
+ create: diagnosticsChannel.channel('undici:request:create'),
18
+ bodySent: diagnosticsChannel.channel('undici:request:bodySent'),
19
+ bodyChunkSent: diagnosticsChannel.channel('undici:request:bodyChunkSent'),
20
+ bodyChunkReceived: diagnosticsChannel.channel('undici:request:bodyChunkReceived'),
21
+ headers: diagnosticsChannel.channel('undici:request:headers'),
22
+ trailers: diagnosticsChannel.channel('undici:request:trailers'),
23
+ error: diagnosticsChannel.channel('undici:request:error'),
24
+ // WebSocket
25
+ open: diagnosticsChannel.channel('undici:websocket:open'),
26
+ close: diagnosticsChannel.channel('undici:websocket:close'),
27
+ socketError: diagnosticsChannel.channel('undici:websocket:socket_error'),
28
+ ping: diagnosticsChannel.channel('undici:websocket:ping'),
29
+ pong: diagnosticsChannel.channel('undici:websocket:pong'),
30
+ // ProxyAgent
31
+ proxyConnected: diagnosticsChannel.channel('undici:proxy:connected')
32
+ }
33
+
34
+ let isTrackingClientEvents = false
35
+
36
+ function trackClientEvents (debugLog = undiciDebugLog) {
37
+ if (isTrackingClientEvents) {
38
+ return
39
+ }
40
+
41
+ // Check if any of the channels already have subscribers to prevent duplicate subscriptions
42
+ // This can happen when both Node.js built-in undici and undici as a dependency are present
43
+ if (channels.beforeConnect.hasSubscribers || channels.connected.hasSubscribers ||
44
+ channels.connectError.hasSubscribers || channels.sendHeaders.hasSubscribers) {
45
+ isTrackingClientEvents = true
46
+ return
47
+ }
48
+
49
+ isTrackingClientEvents = true
50
+
51
+ diagnosticsChannel.subscribe('undici:client:beforeConnect',
52
+ evt => {
53
+ const {
54
+ connectParams: { version, protocol, port, host }
55
+ } = evt
56
+ debugLog(
57
+ 'connecting to %s%s using %s%s',
58
+ host,
59
+ port ? `:${port}` : '',
60
+ protocol,
61
+ version
62
+ )
63
+ })
64
+
65
+ diagnosticsChannel.subscribe('undici:client:connected',
66
+ evt => {
67
+ const {
68
+ connectParams: { version, protocol, port, host }
69
+ } = evt
70
+ debugLog(
71
+ 'connected to %s%s using %s%s',
72
+ host,
73
+ port ? `:${port}` : '',
74
+ protocol,
75
+ version
76
+ )
77
+ })
78
+
79
+ diagnosticsChannel.subscribe('undici:client:connectError',
80
+ evt => {
81
+ const {
82
+ connectParams: { version, protocol, port, host },
83
+ error
84
+ } = evt
85
+ debugLog(
86
+ 'connection to %s%s using %s%s errored - %s',
87
+ host,
88
+ port ? `:${port}` : '',
89
+ protocol,
90
+ version,
91
+ error.message
92
+ )
93
+ })
94
+
95
+ diagnosticsChannel.subscribe('undici:client:sendHeaders',
96
+ evt => {
97
+ const {
98
+ request: { method, path, origin }
99
+ } = evt
100
+ debugLog('sending request to %s %s%s', method, origin, path)
101
+ })
102
+ }
103
+
104
+ let isTrackingRequestEvents = false
105
+
106
+ function trackRequestEvents (debugLog = undiciDebugLog) {
107
+ if (isTrackingRequestEvents) {
108
+ return
109
+ }
110
+
111
+ // Check if any of the channels already have subscribers to prevent duplicate subscriptions
112
+ // This can happen when both Node.js built-in undici and undici as a dependency are present
113
+ if (channels.headers.hasSubscribers || channels.trailers.hasSubscribers ||
114
+ channels.error.hasSubscribers) {
115
+ isTrackingRequestEvents = true
116
+ return
117
+ }
118
+
119
+ isTrackingRequestEvents = true
120
+
121
+ diagnosticsChannel.subscribe('undici:request:headers',
122
+ evt => {
123
+ const {
124
+ request: { method, path, origin },
125
+ response: { statusCode }
126
+ } = evt
127
+ debugLog(
128
+ 'received response to %s %s%s - HTTP %d',
129
+ method,
130
+ origin,
131
+ path,
132
+ statusCode
133
+ )
134
+ })
135
+
136
+ diagnosticsChannel.subscribe('undici:request:trailers',
137
+ evt => {
138
+ const {
139
+ request: { method, path, origin }
140
+ } = evt
141
+ debugLog('trailers received from %s %s%s', method, origin, path)
142
+ })
143
+
144
+ diagnosticsChannel.subscribe('undici:request:error',
145
+ evt => {
146
+ const {
147
+ request: { method, path, origin },
148
+ error
149
+ } = evt
150
+ debugLog(
151
+ 'request to %s %s%s errored - %s',
152
+ method,
153
+ origin,
154
+ path,
155
+ error.message
156
+ )
157
+ })
158
+ }
159
+
160
+ let isTrackingWebSocketEvents = false
161
+
162
+ function trackWebSocketEvents (debugLog = websocketDebuglog) {
163
+ if (isTrackingWebSocketEvents) {
164
+ return
165
+ }
166
+
167
+ // Check if any of the channels already have subscribers to prevent duplicate subscriptions
168
+ // This can happen when both Node.js built-in undici and undici as a dependency are present
169
+ if (channels.open.hasSubscribers || channels.close.hasSubscribers ||
170
+ channels.socketError.hasSubscribers || channels.ping.hasSubscribers ||
171
+ channels.pong.hasSubscribers) {
172
+ isTrackingWebSocketEvents = true
173
+ return
174
+ }
175
+
176
+ isTrackingWebSocketEvents = true
177
+
178
+ diagnosticsChannel.subscribe('undici:websocket:open',
179
+ evt => {
180
+ if (evt.address != null) {
181
+ const { address, port } = evt.address
182
+ debugLog('connection opened %s%s', address, port ? `:${port}` : '')
183
+ } else {
184
+ debugLog('connection opened')
185
+ }
186
+ })
187
+
188
+ diagnosticsChannel.subscribe('undici:websocket:close',
189
+ evt => {
190
+ const { websocket, code, reason } = evt
191
+ debugLog(
192
+ 'closed connection to %s - %s %s',
193
+ websocket.url,
194
+ code,
195
+ reason
196
+ )
197
+ })
198
+
199
+ diagnosticsChannel.subscribe('undici:websocket:socket_error',
200
+ err => {
201
+ debugLog('connection errored - %s', err.message)
202
+ })
203
+
204
+ diagnosticsChannel.subscribe('undici:websocket:ping',
205
+ evt => {
206
+ debugLog('ping received')
207
+ })
208
+
209
+ diagnosticsChannel.subscribe('undici:websocket:pong',
210
+ evt => {
211
+ debugLog('pong received')
212
+ })
213
+ }
214
+
215
+ if (undiciDebugLog.enabled || fetchDebuglog.enabled) {
216
+ trackClientEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog)
217
+ trackRequestEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog)
218
+ }
219
+
220
+ if (websocketDebuglog.enabled) {
221
+ trackClientEvents(undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog)
222
+ trackWebSocketEvents(websocketDebuglog)
223
+ }
224
+
225
+ module.exports = {
226
+ channels
227
+ }