@pureq/pureq 1.1.6 → 1.1.7

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/dist/adapters/fetchAdapter.d.ts.map +1 -0
  2. package/dist/adapters/fetchAdapter.js.map +1 -0
  3. package/dist/adapters/instrumentedAdapter.d.ts.map +1 -0
  4. package/dist/adapters/instrumentedAdapter.js.map +1 -0
  5. package/dist/adapters/storage/encryptedStorage.d.ts.map +1 -0
  6. package/dist/adapters/storage/encryptedStorage.js.map +1 -0
  7. package/dist/adapters/storage/indexedDBAdapter.d.ts.map +1 -0
  8. package/dist/adapters/storage/indexedDBAdapter.js.map +1 -0
  9. package/dist/client/createClient.d.ts.map +1 -0
  10. package/dist/client/createClient.js.map +1 -0
  11. package/dist/executor/execute.d.ts.map +1 -0
  12. package/dist/executor/execute.js.map +1 -0
  13. package/dist/index.d.ts +42 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +41 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/middleware/authRefresh.d.ts.map +1 -0
  18. package/dist/middleware/authRefresh.js.map +1 -0
  19. package/dist/middleware/circuitBreaker.d.ts.map +1 -0
  20. package/dist/middleware/circuitBreaker.js.map +1 -0
  21. package/dist/middleware/circuitBreakerKeys.d.ts.map +1 -0
  22. package/dist/middleware/circuitBreakerKeys.js.map +1 -0
  23. package/dist/middleware/compose.d.ts.map +1 -0
  24. package/dist/middleware/compose.js.map +1 -0
  25. package/dist/middleware/concurrencyLimit.d.ts.map +1 -0
  26. package/dist/middleware/concurrencyLimit.js.map +1 -0
  27. package/dist/middleware/deadline.d.ts.map +1 -0
  28. package/dist/middleware/deadline.js.map +1 -0
  29. package/dist/middleware/dedupe.d.ts.map +1 -0
  30. package/dist/middleware/dedupe.js.map +1 -0
  31. package/dist/middleware/defaultTimeout.d.ts.map +1 -0
  32. package/dist/middleware/defaultTimeout.js.map +1 -0
  33. package/dist/middleware/diagnostics.d.ts.map +1 -0
  34. package/dist/middleware/diagnostics.js.map +1 -0
  35. package/dist/middleware/diagnosticsExporters.d.ts.map +1 -0
  36. package/dist/middleware/diagnosticsExporters.js.map +1 -0
  37. package/dist/middleware/fallback.d.ts.map +1 -0
  38. package/dist/middleware/fallback.js.map +1 -0
  39. package/dist/middleware/hedge.d.ts.map +1 -0
  40. package/dist/middleware/hedge.js.map +1 -0
  41. package/dist/middleware/httpCache.d.ts.map +1 -0
  42. package/dist/middleware/httpCache.js.map +1 -0
  43. package/dist/middleware/idempotencyKey.d.ts.map +1 -0
  44. package/dist/middleware/idempotencyKey.js.map +1 -0
  45. package/dist/middleware/offlineQueue.d.ts.map +1 -0
  46. package/dist/middleware/offlineQueue.js.map +1 -0
  47. package/dist/middleware/presets.d.ts.map +1 -0
  48. package/dist/middleware/presets.js.map +1 -0
  49. package/dist/middleware/retry.d.ts.map +1 -0
  50. package/dist/middleware/retry.js.map +1 -0
  51. package/dist/middleware/stalePolicy.d.ts.map +1 -0
  52. package/dist/middleware/stalePolicy.js.map +1 -0
  53. package/dist/middleware/validation.d.ts.map +1 -0
  54. package/dist/middleware/validation.js.map +1 -0
  55. package/dist/node/fsAdapter.d.ts.map +1 -0
  56. package/dist/node/fsAdapter.js.map +1 -0
  57. package/dist/node/index.d.ts.map +1 -0
  58. package/dist/node/index.js.map +1 -0
  59. package/dist/observability/otelMapping.d.ts.map +1 -0
  60. package/dist/observability/otelMapping.js.map +1 -0
  61. package/dist/observability/otelProfiles.d.ts.map +1 -0
  62. package/dist/observability/otelProfiles.js.map +1 -0
  63. package/dist/observability/redaction.d.ts.map +1 -0
  64. package/dist/observability/redaction.js.map +1 -0
  65. package/dist/policy/guardrails.d.ts.map +1 -0
  66. package/dist/policy/guardrails.js.map +1 -0
  67. package/dist/response/response.d.ts.map +1 -0
  68. package/dist/response/response.js.map +1 -0
  69. package/dist/serializers/formUrlEncodedSerializer.d.ts.map +1 -0
  70. package/dist/serializers/formUrlEncodedSerializer.js.map +1 -0
  71. package/dist/serializers/jsonBodySerializer.d.ts.map +1 -0
  72. package/dist/serializers/jsonBodySerializer.js.map +1 -0
  73. package/dist/types/events.d.ts.map +1 -0
  74. package/dist/{src/types → types}/events.js.map +1 -1
  75. package/dist/types/http.d.ts.map +1 -0
  76. package/dist/{src/types → types}/http.js.map +1 -1
  77. package/dist/types/internal.d.ts.map +1 -0
  78. package/dist/types/internal.js.map +1 -0
  79. package/dist/types/result.d.ts.map +1 -0
  80. package/dist/types/result.js.map +1 -0
  81. package/dist/utils/crypto.d.ts.map +1 -0
  82. package/dist/utils/crypto.js.map +1 -0
  83. package/dist/utils/policyTrace.d.ts.map +1 -0
  84. package/dist/utils/policyTrace.js.map +1 -0
  85. package/dist/utils/stableKey.d.ts.map +1 -0
  86. package/dist/utils/stableKey.js.map +1 -0
  87. package/dist/utils/url.d.ts.map +1 -0
  88. package/dist/utils/url.js.map +1 -0
  89. package/package.json +19 -19
  90. package/README.md +0 -88
  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":"execute-timeout.test.js","sourceRoot":"","sources":["../../tests/execute-timeout.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,SAAS,GAAG,EAAE;aACjB,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;aAC1B,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YAC9B,OAAO,IAAI,OAAO,CAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACzC,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBACnD,OAAO;gBACT,CAAC;gBACD,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;oBAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,GAAG,OAAO,CAAC;YACtB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,qBAAqB;YAC1B,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fallback-validation-stale-policy.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-validation-stale-policy.test.d.ts","sourceRoot":"","sources":["../../tests/fallback-validation-stale-policy.test.ts"],"names":[],"mappings":""}
