@pureq/pureq 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +142 -13
  2. package/dist/src/adapters/storage/encryptedStorage.d.ts +16 -0
  3. package/dist/src/adapters/storage/encryptedStorage.d.ts.map +1 -0
  4. package/dist/src/adapters/storage/encryptedStorage.js +77 -0
  5. package/dist/src/adapters/storage/encryptedStorage.js.map +1 -0
  6. package/dist/src/adapters/storage/indexedDBAdapter.d.ts +16 -0
  7. package/dist/src/adapters/storage/indexedDBAdapter.d.ts.map +1 -0
  8. package/dist/src/adapters/storage/indexedDBAdapter.js +75 -0
  9. package/dist/src/adapters/storage/indexedDBAdapter.js.map +1 -0
  10. package/dist/src/client/createClient.d.ts.map +1 -1
  11. package/dist/src/client/createClient.js +15 -14
  12. package/dist/src/client/createClient.js.map +1 -1
  13. package/dist/src/executor/execute.d.ts.map +1 -1
  14. package/dist/src/executor/execute.js +108 -27
  15. package/dist/src/executor/execute.js.map +1 -1
  16. package/dist/src/index.d.ts +6 -0
  17. package/dist/src/index.d.ts.map +1 -1
  18. package/dist/src/index.js +6 -0
  19. package/dist/src/index.js.map +1 -1
  20. package/dist/src/middleware/authRefresh.d.ts +26 -0
  21. package/dist/src/middleware/authRefresh.d.ts.map +1 -0
  22. package/dist/src/middleware/authRefresh.js +53 -0
  23. package/dist/src/middleware/authRefresh.js.map +1 -0
  24. package/dist/src/middleware/circuitBreaker.d.ts +19 -2
  25. package/dist/src/middleware/circuitBreaker.d.ts.map +1 -1
  26. package/dist/src/middleware/circuitBreaker.js +64 -26
  27. package/dist/src/middleware/circuitBreaker.js.map +1 -1
  28. package/dist/src/middleware/compose.d.ts.map +1 -1
  29. package/dist/src/middleware/compose.js +2 -1
  30. package/dist/src/middleware/compose.js.map +1 -1
  31. package/dist/src/middleware/diagnostics.d.ts.map +1 -1
  32. package/dist/src/middleware/diagnostics.js +1 -4
  33. package/dist/src/middleware/diagnostics.js.map +1 -1
  34. package/dist/src/middleware/fallback.d.ts +27 -0
  35. package/dist/src/middleware/fallback.d.ts.map +1 -0
  36. package/dist/src/middleware/fallback.js +42 -0
  37. package/dist/src/middleware/fallback.js.map +1 -0
  38. package/dist/src/middleware/hedge.js +3 -3
  39. package/dist/src/middleware/hedge.js.map +1 -1
  40. package/dist/src/middleware/offlineQueue.d.ts +9 -0
  41. package/dist/src/middleware/offlineQueue.d.ts.map +1 -1
  42. package/dist/src/middleware/offlineQueue.js +62 -23
  43. package/dist/src/middleware/offlineQueue.js.map +1 -1
  44. package/dist/src/middleware/retry.d.ts +17 -1
  45. package/dist/src/middleware/retry.d.ts.map +1 -1
  46. package/dist/src/middleware/retry.js +39 -14
  47. package/dist/src/middleware/retry.js.map +1 -1
  48. package/dist/src/middleware/validation.d.ts +24 -0
  49. package/dist/src/middleware/validation.d.ts.map +1 -0
  50. package/dist/src/middleware/validation.js +52 -0
  51. package/dist/src/middleware/validation.js.map +1 -0
  52. package/dist/src/node/fsAdapter.d.ts +16 -0
  53. package/dist/src/node/fsAdapter.d.ts.map +1 -0
  54. package/dist/src/node/fsAdapter.js +72 -0
  55. package/dist/src/node/fsAdapter.js.map +1 -0
  56. package/dist/src/node/index.d.ts +6 -0
  57. package/dist/src/node/index.d.ts.map +1 -0
  58. package/dist/src/node/index.js +6 -0
  59. package/dist/src/node/index.js.map +1 -0
  60. package/dist/src/policy/guardrails.d.ts +1 -1
  61. package/dist/src/policy/guardrails.d.ts.map +1 -1
  62. package/dist/src/types/http.d.ts +8 -0
  63. package/dist/src/types/http.d.ts.map +1 -1
  64. package/dist/src/types/internal.d.ts +5 -5
  65. package/dist/src/types/internal.d.ts.map +1 -1
  66. package/dist/src/types/internal.js +4 -1
  67. package/dist/src/types/internal.js.map +1 -1
  68. package/dist/src/types/result.d.ts +3 -1
  69. package/dist/src/types/result.d.ts.map +1 -1
  70. package/dist/src/types/result.js +27 -6
  71. package/dist/src/types/result.js.map +1 -1
  72. package/dist/src/utils/crypto.d.ts +9 -0
  73. package/dist/src/utils/crypto.d.ts.map +1 -1
  74. package/dist/src/utils/crypto.js +44 -0
  75. package/dist/src/utils/crypto.js.map +1 -1
  76. package/dist/src/utils/policyTrace.d.ts +7 -9
  77. package/dist/src/utils/policyTrace.d.ts.map +1 -1
  78. package/dist/src/utils/policyTrace.js +31 -12
  79. package/dist/src/utils/policyTrace.js.map +1 -1
  80. package/dist/tests/circuit-breaker.test.js +6 -6
  81. package/dist/tests/circuit-breaker.test.js.map +1 -1
  82. package/dist/tests/compose.test.js +2 -1
  83. package/dist/tests/compose.test.js.map +1 -1
  84. package/package.json +8 -2
  85. package/dist/tests/client.integration.d.ts +0 -2
  86. package/dist/tests/client.integration.d.ts.map +0 -1
  87. package/dist/tests/client.integration.js +0 -44
  88. package/dist/tests/client.integration.js.map +0 -1
  89. package/dist/tests/public-api.contract.d.ts +0 -2
  90. package/dist/tests/public-api.contract.d.ts.map +0 -1
  91. package/dist/tests/public-api.contract.js +0 -14
  92. package/dist/tests/public-api.contract.js.map +0 -1
  93. package/dist/tests/retry.stress.d.ts +0 -2
  94. package/dist/tests/retry.stress.d.ts.map +0 -1
  95. package/dist/tests/retry.stress.js +0 -21
  96. package/dist/tests/retry.stress.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/middleware/compose.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,WAAkC,EAClC,WAAkE,OAAO;IAEzE,OAAO,UAAU,GAA0B;QACzC,SAAS,QAAQ,CAAC,CAAS,EAAE,aAAoC;YAC/D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAElC,8CAA8C;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;YAED,wEAAwE;YACxE,mEAAmE;YACnE,gEAAgE;YAChE,4EAA4E;YAC5E,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC;gBACH,OAAO,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;oBACpD,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;oBACpF,CAAC;oBAED,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM,OAAO,GAA0B;wBACrC,GAAG,aAAa;wBAChB,GAAG,UAAU;wBACb,YAAY,EAAE,aAAa,CAAC,YAAY;qBACzC,CAAC;oBAEF,IAAI,CAAC;wBACH,OAAO,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;oBACxC,CAAC;4BAAS,CAAC;wBACT,YAAY,GAAG,KAAK,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/middleware/compose.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,WAAkC,EAClC,WAAkE,OAAO;IAEzE,OAAO,UAAU,GAA0B;QACzC,SAAS,QAAQ,CAAC,CAAS,EAAE,aAAoC;YAC/D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAElC,8CAA8C;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;YAED,wEAAwE;YACxE,mEAAmE;YACnE,gEAAgE;YAChE,4EAA4E;YAC5E,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC;gBACH,OAAO,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;oBACpD,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;oBACpF,CAAC;oBAED,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM,OAAO,GAA0B;wBACrC,GAAG,aAAa;wBAChB,GAAG,UAAU;wBACb,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC;qBAC5D,CAAC;oBAEF,IAAI,CAAC;wBACH,OAAO,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;oBACxC,CAAC;4BAAS,CAAC;wBACT,YAAY,GAAG,KAAK,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/middleware/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD;AA6BD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,kBAAuB,GAAG,qBAAqB,CA2GnG"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/middleware/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD;AAyBD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,kBAAuB,GAAG,qBAAqB,CA2GnG"}
