@yanglaofish/fishtools 0.5.1 → 0.5.3

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 (846) hide show
  1. package/README.md +25 -11
  2. package/manual/README.md +25 -11
  3. package/manual/docs/deployment.md +3 -3
  4. package/manual/docs/examples/action-plugin/package.json +1 -1
  5. package/manual/docs/modules.md +2 -0
  6. package/manual/docs/plugin-development.md +18 -5
  7. package/manual/docs/releases.md +56 -6
  8. package/manual/docs/superpowers/plans/2026-10-13-command-shortcuts.md +108 -0
  9. package/manual/docs/superpowers/plans/2026-10-13-global-plugins.md +56 -0
  10. package/manual/docs/superpowers/plans/2026-10-13-tui-readable-sessions.md +21 -0
  11. package/manual/docs/superpowers/reviews/2026-10-13-0.5.0-followup-review.md +4 -1
  12. package/manual/docs/superpowers/reviews/2026-10-13-0.5.3-review.md +28 -0
  13. package/manual/docs/superpowers/reviews/2026-10-13-command-shortcuts-review.md +70 -0
  14. package/manual/docs/superpowers/reviews/2026-10-13-tui-sessions-review.md +55 -0
  15. package/manual/docs/superpowers/specs/2026-10-12-workflow-variation-design.md +1 -1
  16. package/manual/docs/superpowers/specs/2026-10-13-command-shortcuts-design.md +56 -0
  17. package/manual/docs/superpowers/specs/2026-10-13-issue-4-workflow-menu.md +51 -0
  18. package/manual/docs/superpowers/specs/2026-10-13-issue-5-results-and-history.md +20 -0
  19. package/manual/docs/terminal-commands.md +72 -0
  20. package/manual/docs/verification.md +56 -1
  21. package/manual/packages/core/README.md +5 -1
  22. package/manual/packages/core/package.json +2 -1
  23. package/manual/packages/core/src/application.js +203 -57
  24. package/manual/packages/core/src/development-watch-worker.js +10 -1
  25. package/manual/packages/core/src/development.js +1 -1
  26. package/manual/packages/core/src/export-snapshot.js +20 -1
  27. package/manual/packages/core/src/plugin-catalog.js +42 -0
  28. package/manual/packages/core/src/version.js +1 -1
  29. package/manual/packages/fst-cli/README.md +6 -0
  30. package/manual/packages/fst-cli/bin/fst.js +7 -6
  31. package/manual/packages/fst-cli/package.json +1 -1
  32. package/manual/packages/fst-cli/src/development.js +6 -1
  33. package/manual/packages/fst-cli/src/terminal/command-menu.js +191 -0
  34. package/manual/packages/fst-cli/src/terminal/navigation.js +6 -3
  35. package/manual/packages/fst-cli/src/terminal/presentation.js +4 -3
  36. package/manual/packages/fst-cli/src/terminal/run-feed.js +69 -13
  37. package/manual/packages/fst-cli/src/terminal/run-presentation.js +55 -12
  38. package/manual/packages/fst-cli/src/terminal/run-viewer.js +26 -10
  39. package/manual/packages/fst-cli/src/terminal/session-history.js +82 -0
  40. package/manual/packages/fst-cli/src/terminal/session.js +153 -43
  41. package/manual/packages/fst-cli/src/terminal/view.js +74 -16
  42. package/manual/packages/fst-cli/src/terminal/workflow-menu.js +15 -15
  43. package/manual/packages/fst-devtools/package.json +2 -2
  44. package/manual/packages/fst-devtools/src/documentation.js +2 -1
  45. package/manual/packages/fst-devtools/src/plugin-tools.js +1 -1
  46. package/manual/packages/fst-logs/README.md +23 -2
  47. package/manual/packages/fst-logs/package.json +2 -1
  48. package/manual/packages/fst-logs/src/file-identity.js +23 -0
  49. package/manual/packages/fst-logs/src/markdown-log.js +4 -3
  50. package/manual/packages/fst-logs/src/run-logs.js +3 -2
  51. package/manual/packages/fst-logs/src/session-history.js +180 -0
  52. package/manual/packages/fst-platform/README.md +15 -0
  53. package/manual/packages/fst-platform/package.json +4 -3
  54. package/manual/packages/fst-platform/src/process.js +15 -8
  55. package/manual/packages/fst-platform/src/shell.js +103 -0
  56. package/manual/packages/fst-plugin/package.json +1 -1
  57. package/manual/packages/fst-plugin/src/contracts.js +6 -2
  58. package/manual/packages/fst-plugin/src/host.js +31 -23
  59. package/manual/packages/fst-workflow/package.json +1 -1
  60. package/manual/packages/fst-workflow/src/engine.js +1 -1
  61. package/manual/packages/fst-workspace/README.md +5 -0
  62. package/manual/packages/fst-workspace/package.json +3 -1
  63. package/manual/packages/fst-workspace/src/plugin-registry.js +58 -0
  64. package/manual/packages/fst-workspace/src/plugins.js +7 -4
  65. package/manual/packages/fst-workspace/src/shortcuts.js +119 -0
  66. package/manual/packages/fst-workspace/src/workflows.js +5 -3
  67. package/manual/packages/pack/index.js +1 -1
  68. package/manual/packages/pack/package.json +3 -3
  69. package/manual/packages/pack/runtime-cache.js +26 -0
  70. package/manual/packages/pack/runtime.js +6 -10
  71. package/manual/plugins/commands/LICENSE +21 -0
  72. package/manual/plugins/commands/README.md +41 -0
  73. package/manual/plugins/commands/index.js +94 -0
  74. package/manual/plugins/commands/package.json +17 -0
  75. package/node_modules/@mytools/commands/LICENSE +21 -0
  76. package/node_modules/@mytools/commands/README.md +41 -0
  77. package/node_modules/@mytools/commands/index.js +94 -0
  78. package/node_modules/@mytools/commands/package.json +17 -0
  79. package/node_modules/@mytools/core/README.md +5 -1
  80. package/node_modules/@mytools/core/package.json +2 -1
  81. package/node_modules/@mytools/core/src/application.js +203 -57
  82. package/node_modules/@mytools/core/src/development-watch-worker.js +10 -1
  83. package/node_modules/@mytools/core/src/development.js +1 -1
  84. package/node_modules/@mytools/core/src/export-snapshot.js +20 -1
  85. package/node_modules/@mytools/core/src/plugin-catalog.js +42 -0
  86. package/node_modules/@mytools/core/src/version.js +1 -1
  87. package/node_modules/@mytools/fst-cli/README.md +6 -0
  88. package/node_modules/@mytools/fst-cli/bin/fst.js +7 -6
  89. package/node_modules/@mytools/fst-cli/package.json +1 -1
  90. package/node_modules/@mytools/fst-cli/src/development.js +6 -1
  91. package/node_modules/@mytools/fst-cli/src/terminal/command-menu.js +191 -0
  92. package/node_modules/@mytools/fst-cli/src/terminal/navigation.js +6 -3
  93. package/node_modules/@mytools/fst-cli/src/terminal/presentation.js +4 -3
  94. package/node_modules/@mytools/fst-cli/src/terminal/run-feed.js +69 -13
  95. package/node_modules/@mytools/fst-cli/src/terminal/run-presentation.js +55 -12
  96. package/node_modules/@mytools/fst-cli/src/terminal/run-viewer.js +26 -10
  97. package/node_modules/@mytools/fst-cli/src/terminal/session-history.js +82 -0
  98. package/node_modules/@mytools/fst-cli/src/terminal/session.js +153 -43
  99. package/node_modules/@mytools/fst-cli/src/terminal/view.js +74 -16
  100. package/node_modules/@mytools/fst-cli/src/terminal/workflow-menu.js +15 -15
  101. package/node_modules/@mytools/fst-devtools/package.json +2 -2
  102. package/node_modules/@mytools/fst-devtools/src/documentation.js +2 -1
  103. package/node_modules/@mytools/fst-devtools/src/plugin-tools.js +1 -1
  104. package/node_modules/@mytools/fst-logs/README.md +23 -2
  105. package/node_modules/@mytools/fst-logs/package.json +2 -1
  106. package/node_modules/@mytools/fst-logs/src/file-identity.js +23 -0
  107. package/node_modules/@mytools/fst-logs/src/markdown-log.js +4 -3
  108. package/node_modules/@mytools/fst-logs/src/run-logs.js +3 -2
  109. package/node_modules/@mytools/fst-logs/src/session-history.js +180 -0
  110. package/node_modules/@mytools/fst-platform/README.md +15 -0
  111. package/node_modules/@mytools/fst-platform/node_modules/undici/LICENSE +21 -0
  112. package/node_modules/{undici/docs/docs/index.md → @mytools/fst-platform/node_modules/undici/README.md} +85 -137
  113. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Agent.md +84 -0
  114. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  115. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  116. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
  117. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Client.md +288 -0
  118. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
  119. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Connector.md +115 -0
  120. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  121. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Cookies.md +128 -0
  122. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Debug.md +62 -0
  123. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +317 -0
  124. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Dispatcher.md +1393 -0
  125. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  126. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Errors.md +49 -0
  127. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  128. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Fetch.md +60 -0
  129. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
  130. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
  131. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
  132. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
  133. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
  134. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockClient.md +81 -0
  135. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  136. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockPool.md +555 -0
  137. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Pool.md +84 -0
  138. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  139. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
  140. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
  141. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
  142. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
  143. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
  144. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
  145. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
  146. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Util.md +25 -0
  147. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
  148. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  149. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  150. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/crawling.md +1 -3
  151. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
  152. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  153. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/undici-vs-builtin-fetch.md +8 -10
  154. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
  155. package/node_modules/@mytools/fst-platform/node_modules/undici/index-fetch.js +65 -0
  156. package/node_modules/@mytools/fst-platform/node_modules/undici/index.d.ts +3 -0
  157. package/node_modules/@mytools/fst-platform/node_modules/undici/index.js +234 -0
  158. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/abort-signal.js +59 -0
  159. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-connect.js +110 -0
  160. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-pipeline.js +252 -0
  161. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-request.js +214 -0
  162. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-stream.js +209 -0
  163. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-upgrade.js +111 -0
  164. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/index.js +7 -0
  165. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/readable.js +580 -0
  166. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/memory-cache-store.js +3 -3
  167. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/sqlite-cache-store.js +1 -3
  168. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/connect.js +153 -0
  169. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/constants.js +143 -0
  170. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/diagnostics.js +227 -0
  171. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/errors.js +477 -0
  172. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/request.js +485 -0
  173. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/symbols.js +75 -0
  174. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/tree.js +160 -0
  175. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/util.js +992 -0
  176. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/agent.js +158 -0
  177. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/balanced-pool.js +221 -0
  178. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h1.js +1746 -0
  179. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h2.js +1060 -0
  180. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client.js +668 -0
  181. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
  182. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
  183. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
  184. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
  185. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/h2c-client.js +4 -4
  186. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
  187. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool.js +118 -0
  188. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
  189. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  190. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/round-robin-pool.js +10 -32
  191. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/socks5-proxy-agent.js +63 -153
  192. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/global.js +59 -0
  193. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-handler.js +7 -49
  194. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-revalidation-handler.js +0 -10
  195. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/decorator-handler.js +67 -0
  196. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/deduplication-handler.js +10 -29
  197. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/redirect-handler.js +238 -0
  198. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/retry-handler.js +504 -0
  199. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
  200. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/wrap-handler.js +105 -0
  201. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/cache.js +26 -79
  202. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/decompress.js +3 -13
  203. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/deduplicate.js +4 -5
  204. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dns.js +571 -0
  205. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dump.js +99 -0
  206. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/redirect.js +21 -0
  207. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/response-error.js +95 -0
  208. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/retry.js +19 -0
  209. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  210. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/constants.js +531 -0
  211. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  212. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  213. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/utils.js +12 -0
  214. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-agent.js +232 -0
  215. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/mock-call-history.js +1 -1
  216. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-client.js +68 -0
  217. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-errors.js +29 -0
  218. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
  219. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-pool.js +68 -0
  220. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-symbols.js +32 -0
  221. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-utils.js +486 -0
  222. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  223. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-agent.js +7 -25
  224. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-recorder.js +3 -38
  225. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/cache.js +10 -92
  226. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/promise.js +28 -0
  227. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/runtime-features.js +34 -3
  228. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/timers.js +425 -0
  229. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cache.js +864 -0
  230. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  231. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/util.js +45 -0
  232. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/constants.js +12 -0
  233. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/index.js +199 -0
  234. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/parse.js +314 -0
  235. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/util.js +352 -0
  236. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource-stream.js +494 -0
  237. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
  238. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/util.js +29 -0
  239. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  240. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/body.js +509 -0
  241. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/constants.js +131 -0
  242. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/data-url.js +596 -0
  243. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
  244. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata.js +259 -0
  245. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/global.js +40 -0
  246. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/headers.js +719 -0
  247. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/index.js +2413 -0
  248. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/request.js +1115 -0
  249. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/response.js +641 -0
  250. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/util.js +1522 -0
  251. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/infra/index.js +1 -16
  252. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/webidl/index.js +21 -7
  253. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/connection.js +339 -0
  254. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/constants.js +126 -0
  255. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/events.js +331 -0
  256. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/frame.js +133 -0
  257. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
  258. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/receiver.js +507 -0
  259. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/sender.js +109 -0
  260. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketerror.js +10 -13
  261. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketstream.js +14 -29
  262. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/util.js +347 -0
  263. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/websocket.js +758 -0
  264. package/node_modules/@mytools/fst-platform/node_modules/undici/package.json +152 -0
  265. package/node_modules/@mytools/fst-platform/node_modules/undici/scripts/strip-comments.js +10 -0
  266. package/node_modules/@mytools/fst-platform/node_modules/undici/types/README.md +6 -0
  267. package/node_modules/@mytools/fst-platform/node_modules/undici/types/agent.d.ts +32 -0
  268. package/node_modules/@mytools/fst-platform/node_modules/undici/types/api.d.ts +43 -0
  269. package/node_modules/@mytools/fst-platform/node_modules/undici/types/balanced-pool.d.ts +30 -0
  270. package/node_modules/@mytools/fst-platform/node_modules/undici/types/cache.d.ts +36 -0
  271. package/node_modules/@mytools/fst-platform/node_modules/undici/types/client.d.ts +139 -0
  272. package/node_modules/@mytools/fst-platform/node_modules/undici/types/connector.d.ts +36 -0
  273. package/node_modules/@mytools/fst-platform/node_modules/undici/types/content-type.d.ts +21 -0
  274. package/node_modules/@mytools/fst-platform/node_modules/undici/types/cookies.d.ts +30 -0
  275. package/node_modules/@mytools/fst-platform/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
  276. package/node_modules/@mytools/fst-platform/node_modules/undici/types/dispatcher.d.ts +275 -0
  277. package/node_modules/@mytools/fst-platform/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
  278. package/node_modules/@mytools/fst-platform/node_modules/undici/types/errors.d.ts +177 -0
  279. package/node_modules/@mytools/fst-platform/node_modules/undici/types/eventsource.d.ts +66 -0
  280. package/node_modules/@mytools/fst-platform/node_modules/undici/types/fetch.d.ts +231 -0
  281. package/node_modules/@mytools/fst-platform/node_modules/undici/types/formdata.d.ts +114 -0
  282. package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  283. package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-origin.d.ts +7 -0
  284. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/h2c-client.d.ts +6 -6
  285. package/node_modules/@mytools/fst-platform/node_modules/undici/types/handlers.d.ts +14 -0
  286. package/node_modules/@mytools/fst-platform/node_modules/undici/types/header.d.ts +160 -0
  287. package/node_modules/@mytools/fst-platform/node_modules/undici/types/index.d.ts +91 -0
  288. package/node_modules/@mytools/fst-platform/node_modules/undici/types/interceptors.d.ts +82 -0
  289. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-agent.d.ts +68 -0
  290. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-client.d.ts +27 -0
  291. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-errors.d.ts +12 -0
  292. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-interceptor.d.ts +94 -0
  293. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-pool.d.ts +27 -0
  294. package/node_modules/@mytools/fst-platform/node_modules/undici/types/patch.d.ts +29 -0
  295. package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool-stats.d.ts +19 -0
  296. package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool.d.ts +41 -0
  297. package/node_modules/@mytools/fst-platform/node_modules/undici/types/proxy-agent.d.ts +29 -0
  298. package/node_modules/@mytools/fst-platform/node_modules/undici/types/readable.d.ts +68 -0
  299. package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-agent.d.ts +8 -0
  300. package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-handler.d.ts +125 -0
  301. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/round-robin-pool.d.ts +2 -0
  302. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/snapshot-agent.d.ts +0 -4
  303. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/socks5-proxy-agent.d.ts +2 -4
  304. package/node_modules/@mytools/fst-platform/node_modules/undici/types/util.d.ts +18 -0
  305. package/node_modules/@mytools/fst-platform/node_modules/undici/types/webidl.d.ts +347 -0
  306. package/node_modules/@mytools/fst-platform/node_modules/undici/types/websocket.d.ts +188 -0
  307. package/node_modules/@mytools/fst-platform/package.json +4 -3
  308. package/node_modules/@mytools/fst-platform/src/process.js +15 -8
  309. package/node_modules/@mytools/fst-platform/src/shell.js +103 -0
  310. package/node_modules/@mytools/fst-plugin/package.json +1 -1
  311. package/node_modules/@mytools/fst-plugin/src/contracts.js +6 -2
  312. package/node_modules/@mytools/fst-plugin/src/host.js +31 -23
  313. package/node_modules/@mytools/fst-workflow/package.json +1 -1
  314. package/node_modules/@mytools/fst-workflow/src/engine.js +1 -1
  315. package/node_modules/@mytools/fst-workspace/README.md +5 -0
  316. package/node_modules/@mytools/fst-workspace/package.json +3 -1
  317. package/node_modules/@mytools/fst-workspace/src/plugin-registry.js +58 -0
  318. package/node_modules/@mytools/fst-workspace/src/plugins.js +7 -4
  319. package/node_modules/@mytools/fst-workspace/src/shortcuts.js +119 -0
  320. package/node_modules/@mytools/fst-workspace/src/workflows.js +5 -3
  321. package/node_modules/@mytools/pack/index.js +1 -1
  322. package/node_modules/@mytools/pack/package.json +3 -3
  323. package/node_modules/@mytools/pack/runtime-cache.js +26 -0
  324. package/node_modules/@mytools/pack/runtime.js +6 -10
  325. package/node_modules/@mytools/web/public/THIRD_PARTY_NOTICES.txt +1246 -1232
  326. package/node_modules/@npmcli/agent/lib/agents.js +0 -10
  327. package/node_modules/@npmcli/agent/package.json +12 -11
  328. package/node_modules/@npmcli/arborist/README.md +2 -2
  329. package/node_modules/@npmcli/arborist/bin/index.js +2 -1
  330. package/node_modules/@npmcli/arborist/bin/shrinkwrap.js +7 -0
  331. package/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +25 -159
  332. package/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js +49 -11
  333. package/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +0 -67
  334. package/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +37 -5
  335. package/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +8 -15
  336. package/node_modules/@npmcli/arborist/lib/arborist/reify.js +42 -59
  337. package/node_modules/@npmcli/arborist/lib/consistent-resolve.js +1 -1
  338. package/node_modules/@npmcli/arborist/lib/diff.js +22 -17
  339. package/node_modules/@npmcli/arborist/lib/edge.js +2 -22
  340. package/node_modules/@npmcli/arborist/lib/index.js +0 -2
  341. package/node_modules/@npmcli/arborist/lib/isolated-classes.js +1 -4
  342. package/node_modules/@npmcli/arborist/lib/node.js +9 -13
  343. package/node_modules/@npmcli/arborist/lib/place-dep.js +0 -6
  344. package/node_modules/@npmcli/arborist/lib/printable.js +5 -0
  345. package/node_modules/@npmcli/arborist/lib/shrinkwrap.js +32 -55
  346. package/node_modules/@npmcli/arborist/package.json +26 -32
  347. package/node_modules/@npmcli/fs/lib/move-file.js +5 -5
  348. package/node_modules/@npmcli/fs/package.json +5 -5
  349. package/node_modules/@npmcli/git/package.json +12 -13
  350. package/node_modules/@npmcli/installed-package-contents/package.json +7 -7
  351. package/node_modules/@npmcli/map-workspaces/package.json +7 -7
  352. package/node_modules/@npmcli/metavuln-calculator/package.json +16 -10
  353. package/node_modules/@npmcli/name-from-folder/package.json +16 -13
  354. package/node_modules/@npmcli/node-gyp/package.json +5 -5
  355. package/node_modules/@npmcli/package-json/lib/index.js +1 -2
  356. package/node_modules/@npmcli/package-json/lib/normalize.js +22 -23
  357. package/node_modules/@npmcli/package-json/package.json +10 -11
  358. package/node_modules/@npmcli/promise-spawn/README.md +2 -1
  359. package/node_modules/@npmcli/promise-spawn/package.json +5 -5
  360. package/node_modules/@npmcli/redact/package.json +4 -4
  361. package/node_modules/@npmcli/run-script/lib/is-server-package.js +11 -0
  362. package/node_modules/@npmcli/run-script/lib/make-spawn-args.js +6 -5
  363. package/node_modules/@npmcli/run-script/lib/run-script-pkg.js +13 -4
  364. package/node_modules/@npmcli/run-script/lib/run-script.js +2 -1
  365. package/node_modules/@npmcli/run-script/package.json +11 -12
  366. package/node_modules/@sigstore/bundle/README.md +1 -1
  367. package/node_modules/@sigstore/bundle/dist/error.js +0 -1
  368. package/node_modules/@sigstore/bundle/package.json +2 -2
  369. package/node_modules/@sigstore/core/README.md +1 -1
  370. package/node_modules/@sigstore/core/dist/asn1/length.js +1 -12
  371. package/node_modules/@sigstore/core/dist/asn1/obj.js +7 -25
  372. package/node_modules/@sigstore/core/dist/asn1/parse.js +5 -24
  373. package/node_modules/@sigstore/core/package.json +2 -2
  374. package/node_modules/@sigstore/sign/README.md +1 -1
  375. package/node_modules/@sigstore/sign/dist/signer/fulcio/ephemeral.js +1 -1
  376. package/node_modules/@sigstore/sign/package.json +9 -9
  377. package/node_modules/@sigstore/tuf/README.md +1 -1
  378. package/node_modules/@sigstore/tuf/package.json +4 -4
  379. package/node_modules/@sigstore/tuf/seeds.json +1 -1
  380. package/node_modules/@sigstore/verify/README.md +1 -1
  381. package/node_modules/@sigstore/verify/dist/bundle/dsse.d.ts +0 -1
  382. package/node_modules/@sigstore/verify/dist/bundle/dsse.js +0 -6
  383. package/node_modules/@sigstore/verify/dist/bundle/message.d.ts +0 -1
  384. package/node_modules/@sigstore/verify/dist/bundle/message.js +0 -5
  385. package/node_modules/@sigstore/verify/dist/policy.d.ts +1 -1
  386. package/node_modules/@sigstore/verify/dist/policy.js +2 -0
  387. package/node_modules/@sigstore/verify/dist/shared.types.d.ts +1 -6
  388. package/node_modules/@sigstore/verify/dist/tlog/checkpoint.js +3 -17
  389. package/node_modules/@sigstore/verify/dist/tlog/hashedrekord.js +4 -4
  390. package/node_modules/@sigstore/verify/dist/tlog/index.js +1 -13
  391. package/node_modules/@sigstore/verify/dist/tlog/merkle.js +1 -12
  392. package/node_modules/@sigstore/verify/dist/verifier.js +5 -13
  393. package/node_modules/@sigstore/verify/package.json +5 -5
  394. package/node_modules/@tufjs/models/package.json +3 -3
  395. package/node_modules/abbrev/package.json +8 -9
  396. package/node_modules/agent-base/dist/helpers.d.ts +5 -0
  397. package/node_modules/agent-base/dist/helpers.d.ts.map +1 -1
  398. package/node_modules/agent-base/dist/helpers.js +34 -5
  399. package/node_modules/agent-base/dist/helpers.js.map +1 -1
  400. package/node_modules/agent-base/dist/index.d.ts +5 -1
  401. package/node_modules/agent-base/dist/index.d.ts.map +1 -1
  402. package/node_modules/agent-base/dist/index.js +40 -8
  403. package/node_modules/agent-base/dist/index.js.map +1 -1
  404. package/node_modules/agent-base/package.json +12 -12
  405. package/node_modules/bin-links/README.md +4 -5
  406. package/node_modules/bin-links/lib/fix-bin.js +1 -3
  407. package/node_modules/bin-links/lib/index.js +16 -8
  408. package/node_modules/bin-links/lib/link-mans.js +53 -0
  409. package/node_modules/bin-links/package.json +12 -11
  410. package/node_modules/cacache/lib/content/write.js +0 -2
  411. package/node_modules/cacache/lib/entry-index.js +0 -3
  412. package/node_modules/cacache/lib/rm.js +0 -1
  413. package/node_modules/cacache/lib/util/tmp.js +1 -5
  414. package/node_modules/cacache/lib/verify.js +2 -2
  415. package/node_modules/cacache/package.json +7 -7
  416. package/node_modules/cmd-shim/lib/index.js +32 -67
  417. package/node_modules/cmd-shim/package.json +5 -5
  418. package/node_modules/hosted-git-info/README.md +1 -1
  419. package/node_modules/hosted-git-info/lib/parse-url.js +3 -1
  420. package/node_modules/hosted-git-info/package.json +4 -4
  421. package/node_modules/http-proxy-agent/dist/index.d.ts +5 -8
  422. package/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -1
  423. package/node_modules/http-proxy-agent/dist/index.js +42 -26
  424. package/node_modules/http-proxy-agent/dist/index.js.map +1 -1
  425. package/node_modules/http-proxy-agent/package.json +14 -15
  426. package/node_modules/https-proxy-agent/dist/index.d.ts +5 -9
  427. package/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -1
  428. package/node_modules/https-proxy-agent/dist/index.js +44 -98
  429. package/node_modules/https-proxy-agent/dist/index.js.map +1 -1
  430. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +3 -0
  431. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -1
  432. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +10 -3
  433. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -1
  434. package/node_modules/https-proxy-agent/package.json +15 -16
  435. package/node_modules/ignore-walk/package.json +4 -4
  436. package/node_modules/ini/package.json +5 -5
  437. package/node_modules/ip-address/README.md +70 -70
  438. package/node_modules/ip-address/dist/ipv6.js +7 -4
  439. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  440. package/node_modules/ip-address/dist/v6/constants.d.ts +3 -0
  441. package/node_modules/ip-address/dist/v6/constants.js +3 -0
  442. package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  443. package/node_modules/ip-address/package.json +2 -1
  444. package/node_modules/json-parse-even-better-errors/lib/index.js +1 -3
  445. package/node_modules/json-parse-even-better-errors/package.json +17 -13
  446. package/node_modules/make-fetch-happen/package.json +11 -11
  447. package/node_modules/minipass-fetch/package.json +4 -4
  448. package/node_modules/node-gyp/.release-please-manifest.json +1 -1
  449. package/node_modules/node-gyp/CHANGELOG.md +0 -102
  450. package/node_modules/node-gyp/README.md +2 -3
  451. package/node_modules/node-gyp/eslint.config.js +1 -4
  452. package/node_modules/node-gyp/gyp/.release-please-manifest.json +1 -1
  453. package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +19 -14
  454. package/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +2 -7
  455. package/node_modules/node-gyp/gyp/pyproject.toml +1 -1
  456. package/node_modules/node-gyp/lib/build.js +6 -18
  457. package/node_modules/node-gyp/lib/create-config-gypi.js +0 -5
  458. package/node_modules/node-gyp/lib/node-gyp.js +2 -9
  459. package/node_modules/node-gyp/lib/rebuild.js +3 -3
  460. package/node_modules/node-gyp/package.json +9 -11
  461. package/node_modules/nopt/README.md +4 -2
  462. package/node_modules/nopt/lib/debug.js +5 -0
  463. package/node_modules/nopt/lib/nopt-lib.js +43 -7
  464. package/node_modules/nopt/lib/nopt.js +4 -2
  465. package/node_modules/nopt/lib/type-defs.js +13 -8
  466. package/node_modules/nopt/package.json +17 -15
  467. package/node_modules/npm-bundled/package.json +6 -6
  468. package/node_modules/npm-install-checks/package.json +5 -5
  469. package/node_modules/npm-normalize-package-bin/package.json +16 -13
  470. package/node_modules/npm-package-arg/package.json +7 -7
  471. package/node_modules/npm-packlist/README.md +30 -45
  472. package/node_modules/npm-packlist/lib/index.js +47 -115
  473. package/node_modules/npm-packlist/package.json +8 -10
  474. package/node_modules/npm-pick-manifest/package.json +19 -15
  475. package/node_modules/npm-registry-fetch/lib/errors.js +3 -8
  476. package/node_modules/npm-registry-fetch/package.json +12 -12
  477. package/node_modules/pacote/lib/dir.js +5 -60
  478. package/node_modules/pacote/lib/fetcher.js +0 -4
  479. package/node_modules/pacote/lib/git.js +3 -11
  480. package/node_modules/pacote/lib/util/add-git-sha.js +1 -1
  481. package/node_modules/pacote/package.json +18 -19
  482. package/node_modules/parse-conflict-json/package.json +6 -6
  483. package/node_modules/proc-log/package.json +4 -4
  484. package/node_modules/read-cmd-shim/lib/index.js +1 -1
  485. package/node_modules/read-cmd-shim/package.json +18 -14
  486. package/node_modules/sigstore/README.md +1 -1
  487. package/node_modules/sigstore/package.json +10 -10
  488. package/node_modules/socks-proxy-agent/dist/index.d.ts +3 -1
  489. package/node_modules/socks-proxy-agent/dist/index.d.ts.map +1 -1
  490. package/node_modules/socks-proxy-agent/dist/index.js +43 -17
  491. package/node_modules/socks-proxy-agent/dist/index.js.map +1 -1
  492. package/node_modules/socks-proxy-agent/package.json +15 -15
  493. package/node_modules/ssri/package.json +4 -4
  494. package/node_modules/tuf-js/dist/config.d.ts +2 -2
  495. package/node_modules/tuf-js/dist/fetcher.d.ts +4 -4
  496. package/node_modules/tuf-js/dist/fetcher.js +16 -55
  497. package/node_modules/tuf-js/dist/updater.js +2 -2
  498. package/node_modules/tuf-js/package.json +8 -8
  499. package/node_modules/undici/README.md +72 -405
  500. package/node_modules/undici/docs/docs/api/Agent.md +41 -252
  501. package/node_modules/undici/docs/docs/api/BalancedPool.md +48 -246
  502. package/node_modules/undici/docs/docs/api/CacheStorage.md +13 -171
  503. package/node_modules/undici/docs/docs/api/Client.md +139 -395
  504. package/node_modules/undici/docs/docs/api/Connector.md +35 -118
  505. package/node_modules/undici/docs/docs/api/ContentType.md +25 -65
  506. package/node_modules/undici/docs/docs/api/Cookies.md +47 -125
  507. package/node_modules/undici/docs/docs/api/Debug.md +31 -47
  508. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +97 -409
  509. package/node_modules/undici/docs/docs/api/DispatchInterceptor.md +60 -0
  510. package/node_modules/undici/docs/docs/api/Dispatcher.md +1011 -500
  511. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +96 -105
  512. package/node_modules/undici/docs/docs/api/Errors.md +28 -528
  513. package/node_modules/undici/docs/docs/api/EventSource.md +13 -326
  514. package/node_modules/undici/docs/docs/api/Fetch.md +24 -693
  515. package/node_modules/undici/docs/docs/api/MockAgent.md +264 -346
  516. package/node_modules/undici/docs/docs/api/MockClient.md +31 -153
  517. package/node_modules/undici/docs/docs/api/MockErrors.md +5 -56
  518. package/node_modules/undici/docs/docs/api/MockPool.md +253 -324
  519. package/node_modules/undici/docs/docs/api/Pool.md +41 -235
  520. package/node_modules/undici/docs/docs/api/PoolStats.md +13 -119
  521. package/node_modules/undici/docs/docs/api/ProxyAgent.md +81 -198
  522. package/node_modules/undici/docs/docs/api/RedirectHandler.md +58 -238
  523. package/node_modules/undici/docs/docs/api/RetryAgent.md +28 -119
  524. package/node_modules/undici/docs/docs/api/RetryHandler.md +78 -161
  525. package/node_modules/undici/docs/docs/api/Util.md +11 -68
  526. package/node_modules/undici/docs/docs/api/WebSocket.md +24 -509
  527. package/node_modules/undici/docs/docs/api/api-lifecycle.md +33 -101
  528. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +0 -2
  529. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +2 -58
  530. package/node_modules/undici/docs/docs/best-practices/proxy.md +1 -3
  531. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +0 -45
  532. package/node_modules/undici/index-fetch.js +4 -34
  533. package/node_modules/undici/index.d.ts +1 -1
  534. package/node_modules/undici/index.js +20 -87
  535. package/node_modules/undici/lib/api/abort-signal.js +0 -2
  536. package/node_modules/undici/lib/api/api-connect.js +11 -15
  537. package/node_modules/undici/lib/api/api-pipeline.js +19 -33
  538. package/node_modules/undici/lib/api/api-request.js +59 -89
  539. package/node_modules/undici/lib/api/api-stream.js +64 -114
  540. package/node_modules/undici/lib/api/api-upgrade.js +13 -26
  541. package/node_modules/undici/lib/api/readable.js +87 -317
  542. package/node_modules/undici/lib/api/util.js +93 -0
  543. package/node_modules/undici/lib/core/connect.js +125 -77
  544. package/node_modules/undici/lib/core/constants.js +9 -11
  545. package/node_modules/undici/lib/core/diagnostics.js +129 -154
  546. package/node_modules/undici/lib/core/errors.js +50 -122
  547. package/node_modules/undici/lib/core/request.js +87 -172
  548. package/node_modules/undici/lib/core/symbols.js +2 -14
  549. package/node_modules/undici/lib/core/tree.js +2 -10
  550. package/node_modules/undici/lib/core/util.js +190 -481
  551. package/node_modules/undici/lib/dispatcher/agent.js +35 -83
  552. package/node_modules/undici/lib/dispatcher/balanced-pool.js +38 -46
  553. package/node_modules/undici/lib/dispatcher/client-h1.js +199 -492
  554. package/node_modules/undici/lib/dispatcher/client-h2.js +380 -1409
  555. package/node_modules/undici/lib/dispatcher/client.js +130 -253
  556. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +52 -50
  557. package/node_modules/undici/lib/dispatcher/dispatcher.js +24 -17
  558. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +45 -75
  559. package/node_modules/undici/lib/dispatcher/fixed-queue.js +50 -68
  560. package/node_modules/undici/lib/dispatcher/pool-base.js +54 -153
  561. package/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
  562. package/node_modules/undici/lib/dispatcher/pool.js +16 -135
  563. package/node_modules/undici/lib/dispatcher/proxy-agent.js +41 -175
  564. package/node_modules/undici/lib/dispatcher/retry-agent.js +0 -3
  565. package/node_modules/undici/lib/global.js +9 -59
  566. package/node_modules/undici/lib/handler/decorator-handler.js +15 -43
  567. package/node_modules/undici/lib/handler/redirect-handler.js +116 -127
  568. package/node_modules/undici/lib/handler/retry-handler.js +182 -398
  569. package/node_modules/undici/lib/interceptor/dns.js +47 -254
  570. package/node_modules/undici/lib/interceptor/dump.js +56 -32
  571. package/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
  572. package/node_modules/undici/lib/interceptor/redirect.js +14 -11
  573. package/node_modules/undici/lib/interceptor/response-error.js +22 -31
  574. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  575. package/node_modules/undici/lib/llhttp/constants.js +193 -446
  576. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -11
  577. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -11
  578. package/node_modules/undici/lib/llhttp/utils.js +12 -9
  579. package/node_modules/undici/lib/mock/mock-agent.js +22 -106
  580. package/node_modules/undici/lib/mock/mock-client.js +4 -13
  581. package/node_modules/undici/lib/mock/mock-errors.js +2 -3
  582. package/node_modules/undici/lib/mock/mock-interceptor.js +13 -33
  583. package/node_modules/undici/lib/mock/mock-pool.js +4 -13
  584. package/node_modules/undici/lib/mock/mock-symbols.js +1 -10
  585. package/node_modules/undici/lib/mock/mock-utils.js +51 -404
  586. package/node_modules/undici/lib/mock/pluralizer.js +29 -0
  587. package/node_modules/undici/lib/util/timers.js +9 -11
  588. package/node_modules/undici/lib/web/cache/cache.js +51 -63
  589. package/node_modules/undici/lib/web/cache/cachestorage.js +7 -13
  590. package/node_modules/undici/lib/web/cache/symbols.js +5 -0
  591. package/node_modules/undici/lib/web/cookies/index.js +18 -45
  592. package/node_modules/undici/lib/web/cookies/parse.js +149 -157
  593. package/node_modules/undici/lib/web/cookies/util.js +2 -4
  594. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +9 -37
  595. package/node_modules/undici/lib/web/eventsource/eventsource.js +64 -108
  596. package/node_modules/undici/lib/web/eventsource/util.js +5 -28
  597. package/node_modules/undici/lib/web/fetch/body.js +148 -173
  598. package/node_modules/undici/lib/web/fetch/constants.js +6 -13
  599. package/node_modules/undici/lib/web/fetch/data-url.js +167 -19
  600. package/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
  601. package/node_modules/undici/lib/web/fetch/file.js +126 -0
  602. package/node_modules/undici/lib/web/fetch/formdata-parser.js +117 -229
  603. package/node_modules/undici/lib/web/fetch/formdata.js +65 -85
  604. package/node_modules/undici/lib/web/fetch/headers.js +108 -143
  605. package/node_modules/undici/lib/web/fetch/index.js +446 -627
  606. package/node_modules/undici/lib/web/fetch/request.js +115 -217
  607. package/node_modules/undici/lib/web/fetch/response.js +82 -110
  608. package/node_modules/undici/lib/web/fetch/symbols.js +9 -0
  609. package/node_modules/undici/lib/web/fetch/util.js +393 -291
  610. package/node_modules/undici/lib/web/fetch/webidl.js +695 -0
  611. package/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
  612. package/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
  613. package/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
  614. package/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
  615. package/node_modules/undici/lib/web/fileapi/util.js +391 -0
  616. package/node_modules/undici/lib/web/websocket/connection.js +160 -139
  617. package/node_modules/undici/lib/web/websocket/constants.js +10 -70
  618. package/node_modules/undici/lib/web/websocket/events.js +30 -49
  619. package/node_modules/undici/lib/web/websocket/frame.js +20 -51
  620. package/node_modules/undici/lib/web/websocket/receiver.js +87 -83
  621. package/node_modules/undici/lib/web/websocket/sender.js +13 -18
  622. package/node_modules/undici/lib/web/websocket/symbols.js +12 -0
  623. package/node_modules/undici/lib/web/websocket/util.js +90 -115
  624. package/node_modules/undici/lib/web/websocket/websocket.js +171 -359
  625. package/node_modules/undici/package.json +57 -49
  626. package/node_modules/undici/scripts/strip-comments.js +1 -3
  627. package/node_modules/undici/types/agent.d.ts +13 -12
  628. package/node_modules/undici/types/api.d.ts +26 -26
  629. package/node_modules/undici/types/balanced-pool.d.ts +12 -13
  630. package/node_modules/undici/types/client.d.ts +39 -98
  631. package/node_modules/undici/types/connector.d.ts +2 -5
  632. package/node_modules/undici/types/cookies.d.ts +1 -3
  633. package/node_modules/undici/types/diagnostics-channel.d.ts +11 -20
  634. package/node_modules/undici/types/dispatcher.d.ts +139 -136
  635. package/node_modules/undici/types/env-http-proxy-agent.d.ts +3 -4
  636. package/node_modules/undici/types/errors.d.ts +54 -86
  637. package/node_modules/undici/types/eventsource.d.ts +4 -9
  638. package/node_modules/undici/types/fetch.d.ts +25 -51
  639. package/node_modules/undici/types/file.d.ts +39 -0
  640. package/node_modules/undici/types/filereader.d.ts +54 -0
  641. package/node_modules/undici/types/formdata.d.ts +7 -7
  642. package/node_modules/undici/types/global-dispatcher.d.ts +4 -4
  643. package/node_modules/undici/types/global-origin.d.ts +5 -5
  644. package/node_modules/undici/types/handlers.d.ts +9 -10
  645. package/node_modules/undici/types/header.d.ts +1 -162
  646. package/node_modules/undici/types/index.d.ts +47 -69
  647. package/node_modules/undici/types/interceptors.d.ts +12 -62
  648. package/node_modules/undici/types/mock-agent.d.ts +27 -46
  649. package/node_modules/undici/types/mock-client.d.ts +4 -6
  650. package/node_modules/undici/types/mock-errors.d.ts +3 -3
  651. package/node_modules/undici/types/mock-interceptor.d.ts +21 -26
  652. package/node_modules/undici/types/mock-pool.d.ts +4 -6
  653. package/node_modules/undici/types/patch.d.ts +4 -0
  654. package/node_modules/undici/types/pool-stats.d.ts +8 -8
  655. package/node_modules/undici/types/pool.d.ts +14 -14
  656. package/node_modules/undici/types/proxy-agent.d.ts +6 -13
  657. package/node_modules/undici/types/readable.d.ts +16 -19
  658. package/node_modules/undici/types/retry-agent.d.ts +1 -1
  659. package/node_modules/undici/types/retry-handler.d.ts +9 -18
  660. package/node_modules/undici/types/util.d.ts +3 -3
  661. package/node_modules/undici/types/webidl.d.ts +32 -156
  662. package/node_modules/undici/types/websocket.d.ts +10 -48
  663. package/node_modules/validate-npm-package-name/package.json +4 -4
  664. package/node_modules/which/package.json +4 -4
  665. package/node_modules/write-file-atomic/package.json +4 -4
  666. package/package.json +58 -60
  667. package/node_modules/@npmcli/arborist/lib/npm-extension.js +0 -237
  668. package/node_modules/@npmcli/arborist/lib/package-extensions.js +0 -236
  669. package/node_modules/@npmcli/arborist/lib/patch.js +0 -111
  670. package/node_modules/@npmcli/arborist/lib/patched-dependencies.js +0 -168
  671. package/node_modules/cacache/lib/util/cache-dir.js +0 -29
  672. package/node_modules/diff/CONTRIBUTING.md +0 -28
  673. package/node_modules/diff/LICENSE +0 -29
  674. package/node_modules/diff/README.md +0 -388
  675. package/node_modules/diff/dist/diff.js +0 -1782
  676. package/node_modules/diff/dist/diff.min.js +0 -1
  677. package/node_modules/diff/eslint.config.mjs +0 -182
  678. package/node_modules/diff/libcjs/convert/dmp.d.ts +0 -8
  679. package/node_modules/diff/libcjs/convert/dmp.d.ts.map +0 -1
  680. package/node_modules/diff/libcjs/convert/dmp.js +0 -24
  681. package/node_modules/diff/libcjs/convert/xml.d.ts +0 -6
  682. package/node_modules/diff/libcjs/convert/xml.d.ts.map +0 -1
  683. package/node_modules/diff/libcjs/convert/xml.js +0 -34
  684. package/node_modules/diff/libcjs/diff/array.d.ts +0 -19
  685. package/node_modules/diff/libcjs/diff/array.d.ts.map +0 -1
  686. package/node_modules/diff/libcjs/diff/array.js +0 -40
  687. package/node_modules/diff/libcjs/diff/base.d.ts +0 -20
  688. package/node_modules/diff/libcjs/diff/base.d.ts.map +0 -1
  689. package/node_modules/diff/libcjs/diff/base.js +0 -265
  690. package/node_modules/diff/libcjs/diff/character.d.ts +0 -19
  691. package/node_modules/diff/libcjs/diff/character.d.ts.map +0 -1
  692. package/node_modules/diff/libcjs/diff/character.js +0 -31
  693. package/node_modules/diff/libcjs/diff/css.d.ts +0 -18
  694. package/node_modules/diff/libcjs/diff/css.d.ts.map +0 -1
  695. package/node_modules/diff/libcjs/diff/css.js +0 -34
  696. package/node_modules/diff/libcjs/diff/json.d.ts +0 -24
  697. package/node_modules/diff/libcjs/diff/json.d.ts.map +0 -1
  698. package/node_modules/diff/libcjs/diff/json.js +0 -105
  699. package/node_modules/diff/libcjs/diff/line.d.ts +0 -24
  700. package/node_modules/diff/libcjs/diff/line.d.ts.map +0 -1
  701. package/node_modules/diff/libcjs/diff/line.js +0 -89
  702. package/node_modules/diff/libcjs/diff/sentence.d.ts +0 -21
  703. package/node_modules/diff/libcjs/diff/sentence.d.ts.map +0 -1
  704. package/node_modules/diff/libcjs/diff/sentence.js +0 -67
  705. package/node_modules/diff/libcjs/diff/word.d.ts +0 -35
  706. package/node_modules/diff/libcjs/diff/word.d.ts.map +0 -1
  707. package/node_modules/diff/libcjs/diff/word.js +0 -312
  708. package/node_modules/diff/libcjs/index.d.ts +0 -20
  709. package/node_modules/diff/libcjs/index.d.ts.map +0 -1
  710. package/node_modules/diff/libcjs/index.js +0 -64
  711. package/node_modules/diff/libcjs/package.json +0 -1
  712. package/node_modules/diff/libcjs/patch/apply.d.ts +0 -62
  713. package/node_modules/diff/libcjs/patch/apply.d.ts.map +0 -1
  714. package/node_modules/diff/libcjs/patch/apply.js +0 -267
  715. package/node_modules/diff/libcjs/patch/create.d.ts +0 -122
  716. package/node_modules/diff/libcjs/patch/create.d.ts.map +0 -1
  717. package/node_modules/diff/libcjs/patch/create.js +0 -251
  718. package/node_modules/diff/libcjs/patch/line-endings.d.ts +0 -17
  719. package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +0 -1
  720. package/node_modules/diff/libcjs/patch/line-endings.js +0 -61
  721. package/node_modules/diff/libcjs/patch/parse.d.ts +0 -8
  722. package/node_modules/diff/libcjs/patch/parse.d.ts.map +0 -1
  723. package/node_modules/diff/libcjs/patch/parse.js +0 -150
  724. package/node_modules/diff/libcjs/patch/reverse.d.ts +0 -9
  725. package/node_modules/diff/libcjs/patch/reverse.d.ts.map +0 -1
  726. package/node_modules/diff/libcjs/patch/reverse.js +0 -37
  727. package/node_modules/diff/libcjs/types.d.ts +0 -213
  728. package/node_modules/diff/libcjs/types.d.ts.map +0 -1
  729. package/node_modules/diff/libcjs/types.js +0 -2
  730. package/node_modules/diff/libcjs/util/array.d.ts +0 -3
  731. package/node_modules/diff/libcjs/util/array.d.ts.map +0 -1
  732. package/node_modules/diff/libcjs/util/array.js +0 -21
  733. package/node_modules/diff/libcjs/util/distance-iterator.d.ts +0 -2
  734. package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +0 -1
  735. package/node_modules/diff/libcjs/util/distance-iterator.js +0 -40
  736. package/node_modules/diff/libcjs/util/params.d.ts +0 -4
  737. package/node_modules/diff/libcjs/util/params.d.ts.map +0 -1
  738. package/node_modules/diff/libcjs/util/params.js +0 -17
  739. package/node_modules/diff/libcjs/util/string.d.ts +0 -30
  740. package/node_modules/diff/libcjs/util/string.d.ts.map +0 -1
  741. package/node_modules/diff/libcjs/util/string.js +0 -200
  742. package/node_modules/diff/libesm/convert/dmp.d.ts +0 -8
  743. package/node_modules/diff/libesm/convert/dmp.d.ts.map +0 -1
  744. package/node_modules/diff/libesm/convert/dmp.js +0 -21
  745. package/node_modules/diff/libesm/convert/xml.d.ts +0 -6
  746. package/node_modules/diff/libesm/convert/xml.d.ts.map +0 -1
  747. package/node_modules/diff/libesm/convert/xml.js +0 -31
  748. package/node_modules/diff/libesm/diff/array.d.ts +0 -19
  749. package/node_modules/diff/libesm/diff/array.d.ts.map +0 -1
  750. package/node_modules/diff/libesm/diff/array.js +0 -16
  751. package/node_modules/diff/libesm/diff/base.d.ts +0 -20
  752. package/node_modules/diff/libesm/diff/base.d.ts.map +0 -1
  753. package/node_modules/diff/libesm/diff/base.js +0 -253
  754. package/node_modules/diff/libesm/diff/character.d.ts +0 -19
  755. package/node_modules/diff/libesm/diff/character.d.ts.map +0 -1
  756. package/node_modules/diff/libesm/diff/character.js +0 -7
  757. package/node_modules/diff/libesm/diff/css.d.ts +0 -18
  758. package/node_modules/diff/libesm/diff/css.d.ts.map +0 -1
  759. package/node_modules/diff/libesm/diff/css.js +0 -10
  760. package/node_modules/diff/libesm/diff/json.d.ts +0 -24
  761. package/node_modules/diff/libesm/diff/json.d.ts.map +0 -1
  762. package/node_modules/diff/libesm/diff/json.js +0 -78
  763. package/node_modules/diff/libesm/diff/line.d.ts +0 -24
  764. package/node_modules/diff/libesm/diff/line.d.ts.map +0 -1
  765. package/node_modules/diff/libesm/diff/line.js +0 -65
  766. package/node_modules/diff/libesm/diff/sentence.d.ts +0 -21
  767. package/node_modules/diff/libesm/diff/sentence.d.ts.map +0 -1
  768. package/node_modules/diff/libesm/diff/sentence.js +0 -43
  769. package/node_modules/diff/libesm/diff/word.d.ts +0 -35
  770. package/node_modules/diff/libesm/diff/word.d.ts.map +0 -1
  771. package/node_modules/diff/libesm/diff/word.js +0 -281
  772. package/node_modules/diff/libesm/index.d.ts +0 -20
  773. package/node_modules/diff/libesm/index.d.ts.map +0 -1
  774. package/node_modules/diff/libesm/index.js +0 -30
  775. package/node_modules/diff/libesm/package.json +0 -1
  776. package/node_modules/diff/libesm/patch/apply.d.ts +0 -62
  777. package/node_modules/diff/libesm/patch/apply.d.ts.map +0 -1
  778. package/node_modules/diff/libesm/patch/apply.js +0 -257
  779. package/node_modules/diff/libesm/patch/create.d.ts +0 -122
  780. package/node_modules/diff/libesm/patch/create.d.ts.map +0 -1
  781. package/node_modules/diff/libesm/patch/create.js +0 -228
  782. package/node_modules/diff/libesm/patch/line-endings.d.ts +0 -17
  783. package/node_modules/diff/libesm/patch/line-endings.d.ts.map +0 -1
  784. package/node_modules/diff/libesm/patch/line-endings.js +0 -44
  785. package/node_modules/diff/libesm/patch/parse.d.ts +0 -8
  786. package/node_modules/diff/libesm/patch/parse.d.ts.map +0 -1
  787. package/node_modules/diff/libesm/patch/parse.js +0 -147
  788. package/node_modules/diff/libesm/patch/reverse.d.ts +0 -9
  789. package/node_modules/diff/libesm/patch/reverse.d.ts.map +0 -1
  790. package/node_modules/diff/libesm/patch/reverse.js +0 -23
  791. package/node_modules/diff/libesm/types.d.ts +0 -213
  792. package/node_modules/diff/libesm/types.d.ts.map +0 -1
  793. package/node_modules/diff/libesm/types.js +0 -1
  794. package/node_modules/diff/libesm/util/array.d.ts +0 -3
  795. package/node_modules/diff/libesm/util/array.d.ts.map +0 -1
  796. package/node_modules/diff/libesm/util/array.js +0 -17
  797. package/node_modules/diff/libesm/util/distance-iterator.d.ts +0 -2
  798. package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +0 -1
  799. package/node_modules/diff/libesm/util/distance-iterator.js +0 -37
  800. package/node_modules/diff/libesm/util/params.d.ts +0 -4
  801. package/node_modules/diff/libesm/util/params.d.ts.map +0 -1
  802. package/node_modules/diff/libesm/util/params.js +0 -14
  803. package/node_modules/diff/libesm/util/string.d.ts +0 -30
  804. package/node_modules/diff/libesm/util/string.d.ts.map +0 -1
  805. package/node_modules/diff/libesm/util/string.js +0 -184
  806. package/node_modules/diff/package.json +0 -130
  807. package/node_modules/diff/release-notes.md +0 -432
  808. package/node_modules/node-gyp/commitlint.config.mjs +0 -3
  809. package/node_modules/node-gyp/gyp/commitlint.config.js +0 -6
  810. package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake_test.py +0 -105
  811. package/node_modules/node-gyp/zizmor.yml +0 -5
  812. package/node_modules/proxy-agent-negotiate/dist/index.d.ts +0 -14
  813. package/node_modules/proxy-agent-negotiate/dist/index.d.ts.map +0 -1
  814. package/node_modules/proxy-agent-negotiate/dist/index.js +0 -35
  815. package/node_modules/proxy-agent-negotiate/dist/index.js.map +0 -1
  816. package/node_modules/proxy-agent-negotiate/package.json +0 -47
  817. package/node_modules/undici/docs/docs/api/CacheStore.md +0 -360
  818. package/node_modules/undici/docs/docs/api/ClientStats.md +0 -93
  819. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +0 -121
  820. package/node_modules/undici/docs/docs/api/H2CClient.md +0 -385
  821. package/node_modules/undici/docs/docs/api/Interceptors.md +0 -419
  822. package/node_modules/undici/docs/docs/api/MockCallHistory.md +0 -371
  823. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +0 -206
  824. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +0 -239
  825. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +0 -361
  826. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +0 -256
  827. package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +0 -233
  828. package/node_modules/undici/docs/docs/getting-started.md +0 -281
  829. package/node_modules/undici/docs/docs/site.json +0 -125
  830. package/node_modules/undici/docs/docs/type-map.json +0 -79
  831. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +0 -110
  832. package/node_modules/undici/types/dispatcher1-wrapper.d.ts +0 -7
  833. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-client.js +0 -0
  834. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-utils.js +0 -0
  835. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/encoding/index.js +0 -0
  836. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/constants.d.ts +0 -0
  837. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/utils.d.ts +0 -0
  838. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-utils.js +0 -0
  839. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/date.js +0 -0
  840. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/stats.js +0 -0
  841. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/Readme.md +0 -0
  842. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/subresource-integrity.js +0 -0
  843. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/cache-interceptor.d.ts +0 -0
  844. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/client-stats.d.ts +0 -0
  845. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/mock-call-history.d.ts +0 -0
  846. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/utility.d.ts +0 -0
@@ -1,210 +1,108 @@
1
- # MockPool
1
+ # Class: MockPool
2
2
 
3
- <!--introduced_in=v4.0.0-->
4
- <!--type=module-->
5
- <!-- source_link=lib/mock/mock-pool.js -->
3
+ Extends: `undici.Pool`
6
4
 
7
- > Stability: 2 - Stable
5
+ A mock Pool class that implements the Pool API and is used by MockAgent to intercept real requests and return mocked responses.
8
6
 
9
- A `MockPool` is a [`Pool`][] that intercepts requests matching registered routes
10
- and replies with mocked responses instead of contacting the network. It is
11
- created by a [`MockAgent`][] and exposes the same interception API as
12
- [`MockClient`][].
7
+ ## `new MockPool(origin, [options])`
13
8
 
14
- A `MockPool` is not constructed directly in most cases; instead it is obtained
15
- through [`mockAgent.get(origin)`][]. Once registered as the global dispatcher,
16
- any request whose origin matches the pool is matched against the mocks it holds.
9
+ Arguments:
17
10
 
18
- ```mjs
11
+ * **origin** `string` - It should only include the **protocol, hostname, and port**.
12
+ * **options** `MockPoolOptions` - It extends the `Pool` options.
13
+
14
+ Returns: `MockPool`
15
+
16
+ ### Parameter: `MockPoolOptions`
17
+
18
+ Extends: `PoolOptions`
19
+
20
+ * **agent** `Agent` - the agent to associate this MockPool with.
21
+
22
+ ### Example - Basic MockPool instantiation
23
+
24
+ We can use MockAgent to instantiate a MockPool ready to be used to intercept specified requests. It will not do anything until registered as the agent to use and any mock request are registered.
25
+
26
+ ```js
19
27
  import { MockAgent } from 'undici'
