@mhbdev/redis 0.2.0 → 0.2.2

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 (48) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/bullmq/adapter.d.ts +2 -0
  3. package/dist/bullmq/adapter.d.ts.map +1 -1
  4. package/dist/bullmq/adapter.js +13 -3
  5. package/dist/bullmq/adapter.js.map +1 -1
  6. package/dist/cache/cache.d.ts.map +1 -1
  7. package/dist/cache/cache.js +12 -2
  8. package/dist/cache/cache.js.map +1 -1
  9. package/dist/core/codec.d.ts.map +1 -1
  10. package/dist/core/codec.js +5 -1
  11. package/dist/core/codec.js.map +1 -1
  12. package/dist/core/executor.d.ts +1 -1
  13. package/dist/core/executor.d.ts.map +1 -1
  14. package/dist/core/executor.js +22 -3
  15. package/dist/core/executor.js.map +1 -1
  16. package/dist/ioredis/executor.d.ts +2 -2
  17. package/dist/ioredis/executor.d.ts.map +1 -1
  18. package/dist/ioredis/executor.js +6 -6
  19. package/dist/ioredis/executor.js.map +1 -1
  20. package/dist/ioredis/pubsub.d.ts +1 -0
  21. package/dist/ioredis/pubsub.d.ts.map +1 -1
  22. package/dist/ioredis/pubsub.js +39 -12
  23. package/dist/ioredis/pubsub.js.map +1 -1
  24. package/dist/locks/locks.d.ts.map +1 -1
  25. package/dist/locks/locks.js +14 -4
  26. package/dist/locks/locks.js.map +1 -1
  27. package/dist/node/client.d.ts.map +1 -1
  28. package/dist/node/client.js +18 -11
  29. package/dist/node/client.js.map +1 -1
  30. package/dist/node/pool.d.ts +8 -2
  31. package/dist/node/pool.d.ts.map +1 -1
  32. package/dist/node/pool.js +44 -19
  33. package/dist/node/pool.js.map +1 -1
  34. package/dist/node/pubsub.d.ts.map +1 -1
  35. package/dist/node/pubsub.js +36 -5
  36. package/dist/node/pubsub.js.map +1 -1
  37. package/dist/pubsub/pubsub.d.ts.map +1 -1
  38. package/dist/pubsub/pubsub.js +9 -1
  39. package/dist/pubsub/pubsub.js.map +1 -1
  40. package/dist/queue/queue.d.ts.map +1 -1
  41. package/dist/queue/queue.js +53 -53
  42. package/dist/queue/queue.js.map +1 -1
  43. package/dist/rate-limit/contracts.d.ts +1 -0
  44. package/dist/rate-limit/contracts.d.ts.map +1 -1
  45. package/dist/rate-limit/contracts.js +59 -26
  46. package/dist/rate-limit/contracts.js.map +1 -1
  47. package/docs/adapters.md +3 -1
  48. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Harden Redis queue processing, rate-limit behavior, request cancellation, and client adapter lifecycle handling.
8
+
9
+ ## 0.2.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`d02479a`](https://github.com/mhbdev/redis/commit/d02479ac5f1308d5ec5478995a1e596afc99249d) Thanks [@mhbdev](https://github.com/mhbdev)! - Update development dependencies and GitHub Actions workflows.
14
+
3
15
  ## 0.2.0
4
16
 
5
17
  ### Minor Changes
@@ -13,6 +13,8 @@ export interface BullMqQueueLike {
13
13
  export interface BullMqJobLike {
14
14
  id?: string | number;
15
15
  data: unknown;
16
+ attemptsMade?: number;
17
+ timestamp?: number;
16
18
  }
17
19
  export interface BullMqWorkerLike {
18
20
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/bullmq/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EACX,cAAc,EACd,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC/B,GAAG,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACvE,OAAO,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,OAAO,CAAC,EAAE,kBAAkB,KACxB,gBAAgB,CAAC;AAEtB,qBAAa,kBAAkB,CAAC,CAAC;IAI/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,YACkB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC;QAClC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;KACpC,CAAC,EAIF;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IAEhC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAO3E;IAED,MAAM,CACL,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAC5C,aAAa,GAAE,kBAAuB,GACpC,mBAAmB,CAWrB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,OAAO,CAAC,SAAS;CASjB;AAED,qBAAa,mBAAoB,YAAW,WAAW;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,gBAAgB,EAAI;IAEzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;CACD;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EACzC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC,GACA,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/bullmq/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EACX,cAAc,EACd,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC/B,GAAG,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACvE,OAAO,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,OAAO,CAAC,EAAE,kBAAkB,KACxB,gBAAgB,CAAC;AAEtB,qBAAa,kBAAkB,CAAC,CAAC;IAI/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,YACkB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC;QAClC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;KACpC,CAAC,EAWF;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IAEhC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAY3E;IAED,MAAM,CACL,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAC5C,aAAa,GAAE,kBAAuB,GACpC,mBAAmB,CAWrB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,OAAO,CAAC,SAAS;CASjB;AAED,qBAAa,mBAAoB,YAAW,WAAW;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,gBAAgB,EAAI;IAEzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;CACD;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EACzC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC,GACA,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
@@ -9,11 +9,21 @@ export class BullMqQueueAdapter {
9
9
  this.options = options;
10
10
  this.jobName = options.jobName ?? "job";
11
11
  this.codec = options.codec ?? jsonCodec();
12
+ if (!this.jobName.trim())
13
+ throw new RedisConfigurationError("BullMQ job name is required");
14
+ if (options.maxAttempts !== undefined &&
15
+ (!Number.isSafeInteger(options.maxAttempts) || options.maxAttempts <= 0))
16
+ throw new RedisConfigurationError("BullMQ max attempts must be positive");
12
17
  }
13
18
  codec;
14
19
  async enqueue(data, enqueueOptions = {}) {
20
+ const delay = enqueueOptions.delayMs ?? 0;
21
+ if (!Number.isSafeInteger(delay) || delay < 0)
22
+ throw new RedisConfigurationError("BullMQ delay must be a non-negative integer");
23
+ if (enqueueOptions.jobId !== undefined && !enqueueOptions.jobId.trim())
24
+ throw new RedisConfigurationError("BullMQ job ID is required when provided");
15
25
  const job = await this.queue.add(this.jobName, this.codec.encode(data), {
16
- delay: enqueueOptions.delayMs,
26
+ delay,
17
27
  jobId: enqueueOptions.jobId,
18
28
  attempts: this.options.maxAttempts,
19
29
  });
@@ -33,8 +43,8 @@ export class BullMqQueueAdapter {
33
43
  return {
34
44
  id: String(job.id ?? crypto.randomUUID()),
35
45
  data: this.codec.decode(encoded),
36
- attempts: 0,
37
- enqueuedAt: Date.now(),
46
+ attempts: job.attemptsMade ?? 0,
47
+ enqueuedAt: job.timestamp ?? Date.now(),
38
48
  };
39
49
  }
40
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/bullmq/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAgC5D,MAAM,OAAO,kBAAkB;IAIZ,KAAK;IACL,OAAO;IAJR,OAAO,CAAS;IAEjC,YACkB,KAAsB,EACtB,OAKf;qBANe,KAAK;uBACL,OAAO;QAOxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,EAAK,CAAC;IAC9C,CAAC;IAEgB,KAAK,CAAgB;IAEtC,KAAK,CAAC,OAAO,CAAC,IAAO,EAAE,cAAc,GAAmB,EAAE;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,KAAK,EAAE,cAAc,CAAC,OAAO;YAC7B,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;SAClC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CACL,OAA4C,EAC5C,aAAa,GAAuB,EAAE;QAEtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;YAC9B,MAAM,IAAI,uBAAuB,CAChC,sDAAsD,CACtD,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CACxC,IAAI,CAAC,OAAO,EACZ,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC3C,aAAa,CACb,CAAC;QACF,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5B,CAAC;IAEO,SAAS,CAAC,GAAkB;QACnC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnF,OAAO;YACN,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAChC,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACH,CAAC;CACD;AAED,MAAM,OAAO,mBAAmB;IACF,MAAM;IAAnC,YAA6B,MAAwB;sBAAxB,MAAM;IAAqB,CAAC;IAEzD,KAAK;QACJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACD;AAED,MAAM,UAAU,wBAAwB,CACvC,KAAsB,EACtB,OAKE;IAEF,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/bullmq/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAkC5D,MAAM,OAAO,kBAAkB;IAIZ,KAAK;IACL,OAAO;IAJR,OAAO,CAAS;IAEjC,YACkB,KAAsB,EACtB,OAKf;qBANe,KAAK;uBACL,OAAO;QAOxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,EAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,CAAC,CAAC;QAClE,IACC,OAAO,CAAC,WAAW,KAAK,SAAS;YACjC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;YAExE,MAAM,IAAI,uBAAuB,CAAC,sCAAsC,CAAC,CAAC;IAC5E,CAAC;IAEgB,KAAK,CAAgB;IAEtC,KAAK,CAAC,OAAO,CAAC,IAAO,EAAE,cAAc,GAAmB,EAAE;QACzD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAC5C,MAAM,IAAI,uBAAuB,CAAC,6CAA6C,CAAC,CAAC;QAClF,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;YACrE,MAAM,IAAI,uBAAuB,CAAC,yCAAyC,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,KAAK;YACL,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;SAClC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CACL,OAA4C,EAC5C,aAAa,GAAuB,EAAE;QAEtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;YAC9B,MAAM,IAAI,uBAAuB,CAChC,sDAAsD,CACtD,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CACxC,IAAI,CAAC,OAAO,EACZ,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC3C,aAAa,CACb,CAAC;QACF,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5B,CAAC;IAEO,SAAS,CAAC,GAAkB;QACnC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnF,OAAO;YACN,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAChC,QAAQ,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC;YAC/B,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;SACvC,CAAC;IACH,CAAC;CACD;AAED,MAAM,OAAO,mBAAmB;IACF,MAAM;IAAnC,YAA6B,MAAwB;sBAAxB,MAAM;IAAqB,CAAC;IAEzD,KAAK;QACJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACD;AAED,MAAM,UAAU,wBAAwB,CACvC,KAAsB,EACtB,OAKE;IAEF,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC3C,KAAK,EAAE,aAAa,CAAC;IACrB,sFAAsF;IACtF,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH,qBAAa,UAAU,CAAC,CAAC;IAKZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IAErE,YAA6B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAKzD;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAS7C;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYhF;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1C;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1C;IAEK,QAAQ,CACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAaZ;IAED,OAAO,CAAC,GAAG;CASX;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE3E;AAED,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,oBAAc,CAAC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC3C,KAAK,EAAE,aAAa,CAAC;IACrB,sFAAsF;IACtF,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH,qBAAa,UAAU,CAAC,CAAC;IAKZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IAErE,YAA6B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAUzD;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAS7C;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBhF;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1C;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1C;IAEK,QAAQ,CACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAiBZ;IAED,OAAO,CAAC,GAAG;CASX;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE3E;AAED,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,oBAAc,CAAC"}
@@ -9,8 +9,11 @@ export class RedisCache {
9
9
  this.options = options;
10
10
  this.prefix = options.prefix ?? "mhbdev:cache";
11
11
  this.codec = options.codec ?? jsonCodec();
12
- if (!this.prefix.trim())
12
+ if (!this.prefix.trim() || this.prefix.includes("\n"))
13
13
  throw new RedisConfigurationError("Cache prefix is required");
14
+ if (options.maxKeyLength !== undefined &&
15
+ (!Number.isSafeInteger(options.maxKeyLength) || options.maxKeyLength <= 0))
16
+ throw new RedisConfigurationError("Cache max key length must be positive");
14
17
  }
15
18
  async get(key) {
16
19
  const value = await this.options.redis.execute(["GET", this.key(key)]);
@@ -26,6 +29,8 @@ export class RedisCache {
26
29
  }
27
30
  }
28
31
  async set(key, value, options = {}) {
32
+ if (options.onlyIfAbsent && options.onlyIfPresent)
33
+ throw new RedisConfigurationError("Cache set cannot require both onlyIfAbsent and onlyIfPresent");
29
34
  const encoded = this.codec.encode(value);
30
35
  const command = ["SET", this.key(key), encoded];
31
36
  if (options.ttlMs !== undefined) {
@@ -55,7 +60,12 @@ export class RedisCache {
55
60
  return (await pending);
56
61
  const operation = factory()
57
62
  .then(async (value) => {
58
- await this.set(key, value, options);
63
+ const stored = await this.set(key, value, options);
64
+ if (!stored && options.onlyIfAbsent) {
65
+ const winner = await this.get(key);
66
+ if (winner !== undefined)
67
+ return winner;
68
+ }
59
69
  return value;
60
70
  })
61
71
  .finally(() => this.pending.delete(key));
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,OAAK,UAAU,CAAC,CAAC,CAe1C,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,MAAM,CAG1C,CAAC"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,OAAK,UAAU,CAAC,CAAC,CAmB1C,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,MAAM,CAG1C,CAAC"}
@@ -2,7 +2,11 @@ import { RedisSerializationError } from "./errors.js";
2
2
  export const jsonCodec = () => ({
3
3
  encode(value) {
4
4
  try {
5
- return JSON.stringify(value);
5
+ const encoded = JSON.stringify(value);
6
+ if (encoded === undefined) {
7
+ throw new TypeError("Value is not JSON-serializable");
8
+ }
9
+ return encoded;
6
10
  }
7
11
  catch (error) {
8
12
  throw new RedisSerializationError("Unable to encode Redis value", error);
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAqB,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK;QACX,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,uBAAuB,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IACD,MAAM,CAAC,KAAK;QACX,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,uBAAuB,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACxB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CACxB,CAAC"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/core/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAqB,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK;QACX,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,OAAO,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,uBAAuB,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IACD,MAAM,CAAC,KAAK;QACX,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,uBAAuB,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACxB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CACxB,CAAC"}
@@ -24,5 +24,5 @@ export type RedisHooks = Readonly<{
24
24
  }>;
25
25
  export type RedisConnectionState = "idle" | "connecting" | "ready" | "closed" | "error";
26
26
  export declare function assertPositiveInteger(value: number, name: string): void;
27
- export declare function withTimeout<T>(operation: (signal: AbortSignal) => Promise<T>, timeoutMs: number, message?: string): Promise<T>;
27
+ export declare function withTimeout<T>(operation: (signal: AbortSignal) => Promise<T>, timeoutMs: number, message?: string, externalSignal?: AbortSignal): Promise<T>;
28
28
  //# sourceMappingURL=executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;AAC7C,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,CAAC,CAAC,GAAG,OAAO,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAsB,WAAW,CAAC,CAAC,EAClC,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,SAA8B,GACnC,OAAO,CAAC,CAAC,CAAC,CAiBZ"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;AAC7C,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,CAAC,CAAC,GAAG,OAAO,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAsB,WAAW,CAAC,CAAC,EAClC,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,SAA8B,EACrC,cAAc,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,CAAC,CAAC,CAmCZ"}
@@ -1,16 +1,33 @@
1
- import { RedisConfigurationError, RedisTimeoutError } from "./errors.js";
1
+ import { RedisConfigurationError, RedisRequestAbortedError, RedisTimeoutError, } from "./errors.js";
2
2
  export function assertPositiveInteger(value, name) {
3
3
  if (!Number.isSafeInteger(value) || value <= 0) {
4
4
  throw new RedisConfigurationError(`${name} must be a positive integer`);
5
5
  }
6
6
  }
7
- export async function withTimeout(operation, timeoutMs, message = "Redis operation timed out") {
7
+ export async function withTimeout(operation, timeoutMs, message = "Redis operation timed out", externalSignal) {
8
8
  assertPositiveInteger(timeoutMs, "Redis timeout");
9
+ if (externalSignal?.aborted)
10
+ throw new RedisRequestAbortedError(externalSignal.reason);
9
11
  const controller = new AbortController();
12
+ const signal = externalSignal
13
+ ? AbortSignal.any([controller.signal, externalSignal])
14
+ : controller.signal;
10
15
  let timer;
16
+ let abortHandler;
11
17
  try {
12
18
  return await Promise.race([
13
- operation(controller.signal),
19
+ operation(signal),
20
+ ...(externalSignal
21
+ ? [
22
+ new Promise((_, reject) => {
23
+ abortHandler = () => {
24
+ controller.abort(externalSignal.reason);
25
+ reject(new RedisRequestAbortedError(externalSignal.reason));
26
+ };
27
+ externalSignal.addEventListener("abort", abortHandler, { once: true });
28
+ }),
29
+ ]
30
+ : []),
14
31
  new Promise((_, reject) => {
15
32
  timer = setTimeout(() => {
16
33
  controller.abort();
@@ -22,6 +39,8 @@ export async function withTimeout(operation, timeoutMs, message = "Redis operati
22
39
  finally {
23
40
  if (timer)
24
41
  clearTimeout(timer);
42
+ if (externalSignal && abortHandler)
43
+ externalSignal.removeEventListener("abort", abortHandler);
25
44
  }
26
45
  }
27
46
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAkCzE,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,IAAY;IAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,uBAAuB,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IACzE,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,SAA8C,EAC9C,SAAiB,EACjB,OAAO,GAAG,2BAA2B;IAErC,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACJ,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACzB,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5B,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC5B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxC,CAAC,EAAE,SAAS,CAAC,CAAC;YACf,CAAC,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,GACjB,MAAM,aAAa,CAAC;AAkCrB,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,IAAY;IAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,uBAAuB,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IACzE,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,SAA8C,EAC9C,SAAiB,EACjB,OAAO,GAAG,2BAA2B,EACrC,cAA4B;IAE5B,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAClD,IAAI,cAAc,EAAE,OAAO;QAAE,MAAM,IAAI,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc;QAC5B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACtD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACrB,IAAI,KAAgD,CAAC;IACrD,IAAI,YAAsC,CAAC;IAC3C,IAAI,CAAC;QACJ,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACzB,SAAS,CAAC,MAAM,CAAC;YACjB,GAAG,CAAC,cAAc;gBACjB,CAAC,CAAC;oBACA,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;wBAC5B,YAAY,GAAG,GAAG,EAAE;4BACnB,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;4BACxC,MAAM,CAAC,IAAI,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC7D,CAAC,CAAC;wBACF,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxE,CAAC,CAAC;iBACF;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC5B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxC,CAAC,EAAE,SAAS,CAAC,CAAC;YACf,CAAC,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,cAAc,IAAI,YAAY;YACjC,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC"}
@@ -20,8 +20,8 @@ export declare class IoredisExecutor implements RedisConnection {
20
20
  constructor(client: IoredisClientLike, options?: IoredisExecutorOptions);
21
21
  get isReady(): boolean;
22
22
  connect(): Promise<void>;
23
- execute<T = unknown>(command: RedisCommand, _options?: RedisCommandOptions): Promise<T>;
24
- eval<T = unknown>(script: string, options: RedisScriptOptions, _options?: RedisCommandOptions): Promise<T>;
23
+ execute<T = unknown>(command: RedisCommand, options?: RedisCommandOptions): Promise<T>;
24
+ eval<T = unknown>(script: string, options: RedisScriptOptions, request?: RedisCommandOptions): Promise<T>;
25
25
  ping(): Promise<void>;
26
26
  close(): Promise<void>;
27
27
  private run;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/ioredis/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,UAAU,EAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,iBAAiB;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,SAAS,CAAC;CAC5D,CAAC,CAAC;AAEH,qBAAa,eAAgB,YAAW,eAAe;IAIrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,YACkB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,sBAA2B,EAGrD;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7B;IAEK,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC,CAIZ;IAEK,IAAI,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC,CAUZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;YAEa,GAAG;CAUjB;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,sBAAsB,GAC9B,eAAe,CAEjB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/ioredis/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,UAAU,EAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,iBAAiB;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,SAAS,CAAC;CAC5D,CAAC,CAAC;AAEH,qBAAa,eAAgB,YAAW,eAAe;IAIrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,YACkB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,sBAA2B,EAGrD;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7B;IAEK,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAKZ;IAEK,IAAI,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAWZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;YAEa,GAAG;CAejB;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,sBAAsB,GAC9B,eAAe,CAEjB"}
@@ -17,11 +17,11 @@ export class IoredisExecutor {
17
17
  throw new RedisClientStateError("The ioredis client has ended");
18
18
  await this.run(() => this.client.ping());
19
19
  }
20
- async execute(command, _options) {
21
- return this.run(() => this.client.call(command[0] ?? "", ...command.slice(1)));
20
+ async execute(command, options) {
21
+ return this.run(() => this.client.call(command[0] ?? "", ...command.slice(1)), options?.signal);
22
22
  }
23
- async eval(script, options, _options) {
24
- return this.run(() => this.client.eval(script, options.keys?.length ?? 0, ...(options.keys ?? []), ...(options.arguments ?? [])));
23
+ async eval(script, options, request) {
24
+ return this.run(() => this.client.eval(script, options.keys?.length ?? 0, ...(options.keys ?? []), ...(options.arguments ?? [])), request?.signal);
25
25
  }
26
26
  async ping() {
27
27
  await this.run(() => this.client.ping());
@@ -32,9 +32,9 @@ export class IoredisExecutor {
32
32
  else
33
33
  this.client.disconnect?.();
34
34
  }
35
- async run(operation) {
35
+ async run(operation, signal) {
36
36
  try {
37
- return await withTimeout(operation, this.commandTimeoutMs);
37
+ return await withTimeout(() => operation(), this.commandTimeoutMs, "Redis command timed out", signal);
38
38
  }
39
39
  catch (error) {
40
40
  const normalized = this.options.normalizeError?.(error);
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/ioredis/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,qBAAqB,EACrB,UAAU,EACV,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiBlD,MAAM,OAAO,eAAe;IAIT,MAAM;IACN,OAAO;IAJR,gBAAgB,CAAS;IAE1C,YACkB,MAAyB,EACzB,OAAO,GAA2B,EAAE;sBADpC,MAAM;uBACN,OAAO;QAExB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAChD,MAAM,IAAI,qBAAqB,CAAC,8BAA8B,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CACZ,OAAqB,EACrB,QAA8B;QAE9B,OAAO,IAAI,CAAC,GAAG,CACd,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAe,CAC3E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACT,MAAc,EACd,OAA2B,EAC3B,QAA8B;QAE9B,OAAO,IAAI,CAAC,GAAG,CACd,GAAG,EAAE,CACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,MAAM,EACN,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,EACzB,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,EACvB,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CACd,CAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;;YAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,SAA2B;QAC/C,IAAI,CAAC;YACJ,OAAO,MAAM,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,UAAU;gBAAE,MAAM,UAAU,CAAC;YACjC,IAAI,KAAK,YAAY,UAAU;gBAAE,MAAM,KAAK,CAAC;YAC7C,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;IACF,CAAC;CACD;AAED,MAAM,UAAU,qBAAqB,CACpC,MAAyB,EACzB,OAAgC;IAEhC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/ioredis/executor.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,6 @@ export interface IoredisPubSubClientLike {
12
12
  export declare function createIoredisPubSubTransport(options: Readonly<{
13
13
  publisher: IoredisPubSubClientLike;
14
14
  subscriber?: IoredisPubSubClientLike;
15
+ onError?: (error: Error) => void;
15
16
  }>): RedisSubscriptionTransport;
16
17
  //# sourceMappingURL=pubsub.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/ioredis/pubsub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,WAAW,uBAAuB;IACvC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACnF,SAAS,CAAC,IAAI,uBAAuB,CAAC;IACtC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,UAAU,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,uBAAuB,CAAC;IACnC,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACrC,CAAC,GACA,0BAA0B,CAoC5B"}
1
+ {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/ioredis/pubsub.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,WAAW,uBAAuB;IACvC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACnF,SAAS,CAAC,IAAI,uBAAuB,CAAC;IACtC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,UAAU,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,uBAAuB,CAAC;IACnC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC,GACA,0BAA0B,CAiE5B"}
@@ -1,17 +1,35 @@
1
- import { RedisConfigurationError } from "../core/errors.js";
1
+ import { asError, RedisClientStateError, RedisConfigurationError, } from "../core/errors.js";
2
2
  export function createIoredisPubSubTransport(options) {
3
3
  const subscriber = options.subscriber ?? options.publisher.duplicate?.();
4
+ const ownsSubscriber = options.subscriber === undefined;
4
5
  if (!subscriber)
5
6
  throw new RedisConfigurationError("An ioredis subscriber or duplicate() method is required");
6
7
  const listeners = new Map();
8
+ let closed = false;
7
9
  const onMessage = (channel, message) => {
8
- for (const listener of listeners.get(channel) ?? [])
9
- void listener(message);
10
+ for (const listener of listeners.get(channel) ?? []) {
11
+ try {
12
+ void Promise.resolve(listener(message)).catch((error) => options.onError?.(asError(error)));
13
+ }
14
+ catch (error) {
15
+ options.onError?.(asError(error));
16
+ }
17
+ }
10
18
  };
11
19
  subscriber.on("message", onMessage);
12
20
  return {
13
- publish: (channel, message) => options.publisher.publish(channel, message),
21
+ async publish(channel, message) {
22
+ if (closed)
23
+ throw new RedisClientStateError("The pub/sub transport has been closed");
24
+ if (!channel.trim())
25
+ throw new RedisConfigurationError("Pub/sub channel is required");
26
+ return options.publisher.publish(channel, message);
27
+ },
14
28
  async subscribe(channel, handler) {
29
+ if (closed)
30
+ throw new RedisClientStateError("The pub/sub transport has been closed");
31
+ if (!channel.trim())
32
+ throw new RedisConfigurationError("Pub/sub channel is required");
15
33
  let channelListeners = listeners.get(channel);
16
34
  if (!channelListeners) {
17
35
  channelListeners = new Set();
@@ -28,14 +46,23 @@ export function createIoredisPubSubTransport(options) {
28
46
  };
29
47
  },
30
48
  async close() {
31
- if (subscriber.quit)
32
- await subscriber.quit();
33
- else
34
- subscriber.disconnect?.();
35
- if (options.publisher.quit)
36
- await options.publisher.quit();
37
- else
38
- options.publisher.disconnect?.();
49
+ if (closed)
50
+ return;
51
+ closed = true;
52
+ const channels = [...listeners.keys()];
53
+ subscriber.off?.("message", onMessage);
54
+ listeners.clear();
55
+ try {
56
+ await Promise.all(channels.map((channel) => subscriber.unsubscribe(channel)));
57
+ }
58
+ finally {
59
+ if (ownsSubscriber) {
60
+ if (subscriber.quit)
61
+ await subscriber.quit();
62
+ else
63
+ subscriber.disconnect?.();
64
+ }
65
+ }
39
66
  },
40
67
  };
41
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/ioredis/pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAc5D,MAAM,UAAU,4BAA4B,CAC3C,OAGE;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC;IACzE,IAAI,CAAC,UAAU;QACd,MAAM,IAAI,uBAAuB,CAChC,yDAAyD,CACzD,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0D,CAAC;IACpF,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE;QACtD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpC,OAAO;QACN,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1E,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO;YAC/B,IAAI,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvB,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBACzC,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,KAAK,IAAI,EAAE;gBACjB,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,gBAAgB,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;oBAClC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC1B,MAAM,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC;YACF,CAAC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK;YACV,IAAI,UAAU,CAAC,IAAI;gBAAE,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;;gBACxC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI;gBAAE,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;;gBACtD,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;QACvC,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/ioredis/pubsub.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../src/locks/locks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,qBAAa,gBAAgB;IAIhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,YAA6B,OAAO,EAAE,gBAAgB,EAGrD;IAEK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAoB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAyCrF;IAEK,QAAQ,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EAChD,KAAK,SAAoB,GACvB,OAAO,CAAC,CAAC,CAAC,CAQZ;CACD;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAE7E;AAED,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,0BAAoB,CAAC"}
1
+ {"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../src/locks/locks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,qBAAa,gBAAgB;IAIhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,YAA6B,OAAO,EAAE,gBAAgB,EAOrD;IAEK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAoB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA+CrF;IAEK,QAAQ,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EAChD,KAAK,SAAoB,GACvB,OAAO,CAAC,CAAC,CAAC,CAQZ;CACD;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAE7E;AAED,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,0BAAoB,CAAC"}
@@ -8,10 +8,14 @@ export class RedisLockManager {
8
8
  this.options = options;
9
9
  this.prefix = options.prefix ?? "mhbdev:lock";
10
10
  this.defaultTtlMs = options.defaultTtlMs ?? 30_000;
11
+ if (!this.prefix.trim() || this.prefix.includes("\n"))
12
+ throw new RedisLockError("Lock prefix is invalid");
13
+ if (!Number.isSafeInteger(this.defaultTtlMs) || this.defaultTtlMs <= 0)
14
+ throw new RedisLockError("Lock TTL must be positive");
11
15
  }
12
16
  async acquire(name, ttlMs = this.defaultTtlMs) {
13
- if (!name.trim())
14
- throw new RedisLockError("Lock name is required");
17
+ if (!name.trim() || name.includes("\n") || name.length > 512)
18
+ throw new RedisLockError("Lock name is invalid");
15
19
  if (!Number.isSafeInteger(ttlMs) || ttlMs <= 0)
16
20
  throw new RedisLockError("Lock TTL must be positive");
17
21
  const key = `${this.prefix}:${name}`;
@@ -27,11 +31,14 @@ export class RedisLockManager {
27
31
  if (result !== "OK")
28
32
  return null;
29
33
  const createdAt = Date.now();
34
+ let expiresAt = createdAt + ttlMs;
30
35
  let released = false;
31
36
  return {
32
37
  key,
33
38
  token,
34
- expiresAt: createdAt + ttlMs,
39
+ get expiresAt() {
40
+ return expiresAt;
41
+ },
35
42
  release: async () => {
36
43
  if (released)
37
44
  return false;
@@ -51,7 +58,10 @@ export class RedisLockManager {
51
58
  keys: [key],
52
59
  arguments: [token, String(nextTtlMs)],
53
60
  });
54
- return result === 1;
61
+ if (result !== 1)
62
+ return false;
63
+ expiresAt = Date.now() + nextTtlMs;
64
+ return true;
55
65
  },
56
66
  };
57
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"locks.js","sourceRoot":"","sources":["../../src/locks/locks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locks.js","sourceRoot":"","sources":["../../src/locks/locks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/node/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,IAAI,gBAAgB,EAC3C,KAAK,eAAe,EACpB,MAAM,OAAO,CAAC;AAGf,OAAO,EAEN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,EAEvB,MAAM,qBAAqB,CAAC;AAG7B,KAAK,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,eAAe,CAC5C,WAAW,EACX,WAAW,EACX,WAAW,EACX,CAAC,EACD,WAAW,CACX,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,qBAAqB,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC,CAAC;AAEH,qBAAa,WAAY,YAAW,eAAe;IAClD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAmBrB;IACH,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,OAAO,EAAE,kBAAkB,EActC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,aAAa;IAMf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B7B;IAEK,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpC,OAAO,CAAC,CAAC,CAAC,CAYZ;YAEa,WAAW;IAanB,IAAI,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpC,OAAO,CAAC,CAAC,CAAC,CASZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAED,GAAG,IAAI,eAAe,CAErB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ3B;CACD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAE1E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACtC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAQZ"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/node/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,IAAI,gBAAgB,EAC3C,KAAK,eAAe,EACpB,MAAM,OAAO,CAAC;AAUf,OAAO,EAEN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,EAEvB,MAAM,qBAAqB,CAAC;AAG7B,KAAK,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,eAAe,CAC5C,WAAW,EACX,WAAW,EACX,WAAW,EACX,CAAC,EACD,WAAW,CACX,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,qBAAqB,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC,CAAC;AAEH,qBAAa,WAAY,YAAW,eAAe;IAClD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAmBrB;IACH,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,OAAO,EAAE,kBAAkB,EAwBtC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,aAAa;IAMf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B7B;IAEK,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpC,OAAO,CAAC,CAAC,CAAC,CAgBZ;YAEa,WAAW;IAanB,IAAI,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACpC,OAAO,CAAC,CAAC,CAAC,CASZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAED,GAAG,IAAI,eAAe,CAErB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ3B;CACD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAE1E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACtC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAQZ"}
@@ -1,5 +1,5 @@
1
1
  import { createClient, } from "redis";
2
- import { asError, RedisClientStateError, RedisConnectionError } from "../core/errors.js";
2
+ import { asError, RedisClientStateError, RedisConfigurationError, RedisConnectionError, RedisRequestAbortedError, RedisTimeoutError, } from "../core/errors.js";
3
3
  import { assertPositiveInteger, withTimeout, } from "../core/executor.js";
4
4
  import { normalizeNodeRedisError } from "./errors.js";
5
5
  export class RedisClient {
@@ -22,6 +22,11 @@ export class RedisClient {
22
22
  };
23
23
  assertPositiveInteger(this.options.connectTimeoutMs, "Redis connect timeout");
24
24
  assertPositiveInteger(this.options.commandTimeoutMs, "Redis command timeout");
25
+ if (!Number.isSafeInteger(this.options.maxReconnectAttempts) ||
26
+ this.options.maxReconnectAttempts < 0)
27
+ throw new RedisConfigurationError("Redis reconnect attempts must be non-negative");
28
+ assertPositiveInteger(this.options.reconnectBaseDelayMs, "Redis reconnect base delay");
29
+ assertPositiveInteger(this.options.reconnectMaxDelayMs, "Redis reconnect max delay");
25
30
  this.client = this.createClient();
26
31
  }
27
32
  get isReady() {
@@ -67,19 +72,19 @@ export class RedisClient {
67
72
  throw new RedisClientStateError("The Redis client has been closed");
68
73
  if (this.client.isReady)
69
74
  return;
75
+ const client = this.client;
70
76
  this.connecting ??= withTimeout(async () => {
71
77
  this.options.hooks?.onStateChange?.("connecting");
72
- try {
73
- await this.client.connect();
74
- }
75
- catch (error) {
76
- this.replaceClient();
77
- throw new RedisConnectionError("Redis connection failed", error);
78
- }
78
+ await client.connect();
79
79
  }, this.options.connectTimeoutMs, "Redis connection timed out")
80
80
  .catch((error) => {
81
- this.replaceClient();
82
- throw error;
81
+ if (this.client === client)
82
+ this.replaceClient();
83
+ if (error instanceof RedisConnectionError ||
84
+ error instanceof RedisTimeoutError ||
85
+ error instanceof RedisClientStateError)
86
+ throw error;
87
+ throw new RedisConnectionError("Redis connection failed", error);
83
88
  })
84
89
  .finally(() => {
85
90
  this.connecting = null;
@@ -89,11 +94,13 @@ export class RedisClient {
89
94
  throw new RedisClientStateError("The Redis client was closed while connecting");
90
95
  }
91
96
  async execute(command, options = {}) {
97
+ if (options.signal?.aborted)
98
+ throw new RedisRequestAbortedError(options.signal.reason);
92
99
  await this.connect();
93
100
  const started = Date.now();
94
101
  this.options.hooks?.onCommandStart?.(command);
95
102
  try {
96
- return await withTimeout((signal) => this.sendCommand(command, options.signal ?? signal), this.options.commandTimeoutMs);
103
+ return await withTimeout((signal) => this.sendCommand(command, signal), this.options.commandTimeoutMs, "Redis command timed out", options.signal);
97
104
  }
98
105
  finally {
99
106
  this.options.hooks?.onCommandEnd?.(command, Date.now() - started);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/node/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/node/client.ts"],"names":[],"mappings":"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"}