@pureq/pureq 1.1.6 → 1.1.8

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 (424) hide show
  1. package/README.md +24 -68
  2. package/dist/adapters/fetchAdapter.d.ts.map +1 -0
  3. package/dist/adapters/fetchAdapter.js.map +1 -0
  4. package/dist/adapters/instrumentedAdapter.d.ts.map +1 -0
  5. package/dist/adapters/instrumentedAdapter.js.map +1 -0
  6. package/dist/adapters/storage/encryptedStorage.d.ts.map +1 -0
  7. package/dist/adapters/storage/encryptedStorage.js.map +1 -0
  8. package/dist/adapters/storage/indexedDBAdapter.d.ts.map +1 -0
  9. package/dist/adapters/storage/indexedDBAdapter.js.map +1 -0
  10. package/dist/client/createClient.d.ts.map +1 -0
  11. package/dist/client/createClient.js.map +1 -0
  12. package/dist/executor/execute.d.ts.map +1 -0
  13. package/dist/executor/execute.js.map +1 -0
  14. package/dist/index.d.ts +42 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +41 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/middleware/authRefresh.d.ts.map +1 -0
  19. package/dist/middleware/authRefresh.js.map +1 -0
  20. package/dist/middleware/circuitBreaker.d.ts.map +1 -0
  21. package/dist/middleware/circuitBreaker.js.map +1 -0
  22. package/dist/middleware/circuitBreakerKeys.d.ts.map +1 -0
  23. package/dist/middleware/circuitBreakerKeys.js.map +1 -0
  24. package/dist/middleware/compose.d.ts.map +1 -0
  25. package/dist/middleware/compose.js.map +1 -0
  26. package/dist/middleware/concurrencyLimit.d.ts.map +1 -0
  27. package/dist/middleware/concurrencyLimit.js.map +1 -0
  28. package/dist/middleware/deadline.d.ts.map +1 -0
  29. package/dist/middleware/deadline.js.map +1 -0
  30. package/dist/middleware/dedupe.d.ts.map +1 -0
  31. package/dist/middleware/dedupe.js.map +1 -0
  32. package/dist/middleware/defaultTimeout.d.ts.map +1 -0
  33. package/dist/middleware/defaultTimeout.js.map +1 -0
  34. package/dist/middleware/diagnostics.d.ts.map +1 -0
  35. package/dist/middleware/diagnostics.js.map +1 -0
  36. package/dist/middleware/diagnosticsExporters.d.ts.map +1 -0
  37. package/dist/middleware/diagnosticsExporters.js.map +1 -0
  38. package/dist/middleware/fallback.d.ts.map +1 -0
  39. package/dist/middleware/fallback.js.map +1 -0
  40. package/dist/middleware/hedge.d.ts.map +1 -0
  41. package/dist/middleware/hedge.js.map +1 -0
  42. package/dist/middleware/httpCache.d.ts.map +1 -0
  43. package/dist/middleware/httpCache.js.map +1 -0
  44. package/dist/middleware/idempotencyKey.d.ts.map +1 -0
  45. package/dist/middleware/idempotencyKey.js.map +1 -0
  46. package/dist/middleware/offlineQueue.d.ts.map +1 -0
  47. package/dist/middleware/offlineQueue.js.map +1 -0
  48. package/dist/middleware/presets.d.ts.map +1 -0
  49. package/dist/middleware/presets.js.map +1 -0
  50. package/dist/middleware/retry.d.ts.map +1 -0
  51. package/dist/middleware/retry.js.map +1 -0
  52. package/dist/middleware/stalePolicy.d.ts.map +1 -0
  53. package/dist/middleware/stalePolicy.js.map +1 -0
  54. package/dist/middleware/validation.d.ts.map +1 -0
  55. package/dist/middleware/validation.js.map +1 -0
  56. package/dist/node/fsAdapter.d.ts.map +1 -0
  57. package/dist/node/fsAdapter.js.map +1 -0
  58. package/dist/node/index.d.ts.map +1 -0
  59. package/dist/node/index.js.map +1 -0
  60. package/dist/observability/otelMapping.d.ts.map +1 -0
  61. package/dist/observability/otelMapping.js.map +1 -0
  62. package/dist/observability/otelProfiles.d.ts.map +1 -0
  63. package/dist/observability/otelProfiles.js.map +1 -0
  64. package/dist/observability/redaction.d.ts.map +1 -0
  65. package/dist/observability/redaction.js.map +1 -0
  66. package/dist/policy/guardrails.d.ts.map +1 -0
  67. package/dist/policy/guardrails.js.map +1 -0
  68. package/dist/response/response.d.ts.map +1 -0
  69. package/dist/response/response.js.map +1 -0
  70. package/dist/serializers/formUrlEncodedSerializer.d.ts.map +1 -0
  71. package/dist/serializers/formUrlEncodedSerializer.js.map +1 -0
  72. package/dist/serializers/jsonBodySerializer.d.ts.map +1 -0
  73. package/dist/serializers/jsonBodySerializer.js.map +1 -0
  74. package/dist/types/events.d.ts.map +1 -0
  75. package/dist/{src/types → types}/events.js.map +1 -1
  76. package/dist/types/http.d.ts.map +1 -0
  77. package/dist/{src/types → types}/http.js.map +1 -1
  78. package/dist/types/internal.d.ts.map +1 -0
  79. package/dist/types/internal.js.map +1 -0
  80. package/dist/types/result.d.ts.map +1 -0
  81. package/dist/types/result.js.map +1 -0
  82. package/dist/utils/crypto.d.ts.map +1 -0
  83. package/dist/utils/crypto.js.map +1 -0
  84. package/dist/utils/policyTrace.d.ts.map +1 -0
  85. package/dist/utils/policyTrace.js.map +1 -0
  86. package/dist/utils/stableKey.d.ts.map +1 -0
  87. package/dist/utils/stableKey.js.map +1 -0
  88. package/dist/utils/url.d.ts.map +1 -0
  89. package/dist/utils/url.js.map +1 -0
  90. package/package.json +19 -19
  91. package/dist/scripts/benchmark.d.ts +0 -2
  92. package/dist/scripts/benchmark.d.ts.map +0 -1
  93. package/dist/scripts/benchmark.js +0 -69
  94. package/dist/scripts/benchmark.js.map +0 -1
  95. package/dist/scripts/edge-smoke-entry.d.ts +0 -8
  96. package/dist/scripts/edge-smoke-entry.d.ts.map +0 -1
  97. package/dist/scripts/edge-smoke-entry.js +0 -23
  98. package/dist/scripts/edge-smoke-entry.js.map +0 -1
  99. package/dist/src/adapters/fetchAdapter.d.ts.map +0 -1
  100. package/dist/src/adapters/fetchAdapter.js.map +0 -1
  101. package/dist/src/adapters/instrumentedAdapter.d.ts.map +0 -1
  102. package/dist/src/adapters/instrumentedAdapter.js.map +0 -1
  103. package/dist/src/adapters/storage/encryptedStorage.d.ts.map +0 -1
  104. package/dist/src/adapters/storage/encryptedStorage.js.map +0 -1
  105. package/dist/src/adapters/storage/indexedDBAdapter.d.ts.map +0 -1
  106. package/dist/src/adapters/storage/indexedDBAdapter.js.map +0 -1
  107. package/dist/src/client/createClient.d.ts.map +0 -1
  108. package/dist/src/client/createClient.js.map +0 -1
  109. package/dist/src/executor/execute.d.ts.map +0 -1
  110. package/dist/src/executor/execute.js.map +0 -1
  111. package/dist/src/index.d.ts +0 -43
  112. package/dist/src/index.d.ts.map +0 -1
  113. package/dist/src/index.js +0 -42
  114. package/dist/src/index.js.map +0 -1
  115. package/dist/src/middleware/authRefresh.d.ts.map +0 -1
  116. package/dist/src/middleware/authRefresh.js.map +0 -1
  117. package/dist/src/middleware/circuitBreaker.d.ts.map +0 -1
  118. package/dist/src/middleware/circuitBreaker.js.map +0 -1
  119. package/dist/src/middleware/circuitBreakerKeys.d.ts.map +0 -1
  120. package/dist/src/middleware/circuitBreakerKeys.js.map +0 -1
  121. package/dist/src/middleware/compose.d.ts.map +0 -1
  122. package/dist/src/middleware/compose.js.map +0 -1
  123. package/dist/src/middleware/concurrencyLimit.d.ts.map +0 -1
  124. package/dist/src/middleware/concurrencyLimit.js.map +0 -1
  125. package/dist/src/middleware/deadline.d.ts.map +0 -1
  126. package/dist/src/middleware/deadline.js.map +0 -1
  127. package/dist/src/middleware/dedupe.d.ts.map +0 -1
  128. package/dist/src/middleware/dedupe.js.map +0 -1
  129. package/dist/src/middleware/defaultTimeout.d.ts.map +0 -1
  130. package/dist/src/middleware/defaultTimeout.js.map +0 -1
  131. package/dist/src/middleware/diagnostics.d.ts.map +0 -1
  132. package/dist/src/middleware/diagnostics.js.map +0 -1
  133. package/dist/src/middleware/diagnosticsExporters.d.ts.map +0 -1
  134. package/dist/src/middleware/diagnosticsExporters.js.map +0 -1
  135. package/dist/src/middleware/fallback.d.ts.map +0 -1
  136. package/dist/src/middleware/fallback.js.map +0 -1
  137. package/dist/src/middleware/hedge.d.ts.map +0 -1
  138. package/dist/src/middleware/hedge.js.map +0 -1
  139. package/dist/src/middleware/httpCache.d.ts.map +0 -1
  140. package/dist/src/middleware/httpCache.js.map +0 -1
  141. package/dist/src/middleware/idempotencyKey.d.ts.map +0 -1
  142. package/dist/src/middleware/idempotencyKey.js.map +0 -1
  143. package/dist/src/middleware/offlineQueue.d.ts.map +0 -1
  144. package/dist/src/middleware/offlineQueue.js.map +0 -1
  145. package/dist/src/middleware/presets.d.ts.map +0 -1
  146. package/dist/src/middleware/presets.js.map +0 -1
  147. package/dist/src/middleware/retry.d.ts.map +0 -1
  148. package/dist/src/middleware/retry.js.map +0 -1
  149. package/dist/src/middleware/stalePolicy.d.ts.map +0 -1
  150. package/dist/src/middleware/stalePolicy.js.map +0 -1
  151. package/dist/src/middleware/validation.d.ts.map +0 -1
  152. package/dist/src/middleware/validation.js.map +0 -1
  153. package/dist/src/node/fsAdapter.d.ts.map +0 -1
  154. package/dist/src/node/fsAdapter.js.map +0 -1
  155. package/dist/src/node/index.d.ts.map +0 -1
  156. package/dist/src/node/index.js.map +0 -1
  157. package/dist/src/observability/otelMapping.d.ts.map +0 -1
  158. package/dist/src/observability/otelMapping.js.map +0 -1
  159. package/dist/src/observability/otelProfiles.d.ts.map +0 -1
  160. package/dist/src/observability/otelProfiles.js.map +0 -1
  161. package/dist/src/observability/redaction.d.ts.map +0 -1
  162. package/dist/src/observability/redaction.js.map +0 -1
  163. package/dist/src/policy/guardrails.d.ts.map +0 -1
  164. package/dist/src/policy/guardrails.js.map +0 -1
  165. package/dist/src/response/response.d.ts.map +0 -1
  166. package/dist/src/response/response.js.map +0 -1
  167. package/dist/src/serializers/formUrlEncodedSerializer.d.ts.map +0 -1
  168. package/dist/src/serializers/formUrlEncodedSerializer.js.map +0 -1
  169. package/dist/src/serializers/jsonBodySerializer.d.ts.map +0 -1
  170. package/dist/src/serializers/jsonBodySerializer.js.map +0 -1
  171. package/dist/src/types/events.d.ts.map +0 -1
  172. package/dist/src/types/http.d.ts.map +0 -1
  173. package/dist/src/types/internal.d.ts.map +0 -1
  174. package/dist/src/types/internal.js.map +0 -1
  175. package/dist/src/types/result.d.ts.map +0 -1
  176. package/dist/src/types/result.js.map +0 -1
  177. package/dist/src/utils/crypto.d.ts.map +0 -1
  178. package/dist/src/utils/crypto.js.map +0 -1
  179. package/dist/src/utils/policyTrace.d.ts.map +0 -1
  180. package/dist/src/utils/policyTrace.js.map +0 -1
  181. package/dist/src/utils/stableKey.d.ts.map +0 -1
  182. package/dist/src/utils/stableKey.js.map +0 -1
  183. package/dist/src/utils/url.d.ts.map +0 -1
  184. package/dist/src/utils/url.js.map +0 -1
  185. package/dist/tests/adapter-serializer.test.d.ts +0 -2
  186. package/dist/tests/adapter-serializer.test.d.ts.map +0 -1
  187. package/dist/tests/adapter-serializer.test.js +0 -59
  188. package/dist/tests/adapter-serializer.test.js.map +0 -1
  189. package/dist/tests/auth-refresh.test.d.ts +0 -2
  190. package/dist/tests/auth-refresh.test.d.ts.map +0 -1
  191. package/dist/tests/auth-refresh.test.js +0 -75
  192. package/dist/tests/auth-refresh.test.js.map +0 -1
  193. package/dist/tests/browser-runtime.smoke.test.d.ts +0 -2
  194. package/dist/tests/browser-runtime.smoke.test.d.ts.map +0 -1
  195. package/dist/tests/browser-runtime.smoke.test.js +0 -17
  196. package/dist/tests/browser-runtime.smoke.test.js.map +0 -1
  197. package/dist/tests/chaos-heavy.test.d.ts +0 -2
  198. package/dist/tests/chaos-heavy.test.d.ts.map +0 -1
  199. package/dist/tests/chaos-heavy.test.js +0 -164
  200. package/dist/tests/chaos-heavy.test.js.map +0 -1
  201. package/dist/tests/circuit-breaker.test.d.ts +0 -2
  202. package/dist/tests/circuit-breaker.test.d.ts.map +0 -1
  203. package/dist/tests/circuit-breaker.test.js +0 -184
  204. package/dist/tests/circuit-breaker.test.js.map +0 -1
  205. package/dist/tests/client.integration.test.d.ts +0 -2
  206. package/dist/tests/client.integration.test.d.ts.map +0 -1
  207. package/dist/tests/client.integration.test.js +0 -63
  208. package/dist/tests/client.integration.test.js.map +0 -1
  209. package/dist/tests/compose.test.d.ts +0 -2
  210. package/dist/tests/compose.test.d.ts.map +0 -1
  211. package/dist/tests/compose.test.js +0 -25
  212. package/dist/tests/compose.test.js.map +0 -1
  213. package/dist/tests/concurrency-limit.test.d.ts +0 -2
  214. package/dist/tests/concurrency-limit.test.d.ts.map +0 -1
  215. package/dist/tests/concurrency-limit.test.js +0 -87
  216. package/dist/tests/concurrency-limit.test.js.map +0 -1
  217. package/dist/tests/crypto-utils.test.d.ts +0 -2
  218. package/dist/tests/crypto-utils.test.d.ts.map +0 -1
  219. package/dist/tests/crypto-utils.test.js +0 -39
  220. package/dist/tests/crypto-utils.test.js.map +0 -1
  221. package/dist/tests/deadline-middleware.test.d.ts +0 -2
  222. package/dist/tests/deadline-middleware.test.d.ts.map +0 -1
  223. package/dist/tests/deadline-middleware.test.js +0 -38
  224. package/dist/tests/deadline-middleware.test.js.map +0 -1
  225. package/dist/tests/dedupe-middleware.test.d.ts +0 -2
  226. package/dist/tests/dedupe-middleware.test.d.ts.map +0 -1
  227. package/dist/tests/dedupe-middleware.test.js +0 -56
  228. package/dist/tests/dedupe-middleware.test.js.map +0 -1
  229. package/dist/tests/default-timeout.test.d.ts +0 -2
  230. package/dist/tests/default-timeout.test.d.ts.map +0 -1
  231. package/dist/tests/default-timeout.test.js +0 -28
  232. package/dist/tests/default-timeout.test.js.map +0 -1
  233. package/dist/tests/diagnostics-exporters.test.d.ts +0 -2
  234. package/dist/tests/diagnostics-exporters.test.d.ts.map +0 -1
  235. package/dist/tests/diagnostics-exporters.test.js +0 -41
  236. package/dist/tests/diagnostics-exporters.test.js.map +0 -1
  237. package/dist/tests/diagnostics.test.d.ts +0 -2
  238. package/dist/tests/diagnostics.test.d.ts.map +0 -1
  239. package/dist/tests/diagnostics.test.js +0 -38
  240. package/dist/tests/diagnostics.test.js.map +0 -1
  241. package/dist/tests/error-metadata.test.d.ts +0 -2
  242. package/dist/tests/error-metadata.test.d.ts.map +0 -1
  243. package/dist/tests/error-metadata.test.js +0 -23
  244. package/dist/tests/error-metadata.test.js.map +0 -1
  245. package/dist/tests/execute-timeout.test.d.ts +0 -2
  246. package/dist/tests/execute-timeout.test.d.ts.map +0 -1
  247. package/dist/tests/execute-timeout.test.js +0 -30
  248. package/dist/tests/execute-timeout.test.js.map +0 -1
  249. package/dist/tests/fallback-validation-stale-policy.test.d.ts +0 -2
  250. package/dist/tests/fallback-validation-stale-policy.test.d.ts.map +0 -1
  251. package/dist/tests/fallback-validation-stale-policy.test.js +0 -138
  252. package/dist/tests/fallback-validation-stale-policy.test.js.map +0 -1
  253. package/dist/tests/form-serializer.test.d.ts +0 -2
  254. package/dist/tests/form-serializer.test.d.ts.map +0 -1
  255. package/dist/tests/form-serializer.test.js +0 -16
  256. package/dist/tests/form-serializer.test.js.map +0 -1
  257. package/dist/tests/hedge.test.d.ts +0 -2
  258. package/dist/tests/hedge.test.d.ts.map +0 -1
  259. package/dist/tests/hedge.test.js +0 -45
  260. package/dist/tests/hedge.test.js.map +0 -1
  261. package/dist/tests/http-cache.test.d.ts +0 -2
  262. package/dist/tests/http-cache.test.d.ts.map +0 -1
  263. package/dist/tests/http-cache.test.js +0 -60
  264. package/dist/tests/http-cache.test.js.map +0 -1
  265. package/dist/tests/idempotency-key.test.d.ts +0 -2
  266. package/dist/tests/idempotency-key.test.d.ts.map +0 -1
  267. package/dist/tests/idempotency-key.test.js +0 -31
  268. package/dist/tests/idempotency-key.test.js.map +0 -1
  269. package/dist/tests/instrumented-adapter.test.d.ts +0 -2
  270. package/dist/tests/instrumented-adapter.test.d.ts.map +0 -1
  271. package/dist/tests/instrumented-adapter.test.js +0 -33
  272. package/dist/tests/instrumented-adapter.test.js.map +0 -1
  273. package/dist/tests/interceptor-order.test.d.ts +0 -2
  274. package/dist/tests/interceptor-order.test.d.ts.map +0 -1
  275. package/dist/tests/interceptor-order.test.js +0 -38
  276. package/dist/tests/interceptor-order.test.js.map +0 -1
  277. package/dist/tests/invariant-fuzz.test.d.ts +0 -2
  278. package/dist/tests/invariant-fuzz.test.d.ts.map +0 -1
  279. package/dist/tests/invariant-fuzz.test.js +0 -149
  280. package/dist/tests/invariant-fuzz.test.js.map +0 -1
  281. package/dist/tests/json-helper.test.d.ts +0 -2
  282. package/dist/tests/json-helper.test.d.ts.map +0 -1
  283. package/dist/tests/json-helper.test.js +0 -42
  284. package/dist/tests/json-helper.test.js.map +0 -1
  285. package/dist/tests/observability.test.d.ts +0 -2
  286. package/dist/tests/observability.test.d.ts.map +0 -1
  287. package/dist/tests/observability.test.js +0 -59
  288. package/dist/tests/observability.test.js.map +0 -1
  289. package/dist/tests/offline-queue.test.d.ts +0 -2
  290. package/dist/tests/offline-queue.test.d.ts.map +0 -1
  291. package/dist/tests/offline-queue.test.js +0 -35
  292. package/dist/tests/offline-queue.test.js.map +0 -1
  293. package/dist/tests/otel-mapping.test.d.ts +0 -2
  294. package/dist/tests/otel-mapping.test.d.ts.map +0 -1
  295. package/dist/tests/otel-mapping.test.js +0 -20
  296. package/dist/tests/otel-mapping.test.js.map +0 -1
  297. package/dist/tests/policy-guardrails.test.d.ts +0 -2
  298. package/dist/tests/policy-guardrails.test.d.ts.map +0 -1
  299. package/dist/tests/policy-guardrails.test.js +0 -25
  300. package/dist/tests/policy-guardrails.test.js.map +0 -1
  301. package/dist/tests/presets.test.d.ts +0 -2
  302. package/dist/tests/presets.test.d.ts.map +0 -1
  303. package/dist/tests/presets.test.js +0 -41
  304. package/dist/tests/presets.test.js.map +0 -1
  305. package/dist/tests/public-api.contract.test.d.ts +0 -2
  306. package/dist/tests/public-api.contract.test.d.ts.map +0 -1
  307. package/dist/tests/public-api.contract.test.js +0 -25
  308. package/dist/tests/public-api.contract.test.js.map +0 -1
  309. package/dist/tests/redaction.test.d.ts +0 -2
  310. package/dist/tests/redaction.test.d.ts.map +0 -1
  311. package/dist/tests/redaction.test.js +0 -23
  312. package/dist/tests/redaction.test.js.map +0 -1
  313. package/dist/tests/resilience-shock.test.d.ts +0 -2
  314. package/dist/tests/resilience-shock.test.d.ts.map +0 -1
  315. package/dist/tests/resilience-shock.test.js +0 -114
  316. package/dist/tests/resilience-shock.test.js.map +0 -1
  317. package/dist/tests/retry-after-budget.test.d.ts +0 -2
  318. package/dist/tests/retry-after-budget.test.d.ts.map +0 -1
  319. package/dist/tests/retry-after-budget.test.js +0 -72
  320. package/dist/tests/retry-after-budget.test.js.map +0 -1
  321. package/dist/tests/retry-policy-trace.test.d.ts +0 -2
  322. package/dist/tests/retry-policy-trace.test.d.ts.map +0 -1
  323. package/dist/tests/retry-policy-trace.test.js +0 -35
  324. package/dist/tests/retry-policy-trace.test.js.map +0 -1
  325. package/dist/tests/retry-policy.test.d.ts +0 -2
  326. package/dist/tests/retry-policy.test.d.ts.map +0 -1
  327. package/dist/tests/retry-policy.test.js +0 -51
  328. package/dist/tests/retry-policy.test.js.map +0 -1
  329. package/dist/tests/retry.stress.test.d.ts +0 -2
  330. package/dist/tests/retry.stress.test.d.ts.map +0 -1
  331. package/dist/tests/retry.stress.test.js +0 -21
  332. package/dist/tests/retry.stress.test.js.map +0 -1
  333. package/dist/tests/storage-adapters.test.d.ts +0 -2
  334. package/dist/tests/storage-adapters.test.d.ts.map +0 -1
  335. package/dist/tests/storage-adapters.test.js +0 -109
  336. package/dist/tests/storage-adapters.test.js.map +0 -1
  337. package/dist/tests/traffic-load.test.d.ts +0 -2
  338. package/dist/tests/traffic-load.test.d.ts.map +0 -1
  339. package/dist/tests/traffic-load.test.js +0 -91
  340. package/dist/tests/traffic-load.test.js.map +0 -1
  341. /package/dist/{src/adapters → adapters}/fetchAdapter.d.ts +0 -0
  342. /package/dist/{src/adapters → adapters}/fetchAdapter.js +0 -0
  343. /package/dist/{src/adapters → adapters}/instrumentedAdapter.d.ts +0 -0
  344. /package/dist/{src/adapters → adapters}/instrumentedAdapter.js +0 -0
  345. /package/dist/{src/adapters → adapters}/storage/encryptedStorage.d.ts +0 -0
  346. /package/dist/{src/adapters → adapters}/storage/encryptedStorage.js +0 -0
  347. /package/dist/{src/adapters → adapters}/storage/indexedDBAdapter.d.ts +0 -0
  348. /package/dist/{src/adapters → adapters}/storage/indexedDBAdapter.js +0 -0
  349. /package/dist/{src/client → client}/createClient.d.ts +0 -0
  350. /package/dist/{src/client → client}/createClient.js +0 -0
  351. /package/dist/{src/executor → executor}/execute.d.ts +0 -0
  352. /package/dist/{src/executor → executor}/execute.js +0 -0
  353. /package/dist/{src/middleware → middleware}/authRefresh.d.ts +0 -0
  354. /package/dist/{src/middleware → middleware}/authRefresh.js +0 -0
  355. /package/dist/{src/middleware → middleware}/circuitBreaker.d.ts +0 -0
  356. /package/dist/{src/middleware → middleware}/circuitBreaker.js +0 -0
  357. /package/dist/{src/middleware → middleware}/circuitBreakerKeys.d.ts +0 -0
  358. /package/dist/{src/middleware → middleware}/circuitBreakerKeys.js +0 -0
  359. /package/dist/{src/middleware → middleware}/compose.d.ts +0 -0
  360. /package/dist/{src/middleware → middleware}/compose.js +0 -0
  361. /package/dist/{src/middleware → middleware}/concurrencyLimit.d.ts +0 -0
  362. /package/dist/{src/middleware → middleware}/concurrencyLimit.js +0 -0
  363. /package/dist/{src/middleware → middleware}/deadline.d.ts +0 -0
  364. /package/dist/{src/middleware → middleware}/deadline.js +0 -0
  365. /package/dist/{src/middleware → middleware}/dedupe.d.ts +0 -0
  366. /package/dist/{src/middleware → middleware}/dedupe.js +0 -0
  367. /package/dist/{src/middleware → middleware}/defaultTimeout.d.ts +0 -0
  368. /package/dist/{src/middleware → middleware}/defaultTimeout.js +0 -0
  369. /package/dist/{src/middleware → middleware}/diagnostics.d.ts +0 -0
  370. /package/dist/{src/middleware → middleware}/diagnostics.js +0 -0
  371. /package/dist/{src/middleware → middleware}/diagnosticsExporters.d.ts +0 -0
  372. /package/dist/{src/middleware → middleware}/diagnosticsExporters.js +0 -0
  373. /package/dist/{src/middleware → middleware}/fallback.d.ts +0 -0
  374. /package/dist/{src/middleware → middleware}/fallback.js +0 -0
  375. /package/dist/{src/middleware → middleware}/hedge.d.ts +0 -0
  376. /package/dist/{src/middleware → middleware}/hedge.js +0 -0
  377. /package/dist/{src/middleware → middleware}/httpCache.d.ts +0 -0
  378. /package/dist/{src/middleware → middleware}/httpCache.js +0 -0
  379. /package/dist/{src/middleware → middleware}/idempotencyKey.d.ts +0 -0
  380. /package/dist/{src/middleware → middleware}/idempotencyKey.js +0 -0
  381. /package/dist/{src/middleware → middleware}/offlineQueue.d.ts +0 -0
  382. /package/dist/{src/middleware → middleware}/offlineQueue.js +0 -0
  383. /package/dist/{src/middleware → middleware}/presets.d.ts +0 -0
  384. /package/dist/{src/middleware → middleware}/presets.js +0 -0
  385. /package/dist/{src/middleware → middleware}/retry.d.ts +0 -0
  386. /package/dist/{src/middleware → middleware}/retry.js +0 -0
  387. /package/dist/{src/middleware → middleware}/stalePolicy.d.ts +0 -0
  388. /package/dist/{src/middleware → middleware}/stalePolicy.js +0 -0
  389. /package/dist/{src/middleware → middleware}/validation.d.ts +0 -0
  390. /package/dist/{src/middleware → middleware}/validation.js +0 -0
  391. /package/dist/{src/node → node}/fsAdapter.d.ts +0 -0
  392. /package/dist/{src/node → node}/fsAdapter.js +0 -0
  393. /package/dist/{src/node → node}/index.d.ts +0 -0
  394. /package/dist/{src/node → node}/index.js +0 -0
  395. /package/dist/{src/observability → observability}/otelMapping.d.ts +0 -0
  396. /package/dist/{src/observability → observability}/otelMapping.js +0 -0
  397. /package/dist/{src/observability → observability}/otelProfiles.d.ts +0 -0
  398. /package/dist/{src/observability → observability}/otelProfiles.js +0 -0
  399. /package/dist/{src/observability → observability}/redaction.d.ts +0 -0
  400. /package/dist/{src/observability → observability}/redaction.js +0 -0
  401. /package/dist/{src/policy → policy}/guardrails.d.ts +0 -0
  402. /package/dist/{src/policy → policy}/guardrails.js +0 -0
  403. /package/dist/{src/response → response}/response.d.ts +0 -0
  404. /package/dist/{src/response → response}/response.js +0 -0
  405. /package/dist/{src/serializers → serializers}/formUrlEncodedSerializer.d.ts +0 -0
  406. /package/dist/{src/serializers → serializers}/formUrlEncodedSerializer.js +0 -0
  407. /package/dist/{src/serializers → serializers}/jsonBodySerializer.d.ts +0 -0
  408. /package/dist/{src/serializers → serializers}/jsonBodySerializer.js +0 -0
  409. /package/dist/{src/types → types}/events.d.ts +0 -0
  410. /package/dist/{src/types → types}/events.js +0 -0
  411. /package/dist/{src/types → types}/http.d.ts +0 -0
  412. /package/dist/{src/types → types}/http.js +0 -0
  413. /package/dist/{src/types → types}/internal.d.ts +0 -0
  414. /package/dist/{src/types → types}/internal.js +0 -0
  415. /package/dist/{src/types → types}/result.d.ts +0 -0
  416. /package/dist/{src/types → types}/result.js +0 -0
  417. /package/dist/{src/utils → utils}/crypto.d.ts +0 -0
  418. /package/dist/{src/utils → utils}/crypto.js +0 -0
  419. /package/dist/{src/utils → utils}/policyTrace.d.ts +0 -0
  420. /package/dist/{src/utils → utils}/policyTrace.js +0 -0
  421. /package/dist/{src/utils → utils}/stableKey.d.ts +0 -0
  422. /package/dist/{src/utils → utils}/stableKey.js +0 -0
  423. /package/dist/{src/utils → utils}/url.d.ts +0 -0
  424. /package/dist/{src/utils → utils}/url.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"stableKey.js","sourceRoot":"","sources":["../../../src/utils/stableKey.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoD;IAClF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;SAChF,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAA8B;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IACxC,MAAM,SAAS,CAAC,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GACvD;KAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,MAAM;CAAE,GACtE,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,EAAE,GACzC;KAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM;CAAE,GACpC,EAAE,CAAC;AAEb,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAC9B,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,EAAE,GAC/B,IAAI,GACJ,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,EAAE,GACjC,IAAI,GACJ,CAAC,CAAC;AAEV;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS,MAAM;IACtD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=adapter-serializer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter-serializer.test.d.ts","sourceRoot":"","sources":["../../tests/adapter-serializer.test.ts"],"names":[],"mappings":""}
