@burdenoff/fe-libs 2026.1008.2 → 2026.1008.4

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.
@@ -95,6 +95,19 @@ export declare function extractErrorMessage(err: unknown): string | undefined;
95
95
  * directly rather than only through the upload path.
96
96
  */
97
97
  export declare function classifyFilesError(err: unknown): FilesRetryKind | null;
98
+ /**
99
+ * Did the server DEFINITIVELY refuse this call, so that nothing it asked for can still land?
100
+ *
101
+ * An ALLOWLIST, not "the error carries some GraphQL code": the gateway masks its own timeouts and
102
+ * 5xx as HTTP 200 plus a coded error (`SUBREQUEST_HTTP_ERROR`, `BAD_GATEWAY`,
103
+ * `AUTH_SERVICE_UNAVAILABLE`, ...), and a mutation behind such an answer may well have been applied.
104
+ * Only a code from the "server considered it and said no" family (`NEVER_RETRY_CODES`, any
105
+ * `QUOTA_*`) or an HTTP 4xx other than 408 and 499 (so 429 counts) is a refusal. 408 (Request
106
+ * Timeout) and 499 (Client Closed Request: the caller's connection dropped before an answer arrived,
107
+ * while the upstream mutation may still have finalized) are NOT answers. Everything else (timeouts,
108
+ * network errors, 5xx, unknown gateway codes, no answer at all) stays ambiguous.
109
+ */
110
+ export declare function isDefinitiveFilesRefusal(err: unknown): boolean;
98
111
  export interface FilesRetryContext {
99
112
  /** 1-based index of the attempt that just failed. */
100
113
  attempt: number;
@@ -1 +1 @@
1
- {"version":3,"file":"retryPolicy.d.ts","sourceRoot":"","sources":["../../src/storage/retryPolicy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retryPolicy.d.ts","sourceRoot":"","sources":["../../src/storage/retryPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,sFAAsF;AACtF,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAqB,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAe,CAAC;AAgHlE;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWpE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CA0BtE;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ9D;AAYD,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;CAC1F,CAAC;AAIN;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,GAAG,kBAAkB,CAkBzF;AAED,mDAAmD;AACnD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3F,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,yBAAyB;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;CAClG;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAClE,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA2C/B"}
@@ -72,29 +72,33 @@ function p(e) {
72
72
  let t = l(e), n = u(e);
73
73
  return t.some((e) => a.has(e)) || n.some((e) => e >= 400 && e < 500 && e !== 408) ? null : t.some((e) => i.has(e)) || n.some((e) => o.has(e)) || d(e).some((e) => s.test(e)) ? "cold-start" : c(e)?.networkError || t.includes("INTERNAL_SERVER_ERROR") ? "transient-blip" : null;
74
74
  }
75
- var m = {
75
+ var m = new Set([408, 499]);
76
+ function h(e) {
77
+ return !e || typeof e != "object" ? !1 : l(e).some((e) => a.has(e) || e.startsWith("QUOTA_")) ? !0 : u(e).some((e) => e >= 400 && e < 500 && !m.has(e));
78
+ }
79
+ var g = {
76
80
  "cold-start": 3,
77
81
  "transient-blip": 3
78
- }, h = {
82
+ }, _ = {
79
83
  "cold-start": t,
80
84
  "transient-blip": r
81
- }, g = ["cold-start"];
82
- function _(e, t) {
85
+ }, v = ["cold-start"];
86
+ function y(e, t) {
83
87
  let n = p(e);
84
88
  if (!n) return {
85
89
  retry: !1,
86
90
  reason: "not-retryable"
87
91
  };
88
- if (!(t.allow ?? g).includes(n)) return {
92
+ if (!(t.allow ?? v).includes(n)) return {
89
93
  retry: !1,
90
94
  reason: "kind-not-allowed"
91
95
  };
92
- let r = m[n];
96
+ let r = g[n];
93
97
  if (t.attempt >= r) return {
94
98
  retry: !1,
95
99
  reason: "attempts-exhausted"
96
100
  };
97
- let i = h[n], a = i[Math.min(t.attempt - 1, i.length - 1)] ?? 0;
101
+ let i = _[n], a = i[Math.min(t.attempt - 1, i.length - 1)] ?? 0;
98
102
  return n === "cold-start" && t.elapsedMs + a >= 75e3 ? {
99
103
  retry: !1,
100
104
  reason: "budget-exhausted"
@@ -106,9 +110,9 @@ function _(e, t) {
106
110
  maxAttempts: r
107
111
  };
108
112
  }
109
- var v = (e) => new Promise((t) => setTimeout(t, e));
110
- async function y(e, t = {}) {
111
- let n = t.now ?? (() => Date.now()), r = t.sleep ?? v, i = n(), a = 0;
113
+ var b = (e) => new Promise((t) => setTimeout(t, e));
114
+ async function x(e, t = {}) {
115
+ let n = t.now ?? (() => Date.now()), r = t.sleep ?? b, i = n(), a = 0;
112
116
  for (;;) {
113
117
  a += 1;
114
118
  let o, s, c = !1;
@@ -124,7 +128,7 @@ async function y(e, t = {}) {
124
128
  value: o.value,
125
129
  attempts: a
126
130
  };
127
- let l = _(o.error, {
131
+ let l = y(o.error, {
128
132
  attempt: a,
129
133
  elapsedMs: n() - i,
130
134
  ...t.allow ? { allow: t.allow } : {}
@@ -147,4 +151,4 @@ async function y(e, t = {}) {
147
151
  }
148
152
  }
149
153
  //#endregion
150
- export { e as COLD_START_MAX_ATTEMPTS, n as COLD_START_RETRY_BUDGET_MS, t as COLD_START_RETRY_DELAYS_MS, p as classifyFilesError, _ as decideFilesRetry, f as extractErrorMessage, y as runWithFilesRetry };
154
+ export { e as COLD_START_MAX_ATTEMPTS, n as COLD_START_RETRY_BUDGET_MS, t as COLD_START_RETRY_DELAYS_MS, p as classifyFilesError, y as decideFilesRetry, f as extractErrorMessage, h as isDefinitiveFilesRefusal, x as runWithFilesRetry };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.1008.2",
3
+ "version": "2026.1008.4",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {