@jsnw/nestjs-ioredis 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -127,14 +127,7 @@ var RedisLock = class {
127
127
  * @return {Promise<void>}
128
128
  */
129
129
  async release() {
130
- await this.redis.eval(dedent.default`
131
- if redis.call("hget", KEYS[1], ARGV[1]) == ARGV[2]
132
- then
133
- return redis.call("hdel", KEYS[1], ARGV[1])
134
- else
135
- return 0
136
- end
137
- `, 1, this.locksHashKey, this.name, this.value);
130
+ return this.redis.releaseLockAtomic(this.locksHashKey, this.name, this.value);
138
131
  }
139
132
  };
140
133
  //#endregion
@@ -225,10 +218,27 @@ let RedisCoreModule = _RedisCoreModule = class RedisCoreModule {
225
218
  static createRedisProvider() {
226
219
  return {
227
220
  provide: ioredis.default,
228
- useFactory: (options) => new ioredis.default(options),
221
+ useFactory: (options) => _RedisCoreModule.extendRedisWithCommands(new ioredis.default(options)),
229
222
  inject: [REDIS_OPTIONS_TOKEN]
230
223
  };
231
224
  }
225
+ /**
226
+ * @param {Redis} redis
227
+ * @private
228
+ */
229
+ static extendRedisWithCommands(redis) {
230
+ redis.defineCommand("releaseLockAtomic", {
231
+ numberOfKeys: 1,
232
+ lua: dedent.default`
233
+ if redis.call("hget", KEYS[1], ARGV[1]) == ARGV[2]
234
+ then
235
+ return redis.call("hdel", KEYS[1], ARGV[1])
236
+ else
237
+ return 0
238
+ end
239
+ `
240
+ });
241
+ }
232
242
  };
233
243
  RedisCoreModule = _RedisCoreModule = __decorate([(0, _nestjs_common.Global)(), (0, _nestjs_common.Module)({})], RedisCoreModule);
234
244
  //#endregion
package/dist/index.d.cts CHANGED
@@ -53,7 +53,7 @@ declare class RedisLock {
53
53
  /**
54
54
  * @return {Promise<void>}
55
55
  */
56
- release(): Promise<void>;
56
+ release(): Promise<number>;
57
57
  }
58
58
  //#endregion
59
59
  //#region src/redis-lock.factory.d.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsnw/nestjs-ioredis",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "NestJS module for integrating Redis",
5
5
  "exports": {
6
6
  "require": {
@@ -39,6 +39,7 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "@nestjs/common": "^11.1.27",
42
+ "@types/node": "^26.0.1",
42
43
  "ioredis": "^5.11.1",
43
44
  "tsdown": "^0.22.3",
44
45
  "typescript": "^5.9.3"