deepv-code 1.0.182

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 (223) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +3 -0
  3. package/bundle/assets/help/README.md +113 -0
  4. package/bundle/assets/help/cli-help-knowledge.md +1382 -0
  5. package/bundle/assets/sounds/README.md +74 -0
  6. package/bundle/assets/sounds/confirmation-required.wav +0 -0
  7. package/bundle/assets/sounds/response-complete.wav +0 -0
  8. package/bundle/assets/sounds/selection-made.wav +0 -0
  9. package/bundle/dvcode.js +4442 -0
  10. package/bundle/fix-binary-permissions.js +215 -0
  11. package/bundle/login/templates/authSelectPage.html +870 -0
  12. package/bundle/login/templates/deepv.ico +0 -0
  13. package/bundle/login/templates/feishu.ico +0 -0
  14. package/bundle/node_modules/@vscode/ripgrep/bin/darwin-arm64-rg +0 -0
  15. package/bundle/node_modules/@vscode/ripgrep/bin/darwin-x64-rg +0 -0
  16. package/bundle/node_modules/@vscode/ripgrep/bin/linux-arm-rg +0 -0
  17. package/bundle/node_modules/@vscode/ripgrep/bin/linux-arm64-rg +0 -0
  18. package/bundle/node_modules/@vscode/ripgrep/bin/linux-x64-rg +0 -0
  19. package/bundle/node_modules/@vscode/ripgrep/bin/rg.exe +0 -0
  20. package/bundle/node_modules/@vscode/ripgrep/bin/win32-arm64-rg.exe +0 -0
  21. package/bundle/node_modules/@vscode/ripgrep/bin/win32-ia32-rg.exe +0 -0
  22. package/bundle/node_modules/@vscode/ripgrep/bin/win32-x64-rg.exe +0 -0
  23. package/bundle/node_modules/@vscode/ripgrep/lib/download.js +357 -0
  24. package/bundle/node_modules/@vscode/ripgrep/lib/index.d.ts +1 -0
  25. package/bundle/node_modules/@vscode/ripgrep/lib/index.js +42 -0
  26. package/bundle/node_modules/@vscode/ripgrep/lib/postinstall.js +121 -0
  27. package/bundle/node_modules/@vscode/ripgrep/package.json +24 -0
  28. package/bundle/node_modules/undici/LICENSE +21 -0
  29. package/bundle/node_modules/undici/README.md +472 -0
  30. package/bundle/node_modules/undici/docs/docs/api/Agent.md +83 -0
  31. package/bundle/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  32. package/bundle/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  33. package/bundle/node_modules/undici/docs/docs/api/CacheStore.md +151 -0
  34. package/bundle/node_modules/undici/docs/docs/api/Client.md +281 -0
  35. package/bundle/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
  36. package/bundle/node_modules/undici/docs/docs/api/Connector.md +115 -0
  37. package/bundle/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  38. package/bundle/node_modules/undici/docs/docs/api/Cookies.md +101 -0
  39. package/bundle/node_modules/undici/docs/docs/api/Debug.md +62 -0
  40. package/bundle/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +204 -0
  41. package/bundle/node_modules/undici/docs/docs/api/Dispatcher.md +1200 -0
  42. package/bundle/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  43. package/bundle/node_modules/undici/docs/docs/api/Errors.md +49 -0
  44. package/bundle/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  45. package/bundle/node_modules/undici/docs/docs/api/Fetch.md +52 -0
  46. package/bundle/node_modules/undici/docs/docs/api/H2CClient.md +262 -0
  47. package/bundle/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
  48. package/bundle/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
  49. package/bundle/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
  50. package/bundle/node_modules/undici/docs/docs/api/MockClient.md +77 -0
  51. package/bundle/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  52. package/bundle/node_modules/undici/docs/docs/api/MockPool.md +548 -0
  53. package/bundle/node_modules/undici/docs/docs/api/Pool.md +84 -0
  54. package/bundle/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  55. package/bundle/node_modules/undici/docs/docs/api/ProxyAgent.md +227 -0
  56. package/bundle/node_modules/undici/docs/docs/api/RedirectHandler.md +96 -0
  57. package/bundle/node_modules/undici/docs/docs/api/RetryAgent.md +45 -0
  58. package/bundle/node_modules/undici/docs/docs/api/RetryHandler.md +117 -0
  59. package/bundle/node_modules/undici/docs/docs/api/Util.md +25 -0
  60. package/bundle/node_modules/undici/docs/docs/api/WebSocket.md +85 -0
  61. package/bundle/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  62. package/bundle/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  63. package/bundle/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
  64. package/bundle/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  65. package/bundle/node_modules/undici/docs/docs/best-practices/writing-tests.md +20 -0
  66. package/bundle/node_modules/undici/index-fetch.js +35 -0
  67. package/bundle/node_modules/undici/index.d.ts +3 -0
  68. package/bundle/node_modules/undici/index.js +183 -0
  69. package/bundle/node_modules/undici/lib/api/abort-signal.js +59 -0
  70. package/bundle/node_modules/undici/lib/api/api-connect.js +110 -0
  71. package/bundle/node_modules/undici/lib/api/api-pipeline.js +252 -0
  72. package/bundle/node_modules/undici/lib/api/api-request.js +199 -0
  73. package/bundle/node_modules/undici/lib/api/api-stream.js +209 -0
  74. package/bundle/node_modules/undici/lib/api/api-upgrade.js +110 -0
  75. package/bundle/node_modules/undici/lib/api/index.js +7 -0
  76. package/bundle/node_modules/undici/lib/api/readable.js +558 -0
  77. package/bundle/node_modules/undici/lib/api/util.js +95 -0
  78. package/bundle/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
  79. package/bundle/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
  80. package/bundle/node_modules/undici/lib/core/connect.js +164 -0
  81. package/bundle/node_modules/undici/lib/core/constants.js +143 -0
  82. package/bundle/node_modules/undici/lib/core/diagnostics.js +196 -0
  83. package/bundle/node_modules/undici/lib/core/errors.js +244 -0
  84. package/bundle/node_modules/undici/lib/core/request.js +397 -0
  85. package/bundle/node_modules/undici/lib/core/symbols.js +68 -0
  86. package/bundle/node_modules/undici/lib/core/tree.js +160 -0
  87. package/bundle/node_modules/undici/lib/core/util.js +988 -0
  88. package/bundle/node_modules/undici/lib/dispatcher/agent.js +135 -0
  89. package/bundle/node_modules/undici/lib/dispatcher/balanced-pool.js +206 -0
  90. package/bundle/node_modules/undici/lib/dispatcher/client-h1.js +1615 -0
  91. package/bundle/node_modules/undici/lib/dispatcher/client-h2.js +798 -0
  92. package/bundle/node_modules/undici/lib/dispatcher/client.js +614 -0
  93. package/bundle/node_modules/undici/lib/dispatcher/dispatcher-base.js +161 -0
  94. package/bundle/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
  95. package/bundle/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +151 -0
  96. package/bundle/node_modules/undici/lib/dispatcher/fixed-queue.js +159 -0
  97. package/bundle/node_modules/undici/lib/dispatcher/h2c-client.js +122 -0
  98. package/bundle/node_modules/undici/lib/dispatcher/pool-base.js +191 -0
  99. package/bundle/node_modules/undici/lib/dispatcher/pool.js +118 -0
  100. package/bundle/node_modules/undici/lib/dispatcher/proxy-agent.js +275 -0
  101. package/bundle/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  102. package/bundle/node_modules/undici/lib/global.js +32 -0
  103. package/bundle/node_modules/undici/lib/handler/cache-handler.js +448 -0
  104. package/bundle/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
  105. package/bundle/node_modules/undici/lib/handler/decorator-handler.js +67 -0
  106. package/bundle/node_modules/undici/lib/handler/redirect-handler.js +227 -0
  107. package/bundle/node_modules/undici/lib/handler/retry-handler.js +342 -0
  108. package/bundle/node_modules/undici/lib/handler/unwrap-handler.js +96 -0
  109. package/bundle/node_modules/undici/lib/handler/wrap-handler.js +95 -0
  110. package/bundle/node_modules/undici/lib/interceptor/cache.js +372 -0
  111. package/bundle/node_modules/undici/lib/interceptor/dns.js +432 -0
  112. package/bundle/node_modules/undici/lib/interceptor/dump.js +111 -0
  113. package/bundle/node_modules/undici/lib/interceptor/redirect.js +21 -0
  114. package/bundle/node_modules/undici/lib/interceptor/response-error.js +95 -0
  115. package/bundle/node_modules/undici/lib/interceptor/retry.js +19 -0
  116. package/bundle/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  117. package/bundle/node_modules/undici/lib/llhttp/constants.d.ts +97 -0
  118. package/bundle/node_modules/undici/lib/llhttp/constants.js +498 -0
  119. package/bundle/node_modules/undici/lib/llhttp/constants.js.map +1 -0
  120. package/bundle/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  121. package/bundle/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  122. package/bundle/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
  123. package/bundle/node_modules/undici/lib/llhttp/utils.js +15 -0
  124. package/bundle/node_modules/undici/lib/llhttp/utils.js.map +1 -0
  125. package/bundle/node_modules/undici/lib/mock/mock-agent.js +224 -0
  126. package/bundle/node_modules/undici/lib/mock/mock-call-history.js +248 -0
  127. package/bundle/node_modules/undici/lib/mock/mock-client.js +64 -0
  128. package/bundle/node_modules/undici/lib/mock/mock-errors.js +19 -0
  129. package/bundle/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
  130. package/bundle/node_modules/undici/lib/mock/mock-pool.js +64 -0
  131. package/bundle/node_modules/undici/lib/mock/mock-symbols.js +31 -0
  132. package/bundle/node_modules/undici/lib/mock/mock-utils.js +433 -0
  133. package/bundle/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  134. package/bundle/node_modules/undici/lib/util/cache.js +368 -0
  135. package/bundle/node_modules/undici/lib/util/date.js +259 -0
  136. package/bundle/node_modules/undici/lib/util/stats.js +32 -0
  137. package/bundle/node_modules/undici/lib/util/timers.js +423 -0
  138. package/bundle/node_modules/undici/lib/web/cache/cache.js +862 -0
  139. package/bundle/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  140. package/bundle/node_modules/undici/lib/web/cache/util.js +45 -0
  141. package/bundle/node_modules/undici/lib/web/cookies/constants.js +12 -0
  142. package/bundle/node_modules/undici/lib/web/cookies/index.js +199 -0
  143. package/bundle/node_modules/undici/lib/web/cookies/parse.js +322 -0
  144. package/bundle/node_modules/undici/lib/web/cookies/util.js +282 -0
  145. package/bundle/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
  146. package/bundle/node_modules/undici/lib/web/eventsource/eventsource.js +484 -0
  147. package/bundle/node_modules/undici/lib/web/eventsource/util.js +37 -0
  148. package/bundle/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  149. package/bundle/node_modules/undici/lib/web/fetch/body.js +532 -0
  150. package/bundle/node_modules/undici/lib/web/fetch/constants.js +131 -0
  151. package/bundle/node_modules/undici/lib/web/fetch/data-url.js +744 -0
  152. package/bundle/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
  153. package/bundle/node_modules/undici/lib/web/fetch/formdata-parser.js +501 -0
  154. package/bundle/node_modules/undici/lib/web/fetch/formdata.js +263 -0
  155. package/bundle/node_modules/undici/lib/web/fetch/global.js +40 -0
  156. package/bundle/node_modules/undici/lib/web/fetch/headers.js +719 -0
  157. package/bundle/node_modules/undici/lib/web/fetch/index.js +2258 -0
  158. package/bundle/node_modules/undici/lib/web/fetch/request.js +1099 -0
  159. package/bundle/node_modules/undici/lib/web/fetch/response.js +636 -0
  160. package/bundle/node_modules/undici/lib/web/fetch/util.js +1782 -0
  161. package/bundle/node_modules/undici/lib/web/fetch/webidl.js +740 -0
  162. package/bundle/node_modules/undici/lib/web/websocket/connection.js +325 -0
  163. package/bundle/node_modules/undici/lib/web/websocket/constants.js +126 -0
  164. package/bundle/node_modules/undici/lib/web/websocket/events.js +331 -0
  165. package/bundle/node_modules/undici/lib/web/websocket/frame.js +138 -0
  166. package/bundle/node_modules/undici/lib/web/websocket/permessage-deflate.js +70 -0
  167. package/bundle/node_modules/undici/lib/web/websocket/receiver.js +454 -0
  168. package/bundle/node_modules/undici/lib/web/websocket/sender.js +109 -0
  169. package/bundle/node_modules/undici/lib/web/websocket/stream/websocketerror.js +83 -0
  170. package/bundle/node_modules/undici/lib/web/websocket/stream/websocketstream.js +485 -0
  171. package/bundle/node_modules/undici/lib/web/websocket/util.js +338 -0
  172. package/bundle/node_modules/undici/lib/web/websocket/websocket.js +686 -0
  173. package/bundle/node_modules/undici/package.json +149 -0
  174. package/bundle/node_modules/undici/scripts/strip-comments.js +10 -0
  175. package/bundle/node_modules/undici/types/README.md +6 -0
  176. package/bundle/node_modules/undici/types/agent.d.ts +35 -0
  177. package/bundle/node_modules/undici/types/api.d.ts +43 -0
  178. package/bundle/node_modules/undici/types/balanced-pool.d.ts +29 -0
  179. package/bundle/node_modules/undici/types/cache-interceptor.d.ts +172 -0
  180. package/bundle/node_modules/undici/types/cache.d.ts +36 -0
  181. package/bundle/node_modules/undici/types/client-stats.d.ts +15 -0
  182. package/bundle/node_modules/undici/types/client.d.ts +110 -0
  183. package/bundle/node_modules/undici/types/connector.d.ts +34 -0
  184. package/bundle/node_modules/undici/types/content-type.d.ts +21 -0
  185. package/bundle/node_modules/undici/types/cookies.d.ts +30 -0
  186. package/bundle/node_modules/undici/types/diagnostics-channel.d.ts +66 -0
  187. package/bundle/node_modules/undici/types/dispatcher.d.ts +281 -0
  188. package/bundle/node_modules/undici/types/env-http-proxy-agent.d.ts +21 -0
  189. package/bundle/node_modules/undici/types/errors.d.ts +171 -0
  190. package/bundle/node_modules/undici/types/eventsource.d.ts +61 -0
  191. package/bundle/node_modules/undici/types/fetch.d.ts +210 -0
  192. package/bundle/node_modules/undici/types/formdata.d.ts +108 -0
  193. package/bundle/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  194. package/bundle/node_modules/undici/types/global-origin.d.ts +7 -0
  195. package/bundle/node_modules/undici/types/h2c-client.d.ts +75 -0
  196. package/bundle/node_modules/undici/types/handlers.d.ts +15 -0
  197. package/bundle/node_modules/undici/types/header.d.ts +160 -0
  198. package/bundle/node_modules/undici/types/index.d.ts +75 -0
  199. package/bundle/node_modules/undici/types/interceptors.d.ts +34 -0
  200. package/bundle/node_modules/undici/types/mock-agent.d.ts +68 -0
  201. package/bundle/node_modules/undici/types/mock-call-history.d.ts +111 -0
  202. package/bundle/node_modules/undici/types/mock-client.d.ts +25 -0
  203. package/bundle/node_modules/undici/types/mock-errors.d.ts +12 -0
  204. package/bundle/node_modules/undici/types/mock-interceptor.d.ts +93 -0
  205. package/bundle/node_modules/undici/types/mock-pool.d.ts +25 -0
  206. package/bundle/node_modules/undici/types/patch.d.ts +29 -0
  207. package/bundle/node_modules/undici/types/pool-stats.d.ts +19 -0
  208. package/bundle/node_modules/undici/types/pool.d.ts +41 -0
  209. package/bundle/node_modules/undici/types/proxy-agent.d.ts +29 -0
  210. package/bundle/node_modules/undici/types/readable.d.ts +68 -0
  211. package/bundle/node_modules/undici/types/retry-agent.d.ts +8 -0
  212. package/bundle/node_modules/undici/types/retry-handler.d.ts +116 -0
  213. package/bundle/node_modules/undici/types/util.d.ts +18 -0
  214. package/bundle/node_modules/undici/types/utility.d.ts +7 -0
  215. package/bundle/node_modules/undici/types/webidl.d.ts +266 -0
  216. package/bundle/node_modules/undici/types/websocket.d.ts +184 -0
  217. package/bundle/sandbox-macos-permissive-closed.sb +26 -0
  218. package/bundle/sandbox-macos-permissive-open.sb +19 -0
  219. package/bundle/sandbox-macos-permissive-proxied.sb +31 -0
  220. package/bundle/sandbox-macos-restrictive-closed.sb +87 -0
  221. package/bundle/sandbox-macos-restrictive-open.sb +90 -0
  222. package/bundle/sandbox-macos-restrictive-proxied.sb +92 -0
  223. package/package.json +137 -0
@@ -0,0 +1,164 @@
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
+ let SessionCache
16
+ // FIXME: remove workaround when the Node bug is fixed
17
+ // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308
18
+ if (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) {
19
+ SessionCache = class WeakSessionCache {
20
+ constructor (maxCachedSessions) {
21
+ this._maxCachedSessions = maxCachedSessions
22
+ this._sessionCache = new Map()
23
+ this._sessionRegistry = new global.FinalizationRegistry((key) => {
24
+ if (this._sessionCache.size < this._maxCachedSessions) {
25
+ return
26
+ }
27
+
28
+ const ref = this._sessionCache.get(key)
29
+ if (ref !== undefined && ref.deref() === undefined) {
30
+ this._sessionCache.delete(key)
31
+ }
32
+ })
33
+ }
34
+
35
+ get (sessionKey) {
36
+ const ref = this._sessionCache.get(sessionKey)
37
+ return ref ? ref.deref() : null
38
+ }
39
+
40
+ set (sessionKey, session) {
41
+ if (this._maxCachedSessions === 0) {
42
+ return
43
+ }
44
+
45
+ this._sessionCache.set(sessionKey, new WeakRef(session))
46
+ this._sessionRegistry.register(session, sessionKey)
47
+ }
48
+ }
49
+ } else {
50
+ SessionCache = class SimpleSessionCache {
51
+ constructor (maxCachedSessions) {
52
+ this._maxCachedSessions = maxCachedSessions
53
+ this._sessionCache = new Map()
54
+ }
55
+
56
+ get (sessionKey) {
57
+ return this._sessionCache.get(sessionKey)
58
+ }
59
+
60
+ set (sessionKey, session) {
61
+ if (this._maxCachedSessions === 0) {
62
+ return
63
+ }
64
+
65
+ if (this._sessionCache.size >= this._maxCachedSessions) {
66
+ // remove the oldest session
67
+ const { value: oldestKey } = this._sessionCache.keys().next()
68
+ this._sessionCache.delete(oldestKey)
69
+ }
70
+
71
+ this._sessionCache.set(sessionKey, session)
72
+ }
73
+ }
74
+ }
75
+
76
+ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {
77
+ if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
78
+ throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')
79
+ }
80
+
81
+ const options = { path: socketPath, ...opts }
82
+ const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)
83
+ timeout = timeout == null ? 10e3 : timeout
84
+ allowH2 = allowH2 != null ? allowH2 : false
85
+ return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {
86
+ let socket
87
+ if (protocol === 'https:') {
88
+ if (!tls) {
89
+ tls = require('node:tls')
90
+ }
91
+ servername = servername || options.servername || util.getServerName(host) || null
92
+
93
+ const sessionKey = servername || hostname
94
+ assert(sessionKey)
95
+
96
+ const session = customSession || sessionCache.get(sessionKey) || null
97
+
98
+ port = port || 443
99
+
100
+ socket = tls.connect({
101
+ highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...
102
+ ...options,
103
+ servername,
104
+ session,
105
+ localAddress,
106
+ ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],
107
+ socket: httpSocket, // upgrade socket connection
108
+ port,
109
+ host: hostname
110
+ })
111
+
112
+ socket
113
+ .on('session', function (session) {
114
+ // TODO (fix): Can a session become invalid once established? Don't think so?
115
+ sessionCache.set(sessionKey, session)
116
+ })
117
+ } else {
118
+ assert(!httpSocket, 'httpSocket can only be sent on TLS update')
119
+
120
+ port = port || 80
121
+
122
+ socket = net.connect({
123
+ highWaterMark: 64 * 1024, // Same as nodejs fs streams.
124
+ ...options,
125
+ localAddress,
126
+ port,
127
+ host: hostname
128
+ })
129
+ }
130
+
131
+ // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket
132
+ if (options.keepAlive == null || options.keepAlive) {
133
+ const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay
134
+ socket.setKeepAlive(true, keepAliveInitialDelay)
135
+ }
136
+
137
+ const clearConnectTimeout = util.setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port })
138
+
139
+ socket
140
+ .setNoDelay(true)
141
+ .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {
142
+ queueMicrotask(clearConnectTimeout)
143
+
144
+ if (callback) {
145
+ const cb = callback
146
+ callback = null
147
+ cb(null, this)
148
+ }
149
+ })
150
+ .on('error', function (err) {
151
+ queueMicrotask(clearConnectTimeout)
152
+
153
+ if (callback) {
154
+ const cb = callback
155
+ callback = null
156
+ cb(err)
157
+ }
158
+ })
159
+
160
+ return socket
161
+ }
162
+ }
163
+
164
+ 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,196 @@
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
+ headers: diagnosticsChannel.channel('undici:request:headers'),
20
+ trailers: diagnosticsChannel.channel('undici:request:trailers'),
21
+ error: diagnosticsChannel.channel('undici:request:error'),
22
+ // WebSocket
23
+ open: diagnosticsChannel.channel('undici:websocket:open'),
24
+ close: diagnosticsChannel.channel('undici:websocket:close'),
25
+ socketError: diagnosticsChannel.channel('undici:websocket:socket_error'),
26
+ ping: diagnosticsChannel.channel('undici:websocket:ping'),
27
+ pong: diagnosticsChannel.channel('undici:websocket:pong')
28
+ }
29
+
30
+ let isTrackingClientEvents = false
31
+
32
+ function trackClientEvents (debugLog = undiciDebugLog) {
33
+ if (isTrackingClientEvents) {
34
+ return
35
+ }
36
+
37
+ isTrackingClientEvents = true
38
+
39
+ diagnosticsChannel.subscribe('undici:client:beforeConnect',
40
+ evt => {
41
+ const {
42
+ connectParams: { version, protocol, port, host }
43
+ } = evt
44
+ debugLog(
45
+ 'connecting to %s%s using %s%s',
46
+ host,
47
+ port ? `:${port}` : '',
48
+ protocol,
49
+ version
50
+ )
51
+ })
52
+
53
+ diagnosticsChannel.subscribe('undici:client:connected',
54
+ evt => {
55
+ const {
56
+ connectParams: { version, protocol, port, host }
57
+ } = evt
58
+ debugLog(
59
+ 'connected to %s%s using %s%s',
60
+ host,
61
+ port ? `:${port}` : '',
62
+ protocol,
63
+ version
64
+ )
65
+ })
66
+
67
+ diagnosticsChannel.subscribe('undici:client:connectError',
68
+ evt => {
69
+ const {
70
+ connectParams: { version, protocol, port, host },
71
+ error
72
+ } = evt
73
+ debugLog(
74
+ 'connection to %s%s using %s%s errored - %s',
75
+ host,
76
+ port ? `:${port}` : '',
77
+ protocol,
78
+ version,
79
+ error.message
80
+ )
81
+ })
82
+
83
+ diagnosticsChannel.subscribe('undici:client:sendHeaders',
84
+ evt => {
85
+ const {
86
+ request: { method, path, origin }
87
+ } = evt
88
+ debugLog('sending request to %s %s/%s', method, origin, path)
89
+ })
90
+ }
91
+
92
+ let isTrackingRequestEvents = false
93
+
94
+ function trackRequestEvents (debugLog = undiciDebugLog) {
95
+ if (isTrackingRequestEvents) {
96
+ return
97
+ }
98
+
99
+ isTrackingRequestEvents = true
100
+
101
+ diagnosticsChannel.subscribe('undici:request:headers',
102
+ evt => {
103
+ const {
104
+ request: { method, path, origin },
105
+ response: { statusCode }
106
+ } = evt
107
+ debugLog(
108
+ 'received response to %s %s/%s - HTTP %d',
109
+ method,
110
+ origin,
111
+ path,
112
+ statusCode
113
+ )
114
+ })
115
+
116
+ diagnosticsChannel.subscribe('undici:request:trailers',
117
+ evt => {
118
+ const {
119
+ request: { method, path, origin }
120
+ } = evt
121
+ debugLog('trailers received from %s %s/%s', method, origin, path)
122
+ })
123
+
124
+ diagnosticsChannel.subscribe('undici:request:error',
125
+ evt => {
126
+ const {
127
+ request: { method, path, origin },
128
+ error
129
+ } = evt
130
+ debugLog(
131
+ 'request to %s %s/%s errored - %s',
132
+ method,
133
+ origin,
134
+ path,
135
+ error.message
136
+ )
137
+ })
138
+ }
139
+
140
+ let isTrackingWebSocketEvents = false
141
+
142
+ function trackWebSocketEvents (debugLog = websocketDebuglog) {
143
+ if (isTrackingWebSocketEvents) {
144
+ return
145
+ }
146
+
147
+ isTrackingWebSocketEvents = true
148
+
149
+ diagnosticsChannel.subscribe('undici:websocket:open',
150
+ evt => {
151
+ const {
152
+ address: { address, port }
153
+ } = evt
154
+ debugLog('connection opened %s%s', address, port ? `:${port}` : '')
155
+ })
156
+
157
+ diagnosticsChannel.subscribe('undici:websocket:close',
158
+ evt => {
159
+ const { websocket, code, reason } = evt
160
+ debugLog(
161
+ 'closed connection to %s - %s %s',
162
+ websocket.url,
163
+ code,
164
+ reason
165
+ )
166
+ })
167
+
168
+ diagnosticsChannel.subscribe('undici:websocket:socket_error',
169
+ err => {
170
+ debugLog('connection errored - %s', err.message)
171
+ })
172
+
173
+ diagnosticsChannel.subscribe('undici:websocket:ping',
174
+ evt => {
175
+ debugLog('ping received')
176
+ })
177
+
178
+ diagnosticsChannel.subscribe('undici:websocket:pong',
179
+ evt => {
180
+ debugLog('pong received')
181
+ })
182
+ }
183
+
184
+ if (undiciDebugLog.enabled || fetchDebuglog.enabled) {
185
+ trackClientEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog)
186
+ trackRequestEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog)
187
+ }
188
+
189
+ if (websocketDebuglog.enabled) {
190
+ trackClientEvents(undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog)
191
+ trackWebSocketEvents(websocketDebuglog)
192
+ }
193
+
194
+ module.exports = {
195
+ channels
196
+ }