@mhbdev/redis 0.2.1 → 0.2.3

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 (57) 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/core/hooks.d.ts +5 -0
  17. package/dist/core/hooks.d.ts.map +1 -0
  18. package/dist/core/hooks.js +23 -0
  19. package/dist/core/hooks.js.map +1 -0
  20. package/dist/ioredis/executor.d.ts +2 -2
  21. package/dist/ioredis/executor.d.ts.map +1 -1
  22. package/dist/ioredis/executor.js +6 -6
  23. package/dist/ioredis/executor.js.map +1 -1
  24. package/dist/ioredis/pubsub.d.ts +1 -0
  25. package/dist/ioredis/pubsub.d.ts.map +1 -1
  26. package/dist/ioredis/pubsub.js +40 -12
  27. package/dist/ioredis/pubsub.js.map +1 -1
  28. package/dist/locks/locks.d.ts.map +1 -1
  29. package/dist/locks/locks.js +14 -4
  30. package/dist/locks/locks.js.map +1 -1
  31. package/dist/node/client.d.ts.map +1 -1
  32. package/dist/node/client.js +28 -20
  33. package/dist/node/client.js.map +1 -1
  34. package/dist/node/pool.d.ts +8 -2
  35. package/dist/node/pool.d.ts.map +1 -1
  36. package/dist/node/pool.js +53 -27
  37. package/dist/node/pool.js.map +1 -1
  38. package/dist/node/pubsub.d.ts.map +1 -1
  39. package/dist/node/pubsub.js +37 -5
  40. package/dist/node/pubsub.js.map +1 -1
  41. package/dist/pubsub/pubsub.d.ts.map +1 -1
  42. package/dist/pubsub/pubsub.js +9 -1
  43. package/dist/pubsub/pubsub.js.map +1 -1
  44. package/dist/queue/index.d.ts +1 -1
  45. package/dist/queue/index.d.ts.map +1 -1
  46. package/dist/queue/index.js.map +1 -1
  47. package/dist/queue/queue.d.ts +20 -0
  48. package/dist/queue/queue.d.ts.map +1 -1
  49. package/dist/queue/queue.js +216 -73
  50. package/dist/queue/queue.js.map +1 -1
  51. package/dist/rate-limit/contracts.d.ts +1 -0
  52. package/dist/rate-limit/contracts.d.ts.map +1 -1
  53. package/dist/rate-limit/contracts.js +59 -26
  54. package/dist/rate-limit/contracts.js.map +1 -1
  55. package/docs/adapters.md +3 -1
  56. package/docs/queues.md +16 -0
  57. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Correct delayed stream reply parsing and add safe metadata-only queue lifecycle hooks.
8
+
9
+ ## 0.2.2
10
+
11
+ ### Patch Changes
12
+
13
+ - Harden Redis queue processing, rate-limit behavior, request cancellation, and client adapter lifecycle handling.
14
+
3
15
  ## 0.2.1
4
16
 
5
17
  ### Patch 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":"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"}
@@ -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"}
@@ -0,0 +1,5 @@
1
+ export type RedisErrorHook = (error: Error) => void;
2
+ export declare function notifyHook<Arguments extends readonly unknown[]>(hook: ((...args: Arguments) => void) | undefined, onError: RedisErrorHook | undefined, ...args: Arguments): void;
3
+ /** Error observers are isolated so monitoring code cannot interrupt Redis work. */
4
+ export declare function notifyError(hook: RedisErrorHook | undefined, error: unknown): void;
5
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAEpD,wBAAgB,UAAU,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,EAC9D,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,EAChD,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,GAAG,IAAI,EAAE,SAAS,GAChB,IAAI,CAON;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAOlF"}
@@ -0,0 +1,23 @@
1
+ import { asError } from "./errors.js";
2
+ export function notifyHook(hook, onError, ...args) {
3
+ if (!hook)
4
+ return;
5
+ try {
6
+ hook(...args);
7
+ }
8
+ catch (error) {
9
+ notifyError(onError, error);
10
+ }
11
+ }
12
+ /** Error observers are isolated so monitoring code cannot interrupt Redis work. */
13
+ export function notifyError(hook, error) {
14
+ if (!hook)
15
+ return;
16
+ try {
17
+ hook(asError(error));
18
+ }
19
+ catch {
20
+ // Error hooks are terminal observers and must not create unhandled failures.
21
+ }
22
+ }
23
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC,MAAM,UAAU,UAAU,CACzB,IAAgD,EAChD,OAAmC,EACnC,GAAG,IAAe;IAElB,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QACJ,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;AACF,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,IAAgC,EAAE,KAAc;IAC3E,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACR,6EAA6E;IAC9E,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":"AAEA,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,36 @@
1
- import { RedisConfigurationError } from "../core/errors.js";
1
+ import { RedisClientStateError, RedisConfigurationError } from "../core/errors.js";
2
+ import { notifyError } from "../core/hooks.js";
2
3
  export function createIoredisPubSubTransport(options) {
3
4
  const subscriber = options.subscriber ?? options.publisher.duplicate?.();
5
+ const ownsSubscriber = options.subscriber === undefined;
4
6
  if (!subscriber)
5
7
  throw new RedisConfigurationError("An ioredis subscriber or duplicate() method is required");
6
8
  const listeners = new Map();
9
+ let closed = false;
7
10
  const onMessage = (channel, message) => {
8
- for (const listener of listeners.get(channel) ?? [])
9
- void listener(message);
11
+ for (const listener of listeners.get(channel) ?? []) {
12
+ try {
13
+ void Promise.resolve(listener(message)).catch((error) => notifyError(options.onError, error));
14
+ }
15
+ catch (error) {
16
+ notifyError(options.onError, error);
17
+ }
18
+ }
10
19
  };
11
20
  subscriber.on("message", onMessage);
12
21
  return {
13
- publish: (channel, message) => options.publisher.publish(channel, message),
22
+ async publish(channel, message) {
23
+ if (closed)
24
+ throw new RedisClientStateError("The pub/sub transport has been closed");
25
+ if (!channel.trim())
26
+ throw new RedisConfigurationError("Pub/sub channel is required");
27
+ return options.publisher.publish(channel, message);
28
+ },
14
29
  async subscribe(channel, handler) {
30
+ if (closed)
31
+ throw new RedisClientStateError("The pub/sub transport has been closed");
32
+ if (!channel.trim())
33
+ throw new RedisConfigurationError("Pub/sub channel is required");
15
34
  let channelListeners = listeners.get(channel);
16
35
  if (!channelListeners) {
17
36
  channelListeners = new Set();
@@ -28,14 +47,23 @@ export function createIoredisPubSubTransport(options) {
28
47
  };
29
48
  },
30
49
  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?.();
50
+ if (closed)
51
+ return;
52
+ closed = true;
53
+ const channels = [...listeners.keys()];
54
+ subscriber.off?.("message", onMessage);
55
+ listeners.clear();
56
+ try {
57
+ await Promise.all(channels.map((channel) => subscriber.unsubscribe(channel)));
58
+ }
59
+ finally {
60
+ if (ownsSubscriber) {
61
+ if (subscriber.quit)
62
+ await subscriber.quit();
63
+ else
64
+ subscriber.disconnect?.();
65
+ }
66
+ }
39
67
  },
40
68
  };
41
69
  }
@@ -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;AAI7B,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;IAoCpB,OAAO,CAAC,aAAa;IAMf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAgC7B;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,CAqBZ;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,CAY3B;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"}