monitor-transfer-dsh 0.0.0-stage → 0.1.2

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 (367) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +51 -2
  3. package/cordis.patch.yml +4 -0
  4. package/lib/client.js +381 -0
  5. package/lib/index.js +267 -0
  6. package/package.json +67 -3
  7. package/skill/SKILL.md +48 -0
  8. package/skill/tools/node_modules/.package-lock.json +163 -0
  9. package/skill/tools/node_modules/pg/LICENSE +21 -0
  10. package/skill/tools/node_modules/pg/README.md +96 -0
  11. package/skill/tools/node_modules/pg/esm/index.mjs +20 -0
  12. package/skill/tools/node_modules/pg/lib/client.js +846 -0
  13. package/skill/tools/node_modules/pg/lib/connection-parameters.js +184 -0
  14. package/skill/tools/node_modules/pg/lib/connection.js +250 -0
  15. package/skill/tools/node_modules/pg/lib/crypto/cert-signatures.js +122 -0
  16. package/skill/tools/node_modules/pg/lib/crypto/sasl.js +262 -0
  17. package/skill/tools/node_modules/pg/lib/crypto/utils.js +89 -0
  18. package/skill/tools/node_modules/pg/lib/defaults.js +94 -0
  19. package/skill/tools/node_modules/pg/lib/index.js +73 -0
  20. package/skill/tools/node_modules/pg/lib/native/client.js +428 -0
  21. package/skill/tools/node_modules/pg/lib/native/index.js +2 -0
  22. package/skill/tools/node_modules/pg/lib/native/query.js +167 -0
  23. package/skill/tools/node_modules/pg/lib/query.js +263 -0
  24. package/skill/tools/node_modules/pg/lib/result.js +109 -0
  25. package/skill/tools/node_modules/pg/lib/stream.js +83 -0
  26. package/skill/tools/node_modules/pg/lib/type-overrides.js +35 -0
  27. package/skill/tools/node_modules/pg/lib/utils.js +225 -0
  28. package/skill/tools/node_modules/pg/package.json +76 -0
  29. package/skill/tools/node_modules/pg-cloudflare/LICENSE +21 -0
  30. package/skill/tools/node_modules/pg-cloudflare/README.md +112 -0
  31. package/skill/tools/node_modules/pg-cloudflare/dist/empty.d.ts +2 -0
  32. package/skill/tools/node_modules/pg-cloudflare/dist/empty.js +6 -0
  33. package/skill/tools/node_modules/pg-cloudflare/dist/empty.js.map +1 -0
  34. package/skill/tools/node_modules/pg-cloudflare/dist/index.d.ts +29 -0
  35. package/skill/tools/node_modules/pg-cloudflare/dist/index.js +171 -0
  36. package/skill/tools/node_modules/pg-cloudflare/dist/index.js.map +1 -0
  37. package/skill/tools/node_modules/pg-cloudflare/esm/index.mjs +3 -0
  38. package/skill/tools/node_modules/pg-cloudflare/package.json +39 -0
  39. package/skill/tools/node_modules/pg-cloudflare/src/empty.ts +3 -0
  40. package/skill/tools/node_modules/pg-cloudflare/src/index.ts +187 -0
  41. package/skill/tools/node_modules/pg-cloudflare/src/types.d.ts +25 -0
  42. package/skill/tools/node_modules/pg-connection-string/LICENSE +21 -0
  43. package/skill/tools/node_modules/pg-connection-string/README.md +105 -0
  44. package/skill/tools/node_modules/pg-connection-string/esm/index.mjs +8 -0
  45. package/skill/tools/node_modules/pg-connection-string/index.d.ts +37 -0
  46. package/skill/tools/node_modules/pg-connection-string/index.js +237 -0
  47. package/skill/tools/node_modules/pg-connection-string/package.json +51 -0
  48. package/skill/tools/node_modules/pg-int8/LICENSE +13 -0
  49. package/skill/tools/node_modules/pg-int8/README.md +16 -0
  50. package/skill/tools/node_modules/pg-int8/index.js +100 -0
  51. package/skill/tools/node_modules/pg-int8/package.json +24 -0
  52. package/skill/tools/node_modules/pg-pool/LICENSE +21 -0
  53. package/skill/tools/node_modules/pg-pool/README.md +357 -0
  54. package/skill/tools/node_modules/pg-pool/esm/index.mjs +5 -0
  55. package/skill/tools/node_modules/pg-pool/index.js +517 -0
  56. package/skill/tools/node_modules/pg-pool/package.json +51 -0
  57. package/skill/tools/node_modules/pg-protocol/LICENSE +21 -0
  58. package/skill/tools/node_modules/pg-protocol/README.md +3 -0
  59. package/skill/tools/node_modules/pg-protocol/dist/b.d.ts +1 -0
  60. package/skill/tools/node_modules/pg-protocol/dist/b.js +23 -0
  61. package/skill/tools/node_modules/pg-protocol/dist/b.js.map +1 -0
  62. package/skill/tools/node_modules/pg-protocol/dist/buffer-reader.d.ts +14 -0
  63. package/skill/tools/node_modules/pg-protocol/dist/buffer-reader.js +55 -0
  64. package/skill/tools/node_modules/pg-protocol/dist/buffer-reader.js.map +1 -0
  65. package/skill/tools/node_modules/pg-protocol/dist/buffer-writer.d.ts +21 -0
  66. package/skill/tools/node_modules/pg-protocol/dist/buffer-writer.js +113 -0
  67. package/skill/tools/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -0
  68. package/skill/tools/node_modules/pg-protocol/dist/inbound-parser.test.d.ts +1 -0
  69. package/skill/tools/node_modules/pg-protocol/dist/inbound-parser.test.js +538 -0
  70. package/skill/tools/node_modules/pg-protocol/dist/inbound-parser.test.js.map +1 -0
  71. package/skill/tools/node_modules/pg-protocol/dist/index.d.ts +5 -0
  72. package/skill/tools/node_modules/pg-protocol/dist/index.js +15 -0
  73. package/skill/tools/node_modules/pg-protocol/dist/index.js.map +1 -0
  74. package/skill/tools/node_modules/pg-protocol/dist/messages.d.ts +161 -0
  75. package/skill/tools/node_modules/pg-protocol/dist/messages.js +160 -0
  76. package/skill/tools/node_modules/pg-protocol/dist/messages.js.map +1 -0
  77. package/skill/tools/node_modules/pg-protocol/dist/outbound-serializer.test.d.ts +1 -0
  78. package/skill/tools/node_modules/pg-protocol/dist/outbound-serializer.test.js +325 -0
  79. package/skill/tools/node_modules/pg-protocol/dist/outbound-serializer.test.js.map +1 -0
  80. package/skill/tools/node_modules/pg-protocol/dist/parser.d.ts +22 -0
  81. package/skill/tools/node_modules/pg-protocol/dist/parser.js +325 -0
  82. package/skill/tools/node_modules/pg-protocol/dist/parser.js.map +1 -0
  83. package/skill/tools/node_modules/pg-protocol/dist/serializer.d.ts +42 -0
  84. package/skill/tools/node_modules/pg-protocol/dist/serializer.js +198 -0
  85. package/skill/tools/node_modules/pg-protocol/dist/serializer.js.map +1 -0
  86. package/skill/tools/node_modules/pg-protocol/esm/index.js +11 -0
  87. package/skill/tools/node_modules/pg-protocol/package.json +44 -0
  88. package/skill/tools/node_modules/pg-protocol/src/b.ts +25 -0
  89. package/skill/tools/node_modules/pg-protocol/src/buffer-reader.ts +58 -0
  90. package/skill/tools/node_modules/pg-protocol/src/buffer-writer.ts +120 -0
  91. package/skill/tools/node_modules/pg-protocol/src/inbound-parser.test.ts +585 -0
  92. package/skill/tools/node_modules/pg-protocol/src/index.ts +11 -0
  93. package/skill/tools/node_modules/pg-protocol/src/messages.ts +262 -0
  94. package/skill/tools/node_modules/pg-protocol/src/outbound-serializer.test.ts +356 -0
  95. package/skill/tools/node_modules/pg-protocol/src/parser.ts +414 -0
  96. package/skill/tools/node_modules/pg-protocol/src/serializer.ts +286 -0
  97. package/skill/tools/node_modules/pg-protocol/src/testing/buffer-list.ts +67 -0
  98. package/skill/tools/node_modules/pg-protocol/src/testing/test-buffers.ts +166 -0
  99. package/skill/tools/node_modules/pg-types/.travis.yml +7 -0
  100. package/skill/tools/node_modules/pg-types/Makefile +14 -0
  101. package/skill/tools/node_modules/pg-types/README.md +75 -0
  102. package/skill/tools/node_modules/pg-types/index.d.ts +137 -0
  103. package/skill/tools/node_modules/pg-types/index.js +47 -0
  104. package/skill/tools/node_modules/pg-types/index.test-d.ts +21 -0
  105. package/skill/tools/node_modules/pg-types/lib/arrayParser.js +11 -0
  106. package/skill/tools/node_modules/pg-types/lib/binaryParsers.js +257 -0
  107. package/skill/tools/node_modules/pg-types/lib/builtins.js +73 -0
  108. package/skill/tools/node_modules/pg-types/lib/textParsers.js +215 -0
  109. package/skill/tools/node_modules/pg-types/package.json +42 -0
  110. package/skill/tools/node_modules/pg-types/test/index.js +24 -0
  111. package/skill/tools/node_modules/pg-types/test/types.js +597 -0
  112. package/skill/tools/node_modules/pgpass/README.md +74 -0
  113. package/skill/tools/node_modules/pgpass/lib/helper.js +233 -0
  114. package/skill/tools/node_modules/pgpass/lib/index.js +23 -0
  115. package/skill/tools/node_modules/pgpass/package.json +41 -0
  116. package/skill/tools/node_modules/postgres-array/index.d.ts +4 -0
  117. package/skill/tools/node_modules/postgres-array/index.js +97 -0
  118. package/skill/tools/node_modules/postgres-array/license +21 -0
  119. package/skill/tools/node_modules/postgres-array/package.json +35 -0
  120. package/skill/tools/node_modules/postgres-array/readme.md +43 -0
  121. package/skill/tools/node_modules/postgres-bytea/index.js +33 -0
  122. package/skill/tools/node_modules/postgres-bytea/license +21 -0
  123. package/skill/tools/node_modules/postgres-bytea/package.json +34 -0
  124. package/skill/tools/node_modules/postgres-bytea/readme.md +34 -0
  125. package/skill/tools/node_modules/postgres-date/index.js +116 -0
  126. package/skill/tools/node_modules/postgres-date/license +21 -0
  127. package/skill/tools/node_modules/postgres-date/package.json +33 -0
  128. package/skill/tools/node_modules/postgres-date/readme.md +49 -0
  129. package/skill/tools/node_modules/postgres-interval/index.d.ts +20 -0
  130. package/skill/tools/node_modules/postgres-interval/index.js +125 -0
  131. package/skill/tools/node_modules/postgres-interval/license +21 -0
  132. package/skill/tools/node_modules/postgres-interval/package.json +36 -0
  133. package/skill/tools/node_modules/postgres-interval/readme.md +48 -0
  134. package/skill/tools/node_modules/split2/LICENSE +13 -0
  135. package/skill/tools/node_modules/split2/README.md +85 -0
  136. package/skill/tools/node_modules/split2/bench.js +27 -0
  137. package/skill/tools/node_modules/split2/index.js +141 -0
  138. package/skill/tools/node_modules/split2/package.json +39 -0
  139. package/skill/tools/node_modules/split2/test.js +409 -0
  140. package/skill/tools/node_modules/undici/LICENSE +21 -0
  141. package/skill/tools/node_modules/undici/README.md +828 -0
  142. package/skill/tools/node_modules/undici/docs/docs/api/Agent.md +291 -0
  143. package/skill/tools/node_modules/undici/docs/docs/api/BalancedPool.md +297 -0
  144. package/skill/tools/node_modules/undici/docs/docs/api/CacheStorage.md +188 -0
  145. package/skill/tools/node_modules/undici/docs/docs/api/CacheStore.md +375 -0
  146. package/skill/tools/node_modules/undici/docs/docs/api/Client.md +538 -0
  147. package/skill/tools/node_modules/undici/docs/docs/api/ClientStats.md +93 -0
  148. package/skill/tools/node_modules/undici/docs/docs/api/Connector.md +198 -0
  149. package/skill/tools/node_modules/undici/docs/docs/api/ContentType.md +97 -0
  150. package/skill/tools/node_modules/undici/docs/docs/api/Cookies.md +179 -0
  151. package/skill/tools/node_modules/undici/docs/docs/api/Debug.md +78 -0
  152. package/skill/tools/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +518 -0
  153. package/skill/tools/node_modules/undici/docs/docs/api/Dispatcher.md +842 -0
  154. package/skill/tools/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +171 -0
  155. package/skill/tools/node_modules/undici/docs/docs/api/Errors.md +624 -0
  156. package/skill/tools/node_modules/undici/docs/docs/api/EventSource.md +358 -0
  157. package/skill/tools/node_modules/undici/docs/docs/api/Fetch.md +721 -0
  158. package/skill/tools/node_modules/undici/docs/docs/api/GlobalInstallation.md +121 -0
  159. package/skill/tools/node_modules/undici/docs/docs/api/H2CClient.md +386 -0
  160. package/skill/tools/node_modules/undici/docs/docs/api/Interceptors.md +439 -0
  161. package/skill/tools/node_modules/undici/docs/docs/api/MockAgent.md +622 -0
  162. package/skill/tools/node_modules/undici/docs/docs/api/MockCallHistory.md +371 -0
  163. package/skill/tools/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +206 -0
  164. package/skill/tools/node_modules/undici/docs/docs/api/MockClient.md +199 -0
  165. package/skill/tools/node_modules/undici/docs/docs/api/MockErrors.md +63 -0
  166. package/skill/tools/node_modules/undici/docs/docs/api/MockPool.md +618 -0
  167. package/skill/tools/node_modules/undici/docs/docs/api/Pool.md +278 -0
  168. package/skill/tools/node_modules/undici/docs/docs/api/PoolStats.md +141 -0
  169. package/skill/tools/node_modules/undici/docs/docs/api/ProxyAgent.md +248 -0
  170. package/skill/tools/node_modules/undici/docs/docs/api/RedirectHandler.md +279 -0
  171. package/skill/tools/node_modules/undici/docs/docs/api/RetryAgent.md +136 -0
  172. package/skill/tools/node_modules/undici/docs/docs/api/RetryHandler.md +200 -0
  173. package/skill/tools/node_modules/undici/docs/docs/api/RoundRobinPool.md +239 -0
  174. package/skill/tools/node_modules/undici/docs/docs/api/SnapshotAgent.md +361 -0
  175. package/skill/tools/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +256 -0
  176. package/skill/tools/node_modules/undici/docs/docs/api/Util.md +82 -0
  177. package/skill/tools/node_modules/undici/docs/docs/api/WebSocket.md +536 -0
  178. package/skill/tools/node_modules/undici/docs/docs/api/api-lifecycle.md +159 -0
  179. package/skill/tools/node_modules/undici/docs/docs/best-practices/client-certificate.md +66 -0
  180. package/skill/tools/node_modules/undici/docs/docs/best-practices/crawling.md +60 -0
  181. package/skill/tools/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
  182. package/skill/tools/node_modules/undici/docs/docs/best-practices/mocking-request.md +192 -0
  183. package/skill/tools/node_modules/undici/docs/docs/best-practices/proxy.md +129 -0
  184. package/skill/tools/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +226 -0
  185. package/skill/tools/node_modules/undici/docs/docs/best-practices/writing-tests.md +65 -0
  186. package/skill/tools/node_modules/undici/docs/docs/getting-started.md +281 -0
  187. package/skill/tools/node_modules/undici/docs/docs/index.md +793 -0
  188. package/skill/tools/node_modules/undici/docs/docs/site.json +125 -0
  189. package/skill/tools/node_modules/undici/docs/docs/type-map.json +79 -0
  190. package/skill/tools/node_modules/undici/index-fetch.js +65 -0
  191. package/skill/tools/node_modules/undici/index.d.ts +3 -0
  192. package/skill/tools/node_modules/undici/index.js +236 -0
  193. package/skill/tools/node_modules/undici/lib/api/abort-signal.js +59 -0
  194. package/skill/tools/node_modules/undici/lib/api/api-connect.js +112 -0
  195. package/skill/tools/node_modules/undici/lib/api/api-pipeline.js +265 -0
  196. package/skill/tools/node_modules/undici/lib/api/api-request.js +244 -0
  197. package/skill/tools/node_modules/undici/lib/api/api-stream.js +270 -0
  198. package/skill/tools/node_modules/undici/lib/api/api-upgrade.js +121 -0
  199. package/skill/tools/node_modules/undici/lib/api/index.js +7 -0
  200. package/skill/tools/node_modules/undici/lib/api/readable.js +615 -0
  201. package/skill/tools/node_modules/undici/lib/cache/memory-cache-store.js +314 -0
  202. package/skill/tools/node_modules/undici/lib/cache/sqlite-cache-store.js +593 -0
  203. package/skill/tools/node_modules/undici/lib/core/connect.js +198 -0
  204. package/skill/tools/node_modules/undici/lib/core/constants.js +131 -0
  205. package/skill/tools/node_modules/undici/lib/core/diagnostics.js +227 -0
  206. package/skill/tools/node_modules/undici/lib/core/errors.js +534 -0
  207. package/skill/tools/node_modules/undici/lib/core/request.js +582 -0
  208. package/skill/tools/node_modules/undici/lib/core/socks5-client.js +422 -0
  209. package/skill/tools/node_modules/undici/lib/core/socks5-utils.js +212 -0
  210. package/skill/tools/node_modules/undici/lib/core/symbols.js +81 -0
  211. package/skill/tools/node_modules/undici/lib/core/tree.js +160 -0
  212. package/skill/tools/node_modules/undici/lib/core/util.js +1035 -0
  213. package/skill/tools/node_modules/undici/lib/dispatcher/agent.js +181 -0
  214. package/skill/tools/node_modules/undici/lib/dispatcher/balanced-pool.js +217 -0
  215. package/skill/tools/node_modules/undici/lib/dispatcher/client-h1.js +1846 -0
  216. package/skill/tools/node_modules/undici/lib/dispatcher/client-h2.js +1989 -0
  217. package/skill/tools/node_modules/undici/lib/dispatcher/client.js +749 -0
  218. package/skill/tools/node_modules/undici/lib/dispatcher/dispatcher-base.js +198 -0
  219. package/skill/tools/node_modules/undici/lib/dispatcher/dispatcher.js +58 -0
  220. package/skill/tools/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +127 -0
  221. package/skill/tools/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +190 -0
  222. package/skill/tools/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
  223. package/skill/tools/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
  224. package/skill/tools/node_modules/undici/lib/dispatcher/parser-h1.js +1065 -0
  225. package/skill/tools/node_modules/undici/lib/dispatcher/pool-base.js +347 -0
  226. package/skill/tools/node_modules/undici/lib/dispatcher/pool.js +229 -0
  227. package/skill/tools/node_modules/undici/lib/dispatcher/proxy-agent.js +418 -0
  228. package/skill/tools/node_modules/undici/lib/dispatcher/retry-agent.js +48 -0
  229. package/skill/tools/node_modules/undici/lib/dispatcher/round-robin-pool.js +169 -0
  230. package/skill/tools/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +350 -0
  231. package/skill/tools/node_modules/undici/lib/encoding/index.js +33 -0
  232. package/skill/tools/node_modules/undici/lib/global.js +82 -0
  233. package/skill/tools/node_modules/undici/lib/handler/cache-handler.js +1222 -0
  234. package/skill/tools/node_modules/undici/lib/handler/cache-revalidation-handler.js +134 -0
  235. package/skill/tools/node_modules/undici/lib/handler/decorator-handler.js +76 -0
  236. package/skill/tools/node_modules/undici/lib/handler/deduplication-handler.js +540 -0
  237. package/skill/tools/node_modules/undici/lib/handler/redirect-handler.js +284 -0
  238. package/skill/tools/node_modules/undici/lib/handler/retry-handler.js +686 -0
  239. package/skill/tools/node_modules/undici/lib/interceptor/cache.js +771 -0
  240. package/skill/tools/node_modules/undici/lib/interceptor/decompress.js +574 -0
  241. package/skill/tools/node_modules/undici/lib/interceptor/deduplicate.js +118 -0
  242. package/skill/tools/node_modules/undici/lib/interceptor/dns.js +593 -0
  243. package/skill/tools/node_modules/undici/lib/interceptor/dump.js +99 -0
  244. package/skill/tools/node_modules/undici/lib/interceptor/redirect.js +21 -0
  245. package/skill/tools/node_modules/undici/lib/interceptor/response-error.js +139 -0
  246. package/skill/tools/node_modules/undici/lib/interceptor/retry.js +19 -0
  247. package/skill/tools/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
  248. package/skill/tools/node_modules/undici/lib/llhttp/constants.js +531 -0
  249. package/skill/tools/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  250. package/skill/tools/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  251. package/skill/tools/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
  252. package/skill/tools/node_modules/undici/lib/llhttp/utils.js +12 -0
  253. package/skill/tools/node_modules/undici/lib/milo/LICENSE.md +7 -0
  254. package/skill/tools/node_modules/undici/lib/milo/no-simd.js +1002 -0
  255. package/skill/tools/node_modules/undici/lib/milo/simd.js +1002 -0
  256. package/skill/tools/node_modules/undici/lib/mock/mock-agent.js +255 -0
  257. package/skill/tools/node_modules/undici/lib/mock/mock-call-history.js +248 -0
  258. package/skill/tools/node_modules/undici/lib/mock/mock-client.js +68 -0
  259. package/skill/tools/node_modules/undici/lib/mock/mock-errors.js +29 -0
  260. package/skill/tools/node_modules/undici/lib/mock/mock-interceptor.js +227 -0
  261. package/skill/tools/node_modules/undici/lib/mock/mock-pool.js +68 -0
  262. package/skill/tools/node_modules/undici/lib/mock/mock-symbols.js +32 -0
  263. package/skill/tools/node_modules/undici/lib/mock/mock-utils.js +730 -0
  264. package/skill/tools/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  265. package/skill/tools/node_modules/undici/lib/mock/snapshot-agent.js +371 -0
  266. package/skill/tools/node_modules/undici/lib/mock/snapshot-recorder.js +624 -0
  267. package/skill/tools/node_modules/undici/lib/mock/snapshot-utils.js +159 -0
  268. package/skill/tools/node_modules/undici/lib/util/cache.js +764 -0
  269. package/skill/tools/node_modules/undici/lib/util/date.js +670 -0
  270. package/skill/tools/node_modules/undici/lib/util/runtime-features.js +93 -0
  271. package/skill/tools/node_modules/undici/lib/util/stats.js +32 -0
  272. package/skill/tools/node_modules/undici/lib/util/timers.js +425 -0
  273. package/skill/tools/node_modules/undici/lib/web/cache/cache.js +871 -0
  274. package/skill/tools/node_modules/undici/lib/web/cache/cachestorage.js +158 -0
  275. package/skill/tools/node_modules/undici/lib/web/cache/util.js +45 -0
  276. package/skill/tools/node_modules/undici/lib/web/cookies/constants.js +12 -0
  277. package/skill/tools/node_modules/undici/lib/web/cookies/index.js +211 -0
  278. package/skill/tools/node_modules/undici/lib/web/cookies/parse.js +318 -0
  279. package/skill/tools/node_modules/undici/lib/web/cookies/util.js +371 -0
  280. package/skill/tools/node_modules/undici/lib/web/eventsource/eventsource-stream.js +575 -0
  281. package/skill/tools/node_modules/undici/lib/web/eventsource/eventsource.js +547 -0
  282. package/skill/tools/node_modules/undici/lib/web/eventsource/util.js +60 -0
  283. package/skill/tools/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  284. package/skill/tools/node_modules/undici/lib/web/fetch/body.js +583 -0
  285. package/skill/tools/node_modules/undici/lib/web/fetch/constants.js +131 -0
  286. package/skill/tools/node_modules/undici/lib/web/fetch/data-url.js +596 -0
  287. package/skill/tools/node_modules/undici/lib/web/fetch/formdata-parser.js +594 -0
  288. package/skill/tools/node_modules/undici/lib/web/fetch/formdata.js +272 -0
  289. package/skill/tools/node_modules/undici/lib/web/fetch/global.js +40 -0
  290. package/skill/tools/node_modules/undici/lib/web/fetch/headers.js +722 -0
  291. package/skill/tools/node_modules/undici/lib/web/fetch/index.js +2451 -0
  292. package/skill/tools/node_modules/undici/lib/web/fetch/request.js +1117 -0
  293. package/skill/tools/node_modules/undici/lib/web/fetch/response.js +638 -0
  294. package/skill/tools/node_modules/undici/lib/web/fetch/util.js +1530 -0
  295. package/skill/tools/node_modules/undici/lib/web/infra/index.js +244 -0
  296. package/skill/tools/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
  297. package/skill/tools/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
  298. package/skill/tools/node_modules/undici/lib/web/webidl/index.js +992 -0
  299. package/skill/tools/node_modules/undici/lib/web/websocket/connection.js +350 -0
  300. package/skill/tools/node_modules/undici/lib/web/websocket/constants.js +126 -0
  301. package/skill/tools/node_modules/undici/lib/web/websocket/events.js +348 -0
  302. package/skill/tools/node_modules/undici/lib/web/websocket/frame.js +127 -0
  303. package/skill/tools/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
  304. package/skill/tools/node_modules/undici/lib/web/websocket/receiver.js +530 -0
  305. package/skill/tools/node_modules/undici/lib/web/websocket/sender.js +109 -0
  306. package/skill/tools/node_modules/undici/lib/web/websocket/stream/websocketerror.js +107 -0
  307. package/skill/tools/node_modules/undici/lib/web/websocket/stream/websocketstream.js +511 -0
  308. package/skill/tools/node_modules/undici/lib/web/websocket/util.js +347 -0
  309. package/skill/tools/node_modules/undici/lib/web/websocket/websocket.js +783 -0
  310. package/skill/tools/node_modules/undici/package.json +154 -0
  311. package/skill/tools/node_modules/undici/scripts/strip-comments.js +10 -0
  312. package/skill/tools/node_modules/undici/types/README.md +6 -0
  313. package/skill/tools/node_modules/undici/types/agent.d.ts +30 -0
  314. package/skill/tools/node_modules/undici/types/api.d.ts +43 -0
  315. package/skill/tools/node_modules/undici/types/balanced-pool.d.ts +30 -0
  316. package/skill/tools/node_modules/undici/types/cache-interceptor.d.ts +189 -0
  317. package/skill/tools/node_modules/undici/types/cache.d.ts +36 -0
  318. package/skill/tools/node_modules/undici/types/client-stats.d.ts +15 -0
  319. package/skill/tools/node_modules/undici/types/client.d.ts +190 -0
  320. package/skill/tools/node_modules/undici/types/connector.d.ts +37 -0
  321. package/skill/tools/node_modules/undici/types/content-type.d.ts +21 -0
  322. package/skill/tools/node_modules/undici/types/cookies.d.ts +30 -0
  323. package/skill/tools/node_modules/undici/types/diagnostics-channel.d.ts +75 -0
  324. package/skill/tools/node_modules/undici/types/dispatcher.d.ts +253 -0
  325. package/skill/tools/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
  326. package/skill/tools/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
  327. package/skill/tools/node_modules/undici/types/errors.d.ts +202 -0
  328. package/skill/tools/node_modules/undici/types/eventsource.d.ts +66 -0
  329. package/skill/tools/node_modules/undici/types/fetch.d.ts +235 -0
  330. package/skill/tools/node_modules/undici/types/formdata.d.ts +108 -0
  331. package/skill/tools/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  332. package/skill/tools/node_modules/undici/types/global-origin.d.ts +7 -0
  333. package/skill/tools/node_modules/undici/types/h2c-client.d.ts +73 -0
  334. package/skill/tools/node_modules/undici/types/handlers.d.ts +16 -0
  335. package/skill/tools/node_modules/undici/types/header.d.ts +165 -0
  336. package/skill/tools/node_modules/undici/types/index.d.ts +93 -0
  337. package/skill/tools/node_modules/undici/types/interceptors.d.ts +87 -0
  338. package/skill/tools/node_modules/undici/types/mock-agent.d.ts +69 -0
  339. package/skill/tools/node_modules/undici/types/mock-call-history.d.ts +111 -0
  340. package/skill/tools/node_modules/undici/types/mock-client.d.ts +27 -0
  341. package/skill/tools/node_modules/undici/types/mock-errors.d.ts +12 -0
  342. package/skill/tools/node_modules/undici/types/mock-interceptor.d.ts +98 -0
  343. package/skill/tools/node_modules/undici/types/mock-pool.d.ts +27 -0
  344. package/skill/tools/node_modules/undici/types/patch.d.ts +29 -0
  345. package/skill/tools/node_modules/undici/types/pool-stats.d.ts +19 -0
  346. package/skill/tools/node_modules/undici/types/pool.d.ts +39 -0
  347. package/skill/tools/node_modules/undici/types/proxy-agent.d.ts +36 -0
  348. package/skill/tools/node_modules/undici/types/readable.d.ts +68 -0
  349. package/skill/tools/node_modules/undici/types/retry-agent.d.ts +8 -0
  350. package/skill/tools/node_modules/undici/types/retry-handler.d.ts +125 -0
  351. package/skill/tools/node_modules/undici/types/round-robin-pool.d.ts +39 -0
  352. package/skill/tools/node_modules/undici/types/snapshot-agent.d.ts +113 -0
  353. package/skill/tools/node_modules/undici/types/socks5-proxy-agent.d.ts +27 -0
  354. package/skill/tools/node_modules/undici/types/util.d.ts +18 -0
  355. package/skill/tools/node_modules/undici/types/utility.d.ts +7 -0
  356. package/skill/tools/node_modules/undici/types/webidl.d.ts +352 -0
  357. package/skill/tools/node_modules/undici/types/websocket.d.ts +188 -0
  358. package/skill/tools/node_modules/xtend/.jshintrc +30 -0
  359. package/skill/tools/node_modules/xtend/LICENSE +20 -0
  360. package/skill/tools/node_modules/xtend/README.md +32 -0
  361. package/skill/tools/node_modules/xtend/immutable.js +19 -0
  362. package/skill/tools/node_modules/xtend/mutable.js +17 -0
  363. package/skill/tools/node_modules/xtend/package.json +55 -0
  364. package/skill/tools/node_modules/xtend/test.js +103 -0
  365. package/skill/tools/package-lock.json +172 -0
  366. package/skill/tools/package.json +9 -0
  367. package/skill/tools/transfer_core.js +414 -0