20
28
 
21
29
  const mockAgent = new MockAgent()
30
+
22
31
  const mockPool = mockAgent.get('http://localhost:3000')
23
32
  ```
24
33
 
25
- ```cjs
26
- const { MockAgent } = require('undici')
34
+ ## Instance Methods
27
35
 
28
- const mockAgent = new MockAgent()
29
- const mockPool = mockAgent.get('http://localhost:3000')
30
- ```
36
+ ### `MockPool.intercept(options)`
31
37
 
32
- ## Class: `MockPool`
38
+ This method defines the interception rules for matching against requests for a MockPool or MockPool. We can intercept multiple times on a single instance, but each intercept is only used once. For example if you expect to make 2 requests inside a test, you need to call `intercept()` twice. Assuming you use `disableNetConnect()` you will get `MockNotMatchedError` on the second request when you only call `intercept()` once.
33
39
 
34
- <!-- YAML
35
- added: v4.0.0
36
- -->
40
+ When defining interception rules, all the rules must pass for a request to be intercepted. If a request is not intercepted, a real request will be attempted.
37
41
 
38
- * Extends: {Pool}
42
+ | Matcher type | Condition to pass |
43
+ |:------------:| -------------------------- |
44
+ | `string` | Exact match against string |
45
+ | `RegExp` | Regex must pass |
46
+ | `Function` | Function must return true |
39
47
 
40
- Extends [`Pool`][] and implements the `Interceptable` interface, allowing
41
- requests made through it to be matched against registered mocks.
48
+ Arguments:
42
49
 
43
- ### `new MockPool(origin[, options])`
50
+ * **options** `MockPoolInterceptOptions` - Interception options.
44
51
 
45
- <!-- YAML
46
- added: v4.0.0
47
- -->
52
+ Returns: `MockInterceptor` corresponding to the input options.
48
53
 
49
- * `origin` {string} The origin to associate this mock pool with. It should only
50
- include the protocol, hostname, and port.
51
- * `options` {MockPoolOptions} Extends the [`Pool`][] options.
52
- * Returns: {MockPool}
54
+ ### Parameter: `MockPoolInterceptOptions`
53
55
 
54
- The `agent` option is required and must implement the `Agent` interface;
55
- otherwise an `InvalidArgumentError` is thrown.
56
+ * **path** `string | RegExp | (path: string) => boolean` - a matcher for the HTTP request path. When a `RegExp` or callback is used, it will match against the request path including all query parameters in alphabetical order. When a `string` is provided, the query parameters can be conveniently specified through the `MockPoolInterceptOptions.query` setting.
57
+ * **method** `string | RegExp | (method: string) => boolean` - (optional) - a matcher for the HTTP request method. Defaults to `GET`.
58
+ * **body** `string | RegExp | (body: string) => boolean` - (optional) - a matcher for the HTTP request body.
59
+ * **headers** `Record<string, string | RegExp | (body: string) => boolean`> - (optional) - a matcher for the HTTP request headers. To be intercepted, a request must match all defined headers. Extra headers not defined here may (or may not) be included in the request and do not affect the interception in any way.
60
+ * **query** `Record<string, any> | null` - (optional) - a matcher for the HTTP request query string params. Only applies when a `string` was provided for `MockPoolInterceptOptions.path`.
56
61
 
57
- #### Parameter: `MockPoolOptions`
62
+ ### Return: `MockInterceptor`
58
63
 
59
- Extends: `PoolOptions`
64
+ We can define the behaviour of an intercepted request with the following options.
65
+
66
+ * **reply** `(statusCode: number, replyData: string | Buffer | object | MockInterceptor.MockResponseDataHandler, responseOptions?: MockResponseOptions) => MockScope` - define a reply for a matching request. You can define the replyData as a callback to read incoming request data. Default for `responseOptions` is `{}`.
67
+ * **reply** `(callback: MockInterceptor.MockReplyOptionsCallback) => MockScope` - define a reply for a matching request, allowing dynamic mocking of all reply options rather than just the data.
68
+ * **replyWithError** `(error: Error) => MockScope` - define an error for a matching request to throw.
69
+ * **defaultReplyHeaders** `(headers: Record<string, string>) => MockInterceptor` - define default headers to be included in subsequent replies. These are in addition to headers on a specific reply.
70
+ * **defaultReplyTrailers** `(trailers: Record<string, string>) => MockInterceptor` - define default trailers to be included in subsequent replies. These are in addition to trailers on a specific reply.
71
+ * **replyContentLength** `() => MockInterceptor` - define automatically calculated `content-length` headers to be included in subsequent replies.
72
+
73
+ The reply data of an intercepted request may either be a string, buffer, or JavaScript object. Objects are converted to JSON while strings and buffers are sent as-is.
74
+
75
+ By default, `reply` and `replyWithError` define the behaviour for the first matching request only. Subsequent requests will not be affected (this can be changed using the returned `MockScope`).
76
+
77
+ ### Parameter: `MockResponseOptions`
60
78
 
61
- * `agent` {MockAgent} The agent to associate this mock pool with.
62
- * `ignoreTrailingSlash` {boolean} Whether trailing slashes should be ignored
63
- when matching the path of intercepted requests. **Default:** `false`.
64
-
65
- ### `mockPool.intercept(options)`
66
-
67
- <!-- YAML
68
- added: v4.0.0
69
- -->
70
-
71
- * `options` {MockPoolInterceptOptions} The matching criteria for the requests to
72
- intercept.
73
- * Returns: {MockInterceptor} The interceptor used to define the mocked reply.
74
-
75
- Registers a route on the mock pool and returns a [`MockInterceptor`][] for any
76
- matching request that uses the same origin as this mock pool. The interceptor is
77
- then used to define the reply, for example with `reply()` or `replyWithError()`.
78
-
79
- Each `intercept()` call is consumed by a single matching request. To match more
80
- than one request, call `intercept()` once per expected request, or use
81
- `persist()` or `times()` on the returned [`MockScope`][]. When no registered
82
- mock matches a request, a real request is attempted unless network connections
83
- have been disabled on the [`MockAgent`][], in which case a `MockNotMatchedError`
84
- is thrown.
85
-
86
- A request is intercepted only when every defined matcher passes. The accepted
87
- matcher forms behave as follows:
88
-
89
- | Matcher type | Condition to pass |
90
- | :----------: | ---------------------------- |
91
- | `string` | Exact match against the value |
92
- | `RegExp` | The expression must match |
93
- | `Function` | The function must return `true` |
94
-
95
- #### Parameter: `MockPoolInterceptOptions`
96
-
97
- * `path` {string|RegExp|Function} A matcher for the HTTP request path. The
98
- function form has the signature `(path: string) => boolean`. When a `RegExp`
99
- or function is used, it matches against the request path including all query
100
- parameters in alphabetical order. When a `string` is used, query parameters
101
- can instead be supplied through `query`.
102
- * `method` {string|RegExp|Function} A matcher for the HTTP request method. The
103
- function form has the signature `(method: string) => boolean`.
104
- **Default:** `'GET'`.
105
- * `body` {string|RegExp|Function} A matcher for the HTTP request body. The
106
- function form has the signature `(body: string) => boolean`.
107
- * `headers` {Object|Function} A matcher for the HTTP request headers, given
108
- either as a map of header name to a `string`, `RegExp`, or
109
- `(value: string) => boolean` matcher, or as a single function that receives
110
- all headers and returns a `boolean`. When a map is used, the request must
111
- match every defined header; extra headers not listed here do not affect
112
- matching.
113
- * `query` {Object} A matcher for the HTTP request query string parameters. Only
114
- applies when a `string` was provided for `path`.
115
- * `ignoreTrailingSlash` {boolean} Whether a trailing slash on `path` is ignored
116
- when matching. Inherited from the mock pool's `ignoreTrailingSlash` option
117
- when not set.
118
-
119
- #### Return: `MockInterceptor`
120
-
121
- The reply behaviour of a matching request is defined through the returned
122
- `MockInterceptor`.
123
-
124
- * `reply(statusCode[, data[, responseOptions]])` {Function} Defines the reply
125
- for a matching request.
126
- * `statusCode` {number} The status code of the mocked reply.
127
- * `data` {string|Buffer|Object|Function} The body of the mocked reply.
128
- Objects are serialized to JSON; strings and `Buffer`s are sent as-is. The
129
- function form has the signature
130
- `(opts: MockResponseCallbackOptions) => string | Buffer | Object` and is
131
- invoked with the incoming request to compute the reply body.
132
- * `responseOptions` {MockResponseOptions} Additional reply options.
133
- **Default:** `{}`.
134
- * Returns: {MockScope}
135
- * `reply(callback)` {Function} Defines the reply for a matching request,
136
- computing all reply options dynamically rather than just the body.
137
- * `callback` {Function} A `(opts: MockResponseCallbackOptions) =>
138
- { statusCode, data, responseOptions }` function invoked with the incoming
139
- request. The callback may be asynchronous; a returned promise is awaited
140
- and must resolve to the same shape.
141
- * Returns: {MockScope}
142
- * `replyWithError(error)` {Function} Defines an error for a matching request to
143
- throw.
144
- * `error` {Error} The error thrown when a request matches.
145
- * Returns: {MockScope}
146
- * `defaultReplyHeaders(headers)` {Function} Sets default headers included on
147
- every subsequent reply defined on this interceptor, in addition to any headers
148
- set on a specific reply.
149
- * `headers` {Object} A map of header name to value.
150
- * Returns: {MockInterceptor}
151
- * `defaultReplyTrailers(trailers)` {Function} Sets default trailers included on
152
- every subsequent reply defined on this interceptor, in addition to any
153
- trailers set on a specific reply.
154
- * `trailers` {Object} A map of trailer name to value.
155
- * Returns: {MockInterceptor}
156
- * `replyContentLength()` {Function} Sets an automatically calculated
157
- `content-length` header on every subsequent reply defined on this interceptor.
158
- * Returns: {MockInterceptor}
159
-
160
- By default, `reply()` and `replyWithError()` define the behaviour for the first
161
- matching request only; subsequent requests are not affected unless `persist()`
162
- or `times()` is used on the returned [`MockScope`][].
163
-
164
- #### Parameter: `MockResponseCallbackOptions`
165
-
166
- The argument passed to the `reply()` data and options callbacks.
167
-
168
- * `path` {string} The path of the intercepted request.
169
- * `method` {string} The method of the intercepted request.
170
- * `headers` {Object|Headers} The headers of the intercepted request.
171
- * `origin` {string} The origin of the intercepted request.
172
- * `body` {string|null} The body of the intercepted request.
173
-
174
- #### Parameter: `MockResponseOptions`
175
-
176
- * `headers` {Object} Headers to include on the mocked reply.
177
- * `trailers` {Object} Trailers to include on the mocked reply.
178
-
179
- #### Return: `MockScope`
180
-
181
- A `MockScope` is associated with a single [`MockInterceptor`][] and configures
182
- how many times the defined reply is used.
183
-
184
- * `delay(waitInMs)` {Function} Delays the associated reply by a set amount of
185
- time.
186
- * `waitInMs` {number} The delay in milliseconds.
187
- * Returns: {MockScope}
188
- * `persist()` {Function} Makes the associated reply match indefinitely, so every
189
- matching request receives the defined response.
190
- * Returns: {MockScope}
191
- * `times(repeatTimes)` {Function} Makes the associated reply match a fixed number
192
- of times. This is overridden by `persist()`.
193
- * `repeatTimes` {number} The number of matching requests the reply applies to.
194
- * Returns: {MockScope}
195
-
196
- The following examples show common interception patterns.
197
-
198
- ```mjs displayName="Basic mocked request"
79
+ * **headers** `Record<string, string>` - headers to be included on the mocked reply.
80
+ * **trailers** `Record<string, string>` - trailers to be included on the mocked reply.
81
+
82
+ ### Return: `MockScope`
83
+
84
+ A `MockScope` is associated with a single `MockInterceptor`. With this, we can configure the default behaviour of a intercepted reply.
85
+
86
+ * **delay** `(waitInMs: number) => MockScope` - delay the associated reply by a set amount in ms.
87
+ * **persist** `() => MockScope` - any matching request will always reply with the defined response indefinitely.
88
+ * **times** `(repeatTimes: number) => MockScope` - any matching request will reply with the defined response a fixed amount of times. This is overridden by **persist**.
89
+
90
+ #### Example - Basic Mocked Request
91
+
92
+ ```js
199
93
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
200
94
 
201
95
  const mockAgent = new MockAgent()
202
96
  setGlobalDispatcher(mockAgent)
203
97
 
98
+ // MockPool
204
99
  const mockPool = mockAgent.get('http://localhost:3000')
205
100
  mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
206
101
 
207
- const { statusCode, body } = await request('http://localhost:3000/foo')
102
+ const {
103
+ statusCode,
104
+ body
105
+ } = await request('http://localhost:3000/foo')
208
106
 
209
107
  console.log('response received', statusCode) // response received 200
210
108
 
@@ -213,7 +111,9 @@ for await (const data of body) {
213
111
  }
214
112
  ```
