pixivflow 2.16.0 → 2.16.1

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 (788) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/version.js +1 -1
  3. package/dist/webui/package.json +1 -1
  4. package/node_modules/@redtidev/pixiv-client/LICENSE +21 -0
  5. package/node_modules/@redtidev/pixiv-client/README.md +103 -0
  6. package/node_modules/@redtidev/pixiv-client/dist/app-api/exports.d.ts +6 -0
  7. package/node_modules/@redtidev/pixiv-client/dist/app-api/exports.d.ts.map +1 -0
  8. package/node_modules/@redtidev/pixiv-client/dist/app-api/exports.js +14 -0
  9. package/node_modules/@redtidev/pixiv-client/dist/app-api/exports.js.map +1 -0
  10. package/node_modules/@redtidev/pixiv-client/dist/app-api/illustrations.d.ts +30 -0
  11. package/node_modules/@redtidev/pixiv-client/dist/app-api/illustrations.d.ts.map +1 -0
  12. package/node_modules/@redtidev/pixiv-client/dist/app-api/illustrations.js +137 -0
  13. package/node_modules/@redtidev/pixiv-client/dist/app-api/illustrations.js.map +1 -0
  14. package/node_modules/@redtidev/pixiv-client/dist/app-api/media.d.ts +16 -0
  15. package/node_modules/@redtidev/pixiv-client/dist/app-api/media.d.ts.map +1 -0
  16. package/node_modules/@redtidev/pixiv-client/dist/app-api/media.js +25 -0
  17. package/node_modules/@redtidev/pixiv-client/dist/app-api/media.js.map +1 -0
  18. package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.d.ts +43 -0
  19. package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.d.ts.map +1 -0
  20. package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.js +250 -0
  21. package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.js.map +1 -0
  22. package/node_modules/@redtidev/pixiv-client/dist/app-api/options.d.ts +42 -0
  23. package/node_modules/@redtidev/pixiv-client/dist/app-api/options.d.ts.map +1 -0
  24. package/node_modules/@redtidev/pixiv-client/dist/app-api/options.js +7 -0
  25. package/node_modules/@redtidev/pixiv-client/dist/app-api/options.js.map +1 -0
  26. package/node_modules/@redtidev/pixiv-client/dist/app-api/tags.d.ts +9 -0
  27. package/node_modules/@redtidev/pixiv-client/dist/app-api/tags.d.ts.map +1 -0
  28. package/node_modules/@redtidev/pixiv-client/dist/app-api/tags.js +22 -0
  29. package/node_modules/@redtidev/pixiv-client/dist/app-api/tags.js.map +1 -0
  30. package/node_modules/@redtidev/pixiv-client/dist/app-api/users.d.ts +17 -0
  31. package/node_modules/@redtidev/pixiv-client/dist/app-api/users.d.ts.map +1 -0
  32. package/node_modules/@redtidev/pixiv-client/dist/app-api/users.js +23 -0
  33. package/node_modules/@redtidev/pixiv-client/dist/app-api/users.js.map +1 -0
  34. package/node_modules/@redtidev/pixiv-client/dist/auth/types.d.ts +25 -0
  35. package/node_modules/@redtidev/pixiv-client/dist/auth/types.d.ts.map +1 -0
  36. package/node_modules/@redtidev/pixiv-client/dist/auth/types.js +24 -0
  37. package/node_modules/@redtidev/pixiv-client/dist/auth/types.js.map +1 -0
  38. package/node_modules/@redtidev/pixiv-client/dist/client.d.ts +42 -0
  39. package/node_modules/@redtidev/pixiv-client/dist/client.d.ts.map +1 -0
  40. package/node_modules/@redtidev/pixiv-client/dist/client.js +86 -0
  41. package/node_modules/@redtidev/pixiv-client/dist/client.js.map +1 -0
  42. package/node_modules/@redtidev/pixiv-client/dist/errors/errors.d.ts +117 -0
  43. package/node_modules/@redtidev/pixiv-client/dist/errors/errors.d.ts.map +1 -0
  44. package/node_modules/@redtidev/pixiv-client/dist/errors/errors.js +169 -0
  45. package/node_modules/@redtidev/pixiv-client/dist/errors/errors.js.map +1 -0
  46. package/node_modules/@redtidev/pixiv-client/dist/index.d.ts +25 -0
  47. package/node_modules/@redtidev/pixiv-client/dist/index.d.ts.map +1 -0
  48. package/node_modules/@redtidev/pixiv-client/dist/index.js +50 -0
  49. package/node_modules/@redtidev/pixiv-client/dist/index.js.map +1 -0
  50. package/node_modules/@redtidev/pixiv-client/dist/logger.d.ts +13 -0
  51. package/node_modules/@redtidev/pixiv-client/dist/logger.d.ts.map +1 -0
  52. package/node_modules/@redtidev/pixiv-client/dist/logger.js +10 -0
  53. package/node_modules/@redtidev/pixiv-client/dist/logger.js.map +1 -0
  54. package/node_modules/@redtidev/pixiv-client/dist/models/index.d.ts +112 -0
  55. package/node_modules/@redtidev/pixiv-client/dist/models/index.d.ts.map +1 -0
  56. package/node_modules/@redtidev/pixiv-client/dist/models/index.js +8 -0
  57. package/node_modules/@redtidev/pixiv-client/dist/models/index.js.map +1 -0
  58. package/node_modules/@redtidev/pixiv-client/dist/pagination.d.ts +22 -0
  59. package/node_modules/@redtidev/pixiv-client/dist/pagination.d.ts.map +1 -0
  60. package/node_modules/@redtidev/pixiv-client/dist/pagination.js +41 -0
  61. package/node_modules/@redtidev/pixiv-client/dist/pagination.js.map +1 -0
  62. package/node_modules/@redtidev/pixiv-client/dist/rate-limit/RateLimitGate.d.ts +95 -0
  63. package/node_modules/@redtidev/pixiv-client/dist/rate-limit/RateLimitGate.d.ts.map +1 -0
  64. package/node_modules/@redtidev/pixiv-client/dist/rate-limit/RateLimitGate.js +344 -0
  65. package/node_modules/@redtidev/pixiv-client/dist/rate-limit/RateLimitGate.js.map +1 -0
  66. package/node_modules/@redtidev/pixiv-client/dist/transport/transport.d.ts +65 -0
  67. package/node_modules/@redtidev/pixiv-client/dist/transport/transport.d.ts.map +1 -0
  68. package/node_modules/@redtidev/pixiv-client/dist/transport/transport.js +410 -0
  69. package/node_modules/@redtidev/pixiv-client/dist/transport/transport.js.map +1 -0
  70. package/node_modules/@redtidev/pixiv-client/dist/types.d.ts +186 -0
  71. package/node_modules/@redtidev/pixiv-client/dist/types.d.ts.map +1 -0
  72. package/node_modules/@redtidev/pixiv-client/dist/types.js +3 -0
  73. package/node_modules/@redtidev/pixiv-client/dist/types.js.map +1 -0
  74. package/node_modules/@redtidev/pixiv-client/dist/web-api/types.d.ts +19 -0
  75. package/node_modules/@redtidev/pixiv-client/dist/web-api/types.d.ts.map +1 -0
  76. package/node_modules/@redtidev/pixiv-client/dist/web-api/types.js +3 -0
  77. package/node_modules/@redtidev/pixiv-client/dist/web-api/types.js.map +1 -0
  78. package/node_modules/@redtidev/pixiv-client/package.json +55 -0
  79. package/node_modules/@redtidev/pixiv-client/src/__tests__/independence.test.ts +75 -0
  80. package/node_modules/@redtidev/pixiv-client/src/__tests__/integration.test.ts +268 -0
  81. package/node_modules/@redtidev/pixiv-client/src/app-api/__tests__/services.test.ts +199 -0
  82. package/node_modules/@redtidev/pixiv-client/src/app-api/exports.ts +5 -0
  83. package/node_modules/@redtidev/pixiv-client/src/app-api/illustrations.ts +144 -0
  84. package/node_modules/@redtidev/pixiv-client/src/app-api/media.ts +20 -0
  85. package/node_modules/@redtidev/pixiv-client/src/app-api/novels.ts +269 -0
  86. package/node_modules/@redtidev/pixiv-client/src/app-api/options.ts +73 -0
  87. package/node_modules/@redtidev/pixiv-client/src/app-api/tags.ts +21 -0
  88. package/node_modules/@redtidev/pixiv-client/src/app-api/users.ts +22 -0
  89. package/node_modules/@redtidev/pixiv-client/src/auth/types.ts +33 -0
  90. package/node_modules/@redtidev/pixiv-client/src/client.ts +105 -0
  91. package/node_modules/@redtidev/pixiv-client/src/errors/errors.ts +180 -0
  92. package/node_modules/@redtidev/pixiv-client/src/index.ts +91 -0
  93. package/node_modules/@redtidev/pixiv-client/src/logger.ts +18 -0
  94. package/node_modules/@redtidev/pixiv-client/src/models/index.ts +117 -0
  95. package/node_modules/@redtidev/pixiv-client/src/pagination.ts +46 -0
  96. package/node_modules/@redtidev/pixiv-client/src/rate-limit/RateLimitGate.ts +365 -0
  97. package/node_modules/@redtidev/pixiv-client/src/rate-limit/__tests__/RateLimitGate.test.ts +258 -0
  98. package/node_modules/@redtidev/pixiv-client/src/transport/__tests__/transport.test.ts +282 -0
  99. package/node_modules/@redtidev/pixiv-client/src/transport/transport.ts +500 -0
  100. package/node_modules/@redtidev/pixiv-client/src/types.ts +168 -0
  101. package/node_modules/@redtidev/pixiv-client/src/web-api/types.ts +19 -0
  102. package/node_modules/agent-base/LICENSE +22 -0
  103. package/node_modules/agent-base/README.md +69 -0
  104. package/node_modules/agent-base/dist/helpers.d.ts +15 -0
  105. package/node_modules/agent-base/dist/helpers.d.ts.map +1 -0
  106. package/node_modules/agent-base/dist/helpers.js +66 -0
  107. package/node_modules/agent-base/dist/helpers.js.map +1 -0
  108. package/node_modules/agent-base/dist/index.d.ts +41 -0
  109. package/node_modules/agent-base/dist/index.d.ts.map +1 -0
  110. package/node_modules/agent-base/dist/index.js +178 -0
  111. package/node_modules/agent-base/dist/index.js.map +1 -0
  112. package/node_modules/agent-base/package.json +46 -0
  113. package/node_modules/asynckit/LICENSE +21 -0
  114. package/node_modules/asynckit/README.md +233 -0
  115. package/node_modules/asynckit/bench.js +76 -0
  116. package/node_modules/asynckit/index.js +6 -0
  117. package/node_modules/asynckit/lib/abort.js +29 -0
  118. package/node_modules/asynckit/lib/async.js +34 -0
  119. package/node_modules/asynckit/lib/defer.js +26 -0
  120. package/node_modules/asynckit/lib/iterate.js +75 -0
  121. package/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  122. package/node_modules/asynckit/lib/readable_parallel.js +25 -0
  123. package/node_modules/asynckit/lib/readable_serial.js +25 -0
  124. package/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  125. package/node_modules/asynckit/lib/state.js +37 -0
  126. package/node_modules/asynckit/lib/streamify.js +141 -0
  127. package/node_modules/asynckit/lib/terminator.js +29 -0
  128. package/node_modules/asynckit/package.json +63 -0
  129. package/node_modules/asynckit/parallel.js +43 -0
  130. package/node_modules/asynckit/serial.js +17 -0
  131. package/node_modules/asynckit/serialOrdered.js +75 -0
  132. package/node_modules/asynckit/stream.js +21 -0
  133. package/node_modules/axios/CHANGELOG.md +1934 -0
  134. package/node_modules/axios/LICENSE +7 -0
  135. package/node_modules/axios/MIGRATION_GUIDE.md +877 -0
  136. package/node_modules/axios/README.md +2851 -0
  137. package/node_modules/axios/dist/axios.js +5807 -0
  138. package/node_modules/axios/dist/axios.min.js +5 -0
  139. package/node_modules/axios/dist/axios.min.js.map +1 -0
  140. package/node_modules/axios/dist/browser/axios.cjs +5829 -0
  141. package/node_modules/axios/dist/esm/axios.js +5850 -0
  142. package/node_modules/axios/dist/esm/axios.min.js +3 -0
  143. package/node_modules/axios/dist/esm/axios.min.js.map +1 -0
  144. package/node_modules/axios/dist/node/axios.cjs +6808 -0
  145. package/node_modules/axios/index.d.cts +766 -0
  146. package/node_modules/axios/index.d.ts +787 -0
  147. package/node_modules/axios/index.js +45 -0
  148. package/node_modules/axios/lib/adapters/README.md +36 -0
  149. package/node_modules/axios/lib/adapters/adapters.js +132 -0
  150. package/node_modules/axios/lib/adapters/fetch.js +696 -0
  151. package/node_modules/axios/lib/adapters/http.js +1490 -0
  152. package/node_modules/axios/lib/adapters/xhr.js +277 -0
  153. package/node_modules/axios/lib/axios.js +89 -0
  154. package/node_modules/axios/lib/cancel/CancelToken.js +135 -0
  155. package/node_modules/axios/lib/cancel/CanceledError.js +22 -0
  156. package/node_modules/axios/lib/cancel/isCancel.js +5 -0
  157. package/node_modules/axios/lib/core/Axios.js +306 -0
  158. package/node_modules/axios/lib/core/AxiosError.js +219 -0
  159. package/node_modules/axios/lib/core/AxiosHeaders.js +474 -0
  160. package/node_modules/axios/lib/core/InterceptorManager.js +171 -0
  161. package/node_modules/axios/lib/core/README.md +8 -0
  162. package/node_modules/axios/lib/core/buildFullPath.js +76 -0
  163. package/node_modules/axios/lib/core/dispatchRequest.js +95 -0
  164. package/node_modules/axios/lib/core/mergeConfig.js +174 -0
  165. package/node_modules/axios/lib/core/methodList.js +17 -0
  166. package/node_modules/axios/lib/core/setFormDataHeaders.js +27 -0
  167. package/node_modules/axios/lib/core/settle.js +27 -0
  168. package/node_modules/axios/lib/core/transformData.js +28 -0
  169. package/node_modules/axios/lib/defaults/index.js +178 -0
  170. package/node_modules/axios/lib/defaults/transitional.js +10 -0
  171. package/node_modules/axios/lib/env/README.md +3 -0
  172. package/node_modules/axios/lib/env/classes/FormData.js +2 -0
  173. package/node_modules/axios/lib/env/data.js +1 -0
  174. package/node_modules/axios/lib/helpers/AxiosTransformStream.js +156 -0
  175. package/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +59 -0
  176. package/node_modules/axios/lib/helpers/Http2Sessions.js +121 -0
  177. package/node_modules/axios/lib/helpers/HttpStatusCode.js +88 -0
  178. package/node_modules/axios/lib/helpers/README.md +7 -0
  179. package/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +29 -0
  180. package/node_modules/axios/lib/helpers/bind.js +14 -0
  181. package/node_modules/axios/lib/helpers/buildURL.js +69 -0
  182. package/node_modules/axios/lib/helpers/callbackify.js +18 -0
  183. package/node_modules/axios/lib/helpers/combineURLs.js +23 -0
  184. package/node_modules/axios/lib/helpers/composeSignals.js +68 -0
  185. package/node_modules/axios/lib/helpers/cookies.js +64 -0
  186. package/node_modules/axios/lib/helpers/deprecatedMethod.js +31 -0
  187. package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +166 -0
  188. package/node_modules/axios/lib/helpers/formDataToJSON.js +125 -0
  189. package/node_modules/axios/lib/helpers/formDataToStream.js +119 -0
  190. package/node_modules/axios/lib/helpers/fromDataURI.js +69 -0
  191. package/node_modules/axios/lib/helpers/isAbsoluteURL.js +19 -0
  192. package/node_modules/axios/lib/helpers/isAxiosError.js +14 -0
  193. package/node_modules/axios/lib/helpers/isURLSameOrigin.js +16 -0
  194. package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
  195. package/node_modules/axios/lib/helpers/null.js +2 -0
  196. package/node_modules/axios/lib/helpers/parseHeaders.js +71 -0
  197. package/node_modules/axios/lib/helpers/parseProtocol.js +6 -0
  198. package/node_modules/axios/lib/helpers/progressEventReducer.js +54 -0
  199. package/node_modules/axios/lib/helpers/readBlob.js +15 -0
  200. package/node_modules/axios/lib/helpers/resolveConfig.js +107 -0
  201. package/node_modules/axios/lib/helpers/sanitizeHeaderValue.js +60 -0
  202. package/node_modules/axios/lib/helpers/shouldBypassProxy.js +505 -0
  203. package/node_modules/axios/lib/helpers/speedometer.js +55 -0
  204. package/node_modules/axios/lib/helpers/spread.js +28 -0
  205. package/node_modules/axios/lib/helpers/throttle.js +45 -0
  206. package/node_modules/axios/lib/helpers/toFormData.js +279 -0
  207. package/node_modules/axios/lib/helpers/toURLEncodedForm.js +19 -0
  208. package/node_modules/axios/lib/helpers/trackStream.js +89 -0
  209. package/node_modules/axios/lib/helpers/validator.js +112 -0
  210. package/node_modules/axios/lib/platform/browser/classes/Blob.js +3 -0
  211. package/node_modules/axios/lib/platform/browser/classes/FormData.js +3 -0
  212. package/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +4 -0
  213. package/node_modules/axios/lib/platform/browser/index.js +13 -0
  214. package/node_modules/axios/lib/platform/common/utils.js +52 -0
  215. package/node_modules/axios/lib/platform/index.js +7 -0
  216. package/node_modules/axios/lib/platform/node/classes/Buffer.js +11 -0
  217. package/node_modules/axios/lib/platform/node/classes/FormData.js +3 -0
  218. package/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +4 -0
  219. package/node_modules/axios/lib/platform/node/index.js +37 -0
  220. package/node_modules/axios/lib/utils.js +1150 -0
  221. package/node_modules/axios/node_modules/agent-base/README.md +145 -0
  222. package/node_modules/axios/node_modules/agent-base/dist/src/index.d.ts +78 -0
  223. package/node_modules/axios/node_modules/agent-base/dist/src/index.js +203 -0
  224. package/node_modules/axios/node_modules/agent-base/dist/src/index.js.map +1 -0
  225. package/node_modules/axios/node_modules/agent-base/dist/src/promisify.d.ts +4 -0
  226. package/node_modules/axios/node_modules/agent-base/dist/src/promisify.js +18 -0
  227. package/node_modules/axios/node_modules/agent-base/dist/src/promisify.js.map +1 -0
  228. package/node_modules/axios/node_modules/agent-base/package.json +64 -0
  229. package/node_modules/axios/node_modules/agent-base/src/index.ts +345 -0
  230. package/node_modules/axios/node_modules/agent-base/src/promisify.ts +33 -0
  231. package/node_modules/axios/node_modules/debug/LICENSE +20 -0
  232. package/node_modules/axios/node_modules/debug/README.md +481 -0
  233. package/node_modules/axios/node_modules/debug/package.json +64 -0
  234. package/node_modules/axios/node_modules/debug/src/browser.js +272 -0
  235. package/node_modules/axios/node_modules/debug/src/common.js +292 -0
  236. package/node_modules/axios/node_modules/debug/src/index.js +10 -0
  237. package/node_modules/axios/node_modules/debug/src/node.js +263 -0
  238. package/node_modules/axios/node_modules/https-proxy-agent/README.md +137 -0
  239. package/node_modules/axios/node_modules/https-proxy-agent/dist/agent.d.ts +30 -0
  240. package/node_modules/axios/node_modules/https-proxy-agent/dist/agent.js +177 -0
  241. package/node_modules/axios/node_modules/https-proxy-agent/dist/agent.js.map +1 -0
  242. package/node_modules/axios/node_modules/https-proxy-agent/dist/index.d.ts +23 -0
  243. package/node_modules/axios/node_modules/https-proxy-agent/dist/index.js +14 -0
  244. package/node_modules/axios/node_modules/https-proxy-agent/dist/index.js.map +1 -0
  245. package/node_modules/axios/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -0
  246. package/node_modules/axios/node_modules/https-proxy-agent/dist/parse-proxy-response.js +66 -0
  247. package/node_modules/axios/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
  248. package/node_modules/axios/node_modules/https-proxy-agent/package.json +56 -0
  249. package/node_modules/axios/node_modules/ms/index.js +162 -0
  250. package/node_modules/axios/node_modules/ms/license.md +21 -0
  251. package/node_modules/axios/node_modules/ms/package.json +38 -0
  252. package/node_modules/axios/node_modules/ms/readme.md +59 -0
  253. package/node_modules/axios/package.json +203 -0
  254. package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  255. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  256. package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  257. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  258. package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  259. package/node_modules/call-bind-apply-helpers/README.md +62 -0
  260. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  261. package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  262. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  263. package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  264. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  265. package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  266. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  267. package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  268. package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  269. package/node_modules/call-bind-apply-helpers/index.js +15 -0
  270. package/node_modules/call-bind-apply-helpers/package.json +85 -0
  271. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  272. package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  273. package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  274. package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  275. package/node_modules/combined-stream/License +19 -0
  276. package/node_modules/combined-stream/Readme.md +138 -0
  277. package/node_modules/combined-stream/lib/combined_stream.js +208 -0
  278. package/node_modules/combined-stream/package.json +25 -0
  279. package/node_modules/delayed-stream/.npmignore +1 -0
  280. package/node_modules/delayed-stream/License +19 -0
  281. package/node_modules/delayed-stream/Makefile +7 -0
  282. package/node_modules/delayed-stream/Readme.md +141 -0
  283. package/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  284. package/node_modules/delayed-stream/package.json +27 -0
  285. package/node_modules/dunder-proto/.eslintrc +5 -0
  286. package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  287. package/node_modules/dunder-proto/.nycrc +13 -0
  288. package/node_modules/dunder-proto/CHANGELOG.md +24 -0
  289. package/node_modules/dunder-proto/LICENSE +21 -0
  290. package/node_modules/dunder-proto/README.md +54 -0
  291. package/node_modules/dunder-proto/get.d.ts +5 -0
  292. package/node_modules/dunder-proto/get.js +30 -0
  293. package/node_modules/dunder-proto/package.json +76 -0
  294. package/node_modules/dunder-proto/set.d.ts +5 -0
  295. package/node_modules/dunder-proto/set.js +35 -0
  296. package/node_modules/dunder-proto/test/get.js +34 -0
  297. package/node_modules/dunder-proto/test/index.js +4 -0
  298. package/node_modules/dunder-proto/test/set.js +50 -0
  299. package/node_modules/dunder-proto/tsconfig.json +9 -0
  300. package/node_modules/es-define-property/.eslintrc +13 -0
  301. package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  302. package/node_modules/es-define-property/.nycrc +9 -0
  303. package/node_modules/es-define-property/CHANGELOG.md +29 -0
  304. package/node_modules/es-define-property/LICENSE +21 -0
  305. package/node_modules/es-define-property/README.md +49 -0
  306. package/node_modules/es-define-property/index.d.ts +3 -0
  307. package/node_modules/es-define-property/index.js +14 -0
  308. package/node_modules/es-define-property/package.json +81 -0
  309. package/node_modules/es-define-property/test/index.js +56 -0
  310. package/node_modules/es-define-property/tsconfig.json +10 -0
  311. package/node_modules/es-errors/.eslintrc +5 -0
  312. package/node_modules/es-errors/.github/FUNDING.yml +12 -0
  313. package/node_modules/es-errors/CHANGELOG.md +40 -0
  314. package/node_modules/es-errors/LICENSE +21 -0
  315. package/node_modules/es-errors/README.md +55 -0
  316. package/node_modules/es-errors/eval.d.ts +3 -0
  317. package/node_modules/es-errors/eval.js +4 -0
  318. package/node_modules/es-errors/index.d.ts +3 -0
  319. package/node_modules/es-errors/index.js +4 -0
  320. package/node_modules/es-errors/package.json +80 -0
  321. package/node_modules/es-errors/range.d.ts +3 -0
  322. package/node_modules/es-errors/range.js +4 -0
  323. package/node_modules/es-errors/ref.d.ts +3 -0
  324. package/node_modules/es-errors/ref.js +4 -0
  325. package/node_modules/es-errors/syntax.d.ts +3 -0
  326. package/node_modules/es-errors/syntax.js +4 -0
  327. package/node_modules/es-errors/test/index.js +19 -0
  328. package/node_modules/es-errors/tsconfig.json +49 -0
  329. package/node_modules/es-errors/type.d.ts +3 -0
  330. package/node_modules/es-errors/type.js +4 -0
  331. package/node_modules/es-errors/uri.d.ts +3 -0
  332. package/node_modules/es-errors/uri.js +4 -0
  333. package/node_modules/es-object-atoms/.eslintrc +16 -0
  334. package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  335. package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  336. package/node_modules/es-object-atoms/LICENSE +21 -0
  337. package/node_modules/es-object-atoms/README.md +63 -0
  338. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  339. package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  340. package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  341. package/node_modules/es-object-atoms/ToObject.js +10 -0
  342. package/node_modules/es-object-atoms/index.d.ts +3 -0
  343. package/node_modules/es-object-atoms/index.js +4 -0
  344. package/node_modules/es-object-atoms/isObject.d.ts +3 -0
  345. package/node_modules/es-object-atoms/isObject.js +6 -0
  346. package/node_modules/es-object-atoms/package.json +80 -0
  347. package/node_modules/es-object-atoms/test/index.js +38 -0
  348. package/node_modules/es-object-atoms/tsconfig.json +6 -0
  349. package/node_modules/es-set-tostringtag/.eslintrc +13 -0
  350. package/node_modules/es-set-tostringtag/.nycrc +9 -0
  351. package/node_modules/es-set-tostringtag/CHANGELOG.md +67 -0
  352. package/node_modules/es-set-tostringtag/LICENSE +21 -0
  353. package/node_modules/es-set-tostringtag/README.md +53 -0
  354. package/node_modules/es-set-tostringtag/index.d.ts +10 -0
  355. package/node_modules/es-set-tostringtag/index.js +35 -0
  356. package/node_modules/es-set-tostringtag/package.json +78 -0
  357. package/node_modules/es-set-tostringtag/test/index.js +85 -0
  358. package/node_modules/es-set-tostringtag/tsconfig.json +9 -0
  359. package/node_modules/follow-redirects/LICENSE +18 -0
  360. package/node_modules/follow-redirects/README.md +157 -0
  361. package/node_modules/follow-redirects/debug.js +15 -0
  362. package/node_modules/follow-redirects/http.js +1 -0
  363. package/node_modules/follow-redirects/https.js +1 -0
  364. package/node_modules/follow-redirects/index.js +709 -0
  365. package/node_modules/follow-redirects/package.json +58 -0
  366. package/node_modules/form-data/CHANGELOG.md +686 -0
  367. package/node_modules/form-data/License +19 -0
  368. package/node_modules/form-data/README.md +355 -0
  369. package/node_modules/form-data/index.d.ts +62 -0
  370. package/node_modules/form-data/lib/browser.js +4 -0
  371. package/node_modules/form-data/lib/form_data.js +506 -0
  372. package/node_modules/form-data/lib/populate.js +10 -0
  373. package/node_modules/form-data/package.json +82 -0
  374. package/node_modules/function-bind/.eslintrc +21 -0
  375. package/node_modules/function-bind/.github/FUNDING.yml +12 -0
  376. package/node_modules/function-bind/.github/SECURITY.md +3 -0
  377. package/node_modules/function-bind/.nycrc +13 -0
  378. package/node_modules/function-bind/CHANGELOG.md +136 -0
  379. package/node_modules/function-bind/LICENSE +20 -0
  380. package/node_modules/function-bind/README.md +46 -0
  381. package/node_modules/function-bind/implementation.js +84 -0
  382. package/node_modules/function-bind/index.js +5 -0
  383. package/node_modules/function-bind/package.json +87 -0
  384. package/node_modules/function-bind/test/.eslintrc +9 -0
  385. package/node_modules/function-bind/test/index.js +252 -0
  386. package/node_modules/get-intrinsic/.eslintrc +42 -0
  387. package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  388. package/node_modules/get-intrinsic/.nycrc +9 -0
  389. package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  390. package/node_modules/get-intrinsic/LICENSE +21 -0
  391. package/node_modules/get-intrinsic/README.md +71 -0
  392. package/node_modules/get-intrinsic/index.js +378 -0
  393. package/node_modules/get-intrinsic/package.json +97 -0
  394. package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  395. package/node_modules/get-proto/.eslintrc +10 -0
  396. package/node_modules/get-proto/.github/FUNDING.yml +12 -0
  397. package/node_modules/get-proto/.nycrc +9 -0
  398. package/node_modules/get-proto/CHANGELOG.md +21 -0
  399. package/node_modules/get-proto/LICENSE +21 -0
  400. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  401. package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  402. package/node_modules/get-proto/README.md +50 -0
  403. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  404. package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  405. package/node_modules/get-proto/index.d.ts +5 -0
  406. package/node_modules/get-proto/index.js +27 -0
  407. package/node_modules/get-proto/package.json +81 -0
  408. package/node_modules/get-proto/test/index.js +68 -0
  409. package/node_modules/get-proto/tsconfig.json +9 -0
  410. package/node_modules/gopd/.eslintrc +16 -0
  411. package/node_modules/gopd/.github/FUNDING.yml +12 -0
  412. package/node_modules/gopd/CHANGELOG.md +45 -0
  413. package/node_modules/gopd/LICENSE +21 -0
  414. package/node_modules/gopd/README.md +40 -0
  415. package/node_modules/gopd/gOPD.d.ts +1 -0
  416. package/node_modules/gopd/gOPD.js +4 -0
  417. package/node_modules/gopd/index.d.ts +5 -0
  418. package/node_modules/gopd/index.js +15 -0
  419. package/node_modules/gopd/package.json +77 -0
  420. package/node_modules/gopd/test/index.js +36 -0
  421. package/node_modules/gopd/tsconfig.json +9 -0
  422. package/node_modules/has-symbols/.eslintrc +11 -0
  423. package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  424. package/node_modules/has-symbols/.nycrc +9 -0
  425. package/node_modules/has-symbols/CHANGELOG.md +91 -0
  426. package/node_modules/has-symbols/LICENSE +21 -0
  427. package/node_modules/has-symbols/README.md +46 -0
  428. package/node_modules/has-symbols/index.d.ts +3 -0
  429. package/node_modules/has-symbols/index.js +14 -0
  430. package/node_modules/has-symbols/package.json +111 -0
  431. package/node_modules/has-symbols/shams.d.ts +3 -0
  432. package/node_modules/has-symbols/shams.js +45 -0
  433. package/node_modules/has-symbols/test/index.js +22 -0
  434. package/node_modules/has-symbols/test/shams/core-js.js +29 -0
  435. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  436. package/node_modules/has-symbols/test/tests.js +58 -0
  437. package/node_modules/has-symbols/tsconfig.json +10 -0
  438. package/node_modules/has-tostringtag/.eslintrc +5 -0
  439. package/node_modules/has-tostringtag/.github/FUNDING.yml +12 -0
  440. package/node_modules/has-tostringtag/.nycrc +13 -0
  441. package/node_modules/has-tostringtag/CHANGELOG.md +42 -0
  442. package/node_modules/has-tostringtag/LICENSE +21 -0
  443. package/node_modules/has-tostringtag/README.md +46 -0
  444. package/node_modules/has-tostringtag/index.d.ts +3 -0
  445. package/node_modules/has-tostringtag/index.js +8 -0
  446. package/node_modules/has-tostringtag/package.json +108 -0
  447. package/node_modules/has-tostringtag/shams.d.ts +3 -0
  448. package/node_modules/has-tostringtag/shams.js +8 -0
  449. package/node_modules/has-tostringtag/test/index.js +21 -0
  450. package/node_modules/has-tostringtag/test/shams/core-js.js +31 -0
  451. package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +30 -0
  452. package/node_modules/has-tostringtag/test/tests.js +15 -0
  453. package/node_modules/has-tostringtag/tsconfig.json +49 -0
  454. package/node_modules/hasown/.github/FUNDING.yml +12 -0
  455. package/node_modules/hasown/.nycrc +13 -0
  456. package/node_modules/hasown/CHANGELOG.md +58 -0
  457. package/node_modules/hasown/LICENSE +21 -0
  458. package/node_modules/hasown/README.md +40 -0
  459. package/node_modules/hasown/eslint.config.mjs +6 -0
  460. package/node_modules/hasown/index.d.ts +3 -0
  461. package/node_modules/hasown/index.js +8 -0
  462. package/node_modules/hasown/package.json +91 -0
  463. package/node_modules/hasown/tsconfig.json +6 -0
  464. package/node_modules/ip-address/LICENSE +19 -0
  465. package/node_modules/ip-address/README.md +308 -0
  466. package/node_modules/ip-address/dist/address-error.d.ts +15 -0
  467. package/node_modules/ip-address/dist/address-error.js +12 -0
  468. package/node_modules/ip-address/dist/address-error.js.map +1 -0
  469. package/node_modules/ip-address/dist/common.d.ts +69 -0
  470. package/node_modules/ip-address/dist/common.js +142 -0
  471. package/node_modules/ip-address/dist/common.js.map +1 -0
  472. package/node_modules/ip-address/dist/ip-address.d.ts +7 -0
  473. package/node_modules/ip-address/dist/ip-address.js +35 -0
  474. package/node_modules/ip-address/dist/ip-address.js.map +1 -0
  475. package/node_modules/ip-address/dist/ipv4.d.ts +340 -0
  476. package/node_modules/ip-address/dist/ipv4.js +580 -0
  477. package/node_modules/ip-address/dist/ipv4.js.map +1 -0
  478. package/node_modules/ip-address/dist/ipv6.d.ts +630 -0
  479. package/node_modules/ip-address/dist/ipv6.js +1443 -0
  480. package/node_modules/ip-address/dist/ipv6.js.map +1 -0
  481. package/node_modules/ip-address/dist/v4/constants.d.ts +16 -0
  482. package/node_modules/ip-address/dist/v4/constants.js +51 -0
  483. package/node_modules/ip-address/dist/v4/constants.js.map +1 -0
  484. package/node_modules/ip-address/dist/v6/constants.d.ts +58 -0
  485. package/node_modules/ip-address/dist/v6/constants.js +128 -0
  486. package/node_modules/ip-address/dist/v6/constants.js.map +1 -0
  487. package/node_modules/ip-address/dist/v6/helpers.d.ts +18 -0
  488. package/node_modules/ip-address/dist/v6/helpers.js +54 -0
  489. package/node_modules/ip-address/dist/v6/helpers.js.map +1 -0
  490. package/node_modules/ip-address/dist/v6/regular-expressions.d.ts +5 -0
  491. package/node_modules/ip-address/dist/v6/regular-expressions.js +95 -0
  492. package/node_modules/ip-address/dist/v6/regular-expressions.js.map +1 -0
  493. package/node_modules/ip-address/package.json +90 -0
  494. package/node_modules/math-intrinsics/.eslintrc +16 -0
  495. package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  496. package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  497. package/node_modules/math-intrinsics/LICENSE +21 -0
  498. package/node_modules/math-intrinsics/README.md +50 -0
  499. package/node_modules/math-intrinsics/abs.d.ts +1 -0
  500. package/node_modules/math-intrinsics/abs.js +4 -0
  501. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  502. package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  503. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  504. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  505. package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  506. package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  507. package/node_modules/math-intrinsics/floor.d.ts +1 -0
  508. package/node_modules/math-intrinsics/floor.js +4 -0
  509. package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  510. package/node_modules/math-intrinsics/isFinite.js +12 -0
  511. package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  512. package/node_modules/math-intrinsics/isInteger.js +16 -0
  513. package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  514. package/node_modules/math-intrinsics/isNaN.js +6 -0
  515. package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  516. package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  517. package/node_modules/math-intrinsics/max.d.ts +1 -0
  518. package/node_modules/math-intrinsics/max.js +4 -0
  519. package/node_modules/math-intrinsics/min.d.ts +1 -0
  520. package/node_modules/math-intrinsics/min.js +4 -0
  521. package/node_modules/math-intrinsics/mod.d.ts +3 -0
  522. package/node_modules/math-intrinsics/mod.js +9 -0
  523. package/node_modules/math-intrinsics/package.json +86 -0
  524. package/node_modules/math-intrinsics/pow.d.ts +1 -0
  525. package/node_modules/math-intrinsics/pow.js +4 -0
  526. package/node_modules/math-intrinsics/round.d.ts +1 -0
  527. package/node_modules/math-intrinsics/round.js +4 -0
  528. package/node_modules/math-intrinsics/sign.d.ts +3 -0
  529. package/node_modules/math-intrinsics/sign.js +11 -0
  530. package/node_modules/math-intrinsics/test/index.js +192 -0
  531. package/node_modules/math-intrinsics/tsconfig.json +3 -0
  532. package/node_modules/mime-db/HISTORY.md +507 -0
  533. package/node_modules/mime-db/LICENSE +23 -0
  534. package/node_modules/mime-db/README.md +100 -0
  535. package/node_modules/mime-db/db.json +8519 -0
  536. package/node_modules/mime-db/index.js +12 -0
  537. package/node_modules/mime-db/package.json +60 -0
  538. package/node_modules/mime-types/HISTORY.md +397 -0
  539. package/node_modules/mime-types/LICENSE +23 -0
  540. package/node_modules/mime-types/README.md +113 -0
  541. package/node_modules/mime-types/index.js +188 -0
  542. package/node_modules/mime-types/package.json +44 -0
  543. package/node_modules/proxy-from-env/LICENSE +20 -0
  544. package/node_modules/proxy-from-env/README.md +163 -0
  545. package/node_modules/proxy-from-env/index.cjs +105 -0
  546. package/node_modules/proxy-from-env/index.js +103 -0
  547. package/node_modules/proxy-from-env/package.json +43 -0
  548. package/node_modules/smart-buffer/.prettierrc.yaml +5 -0
  549. package/node_modules/smart-buffer/.travis.yml +13 -0
  550. package/node_modules/smart-buffer/LICENSE +20 -0
  551. package/node_modules/smart-buffer/README.md +633 -0
  552. package/node_modules/smart-buffer/build/smartbuffer.js +1233 -0
  553. package/node_modules/smart-buffer/build/smartbuffer.js.map +1 -0
  554. package/node_modules/smart-buffer/build/utils.js +108 -0
  555. package/node_modules/smart-buffer/build/utils.js.map +1 -0
  556. package/node_modules/smart-buffer/docs/CHANGELOG.md +70 -0
  557. package/node_modules/smart-buffer/docs/README_v3.md +367 -0
  558. package/node_modules/smart-buffer/docs/ROADMAP.md +0 -0
  559. package/node_modules/smart-buffer/package.json +79 -0
  560. package/node_modules/smart-buffer/typings/smartbuffer.d.ts +755 -0
  561. package/node_modules/smart-buffer/typings/utils.d.ts +66 -0
  562. package/node_modules/socks/.eslintrc.cjs +11 -0
  563. package/node_modules/socks/.prettierrc.yaml +7 -0
  564. package/node_modules/socks/LICENSE +20 -0
  565. package/node_modules/socks/README.md +686 -0
  566. package/node_modules/socks/build/client/socksclient.js +793 -0
  567. package/node_modules/socks/build/client/socksclient.js.map +1 -0
  568. package/node_modules/socks/build/common/constants.js +108 -0
  569. package/node_modules/socks/build/common/constants.js.map +1 -0
  570. package/node_modules/socks/build/common/helpers.js +167 -0
  571. package/node_modules/socks/build/common/helpers.js.map +1 -0
  572. package/node_modules/socks/build/common/receivebuffer.js +43 -0
  573. package/node_modules/socks/build/common/receivebuffer.js.map +1 -0
  574. package/node_modules/socks/build/common/util.js +25 -0
  575. package/node_modules/socks/build/common/util.js.map +1 -0
  576. package/node_modules/socks/build/index.js +18 -0
  577. package/node_modules/socks/build/index.js.map +1 -0
  578. package/node_modules/socks/docs/examples/index.md +17 -0
  579. package/node_modules/socks/docs/examples/javascript/associateExample.md +90 -0
  580. package/node_modules/socks/docs/examples/javascript/bindExample.md +83 -0
  581. package/node_modules/socks/docs/examples/javascript/connectExample.md +258 -0
  582. package/node_modules/socks/docs/examples/typescript/associateExample.md +93 -0
  583. package/node_modules/socks/docs/examples/typescript/bindExample.md +86 -0
  584. package/node_modules/socks/docs/examples/typescript/connectExample.md +265 -0
  585. package/node_modules/socks/docs/index.md +5 -0
  586. package/node_modules/socks/docs/migratingFromV1.md +86 -0
  587. package/node_modules/socks/package.json +58 -0
  588. package/node_modules/socks/typings/client/socksclient.d.ts +162 -0
  589. package/node_modules/socks/typings/common/constants.d.ts +151 -0
  590. package/node_modules/socks/typings/common/helpers.d.ts +17 -0
  591. package/node_modules/socks/typings/common/receivebuffer.d.ts +12 -0
  592. package/node_modules/socks/typings/common/util.d.ts +14 -0
  593. package/node_modules/socks/typings/index.d.ts +1 -0
  594. package/node_modules/socks-proxy-agent/LICENSE +22 -0
  595. package/node_modules/socks-proxy-agent/README.md +50 -0
  596. package/node_modules/socks-proxy-agent/dist/index.d.ts +27 -0
  597. package/node_modules/socks-proxy-agent/dist/index.d.ts.map +1 -0
  598. package/node_modules/socks-proxy-agent/dist/index.js +195 -0
  599. package/node_modules/socks-proxy-agent/dist/index.js.map +1 -0
  600. package/node_modules/socks-proxy-agent/node_modules/debug/LICENSE +20 -0
  601. package/node_modules/socks-proxy-agent/node_modules/debug/README.md +481 -0
  602. package/node_modules/socks-proxy-agent/node_modules/debug/package.json +64 -0
  603. package/node_modules/socks-proxy-agent/node_modules/debug/src/browser.js +272 -0
  604. package/node_modules/socks-proxy-agent/node_modules/debug/src/common.js +292 -0
  605. package/node_modules/socks-proxy-agent/node_modules/debug/src/index.js +10 -0
  606. package/node_modules/socks-proxy-agent/node_modules/debug/src/node.js +263 -0
  607. package/node_modules/socks-proxy-agent/node_modules/ms/index.js +162 -0
  608. package/node_modules/socks-proxy-agent/node_modules/ms/license.md +21 -0
  609. package/node_modules/socks-proxy-agent/node_modules/ms/package.json +38 -0
  610. package/node_modules/socks-proxy-agent/node_modules/ms/readme.md +59 -0
  611. package/node_modules/socks-proxy-agent/package.json +142 -0
  612. package/node_modules/undici/LICENSE +21 -0
  613. package/node_modules/undici/README.md +473 -0
  614. package/node_modules/undici/docs/docs/api/Agent.md +80 -0
  615. package/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  616. package/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  617. package/node_modules/undici/docs/docs/api/Client.md +277 -0
  618. package/node_modules/undici/docs/docs/api/Connector.md +115 -0
  619. package/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  620. package/node_modules/undici/docs/docs/api/Cookies.md +101 -0
  621. package/node_modules/undici/docs/docs/api/Debug.md +62 -0
  622. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +204 -0
  623. package/node_modules/undici/docs/docs/api/DispatchInterceptor.md +60 -0
  624. package/node_modules/undici/docs/docs/api/Dispatcher.md +1347 -0
  625. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +162 -0
  626. package/node_modules/undici/docs/docs/api/Errors.md +49 -0
  627. package/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  628. package/node_modules/undici/docs/docs/api/Fetch.md +52 -0
  629. package/node_modules/undici/docs/docs/api/MockAgent.md +540 -0
  630. package/node_modules/undici/docs/docs/api/MockClient.md +77 -0
  631. package/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  632. package/node_modules/undici/docs/docs/api/MockPool.md +547 -0
  633. package/node_modules/undici/docs/docs/api/Pool.md +84 -0
  634. package/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  635. package/node_modules/undici/docs/docs/api/ProxyAgent.md +131 -0
  636. package/node_modules/undici/docs/docs/api/RedirectHandler.md +96 -0
  637. package/node_modules/undici/docs/docs/api/RetryAgent.md +45 -0
  638. package/node_modules/undici/docs/docs/api/RetryHandler.md +117 -0
  639. package/node_modules/undici/docs/docs/api/Util.md +25 -0
  640. package/node_modules/undici/docs/docs/api/WebSocket.md +51 -0
  641. package/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  642. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  643. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +136 -0
  644. package/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  645. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +20 -0
  646. package/node_modules/undici/index-fetch.js +35 -0
  647. package/node_modules/undici/index.d.ts +3 -0
  648. package/node_modules/undici/index.js +169 -0
  649. package/node_modules/undici/lib/api/abort-signal.js +57 -0
  650. package/node_modules/undici/lib/api/api-connect.js +108 -0
  651. package/node_modules/undici/lib/api/api-pipeline.js +251 -0
  652. package/node_modules/undici/lib/api/api-request.js +214 -0
  653. package/node_modules/undici/lib/api/api-stream.js +220 -0
  654. package/node_modules/undici/lib/api/api-upgrade.js +108 -0
  655. package/node_modules/undici/lib/api/index.js +7 -0
  656. package/node_modules/undici/lib/api/readable.js +385 -0
  657. package/node_modules/undici/lib/api/util.js +93 -0
  658. package/node_modules/undici/lib/core/connect.js +240 -0
  659. package/node_modules/undici/lib/core/constants.js +118 -0
  660. package/node_modules/undici/lib/core/diagnostics.js +202 -0
  661. package/node_modules/undici/lib/core/errors.js +425 -0
  662. package/node_modules/undici/lib/core/request.js +416 -0
  663. package/node_modules/undici/lib/core/symbols.js +67 -0
  664. package/node_modules/undici/lib/core/tree.js +152 -0
  665. package/node_modules/undici/lib/core/util.js +719 -0
  666. package/node_modules/undici/lib/dispatcher/agent.js +129 -0
  667. package/node_modules/undici/lib/dispatcher/balanced-pool.js +209 -0
  668. package/node_modules/undici/lib/dispatcher/client-h1.js +1496 -0
  669. package/node_modules/undici/lib/dispatcher/client-h2.js +744 -0
  670. package/node_modules/undici/lib/dispatcher/client.js +623 -0
  671. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +199 -0
  672. package/node_modules/undici/lib/dispatcher/dispatcher.js +65 -0
  673. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +160 -0
  674. package/node_modules/undici/lib/dispatcher/fixed-queue.js +117 -0
  675. package/node_modules/undici/lib/dispatcher/pool-base.js +194 -0
  676. package/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
  677. package/node_modules/undici/lib/dispatcher/pool.js +107 -0
  678. package/node_modules/undici/lib/dispatcher/proxy-agent.js +274 -0
  679. package/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  680. package/node_modules/undici/lib/global.js +32 -0
  681. package/node_modules/undici/lib/handler/decorator-handler.js +44 -0
  682. package/node_modules/undici/lib/handler/redirect-handler.js +232 -0
  683. package/node_modules/undici/lib/handler/retry-handler.js +408 -0
  684. package/node_modules/undici/lib/interceptor/dns.js +375 -0
  685. package/node_modules/undici/lib/interceptor/dump.js +123 -0
  686. package/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
  687. package/node_modules/undici/lib/interceptor/redirect.js +24 -0
  688. package/node_modules/undici/lib/interceptor/response-error.js +86 -0
  689. package/node_modules/undici/lib/interceptor/retry.js +19 -0
  690. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  691. package/node_modules/undici/lib/llhttp/constants.js +278 -0
  692. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +5 -0
  693. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +5 -0
  694. package/node_modules/undici/lib/llhttp/utils.js +15 -0
  695. package/node_modules/undici/lib/mock/mock-agent.js +160 -0
  696. package/node_modules/undici/lib/mock/mock-client.js +59 -0
  697. package/node_modules/undici/lib/mock/mock-errors.js +28 -0
  698. package/node_modules/undici/lib/mock/mock-interceptor.js +207 -0
  699. package/node_modules/undici/lib/mock/mock-pool.js +59 -0
  700. package/node_modules/undici/lib/mock/mock-symbols.js +23 -0
  701. package/node_modules/undici/lib/mock/mock-utils.js +367 -0
  702. package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  703. package/node_modules/undici/lib/mock/pluralizer.js +29 -0
  704. package/node_modules/undici/lib/util/timers.js +423 -0
  705. package/node_modules/undici/lib/web/cache/cache.js +859 -0
  706. package/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  707. package/node_modules/undici/lib/web/cache/symbols.js +5 -0
  708. package/node_modules/undici/lib/web/cache/util.js +45 -0
  709. package/node_modules/undici/lib/web/cookies/constants.js +12 -0
  710. package/node_modules/undici/lib/web/cookies/index.js +184 -0
  711. package/node_modules/undici/lib/web/cookies/parse.js +310 -0
  712. package/node_modules/undici/lib/web/cookies/util.js +352 -0
  713. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +398 -0
  714. package/node_modules/undici/lib/web/eventsource/eventsource.js +480 -0
  715. package/node_modules/undici/lib/web/eventsource/util.js +37 -0
  716. package/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  717. package/node_modules/undici/lib/web/fetch/body.js +529 -0
  718. package/node_modules/undici/lib/web/fetch/constants.js +124 -0
  719. package/node_modules/undici/lib/web/fetch/data-url.js +744 -0
  720. package/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
  721. package/node_modules/undici/lib/web/fetch/file.js +126 -0
  722. package/node_modules/undici/lib/web/fetch/formdata-parser.js +474 -0
  723. package/node_modules/undici/lib/web/fetch/formdata.js +252 -0
  724. package/node_modules/undici/lib/web/fetch/global.js +40 -0
  725. package/node_modules/undici/lib/web/fetch/headers.js +687 -0
  726. package/node_modules/undici/lib/web/fetch/index.js +2272 -0
  727. package/node_modules/undici/lib/web/fetch/request.js +1037 -0
  728. package/node_modules/undici/lib/web/fetch/response.js +610 -0
  729. package/node_modules/undici/lib/web/fetch/symbols.js +9 -0
  730. package/node_modules/undici/lib/web/fetch/util.js +1632 -0
  731. package/node_modules/undici/lib/web/fetch/webidl.js +695 -0
  732. package/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
  733. package/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
  734. package/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
  735. package/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
  736. package/node_modules/undici/lib/web/fileapi/util.js +391 -0
  737. package/node_modules/undici/lib/web/websocket/connection.js +371 -0
  738. package/node_modules/undici/lib/web/websocket/constants.js +66 -0
  739. package/node_modules/undici/lib/web/websocket/events.js +329 -0
  740. package/node_modules/undici/lib/web/websocket/frame.js +96 -0
  741. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
  742. package/node_modules/undici/lib/web/websocket/receiver.js +513 -0
  743. package/node_modules/undici/lib/web/websocket/sender.js +104 -0
  744. package/node_modules/undici/lib/web/websocket/symbols.js +12 -0
  745. package/node_modules/undici/lib/web/websocket/util.js +322 -0
  746. package/node_modules/undici/lib/web/websocket/websocket.js +595 -0
  747. package/node_modules/undici/package.json +160 -0
  748. package/node_modules/undici/scripts/strip-comments.js +8 -0
  749. package/node_modules/undici/types/README.md +6 -0
  750. package/node_modules/undici/types/agent.d.ts +31 -0
  751. package/node_modules/undici/types/api.d.ts +43 -0
  752. package/node_modules/undici/types/balanced-pool.d.ts +29 -0
  753. package/node_modules/undici/types/cache.d.ts +36 -0
  754. package/node_modules/undici/types/client.d.ts +125 -0
  755. package/node_modules/undici/types/connector.d.ts +34 -0
  756. package/node_modules/undici/types/content-type.d.ts +21 -0
  757. package/node_modules/undici/types/cookies.d.ts +28 -0
  758. package/node_modules/undici/types/diagnostics-channel.d.ts +66 -0
  759. package/node_modules/undici/types/dispatcher.d.ts +256 -0
  760. package/node_modules/undici/types/env-http-proxy-agent.d.ts +21 -0
  761. package/node_modules/undici/types/errors.d.ts +155 -0
  762. package/node_modules/undici/types/eventsource.d.ts +61 -0
  763. package/node_modules/undici/types/fetch.d.ts +209 -0
  764. package/node_modules/undici/types/file.d.ts +39 -0
  765. package/node_modules/undici/types/filereader.d.ts +54 -0
  766. package/node_modules/undici/types/formdata.d.ts +108 -0
  767. package/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  768. package/node_modules/undici/types/global-origin.d.ts +7 -0
  769. package/node_modules/undici/types/handlers.d.ts +15 -0
  770. package/node_modules/undici/types/header.d.ts +4 -0
  771. package/node_modules/undici/types/index.d.ts +71 -0
  772. package/node_modules/undici/types/interceptors.d.ts +32 -0
  773. package/node_modules/undici/types/mock-agent.d.ts +50 -0
  774. package/node_modules/undici/types/mock-client.d.ts +25 -0
  775. package/node_modules/undici/types/mock-errors.d.ts +12 -0
  776. package/node_modules/undici/types/mock-interceptor.d.ts +93 -0
  777. package/node_modules/undici/types/mock-pool.d.ts +25 -0
  778. package/node_modules/undici/types/patch.d.ts +33 -0
  779. package/node_modules/undici/types/pool-stats.d.ts +19 -0
  780. package/node_modules/undici/types/pool.d.ts +39 -0
  781. package/node_modules/undici/types/proxy-agent.d.ts +29 -0
  782. package/node_modules/undici/types/readable.d.ts +65 -0
  783. package/node_modules/undici/types/retry-agent.d.ts +8 -0
  784. package/node_modules/undici/types/retry-handler.d.ts +116 -0
  785. package/node_modules/undici/types/util.d.ts +18 -0
  786. package/node_modules/undici/types/webidl.d.ts +228 -0
  787. package/node_modules/undici/types/websocket.d.ts +150 -0
  788. package/package.json +4 -1
