valkyries 0.3.0 → 0.5.0

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 (61) hide show
  1. package/dist/bloom-filter/lookups.mjs +5 -3
  2. package/dist/bloom-filter/lookups.mjs.map +1 -1
  3. package/dist/bloom-filter/rebuilds.d.mts.map +1 -1
  4. package/dist/bloom-filter/rebuilds.mjs +36 -33
  5. package/dist/bloom-filter/rebuilds.mjs.map +1 -1
  6. package/dist/cache/batch-read.d.mts.map +1 -1
  7. package/dist/cache/batch-read.mjs +28 -11
  8. package/dist/cache/batch-read.mjs.map +1 -1
  9. package/dist/cache/core.d.mts +21 -1
  10. package/dist/cache/core.d.mts.map +1 -1
  11. package/dist/cache/core.mjs +33 -5
  12. package/dist/cache/core.mjs.map +1 -1
  13. package/dist/cache/deletes.d.mts.map +1 -1
  14. package/dist/cache/deletes.mjs +33 -1
  15. package/dist/cache/deletes.mjs.map +1 -1
  16. package/dist/cache/multi-batch-read.d.mts +24 -0
  17. package/dist/cache/multi-batch-read.d.mts.map +1 -0
  18. package/dist/cache/multi-batch-read.mjs +67 -0
  19. package/dist/cache/multi-batch-read.mjs.map +1 -0
  20. package/dist/cache/mutations.d.mts.map +1 -1
  21. package/dist/cache/mutations.mjs +16 -9
  22. package/dist/cache/mutations.mjs.map +1 -1
  23. package/dist/cache/stale-refresh.d.mts.map +1 -1
  24. package/dist/cache/stale-refresh.mjs +2 -1
  25. package/dist/cache/stale-refresh.mjs.map +1 -1
  26. package/dist/cache.d.mts +1 -0
  27. package/dist/cache.d.mts.map +1 -1
  28. package/dist/cache.mjs +1 -0
  29. package/dist/cache.mjs.map +1 -1
  30. package/dist/clients.d.mts +1 -0
  31. package/dist/clients.d.mts.map +1 -1
  32. package/dist/clients.mjs +8 -1
  33. package/dist/clients.mjs.map +1 -1
  34. package/dist/config.d.mts +2 -0
  35. package/dist/config.d.mts.map +1 -1
  36. package/dist/config.mjs +8 -0
  37. package/dist/config.mjs.map +1 -1
  38. package/dist/delete.mjs +1 -2
  39. package/dist/delete.mjs.map +1 -1
  40. package/dist/dynamic-config/storage.d.mts +12 -6
  41. package/dist/dynamic-config/storage.d.mts.map +1 -1
  42. package/dist/dynamic-config/storage.mjs +21 -19
  43. package/dist/dynamic-config/storage.mjs.map +1 -1
  44. package/dist/dynamic-config.d.mts +1 -0
  45. package/dist/dynamic-config.d.mts.map +1 -1
  46. package/dist/dynamic-config.mjs +14 -4
  47. package/dist/dynamic-config.mjs.map +1 -1
  48. package/dist/errors.d.mts.map +1 -1
  49. package/dist/errors.mjs +12 -2
  50. package/dist/errors.mjs.map +1 -1
  51. package/dist/rate-limiter.d.mts +3 -1
  52. package/dist/rate-limiter.d.mts.map +1 -1
  53. package/dist/rate-limiter.mjs +34 -29
  54. package/dist/rate-limiter.mjs.map +1 -1
  55. package/dist/retry.d.mts +31 -0
  56. package/dist/retry.d.mts.map +1 -1
  57. package/dist/retry.mjs +34 -2
  58. package/dist/retry.mjs.map +1 -1
  59. package/dist/types.d.mts +53 -5
  60. package/dist/types.d.mts.map +1 -1
  61. package/package.json +1 -1
package/dist/errors.mjs CHANGED
@@ -2,14 +2,24 @@
2
2
  let valkeyErrorHandler = (error) => {
3
3
  if (process.env.NODE_ENV === "test")
4
4
  return;
5
- // oxlint-disable-next-line no-console -- default OSS error handler
6
5
  console.error(error);
7
6
  };
