@yanglaofish/fishtools 0.5.2 → 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 (826) hide show
  1. package/README.md +23 -11
  2. package/manual/README.md +23 -11
  3. package/manual/docs/deployment.md +3 -3
  4. package/manual/docs/examples/action-plugin/package.json +1 -1
  5. package/manual/docs/plugin-development.md +15 -4
  6. package/manual/docs/releases.md +24 -0
  7. package/manual/docs/superpowers/plans/2026-10-13-command-shortcuts.md +3 -2
  8. package/manual/docs/superpowers/plans/2026-10-13-global-plugins.md +56 -0
  9. package/manual/docs/superpowers/plans/2026-10-13-tui-readable-sessions.md +21 -0
  10. package/manual/docs/superpowers/reviews/2026-10-13-0.5.3-review.md +28 -0
  11. package/manual/docs/superpowers/reviews/2026-10-13-command-shortcuts-review.md +7 -0
  12. package/manual/docs/superpowers/reviews/2026-10-13-tui-sessions-review.md +55 -0
  13. package/manual/docs/superpowers/specs/2026-10-13-issue-4-workflow-menu.md +23 -0
  14. package/manual/docs/superpowers/specs/2026-10-13-issue-5-results-and-history.md +20 -0
  15. package/manual/docs/terminal-commands.md +8 -0
  16. package/manual/docs/verification.md +30 -0
  17. package/manual/packages/core/README.md +2 -0
  18. package/manual/packages/core/package.json +1 -1
  19. package/manual/packages/core/src/application.js +100 -51
  20. package/manual/packages/core/src/development-watch-worker.js +10 -1
  21. package/manual/packages/core/src/development.js +1 -1
  22. package/manual/packages/core/src/plugin-catalog.js +42 -0
  23. package/manual/packages/core/src/version.js +1 -1
  24. package/manual/packages/fst-cli/README.md +4 -0
  25. package/manual/packages/fst-cli/bin/fst.js +7 -6
  26. package/manual/packages/fst-cli/package.json +1 -1
  27. package/manual/packages/fst-cli/src/development.js +6 -1
  28. package/manual/packages/fst-cli/src/terminal/command-menu.js +8 -3
  29. package/manual/packages/fst-cli/src/terminal/navigation.js +2 -0
  30. package/manual/packages/fst-cli/src/terminal/presentation.js +4 -3
  31. package/manual/packages/fst-cli/src/terminal/run-feed.js +69 -13
  32. package/manual/packages/fst-cli/src/terminal/run-presentation.js +55 -12
  33. package/manual/packages/fst-cli/src/terminal/run-viewer.js +26 -10
  34. package/manual/packages/fst-cli/src/terminal/session-history.js +82 -0
  35. package/manual/packages/fst-cli/src/terminal/session.js +119 -40
  36. package/manual/packages/fst-cli/src/terminal/view.js +31 -8
  37. package/manual/packages/fst-cli/src/terminal/workflow-menu.js +14 -9
  38. package/manual/packages/fst-devtools/package.json +2 -2
  39. package/manual/packages/fst-devtools/src/plugin-tools.js +1 -1
  40. package/manual/packages/fst-logs/README.md +23 -2
  41. package/manual/packages/fst-logs/package.json +2 -1
  42. package/manual/packages/fst-logs/src/file-identity.js +23 -0
  43. package/manual/packages/fst-logs/src/markdown-log.js +4 -3
  44. package/manual/packages/fst-logs/src/run-logs.js +3 -2
  45. package/manual/packages/fst-logs/src/session-history.js +180 -0
  46. package/manual/packages/fst-platform/README.md +4 -0
  47. package/manual/packages/fst-platform/package.json +3 -3
  48. package/manual/packages/fst-platform/src/process.js +4 -1
  49. package/manual/packages/fst-platform/src/shell.js +46 -1
  50. package/manual/packages/fst-plugin/package.json +1 -1
  51. package/manual/packages/fst-plugin/src/host.js +31 -23
  52. package/manual/packages/fst-workflow/package.json +1 -1
  53. package/manual/packages/fst-workflow/src/engine.js +1 -1
  54. package/manual/packages/fst-workspace/README.md +2 -0
  55. package/manual/packages/fst-workspace/package.json +2 -1
  56. package/manual/packages/fst-workspace/src/plugin-registry.js +58 -0
  57. package/manual/packages/fst-workspace/src/plugins.js +7 -4
  58. package/manual/packages/fst-workspace/src/workflows.js +5 -3
  59. package/manual/packages/pack/package.json +3 -3
  60. package/manual/packages/pack/runtime-cache.js +26 -0
  61. package/manual/packages/pack/runtime.js +6 -10
  62. package/manual/plugins/commands/package.json +1 -1
  63. package/node_modules/@mytools/commands/package.json +1 -1
  64. package/node_modules/@mytools/core/README.md +2 -0
  65. package/node_modules/@mytools/core/package.json +1 -1
  66. package/node_modules/@mytools/core/src/application.js +100 -51
  67. package/node_modules/@mytools/core/src/development-watch-worker.js +10 -1
  68. package/node_modules/@mytools/core/src/development.js +1 -1
  69. package/node_modules/@mytools/core/src/plugin-catalog.js +42 -0
  70. package/node_modules/@mytools/core/src/version.js +1 -1
  71. package/node_modules/@mytools/fst-cli/README.md +4 -0
  72. package/node_modules/@mytools/fst-cli/bin/fst.js +7 -6
  73. package/node_modules/@mytools/fst-cli/package.json +1 -1
  74. package/node_modules/@mytools/fst-cli/src/development.js +6 -1
  75. package/node_modules/@mytools/fst-cli/src/terminal/command-menu.js +8 -3
  76. package/node_modules/@mytools/fst-cli/src/terminal/navigation.js +2 -0
  77. package/node_modules/@mytools/fst-cli/src/terminal/presentation.js +4 -3
  78. package/node_modules/@mytools/fst-cli/src/terminal/run-feed.js +69 -13
  79. package/node_modules/@mytools/fst-cli/src/terminal/run-presentation.js +55 -12
  80. package/node_modules/@mytools/fst-cli/src/terminal/run-viewer.js +26 -10
  81. package/node_modules/@mytools/fst-cli/src/terminal/session-history.js +82 -0
  82. package/node_modules/@mytools/fst-cli/src/terminal/session.js +119 -40
  83. package/node_modules/@mytools/fst-cli/src/terminal/view.js +31 -8
  84. package/node_modules/@mytools/fst-cli/src/terminal/workflow-menu.js +14 -9
  85. package/node_modules/@mytools/fst-devtools/package.json +2 -2
  86. package/node_modules/@mytools/fst-devtools/src/plugin-tools.js +1 -1
  87. package/node_modules/@mytools/fst-logs/README.md +23 -2
  88. package/node_modules/@mytools/fst-logs/package.json +2 -1
  89. package/node_modules/@mytools/fst-logs/src/file-identity.js +23 -0
  90. package/node_modules/@mytools/fst-logs/src/markdown-log.js +4 -3
  91. package/node_modules/@mytools/fst-logs/src/run-logs.js +3 -2
  92. package/node_modules/@mytools/fst-logs/src/session-history.js +180 -0
  93. package/node_modules/@mytools/fst-platform/README.md +4 -0
  94. package/node_modules/@mytools/fst-platform/node_modules/undici/LICENSE +21 -0
  95. package/node_modules/{undici/docs/docs/index.md → @mytools/fst-platform/node_modules/undici/README.md} +85 -137
  96. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Agent.md +84 -0
  97. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  98. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  99. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
  100. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Client.md +288 -0
  101. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
  102. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Connector.md +115 -0
  103. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  104. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Cookies.md +128 -0
  105. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Debug.md +62 -0
  106. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +317 -0
  107. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Dispatcher.md +1393 -0
  108. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  109. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Errors.md +49 -0
  110. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  111. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Fetch.md +60 -0
  112. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
  113. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
  114. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
  115. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
  116. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
  117. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockClient.md +81 -0
  118. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  119. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockPool.md +555 -0
  120. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Pool.md +84 -0
  121. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  122. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
  123. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
  124. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
  125. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
  126. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
  127. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
  128. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
  129. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Util.md +25 -0
  130. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
  131. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  132. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  133. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/crawling.md +1 -3
  134. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
  135. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  136. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/undici-vs-builtin-fetch.md +8 -10
  137. package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
  138. package/node_modules/@mytools/fst-platform/node_modules/undici/index-fetch.js +65 -0
  139. package/node_modules/@mytools/fst-platform/node_modules/undici/index.d.ts +3 -0
  140. package/node_modules/@mytools/fst-platform/node_modules/undici/index.js +234 -0
  141. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/abort-signal.js +59 -0
  142. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-connect.js +110 -0
  143. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-pipeline.js +252 -0
  144. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-request.js +214 -0
  145. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-stream.js +209 -0
  146. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-upgrade.js +111 -0
  147. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/index.js +7 -0
  148. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/readable.js +580 -0
  149. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/memory-cache-store.js +3 -3
  150. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/sqlite-cache-store.js +1 -3
  151. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/connect.js +153 -0
  152. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/constants.js +143 -0
  153. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/diagnostics.js +227 -0
  154. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/errors.js +477 -0
  155. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/request.js +485 -0
  156. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/symbols.js +75 -0
  157. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/tree.js +160 -0
  158. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/util.js +992 -0
  159. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/agent.js +158 -0
  160. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/balanced-pool.js +221 -0
  161. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h1.js +1746 -0
  162. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h2.js +1060 -0
  163. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client.js +668 -0
  164. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
  165. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
  166. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
  167. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
  168. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/h2c-client.js +4 -4
  169. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
  170. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool.js +118 -0
  171. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
  172. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  173. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/round-robin-pool.js +10 -32
  174. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/socks5-proxy-agent.js +63 -153
  175. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/global.js +59 -0
  176. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-handler.js +7 -49
  177. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-revalidation-handler.js +0 -10
  178. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/decorator-handler.js +67 -0
  179. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/deduplication-handler.js +10 -29
  180. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/redirect-handler.js +238 -0
  181. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/retry-handler.js +504 -0
  182. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
  183. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/wrap-handler.js +105 -0
  184. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/cache.js +26 -79
  185. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/decompress.js +3 -13
  186. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/deduplicate.js +4 -5
  187. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dns.js +571 -0
  188. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dump.js +99 -0
  189. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/redirect.js +21 -0
  190. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/response-error.js +95 -0
  191. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/retry.js +19 -0
  192. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  193. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/constants.js +531 -0
  194. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  195. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  196. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/utils.js +12 -0
  197. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-agent.js +232 -0
  198. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/mock-call-history.js +1 -1
  199. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-client.js +68 -0
  200. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-errors.js +29 -0
  201. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
  202. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-pool.js +68 -0
  203. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-symbols.js +32 -0
  204. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-utils.js +486 -0
  205. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  206. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-agent.js +7 -25
  207. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-recorder.js +3 -38
  208. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/cache.js +10 -92
  209. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/promise.js +28 -0
  210. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/runtime-features.js +34 -3
  211. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/timers.js +425 -0
  212. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cache.js +864 -0
  213. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  214. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/util.js +45 -0
  215. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/constants.js +12 -0
  216. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/index.js +199 -0
  217. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/parse.js +314 -0
  218. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/util.js +352 -0
  219. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource-stream.js +494 -0
  220. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
  221. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/util.js +29 -0
  222. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  223. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/body.js +509 -0
  224. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/constants.js +131 -0
  225. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/data-url.js +596 -0
  226. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
  227. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata.js +259 -0
  228. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/global.js +40 -0
  229. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/headers.js +719 -0
  230. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/index.js +2413 -0
  231. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/request.js +1115 -0
  232. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/response.js +641 -0
  233. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/util.js +1522 -0
  234. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/infra/index.js +1 -16
  235. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/webidl/index.js +21 -7
  236. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/connection.js +339 -0
  237. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/constants.js +126 -0
  238. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/events.js +331 -0
  239. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/frame.js +133 -0
  240. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
  241. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/receiver.js +507 -0
  242. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/sender.js +109 -0
  243. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketerror.js +10 -13
  244. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketstream.js +14 -29
  245. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/util.js +347 -0
  246. package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/websocket.js +758 -0
  247. package/node_modules/@mytools/fst-platform/node_modules/undici/package.json +152 -0
  248. package/node_modules/@mytools/fst-platform/node_modules/undici/scripts/strip-comments.js +10 -0
  249. package/node_modules/@mytools/fst-platform/node_modules/undici/types/README.md +6 -0
  250. package/node_modules/@mytools/fst-platform/node_modules/undici/types/agent.d.ts +32 -0
  251. package/node_modules/@mytools/fst-platform/node_modules/undici/types/api.d.ts +43 -0
  252. package/node_modules/@mytools/fst-platform/node_modules/undici/types/balanced-pool.d.ts +30 -0
  253. package/node_modules/@mytools/fst-platform/node_modules/undici/types/cache.d.ts +36 -0
  254. package/node_modules/@mytools/fst-platform/node_modules/undici/types/client.d.ts +139 -0
  255. package/node_modules/@mytools/fst-platform/node_modules/undici/types/connector.d.ts +36 -0
  256. package/node_modules/@mytools/fst-platform/node_modules/undici/types/content-type.d.ts +21 -0
  257. package/node_modules/@mytools/fst-platform/node_modules/undici/types/cookies.d.ts +30 -0
  258. package/node_modules/@mytools/fst-platform/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
  259. package/node_modules/@mytools/fst-platform/node_modules/undici/types/dispatcher.d.ts +275 -0
  260. package/node_modules/@mytools/fst-platform/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
  261. package/node_modules/@mytools/fst-platform/node_modules/undici/types/errors.d.ts +177 -0
  262. package/node_modules/@mytools/fst-platform/node_modules/undici/types/eventsource.d.ts +66 -0
  263. package/node_modules/@mytools/fst-platform/node_modules/undici/types/fetch.d.ts +231 -0
  264. package/node_modules/@mytools/fst-platform/node_modules/undici/types/formdata.d.ts +114 -0
  265. package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  266. package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-origin.d.ts +7 -0
  267. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/h2c-client.d.ts +6 -6
  268. package/node_modules/@mytools/fst-platform/node_modules/undici/types/handlers.d.ts +14 -0
  269. package/node_modules/@mytools/fst-platform/node_modules/undici/types/header.d.ts +160 -0
  270. package/node_modules/@mytools/fst-platform/node_modules/undici/types/index.d.ts +91 -0
  271. package/node_modules/@mytools/fst-platform/node_modules/undici/types/interceptors.d.ts +82 -0
  272. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-agent.d.ts +68 -0
  273. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-client.d.ts +27 -0
  274. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-errors.d.ts +12 -0
  275. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-interceptor.d.ts +94 -0
  276. package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-pool.d.ts +27 -0
  277. package/node_modules/@mytools/fst-platform/node_modules/undici/types/patch.d.ts +29 -0
  278. package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool-stats.d.ts +19 -0
  279. package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool.d.ts +41 -0
  280. package/node_modules/@mytools/fst-platform/node_modules/undici/types/proxy-agent.d.ts +29 -0
  281. package/node_modules/@mytools/fst-platform/node_modules/undici/types/readable.d.ts +68 -0
  282. package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-agent.d.ts +8 -0
  283. package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-handler.d.ts +125 -0
  284. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/round-robin-pool.d.ts +2 -0
  285. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/snapshot-agent.d.ts +0 -4
  286. package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/socks5-proxy-agent.d.ts +2 -4
  287. package/node_modules/@mytools/fst-platform/node_modules/undici/types/util.d.ts +18 -0
  288. package/node_modules/@mytools/fst-platform/node_modules/undici/types/webidl.d.ts +347 -0
  289. package/node_modules/@mytools/fst-platform/node_modules/undici/types/websocket.d.ts +188 -0
  290. package/node_modules/@mytools/fst-platform/package.json +3 -3
  291. package/node_modules/@mytools/fst-platform/src/process.js +4 -1
  292. package/node_modules/@mytools/fst-platform/src/shell.js +46 -1
  293. package/node_modules/@mytools/fst-plugin/package.json +1 -1
  294. package/node_modules/@mytools/fst-plugin/src/host.js +31 -23
  295. package/node_modules/@mytools/fst-workflow/package.json +1 -1
  296. package/node_modules/@mytools/fst-workflow/src/engine.js +1 -1
  297. package/node_modules/@mytools/fst-workspace/README.md +2 -0
  298. package/node_modules/@mytools/fst-workspace/package.json +2 -1
  299. package/node_modules/@mytools/fst-workspace/src/plugin-registry.js +58 -0
  300. package/node_modules/@mytools/fst-workspace/src/plugins.js +7 -4
  301. package/node_modules/@mytools/fst-workspace/src/workflows.js +5 -3
  302. package/node_modules/@mytools/pack/package.json +3 -3
  303. package/node_modules/@mytools/pack/runtime-cache.js +26 -0
  304. package/node_modules/@mytools/pack/runtime.js +6 -10
  305. package/node_modules/@mytools/web/public/THIRD_PARTY_NOTICES.txt +953 -963
  306. package/node_modules/@npmcli/agent/lib/agents.js +0 -10
  307. package/node_modules/@npmcli/agent/package.json +12 -11
  308. package/node_modules/@npmcli/arborist/README.md +2 -2
  309. package/node_modules/@npmcli/arborist/bin/index.js +2 -1
  310. package/node_modules/@npmcli/arborist/bin/shrinkwrap.js +7 -0
  311. package/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +25 -159
  312. package/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js +49 -11
  313. package/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +0 -67
  314. package/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +37 -5
  315. package/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +8 -15
  316. package/node_modules/@npmcli/arborist/lib/arborist/reify.js +42 -59
  317. package/node_modules/@npmcli/arborist/lib/consistent-resolve.js +1 -1
  318. package/node_modules/@npmcli/arborist/lib/diff.js +22 -17
  319. package/node_modules/@npmcli/arborist/lib/edge.js +2 -22
  320. package/node_modules/@npmcli/arborist/lib/index.js +0 -2
  321. package/node_modules/@npmcli/arborist/lib/isolated-classes.js +1 -4
  322. package/node_modules/@npmcli/arborist/lib/node.js +9 -13
  323. package/node_modules/@npmcli/arborist/lib/place-dep.js +0 -6
  324. package/node_modules/@npmcli/arborist/lib/printable.js +5 -0
  325. package/node_modules/@npmcli/arborist/lib/shrinkwrap.js +32 -55
  326. package/node_modules/@npmcli/arborist/package.json +26 -32
  327. package/node_modules/@npmcli/fs/lib/move-file.js +5 -5
  328. package/node_modules/@npmcli/fs/package.json +5 -5
  329. package/node_modules/@npmcli/git/package.json +12 -13
  330. package/node_modules/@npmcli/installed-package-contents/package.json +7 -7
  331. package/node_modules/@npmcli/map-workspaces/package.json +7 -7
  332. package/node_modules/@npmcli/metavuln-calculator/package.json +16 -10
  333. package/node_modules/@npmcli/name-from-folder/package.json +16 -13
  334. package/node_modules/@npmcli/node-gyp/package.json +5 -5
  335. package/node_modules/@npmcli/package-json/lib/index.js +1 -2
  336. package/node_modules/@npmcli/package-json/lib/normalize.js +22 -23
  337. package/node_modules/@npmcli/package-json/package.json +10 -11
  338. package/node_modules/@npmcli/promise-spawn/README.md +2 -1
  339. package/node_modules/@npmcli/promise-spawn/package.json +5 -5
  340. package/node_modules/@npmcli/redact/package.json +4 -4
  341. package/node_modules/@npmcli/run-script/lib/is-server-package.js +11 -0
  342. package/node_modules/@npmcli/run-script/lib/make-spawn-args.js +6 -5
  343. package/node_modules/@npmcli/run-script/lib/run-script-pkg.js +13 -4
  344. package/node_modules/@npmcli/run-script/lib/run-script.js +2 -1
  345. package/node_modules/@npmcli/run-script/package.json +11 -12
  346. package/node_modules/@sigstore/bundle/README.md +1 -1
  347. package/node_modules/@sigstore/bundle/dist/error.js +0 -1
  348. package/node_modules/@sigstore/bundle/package.json +2 -2
  349. package/node_modules/@sigstore/core/README.md +1 -1
  350. package/node_modules/@sigstore/core/dist/asn1/length.js +1 -12
  351. package/node_modules/@sigstore/core/dist/asn1/obj.js +7 -25
  352. package/node_modules/@sigstore/core/dist/asn1/parse.js +5 -24
  353. package/node_modules/@sigstore/core/package.json +2 -2
  354. package/node_modules/@sigstore/sign/README.md +1 -1
  355. package/node_modules/@sigstore/sign/dist/signer/fulcio/ephemeral.js +1 -1
  356. package/node_modules/@sigstore/sign/package.json +9 -9
  357. package/node_modules/@sigstore/tuf/README.md +1 -1
  358. package/node_modules/@sigstore/tuf/package.json +4 -4
  359. package/node_modules/@sigstore/tuf/seeds.json +1 -1
  360. package/node_modules/@sigstore/verify/README.md +1 -1
  361. package/node_modules/@sigstore/verify/dist/bundle/dsse.d.ts +0 -1
  362. package/node_modules/@sigstore/verify/dist/bundle/dsse.js +0 -6
  363. package/node_modules/@sigstore/verify/dist/bundle/message.d.ts +0 -1
  364. package/node_modules/@sigstore/verify/dist/bundle/message.js +0 -5
  365. package/node_modules/@sigstore/verify/dist/policy.d.ts +1 -1
  366. package/node_modules/@sigstore/verify/dist/policy.js +2 -0
  367. package/node_modules/@sigstore/verify/dist/shared.types.d.ts +1 -6
  368. package/node_modules/@sigstore/verify/dist/tlog/checkpoint.js +3 -17
  369. package/node_modules/@sigstore/verify/dist/tlog/hashedrekord.js +4 -4
  370. package/node_modules/@sigstore/verify/dist/tlog/index.js +1 -13
  371. package/node_modules/@sigstore/verify/dist/tlog/merkle.js +1 -12
  372. package/node_modules/@sigstore/verify/dist/verifier.js +5 -13
  373. package/node_modules/@sigstore/verify/package.json +5 -5
  374. package/node_modules/@tufjs/models/package.json +3 -3
  375. package/node_modules/abbrev/package.json +8 -9
  376. package/node_modules/agent-base/dist/helpers.d.ts +5 -0
  377. package/node_modules/agent-base/dist/helpers.d.ts.map +1 -1
  378. package/node_modules/agent-base/dist/helpers.js +34 -5
  379. package/node_modules/agent-base/dist/helpers.js.map +1 -1
  380. package/node_modules/agent-base/dist/index.d.ts +5 -1
  381. package/node_modules/agent-base/dist/index.d.ts.map +1 -1
  382. package/node_modules/agent-base/dist/index.js +40 -8
  383. package/node_modules/agent-base/dist/index.js.map +1 -1
  384. package/node_modules/agent-base/package.json +12 -12
  385. package/node_modules/bin-links/README.md +4 -5
  386. package/node_modules/bin-links/lib/fix-bin.js +1 -3
  387. package/node_modules/bin-links/lib/index.js +16 -8
  388. package/node_modules/bin-links/lib/link-mans.js +53 -0
  389. package/node_modules/bin-links/package.json +12 -11
  390. package/node_modules/cacache/lib/content/write.js +0 -2
  391. package/node_modules/cacache/lib/entry-index.js +0 -3
  392. package/node_modules/cacache/lib/rm.js +0 -1
  393. package/node_modules/cacache/lib/util/tmp.js +1 -5
  394. package/node_modules/cacache/lib/verify.js +2 -2
  395. package/node_modules/cacache/package.json +7 -7
  396. package/node_modules/cmd-shim/lib/index.js +32 -67
  397. package/node_modules/cmd-shim/package.json +5 -5
  398. package/node_modules/hosted-git-info/README.md +1 -1
  399. package/node_modules/hosted-git-info/lib/parse-url.js +3 -1
  400. package/node_modules/hosted-git-info/package.json +4 -4
  401. package/node_modules/http-proxy-agent/dist/index.d.ts +5 -8
  402. package/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -1
  403. package/node_modules/http-proxy-agent/dist/index.js +42 -26
  404. package/node_modules/http-proxy-agent/dist/index.js.map +1 -1
  405. package/node_modules/http-proxy-agent/package.json +14 -15
  406. package/node_modules/https-proxy-agent/dist/index.d.ts +5 -9
  407. package/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -1
  408. package/node_modules/https-proxy-agent/dist/index.js +44 -98
  409. package/node_modules/https-proxy-agent/dist/index.js.map +1 -1
  410. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +3 -0
  411. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -1
  412. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +10 -3
  413. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -1
  414. package/node_modules/https-proxy-agent/package.json +15 -16
  415. package/node_modules/ignore-walk/package.json +4 -4
  416. package/node_modules/ini/package.json +5 -5
  417. package/node_modules/ip-address/README.md +70 -70
  418. package/node_modules/ip-address/dist/ipv6.js +7 -4
  419. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  420. package/node_modules/ip-address/dist/v6/constants.d.ts +3 -0
  421. package/node_modules/ip-address/dist/v6/constants.js +3 -0
  422. package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  423. package/node_modules/ip-address/package.json +2 -1
  424. package/node_modules/json-parse-even-better-errors/lib/index.js +1 -3
  425. package/node_modules/json-parse-even-better-errors/package.json +17 -13
  426. package/node_modules/make-fetch-happen/package.json +11 -11
  427. package/node_modules/minipass-fetch/package.json +4 -4
  428. package/node_modules/node-gyp/.release-please-manifest.json +1 -1
  429. package/node_modules/node-gyp/CHANGELOG.md +0 -102
  430. package/node_modules/node-gyp/README.md +2 -3
  431. package/node_modules/node-gyp/eslint.config.js +1 -4
  432. package/node_modules/node-gyp/gyp/.release-please-manifest.json +1 -1
  433. package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +19 -14
  434. package/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +2 -7
  435. package/node_modules/node-gyp/gyp/pyproject.toml +1 -1
  436. package/node_modules/node-gyp/lib/build.js +6 -18
  437. package/node_modules/node-gyp/lib/create-config-gypi.js +0 -5
  438. package/node_modules/node-gyp/lib/node-gyp.js +2 -9
  439. package/node_modules/node-gyp/lib/rebuild.js +3 -3
  440. package/node_modules/node-gyp/package.json +9 -11
  441. package/node_modules/nopt/README.md +4 -2
  442. package/node_modules/nopt/lib/debug.js +5 -0
  443. package/node_modules/nopt/lib/nopt-lib.js +43 -7
  444. package/node_modules/nopt/lib/nopt.js +4 -2
  445. package/node_modules/nopt/lib/type-defs.js +13 -8
  446. package/node_modules/nopt/package.json +17 -15
  447. package/node_modules/npm-bundled/package.json +6 -6
  448. package/node_modules/npm-install-checks/package.json +5 -5
  449. package/node_modules/npm-normalize-package-bin/package.json +16 -13
  450. package/node_modules/npm-package-arg/package.json +7 -7
  451. package/node_modules/npm-packlist/README.md +30 -45
  452. package/node_modules/npm-packlist/lib/index.js +47 -115
  453. package/node_modules/npm-packlist/package.json +8 -10
  454. package/node_modules/npm-pick-manifest/package.json +19 -15
  455. package/node_modules/npm-registry-fetch/lib/errors.js +3 -8
  456. package/node_modules/npm-registry-fetch/package.json +12 -12
  457. package/node_modules/pacote/lib/dir.js +5 -60
  458. package/node_modules/pacote/lib/fetcher.js +0 -4
  459. package/node_modules/pacote/lib/git.js +3 -11
  460. package/node_modules/pacote/lib/util/add-git-sha.js +1 -1
  461. package/node_modules/pacote/package.json +18 -19
  462. package/node_modules/parse-conflict-json/package.json +6 -6
  463. package/node_modules/proc-log/package.json +4 -4
  464. package/node_modules/read-cmd-shim/lib/index.js +1 -1
  465. package/node_modules/read-cmd-shim/package.json +18 -14
  466. package/node_modules/sigstore/README.md +1 -1
  467. package/node_modules/sigstore/package.json +10 -10
  468. package/node_modules/socks-proxy-agent/dist/index.d.ts +3 -1
  469. package/node_modules/socks-proxy-agent/dist/index.d.ts.map +1 -1
  470. package/node_modules/socks-proxy-agent/dist/index.js +43 -17
  471. package/node_modules/socks-proxy-agent/dist/index.js.map +1 -1
  472. package/node_modules/socks-proxy-agent/package.json +15 -15
  473. package/node_modules/ssri/package.json +4 -4
  474. package/node_modules/tuf-js/dist/config.d.ts +2 -2
  475. package/node_modules/tuf-js/dist/fetcher.d.ts +4 -4
  476. package/node_modules/tuf-js/dist/fetcher.js +16 -55
  477. package/node_modules/tuf-js/dist/updater.js +2 -2
  478. package/node_modules/tuf-js/package.json +8 -8
  479. package/node_modules/undici/README.md +72 -405
  480. package/node_modules/undici/docs/docs/api/Agent.md +41 -252
  481. package/node_modules/undici/docs/docs/api/BalancedPool.md +48 -246
  482. package/node_modules/undici/docs/docs/api/CacheStorage.md +13 -171
  483. package/node_modules/undici/docs/docs/api/Client.md +139 -395
  484. package/node_modules/undici/docs/docs/api/Connector.md +35 -118
  485. package/node_modules/undici/docs/docs/api/ContentType.md +25 -65
  486. package/node_modules/undici/docs/docs/api/Cookies.md +47 -125
  487. package/node_modules/undici/docs/docs/api/Debug.md +31 -47
  488. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +97 -409
  489. package/node_modules/undici/docs/docs/api/DispatchInterceptor.md +60 -0
  490. package/node_modules/undici/docs/docs/api/Dispatcher.md +1011 -500
  491. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +96 -105
  492. package/node_modules/undici/docs/docs/api/Errors.md +28 -528
  493. package/node_modules/undici/docs/docs/api/EventSource.md +13 -326
  494. package/node_modules/undici/docs/docs/api/Fetch.md +24 -693
  495. package/node_modules/undici/docs/docs/api/MockAgent.md +264 -346
  496. package/node_modules/undici/docs/docs/api/MockClient.md +31 -153
  497. package/node_modules/undici/docs/docs/api/MockErrors.md +5 -56
  498. package/node_modules/undici/docs/docs/api/MockPool.md +253 -324
  499. package/node_modules/undici/docs/docs/api/Pool.md +41 -235
  500. package/node_modules/undici/docs/docs/api/PoolStats.md +13 -119
  501. package/node_modules/undici/docs/docs/api/ProxyAgent.md +81 -198
  502. package/node_modules/undici/docs/docs/api/RedirectHandler.md +58 -238
  503. package/node_modules/undici/docs/docs/api/RetryAgent.md +28 -119
  504. package/node_modules/undici/docs/docs/api/RetryHandler.md +78 -161
  505. package/node_modules/undici/docs/docs/api/Util.md +11 -68
  506. package/node_modules/undici/docs/docs/api/WebSocket.md +24 -509
  507. package/node_modules/undici/docs/docs/api/api-lifecycle.md +33 -101
  508. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +0 -2
  509. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +2 -58
  510. package/node_modules/undici/docs/docs/best-practices/proxy.md +1 -3
  511. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +0 -45
  512. package/node_modules/undici/index-fetch.js +4 -34
  513. package/node_modules/undici/index.d.ts +1 -1
  514. package/node_modules/undici/index.js +20 -87
  515. package/node_modules/undici/lib/api/abort-signal.js +0 -2
  516. package/node_modules/undici/lib/api/api-connect.js +11 -15
  517. package/node_modules/undici/lib/api/api-pipeline.js +19 -33
  518. package/node_modules/undici/lib/api/api-request.js +59 -89
  519. package/node_modules/undici/lib/api/api-stream.js +64 -114
  520. package/node_modules/undici/lib/api/api-upgrade.js +13 -26
  521. package/node_modules/undici/lib/api/readable.js +87 -317
  522. package/node_modules/undici/lib/api/util.js +93 -0
  523. package/node_modules/undici/lib/core/connect.js +125 -77
  524. package/node_modules/undici/lib/core/constants.js +9 -11
  525. package/node_modules/undici/lib/core/diagnostics.js +129 -154
  526. package/node_modules/undici/lib/core/errors.js +50 -122
  527. package/node_modules/undici/lib/core/request.js +87 -172
  528. package/node_modules/undici/lib/core/symbols.js +2 -14
  529. package/node_modules/undici/lib/core/tree.js +2 -10
  530. package/node_modules/undici/lib/core/util.js +190 -481
  531. package/node_modules/undici/lib/dispatcher/agent.js +35 -83
  532. package/node_modules/undici/lib/dispatcher/balanced-pool.js +38 -46
  533. package/node_modules/undici/lib/dispatcher/client-h1.js +199 -492
  534. package/node_modules/undici/lib/dispatcher/client-h2.js +380 -1409
  535. package/node_modules/undici/lib/dispatcher/client.js +130 -253
  536. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +52 -50
  537. package/node_modules/undici/lib/dispatcher/dispatcher.js +24 -17
  538. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +45 -75
  539. package/node_modules/undici/lib/dispatcher/fixed-queue.js +50 -68
  540. package/node_modules/undici/lib/dispatcher/pool-base.js +54 -153
  541. package/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
  542. package/node_modules/undici/lib/dispatcher/pool.js +16 -135
  543. package/node_modules/undici/lib/dispatcher/proxy-agent.js +41 -175
  544. package/node_modules/undici/lib/dispatcher/retry-agent.js +0 -3
  545. package/node_modules/undici/lib/global.js +9 -59
  546. package/node_modules/undici/lib/handler/decorator-handler.js +15 -43
  547. package/node_modules/undici/lib/handler/redirect-handler.js +116 -127
  548. package/node_modules/undici/lib/handler/retry-handler.js +182 -398
  549. package/node_modules/undici/lib/interceptor/dns.js +47 -254
  550. package/node_modules/undici/lib/interceptor/dump.js +56 -32
  551. package/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
  552. package/node_modules/undici/lib/interceptor/redirect.js +14 -11
  553. package/node_modules/undici/lib/interceptor/response-error.js +22 -31
  554. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  555. package/node_modules/undici/lib/llhttp/constants.js +193 -446
  556. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -11
  557. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -11
  558. package/node_modules/undici/lib/llhttp/utils.js +12 -9
  559. package/node_modules/undici/lib/mock/mock-agent.js +22 -106
  560. package/node_modules/undici/lib/mock/mock-client.js +4 -13
  561. package/node_modules/undici/lib/mock/mock-errors.js +2 -3
  562. package/node_modules/undici/lib/mock/mock-interceptor.js +13 -33
  563. package/node_modules/undici/lib/mock/mock-pool.js +4 -13
  564. package/node_modules/undici/lib/mock/mock-symbols.js +1 -10
  565. package/node_modules/undici/lib/mock/mock-utils.js +51 -404
  566. package/node_modules/undici/lib/mock/pluralizer.js +29 -0
  567. package/node_modules/undici/lib/util/timers.js +9 -11
  568. package/node_modules/undici/lib/web/cache/cache.js +51 -63
  569. package/node_modules/undici/lib/web/cache/cachestorage.js +7 -13
  570. package/node_modules/undici/lib/web/cache/symbols.js +5 -0
  571. package/node_modules/undici/lib/web/cookies/index.js +18 -45
  572. package/node_modules/undici/lib/web/cookies/parse.js +149 -157
  573. package/node_modules/undici/lib/web/cookies/util.js +2 -4
  574. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +9 -37
  575. package/node_modules/undici/lib/web/eventsource/eventsource.js +64 -108
  576. package/node_modules/undici/lib/web/eventsource/util.js +5 -28
  577. package/node_modules/undici/lib/web/fetch/body.js +148 -173
  578. package/node_modules/undici/lib/web/fetch/constants.js +6 -13
  579. package/node_modules/undici/lib/web/fetch/data-url.js +167 -19
  580. package/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
  581. package/node_modules/undici/lib/web/fetch/file.js +126 -0
  582. package/node_modules/undici/lib/web/fetch/formdata-parser.js +117 -229
  583. package/node_modules/undici/lib/web/fetch/formdata.js +65 -85
  584. package/node_modules/undici/lib/web/fetch/headers.js +108 -143
  585. package/node_modules/undici/lib/web/fetch/index.js +446 -627
  586. package/node_modules/undici/lib/web/fetch/request.js +115 -217
  587. package/node_modules/undici/lib/web/fetch/response.js +82 -110
  588. package/node_modules/undici/lib/web/fetch/symbols.js +9 -0
  589. package/node_modules/undici/lib/web/fetch/util.js +393 -291
  590. package/node_modules/undici/lib/web/fetch/webidl.js +695 -0
  591. package/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
  592. package/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
  593. package/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
  594. package/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
  595. package/node_modules/undici/lib/web/fileapi/util.js +391 -0
  596. package/node_modules/undici/lib/web/websocket/connection.js +160 -139
  597. package/node_modules/undici/lib/web/websocket/constants.js +10 -70
  598. package/node_modules/undici/lib/web/websocket/events.js +30 -49
  599. package/node_modules/undici/lib/web/websocket/frame.js +20 -51
  600. package/node_modules/undici/lib/web/websocket/receiver.js +87 -83
  601. package/node_modules/undici/lib/web/websocket/sender.js +13 -18
  602. package/node_modules/undici/lib/web/websocket/symbols.js +12 -0
  603. package/node_modules/undici/lib/web/websocket/util.js +90 -115
  604. package/node_modules/undici/lib/web/websocket/websocket.js +171 -359
  605. package/node_modules/undici/package.json +57 -49
  606. package/node_modules/undici/scripts/strip-comments.js +1 -3
  607. package/node_modules/undici/types/agent.d.ts +13 -12
  608. package/node_modules/undici/types/api.d.ts +26 -26
  609. package/node_modules/undici/types/balanced-pool.d.ts +12 -13
  610. package/node_modules/undici/types/client.d.ts +39 -98
  611. package/node_modules/undici/types/connector.d.ts +2 -5
  612. package/node_modules/undici/types/cookies.d.ts +1 -3
  613. package/node_modules/undici/types/diagnostics-channel.d.ts +11 -20
  614. package/node_modules/undici/types/dispatcher.d.ts +139 -136
  615. package/node_modules/undici/types/env-http-proxy-agent.d.ts +3 -4
  616. package/node_modules/undici/types/errors.d.ts +54 -86
  617. package/node_modules/undici/types/eventsource.d.ts +4 -9
  618. package/node_modules/undici/types/fetch.d.ts +25 -51
  619. package/node_modules/undici/types/file.d.ts +39 -0
  620. package/node_modules/undici/types/filereader.d.ts +54 -0
  621. package/node_modules/undici/types/formdata.d.ts +7 -7
  622. package/node_modules/undici/types/global-dispatcher.d.ts +4 -4
  623. package/node_modules/undici/types/global-origin.d.ts +5 -5
  624. package/node_modules/undici/types/handlers.d.ts +9 -10
  625. package/node_modules/undici/types/header.d.ts +1 -162
  626. package/node_modules/undici/types/index.d.ts +47 -69
  627. package/node_modules/undici/types/interceptors.d.ts +12 -62
  628. package/node_modules/undici/types/mock-agent.d.ts +27 -46
  629. package/node_modules/undici/types/mock-client.d.ts +4 -6
  630. package/node_modules/undici/types/mock-errors.d.ts +3 -3
  631. package/node_modules/undici/types/mock-interceptor.d.ts +21 -26
  632. package/node_modules/undici/types/mock-pool.d.ts +4 -6
  633. package/node_modules/undici/types/patch.d.ts +4 -0
  634. package/node_modules/undici/types/pool-stats.d.ts +8 -8
  635. package/node_modules/undici/types/pool.d.ts +14 -14
  636. package/node_modules/undici/types/proxy-agent.d.ts +6 -13
  637. package/node_modules/undici/types/readable.d.ts +16 -19
  638. package/node_modules/undici/types/retry-agent.d.ts +1 -1
  639. package/node_modules/undici/types/retry-handler.d.ts +9 -18
  640. package/node_modules/undici/types/util.d.ts +3 -3
  641. package/node_modules/undici/types/webidl.d.ts +32 -156
  642. package/node_modules/undici/types/websocket.d.ts +10 -48
  643. package/node_modules/validate-npm-package-name/package.json +4 -4
  644. package/node_modules/which/package.json +4 -4
  645. package/node_modules/write-file-atomic/package.json +4 -4
  646. package/package.json +56 -60
  647. package/node_modules/@npmcli/arborist/lib/npm-extension.js +0 -237
  648. package/node_modules/@npmcli/arborist/lib/package-extensions.js +0 -236
  649. package/node_modules/@npmcli/arborist/lib/patch.js +0 -111
  650. package/node_modules/@npmcli/arborist/lib/patched-dependencies.js +0 -168
  651. package/node_modules/cacache/lib/util/cache-dir.js +0 -29
  652. package/node_modules/diff/CONTRIBUTING.md +0 -28
  653. package/node_modules/diff/LICENSE +0 -29
  654. package/node_modules/diff/README.md +0 -388
  655. package/node_modules/diff/dist/diff.js +0 -1782
  656. package/node_modules/diff/dist/diff.min.js +0 -1
  657. package/node_modules/diff/eslint.config.mjs +0 -182
  658. package/node_modules/diff/libcjs/convert/dmp.d.ts +0 -8
  659. package/node_modules/diff/libcjs/convert/dmp.d.ts.map +0 -1
  660. package/node_modules/diff/libcjs/convert/dmp.js +0 -24
  661. package/node_modules/diff/libcjs/convert/xml.d.ts +0 -6
  662. package/node_modules/diff/libcjs/convert/xml.d.ts.map +0 -1
  663. package/node_modules/diff/libcjs/convert/xml.js +0 -34
  664. package/node_modules/diff/libcjs/diff/array.d.ts +0 -19
  665. package/node_modules/diff/libcjs/diff/array.d.ts.map +0 -1
  666. package/node_modules/diff/libcjs/diff/array.js +0 -40
  667. package/node_modules/diff/libcjs/diff/base.d.ts +0 -20
  668. package/node_modules/diff/libcjs/diff/base.d.ts.map +0 -1
  669. package/node_modules/diff/libcjs/diff/base.js +0 -265
  670. package/node_modules/diff/libcjs/diff/character.d.ts +0 -19
  671. package/node_modules/diff/libcjs/diff/character.d.ts.map +0 -1
  672. package/node_modules/diff/libcjs/diff/character.js +0 -31
  673. package/node_modules/diff/libcjs/diff/css.d.ts +0 -18
  674. package/node_modules/diff/libcjs/diff/css.d.ts.map +0 -1
  675. package/node_modules/diff/libcjs/diff/css.js +0 -34
  676. package/node_modules/diff/libcjs/diff/json.d.ts +0 -24
  677. package/node_modules/diff/libcjs/diff/json.d.ts.map +0 -1
  678. package/node_modules/diff/libcjs/diff/json.js +0 -105
  679. package/node_modules/diff/libcjs/diff/line.d.ts +0 -24
  680. package/node_modules/diff/libcjs/diff/line.d.ts.map +0 -1
  681. package/node_modules/diff/libcjs/diff/line.js +0 -89
  682. package/node_modules/diff/libcjs/diff/sentence.d.ts +0 -21
  683. package/node_modules/diff/libcjs/diff/sentence.d.ts.map +0 -1
  684. package/node_modules/diff/libcjs/diff/sentence.js +0 -67
  685. package/node_modules/diff/libcjs/diff/word.d.ts +0 -35
  686. package/node_modules/diff/libcjs/diff/word.d.ts.map +0 -1
  687. package/node_modules/diff/libcjs/diff/word.js +0 -312
  688. package/node_modules/diff/libcjs/index.d.ts +0 -20
  689. package/node_modules/diff/libcjs/index.d.ts.map +0 -1
  690. package/node_modules/diff/libcjs/index.js +0 -64
  691. package/node_modules/diff/libcjs/package.json +0 -1
  692. package/node_modules/diff/libcjs/patch/apply.d.ts +0 -62
  693. package/node_modules/diff/libcjs/patch/apply.d.ts.map +0 -1
  694. package/node_modules/diff/libcjs/patch/apply.js +0 -267
  695. package/node_modules/diff/libcjs/patch/create.d.ts +0 -122
  696. package/node_modules/diff/libcjs/patch/create.d.ts.map +0 -1
  697. package/node_modules/diff/libcjs/patch/create.js +0 -251
  698. package/node_modules/diff/libcjs/patch/line-endings.d.ts +0 -17
  699. package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +0 -1
  700. package/node_modules/diff/libcjs/patch/line-endings.js +0 -61
  701. package/node_modules/diff/libcjs/patch/parse.d.ts +0 -8
  702. package/node_modules/diff/libcjs/patch/parse.d.ts.map +0 -1
  703. package/node_modules/diff/libcjs/patch/parse.js +0 -150
  704. package/node_modules/diff/libcjs/patch/reverse.d.ts +0 -9
  705. package/node_modules/diff/libcjs/patch/reverse.d.ts.map +0 -1
  706. package/node_modules/diff/libcjs/patch/reverse.js +0 -37
  707. package/node_modules/diff/libcjs/types.d.ts +0 -213
  708. package/node_modules/diff/libcjs/types.d.ts.map +0 -1
  709. package/node_modules/diff/libcjs/types.js +0 -2
  710. package/node_modules/diff/libcjs/util/array.d.ts +0 -3
  711. package/node_modules/diff/libcjs/util/array.d.ts.map +0 -1
  712. package/node_modules/diff/libcjs/util/array.js +0 -21
  713. package/node_modules/diff/libcjs/util/distance-iterator.d.ts +0 -2
  714. package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +0 -1
  715. package/node_modules/diff/libcjs/util/distance-iterator.js +0 -40
  716. package/node_modules/diff/libcjs/util/params.d.ts +0 -4
  717. package/node_modules/diff/libcjs/util/params.d.ts.map +0 -1
  718. package/node_modules/diff/libcjs/util/params.js +0 -17
  719. package/node_modules/diff/libcjs/util/string.d.ts +0 -30
  720. package/node_modules/diff/libcjs/util/string.d.ts.map +0 -1
  721. package/node_modules/diff/libcjs/util/string.js +0 -200
  722. package/node_modules/diff/libesm/convert/dmp.d.ts +0 -8
  723. package/node_modules/diff/libesm/convert/dmp.d.ts.map +0 -1
  724. package/node_modules/diff/libesm/convert/dmp.js +0 -21
  725. package/node_modules/diff/libesm/convert/xml.d.ts +0 -6
  726. package/node_modules/diff/libesm/convert/xml.d.ts.map +0 -1
  727. package/node_modules/diff/libesm/convert/xml.js +0 -31
  728. package/node_modules/diff/libesm/diff/array.d.ts +0 -19
  729. package/node_modules/diff/libesm/diff/array.d.ts.map +0 -1
  730. package/node_modules/diff/libesm/diff/array.js +0 -16
  731. package/node_modules/diff/libesm/diff/base.d.ts +0 -20
  732. package/node_modules/diff/libesm/diff/base.d.ts.map +0 -1
  733. package/node_modules/diff/libesm/diff/base.js +0 -253
  734. package/node_modules/diff/libesm/diff/character.d.ts +0 -19
  735. package/node_modules/diff/libesm/diff/character.d.ts.map +0 -1
  736. package/node_modules/diff/libesm/diff/character.js +0 -7
  737. package/node_modules/diff/libesm/diff/css.d.ts +0 -18
  738. package/node_modules/diff/libesm/diff/css.d.ts.map +0 -1
  739. package/node_modules/diff/libesm/diff/css.js +0 -10
  740. package/node_modules/diff/libesm/diff/json.d.ts +0 -24
  741. package/node_modules/diff/libesm/diff/json.d.ts.map +0 -1
  742. package/node_modules/diff/libesm/diff/json.js +0 -78
  743. package/node_modules/diff/libesm/diff/line.d.ts +0 -24
  744. package/node_modules/diff/libesm/diff/line.d.ts.map +0 -1
  745. package/node_modules/diff/libesm/diff/line.js +0 -65
  746. package/node_modules/diff/libesm/diff/sentence.d.ts +0 -21
  747. package/node_modules/diff/libesm/diff/sentence.d.ts.map +0 -1
  748. package/node_modules/diff/libesm/diff/sentence.js +0 -43
  749. package/node_modules/diff/libesm/diff/word.d.ts +0 -35
  750. package/node_modules/diff/libesm/diff/word.d.ts.map +0 -1
  751. package/node_modules/diff/libesm/diff/word.js +0 -281
  752. package/node_modules/diff/libesm/index.d.ts +0 -20
  753. package/node_modules/diff/libesm/index.d.ts.map +0 -1
  754. package/node_modules/diff/libesm/index.js +0 -30
  755. package/node_modules/diff/libesm/package.json +0 -1
  756. package/node_modules/diff/libesm/patch/apply.d.ts +0 -62
  757. package/node_modules/diff/libesm/patch/apply.d.ts.map +0 -1
  758. package/node_modules/diff/libesm/patch/apply.js +0 -257
  759. package/node_modules/diff/libesm/patch/create.d.ts +0 -122
  760. package/node_modules/diff/libesm/patch/create.d.ts.map +0 -1
  761. package/node_modules/diff/libesm/patch/create.js +0 -228
  762. package/node_modules/diff/libesm/patch/line-endings.d.ts +0 -17
  763. package/node_modules/diff/libesm/patch/line-endings.d.ts.map +0 -1
  764. package/node_modules/diff/libesm/patch/line-endings.js +0 -44
  765. package/node_modules/diff/libesm/patch/parse.d.ts +0 -8
  766. package/node_modules/diff/libesm/patch/parse.d.ts.map +0 -1
  767. package/node_modules/diff/libesm/patch/parse.js +0 -147
  768. package/node_modules/diff/libesm/patch/reverse.d.ts +0 -9
  769. package/node_modules/diff/libesm/patch/reverse.d.ts.map +0 -1
  770. package/node_modules/diff/libesm/patch/reverse.js +0 -23
  771. package/node_modules/diff/libesm/types.d.ts +0 -213
  772. package/node_modules/diff/libesm/types.d.ts.map +0 -1
  773. package/node_modules/diff/libesm/types.js +0 -1
  774. package/node_modules/diff/libesm/util/array.d.ts +0 -3
  775. package/node_modules/diff/libesm/util/array.d.ts.map +0 -1
  776. package/node_modules/diff/libesm/util/array.js +0 -17
  777. package/node_modules/diff/libesm/util/distance-iterator.d.ts +0 -2
  778. package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +0 -1
  779. package/node_modules/diff/libesm/util/distance-iterator.js +0 -37
  780. package/node_modules/diff/libesm/util/params.d.ts +0 -4
  781. package/node_modules/diff/libesm/util/params.d.ts.map +0 -1
  782. package/node_modules/diff/libesm/util/params.js +0 -14
  783. package/node_modules/diff/libesm/util/string.d.ts +0 -30
  784. package/node_modules/diff/libesm/util/string.d.ts.map +0 -1
  785. package/node_modules/diff/libesm/util/string.js +0 -184
  786. package/node_modules/diff/package.json +0 -130
  787. package/node_modules/diff/release-notes.md +0 -432
  788. package/node_modules/node-gyp/commitlint.config.mjs +0 -3
  789. package/node_modules/node-gyp/gyp/commitlint.config.js +0 -6
  790. package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake_test.py +0 -105
  791. package/node_modules/node-gyp/zizmor.yml +0 -5
  792. package/node_modules/proxy-agent-negotiate/dist/index.d.ts +0 -14
  793. package/node_modules/proxy-agent-negotiate/dist/index.d.ts.map +0 -1
  794. package/node_modules/proxy-agent-negotiate/dist/index.js +0 -35
  795. package/node_modules/proxy-agent-negotiate/dist/index.js.map +0 -1
  796. package/node_modules/proxy-agent-negotiate/package.json +0 -47
  797. package/node_modules/undici/docs/docs/api/CacheStore.md +0 -360
  798. package/node_modules/undici/docs/docs/api/ClientStats.md +0 -93
  799. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +0 -121
  800. package/node_modules/undici/docs/docs/api/H2CClient.md +0 -385
  801. package/node_modules/undici/docs/docs/api/Interceptors.md +0 -419
  802. package/node_modules/undici/docs/docs/api/MockCallHistory.md +0 -371
  803. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +0 -206
  804. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +0 -239
  805. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +0 -361
  806. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +0 -256
  807. package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +0 -233
  808. package/node_modules/undici/docs/docs/getting-started.md +0 -281
  809. package/node_modules/undici/docs/docs/site.json +0 -125
  810. package/node_modules/undici/docs/docs/type-map.json +0 -79
  811. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +0 -110
  812. package/node_modules/undici/types/dispatcher1-wrapper.d.ts +0 -7
  813. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-client.js +0 -0
  814. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-utils.js +0 -0
  815. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/encoding/index.js +0 -0
  816. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/constants.d.ts +0 -0
  817. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/utils.d.ts +0 -0
  818. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-utils.js +0 -0
  819. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/date.js +0 -0
  820. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/stats.js +0 -0
  821. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/Readme.md +0 -0
  822. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/subresource-integrity.js +0 -0
  823. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/cache-interceptor.d.ts +0 -0
  824. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/client-stats.d.ts +0 -0
  825. /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/mock-call-history.d.ts +0 -0
  826. /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