@@ -0,0 +1,347 @@
1
+ 'use strict'
2
+
3
+ const { AsyncResource } = require('node:async_hooks')
4
+ const { PoolStats } = require('../util/stats.js')
5
+ const DispatcherBase = require('./dispatcher-base')
6
+ const FixedQueue = require('./fixed-queue')
7
+ const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('../core/symbols')
8
+
9
+ const kClients = Symbol('clients')
10
+ const kNeedDrain = Symbol('needDrain')
11
+ const kQueue = Symbol('queue')
12
+ const kClosedResolve = Symbol('closed resolve')
13
+ const kOnDrain = Symbol('onDrain')
14
+ const kOnConnect = Symbol('onConnect')
15
+ const kOnDisconnect = Symbol('onDisconnect')
16
+ const kOnConnectionError = Symbol('onConnectionError')
17
+ const kOnClientBusy = Symbol('on client busy')
18
+ const kOnClientDrain = Symbol('on client drain')
19
+ const kDrainQueue = Symbol('drain queue')
20
+ const kGetDispatcher = Symbol('get dispatcher')
21
+ const kHasDispatcher = Symbol('has dispatcher')
22
+ const kAddClient = Symbol('add client')
23
+ const kRemoveClient = Symbol('remove client')
24
+ const kRetireClient = Symbol('retire client')
25
+ const kRetiring = Symbol('retiring clients')
26
+
27
+ // Closes every live client, including clients that have been
28
+ // taken out of rotation but are still finishing their own
29
+ // requests.
30
+ // Requests that wait in the Pool queue are dispatched later from whichever
31
+ // callback drains the queue (another request's connect, drain, ...). Capture
32
+ // the caller's async context so Client#dispatch, and the diagnostics channel
33
+ // events it publishes, still run in it.
34
+ class QueuedRequest extends AsyncResource {
35
+ constructor (opts, handler) {
36
+ super('UNDICI_POOL_QUEUED_REQUEST')
37
+ this.opts = opts
38
+ this.handler = handler
39
+ }
40
+
41
+ dispatch (dispatcher) {
42
+ return this.runInAsyncScope(dispatcher.dispatch, dispatcher, this.opts, this.handler)
43
+ }
44
+ }
45
+
46
+ function closeClients (pool) {
47
+ const closeAll = []
48
+ for (let i = 0; i < pool[kClients].length; i++) {
49
+ const client = pool[kClients][i]
50
+ if (!client.destroyed) {
51
+ closeAll.push(client.close())
52
+ }
53
+ }
54
+ for (const closed of pool[kRetiring].values()) {
55
+ closeAll.push(closed)
56
+ }
57
+ return Promise.all(closeAll)
58
+ }
59
+
60
+ class PoolBase extends DispatcherBase {
61
+ [kQueue] = new FixedQueue();
62
+
63
+ [kQueued] = 0;
64
+
65
+ [kClients] = [];
66
+
67
+ // Clients removed from kClients that have not finished closing,
68
+ // mapped to a promise that settles once they have.
69
+ [kRetiring] = new Map();
70
+
71
+ [kNeedDrain] = false;
72
+
73
+ [kOnDrain] (client, origin, targets) {
74
+ if (client.closed || client.destroyed) {
75
+ return
76
+ }
77
+
78
+ const queue = this[kQueue]
79
+ let needDrain = false
80
+
81
+ this[kOnClientDrain](client)
82
+
83
+ while (!needDrain) {
84
+ const item = queue.shift()
85
+ if (!item) {
86
+ break
87
+ }
88
+ this[kQueued]--
89
+ needDrain = !item.dispatch(client)
90
+ }
91
+
92
+ client[kNeedDrain] = needDrain
93
+ if (needDrain) {
94
+ this[kOnClientBusy](client)
95
+
96
+ // This client is full but requests are still queued, e.g. an h2
97
+ // client that has just released everything queued while ALPN was
98
+ // negotiated and hit maxConcurrentStreams. Hand the rest to other
99
+ // clients, creating new ones up to the connection limit, instead of
100
+ // leaving them for this client to drain one batch at a time.
101
+ if (!queue.isEmpty()) {
102
+ return this[kDrainQueue](origin, targets)
103
+ }
104
+ }
105
+
106
+ if (!needDrain && this[kNeedDrain]) {
107
+ this[kNeedDrain] = false
108
+ this.emit('drain', origin, [this, ...targets])
109
+ }
110
+
111
+ if (this[kClosedResolve] && queue.isEmpty()) {
112
+ return closeClients(this).then(this[kClosedResolve])
113
+ }
114
+ }
115
+
116
+ [kOnClientBusy] () {}
117
+
118
+ [kOnClientDrain] () {}
119
+
120
+ [kDrainQueue] (origin, targets) {
121
+ const queue = this[kQueue]
122
+ let hasDispatcher = true
123
+
124
+ while (!queue.isEmpty()) {
125
+ const dispatcher = this[kGetDispatcher]()
126
+ if (!dispatcher) {
127
+ hasDispatcher = false
128
+ break
129
+ }
130
+
131
+ const item = queue.shift()
132
+ this[kQueued]--
133
+
134
+ if (!item.dispatch(dispatcher)) {
135
+ dispatcher[kNeedDrain] = true
136
+ this[kOnClientBusy](dispatcher)
137
+ hasDispatcher = this[kHasDispatcher]()
138
+ if (!hasDispatcher) {
139
+ break
140
+ }
141
+ }
142
+ }
143
+
144
+ if (hasDispatcher && this[kNeedDrain]) {
145
+ this[kNeedDrain] = false
146
+ this.emit('drain', origin, [this, ...targets])
147
+ }
148
+
149
+ if (this[kClosedResolve] && queue.isEmpty()) {
150
+ return closeClients(this).then(this[kClosedResolve])
151
+ }
152
+ }
153
+
154
+ [kOnConnect] = (origin, targets) => {
155
+ this.emit('connect', origin, [this, ...targets])
156
+ };
157
+
158
+ [kOnDisconnect] = (origin, targets, err) => {
159
+ this.emit('disconnect', origin, [this, ...targets], err)
160
+ };
161
+
162
+ [kOnConnectionError] = (origin, targets, err) => {
163
+ this.emit('connectionError', origin, [this, ...targets], err)
164
+ }
165
+
166
+ get [kBusy] () {
167
+ return this[kNeedDrain]
168
+ }
169
+
170
+ get [kConnected] () {
171
+ let ret = 0
172
+ for (const { [kConnected]: connected } of this[kClients]) {
173
+ ret += connected
174
+ }
175
+ return ret
176
+ }
177
+
178
+ get [kFree] () {
179
+ let ret = 0
180
+ for (const { [kConnected]: connected, [kNeedDrain]: needDrain } of this[kClients]) {
181
+ ret += connected && !needDrain
182
+ }
183
+ return ret
184
+ }
185
+
186
+ get [kPending] () {
187
+ let ret = this[kQueued]
188
+ for (const { [kPending]: pending } of this[kClients]) {
189
+ ret += pending
190
+ }
191
+ return ret
192
+ }
193
+
194
+ get [kRunning] () {
195
+ let ret = 0
196
+ for (const { [kRunning]: running } of this[kClients]) {
197
+ ret += running
198
+ }
199
+ return ret
200
+ }
201
+
202
+ get [kSize] () {
203
+ let ret = this[kQueued]
204
+ for (const { [kSize]: size } of this[kClients]) {
205
+ ret += size
206
+ }
207
+ return ret
208
+ }
209
+
210
+ get stats () {
211
+ return new PoolStats(this)
212
+ }
213
+
214
+ [kClose] () {
215
+ if (this[kQueue].isEmpty()) {
216
+ return closeClients(this)
217
+ } else {
218
+ return new Promise((resolve) => {
219
+ this[kClosedResolve] = resolve
220
+ })
221
+ }
222
+ }
223
+
224
+ [kDestroy] (err) {
225
+ while (true) {
226
+ const item = this[kQueue].shift()
227
+ if (!item) {
228
+ break
229
+ }
230
+ item.handler.onResponseError(null, err)
231
+ }
232
+
233
+ const destroyAll = new Array(this[kClients].length)
234
+ for (let i = 0; i < this[kClients].length; i++) {
235
+ destroyAll[i] = this[kClients][i].destroy(err)
236
+ }
237
+ for (const client of this[kRetiring].keys()) {
238
+ destroyAll.push(client.destroy(err))
239
+ }
240
+ return Promise.all(destroyAll)
241
+ }
242
+
243
+ [kDispatch] (opts, handler) {
244
+ const dispatcher = this[kGetDispatcher]()
245
+
246
+ if (!dispatcher) {
247
+ this[kNeedDrain] = true
248
+ this[kQueue].push(new QueuedRequest(opts, handler))
249
+ this[kQueued]++
250
+ } else if (!dispatcher.dispatch(opts, handler)) {
251
+ dispatcher[kNeedDrain] = true
252
+ this[kOnClientBusy](dispatcher)
253
+ this[kNeedDrain] = !this[kHasDispatcher]()
254
+ }
255
+
256
+ return !this[kNeedDrain]
257
+ }
258
+
259
+ [kHasDispatcher] () {
260
+ for (let i = 0; i < this[kClients].length; i++) {
261
+ const dispatcher = this[kClients][i]
262
+
263
+ if (
264
+ !dispatcher[kNeedDrain] &&
265
+ dispatcher.closed !== true &&
266
+ dispatcher.destroyed !== true
267
+ ) {
268
+ return true
269
+ }
270
+ }
271
+
272
+ return false
273
+ }
274
+
275
+ [kAddClient] (client) {
276
+ client
277
+ .on('drain', this[kOnDrain].bind(this, client))
278
+ .on('connect', this[kOnConnect])
279
+ .on('disconnect', this[kOnDisconnect])
280
+ .on('connectionError', this[kOnConnectionError])
281
+
282
+ this[kClients].push(client)
283
+
284
+ if (this[kNeedDrain]) {
285
+ queueMicrotask(() => {
286
+ if (this[kNeedDrain] && !client[kNeedDrain]) {
287
+ this[kOnDrain](client, client[kUrl], [client, this])
288
+ }
289
+ })
290
+ }
291
+
292
+ return this
293
+ }
294
+
295
+ // Takes a client out of rotation. A closed client no longer takes requests
296
+ // from the pool queue (see kOnDrain), but it finishes the requests it
297
+ // already has. Until it has, pool.close() waits for it and pool.destroy()
298
+ // destroys it.
299
+ [kRetireClient] (client) {
300
+ const idx = this[kClients].indexOf(client)
301
+ if (idx !== -1) {
302
+ this[kClients].splice(idx, 1)
303
+ }
304
+
305
+ if (client.destroyed || this[kRetiring].has(client)) {
306
+ return
307
+ }
308
+
309
+ // Use the callback form: custom dispatchers from `factory` are not
310
+ // required to return a promise, and may call back synchronously.
311
+ let done = false
312
+ let resolveClosed
313
+ const closed = new Promise((resolve) => { resolveClosed = resolve })
314
+ this[kRetiring].set(client, closed)
315
+ client.close(() => {
316
+ if (!done) {
317
+ done = true
318
+ this[kRetiring].delete(client)
319
+ resolveClosed()
320
+ }
321
+ })
322
+ }
323
+
324
+ [kRemoveClient] (client) {
325
+ this[kRetireClient](client)
326
+
327
+ this[kNeedDrain] = !this[kClients].some(dispatcher => (
328
+ !dispatcher[kNeedDrain] &&
329
+ dispatcher.closed !== true &&
330
+ dispatcher.destroyed !== true
331
+ ))
332
+ }
333
+ }
334
+
335
+ module.exports = {
336
+ PoolBase,
337
+ kClients,
338
+ kNeedDrain,
339
+ kAddClient,
340
+ kRemoveClient,
341
+ kRetireClient,
342
+ kDrainQueue,
343
+ kOnClientBusy,
344
+ kOnClientDrain,
345
+ kGetDispatcher,
346
+ kHasDispatcher
347
+ }
@@ -0,0 +1,229 @@
1
+ 'use strict'
2
+
3
+ const {
4
+ PoolBase,
5
+ kClients,
6
+ kNeedDrain,
7
+ kAddClient,
8
+ kDrainQueue,
9
+ kOnClientBusy,
10
+ kOnClientDrain,
11
+ kGetDispatcher,
12
+ kHasDispatcher,
13
+ kRemoveClient,
14
+ kRetireClient
15
+ } = require('./pool-base')
16
+ const Client = require('./client')
17
+ const {
18
+ InvalidArgumentError
19
+ } = require('../core/errors')
20
+ const util = require('../core/util')
21
+ const { kConnecting, kHTTPContext, kUrl, kQueued } = require('../core/symbols')
22
+ const buildConnector = require('../core/connect')
23
+
24
+ const kOptions = Symbol('options')
25
+ const kConnections = Symbol('connections')
26
+ const kFactory = Symbol('factory')
27
+ const kProtocol = Symbol('protocol')
28
+ const kProtocolProbe = Symbol('protocol probe')
29
+
30
+ function defaultFactory (origin, opts) {
31
+ return new Client(origin, opts)
32
+ }
33
+
34
+ function shouldCreateProtocolProbe (pool, dispatcher) {
35
+ return dispatcher instanceof Client &&
36
+ pool[kProtocol] !== 'h1' &&
37
+ (pool[kOptions].useH2c === true || (pool[kUrl].protocol === 'https:' && pool[kOptions].allowH2 !== false))
38
+ }
39
+
40
+ function createClient (pool) {
41
+ const dispatcher = pool[kFactory](pool[kUrl], pool[kOptions])
42
+
43
+ // HTTPS does not reveal whether the peer selected h1 or h2 until ALPN
44
+ // completes. While h2 is still possible, let one Client probe the protocol
45
+ // and keep later requests in the Pool queue instead of opening one TLS
46
+ // connection per request. A confirmed h1 connection disables this gate and
47
+ // restores the usual Pool fan-out.
48
+ if (shouldCreateProtocolProbe(pool, dispatcher)) {
49
+ pool[kProtocolProbe] = dispatcher
50
+ }
51
+
52
+ pool[kAddClient](dispatcher)
53
+ return dispatcher
54
+ }
55
+
56
+ class Pool extends PoolBase {
57
+ constructor (origin, {
58
+ connections,
59
+ factory = defaultFactory,
60
+ connect,
61
+ connectTimeout,
62
+ tls,
63
+ maxCachedSessions,
64
+ socketPath,
65
+ autoSelectFamily,
66
+ autoSelectFamilyAttemptTimeout,
67
+ allowH2,
68
+ useH2c,
69
+ clientTtl,
70
+ ...options
71
+ } = {}) {
72
+ if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
73
+ throw new InvalidArgumentError('invalid connections')
74
+ }
75
+
76
+ if (typeof factory !== 'function') {
77
+ throw new InvalidArgumentError('factory must be a function.')
78
+ }
79
+
80
+ if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
81
+ throw new InvalidArgumentError('connect must be a function or an object')
82
+ }
83
+
84
+ if (typeof connect !== 'function') {
85
+ connect = buildConnector({
86
+ ...tls,
87
+ maxCachedSessions,
88
+ allowH2,
89
+ useH2c,
90
+ socketPath,
91
+ timeout: connectTimeout,
92
+ ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
93
+ ...connect
94
+ })
95
+ }
96
+
97
+ super(options)
98
+
99
+ this[kConnections] = connections || null
100
+ this[kUrl] = util.parseOrigin(origin)
101
+ this[kOptions] = { ...util.deepClone(options), connect, allowH2, useH2c, clientTtl, socketPath }
102
+ this[kFactory] = factory
103
+ this[kProtocol] = null
104
+ this[kProtocolProbe] = null
105
+
106
+ this.on('connect', (origin, targets) => {
107
+ if (clientTtl != null && clientTtl > 0) {
108
+ for (const target of targets) {
109
+ Object.assign(target, { ttl: Date.now() })
110
+ }
111
+ }
112
+
113
+ const client = targets[targets.length - 1]
114
+ if (client instanceof Client) {
115
+ this[kProtocol] = client[kHTTPContext]?.version
116
+ }
117
+
118
+ if (client === this[kProtocolProbe]) {
119
+ // An h2 Client's drain event releases the requests accumulated during
120
+ // negotiation onto that Client. If ALPN selected h1, release the probe
121
+ // immediately and restore normal Pool fan-out instead.
122
+ if (this[kProtocol] !== 'h2') {
123
+ this[kProtocolProbe] = null
124
+ this[kDrainQueue](origin, targets.slice(1))
125
+ }
126
+ }
127
+ })
128
+
129
+ this.on('disconnect', (origin, targets) => {
130
+ if (targets.includes(this[kProtocolProbe])) {
131
+ this[kProtocolProbe] = null
132
+ this[kDrainQueue](origin, targets.slice(1))
133
+ }
134
+ })
135
+
136
+ this.on('connectionError', (origin, targets) => {
137
+ let resumeQueued = false
138
+
139
+ // If a connection error occurs, we remove the client from the pool,
140
+ // and emit a connectionError event. They will not be re-used.
141
+ // Fixes https://github.com/nodejs/undici/issues/3895
142
+ for (const target of targets) {
143
+ if (target === this[kProtocolProbe]) {
144
+ this[kProtocolProbe] = null
145
+ resumeQueued = true
146
+ }
147
+
148
+ // Retire (close) the client rather than only dropping it from
149
+ // kClients: otherwise its drain listener keeps pulling requests from
150
+ // the pool queue onto a client that pool.destroy() can't reach.
151
+ if (this[kClients].includes(target)) {
152
+ this[kRetireClient](target)
153
+ }
154
+ }
155
+
156
+ // The retired client no longer drains the pool queue, so hand any
157
+ // queued requests to another (possibly new) client.
158
+ if (resumeQueued || this[kQueued] > 0) {
159
+ this[kDrainQueue](origin, targets.slice(1))
160
+ }
161
+ })
162
+ }
163
+
164
+ [kOnClientBusy] (client) {
165
+ if (
166
+ this[kProtocolProbe] === null &&
167
+ client[kConnecting] &&
168
+ shouldCreateProtocolProbe(this, client)
169
+ ) {
170
+ this[kProtocolProbe] = client
171
+ }
172
+ }
173
+
174
+ [kOnClientDrain] (client) {
175
+ if (client === this[kProtocolProbe]) {
176
+ this[kProtocolProbe] = null
177
+ }
178
+ }
179
+
180
+ [kGetDispatcher] () {
181
+ const clientTtlOption = this[kOptions].clientTtl
182
+ for (let i = 0; i < this[kClients].length; i++) {
183
+ const client = this[kClients][i]
184
+
185
+ // check ttl of client and if it's stale, remove it from the pool
186
+ if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && ((Date.now() - client.ttl) > clientTtlOption)) {
187
+ this[kRemoveClient](client)
188
+ i--
189
+ } else if (!client[kNeedDrain]) {
190
+ return client
191
+ }
192
+ }
193
+
194
+ if (this[kProtocolProbe] !== null) {
195
+ return
196
+ }
197
+
198
+ if (!this[kConnections] || this[kClients].length < this[kConnections]) {
199
+ return createClient(this)
200
+ }
201
+ }
202
+
203
+ [kHasDispatcher] () {
204
+ const clientTtlOption = this[kOptions].clientTtl
205
+ for (let i = 0; i < this[kClients].length; i++) {
206
+ const client = this[kClients][i]
207
+
208
+ if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && ((Date.now() - client.ttl) > clientTtlOption)) {
209
+ this[kRemoveClient](client)
210
+ i--
211
+ } else if (!client[kNeedDrain]) {
212
+ return true
213
+ }
214
+ }
215
+
216
+ if (this[kProtocolProbe] !== null) {
217
+ return false
218
+ }
219
+
220
+ if (!this[kConnections] || this[kClients].length < this[kConnections]) {
221
+ createClient(this)
222
+ return true
223
+ }
224
+
225
+ return false
226
+ }
227
+ }
228
+
229
+ module.exports = Pool