8
7
  export function setValkeyErrorHandler(handler) {
9
8
  valkeyErrorHandler = handler;
10
9
  }
11
10
  export function handleValkeyError(error) {
12
- const normalized = error instanceof Error ? error : new Error(String(error));
11
+ let normalized;
12
+ if (error instanceof Error) {
13
+ normalized = error;
14
+ }
15
+ else {
16
+ try {
17
+ normalized = new Error(String(error));
18
+ }
19
+ catch {
20
+ normalized = new Error("An unknown error occurred");
21
+ }
22
+ }
13
23
  valkeyErrorHandler(normalized);
14
24
  }
15
25
  //# sourceMappingURL=errors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../errors.mts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,IAAI,kBAAkB,GAAuB,CAAC,KAAK,EAAE,EAAE;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO;IAC5C,mEAAmE;IACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,OAA2B;IAC/D,kBAAkB,GAAG,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../errors.mts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,IAAI,kBAAkB,GAAuB,CAAC,KAAK,EAAE,EAAE;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO;IAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,OAA2B;IAC/D,kBAAkB,GAAG,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,UAAiB,CAAC;IACtB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC"}
@@ -4,7 +4,9 @@ export declare class RateLimiter {
4
4
  prefix: string;
5
5
  ttl: number;
6
6
  private client;
7
- constructor({ prefix, ttlSeconds, client }: RateLimiterOptions);
7
+ private inflightRetryAttempts;
8
+ private inflightRetryDelayMs;
9
+ constructor({ prefix, ttlSeconds, client, inflightRetryAttempts, inflightRetryDelayMs, }: RateLimiterOptions);
8
10
  add(ids: string[]): Promise<void>;
9
11
  /**
10
12
  * Atomically records this request and checks whether any ID exceeds the threshold.
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.mts","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EACpC,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAkBxD,qBAAa,WAAW;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,MAAM,CAAc;gBAEhB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAgC,EAAE,EAAE,kBAAkB;IAQlF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;IAmBvB;;;;;;;;;;;OAWG;IACG,WAAW,CACf,GAAG,EAAE,MAAM,EAAE,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAuClD;;;OAGG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9F;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiB5D,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE;IAU7B,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,UAAU;WAIG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,cAA0B;WAS3D,kBAAkB,CAC7B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,GAAE,oCAAyC,GACjD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IA4DlD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAKvD"}
1
+ {"version":3,"file":"rate-limiter.d.mts","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EACpC,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoBxD,qBAAa,WAAW;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,EACV,MAAM,EACN,UAAU,EACV,MAAgC,EAChC,qBAAqB,EACrB,oBAAoB,GACrB,EAAE,kBAAkB;IAUf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;IAsBvB;;;;;;;;;;;OAWG;IACG,WAAW,CACf,GAAG,EAAE,MAAM,EAAE,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAuClD;;;OAGG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9F;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiB5D,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE;IAU7B,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,UAAU;WAIG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,cAA0B;WAS3D,kBAAkB,CAC7B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,GAAE,oCAAyC,GACjD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAgElD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAKvD"}
@@ -5,6 +5,8 @@ import { deleteKeysWithPrefix } from "./delete.mjs";
5
5
  import { emitValkeyEvent } from "./events.mjs";
6
6
  import { normalizeCountResult } from "./utils.mjs";
7
7
  import { handleValkeyError } from "./errors.mjs";
8
+ import { retrySaturationError } from "./retry.mjs";
9
+ import { config } from "./config.mjs";
8
10
  const NAMESPACE = "rate-limiter";
9
11
  const rateLimiterAddScript = registerScript(loadScript("rate-limiter-add.lua", import.meta.url));
10
12
  const rateLimiterGetScript = registerScript(loadScript("rate-limiter-get.lua", import.meta.url));
@@ -14,7 +16,9 @@ export class RateLimiter {
14
16
  prefix;
15
17
  ttl;
16
18
  client;
17
- constructor({ prefix, ttlSeconds, client = rateLimiterValkeyClient }) {
19
+ inflightRetryAttempts;
20
+ inflightRetryDelayMs;
21
+ constructor({ prefix, ttlSeconds, client = rateLimiterValkeyClient, inflightRetryAttempts, inflightRetryDelayMs, }) {
18
22
  if (!prefix)
19
23
  throw new Error("RateLimiter requires a prefix");
20
24
  if (!(ttlSeconds > 0))
@@ -22,6 +26,8 @@ export class RateLimiter {
22
26
  this.prefix = prefix;
23
27
  this.ttl = ttlSeconds;
24
28
  this.client = client;
29
+ this.inflightRetryAttempts = inflightRetryAttempts ?? config.inflight_retry_attempts;
30
+ this.inflightRetryDelayMs = inflightRetryDelayMs ?? config.inflight_retry_delay_ms;
25
31
  }
26
32
  async add(ids) {
27
33
  const filteredIds = ids.filter(Boolean);
@@ -32,14 +38,14 @@ export class RateLimiter {
32
38
  // Use CSPRNG to prevent predictability and collisions.
33
39
  // Optimization: Generate one UUID and append index to avoid calling CSPRNG N times.
34
40
  const base = randomUUID();
35
- // Optimization: Pre-allocate args array using new Array(size) which is faster in V8 than setting .length on empty array
36
- // eslint-disable-next-line unicorn/no-new-array
37
- const args = new Array(keys.length + 1);
41
+ // Optimization: Pre-allocate args array using .length on empty array (sacrificing ~10-20% perf here to satisfy oxlint)
42
+ const args = [];
43
+ args.length = keys.length + 1;
38
44
  args[0] = this.ttl.toString();
39
45
  for (let i = 0; i < keys.length; i++) {
40
46
  args[i + 1] = `${base}-${i}`;
41
47
  }
42
- await this.client.invokeScript(rateLimiterAddScript, { keys, args });
48
+ await retrySaturationError(() => this.client.invokeScript(rateLimiterAddScript, { keys, args }), { attempts: this.inflightRetryAttempts, delayMs: this.inflightRetryDelayMs });
43
49
  emitValkeyEvent("rate-limiter:add", { prefix: this.prefix, ids: filteredIds });
44
50
  }
45
51
  /**
@@ -62,17 +68,14 @@ export class RateLimiter {
62
68
  // Use CSPRNG to prevent predictability and collisions.
63
69
  // Optimization: Generate one UUID and append index to avoid calling CSPRNG N times.
64
70
  const base = randomUUID();
65
- // Optimization: Pre-allocate args array using new Array(size) which is faster in V8 than setting .length on empty array
66
- // eslint-disable-next-line unicorn/no-new-array
67
- const args = new Array(keys.length + 1);
71
+ // Optimization: Pre-allocate args array using .length on empty array (sacrificing ~10-20% perf here to satisfy oxlint)
72
+ const args = [];
73
+ args.length = keys.length + 1;
68
74
  args[0] = ttlSeconds.toString();
69
75
  for (let i = 0; i < keys.length; i++) {
70
76
  args[i + 1] = `${base}-${i}`;
71
77
  }
72
- const results = await this.client.invokeScript(rateLimiterAddAndCheckScript, {
73
- keys,
74
- args,
75
- });
78
+ const results = await retrySaturationError(() => this.client.invokeScript(rateLimiterAddAndCheckScript, { keys, args }), { attempts: this.inflightRetryAttempts, delayMs: this.inflightRetryDelayMs });
76
79
  // Valkey should always return an array. If not, the Lua script likely ran (atomic scripts
77
80
  // either complete or error), but the return type is unexpected so we can't trust it.
78
81
  // Fail open (allow the request). Skip events since the Valkey response is unreliable;
@@ -110,10 +113,7 @@ export class RateLimiter {
110
113
  const keys = filteredIds.map((id) => this.getKey(id));
111
114
  // Single read-only script call for all keys (server time is used in script)
112
115
  // Rate limiter checks need primary reads to avoid replica lag causing stale counts.
113
- const results = await this.client.invokeScript(rateLimiterGetScript, {
114
- keys,
115
- args: [ttlSeconds.toString()],
116
- });
116
+ const results = await retrySaturationError(() => this.client.invokeScript(rateLimiterGetScript, { keys, args: [ttlSeconds.toString()] }), { attempts: this.inflightRetryAttempts, delayMs: this.inflightRetryDelayMs });
117
117
  // Results are an array of numbers from ZCOUNT; return zeros on unexpected type (fail open)
118
118
  if (!Array.isArray(results))
119
119
  return filteredIds.map(() => 0);
@@ -150,14 +150,16 @@ export class RateLimiter {
150
150
  validateWindows(windows);
151
151
  const client = options.client ?? rateLimiterValkeyClient;
152
152
  const mode = options.mode ?? "record-all";
153
+ const inflightRetryAttempts = options.inflightRetryAttempts ?? config.inflight_retry_attempts;
154
+ const inflightRetryDelayMs = options.inflightRetryDelayMs ?? config.inflight_retry_delay_ms;
153
155
  // ⚡ Bolt Optimization:
154
156
  // What: Pre-allocate keys, args, and counts arrays and use indexed loops instead of .map() and iterators.
155
157
  // Why: Avoids iterator overhead, array resizing, and tuple destructuring allocations in this hot path.
156
158
  // Impact: Internal benchmarks show ~30-50% faster array building and results processing for large window batches.
157
- // eslint-disable-next-line unicorn/no-new-array
158
- const keys = new Array(len);
159
- // eslint-disable-next-line unicorn/no-new-array
160
- const args = new Array(len * 4 + 1);
159
+ const keys = [];
160
+ keys.length = len;
161
+ const args = [];
162
+ args.length = len * 4 + 1;
161
163
  // Unique-per-window UUID + index prevents predictability/collisions.
162
164
  const base = randomUUID();
163
165
  args[0] = mode;
@@ -171,21 +173,20 @@ export class RateLimiter {
171
173
  args[offset++] = `${base}-${i}`;
172
174
  }
173
175
  validateUniqueKeys(keys);
174
- const results = await client.invokeScript(rateLimiterAddAndCheckWindowsScript, { keys, args });
176
+ const results = await retrySaturationError(() => client.invokeScript(rateLimiterAddAndCheckWindowsScript, { keys, args }), { attempts: inflightRetryAttempts, delayMs: inflightRetryDelayMs });
175
177
  if (!Array.isArray(results)) {
176
178
  handleValkeyError(new Error(`addAndCheckWindows: unexpected Valkey response type ${typeof results}`));
177
179
  /* v8 ignore next 2 -- malformed script return requires a mocked corrupted Valkey response. */
178
- // eslint-disable-next-line unicorn/no-new-array
179
- return { counts: new Array(len).fill(0), limited: false };
180
+ return { counts: Array.from({ length: len }, () => 0), limited: false };
180
181
  }