@@ -1,59 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { createClient } from "../src/index";
3
- describe("adapter and serializer boundaries", () => {
4
- afterEach(() => {
5
- vi.restoreAllMocks();
6
- });
7
- it("uses custom adapter instead of global fetch", async () => {
8
- const fetchSpy = vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response("fallback", { status: 200 }));
9
- const calls = [];
10
- const adapter = async (url, init) => {
11
- calls.push({ url, ...(init.method !== undefined ? { method: init.method } : {}) });
12
- return new Response(JSON.stringify({ ok: true }), {
13
- status: 200,
14
- headers: { "content-type": "application/json" },
15
- });
16
- };
17
- const client = createClient({ adapter });
18
- const data = await client.getJson("https://api.example.com/ping");
19
- expect(data.ok).toBe(true);
20
- expect(calls).toEqual([{ url: "https://api.example.com/ping", method: "GET" }]);
21
- expect(fetchSpy).not.toHaveBeenCalled();
22
- });
23
- it("keeps relative URL when baseURL is not provided", async () => {
24
- const adapter = vi.fn(async (_url, _init) => new Response("{}", { status: 200 }));
25
- const client = createClient({ adapter });
26
- await client.get("health");
27
- expect(adapter).toHaveBeenCalledTimes(1);
28
- expect(adapter.mock.calls[0]?.[0]).toBe("health");
29
- });
30
- it("uses custom serializer and content type for object body", async () => {
31
- const adapter = vi.fn(async (_url, init) => {
32
- return new Response("{}", {
33
- status: 200,
34
- headers: { "content-type": "application/json" },
35
- });
36
- });
37
- const client = createClient({
38
- adapter,
39
- bodySerializer: {
40
- serialize(body) {
41
- if (typeof body === "object" && body !== null) {
42
- return {
43
- payload: `payload=${JSON.stringify(body)}`,
44
- contentType: "application/x-www-form-urlencoded",
45
- };
46
- }
47
- return { payload: body == null ? null : String(body) };
48
- },
49
- },
50
- });
51
- await client.post("https://api.example.com/form", { a: 1 });
52
- const init = adapter.mock.calls[0]?.[1];
53
- expect(init).toBeDefined();
54
- expect(init?.body).toBe('payload={"a":1}');
55
- const headers = (init?.headers ?? {});
56
- expect(headers["Content-Type"]).toBe("application/x-www-form-urlencoded");
57
- });
58
- });
59
- //# sourceMappingURL=adapter-serializer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter-serializer.test.js","sourceRoot":"","sources":["../../tests/adapter-serializer.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=auth-refresh.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-refresh.test.d.ts","sourceRoot":"","sources":["../../tests/auth-refresh.test.ts"],"names":[],"mappings":""}
@@ -1,75 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { authRefresh } from "../src/middleware/authRefresh";
3
- import { HttpResponse } from "../src/response/response";
4
- describe("authRefresh middleware", () => {
5
- it("refreshes token and retries once on 401", async () => {
6
- const refresh = vi.fn(async () => "token-2");
7
- const middleware = authRefresh({ refresh });
8
- const seenAuth = [];
9
- const req = {
10
- method: "GET",
11
- url: "/profile",
12
- headers: { Authorization: "Bearer token-1" },
13
- };
14
- const res = await middleware(req, async (nextReq) => {
15
- seenAuth.push(nextReq.headers?.Authorization ?? "");
16
- if (seenAuth.length === 1) {
17
- return new HttpResponse(new Response("unauthorized", { status: 401 }));
18
- }
19
- return new HttpResponse(new Response("ok", { status: 200 }));
20
- });
21
- expect(res.status).toBe(200);
22
- expect(refresh).toHaveBeenCalledTimes(1);
23
- expect(seenAuth).toEqual(["Bearer token-1", "Bearer token-2"]);
24
- });
25
- it("shares a single refresh call across concurrent 401s", async () => {
26
- let refreshCount = 0;
27
- const middleware = authRefresh({
28
- refresh: async () => {
29
- refreshCount += 1;
30
- return "shared-token";
31
- },
32
- });
33
- const reqA = { method: "GET", url: "/a" };
34
- const reqB = { method: "GET", url: "/b" };
35
- const next = async (req) => {
36
- if (req.headers?.Authorization === "Bearer shared-token") {
37
- return new HttpResponse(new Response("ok", { status: 200 }));
38
- }
39
- return new HttpResponse(new Response("unauthorized", { status: 401 }));
40
- };
41
- const [resA, resB] = await Promise.all([
42
- middleware(reqA, next),
43
- middleware(reqB, next),
44
- ]);
45
- expect(resA.status).toBe(200);
46
- expect(resB.status).toBe(200);
47
- expect(refreshCount).toBe(1);
48
- });
49
- it("throws wrapped error when refresh fails", async () => {
50
- const rootError = new Error("refresh down");
51
- const middleware = authRefresh({
52
- refresh: async () => {
53
- throw rootError;
54
- },
55
- });
56
- await expect(middleware({ method: "GET", url: "/x" }, async () => {
57
- return new HttpResponse(new Response("unauthorized", { status: 401 }));
58
- })).rejects.toMatchObject({
59
- message: "pureq: token refresh failed",
60
- code: "PUREQ_AUTH_REFRESH_FAILED",
61
- kind: "auth-error",
62
- cause: rootError,
63
- });
64
- });
65
- it("does not refresh when maxAttempts is zero", async () => {
66
- const refresh = vi.fn(async () => "unused");
67
- const middleware = authRefresh({ refresh, maxAttempts: 0 });
68
- const res = await middleware({ method: "GET", url: "/x" }, async () => {
69
- return new HttpResponse(new Response("unauthorized", { status: 401 }));
70
- });
71
- expect(res.status).toBe(401);
72
- expect(refresh).not.toHaveBeenCalled();
73
- });
74
- });
75
- //# sourceMappingURL=auth-refresh.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-refresh.test.js","sourceRoot":"","sources":["../../tests/auth-refresh.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=browser-runtime.smoke.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-runtime.smoke.test.d.ts","sourceRoot":"","sources":["../../tests/browser-runtime.smoke.test.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { createClient } from "../src/index";
3
- describe("browser runtime smoke", () => {
4
- afterEach(() => {
5
- vi.restoreAllMocks();
6
- });
7
- it("executes basic request flow in browser-like environment", async () => {
8
- vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response(JSON.stringify({ ok: true }), {
9
- status: 200,
10
- headers: { "content-type": "application/json" },
11
- }));
12
- const client = createClient();
13
- const data = await client.getJson("https://example.com/health");
14
- expect(data.ok).toBe(true);
15
- });
16
- });
17
- //# sourceMappingURL=browser-runtime.smoke.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-runtime.smoke.test.js","sourceRoot":"","sources":["../../tests/browser-runtime.smoke.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACzC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAkB,4BAA4B,CAAC,CAAC;QAEjF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=chaos-heavy.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chaos-heavy.test.d.ts","sourceRoot":"","sources":["../../tests/chaos-heavy.test.ts"],"names":[],"mappings":""}
@@ -1,164 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { createCircuitBreaker, PureqCircuitOpenError } from "../src/middleware/circuitBreaker";
3
- import { concurrencyLimit } from "../src/middleware/concurrencyLimit";
4
- import { dedupe } from "../src/middleware/dedupe";
5
- import { retry } from "../src/middleware/retry";
6
- import { compose } from "../src/middleware/compose";
7
- import { execute } from "../src/executor/execute";
8
- import { HttpResponse } from "../src/response/response";
9
- import { INTERNAL_MIDDLEWARES } from "../src/types/internal";
10
- function sleep(ms) {
11
- return new Promise((resolve) => setTimeout(resolve, ms));
12
- }
13
- function makePrng(seed = 0x12345678) {
14
- let value = seed >>> 0;
15
- return () => {
16
- value = (value * 1664525 + 1013904223) >>> 0;
17
- return value / 0x100000000;
18
- };
19
- }
20
- afterEach(() => {
21
- vi.useRealTimers();
22
- vi.restoreAllMocks();
23
- });
24
- describe("chaos/heavy: half-open stampede", () => {
25
- it("allows only one half-open probe under concurrent burst", async () => {
26
- vi.useFakeTimers();
27
- vi.setSystemTime(new Date("2026-01-01T00:00:00.000Z"));
28
- const breaker = createCircuitBreaker({
29
- failureThreshold: 1,
30
- successThreshold: 1,
31
- cooldownMs: 1000,
32
- keyBuilder: () => "dep:critical",
33
- });
34
- const req = { method: "GET", url: "/critical" };
35
- await expect(breaker.middleware(req, async () => {
36
- throw new Error("boom");
37
- })).rejects.toThrow("boom");
38
- vi.setSystemTime(new Date("2026-01-01T00:00:01.100Z"));
39
- let nextCalls = 0;
40
- let releaseProbe;
41
- const probePromise = breaker.middleware(req, async () => {
42
- nextCalls += 1;
43
- await new Promise((resolve) => {
44
- releaseProbe = resolve;
45
- });
46
- return new HttpResponse(new Response("ok", { status: 200 }));
47
- });
48
- const followers = await Promise.allSettled(Array.from({ length: 40 }, () => breaker.middleware(req, async () => {
49
- nextCalls += 1;
50
- return new HttpResponse(new Response("unexpected", { status: 200 }));
51
- })));
52
- const openErrors = followers.filter((entry) => entry.status === "rejected" &&
53
- entry.reason instanceof PureqCircuitOpenError).length;
54
- releaseProbe?.();
55
- const probe = await probePromise;
56
- expect(probe.status).toBe(200);
57
- expect(nextCalls).toBe(1);
58
- expect(openErrors).toBe(40);
59
- vi.useRealTimers();
60
- });
61
- });
62
- describe("chaos/heavy: mixed failure traffic", () => {
63
- it("settles large mixed traffic without deadlock and respects concurrency ceiling", async () => {
64
- const prng = makePrng(42);
65
- let inFlight = 0;
66
- let maxInFlight = 0;
67
- const base = async (_req) => {
68
- inFlight += 1;
69
- maxInFlight = Math.max(maxInFlight, inFlight);
70
- try {
71
- await sleep(Math.floor(prng() * 4));
72
- const r = prng();
73
- if (r < 0.12) {
74
- throw new TypeError("network chaos");
75
- }
76
- if (r < 0.32) {
77
- return new HttpResponse(new Response("temporary", { status: 503 }));
78
- }
79
- return new HttpResponse(new Response("ok", { status: 200 }));
80
- }
81
- finally {
82
- inFlight -= 1;
83
- }
84
- };
85
- const pipeline = compose([
86
- concurrencyLimit({ maxConcurrent: 20 }),
87
- dedupe(),
88
- retry({
89
- maxRetries: 2,
90
- delay: 0,
91
- backoff: false,
92
- retryOnStatus: [503],
93
- retryOnNetworkError: true,
94
- }),
95
- ], base);
96
- const total = 320;
97
- const tasks = Array.from({ length: total }, (_, i) => pipeline({
98
- method: "GET",
99
- url: `https://example.com/hot/${i % 80}`,
100
- [INTERNAL_MIDDLEWARES]: [],
101
- }).then(() => ({ ok: true }), () => ({ ok: false })));
102
- const startedAt = Date.now();
103
- const settled = await Promise.all(tasks);
104
- const durationMs = Date.now() - startedAt;
105
- const success = settled.filter((x) => x.ok).length;
106
- const failure = settled.length - success;
107
- console.info("[pureq][chaos-metrics]", {
108
- scenario: "mixed-failure-traffic",
109
- total,
110
- success,
111
- failure,
112
- maxInFlight,
113
- durationMs,
114
- throughputRps: Number((total / Math.max(durationMs / 1000, 0.001)).toFixed(2)),
115
- });
116
- expect(settled).toHaveLength(total);
117
- expect(maxInFlight).toBeLessThanOrEqual(20);
118
- expect(success).toBeGreaterThan(0);
119
- expect(failure).toBeGreaterThan(0);
120
- });
121
- });
122
- describe("chaos/heavy: hostile input", () => {
123
- it("handles hostile query keys without prototype pollution", async () => {
124
- const query = Object.create(null);
125
- query["__proto__"] = "x";
126
- query["constructor"] = "y";
127
- query["prototype"] = "z";
128
- query["normal"] = "ok";
129
- let capturedUrl = "";
130
- await execute({
131
- method: "GET",
132
- url: "/hostile",
133
- query,
134
- }, {
135
- adapter: async (url) => {
136
- capturedUrl = url;
137
- return new Response("ok", { status: 200 });
138
- },
139
- });
140
- expect(capturedUrl.includes("__proto__=x")).toBe(true);
141
- expect(capturedUrl.includes("constructor=y")).toBe(true);
142
- expect(capturedUrl.includes("prototype=z")).toBe(true);
143
- expect({}.polluted).toBeUndefined();
144
- });
145
- it("bypasses dedupe safely for circular request body", async () => {
146
- const middleware = dedupe({ includeBody: true, methods: ["POST"] });
147
- const circular = { a: 1 };
148
- circular.self = circular;
149
- let upstreamCalls = 0;
150
- const send = () => middleware({
151
- method: "POST",
152
- url: "/circular",
153
- body: circular,
154
- }, async () => {
155
- upstreamCalls += 1;
156
- return new HttpResponse(new Response("ok", { status: 200 }));
157
- });
158
- const [r1, r2] = await Promise.all([send(), send()]);
159
- expect(r1.status).toBe(200);
160
- expect(r2.status).toBe(200);
161
- expect(upstreamCalls).toBe(2);
162
- });
163
- });
164
- //# sourceMappingURL=chaos-heavy.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chaos-heavy.test.js","sourceRoot":"","sources":["../../tests/chaos-heavy.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=circuit-breaker.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.test.d.ts","sourceRoot":"","sources":["../../tests/circuit-breaker.test.ts"],"names":[],"mappings":""}
@@ -1,184 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { circuitBreaker, createCircuitBreaker } from "../src/middleware/circuitBreaker";
3
- import { createClient } from "../src/client/createClient";
4
- import { keyByHost, keyByMethodAndPath } from "../src/middleware/circuitBreakerKeys";
5
- describe("circuit breaker middleware", () => {
6
- afterEach(() => {
7
- vi.useRealTimers();
8
- vi.restoreAllMocks();
9
- });
10
- it("opens after threshold failures and short-circuits subsequent requests", async () => {
11
- vi.spyOn(globalThis, "fetch").mockRejectedValue(new TypeError("downstream error"));
12
- const client = createClient().use(circuitBreaker({
13
- failureThreshold: 2,
14
- cooldownMs: 1000,
15
- }));
16
- const first = await client.getResult("https://api.example.com/health");
17
- const second = await client.getResult("https://api.example.com/health");
18
- const third = await client.getResult("https://api.example.com/health");
19
- expect(first.ok).toBe(false);
20
- expect(second.ok).toBe(false);
21
- expect(third.ok).toBe(false);
22
- if (!third.ok) {
23
- expect(third.error.kind).toBe("circuit-open");
24
- }
25
- expect(globalThis.fetch).toHaveBeenCalledTimes(2);
26
- });
27
- it("transitions to half-open after cooldown and closes on successful probe", async () => {
28
- vi.useFakeTimers();
29
- vi.setSystemTime(new Date("2026-01-01T00:00:00.000Z"));
30
- const fetchMock = vi
31
- .spyOn(globalThis, "fetch")
32
- .mockRejectedValueOnce(new TypeError("temporary outage"))
33
- .mockResolvedValueOnce(new Response("ok", { status: 200 }))
34
- .mockResolvedValueOnce(new Response("ok", { status: 200 }));
35
- const client = createClient().use(circuitBreaker({
36
- failureThreshold: 1,
37
- successThreshold: 1,
38
- cooldownMs: 5000,
39
- }));
40
- const first = await client.getResult("https://api.example.com/health");
41
- expect(first.ok).toBe(false);
42
- const second = await client.getResult("https://api.example.com/health");
43
- expect(second.ok).toBe(false);
44
- if (!second.ok) {
45
- expect(second.error.kind).toBe("circuit-open");
46
- }
47
- vi.setSystemTime(new Date("2026-01-01T00:00:05.000Z"));
48
- const third = await client.getResult("https://api.example.com/health");
49
- expect(third.ok).toBe(true);
50
- const fourth = await client.getResult("https://api.example.com/health");
51
- expect(fourth.ok).toBe(true);
52
- expect(fetchMock).toHaveBeenCalledTimes(3);
53
- });
54
- it("can trip on HTTP status without thrown error", async () => {
55
- const fetchMock = vi
56
- .spyOn(globalThis, "fetch")
57
- .mockResolvedValueOnce(new Response("bad", { status: 503 }))
58
- .mockResolvedValueOnce(new Response("ok", { status: 200 }));
59
- const client = createClient().use(circuitBreaker({
60
- failureThreshold: 1,
61
- }));
62
- const first = await client.get("https://api.example.com/health");
63
- expect(first.status).toBe(503);
64
- const second = await client.getResult("https://api.example.com/health");
65
- expect(second.ok).toBe(false);
66
- if (!second.ok) {
67
- expect(second.error.kind).toBe("circuit-open");
68
- }
69
- expect(fetchMock).toHaveBeenCalledTimes(1);
70
- });
71
- it("isolates circuit state per dependency key", async () => {
72
- const fetchMock = vi
73
- .spyOn(globalThis, "fetch")
74
- .mockImplementation(async (url) => {
75
- if (String(url).includes("service-a")) {
76
- throw new TypeError("service-a down");
77
- }
78
- return new Response("ok", { status: 200 });
79
- });
80
- const breaker = createCircuitBreaker({
81
- failureThreshold: 1,
82
- keyBuilder: (req) => {
83
- if (req.url.includes("service-a")) {
84
- return "service-a";
85
- }
86
- return "service-b";
87
- },
88
- });
89
- const client = createClient().use(breaker.middleware);
90
- const a1 = await client.getResult("https://service-a/api/health");
91
- const a2 = await client.getResult("https://service-a/api/health");
92
- const b1 = await client.getResult("https://service-b/api/health");
93
- expect(a1.ok).toBe(false);
94
- expect(a2.ok).toBe(false);
95
- if (!a2.ok) {
96
- expect(a2.error.kind).toBe("circuit-open");
97
- }
98
- expect(b1.ok).toBe(true);
99
- expect(fetchMock).toHaveBeenCalledTimes(2);
100
- });
101
- it("exposes snapshot and reset controls", async () => {
102
- vi.spyOn(globalThis, "fetch").mockRejectedValue(new TypeError("downstream error"));
103
- const breaker = createCircuitBreaker({
104
- failureThreshold: 1,
105
- keyBuilder: () => "dep-a",
106
- });
107
- const client = createClient().use(breaker.middleware);
108
- await client.getResult("https://service-a/api/health");
109
- const snapshot = await breaker.snapshot();
110
- expect(snapshot.size).toBe(1);
111
- expect(snapshot.summary.open).toBe(1);
112
- expect(snapshot.summary.closed).toBe(0);
113
- expect(snapshot.summary.halfOpen).toBe(0);
114
- expect(snapshot.entries[0]?.key).toBe("dep-a");
115
- expect(snapshot.entries[0]?.state).toBe("open");
116
- await breaker.reset("dep-a");
117
- expect((await breaker.snapshot()).size).toBe(0);
118
- });
119
- it("evicts oldest circuits when maxEntries is reached", async () => {
120
- vi.spyOn(globalThis, "fetch").mockRejectedValue(new TypeError("downstream error"));
121
- const breaker = createCircuitBreaker({
122
- failureThreshold: 1,
123
- maxEntries: 2,
124
- keyBuilder: (req) => req.url,
125
- });
126
- const client = createClient().use(breaker.middleware);
127
- await client.getResult("https://svc-a.local/health");
128
- await client.getResult("https://svc-b.local/health");
129
- await client.getResult("https://svc-c.local/health");
130
- const snapshot = await breaker.snapshot();
131
- expect(snapshot.size).toBe(2);
132
- const keys = snapshot.entries.map((item) => item.key);
133
- expect(keys).toEqual(["https://svc-b.local/health", "https://svc-c.local/health"]);
134
- });
135
- it("prunes stale circuits by TTL", async () => {
136
- vi.useFakeTimers();
137
- vi.setSystemTime(new Date("2026-01-01T00:00:00.000Z"));
138
- vi.spyOn(globalThis, "fetch").mockRejectedValue(new TypeError("downstream error"));
139
- const breaker = createCircuitBreaker({
140
- failureThreshold: 1,
141
- entryTtlMs: 1000,
142
- keyBuilder: () => "dep-a",
143
- });
144
- const client = createClient().use(breaker.middleware);
145
- await client.getResult("https://svc-a.local/health");
146
- expect((await breaker.snapshot()).size).toBe(1);
147
- vi.setSystemTime(new Date("2026-01-01T00:00:02.000Z"));
148
- expect((await breaker.snapshot()).size).toBe(0);
149
- });
150
- it("provides key preset helpers", () => {
151
- const req = {
152
- method: "GET",
153
- url: "https://api.example.com/v1/users?cursor=1",
154
- };
155
- expect(keyByHost(req)).toBe("host:api.example.com");
156
- expect(keyByMethodAndPath(req)).toBe("path:GET:/v1/users");
157
- });
158
- it("emits onStateChange events", async () => {
159
- vi.useFakeTimers();
160
- vi.setSystemTime(new Date("2026-01-01T00:00:00.000Z"));
161
- const transitions = [];
162
- vi.spyOn(globalThis, "fetch")
163
- .mockRejectedValueOnce(new TypeError("temporary outage"))
164
- .mockResolvedValueOnce(new Response("ok", { status: 200 }));
165
- const breaker = createCircuitBreaker({
166
- failureThreshold: 1,
167
- successThreshold: 1,
168
- cooldownMs: 1000,
169
- keyBuilder: () => "dep-a",
170
- hooks: {
171
- onStateChange: (event) => {
172
- transitions.push(`${event.from}->${event.to}`);
173
- },
174
- },
175
- });
176
- const client = createClient().use(breaker.middleware);
177
- await client.getResult("https://svc-a.local/health");
178
- await client.getResult("https://svc-a.local/health");
179
- vi.setSystemTime(new Date("2026-01-01T00:00:01.000Z"));
180
- await client.getResult("https://svc-a.local/health");
181
- expect(transitions).toEqual(["closed->open", "open->half-open", "half-open->closed"]);
182
- });
183
- });
184
- //# sourceMappingURL=circuit-breaker.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.test.js","sourceRoot":"","sources":["../../tests/circuit-breaker.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.integration.test.d.ts","sourceRoot":"","sources":["../../tests/client.integration.test.ts"],"names":[],"mappings":""}