@@ -1,9 +1,6 @@
1
1
  import { toPureqError } from "../types/result";
2
2
  function getMetaValue(req, key) {
3
- if (typeof req !== "object" || req === null || !("_meta" in req)) {
4
- return undefined;
5
- }
6
- const meta = req._meta;
3
+ const meta = req.meta;
7
4
  if (!meta) {
8
5
  return undefined;
9
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/middleware/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/middleware/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Middleware, RequestConfig } from "../types/http";
2
+ import type { HttpResponse } from "../response/response";
3
+ export type FallbackTrigger = {
4
+ readonly type: "error";
5
+ readonly error: unknown;
6
+ } | {
7
+ readonly type: "response";
8
+ readonly response: HttpResponse;
9
+ };
10
+ export interface FallbackOptions {
11
+ /**
12
+ * The fallback value to return when an error occurs.
13
+ * Can be a static HttpResponse or a function that returns one.
14
+ */
15
+ readonly value: HttpResponse | ((trigger: FallbackTrigger, req: RequestConfig) => HttpResponse | Promise<HttpResponse>);
16
+ /**
17
+ * Filters fallback activation for both error and non-OK response cases.
18
+ * Receives a FallbackTrigger and RequestConfig; return true to invoke fallback.
19
+ */
20
+ readonly when?: (trigger: FallbackTrigger, req: RequestConfig) => boolean;
21
+ }
22
+ /**
23
+ * pureq fallback middleware.
24
+ * Implements graceful degradation by returning a default value or cached data on failure.
25
+ */
26
+ export declare function fallback(options: FallbackOptions): Middleware;
27
+ //# sourceMappingURL=fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../../src/middleware/fallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACxH;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;CAC3E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,UAAU,CA4C7D"}
@@ -0,0 +1,42 @@
1
+ import { markPolicyMiddleware } from "../policy/guardrails";
2
+ import { appendPolicyTrace } from "../utils/policyTrace";
3
+ /**
4
+ * pureq fallback middleware.
5
+ * Implements graceful degradation by returning a default value or cached data on failure.
6
+ */
7
+ export function fallback(options) {
8
+ const middleware = async (req, next) => {
9
+ try {
10
+ const response = await next(req);
11
+ const trigger = { type: "response", response };
12
+ // We can also trigger fallback for specific status codes (optional)
13
+ if (!response.ok && options.when?.(trigger, req)) {
14
+ return resolveFallback(options.value, trigger, req, "status");
15
+ }
16
+ return response;
17
+ }
18
+ catch (error) {
19
+ const trigger = { type: "error", error };
20
+ if (!options.when || options.when(trigger, req)) {
21
+ return resolveFallback(options.value, trigger, req, "error");
22
+ }
23
+ throw error;
24
+ }
25
+ };
26
+ async function resolveFallback(value, trigger, req, source) {
27
+ const finalResponse = typeof value === "function" ? await value(trigger, req) : value;
28
+ appendPolicyTrace(req, {
29
+ policy: "fallback",
30
+ decision: "fallback",
31
+ at: Date.now(),
32
+ reason: source === "error" ? "request failed" : "unsuccessful status",
33
+ source,
34
+ });
35
+ return finalResponse;
36
+ }
37
+ return markPolicyMiddleware(middleware, {
38
+ name: "fallback",
39
+ kind: "fallback",
40
+ });
41
+ }
42
+ //# sourceMappingURL=fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../../src/middleware/fallback.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmBzD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAwB;IAC/C,MAAM,UAAU,GAAe,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,OAAO,GAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;YAEhE,oEAAoE;YACpE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,UAAU,eAAe,CAC5B,KAA+B,EAC/B,OAAwB,EACxB,GAAkB,EAClB,MAA0B;QAE1B,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEtF,iBAAiB,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,UAAU;YACpB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB;YACrE,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,oBAAoB,CAAC,UAAU,EAAE;QACtC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -44,13 +44,13 @@ export function hedge(options) {
44
44
  }