215
113
 
216
- ```mjs displayName="Reply with a data callback"
114
+ #### Example - Mocked request using reply data callbacks
115
+
116
+ ```js
217
117
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
218
118
 
219
119
  const mockAgent = new MockAgent()
@@ -223,21 +123,30 @@ const mockPool = mockAgent.get('http://localhost:3000')
223
123
 
224
124
  mockPool.intercept({
225
125
  path: '/echo',
226
- method: 'GET'
227
- }).reply(200, ({ headers }) => ({ message: headers.message }))
126
+ method: 'GET',
127
+ headers: {
128
+ 'User-Agent': 'undici',
129
+ Host: 'example.com'
130
+ }
131
+ }).reply(200, ({ headers }) => ({ message: headers.get('message') }))
228
132
 
229
- const { statusCode, body } = await request('http://localhost:3000/echo', {
230
- headers: { message: 'hello world!' }
133
+ const { statusCode, body, headers } = await request('http://localhost:3000', {
134
+ headers: {
135
+ message: 'hello world!'
136
+ }
231
137
  })
232
138
 
233
139
  console.log('response received', statusCode) // response received 200
140
+ console.log('headers', headers) // { 'content-type': 'application/json' }
234
141
 
235
142
  for await (const data of body) {
236
- console.log('data', data.toString('utf8')) // {"message":"hello world!"}
143
+ console.log('data', data.toString('utf8')) // { "message":"hello world!" }
237
144
  }
238
145
  ```
239
146
 
240
- ```mjs displayName="Reply with an options callback"
147
+ #### Example - Mocked request using reply options callback
148
+
149
+ ```js
241
150
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
242
151
 
243
152
  const mockAgent = new MockAgent()
@@ -247,25 +156,30 @@ const mockPool = mockAgent.get('http://localhost:3000')
247
156
 
248
157
  mockPool.intercept({
249
158
  path: '/echo',
250
- method: 'GET'
251
- }).reply(({ headers }) => ({
252
- statusCode: 200,
253
- data: { message: headers.message }
254
- }))
159
+ method: 'GET',
160
+ headers: {
161
+ 'User-Agent': 'undici',
162
+ Host: 'example.com'
163
+ }
164
+ }).reply(({ headers }) => ({ statusCode: 200, data: { message: headers.get('message') }})))
255
165
 
256
- const { statusCode, body } = await request('http://localhost:3000/echo', {
257
- headers: { message: 'hello world!' }
166
+ const { statusCode, body, headers } = await request('http://localhost:3000', {
167
+ headers: {
168
+ message: 'hello world!'
169
+ }
258
170
  })
259
171
 
260
172
  console.log('response received', statusCode) // response received 200
173
+ console.log('headers', headers) // { 'content-type': 'application/json' }
261
174
 
262
175
  for await (const data of body) {
263
- console.log('data', data.toString('utf8')) // {"message":"hello world!"}
176
+ console.log('data', data.toString('utf8')) // { "message":"hello world!" }
264
177
  }
265
178
  ```
266
179
 
267
- ```mjs displayName="Reply with an asynchronous options callback"
268
- import { readFile } from 'node:fs/promises'
180
+ #### Example - Basic Mocked requests with multiple intercepts
181
+
182
+ ```js
269
183
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
270
184
 
271
185
  const mockAgent = new MockAgent()
@@ -274,45 +188,35 @@ setGlobalDispatcher(mockAgent)
274
188
  const mockPool = mockAgent.get('http://localhost:3000')
275
189
 
276
190
  mockPool.intercept({
277
- path: '/fixture',
191
+ path: '/foo',
278
192
  method: 'GET'
279
- }).reply(async ({ path }) => ({
280
- statusCode: 200,
281
- data: await readFile(new URL('./fixture.json', import.meta.url))
282
- }))
283
-
284
- const { statusCode, body } = await request('http://localhost:3000/fixture')
285
-
286
- console.log('response received', statusCode) // response received 200
287
-
288
- for await (const data of body) {
289
- console.log('data', data.toString('utf8')) // contents of fixture.json
290
- }
291
- ```
292
-
293
- ```mjs displayName="Multiple intercepts"
294
- import { MockAgent, setGlobalDispatcher, request } from 'undici'
193
+ }).reply(200, 'foo')
295
194
 
296
- const mockAgent = new MockAgent()
297
- setGlobalDispatcher(mockAgent)
195
+ mockPool.intercept({
196
+ path: '/hello',
197
+ method: 'GET',
198
+ }).reply(200, 'hello')
298
199
 
299
- const mockPool = mockAgent.get('http://localhost:3000')
200
+ const result1 = await request('http://localhost:3000/foo')
300
201
 
301
- mockPool.intercept({ path: '/foo', method: 'GET' }).reply(200, 'foo')
302
- mockPool.intercept({ path: '/hello', method: 'GET' }).reply(200, 'hello')
202
+ console.log('response received', result1.statusCode) // response received 200
303
203
 
304
- const fooResult = await request('http://localhost:3000/foo')
305
- for await (const data of fooResult.body) {
204
+ for await (const data of result1.body) {
306
205
  console.log('data', data.toString('utf8')) // data foo
307
206
  }
308
207
 
309
- const helloResult = await request('http://localhost:3000/hello')
310
- for await (const data of helloResult.body) {
208
+ const result2 = await request('http://localhost:3000/hello')
209
+
210
+ console.log('response received', result2.statusCode) // response received 200
211
+
212
+ for await (const data of result2.body) {
311
213
  console.log('data', data.toString('utf8')) // data hello
312
214
  }
313
215
  ```
314
216
 
315
- ```mjs displayName="Match query, body, request headers; reply with headers and trailers"
217
+ #### Example - Mocked request with query body, request headers and response headers and trailers
218
+
219
+ ```js
316
220
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
317
221
 
318
222
  const mockAgent = new MockAgent()
@@ -333,9 +237,12 @@ mockPool.intercept({
333
237
  trailers: { 'Content-MD5': 'test' }
334
238
  })
335
239
 
336
- const { statusCode, headers, trailers, body } = await request(
337
- 'http://localhost:3000/foo?hello=there&see=ya',
338
- {
240
+ const {
241
+ statusCode,
242
+ headers,
243
+ trailers,
244
+ body
245
+ } = await request('http://localhost:3000/foo?hello=there&see=ya', {
339
246
  method: 'POST',
340
247
  body: 'form1=data1&form2=data2',
341
248
  headers: {
@@ -343,20 +250,21 @@ const { statusCode, headers, trailers, body } = await request(
343
250
  'User-Agent': 'undici',
344
251
  Host: 'example.com'
345
252
  }
346
- }
347
- )
253
+ })
348
254
 
349
255
  console.log('response received', statusCode) // response received 200
350
256
  console.log('headers', headers) // { 'content-type': 'application/json' }
351
257
 
352
258
  for await (const data of body) {
353
- console.log('data', data.toString('utf8')) // {"foo":"bar"}
259
+ console.log('data', data.toString('utf8')) // '{"foo":"bar"}'
354
260
  }
355
261
 
356
262
  console.log('trailers', trailers) // { 'content-md5': 'test' }
357
263
  ```
358
264
 
359
- ```mjs displayName="Different matcher forms"
265
+ #### Example - Mocked request using different matchers
266
+
267
+ ```js
360
268
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
361
269
 
362
270
  const mockAgent = new MockAgent()
@@ -370,11 +278,14 @@ mockPool.intercept({
370
278
  body: (value) => value === 'form=data',
371
279
  headers: {
372
280
  'User-Agent': 'undici',
373
- Host: /^example\.com$/
281
+ Host: /^example.com$/
374
282
  }
375
283
  }).reply(200, 'foo')
376
284
 
377
- const { statusCode, body } = await request('http://localhost:3000/foo', {
285
+ const {
286
+ statusCode,
287
+ body
288
+ } = await request('http://localhost:3000/foo', {
378
289
  method: 'GET',
379
290
  body: 'form=data',
380
291
  headers: {
@@ -391,7 +302,9 @@ for await (const data of body) {
391
302
  }
392
303
  ```
393
304
 
394
- ```mjs displayName="Reply with an error"
305
+ #### Example - Mocked request with reply with a defined error
306
+
307
+ ```js
395
308
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
396
309
 
397
310
  const mockAgent = new MockAgent()
@@ -405,13 +318,17 @@ mockPool.intercept({
405
318
  }).replyWithError(new Error('kaboom'))
406
319
 
407
320
  try {
408
- await request('http://localhost:3000/foo', { method: 'GET' })
321
+ await request('http://localhost:3000/foo', {
322
+ method: 'GET'
323
+ })
409
324
  } catch (error) {
410
- console.error(error.message) // kaboom
325
+ console.error(error) // Error: kaboom
411
326
  }
412
327
  ```
413
328
 
414
- ```mjs displayName="Default reply headers"
329
+ #### Example - Mocked request with defaultReplyHeaders
330
+
331
+ ```js
415
332
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
416
333
 
417
334
  const mockAgent = new MockAgent()
@@ -419,8 +336,10 @@ setGlobalDispatcher(mockAgent)
419
336
 
420
337
  const mockPool = mockAgent.get('http://localhost:3000')
421
338
 
422
- mockPool.intercept({ path: '/foo', method: 'GET' })
423
- .defaultReplyHeaders({ foo: 'bar' })
339
+ mockPool.intercept({
340
+ path: '/foo',
341
+ method: 'GET'
342
+ }).defaultReplyHeaders({ foo: 'bar' })
424
343
  .reply(200, 'foo')
425
344
 
426
345
  const { headers } = await request('http://localhost:3000/foo')
@@ -428,7 +347,9 @@ const { headers } = await request('http://localhost:3000/foo')
428
347
  console.log('headers', headers) // headers { foo: 'bar' }
429
348
  ```
430
349
 
431
- ```mjs displayName="Default reply trailers"
350
+ #### Example - Mocked request with defaultReplyTrailers
351
+
352
+ ```js
432
353
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
433
354
 
434
355
  const mockAgent = new MockAgent()
@@ -436,8 +357,10 @@ setGlobalDispatcher(mockAgent)
436
357
 
437
358
  const mockPool = mockAgent.get('http://localhost:3000')
438
359
 
439
- mockPool.intercept({ path: '/foo', method: 'GET' })
440
- .defaultReplyTrailers({ foo: 'bar' })
360
+ mockPool.intercept({
361
+ path: '/foo',
362
+ method: 'GET'
363
+ }).defaultReplyTrailers({ foo: 'bar' })
441
364
  .reply(200, 'foo')
442
365
 
443
366
  const { trailers } = await request('http://localhost:3000/foo')
@@ -445,7 +368,9 @@ const { trailers } = await request('http://localhost:3000/foo')
445
368
  console.log('trailers', trailers) // trailers { foo: 'bar' }
446
369
  ```
447
370
 
448
- ```mjs displayName="Automatic content-length"
371
+ #### Example - Mocked request with automatic content-length calculation
372
+
373
+ ```js
449
374
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
450
375
 
451
376
  const mockAgent = new MockAgent()
@@ -453,16 +378,19 @@ setGlobalDispatcher(mockAgent)
453
378
 
454
379
  const mockPool = mockAgent.get('http://localhost:3000')
455
380
 
456
- mockPool.intercept({ path: '/foo', method: 'GET' })
457
- .replyContentLength()
458
- .reply(200, 'foo')
381
+ mockPool.intercept({
382
+ path: '/foo',
383
+ method: 'GET'
384
+ }).replyContentLength().reply(200, 'foo')
459
385
 
460
386
  const { headers } = await request('http://localhost:3000/foo')
461
387
 
462
388
  console.log('headers', headers) // headers { 'content-length': '3' }
463
389
  ```
464
390
 
465
- ```mjs displayName="Persisted reply"
391
+ #### Example - Mocked request with automatic content-length calculation on an object
392
+
393
+ ```js
466
394
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
467
395
 
468
396
  const mockAgent = new MockAgent()
@@ -470,13 +398,19 @@ setGlobalDispatcher(mockAgent)
470
398
 
471
399
  const mockPool = mockAgent.get('http://localhost:3000')
472
400
 
473
- mockPool.intercept({ path: '/foo', method: 'GET' }).reply(200, 'foo').persist()
401
+ mockPool.intercept({
402
+ path: '/foo',
403
+ method: 'GET'
404
+ }).replyContentLength().reply(200, { foo: 'bar' })
405
+
406
+ const { headers } = await request('http://localhost:3000/foo')
474
407
 
475
- await request('http://localhost:3000/foo') // Matches and returns the mock
476
- await request('http://localhost:3000/foo') // Matches again, indefinitely
408
+ console.log('headers', headers) // headers { 'content-length': '13' }
477
409
  ```
478
410
 
479
- ```mjs displayName="Reply a fixed number of times"
411
+ #### Example - Mocked request with persist enabled
412
+
413
+ ```js
480
414
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
481
415
 
482
416
  const mockAgent = new MockAgent()
@@ -484,23 +418,57 @@ setGlobalDispatcher(mockAgent)
484
418
 
485
419
  const mockPool = mockAgent.get('http://localhost:3000')
486
420
 
487
- mockPool.intercept({ path: '/foo', method: 'GET' }).reply(200, 'foo').times(2)
421
+ mockPool.intercept({
422
+ path: '/foo',
423
+ method: 'GET'
424
+ }).reply(200, 'foo').persist()
425
+
426
+ const result1 = await request('http://localhost:3000/foo')
427
+ // Will match and return mocked data
488
428
 
489
- await request('http://localhost:3000/foo') // Matches and returns the mock
490
- await request('http://localhost:3000/foo') // Matches and returns the mock
491
- await request('http://localhost:3000/foo') // No match; a real request is attempted
429
+ const result2 = await request('http://localhost:3000/foo')
430
+ // Will match and return mocked data
431
+
432
+ // Etc
492
433
  ```
493
434
 
494
- ```mjs displayName="Match the path with a function"
435
+ #### Example - Mocked request with times enabled
436
+
437
+ ```js
495
438
  import { MockAgent, setGlobalDispatcher, request } from 'undici'
496
- import querystring from 'node:querystring'
497
439
 
498
440
  const mockAgent = new MockAgent()
499
441
  setGlobalDispatcher(mockAgent)
500
442
 
501
443
  const mockPool = mockAgent.get('http://localhost:3000')
502
444
 
503
- const matchPath = (requestPath) => {
445
+ mockPool.intercept({
446
+ path: '/foo',
447
+ method: 'GET'
448
+ }).reply(200, 'foo').times(2)
449
+
450
+ const result1 = await request('http://localhost:3000/foo')
451
+ // Will match and return mocked data
452
+
453
+ const result2 = await request('http://localhost:3000/foo')
454
+ // Will match and return mocked data
455
+
456
+ const result3 = await request('http://localhost:3000/foo')
457
+ // Will not match and make attempt a real request
458
+ ```
459
+
460
+ #### Example - Mocked request with path callback
461
+
462
+ ```js
463
+ import { MockAgent, setGlobalDispatcher, request } from 'undici'
464
+ import querystring from 'querystring'
465
+
466
+ const mockAgent = new MockAgent()
467
+ setGlobalDispatcher(mockAgent)
468
+
469
+ const mockPool = mockAgent.get('http://localhost:3000')
470
+
471
+ const matchPath = requestPath => {
504
472
  const [pathname, search] = requestPath.split('?')
505
473
  const requestQuery = querystring.parse(search)
506
474
 
@@ -508,26 +476,31 @@ const matchPath = (requestPath) => {
508
476
  return false
509
477
  }
510
478
 
511
- return requestQuery.foo === 'bar'
479
+ if (!Object.keys(requestQuery).includes('foo') || requestQuery.foo !== 'bar') {
480
+ return false
481
+ }
482
+
483
+ return true
512
484
  }
513
485
 
514
- mockPool.intercept({ path: matchPath, method: 'GET' }).reply(200, 'foo')
486
+ mockPool.intercept({
487
+ path: matchPath,
488
+ method: 'GET'
489
+ }).reply(200, 'foo')
515
490
 
516
- await request('http://localhost:3000/foo?foo=bar') // Matches and returns the mock
491
+ const result = await request('http://localhost:3000/foo?foo=bar')
492
+ // Will match and return mocked data
517
493
  ```
518
494
 
519
- ### `mockPool.close()`
495
+ ### `MockPool.close()`
520
496
 
521
- <!-- YAML
522
- added: v4.0.0
523
- -->
497
+ Closes the mock pool and de-registers from associated MockAgent.
524
498
 
525
- * Returns: {Promise} Fulfills with `undefined` once the mock pool is closed.
499
+ Returns: `Promise<void>`
526
500
 
527
- Closes the mock pool, gracefully waiting for any enqueued requests to complete,
528
- and removes it from the associated [`MockAgent`][].
501
+ #### Example - clean up after tests are complete
529
502
 
530
- ```mjs
503
+ ```js
531
504
  import { MockAgent } from 'undici'
532
505
 
533
506
  const mockAgent = new MockAgent()
@@ -536,45 +509,31 @@ const mockPool = mockAgent.get('http://localhost:3000')
536
509
  await mockPool.close()
537
510
  ```
538
511
 
539
- ### `mockPool.dispatch(options, handlers)`
540
-
541
- <!-- YAML
542
- added: v4.0.0
543
- -->
512
+ ### `MockPool.dispatch(options, handlers)`
544
513
 
545
- * `options` {DispatchOptions} The request options.
546
- * `handlers` {DispatchHandler} The handlers invoked over the request lifecycle.
547
- * Returns: {boolean} `false` if the dispatcher is busy and the caller should
548
- wait before dispatching further requests, otherwise `true`.
514
+ Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler).
549
515
 
550
- Dispatches a request, matching it against the registered mocks. This override of
551
- [`dispatcher.dispatch(options, handlers)`][] is what drives the mocking
552
- behaviour for every higher-level method such as `request`.
516
+ ### `MockPool.request(options[, callback])`
553
517
 
554
- ### `mockPool.request(options[, callback])`
518
+ See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
555
519
 
556
- <!-- YAML
557
- added: v4.0.0
558
- -->
520
+ #### Example - MockPool request
559
521
 
560
- * `options` {DispatchOptions}
561
- * `callback` {Function} (optional) Invoked with the response when no `Promise`
562
- is requested.
563
- * Returns: {Promise} Fulfills with the mocked response when no `callback` is
564
- provided.
565
-
566
- Performs a request and resolves it against the registered mocks. Inherited from
567
- [`Pool`][]; see [`dispatcher.request(options[, callback])`][] for the full
568
- parameter and return value documentation.
569
-
570
- ```mjs
522
+ ```js
571
523
  import { MockAgent } from 'undici'
572
524
 
573
525
  const mockAgent = new MockAgent()
526
+
574
527
  const mockPool = mockAgent.get('http://localhost:3000')
575
- mockPool.intercept({ path: '/foo', method: 'GET' }).reply(200, 'foo')
528
+ mockPool.intercept({
529
+ path: '/foo',
530
+ method: 'GET',
531
+ }).reply(200, 'foo')
576
532
 
577
- const { statusCode, body } = await mockPool.request({
533
+ const {
534
+ statusCode,
535
+ body
536
+ } = await mockPool.request({
578
537
  origin: 'http://localhost:3000',
579
538
  path: '/foo',
580
539
  method: 'GET'
@@ -586,33 +545,3 @@ for await (const data of body) {
586
545
  console.log('data', data.toString('utf8')) // data foo
587
546
  }
588
547
  ```
589
-
590
- ### `mockPool.cleanMocks()`
591
-
592
- <!-- YAML
593
- added: v7.11.0
594
- -->
595
-
596
- * Returns: {undefined}
597
-
598
- Removes all registered interceptors from the mock pool. Pending mocks defined
599
- before this call no longer match incoming requests.
600
-
601
- ```mjs
602
- import { MockAgent } from 'undici'
603
-
604
- const mockAgent = new MockAgent()
605
- const mockPool = mockAgent.get('http://localhost:3000')
606
-
607
- mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
608
- mockPool.cleanMocks()
609
- ```
610
-
611
- [`MockAgent`]: MockAgent.md#class-mockagent
612
- [`MockClient`]: MockClient.md#class-mockclient
613
- [`MockInterceptor`]: MockPool.md#return-mockinterceptor
614
- [`MockScope`]: MockPool.md#return-mockscope
615
- [`Pool`]: Pool.md#class-pool
616
- [`dispatcher.dispatch(options, handlers)`]: Dispatcher.md#dispatcherdispatchoptions-handler
617
- [`dispatcher.request(options[, callback])`]: Dispatcher.md#dispatcherrequestoptions-callback
618
- [`mockAgent.get(origin)`]: MockAgent.md#mockagentgetorigin