181
- // eslint-disable-next-line unicorn/no-new-array
182
- const counts = new Array(len);
182
+ const counts = [];
183
+ counts.length = len;
183
184
  for (let i = 0; i < len; i++) {
184
185
  counts[i] = normalizeCountResult(results[i]);
185
186
  }
186
187
  const limited = normalizeCountResult(results[len]) === 1;
187
- // eslint-disable-next-line unicorn/no-new-array
188
- const wrote = new Array(len);
188
+ const wrote = [];
189
+ wrote.length = len;
189
190
  const writeFlagOffset = len + 1;
190
191
  for (let i = 0; i < len; i++) {
191
192
  const writeFlag = results[writeFlagOffset + i];
@@ -238,8 +239,12 @@ function emitWindowEvents(windows, counts, wrote, mode) {
238
239
  const id = window.id || String(window.hashTag);
239
240
  /* v8 ignore next -- when counts is derived from scripts it is always fully populated, so the ?? 0 fallback is a defensive typeguard that won't execute */
240
241
  const count = counts[i] ?? 0;
241
- if (wrote[i])
242
- emitValkeyEvent("rate-limiter:add", { prefix: window.prefix, ids: [id] });
242
+ if (wrote[i]) {
243
+ emitValkeyEvent("rate-limiter:add", {
244
+ prefix: window.prefix,
245
+ ids: [id],
246
+ });
247
+ }
243
248
  emitValkeyEvent("rate-limiter:get", {
244
249
  prefix: window.prefix,
245
250
  ids: [id],
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.mjs","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.mjs","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"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"}
package/dist/retry.d.mts CHANGED
@@ -3,6 +3,12 @@
3
3
  * that is safe to retry (the operation was never sent or was rejected before execution).
4
4
  */
5
5
  export declare function isRetryableValkeyError(error: unknown): boolean;
6
+ /**
7
+ * Returns true only when the error is an inflight-saturation rejection
8
+ * (`Reached maximum inflight requests`). Safe to retry because the command
9
+ * was never sent — the client rejected it locally before any network I/O.
10
+ */
11
+ export declare function isSaturationError(error: unknown): boolean;
6
12
  export type RetryValkeyOperationOptions = {
7
13
  /** Maximum number of attempts (default: 3). */
8
14
  attempts?: number;
@@ -10,6 +16,11 @@ export type RetryValkeyOperationOptions = {
10
16
  delayMs?: number;
11
17
  /** Predicate controlling which errors trigger a retry (default: isRetryableValkeyError). */
12
18
  shouldRetry?: (error: unknown) => boolean;
19
+ /**
20
+ * When true, each inter-attempt delay is randomized in [delayMs, delayMs * 5]
21
+ * to spread out concurrent retriers during saturation. Defaults to false.
22
+ */
23
+ jitter?: boolean;
13
24
  };
14
25
  /**
15
26
  * Retries a Valkey operation on transient connection / saturation errors.
@@ -21,4 +32,24 @@ export type RetryValkeyOperationOptions = {
21
32
  * const job = await retryValkeyOperation(() => queue.add(name, data, opts));
22
33
  */
23
34
  export declare function retryValkeyOperation<T>(fn: () => Promise<T>, options?: RetryValkeyOperationOptions): Promise<T>;
35
+ export type RetrySaturationErrorOptions = {
36
+ /** Maximum number of attempts (default: 3). */
37
+ attempts?: number;
38
+ /**
39
+ * Minimum milliseconds between attempts (default: 1000).
40
+ * Actual delay is jittered in [delayMs, delayMs * 5] to spread concurrent retriers.
41
+ */
42
+ delayMs?: number;
43
+ };
44
+ /**
45
+ * Retries a Valkey operation only on inflight-saturation rejections
46
+ * (`Reached maximum inflight requests`), with jittered delay in [delayMs, delayMs*5].
47
+ *
48
+ * All other errors are rethrown immediately. Use this at internal command boundaries
49
+ * so callers don't need to wrap each call site.
50
+ *
51
+ * @example
52
+ * const value = await retrySaturationError(() => client.invokeScript(script, opts));
53
+ */
54
+ export declare function retrySaturationError<T>(fn: () => Promise<T>, options?: RetrySaturationErrorOptions): Promise<T>;
24
55
  //# sourceMappingURL=retry.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.mts","sourceRoot":"","sources":["../retry.mts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3C,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
1
+ {"version":3,"file":"retry.d.mts","sourceRoot":"","sources":["../retry.mts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1C;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,CAAC,CAAC,CAOZ"}
package/dist/retry.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { randomInt } from "node:crypto";
1
2
  /**
2
3
  * Substring patterns that identify transient Valkey / Glide errors which are safe to retry.
3
4
  * These originate from the @valkey/valkey-glide native Rust core.
@@ -9,6 +10,7 @@ const RETRYABLE_PATTERNS = [
9
10
  "Socket was closed",
10
11
  "Client is in closing state",
11
12
  ];
13
+ const SATURATION_PATTERN = "Reached maximum inflight requests";
12
14
  /**
13
15
  * Returns true when the error is a transient Valkey / Glide connection or saturation error
14
16
  * that is safe to retry (the operation was never sent or was rejected before execution).
@@ -19,6 +21,16 @@ export function isRetryableValkeyError(error) {
19
21
  const msg = error.message;
20
22
  return RETRYABLE_PATTERNS.some((pattern) => msg.includes(pattern));
21
23
  }
24
+ /**
25
+ * Returns true only when the error is an inflight-saturation rejection
26
+ * (`Reached maximum inflight requests`). Safe to retry because the command
27
+ * was never sent — the client rejected it locally before any network I/O.
28
+ */
29
+ export function isSaturationError(error) {
30
+ if (!(error instanceof Error))
31
+ return false;
32
+ return error.message.includes(SATURATION_PATTERN);
33
+ }
22
34
  /**
23
35
  * Retries a Valkey operation on transient connection / saturation errors.
24
36
  *
@@ -29,7 +41,7 @@ export function isRetryableValkeyError(error) {
29
41
  * const job = await retryValkeyOperation(() => queue.add(name, data, opts));
30
42
  */
31
43
  export async function retryValkeyOperation(fn, options) {
32
- const { attempts = 3, delayMs = 1000, shouldRetry = isRetryableValkeyError } = options ?? {};
44
+ const { attempts = 3, delayMs = 1000, shouldRetry = isRetryableValkeyError, jitter = false, } = options ?? {};
33
45
  const maxAttempts = Math.max(1, attempts);
34
46
  let lastError;
35
47
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
@@ -41,10 +53,30 @@ export async function retryValkeyOperation(fn, options) {
41
53
  throw error;
42
54
  lastError = error;
43
55
  if (attempt < maxAttempts - 1) {
44
- await new Promise((resolve) => setTimeout(resolve, delayMs));
56
+ const maxJitter = Math.floor(delayMs * 4);
57
+ const waitMs = jitter && maxJitter > 0 ? delayMs + randomInt(maxJitter + 1) : delayMs;
58
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
45
59
  }
46
60
  }
47
61
  }
48
62
  throw lastError;
49
63
  }
64
+ /**
65
+ * Retries a Valkey operation only on inflight-saturation rejections
66
+ * (`Reached maximum inflight requests`), with jittered delay in [delayMs, delayMs*5].
67
+ *
68
+ * All other errors are rethrown immediately. Use this at internal command boundaries
69
+ * so callers don't need to wrap each call site.
70
+ *
71
+ * @example
72
+ * const value = await retrySaturationError(() => client.invokeScript(script, opts));
73
+ */
74
+ export function retrySaturationError(fn, options) {
75
+ return retryValkeyOperation(fn, {
76
+ attempts: options?.attempts,
77
+ delayMs: options?.delayMs,
78
+ shouldRetry: isSaturationError,
79
+ jitter: true,
80
+ });
81
+ }
50
82
  //# sourceMappingURL=retry.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.mjs","sourceRoot":"","sources":["../retry.mts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,kBAAkB,GAAG;IACzB,mCAAmC;IACnC,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,4BAA4B;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAoB,EACpB,OAAqC;IAErC,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,GAAG,sBAAsB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"retry.mjs","sourceRoot":"","sources":["../retry.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,MAAM,kBAAkB,GAAG;IACzB,mCAAmC;IACnC,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,4BAA4B;CAC7B,CAAC;AAEF,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAE/D;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACpD,CAAC;AAgBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAoB,EACpB,OAAqC;IAErC,MAAM,EACJ,QAAQ,GAAG,CAAC,EACZ,OAAO,GAAG,IAAI,EACd,WAAW,GAAG,sBAAsB,EACpC,MAAM,GAAG,KAAK,GACf,GAAG,OAAO,IAAI,EAAE,CAAC;IAClB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACtF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC;AAYD;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAoB,EACpB,OAAqC;IAErC,OAAO,oBAAoB,CAAC,EAAE,EAAE;QAC9B,QAAQ,EAAE,OAAO,EAAE,QAAQ;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,WAAW,EAAE,iBAAiB;QAC9B,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC"}
package/dist/types.d.mts CHANGED
@@ -11,6 +11,17 @@ export type RateLimiterOptions = {
11
11
  ttlSeconds: number;
12
12
  /** Optional Valkey client. Defaults to the package rate limiter client. */
13
13
  client?: GlideClient;
14
+ /**
15
+ * Maximum number of retry attempts on inflight-saturation errors
16
+ * (default: VALKEY_INFLIGHT_RETRY_ATTEMPTS env or 3).
17
+ */
18
+ inflightRetryAttempts?: number;
19
+ /**
20
+ * Minimum delay in milliseconds between saturation-retry attempts
21
+ * (default: VALKEY_INFLIGHT_RETRY_DELAY_MS env or 1000).
22
+ * Actual delay is jittered in [delayMs, delayMs * 5].
23
+ */
24
+ inflightRetryDelayMs?: number;
14
25
  };
15
26
  export type RateLimiterWindow = {
16
27
  /** The prefix to use for this window's rate-limiter key */
@@ -29,8 +40,22 @@ export type RateLimiterWindow = {
29
40
  export type RateLimiterAddAndCheckWindowsOptions = {
30
41
  /** Optional Valkey client. Defaults to the package rate limiter client. */
31
42
  client?: GlideClient;
32
- /** Stop processing later windows as soon as an earlier window is limited. Defaults to record-all. */
43
+ /**
44
+ * Stop processing later windows as soon as an earlier window is limited.
45
+ * Defaults to record-all.
46
+ */
33
47
  mode?: "record-all" | "stop-on-limited";
48
+ /**
49
+ * Maximum number of retry attempts on inflight-saturation errors
50
+ * (default: VALKEY_INFLIGHT_RETRY_ATTEMPTS env or 3).
51
+ */
52
+ inflightRetryAttempts?: number;
53
+ /**
54
+ * Minimum delay in milliseconds between saturation-retry attempts
55
+ * (default: VALKEY_INFLIGHT_RETRY_DELAY_MS env or 1000).
56
+ * Actual delay is jittered in [delayMs, delayMs * 5].
57
+ */
58
+ inflightRetryDelayMs?: number;
34
59
  };
35
60
  export type ValkeyCacheOptions<K = string> = {
36
61
  /** The prefix to use for the cache */
@@ -39,15 +64,27 @@ export type ValkeyCacheOptions<K = string> = {
39
64
  ttlSeconds: number;
40
65
  /** The TTL in seconds for null values, defaults to ttlSeconds / 60 */
41
66
  nullTtlSeconds?: number;
42
- /** The mode to use: 'json' (default) for JSON serialization, 'text' for raw text storage, 'buffer' for Buffer storage */
67
+ /**
68
+ * The mode to use: 'json' (default) for JSON serialization, 'text' for raw
69
+ * text storage, 'buffer' for Buffer storage
70
+ */
43
71
  mode?: "json" | "text" | "buffer";
44
- /** Fraction of ttlSeconds representing the age threshold; values are stale when ttlSecondsRemaining < (1 - staleTtlAge) * ttlSeconds (0-1, defaults to 0.9) */
72
+ /**
73
+ * Fraction of ttlSeconds representing the age threshold; values are stale when
74
+ * ttlSecondsRemaining < (1 - staleTtlAge) * ttlSeconds (0-1, defaults to 0.9)
75
+ */
45
76
  staleTtlAge?: number;
46
77
  /** When false, stale cache hits are returned without a background refresh. Defaults to true. */
47
78
  staleRefresh?: boolean;
48
- /** Optional bloom filter for negative lookups — skip DB calls for entities that definitely don't exist */
79
+ /**
80
+ * Optional bloom filter for negative lookups — skip DB calls for entities
81
+ * that definitely don't exist
82
+ */
49
83
  bloomFilter?: import("./bloom-filter.mts").ValkeyBloomFilter;
50
- /** Optional runtime feature flag — if provided, called per-request; bloom filter is bypassed when it returns false */
84
+ /**
85
+ * Optional runtime feature flag — if provided, called per-request;
86
+ * bloom filter is bypassed when it returns false
87
+ */
51
88
  bloomFilterEnabled?: () => boolean;
52
89
  /** Optional Valkey client. Defaults to the package cache client. */
53
90
  client?: GlideClient;
@@ -58,6 +95,17 @@ export type ValkeyCacheOptions<K = string> = {
58
95
  * Valkey (e.g. strongly-consistent auth caches).
59
96
  */
60
97
  fallbackOnReadError?: boolean;
98
+ /**
99
+ * Maximum number of retry attempts on inflight-saturation errors
100
+ * (default: VALKEY_INFLIGHT_RETRY_ATTEMPTS env or 3).
101
+ */
102
+ inflightRetryAttempts?: number;
103
+ /**
104
+ * Minimum delay in milliseconds between saturation-retry attempts
105
+ * (default: VALKEY_INFLIGHT_RETRY_DELAY_MS env or 1000).
106
+ * Actual delay is jittered in [delayMs, delayMs * 5].
107
+ */
108
+ inflightRetryDelayMs?: number;
61
109
  } & (K extends string ? {
62
110
  /**
63
111
  * Converts a key to its string representation for cache storage.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../types.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../types.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valkyries",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Valkey utilities for caches, bloom filters, dynamic configuration, and rate limiting.",
5
5
  "homepage": "https://github.com/jonathanong/valkyries#readme",
6
6
  "bugs": {