45
45
  const key = keyBuilder(req);
46
46
  const startedAt = Date.now();
47
- // Each fork gets its own deep-copied _meta to prevent
47
+ // Each fork gets its own deep-copied meta to prevent
48
48
  // cross-fork trace pollution (race condition prevention).
49
49
  const primaryFork = forkSignal(req.signal);
50
50
  const primaryReq = {
51
51
  ...req,
52
52
  signal: primaryFork.signal,
53
- _meta: deepCopyMeta(req),
53
+ meta: deepCopyMeta(req),
54
54
  };
55
55
  const primaryPromise = next(primaryReq);
56
56
  // Track how many promises are actually in flight for the rejection threshold.
@@ -67,7 +67,7 @@ export function hedge(options) {
67
67
  const hedgedReq = {
68
68
  ...req,
69
69
  signal: hedgeFork.signal,
70
- _meta: deepCopyMeta(req),
70
+ meta: deepCopyMeta(req),
71
71
  };
72
72
  appendPolicyTrace(hedgedReq, {
73
73
  policy: "hedge",
@@ -1 +1 @@
1
- {"version":3,"file":"hedge.js","sourceRoot":"","sources":["../../../src/middleware/hedge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hedge.js","sourceRoot":"","sources":["../../../src/middleware/hedge.ts"],"names":[],"mappings":"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"}
@@ -26,14 +26,21 @@ export interface OfflineQueueOptions {
26
26
  readonly methods?: readonly RequestConfig["method"][];
27
27
  readonly isOffline?: () => boolean;
28
28
  readonly maxQueueSize?: number;
29
+ readonly ttlMs?: number;
29
30
  readonly hooks?: OfflineQueueHooks;
30
31
  readonly storage?: OfflineQueueStorageAdapter;
31
32
  readonly generateId?: () => number | Promise<number>;
33
+ /**
34
+ * Optional lock name for cross-tab coordination (Web Locks API).
35
+ * If provided, only one tab will be able to flush the queue at a time.
36
+ */
37
+ readonly lockName?: string;
32
38
  }
33
39
  export interface QueuedRequest {
34
40
  readonly id: number;
35
41
  readonly req: RequestConfig;
36
42
  readonly queuedAt: number;
43
+ readonly expiresAt?: number;
37
44
  }
38
45
  export interface OfflineQueueStorageAdapter {
39
46
  readonly push: (item: QueuedRequest) => Promise<void> | void;
@@ -57,6 +64,8 @@ export interface OfflineQueueSnapshot {
57
64
  readonly method: RequestConfig["method"];
58
65
  readonly url: string;
59
66
  readonly queuedAt: number;
67
+ readonly expiresAt?: number;
68
+ readonly priority: number;
60
69
  }[];
61
70
  }
62
71
  export interface OfflineQueueController {
@@ -1 +1 @@
1
- {"version":3,"file":"offlineQueue.d.ts","sourceRoot":"","sources":["../../../src/middleware/offlineQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offlineQueue.d.ts","sourceRoot":"","sources":["../../../src/middleware/offlineQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,GAAG,SAAS,aAAa,EAAE,CAAC;IACpF,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC/C;AAED,qBAAa,2BAA4B,YAAW,0BAA0B;IAC5E,OAAO,CAAC,KAAK,CAAuB;IAEpC,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI/B,MAAM,IAAI,SAAS,aAAa,EAAE;IAIlC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;CAGf;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS;QACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,EAAE,CAAC;CACL;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CACd,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,EACrD,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KACxC,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,sBAAsB,CAoN5F;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAE1E"}
@@ -21,11 +21,8 @@ export class InMemoryQueueStorageAdapter {
21
21
  return this.queue.length;
22
22
  }
23
23
  }
24
- // appendPolicyTrace is imported from ../utils/policyTrace
25
24
  /**
26
25
  * Creates a serializable copy of the request suitable for offline storage.
27
- * Deliberately excludes AbortSignal since it is not serializable and
28
- * would reference a stale controller upon replay.
29
26
  */
30
27
  function cloneRequestForQueue(req) {
31
28
  return {
@@ -36,6 +33,8 @@ function cloneRequestForQueue(req) {
36
33
  ...(req.body !== undefined ? { body: req.body } : {}),
37
34
  ...(req.headers !== undefined ? { headers: { ...req.headers } } : {}),
38
35
  ...(req.timeout !== undefined ? { timeout: req.timeout } : {}),
36
+ ...(req.priority !== undefined ? { priority: req.priority } : {}),
37
+ ...(req.meta !== undefined ? { meta: { ...req.meta } } : {}),
39
38
  };
40
39
  }
41
40
  /**
@@ -44,6 +43,8 @@ function cloneRequestForQueue(req) {
44
43
  export function createOfflineQueue(options = {}) {
45
44
  const methods = new Set(options.methods ?? ["POST", "PUT", "PATCH", "DELETE"]);
46
45
  const maxQueueSize = options.maxQueueSize ?? 500;
46
+ const ttlMs = options.ttlMs;
47
+ const lockName = options.lockName;
47
48
  const isOffline = options.isOffline ?? (() => {
48
49
  if (typeof navigator === "undefined") {
49
50
  return false;
@@ -60,15 +61,23 @@ export function createOfflineQueue(options = {}) {
60
61
  }
61
62
  const currentSize = await storage.size();
62
63
  if (currentSize >= maxQueueSize) {
63
- throw new Error("pureq: offline queue is full");
64
+ const error = new Error("pureq: offline queue is full");
65
+ error.code = "PUREQ_OFFLINE_QUEUE_FULL";
66
+ error.kind = "storage-error";
67
+ throw error;
64
68
  }
65
69
  const id = await generateId();
66
70
  const queuedAt = Date.now();
67
- await storage.push({
71
+ const expiresAt = ttlMs !== undefined ? queuedAt + ttlMs : undefined;
72
+ const item = {
68
73
  id,
69
74
  req: cloneRequestForQueue(req),
70
75
  queuedAt,
71
- });
76
+ };
77
+ if (expiresAt !== undefined) {
78
+ item.expiresAt = expiresAt;
79
+ }
80
+ await storage.push(item);
72
81
  appendPolicyTrace(req, {
73
82
  policy: "offline-queue",
74
83
  decision: "queued",
@@ -77,25 +86,40 @@ export function createOfflineQueue(options = {}) {
77
86
  key: `${req.method}:${req.url}`,
78
87
  });
79
88
  hooks?.onQueued?.({ id, method: req.method, url: req.url, at: queuedAt });
80
- return new PureqHttpResponse(new Response(JSON.stringify({ queued: true, queueId: id }), {
89
+ return new PureqHttpResponse(new Response(JSON.stringify({ queued: true, queueId: id, expiresAt }), {
81
90
  status: 202,
82
91
  headers: { "content-type": "application/json" },
83
92
  }));
84
93
  };
85
- const flush = async (replay, options) => {
86
- const pending = await storage.getAll();
87
- const concurrency = options?.concurrency ?? 1;
94
+ const performFlush = async (replay, flushOptions) => {
95
+ const rawPending = await storage.getAll();
96
+ const now = Date.now();
97
+ // 1. Filter out expired requests
98
+ const expiredIds = [];
99
+ const pendingWithTtl = rawPending.filter((item) => {
100
+ if (item.expiresAt !== undefined && item.expiresAt < now) {
101
+ expiredIds.push(item.id);
102
+ return false;
103
+ }
104
+ return true;
105
+ });
106
+ await Promise.all(expiredIds.map((id) => storage.remove(id)));
107
+ // 2. Sort by priority (descending) and then by queuedAt (ascending)
108
+ const pending = [...pendingWithTtl].sort((a, b) => {
109
+ const priorityA = a.req.priority ?? 0;
110
+ const priorityB = b.req.priority ?? 0;
111
+ if (priorityA !== priorityB) {
112
+ return priorityB - priorityA;
113
+ }
114
+ return a.queuedAt - b.queuedAt;
115
+ });
116
+ const concurrency = flushOptions?.concurrency ?? 1;
88
117
  const responses = [];
89
118
  if (concurrency <= 1) {
90
- // Sequential replay (default, safest for ordering guarantees)
91
119
  for (const item of pending) {
92
120
  try {
93
121
  const response = await replay(item.req);
94
122
  responses.push(response);
95
- // Remove from queue only after successful replay.
96
- // NOTE: If the app crashes between successful replay and this removal,
97
- // the request might be replayed again upon restart. It is strongly recommended
98
- // to use `idempotencyKey` middleware to prevent duplicate operations on the backend.
99
123
  await storage.remove(item.id);
100
124
  hooks?.onReplayed?.({
101
125
  id: item.id,
@@ -106,7 +130,6 @@ export function createOfflineQueue(options = {}) {
106
130
  });
107
131
  }
108
132
  catch (error) {
109
- // Leave in storage on failure (defer to next flush or retry budgets)
110
133
  hooks?.onReplayError?.({
111
134
  id: item.id,
112
135
  method: item.req.method,
@@ -118,7 +141,7 @@ export function createOfflineQueue(options = {}) {
118
141
  }
119
142
  }
120
143
  else {
121
- // Concurrent replay in batches of `concurrency`
144
+ // Concurrent replay in batches
122
145
  for (let i = 0; i < pending.length; i += concurrency) {
123
146
  const batch = pending.slice(i, i + concurrency);
124
147
  const results = await Promise.allSettled(batch.map(async (item) => {
@@ -155,16 +178,32 @@ export function createOfflineQueue(options = {}) {
155
178
  }
156
179
  return responses;
157
180
  };
181
+ const flush = async (replay, flushOptions) => {
182
+ // If Web Locks API is available and lockName is provided, wrap in a lock
183
+ if (lockName && typeof navigator !== "undefined" && navigator.locks) {
184
+ return navigator.locks.request(lockName, async () => {
185
+ return performFlush(replay, flushOptions);
186
+ });
187
+ }
188
+ return performFlush(replay, flushOptions);
189
+ };
158
190
  const snapshot = async () => {
159
191
  const items = await storage.getAll();
160
192
  return {
161
193
  size: items.length,
162
- items: items.map((item) => ({
163
- id: item.id,
164
- method: item.req.method,
165
- url: item.req.url,
166
- queuedAt: item.queuedAt,
167
- })),
194
+ items: items.map((item) => {
195
+ const result = {
196
+ id: item.id,
197
+ method: item.req.method,
198
+ url: item.req.url,
199
+ queuedAt: item.queuedAt,
200
+ priority: item.req.priority ?? 0,
201
+ };
202
+ if (item.expiresAt !== undefined) {
203
+ result.expiresAt = item.expiresAt;
204
+ }
205
+ return result;
206
+ }),
168
207
  };
169
208
  };
170
209
  const clear = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"offlineQueue.js","sourceRoot":"","sources":["../../../src/middleware/offlineQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offlineQueue.js","sourceRoot":"","sources":["../../../src/middleware/offlineQueue.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,27 @@
1
- import type { Middleware } from "../types/http";
1
+ import type { Middleware, RequestConfig } from "../types/http";
2
2
  export interface RetryOptions {
3
3
  readonly maxRetries: number;
4
4
  readonly delay?: number;
5
5
  readonly backoff?: boolean;
6
6
  readonly maxDelay?: number;
7
7
  readonly retryBudgetMs?: number;
8
+ /**
9
+ * Status codes that trigger a retry.
10
+ * Default: 5xx errors.
11
+ */
8
12
  readonly retryOnStatus?: readonly number[];
13
+ /**
14
+ * Whether to retry on network-level errors (DNS, connection reset, etc.)
15
+ */
9
16
  readonly retryOnNetworkError?: boolean;
17
+ /**
18
+ * HTTP methods allowed to be retried.
19
+ * Default: Idempotent methods ['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS']
20
+ */
21
+ readonly methods?: readonly RequestConfig["method"][];
10
22
  readonly respectRetryAfter?: boolean;
11
23
  readonly retryAfterHeaderName?: string;
24
+ readonly jitter?: boolean;
12
25
  readonly onRetry?: (event: {
13
26
  readonly attempt: number;
14
27
  readonly waitTime: number;
@@ -22,6 +35,9 @@ export interface RetryOptions {
22
35
  /**
23
36
  * pureq Retry Middleware
24
37
  * Implements exponential backoff strategy for network failures or configured status codes.
38
+ *
39
+ * SAFETY: By default, only idempotent methods are retried.
40
+ * To retry POST/PATCH, ensure the server supports idempotency and provide an idempotency key.
25
41
  */
26
42
  export declare function retry(options: RetryOptions): Middleware;
27
43
  //# sourceMappingURL=retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/middleware/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC;AAK/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;KACvC,KAAK,IAAI,CAAC;CACZ;AA4DD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAiKvD"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/middleware/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;OAEG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;KACvC,KAAK,IAAI,CAAC;CACZ;AA4DD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CA4LvD"}
@@ -51,40 +51,53 @@ async function sleep(ms, signal) {
51
51
  /**
52
52
  * pureq Retry Middleware
53
53
  * Implements exponential backoff strategy for network failures or configured status codes.
54
+ *
55
+ * SAFETY: By default, only idempotent methods are retried.
56
+ * To retry POST/PATCH, ensure the server supports idempotency and provide an idempotency key.
54
57
  */
55
58
  export function retry(options) {
56
59
  if (!Number.isInteger(options.maxRetries) || options.maxRetries < 0) {
57
60
  throw new Error("pureq: retry requires maxRetries to be a non-negative integer");
58
61
  }
59
- const { maxRetries, delay = 300, backoff = true, maxDelay = 5000, retryBudgetMs, retryOnStatus, retryOnNetworkError = true, respectRetryAfter = true, retryAfterHeaderName = "retry-after", onRetry, } = options;
62
+ const { maxRetries, delay = 300, backoff = true, maxDelay = 5000, retryBudgetMs, retryOnStatus, retryOnNetworkError = true, methods = ["GET", "HEAD", "PUT", "DELETE", "OPTIONS"], respectRetryAfter = true, retryAfterHeaderName = "retry-after", jitter, onRetry, } = options;
63
+ const retryableMethods = new Set(methods.map((method) => method.toUpperCase()));
64
+ const shouldJitter = jitter ?? backoff;
60
65
  const middleware = async (req, next) => {
61
66
  let attempts = 0;
62
67
  let totalWaitMs = 0;
63
68
  const hasBudget = retryBudgetMs !== undefined && Number.isFinite(retryBudgetMs) && retryBudgetMs > 0;
64
69
  const withRetryMeta = () => {
65
- const hasMeta = typeof req === "object" && req !== null && "_meta" in req;
66
- const currentMeta = hasMeta
67
- ? (req._meta ?? {})
68
- : {};
70
+ const mutableReq = req;
71
+ const currentMeta = (mutableReq.meta ?? (mutableReq.meta = {}));
69
72
  currentMeta.retryCount = attempts;
70
- if (hasMeta) {
71
- return req;
72
- }
73
- return {
74
- ...req,
75
- _meta: currentMeta,
76
- };
73
+ return mutableReq;
77
74
  };
78
75
  const executeWithRetry = async () => {
76
+ const method = req.method.toUpperCase();
77
+ const isMethodSafe = retryableMethods.has(method);
79
78
  try {
80
79
  const res = await next(withRetryMeta());
81
80
  if (isRetryableStatus(res.status, retryOnStatus) && attempts < maxRetries) {
81
+ if (!isMethodSafe) {
82
+ appendPolicyTrace(req, {
83
+ policy: "retry",
84
+ decision: "skip",
85
+ at: Date.now(),
86
+ reason: `method ${req.method} is not idempotent and not in allowlist`,
87
+ status: res.status,
88
+ });
89
+ return res;
90
+ }
82
91
  attempts++;
83
92
  const baseWait = backoff ? Math.min(delay * 2 ** (attempts - 1), maxDelay) : delay;
84
93
  const retryAfterMs = respectRetryAfter
85
94
  ? parseRetryAfter(res.headers.get(retryAfterHeaderName), Date.now())
86
95
  : undefined;
87
- const waitTime = Math.max(baseWait, retryAfterMs ?? 0);
96
+ let waitTime = Math.max(baseWait, retryAfterMs ?? 0);
97
+ if (shouldJitter && waitTime > 0 && retryAfterMs === undefined) {
98
+ // Full Jitter strategy
99
+ waitTime = Math.round(Math.random() * waitTime);
100
+ }
88
101
  const budgetRemainingMs = hasBudget ? Math.max(0, retryBudgetMs - totalWaitMs) : undefined;
89
102
  if (budgetRemainingMs !== undefined && waitTime > budgetRemainingMs) {
90
103
  appendPolicyTrace(req, {
@@ -132,8 +145,20 @@ export function retry(options) {
132
145
  throw error;
133
146
  }
134
147
  if (attempts < maxRetries) {
148
+ if (!isMethodSafe) {
149
+ appendPolicyTrace(req, {
150
+ policy: "retry",
151
+ decision: "skip",
152
+ at: Date.now(),
153
+ reason: `method ${req.method} is not idempotent (network error suppressed)`,
154
+ });
155
+ throw error;
156
+ }
135
157
  attempts++;
136
- const waitTime = backoff ? Math.min(delay * 2 ** (attempts - 1), maxDelay) : delay;
158
+ let waitTime = backoff ? Math.min(delay * 2 ** (attempts - 1), maxDelay) : delay;
159
+ if (shouldJitter && waitTime > 0) {
160
+ waitTime = Math.round(Math.random() * waitTime);
161
+ }
137
162
  const budgetRemainingMs = hasBudget ? Math.max(0, retryBudgetMs - totalWaitMs) : undefined;
138
163
  if (budgetRemainingMs !== undefined && waitTime > budgetRemainingMs) {
139
164
  appendPolicyTrace(req, {
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/middleware/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/middleware/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Middleware } from "../types/http";
2
+ export interface ValidationOptions<T> {
3
+ /**
4
+ * Data validation function.
5
+ * Can be a simple type guard (data is T) or a schema validator (Zod.parse).
6
+ * Should throw an error or return false/null to indicate failure.
7
+ */
8
+ readonly validate: (data: unknown) => T | Promise<T> | boolean | null;
9
+ /**
10
+ * Optional custom error message or factory.
11
+ */
12
+ readonly message?: string | ((data: unknown) => string);
13
+ /**
14
+ * If true, validation failure returns the original data instead of throwing.
15
+ * Useful for soft-fail or logging-only scenarios.
16
+ */
17
+ readonly silent?: boolean;
18
+ }
19
+ /**
20
+ * pureq validation middleware.
21
+ * Provides a zero-dependency bridge to schemas (Zod, Valibot) or custom type guards.
22
+ */
23
+ export declare function validation<T = unknown>(options: ValidationOptions<T>): Middleware;
24
+ //# sourceMappingURL=validation.d.ts.map