@@ -0,0 +1,500 @@
1
+ import { ProxyAgent } from 'undici';
2
+ import { SocksProxyAgent } from 'socks-proxy-agent';
3
+ import axios, { type AxiosInstance } from 'axios';
4
+
5
+ import { isRefreshable, type AccessTokenProvider } from '../auth/types';
6
+ import {
7
+ PixivAbortError,
8
+ PixivAuthenticationError,
9
+ PixivCircuitOpenError,
10
+ PixivForbiddenError,
11
+ PixivHttpError,
12
+ PixivNetworkError,
13
+ PixivNotFoundError,
14
+ PixivRateLimitError,
15
+ PixivServerError,
16
+ PixivTimeoutError,
17
+ } from '../errors/errors';
18
+ import type { KitLogger } from '../logger';
19
+ import { RateLimitGate } from '../rate-limit/RateLimitGate';
20
+ import type {
21
+ FetchLike,
22
+ KitEventListener,
23
+ ProxyOptions,
24
+ RequestOptions,
25
+ ResponseLike,
26
+ } from '../types';
27
+
28
+ export interface TransportConfig {
29
+ baseUrl: string;
30
+ userAgent?: string;
31
+ timeoutMs: number;
32
+ retries: number;
33
+ proxy?: ProxyOptions;
34
+ auth: AccessTokenProvider;
35
+ gate: RateLimitGate;
36
+ logger?: KitLogger;
37
+ emit?: KitEventListener;
38
+ fetchImpl?: FetchLike;
39
+ coalesce: boolean;
40
+ sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
41
+ }
42
+
43
+ const APP_HEADERS = {
44
+ 'App-OS': 'ios',
45
+ 'App-OS-Version': '14.6',
46
+ 'App-Version': '7.13.3',
47
+ };
48
+
49
+
50
+ function proxyUrl(p: ProxyOptions): string {
51
+ const protocol = (p.protocol ?? 'http').toLowerCase();
52
+ const auth = p.username && p.password
53
+ ? `${encodeURIComponent(p.username)}:${encodeURIComponent(p.password)}@`
54
+ : '';
55
+ return `${protocol}://${auth}${p.host}:${p.port}`;
56
+ }
57
+
58
+ interface RawResult {
59
+ status: number;
60
+ statusText: string;
61
+ body: string;
62
+ headers: { get(name: string): string | null };
63
+ }
64
+
65
+ /**
66
+ * The ONE HTTP path for every Pixiv call: headers, Bearer auth, timeout,
67
+ * proxy, response classification, transient retry and the shared 429 gate all
68
+ * live here. Services only build URLs and decode payloads.
69
+ */
70
+ export class Transport {
71
+ private readonly baseUrl: string;
72
+ private readonly userAgent?: string;
73
+ private readonly timeoutMs: number;
74
+ private readonly retries: number;
75
+ private readonly proxy?: ProxyOptions;
76
+ private readonly auth: AccessTokenProvider;
77
+ private readonly gate: RateLimitGate;
78
+ private readonly logger?: KitLogger;
79
+ private readonly emit?: KitEventListener;
80
+ private readonly fetchImpl: FetchLike;
81
+ private readonly coalesce: boolean;
82
+ private readonly sleeper: (ms: number, signal?: AbortSignal) => Promise<void>;
83
+
84
+ private readonly httpDispatcher?: ProxyAgent;
85
+ private readonly axiosInstance?: AxiosInstance;
86
+ private readonly inFlight = new Map<string, Promise<RawResult>>();
87
+
88
+ constructor(cfg: TransportConfig) {
89
+ this.baseUrl = cfg.baseUrl;
90
+ this.userAgent = cfg.userAgent;
91
+ this.timeoutMs = cfg.timeoutMs;
92
+ this.retries = cfg.retries;
93
+ this.proxy = cfg.proxy;
94
+ this.auth = cfg.auth;
95
+ this.gate = cfg.gate;
96
+ this.logger = cfg.logger;
97
+ this.emit = cfg.emit;
98
+ this.coalesce = cfg.coalesce;
99
+ this.sleeper =
100
+ cfg.sleep ??
101
+ ((ms: number, signal?: AbortSignal) =>
102
+ new Promise<void>((resolve, reject) => {
103
+ // Referenced on purpose: an unref'd retry/backoff timer would let a
104
+ // short-lived CLI/script process exit instead of completing the retry.
105
+ const t = setTimeout(resolve, ms);
106
+ signal?.addEventListener(
107
+ 'abort',
108
+ () => {
109
+ clearTimeout(t);
110
+ reject(Object.assign(new Error('aborted'), { name: 'AbortError' }));
111
+ },
112
+ { once: true }
113
+ );
114
+ }));
115
+
116
+ if (cfg.fetchImpl) {
117
+ this.fetchImpl = cfg.fetchImpl;
118
+ } else if (cfg.proxy) {
119
+ const protocol = (cfg.proxy.protocol ?? 'http').toLowerCase();
120
+ const url = proxyUrl(cfg.proxy);
121
+ if (protocol === 'socks' || protocol === 'socks4' || protocol === 'socks5') {
122
+ // undici fetch has no native SOCKS support; axios + socks agent only.
123
+ const socks = new SocksProxyAgent(url);
124
+ this.axiosInstance = axios.create({ httpAgent: socks, httpsAgent: socks, timeout: this.timeoutMs });
125
+ this.fetchImpl = (u, init) => this.axiosFetch(u, init);
126
+ } else {
127
+ this.httpDispatcher = new ProxyAgent(url);
128
+ this.fetchImpl = (u, init) => fetch(u, { ...init, dispatcher: this.httpDispatcher } as never) as Promise<ResponseLike>;
129
+ }
130
+ } else {
131
+ this.fetchImpl = (u, init) => fetch(u, init as never) as Promise<ResponseLike>;
132
+ }
133
+ }
134
+
135
+ // -- public API ------------------------------------------------------------
136
+
137
+ resolveUrl(pathOrUrl: string): string {
138
+ try {
139
+ return new URL(pathOrUrl).toString();
140
+ } catch {
141
+ const withSlash = pathOrUrl.startsWith('/') ? pathOrUrl : `/${pathOrUrl}`;
142
+ return new URL(withSlash, this.baseUrl).toString();
143
+ }
144
+ }
145
+
146
+ /** JSON request (also covers plain-text via {@link requestText}). */
147
+ async request<T>(pathOrUrl: string, options: RequestOptions = {}): Promise<T> {
148
+ const raw = await this.send(pathOrUrl, options);
149
+ return JSON.parse(raw.body) as T;
150
+ }
151
+
152
+ /** Plain-text request (webview HTML endpoints). */
153
+ async requestText(pathOrUrl: string, options: RequestOptions = {}): Promise<string> {
154
+ return (await this.send(pathOrUrl, options)).body;
155
+ }
156
+
157
+ /** Binary fetch for media. Coalesced, gated, typed errors, same proxy stack. */
158
+ async fetchBinary(pathOrUrl: string, options: RequestOptions = {}): Promise<ArrayBuffer> {
159
+ const timeoutMs = options.timeoutMs ?? this.timeoutMs;
160
+ const url = this.resolveUrl(pathOrUrl);
161
+ const started = Date.now();
162
+ this.emit?.({ type: 'request_start', endpoint: url, method: options.method ?? 'GET' });
163
+
164
+ for (let attempt = 0; ; attempt++) {
165
+ const { signal, cancel } = this.withTimeout(timeoutMs, options.signal);
166
+ try {
167
+ await this.gate.acquire(options.signal);
168
+ const buf = await this.executeBinary(url, { ...options, signal });
169
+ this.emit?.({ type: 'request_success', endpoint: url, status: 200, elapsedMs: Date.now() - started });
170
+ await this.gate.reportSuccess();
171
+ return buf;
172
+ } catch (e) {
173
+ const decision = await this.classifyFailure(e, attempt, url, 'GET', !!options.signal?.aborted);
174
+ if (decision.action === 'throw') throw decision.error;
175
+ await this.waitRetry(decision.waitMs, options.signal);
176
+ } finally {
177
+ cancel();
178
+ }
179
+ }
180
+ }
181
+
182
+ // -- core send with retry --------------------------------------------------
183
+
184
+ private send(pathOrUrl: string, options: RequestOptions): Promise<RawResult> {
185
+ const url = this.resolveUrl(pathOrUrl);
186
+ if (this.coalesce && (options.method ?? 'GET') === 'GET' && !options.skipCoalesce) {
187
+ const key = this.coalesceKey(url, options);
188
+ const existing = this.inFlight.get(key);
189
+ if (existing) return existing;
190
+ const promise = this.executeWithRetry(url, options).finally(() => this.inFlight.delete(key));
191
+ this.inFlight.set(key, promise);
192
+ return promise;
193
+ }
194
+ return this.executeWithRetry(url, options);
195
+ }
196
+
197
+ private coalesceKey(url: string, options: RequestOptions): string {
198
+ // Auth header intentionally excluded: same resource, same token scope.
199
+ return `${options.method ?? 'GET'} ${url}`;
200
+ }
201
+
202
+ private async executeWithRetry(url: string, options: RequestOptions): Promise<RawResult> {
203
+ const timeoutMs = options.timeoutMs ?? this.timeoutMs;
204
+ const started = Date.now();
205
+ let forceRefresh = false;
206
+
207
+ for (let attempt = 0; ; attempt++) {
208
+ const { signal, cancel } = this.withTimeout(timeoutMs, options.signal);
209
+ try {
210
+ const { probe } = await this.gate.acquire(options.signal);
211
+ this.emit?.({ type: 'request_start', endpoint: url, method: options.method ?? 'GET' });
212
+ const result = await this.executeOnce(url, { ...options, signal }, forceRefresh);
213
+ const classified = this.classifyStatus(result, url);
214
+ if (classified.kind === 'ok') {
215
+ this.emit?.({ type: 'request_success', endpoint: url, status: result.status, elapsedMs: Date.now() - started });
216
+ await this.gate.reportSuccess();
217
+ return result;
218
+ }
219
+
220
+ const decision = await this.handleBadStatus(classified, result, url, attempt, probe);
221
+ if (decision.action === 'throw') throw decision.error;
222
+
223
+ if (decision.action === 'refresh') {
224
+ forceRefresh = true;
225
+ this.emit?.({ type: 'auth_refresh', reason: 'unauthorized' });
226
+ continue;
227
+ }
228
+ await this.waitRetry(decision.waitMs, options.signal);
229
+ } catch (e) {
230
+ const decision = await this.classifyFailure(e, attempt, url, options.method ?? 'GET', !!options.signal?.aborted);
231
+ if (decision.action === 'throw') throw decision.error;
232
+ await this.waitRetry(decision.waitMs, options.signal);
233
+ } finally {
234
+ cancel();
235
+ }
236
+ }
237
+ }
238
+
239
+ // -- execution backends ----------------------------------------------------
240
+
241
+ private async executeOnce(
242
+ url: string,
243
+ options: RequestOptions,
244
+ forceRefresh: boolean
245
+ ): Promise<RawResult> {
246
+ const headers: Record<string, string> = {
247
+ ...(options.skipAppHeaders ? {} : APP_HEADERS),
248
+ ...(this.userAgent ? { 'User-Agent': this.userAgent } : {}),
249
+ Referer: 'https://app-api.pixiv.net/',
250
+ ...options.headers,
251
+ };
252
+
253
+ if (!options.skipAuth) {
254
+ const token = forceRefresh && isRefreshable(this.auth)
255
+ ? await this.auth.refreshAccessToken(options.signal)
256
+ : await this.auth.getAccessToken(options.signal);
257
+ if (token) headers.Authorization = `Bearer ${token}`;
258
+ }
259
+
260
+ const res = await this.fetchImpl(url, {
261
+ method: options.method ?? 'GET',
262
+ headers,
263
+ body: options.body,
264
+ signal: options.signal,
265
+ });
266
+ const body = await this.safeText(res);
267
+ return { status: res.status, statusText: res.statusText, body, headers: res.headers };
268
+ }
269
+
270
+ private async executeBinary(url: string, options: RequestOptions): Promise<ArrayBuffer> {
271
+ const headers: Record<string, string> = {
272
+ ...(options.skipAppHeaders ? {} : APP_HEADERS),
273
+ ...(this.userAgent ? { 'User-Agent': this.userAgent } : {}),
274
+ Referer: 'https://app-api.pixiv.net/',
275
+ ...options.headers,
276
+ };
277
+ if (!options.skipAuth) {
278
+ const token = await this.auth.getAccessToken(options.signal);
279
+ if (token) headers.Authorization = `Bearer ${token}`;
280
+ }
281
+ const res = await this.fetchImpl(url, {
282
+ method: options.method ?? 'GET',
283
+ headers,
284
+ body: options.body,
285
+ signal: options.signal,
286
+ });
287
+ if (!res.ok) {
288
+ const body = await this.safeText(res);
289
+ throw this.statusError(res.status, res.statusText, body, url);
290
+ }
291
+ return res.arrayBuffer();
292
+ }
293
+
294
+ /** SOCKS backend: adapt an axios response to the fetch-like shape. */
295
+ private async axiosFetch(url: string, init: RequestInit): Promise<ResponseLike> {
296
+ const response = await this.axiosInstance!.request({
297
+ url,
298
+ method: (init.method as string) ?? 'GET',
299
+ headers: init.headers as Record<string, string>,
300
+ data: init.body,
301
+ signal: init.signal ?? undefined,
302
+ validateStatus: () => true,
303
+ responseType: 'text',
304
+ transformResponse: (d) => d,
305
+ });
306
+ const headers = new Map<string, string>();
307
+ for (const [k, v] of Object.entries(response.headers ?? {})) {
308
+ if (typeof v === 'string') headers.set(k.toLowerCase(), v);
309
+ }
310
+ const body = typeof response.data === 'string' ? response.data : JSON.stringify(response.data ?? '');
311
+ return {
312
+ status: response.status,
313
+ statusText: response.statusText,
314
+ ok: response.status >= 200 && response.status < 300,
315
+ headers: { get: (name: string) => headers.get(name.toLowerCase()) ?? null },
316
+ json: async () => JSON.parse(body),
317
+ text: async () => body,
318
+ arrayBuffer: async () => {
319
+ const buf = await this.axiosInstance!.request({
320
+ url,
321
+ method: (init.method as string) ?? 'GET',
322
+ headers: init.headers as Record<string, string>,
323
+ data: init.body,
324
+ signal: init.signal ?? undefined,
325
+ validateStatus: () => true,
326
+ responseType: 'arraybuffer',
327
+ });
328
+ return buf.data as ArrayBuffer;
329
+ },
330
+ };
331
+ }
332
+
333
+ // -- classification & retry decisions -------------------------------------
334
+
335
+ private classifyStatus(result: RawResult, url: string): { kind: 'ok' } | { kind: 'error'; error: PixivHttpError } {
336
+ if (result.status >= 200 && result.status < 300) return { kind: 'ok' };
337
+ return { kind: 'error', error: this.statusError(result.status, result.statusText, result.body, url) };
338
+ }
339
+
340
+ private statusError(status: number, statusText: string, body: string, url: string): PixivHttpError {
341
+ const snippet = body ? ` - ${body.slice(0, 200)}` : '';
342
+ const base = { status, endpoint: url, body, retryAfterMs: undefined as number | undefined };
343
+ switch (status) {
344
+ case 400:
345
+ return new PixivHttpError(`Pixiv API error: 400 Bad Request${snippet}`, { ...base, retryable: false });
346
+ case 401:
347
+ return new PixivAuthenticationError(`Pixiv API error: 401 Unauthorized${snippet}`, base);
348
+ case 403:
349
+ return new PixivForbiddenError(`Pixiv API error: 403 Forbidden${snippet}`, base);
350
+ case 404:
351
+ return new PixivNotFoundError(`Pixiv API error: 404 Not Found${snippet}`, base);
352
+ case 429:
353
+ return new PixivRateLimitError(`Pixiv API error: 429 Rate Limit${snippet}`, base);
354
+ default:
355
+ if (status >= 500) return new PixivServerError(`Pixiv API error: ${status} ${statusText}${snippet}`, base);
356
+ return new PixivHttpError(`Pixiv API error: ${status} ${statusText}${snippet}`, { ...base, retryable: false });
357
+ }
358
+ }
359
+
360
+ private async handleBadStatus(
361
+ classified: { kind: 'error'; error: PixivHttpError },
362
+ result: RawResult,
363
+ url: string,
364
+ attempt: number,
365
+ probe: boolean
366
+ ): Promise<
367
+ | { action: 'throw'; error: PixivHttpError }
368
+ | { action: 'retry'; waitMs: number }
369
+ | { action: 'refresh' }
370
+ > {
371
+ const error = classified.error;
372
+
373
+ if (error instanceof PixivAuthenticationError) {
374
+ // One refresh-and-retry, once per call.
375
+ if (attempt === 0 && isRefreshable(this.auth)) return { action: 'refresh' };
376
+ return { action: 'throw', error };
377
+ }
378
+
379
+ if (error instanceof PixivRateLimitError) {
380
+ const retryAfter = result.headers.get('Retry-After');
381
+ const { waitMs, circuitOpened } = await this.gate.reportRateLimited(retryAfter);
382
+ Object.assign(error as object, { retryAfterMs: waitMs });
383
+ if (probe) await this.gate.reportProbeFailure(waitMs);
384
+ // OPEN past the retry budget: fail fast and let the durable scheduler
385
+ // own the wait instead of blocking one process turn for many minutes.
386
+ if (circuitOpened || attempt >= this.retries) {
387
+ return { action: 'throw', error };
388
+ }
389
+ this.emit?.({ type: 'request_retry', endpoint: url, attempt: attempt + 1, waitMs, reason: 'rate_limited' });
390
+ return { action: 'retry', waitMs };
391
+ }
392
+
393
+ if (error instanceof PixivServerError) {
394
+ if (probe) await this.gate.reportProbeFailure(this.linearBackoffMs(attempt));
395
+ if (attempt >= this.retries) return { action: 'throw', error };
396
+ const waitMs = this.linearBackoffMs(attempt);
397
+ this.emit?.({ type: 'request_retry', endpoint: url, attempt: attempt + 1, waitMs, reason: 'server_error' });
398
+ return { action: 'retry', waitMs };
399
+ }
400
+
401
+ // 400/403/404 and any other 4xx: never retry.
402
+ return { action: 'throw', error };
403
+ }
404
+
405
+ private async classifyFailure(
406
+ e: unknown,
407
+ attempt: number,
408
+ url: string,
409
+ _method: string,
410
+ callerAborted = false
411
+ ): Promise<
412
+ | { action: 'throw'; error: unknown }
413
+ | { action: 'retry'; waitMs: number }
414
+ > {
415
+ // Typed kit errors are terminal by construction (already classified).
416
+ if (e instanceof PixivHttpError) return { action: 'throw', error: e };
417
+ if (e instanceof PixivCircuitOpenError) return { action: 'throw', error: e };
418
+ if (e instanceof PixivAbortError) {
419
+ return { action: 'throw', error: e };
420
+ }
421
+
422
+ // AbortError from fetch/axios: distinguish our own timeout abort from a
423
+ // caller-provided signal abort. The internal timeout controller has NO
424
+ // external signal, so callerAborted cleanly separates the two cases
425
+ // (undici/axios attach different reasons; do not rely on their internals).
426
+ if (e instanceof Error && e.name === 'AbortError') {
427
+ const reason = (e as { cause?: unknown }).cause;
428
+ const isOurTimeout =
429
+ !callerAborted ||
430
+ (reason instanceof Error && reason.message === '__pixiv_timeout__');
431
+ if (isOurTimeout) {
432
+ return this.maybeTransientRetry(
433
+ new PixivTimeoutError(`Request timeout after ${this.timeoutMs}ms`, { endpoint: url, cause: e, code: 'timeout' }),
434
+ attempt,
435
+ url
436
+ );
437
+ }
438
+ return { action: 'throw', error: new PixivAbortError('Request aborted', { cause: e, endpoint: url }) };
439
+ }
440
+
441
+ if (e instanceof PixivTimeoutError) {
442
+ return this.maybeTransientRetry(e, attempt, url);
443
+ }
444
+
445
+ // Everything else from the network stack (ECONNRESET, ENOTFOUND, proxy
446
+ // failure, socket hang up, ...) is transient up to the retry budget.
447
+ const network = new PixivNetworkError(
448
+ `Pixiv network error: ${e instanceof Error ? e.message : String(e)}`,
449
+ { endpoint: url, cause: e, code: (e as { code?: string })?.code ?? 'network_error' }
450
+ );
451
+ return this.maybeTransientRetry(network, attempt, url);
452
+ }
453
+
454
+ private maybeTransientRetry(
455
+ error: PixivTimeoutError | PixivNetworkError | PixivAbortError,
456
+ attempt: number,
457
+ url: string
458
+ ): { action: 'throw'; error: unknown } | { action: 'retry'; waitMs: number } {
459
+ if (attempt >= this.retries) return { action: 'throw', error };
460
+ const waitMs = this.linearBackoffMs(attempt);
461
+ this.emit?.({ type: 'request_retry', endpoint: url, attempt: attempt + 1, waitMs, reason: 'network' });
462
+ return { action: 'retry', waitMs };
463
+ }
464
+
465
+ private linearBackoffMs(attempt: number): number {
466
+ return Math.min(1000 * (attempt + 1), 5000);
467
+ }
468
+
469
+ private async waitRetry(waitMs: number, signal?: AbortSignal): Promise<void> {
470
+ if (waitMs <= 0) return;
471
+ try {
472
+ await this.sleeper(waitMs, signal);
473
+ } catch (e) {
474
+ throw new PixivAbortError('aborted while waiting to retry', { cause: e });
475
+ }
476
+ }
477
+
478
+ // -- helpers ---------------------------------------------------------------
479
+
480
+ private withTimeout(timeoutMs: number, external?: AbortSignal): { signal: AbortSignal; cancel: () => void } {
481
+ if (external) return { signal: external, cancel: () => {} };
482
+ const controller = new AbortController();
483
+ const timer = setTimeout(() => controller.abort(new Error('__pixiv_timeout__')), timeoutMs);
484
+ if (typeof timer.unref === 'function') timer.unref();
485
+ return {
486
+ signal: controller.signal,
487
+ cancel: () => {
488
+ clearTimeout(timer);
489
+ },
490
+ };
491
+ }
492
+
493
+ private async safeText(res: ResponseLike): Promise<string> {
494
+ try {
495
+ return await res.text();
496
+ } catch {
497
+ return '';
498
+ }
499
+ }
500
+ }
@@ -0,0 +1,168 @@
1
+ import type { AccessTokenProvider } from './auth/types';
2
+ import type { KitLogger } from './logger';
3
+
4
+ /** HTTP(S) or SOCKS proxy. The kit never rotates proxies on 429. */
5
+ export interface ProxyOptions {
6
+ protocol?: 'http' | 'https' | 'socks' | 'socks4' | 'socks5';
7
+ host: string;
8
+ port: number;
9
+ username?: string;
10
+ password?: string;
11
+ }
12
+
13
+ export interface RateLimitOptions {
14
+ /**
15
+ * Minimum spacing between the START of two requests (pacing / slot size).
16
+ * Conservative default: 1000 ms. Override per deployment.
17
+ */
18
+ minIntervalMs?: number;
19
+ /** Random extra delay as a fraction of minIntervalMs, 0..0.5 recommended. */
20
+ jitterRatio?: number;
21
+ /** Cooldown after the FIRST 429 when no Retry-After hint is present. */
22
+ initialCooldownMs?: number;
23
+ /** Cooldown ceiling for the exponential 429 backoff. */
24
+ maxCooldownMs?: number;
25
+ /**
26
+ * Number of consecutive successful responses required to decay the penalty
27
+ * level by one (so one lucky response never clears a 429 penalty).
28
+ */
29
+ decaySuccesses?: number;
30
+ /**
31
+ * Penalty level (cooldown exponent) at which the circuit opens and fast
32
+ * fails all requests until a half-open probe succeeds.
33
+ */
34
+ openThreshold?: number;
35
+ /**
36
+ * Persistence port. Default: in-memory. Hosts inject an SQLite/Redis/...
37
+ * adapter so restarts do not forget an active Pixiv cooldown.
38
+ */
39
+ stateStore?: RateLimitStateStore;
40
+ /** Logical key inside the state store (e.g. account id). Default 'default'. */
41
+ scope?: string;
42
+ /** Injectable clock (tests). */
43
+ now?: () => number;
44
+ /** Injectable sleeper (tests / cooperative shutdown). */
45
+ sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
46
+ /** Injectable jitter RNG in [0,1) (tests). */
47
+ random?: () => number;
48
+ }
49
+
50
+ /** Persisted gate state. All timestamps are epoch milliseconds. */
51
+ export interface RateLimitState {
52
+ /** Earliest time the next request may start (pacing cursor). */
53
+ nextAllowedAt: number;
54
+ /** Cooldown imposed by the latest 429. */
55
+ cooldownUntil: number;
56
+ /** Exponential penalty level (0 = healthy). */
57
+ penaltyLevel: number;
58
+ /** Timestamp of the most recent 429. */
59
+ last429At: number | null;
60
+ /** Circuit state. */
61
+ circuitState: 'closed' | 'open' | 'half_open';
62
+ /** Consecutive successes counted toward penalty decay. */
63
+ consecutiveSuccesses: number;
64
+ updatedAt: number;
65
+ }
66
+
67
+ export interface RateLimitStatus {
68
+ circuitState: RateLimitState['circuitState'];
69
+ cooldownRemainingMs: number;
70
+ penaltyLevel: number;
71
+ last429At: number | null;
72
+ nextAllowedInMs: number;
73
+ }
74
+
75
+ /**
76
+ * Persistence port for the shared rate-limit gate.
77
+ * The default implementation is process-local memory; hosts provide durable
78
+ * adapters (e.g. SQLite). Must be safe to call concurrently.
79
+ */
80
+ export interface RateLimitStateStore {
81
+ load(scope: string): Promise<RateLimitState | null> | RateLimitState | null;
82
+ save(scope: string, state: RateLimitState): Promise<void> | void;
83
+ }
84
+
85
+ export type KitEvent =
86
+ | { type: 'request_start'; endpoint: string; method: string }
87
+ | { type: 'request_success'; endpoint: string; status: number; elapsedMs: number }
88
+ | { type: 'request_retry'; endpoint: string; attempt: number; waitMs: number; reason: string }
89
+ | { type: 'rate_limited'; endpoint: string; retryAfterMs: number; penaltyLevel: number }
90
+ | { type: 'cooldown_started'; until: number; penaltyLevel: number }
91
+ | { type: 'circuit_opened'; until: number }
92
+ | { type: 'circuit_half_open' }
93
+ | { type: 'circuit_closed' }
94
+ | { type: 'auth_refresh'; reason: 'expired' | 'unauthorized' };
95
+
96
+ export type KitEventListener = (event: KitEvent) => void;
97
+
98
+ export interface PixivClientOptions {
99
+ /** REQUIRED: source of Bearer access tokens. */
100
+ auth: AccessTokenProvider;
101
+ /** App API base URL (default https://app-api.pixiv.net). */
102
+ baseUrl?: string;
103
+ /** Default User-Agent header. */
104
+ userAgent?: string;
105
+ /** Per-request timeout in ms (default 30000). Binary downloads may override. */
106
+ timeoutMs?: number;
107
+ /**
108
+ * Retries for TRANSIENT failures only (network error / 5xx). 429 retries are
109
+ * governed by the rate-limit gate, not this counter. Default 2 (3 attempts).
110
+ */
111
+ retries?: number;
112
+ proxy?: ProxyOptions;
113
+ rateLimit?: RateLimitOptions;
114
+ /** Deduplicate identical in-flight GET requests (default true). */
115
+ coalesceRequests?: boolean;
116
+ logger?: KitLogger;
117
+ /**
118
+ * Injectable sleeper for transient retries (tests supply a fake clock; the
119
+ * 429 gate sleeper is configured via rateLimit.sleep). Default: real timers.
120
+ */
121
+ sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
122
+ /** Structured network events. Never contains tokens/cookies/passwords. */
123
+ onEvent?: KitEventListener;
124
+ /**
125
+ * Advanced: replace the HTTP executor (tests use a fake fetch). When set,
126
+ * proxy settings are ignored.
127
+ */
128
+ fetchImpl?: FetchLike;
129
+ }
130
+
131
+ export interface RequestOptions {
132
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
133
+ headers?: Record<string, string>;
134
+ body?: string;
135
+ /** Skip the Authorization header (www.pixiv.net ajax endpoints reject it). */
136
+ skipAuth?: boolean;
137
+ /** Omit the App-OS/App-Version mobile client headers (web endpoints). */
138
+ skipAppHeaders?: boolean;
139
+ signal?: AbortSignal;
140
+ timeoutMs?: number;
141
+ /** Bypass in-flight coalescing for this request. */
142
+ skipCoalesce?: boolean;
143
+ }
144
+
145
+ /** Minimal subset of the global Fetch contract the transport relies on. */
146
+ export type FetchLike = (url: string, init: RequestInit & { dispatcher?: unknown }) => Promise<ResponseLike>;
147
+
148
+ export interface ResponseLike {
149
+ status: number;
150
+ statusText: string;
151
+ headers: { get(name: string): string | null };
152
+ ok: boolean;
153
+ json(): Promise<unknown>;
154
+ text(): Promise<string>;
155
+ arrayBuffer(): Promise<ArrayBuffer>;
156
+ }
157
+
158
+ export interface PaginationOptions {
159
+ /** Max items to collect across pages. */
160
+ limit?: number;
161
+ /** Max pages to walk (safety cap). */
162
+ maxPages?: number;
163
+ /** Opaque cursor returned by a previous call. */
164
+ cursor?: string | null;
165
+ signal?: AbortSignal;
166
+ /** Called with each page; the delay is still governed by the global gate. */
167
+ onPage?: (pageIndex: number, collected: number) => void;
168
+ }
@@ -0,0 +1,19 @@
1
+ import type { Transport } from '../transport/transport';
2
+
3
+ /**
4
+ * Boundary placeholder for the future Web API backend (www.pixiv.net).
5
+ *
6
+ * The App API and the Web API are deliberately TWO backends, mirroring the
7
+ * upstream protocol split (see PixivKit/pixivpy). The only www.pixiv.net
8
+ * call the host needs today is the novel-text ajax fallback, which is handled
9
+ * inside {@link NovelsApi} as an endpoint-capability fallback.
10
+ *
11
+ * Rules for future expansion:
12
+ * - add concrete web endpoints here only when a second REAL capability gap
13
+ * appears (YAGNI);
14
+ * - backend fallback is allowed ONLY for missing endpoints/compatibility —
15
+ * NEVER to alternate between App/Web on 429 to dodge rate limits.
16
+ */
17
+ export interface PixivWebApiClient {
18
+ readonly transport: Transport;
19
+ }