@@ -1,138 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { fallback } from "../src/middleware/fallback";
3
- import { validation } from "../src/middleware/validation";
4
- import { resolveStalePolicy } from "../src/middleware/stalePolicy";
5
- import { HttpResponse } from "../src/response/response";
6
- import { getPolicyTrace } from "../src/utils/policyTrace";
7
- describe("fallback middleware", () => {
8
- it("returns fallback value on thrown error", async () => {
9
- const mw = fallback({
10
- value: new HttpResponse(new Response("fallback", { status: 200 })),
11
- });
12
- const req = { method: "GET", url: "/unstable" };
13
- const res = await mw(req, async () => {
14
- throw new Error("boom");
15
- });
16
- expect(res.status).toBe(200);
17
- expect(await res.text()).toBe("fallback");
18
- expect(getPolicyTrace(req)).toHaveLength(1);
19
- });
20
- it("can fallback on non-ok response when when() returns true", async () => {
21
- const mw = fallback({
22
- when: (trigger) => trigger.type === "response" && trigger.response.status === 503,
23
- value: ({ type }) => new HttpResponse(new Response(`from-${type}`, { status: 200 })),
24
- });
25
- const res = await mw({ method: "GET", url: "/service" }, async () => {
26
- return new HttpResponse(new Response("down", { status: 503 }));
27
- });
28
- expect(res.status).toBe(200);
29
- expect(await res.text()).toBe("from-response");
30
- });
31
- it("does not fallback on non-ok response by default", async () => {
32
- const mw = fallback({
33
- value: new HttpResponse(new Response("fallback", { status: 200 })),
34
- });
35
- const res = await mw({ method: "GET", url: "/service" }, async () => {
36
- return new HttpResponse(new Response("bad", { status: 500 }));
37
- });
38
- expect(res.status).toBe(500);
39
- });
40
- it("rethrows error when when() returns false", async () => {
41
- const mw = fallback({
42
- when: () => false,
43
- value: new HttpResponse(new Response("fallback", { status: 200 })),
44
- });
45
- await expect(mw({ method: "GET", url: "/x" }, async () => {
46
- throw new Error("boom");
47
- })).rejects.toThrow("boom");
48
- });
49
- });
50
- describe("validation middleware", () => {
51
- it("passes when validate succeeds", async () => {
52
- const validate = vi.fn(async (data) => {
53
- expect(data).toEqual({ ok: true });
54
- return true;
55
- });
56
- const mw = validation({ validate });
57
- const res = await mw({ method: "GET", url: "/x" }, async () => {
58
- return new HttpResponse(new Response(JSON.stringify({ ok: true }), {
59
- status: 200,
60
- headers: { "content-type": "application/json" },
61
- }));
62
- });
63
- expect(res.status).toBe(200);
64
- expect(validate).toHaveBeenCalledTimes(1);
65
- });
66
- it("skips validation for non-ok responses", async () => {
67
- const validate = vi.fn(() => true);
68
- const mw = validation({ validate });
69
- const res = await mw({ method: "GET", url: "/x" }, async () => {
70
- return new HttpResponse(new Response("bad", { status: 500 }));
71
- });
72
- expect(res.status).toBe(500);
73
- expect(validate).not.toHaveBeenCalled();
74
- });
75
- it("throws wrapped validation error with custom message factory", async () => {
76
- const mw = validation({
77
- validate: () => false,
78
- message: (data) => `invalid:${JSON.stringify(data)}`,
79
- });
80
- await expect(mw({ method: "GET", url: "/x" }, async () => {
81
- return new HttpResponse(new Response(JSON.stringify({ id: "u1" }), {
82
- status: 200,
83
- headers: { "content-type": "application/json" },
84
- }));
85
- })).rejects.toMatchObject({
86
- message: "invalid:{\"id\":\"u1\"}",
87
- code: "PUREQ_VALIDATION_ERROR",
88
- kind: "validation-error",
89
- });
90
- });
91
- it("returns response in silent mode when validation fails", async () => {
92
- const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => { });
93
- const mw = validation({
94
- validate: () => null,
95
- silent: true,
96
- });
97
- const res = await mw({ method: "GET", url: "/x" }, async () => {
98
- return new HttpResponse(new Response(JSON.stringify({ id: "u1" }), {
99
- status: 200,
100
- headers: { "content-type": "application/json" },
101
- }));
102
- });
103
- expect(res.status).toBe(200);
104
- expect(warnSpy).toHaveBeenCalled();
105
- warnSpy.mockRestore();
106
- });
107
- });
108
- describe("resolveStalePolicy", () => {
109
- it("marks fresh and stale-if-error within bounds", () => {
110
- const result = resolveStalePolicy({
111
- storedAt: 100,
112
- now: 150,
113
- ttlMs: 60,
114
- staleIfErrorMs: 20,
115
- });
116
- expect(result.ageMs).toBe(50);
117
- expect(result.isFresh).toBe(true);
118
- expect(result.canServeStaleOnError).toBe(true);
119
- });
120
- it("clamps negative age and expires stale-if-error after window", () => {
121
- const futureStored = resolveStalePolicy({
122
- storedAt: 200,
123
- now: 100,
124
- ttlMs: 10,
125
- staleIfErrorMs: 5,
126
- });
127
- expect(futureStored.ageMs).toBe(0);
128
- const expired = resolveStalePolicy({
129
- storedAt: 100,
130
- now: 130,
131
- ttlMs: 10,
132
- staleIfErrorMs: 5,
133
- });
134
- expect(expired.isFresh).toBe(false);
135
- expect(expired.canServeStaleOnError).toBe(false);
136
- });
137
- });
138
- //# sourceMappingURL=fallback-validation-stale-policy.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-validation-stale-policy.test.js","sourceRoot":"","sources":["../../tests/fallback-validation-stale-policy.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=form-serializer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-serializer.test.d.ts","sourceRoot":"","sources":["../../tests/form-serializer.test.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { createFormUrlEncodedSerializer } from "../src/serializers/formUrlEncodedSerializer";
3
- describe("form urlencoded serializer", () => {
4
- it("serializes object with repeated array keys by default", () => {
5
- const serializer = createFormUrlEncodedSerializer();
6
- const result = serializer.serialize({ a: 1, tags: ["x", "y"] });
7
- expect(result.contentType).toBe("application/x-www-form-urlencoded");
8
- expect(result.payload).toBe("a=1&tags=x&tags=y");
9
- });
10
- it("serializes arrays as comma-separated when configured", () => {
11
- const serializer = createFormUrlEncodedSerializer({ arrayMode: "comma" });
12
- const result = serializer.serialize({ tags: ["x", "y"] });
13
- expect(result.payload).toBe("tags=x%2Cy");
14
- });
15
- });
16
- //# sourceMappingURL=form-serializer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-serializer.test.js","sourceRoot":"","sources":["../../tests/form-serializer.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAE7F,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,UAAU,GAAG,8BAA8B,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,UAAU,GAAG,8BAA8B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hedge.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedge.test.d.ts","sourceRoot":"","sources":["../../tests/hedge.test.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { hedge } from "../src/middleware/hedge";
3
- import { HttpResponse } from "../src/response/response";
4
- describe("hedge middleware", () => {
5
- afterEach(() => {
6
- vi.restoreAllMocks();
7
- vi.useRealTimers();
8
- });
9
- it("launches a hedged request after the configured delay and returns the first success", async () => {
10
- vi.useFakeTimers();
11
- let firstResolve;
12
- const firstPromise = new Promise((resolve) => {
13
- firstResolve = resolve;
14
- });
15
- const fetchMock = vi.spyOn(globalThis, "fetch").mockImplementation(async () => {
16
- if (fetchMock.mock.calls.length === 1) {
17
- return firstPromise;
18
- }
19
- return new Response(JSON.stringify({ id: "fast" }), {
20
- status: 200,
21
- headers: { "content-type": "application/json" },
22
- });
23
- });
24
- const mw = hedge({ hedgeAfterMs: 25 });
25
- const request = mw({
26
- method: "GET",
27
- url: "https://example.com/users/:id",
28
- params: { id: "u1" },
29
- }, async (req) => new HttpResponse(await fetch(req.url, {
30
- method: req.method,
31
- ...(req.signal !== undefined ? { signal: req.signal } : {}),
32
- })));
33
- await vi.advanceTimersByTimeAsync(25);
34
- await Promise.resolve();
35
- firstResolve(new Response(JSON.stringify({ id: "slow" }), {
36
- status: 200,
37
- headers: { "content-type": "application/json" },
38
- }));
39
- const response = await request;
40
- expect(response.status).toBe(200);
41
- expect(await response.json()).toEqual({ id: "fast" });
42
- expect(fetchMock).toHaveBeenCalledTimes(2);
43
- });
44
- });
45
- //# sourceMappingURL=hedge.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedge.test.js","sourceRoot":"","sources":["../../tests/hedge.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAClG,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,IAAI,YAAwC,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,EAAE;YACrD,YAAY,GAAG,OAAO,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YAC5E,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtC,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;gBAClD,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,EAAE,CAChB;YACE,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,+BAA+B;YACpC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,CACZ,IAAI,YAAY,CACd,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CACH,CACJ,CAAC;QAEF,MAAM,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAExB,YAAY,CACV,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;YAC3C,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CACH,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=http-cache.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-cache.test.d.ts","sourceRoot":"","sources":["../../tests/http-cache.test.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { httpCache } from "../src/middleware/httpCache";
3
- import { HttpResponse } from "../src/response/response";
4
- describe("http cache middleware", () => {
5
- afterEach(() => {
6
- vi.restoreAllMocks();
7
- vi.useRealTimers();
8
- });
9
- it("serves fresh cached responses without calling the downstream handler again", async () => {
10
- const mw = httpCache({ ttlMs: 1000 });
11
- let calls = 0;
12
- const first = await mw({
13
- method: "GET",
14
- url: "https://example.com/users/1",
15
- }, async () => {
16
- calls += 1;
17
- return new HttpResponse(new Response(JSON.stringify({ id: 1 }), {
18
- status: 200,
19
- headers: {
20
- "content-type": "application/json",
21
- etag: '"v1"',
22
- },
23
- }));
24
- });
25
- const second = await mw({
26
- method: "GET",
27
- url: "https://example.com/users/1",
28
- }, async () => {
29
- calls += 1;
30
- return new HttpResponse(new Response("should not run", { status: 500 }));
31
- });
32
- expect(calls).toBe(1);
33
- expect(await first.json()).toEqual({ id: 1 });
34
- expect(await second.json()).toEqual({ id: 1 });
35
- });
36
- it("falls back to stale cache when the upstream request fails", async () => {
37
- vi.useFakeTimers();
38
- vi.setSystemTime(0);
39
- const mw = httpCache({ ttlMs: 1, staleIfErrorMs: 1000 });
40
- let calls = 0;
41
- await mw({
42
- method: "GET",
43
- url: "https://example.com/users/1",
44
- }, async () => {
45
- calls += 1;
46
- return new HttpResponse(new Response(JSON.stringify({ id: 1 }), { status: 200 }));
47
- });
48
- await vi.advanceTimersByTimeAsync(5);
49
- const response = await mw({
50
- method: "GET",
51
- url: "https://example.com/users/1",
52
- }, async () => {
53
- calls += 1;
54
- throw new TypeError("network fail");
55
- });
56
- expect(calls).toBe(2);
57
- expect(await response.json()).toEqual({ id: 1 });
58
- });
59
- });
60
- //# sourceMappingURL=http-cache.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-cache.test.js","sourceRoot":"","sources":["../../tests/http-cache.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=idempotency-key.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idempotency-key.test.d.ts","sourceRoot":"","sources":["../../tests/idempotency-key.test.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { createClient } from "../src/client/createClient";
3
- import { idempotencyKey } from "../src/middleware/idempotencyKey";
4
- describe("idempotency key middleware", () => {
5
- afterEach(() => {
6
- vi.restoreAllMocks();
7
- });
8
- it("adds idempotency key header for mutation requests", async () => {
9
- const fetchMock = vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response("ok", { status: 200 }));
10
- const client = createClient().use(idempotencyKey({
11
- keyFactory: () => "idem-123",
12
- }));
13
- await client.post("https://api.example.com/orders", { itemId: "p1" });
14
- const init = fetchMock.mock.calls[0]?.[1];
15
- const headers = (init?.headers ?? {});
16
- expect(headers["Idempotency-Key"]).toBe("idem-123");
17
- });
18
- it("does not override existing idempotency key", async () => {
19
- const fetchMock = vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response("ok", { status: 200 }));
20
- const client = createClient().use(idempotencyKey({
21
- keyFactory: () => "idem-generated",
22
- }));
23
- await client.post("/orders", { itemId: "p1" }, {
24
- headers: { "Idempotency-Key": "idem-existing" },
25
- });
26
- const init = fetchMock.mock.calls[0]?.[1];
27
- const headers = (init?.headers ?? {});
28
- expect(headers["Idempotency-Key"]).toBe("idem-existing");
29
- });
30
- });
31
- //# sourceMappingURL=idempotency-key.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idempotency-key.test.js","sourceRoot":"","sources":["../../tests/idempotency-key.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,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAEvG,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC,GAAG,CAC/B,cAAc,CAAC;YACb,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;SAC7B,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAA2B,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAEvG,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC,GAAG,CAC/B,cAAc,CAAC;YACb,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB;SACnC,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7C,OAAO,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE;SAChD,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAA2B,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=instrumented-adapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumented-adapter.test.d.ts","sourceRoot":"","sources":["../../tests/instrumented-adapter.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { createInstrumentedAdapter } from "../src/adapters/instrumentedAdapter";
3
- describe("instrumented adapter", () => {
4
- it("emits start and success hooks", async () => {
5
- const starts = [];
6
- const successes = [];
7
- const adapter = createInstrumentedAdapter(async () => new Response("ok", { status: 200 }), {
8
- onStart(event) {
9
- starts.push(event.url);
10
- },
11
- onSuccess(event) {
12
- successes.push(event.response.status);
13
- },
14
- });
15
- const response = await adapter("https://api.example.com/ok", { method: "GET" });
16
- expect(response.status).toBe(200);
17
- expect(starts).toEqual(["https://api.example.com/ok"]);
18
- expect(successes).toEqual([200]);
19
- });
20
- it("emits error hook and rethrows", async () => {
21
- const errors = [];
22
- const adapter = createInstrumentedAdapter(async () => {
23
- throw new Error("boom");
24
- }, {
25
- onError(event) {
26
- errors.push(String(event.error));
27
- },
28
- });
29
- await expect(adapter("https://api.example.com/fail", { method: "GET" })).rejects.toThrow("boom");
30
- expect(errors.length).toBe(1);
31
- });
32
- });
33
- //# sourceMappingURL=instrumented-adapter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumented-adapter.test.js","sourceRoot":"","sources":["../../tests/instrumented-adapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,MAAM,OAAO,GAAG,yBAAyB,CACvC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAC/C;YACE,OAAO,CAAC,KAAK;gBACX,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,SAAS,CAAC,KAAK;gBACb,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;SACF,CACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,yBAAyB,CACvC,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,EACD;YACE,OAAO,CAAC,KAAK;gBACX,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,CAAC;SACF,CACF,CAAC;QAEF,MAAM,MAAM,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interceptor-order.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor-order.test.d.ts","sourceRoot":"","sources":["../../tests/interceptor-order.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { describe, expect, it, vi, afterEach } from "vitest";
2
- import { createClient } from "../src/client/createClient";
3
- describe("interceptor order", () => {
4
- afterEach(() => {
5
- vi.restoreAllMocks();
6
- });
7
- it("applies request interceptors by descending priority", async () => {
8
- const callOrder = [];
9
- vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response("{}", { status: 200, headers: { "content-type": "application/json" } }));
10
- const client = createClient()
11
- .useRequestInterceptor((req) => {
12
- callOrder.push("low");
13
- return req;
14
- }, { priority: 1 })
15
- .useRequestInterceptor((req) => {
16
- callOrder.push("high");
17
- return req;
18
- }, { priority: 10 });
19
- await client.get("https://example.com");
20
- expect(callOrder).toEqual(["high", "low"]);
21
- });
22
- it("applies response interceptors by descending priority", async () => {
23
- const callOrder = [];
24
- vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response("{}", { status: 200 }));
25
- const client = createClient()
26
- .useResponseInterceptor((res) => {
27
- callOrder.push("low");
28
- return res;
29
- }, { priority: 1 })
30
- .useResponseInterceptor((res) => {
31
- callOrder.push("high");
32
- return res;
33
- }, { priority: 10 });
34
- await client.get("https://example.com");
35
- expect(callOrder).toEqual(["high", "low"]);
36
- });
37
- });
38
- //# sourceMappingURL=interceptor-order.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor-order.test.js","sourceRoot":"","sources":["../../tests/interceptor-order.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAC7C,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CACrF,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,EAAE;aAC1B,qBAAqB,CACpB,CAAC,GAAG,EAAE,EAAE;YACN,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,EAAE,CAChB;aACA,qBAAqB,CACpB,CAAC,GAAG,EAAE,EAAE;YACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjB,CAAC;QAEJ,MAAM,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG,YAAY,EAAE;aAC1B,sBAAsB,CACrB,CAAC,GAAG,EAAE,EAAE;YACN,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,EAAE,CAChB;aACA,sBAAsB,CACrB,CAAC,GAAG,EAAE,EAAE;YACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjB,CAAC;QAEJ,MAAM,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=invariant-fuzz.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"invariant-fuzz.test.d.ts","sourceRoot":"","sources":["../../tests/invariant-fuzz.test.ts"],"names":[],"mappings":""}
@@ -1,149 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { execute } from "../src/executor/execute";
3
- import { compose } from "../src/middleware/compose";
4
- import { dedupe } from "../src/middleware/dedupe";
5
- import { retry } from "../src/middleware/retry";
6
- import { concurrencyLimit } from "../src/middleware/concurrencyLimit";
7
- import { stableKeyValues, stableQuery } from "../src/utils/stableKey";
8
- import { HttpResponse } from "../src/response/response";
9
- import { INTERNAL_MIDDLEWARES } from "../src/types/internal";
10
- function makePrng(seed = 0xdecafbad) {
11
- let value = seed >>> 0;
12
- return () => {
13
- value = (value * 1664525 + 1013904223) >>> 0;
14
- return value / 0x100000000;
15
- };
16
- }
17
- function pick(prng, chars, min, max) {
18
- const len = min + Math.floor(prng() * (max - min + 1));
19
- let out = "";
20
- for (let i = 0; i < len; i++) {
21
- const idx = Math.floor(prng() * chars.length);
22
- out += chars[idx] ?? "x";
23
- }
24
- return out;
25
- }
26
- function sleep(ms) {
27
- return new Promise((resolve) => setTimeout(resolve, ms));
28
- }
29
- describe("invariant/fuzz: URL and query construction", () => {
30
- it("preserves parameter/query information under randomized inputs", async () => {
31
- const prng = makePrng(7);
32
- const chars = "abcdefghijklmnopqrstuvwxyz0123456789-_ .~";
33
- for (let i = 0; i < 160; i++) {
34
- const p1 = pick(prng, chars, 1, 8);
35
- const p2 = pick(prng, chars, 1, 8);
36
- const k1 = `k${Math.floor(prng() * 10)}`;
37
- const k2 = `m${Math.floor(prng() * 10)}`;
38
- const v1 = pick(prng, chars, 1, 6);
39
- const arrCount = 1 + Math.floor(prng() * 4);
40
- const v2 = Array.from({ length: arrCount }, () => pick(prng, chars, 1, 6));
41
- let capturedUrl = "";
42
- await execute({
43
- method: "GET",
44
- url: "/f/:p1/:p2",
45
- params: { p1, p2 },
46
- query: {
47
- [k1]: v1,
48
- [k2]: v2,
49
- },
50
- }, {
51
- adapter: async (url) => {
52
- capturedUrl = url;
53
- return new Response("ok", { status: 200 });
54
- },
55
- });
56
- const parsed = new URL(capturedUrl, "http://localhost");
57
- const pathParts = parsed.pathname.split("/").slice(-2).map(decodeURIComponent);
58
- expect(pathParts).toEqual([p1, p2]);
59
- expect(parsed.searchParams.get(k1)).toBe(v1);
60
- expect(parsed.searchParams.getAll(k2).sort()).toEqual([...v2].sort());
61
- }
62
- });
63
- });
64
- describe("invariant/fuzz: mixed fault traffic convergence", () => {
65
- it("always settles randomized fault traffic without violating concurrency ceiling", async () => {
66
- const prng = makePrng(11);
67
- let inFlight = 0;
68
- let maxInFlight = 0;
69
- const executor = async (req) => {
70
- inFlight += 1;
71
- maxInFlight = Math.max(maxInFlight, inFlight);
72
- try {
73
- await sleep(Math.floor(prng() * 3));
74
- if (req.signal?.aborted) {
75
- throw req.signal.reason ?? new DOMException("Aborted", "AbortError");
76
- }
77
- const r = prng();
78
- if (r < 0.1) {
79
- throw new TypeError("chaos-network");
80
- }
81
- if (r < 0.3) {
82
- return new HttpResponse(new Response("retry", { status: 503 }));
83
- }
84
- return new HttpResponse(new Response("ok", { status: 200 }));
85
- }
86
- finally {
87
- inFlight -= 1;
88
- }
89
- };
90
- const run = compose([
91
- concurrencyLimit({ maxConcurrent: 12 }),
92
- dedupe(),
93
- retry({
94
- maxRetries: 1,
95
- delay: 0,
96
- backoff: false,
97
- retryOnStatus: [503],
98
- retryOnNetworkError: true,
99
- }),
100
- ], executor);
101
- const total = 260;
102
- const tasks = Array.from({ length: total }, (_, i) => {
103
- const ac = new AbortController();
104
- const shouldAbort = prng() < 0.15;
105
- if (shouldAbort) {
106
- ac.abort(new DOMException("Aborted", "AbortError"));
107
- }
108
- return run({
109
- method: "GET",
110
- url: `https://fuzz.local/r/${i % 50}`,
111
- signal: ac.signal,
112
- [INTERNAL_MIDDLEWARES]: [],
113
- }).then(() => ({ ok: true }), () => ({ ok: false }));
114
- });
115
- const settled = await Promise.all(tasks);
116
- const success = settled.filter((x) => x.ok).length;
117
- const failure = settled.length - success;
118
- console.info("[pureq][fuzz-metrics]", {
119
- scenario: "mixed-fault-convergence",
120
- total,
121
- success,
122
- failure,
123
- maxInFlight,
124
- });
125
- expect(settled).toHaveLength(total);
126
- expect(maxInFlight).toBeLessThanOrEqual(12);
127
- expect(success).toBeGreaterThan(0);
128
- expect(failure).toBeGreaterThan(0);
129
- });
130
- });
131
- describe("invariant/fuzz: stable key generation", () => {
132
- it("is insensitive to insertion order for equivalent maps", () => {
133
- const leftHeaders = { b: "2", a: "1", c: "3" };
134
- const rightHeaders = { c: "3", a: "1", b: "2" };
135
- expect(stableKeyValues(leftHeaders)).toBe(stableKeyValues(rightHeaders));
136
- const leftQuery = {
137
- z: [3, 1, 2],
138
- a: "x",
139
- m: true,
140
- };
141
- const rightQuery = {
142
- m: true,
143
- a: "x",
144
- z: [3, 1, 2],
145
- };
146
- expect(stableQuery(leftQuery)).toBe(stableQuery(rightQuery));
147
- });
148
- });
149
- //# sourceMappingURL=invariant-fuzz.test.js.map