@xnestjs/ioredis 0.0.1 → 0.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/{esm → cjs}/index.d.ts +0 -2
- package/cjs/index.js +1 -2
- package/cjs/index.js.map +1 -0
- package/cjs/redis-client.d.ts +10 -0
- package/cjs/redis-client.js +9 -67
- package/cjs/redis-client.js.map +1 -0
- package/cjs/redis-core.module.d.ts +15 -0
- package/cjs/redis-core.module.js +121 -61
- package/cjs/redis-core.module.js.map +1 -0
- package/{esm/redis-client.d.ts → cjs/redis-lock.d.ts} +8 -10
- package/cjs/redis-lock.js +68 -0
- package/cjs/redis-lock.js.map +1 -0
- package/cjs/redis.constants.js +1 -0
- package/cjs/redis.constants.js.map +1 -0
- package/cjs/redis.interface.d.ts +33 -0
- package/cjs/redis.interface.js +1 -0
- package/cjs/redis.interface.js.map +1 -0
- package/cjs/redis.module.d.ts +8 -0
- package/cjs/redis.module.js +19 -7
- package/cjs/redis.module.js.map +1 -0
- package/esm/index.js +1 -2
- package/esm/index.js.map +1 -0
- package/esm/redis-client.js +7 -66
- package/esm/redis-client.js.map +1 -0
- package/esm/redis-core.module.js +122 -62
- package/esm/redis-core.module.js.map +1 -0
- package/esm/redis-lock.js +64 -0
- package/esm/redis-lock.js.map +1 -0
- package/esm/redis.constants.js +1 -0
- package/esm/redis.constants.js.map +1 -0
- package/esm/redis.interface.js +1 -0
- package/esm/redis.interface.js.map +1 -0
- package/esm/redis.module.js +18 -6
- package/esm/redis.module.js.map +1 -0
- package/package.json +15 -16
- package/types/index.d.ts +3 -0
- package/types/redis-client.d.ts +10 -0
- package/types/redis-core.module.d.ts +15 -0
- package/types/redis-lock.d.ts +39 -0
- package/types/redis.constants.d.ts +2 -0
- package/types/redis.interface.d.ts +33 -0
- package/types/redis.module.d.ts +8 -0
- package/cjs/redis.decorators.js +0 -7
- package/cjs/redis.utils.js +0 -12
- package/esm/redis-core.module.d.ts +0 -14
- package/esm/redis.decorators.d.ts +0 -1
- package/esm/redis.decorators.js +0 -3
- package/esm/redis.interface.d.ts +0 -19
- package/esm/redis.module.d.ts +0 -6
- package/esm/redis.utils.d.ts +0 -3
- package/esm/redis.utils.js +0 -8
- /package/{esm → cjs}/redis.constants.d.ts +0 -0
package/{esm → cjs}/index.d.ts
RENAMED
package/cjs/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./redis.decorators.js"), exports);
|
|
5
4
|
tslib_1.__exportStar(require("./redis.interface.js"), exports);
|
|
6
5
|
tslib_1.__exportStar(require("./redis.module.js"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./redis.utils.js"), exports);
|
|
8
6
|
tslib_1.__exportStar(require("./redis-client.js"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/ioredis/src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,4DAAkC;AAClC,4DAAkC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Redis, { Cluster } from 'ioredis';
|
|
2
|
+
import { RedisLock } from './redis-lock.js';
|
|
3
|
+
export interface RedisClient extends Redis, RedisLock {
|
|
4
|
+
}
|
|
5
|
+
export interface RedisCluster extends Cluster, RedisLock {
|
|
6
|
+
}
|
|
7
|
+
export declare class RedisClient extends Redis {
|
|
8
|
+
}
|
|
9
|
+
export declare class RedisCluster extends Cluster {
|
|
10
|
+
}
|
package/cjs/redis-client.js
CHANGED
|
@@ -1,73 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RedisClient = void 0;
|
|
3
|
+
exports.RedisCluster = exports.RedisClient = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const ioredis_1 = tslib_1.
|
|
6
|
-
const
|
|
5
|
+
const ioredis_1 = tslib_1.__importStar(require("ioredis"));
|
|
6
|
+
const redis_lock_js_1 = require("./redis-lock.js");
|
|
7
7
|
class RedisClient extends ioredis_1.default {
|
|
8
|
-
lockPrefix;
|
|
9
|
-
/**
|
|
10
|
-
* Try to lock once
|
|
11
|
-
* @param {string} name redis-lock name
|
|
12
|
-
* @param {number} [expire] milliseconds, TTL for the redis key
|
|
13
|
-
* @returns {boolean} true: success, false: failed
|
|
14
|
-
*/
|
|
15
|
-
async tryLock(name, expire) {
|
|
16
|
-
const result = await this.set(this._getLockKey(name), '_lock_', 'PX', expire, 'NX');
|
|
17
|
-
return result !== null;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* lock, automatically retrying if failed
|
|
21
|
-
* @param {string} name redis-lock name
|
|
22
|
-
* @param {object} [options] Options
|
|
23
|
-
* @param {number} [options.expire=60000] TTL
|
|
24
|
-
* @param {number} [options.retryInterval=100] milliseconds, the interval to retry if failed
|
|
25
|
-
* @param {number} [options.maxRetries=10] max times to retry
|
|
26
|
-
*/
|
|
27
|
-
async lock(name, options) {
|
|
28
|
-
const expire = (0, putil_varhelpers_1.toNumberDef)(options?.expire, 60000);
|
|
29
|
-
const retryInterval = (0, putil_varhelpers_1.toNumberDef)(options?.retryInterval, 100);
|
|
30
|
-
const maxRetries = (0, putil_varhelpers_1.toNumberDef)(options?.maxRetries, 10);
|
|
31
|
-
let retryTimes = 0;
|
|
32
|
-
// eslint-disable-next-line no-constant-condition
|
|
33
|
-
while (1) {
|
|
34
|
-
if (await this.tryLock(name, expire)) {
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
await this._sleep(retryInterval);
|
|
39
|
-
if (retryTimes >= maxRetries) {
|
|
40
|
-
throw new Error(`Redis lock "${name}" timed out`);
|
|
41
|
-
}
|
|
42
|
-
retryTimes++;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Unlock a redis-lock by name
|
|
48
|
-
* @param {string} name redis-lock name
|
|
49
|
-
*/
|
|
50
|
-
async unlock(name) {
|
|
51
|
-
const s = 'if redis.call(\'get\', KEYS[1]) == ARGV[1] then return redis.call(\'del\', KEYS[1]) else return 0 end';
|
|
52
|
-
await this.eval(s, 1, this._getLockKey(name), '_lock_');
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Set TTL for a redis-lock
|
|
56
|
-
* @param {string} name redis-lock name
|
|
57
|
-
* @param {number} milliseconds TTL
|
|
58
|
-
*/
|
|
59
|
-
async setLockTTL(name, milliseconds) {
|
|
60
|
-
const result = await this.pexpire(this._getLockKey(name), milliseconds);
|
|
61
|
-
return !!result;
|
|
62
|
-
}
|
|
63
|
-
_getLockKey(name) {
|
|
64
|
-
return (this.lockPrefix || 'lock:') + name;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* @param {number} ms milliseconds, the sleep interval
|
|
68
|
-
*/
|
|
69
|
-
_sleep(ms) {
|
|
70
|
-
return new Promise(resolve => setTimeout(resolve, Number(ms)));
|
|
71
|
-
}
|
|
72
8
|
}
|
|
73
9
|
exports.RedisClient = RedisClient;
|
|
10
|
+
class RedisCluster extends ioredis_1.Cluster {
|
|
11
|
+
}
|
|
12
|
+
exports.RedisCluster = RedisCluster;
|
|
13
|
+
Object.assign(RedisClient.prototype, redis_lock_js_1.RedisLock.prototype);
|
|
14
|
+
Object.assign(RedisCluster.prototype, redis_lock_js_1.RedisLock.prototype);
|
|
15
|
+
//# sourceMappingURL=redis-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../packages/ioredis/src/redis-client.ts"],"names":[],"mappings":";;;;AAAA,2DAAyC;AACzC,mDAA4C;AAQ5C,MAAa,WAAY,SAAQ,iBAAK;CACrC;AADD,kCACC;AAED,MAAa,YAAa,SAAQ,iBAAO;CACxC;AADD,oCACC;AAED,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,yBAAS,CAAC,SAAS,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,yBAAS,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DynamicModule, OnApplicationShutdown } from '@nestjs/common';
|
|
2
|
+
import { ModuleRef } from '@nestjs/core';
|
|
3
|
+
import { RedisClientAsyncOptions, RedisClientOptions, RedisClusterAsyncOptions, RedisClusterOptions } from './redis.interface.js';
|
|
4
|
+
export declare class RedisCoreModule implements OnApplicationShutdown {
|
|
5
|
+
private readonly options;
|
|
6
|
+
private readonly moduleRef;
|
|
7
|
+
constructor(options: RedisClientOptions | RedisClusterOptions, moduleRef: ModuleRef);
|
|
8
|
+
static registerClient(options?: RedisClientOptions): DynamicModule;
|
|
9
|
+
static registerClientAsync(asyncOptions: RedisClientAsyncOptions): DynamicModule;
|
|
10
|
+
static registerCluster(options: RedisClusterOptions): DynamicModule;
|
|
11
|
+
static registerClusterAsync(asyncOptions: RedisClusterAsyncOptions): DynamicModule;
|
|
12
|
+
private static _createClient;
|
|
13
|
+
private static _createCluster;
|
|
14
|
+
onApplicationShutdown(): Promise<void>;
|
|
15
|
+
}
|
package/cjs/redis-core.module.js
CHANGED
|
@@ -7,23 +7,20 @@ const crypto = tslib_1.__importStar(require("crypto"));
|
|
|
7
7
|
const common_1 = require("@nestjs/common");
|
|
8
8
|
const core_1 = require("@nestjs/core");
|
|
9
9
|
const redis_constants_js_1 = require("./redis.constants.js");
|
|
10
|
-
const redis_utils_js_1 = require("./redis.utils.js");
|
|
11
10
|
const redis_client_js_1 = require("./redis-client.js");
|
|
12
|
-
let RedisCoreModule = RedisCoreModule_1 = class RedisCoreModule {
|
|
13
|
-
options;
|
|
14
|
-
moduleRef;
|
|
11
|
+
let RedisCoreModule = exports.RedisCoreModule = RedisCoreModule_1 = class RedisCoreModule {
|
|
15
12
|
constructor(options, moduleRef) {
|
|
16
13
|
this.options = options;
|
|
17
14
|
this.moduleRef = moduleRef;
|
|
18
15
|
}
|
|
19
|
-
static
|
|
16
|
+
static registerClient(options = {}) {
|
|
20
17
|
const optionsProvider = {
|
|
21
18
|
provide: redis_constants_js_1.IOREDIS_MODULE_OPTIONS,
|
|
22
19
|
useValue: options
|
|
23
20
|
};
|
|
24
21
|
const connectionProvider = {
|
|
25
|
-
provide:
|
|
26
|
-
useFactory: () => this.
|
|
22
|
+
provide: options.token || redis_client_js_1.RedisClient,
|
|
23
|
+
useFactory: () => this._createClient(options)
|
|
27
24
|
};
|
|
28
25
|
return {
|
|
29
26
|
module: RedisCoreModule_1,
|
|
@@ -31,88 +28,151 @@ let RedisCoreModule = RedisCoreModule_1 = class RedisCoreModule {
|
|
|
31
28
|
exports: [connectionProvider]
|
|
32
29
|
};
|
|
33
30
|
}
|
|
34
|
-
static
|
|
31
|
+
static registerClientAsync(asyncOptions) {
|
|
32
|
+
if (!asyncOptions.useFactory)
|
|
33
|
+
throw new Error('Invalid configuration. Must provide "useFactory"');
|
|
35
34
|
const connectionProvider = {
|
|
36
|
-
provide:
|
|
35
|
+
provide: asyncOptions.token || redis_client_js_1.RedisClient,
|
|
37
36
|
inject: [redis_constants_js_1.IOREDIS_MODULE_OPTIONS],
|
|
38
37
|
useFactory: async (moduleOptions) => {
|
|
39
|
-
|
|
40
|
-
return this.createClient({
|
|
41
|
-
...moduleOptions,
|
|
42
|
-
name
|
|
43
|
-
});
|
|
38
|
+
return this._createClient(moduleOptions);
|
|
44
39
|
}
|
|
45
40
|
};
|
|
46
|
-
const asyncProviders = this.createAsyncProviders(asyncOptions);
|
|
47
41
|
return {
|
|
48
42
|
module: RedisCoreModule_1,
|
|
49
43
|
imports: asyncOptions.imports,
|
|
50
44
|
providers: [
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
{
|
|
46
|
+
provide: redis_constants_js_1.IOREDIS_MODULE_OPTIONS,
|
|
47
|
+
useFactory: asyncOptions.useFactory,
|
|
48
|
+
inject: asyncOptions.inject || []
|
|
49
|
+
},
|
|
53
50
|
{
|
|
54
51
|
provide: redis_constants_js_1.IOREDIS_MODULE_TOKEN,
|
|
55
52
|
useValue: crypto.randomUUID()
|
|
56
|
-
}
|
|
53
|
+
},
|
|
54
|
+
connectionProvider
|
|
57
55
|
],
|
|
58
56
|
exports: [connectionProvider]
|
|
59
57
|
};
|
|
60
58
|
}
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
static registerCluster(options) {
|
|
60
|
+
const optionsProvider = {
|
|
61
|
+
provide: redis_constants_js_1.IOREDIS_MODULE_OPTIONS,
|
|
62
|
+
useValue: options
|
|
63
|
+
};
|
|
64
|
+
const connectionProvider = {
|
|
65
|
+
provide: options.token || redis_client_js_1.RedisCluster,
|
|
66
|
+
useFactory: () => this._createCluster(options)
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
module: RedisCoreModule_1,
|
|
70
|
+
providers: [connectionProvider, optionsProvider],
|
|
71
|
+
exports: [connectionProvider]
|
|
72
|
+
};
|
|
65
73
|
}
|
|
66
|
-
static
|
|
67
|
-
if (asyncOptions.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
74
|
+
static registerClusterAsync(asyncOptions) {
|
|
75
|
+
if (!asyncOptions.useFactory)
|
|
76
|
+
throw new Error('Invalid configuration. Must provide "useFactory"');
|
|
77
|
+
const connectionProvider = {
|
|
78
|
+
provide: asyncOptions.token || redis_client_js_1.RedisCluster,
|
|
79
|
+
inject: [redis_constants_js_1.IOREDIS_MODULE_OPTIONS],
|
|
80
|
+
useFactory: async (moduleOptions) => {
|
|
81
|
+
return this._createCluster(moduleOptions);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
module: RedisCoreModule_1,
|
|
86
|
+
imports: asyncOptions.imports,
|
|
87
|
+
providers: [
|
|
72
88
|
{
|
|
73
|
-
provide:
|
|
74
|
-
|
|
89
|
+
provide: redis_constants_js_1.IOREDIS_MODULE_OPTIONS,
|
|
90
|
+
useFactory: asyncOptions.useFactory,
|
|
91
|
+
inject: asyncOptions.inject || []
|
|
92
|
+
},
|
|
93
|
+
connectionProvider,
|
|
94
|
+
{
|
|
95
|
+
provide: redis_constants_js_1.IOREDIS_MODULE_TOKEN,
|
|
96
|
+
useValue: crypto.randomUUID()
|
|
75
97
|
}
|
|
76
|
-
]
|
|
77
|
-
|
|
98
|
+
],
|
|
99
|
+
exports: [connectionProvider]
|
|
100
|
+
};
|
|
78
101
|
}
|
|
79
|
-
static
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
static async _createClient(options) {
|
|
103
|
+
if (options.host && options.host.includes('://')) {
|
|
104
|
+
const url = new URL(options.host);
|
|
105
|
+
options.host = url.hostname;
|
|
106
|
+
if (url.port)
|
|
107
|
+
options.port = parseInt(url.port, 10);
|
|
108
|
+
if (url.username)
|
|
109
|
+
options.username = url.username;
|
|
110
|
+
if (url.password)
|
|
111
|
+
options.password = url.password;
|
|
112
|
+
if (url.protocol === 'rediss:') { // @ts-ignore
|
|
113
|
+
options.tls = true;
|
|
114
|
+
}
|
|
115
|
+
const db = parseInt(url.pathname.substring(1), 10);
|
|
116
|
+
if (db > 0)
|
|
117
|
+
options.db = db;
|
|
94
118
|
}
|
|
95
|
-
throw new Error('Invalid configuration. Must provide useFactory, useClass or useExisting');
|
|
96
|
-
}
|
|
97
|
-
static async createClient(options) {
|
|
98
119
|
const client = new redis_client_js_1.RedisClient(options);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
client.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
client.
|
|
106
|
-
|
|
120
|
+
if (!options.lazyConnect) {
|
|
121
|
+
await new Promise((resolve, reject) => {
|
|
122
|
+
client.once('ready', () => {
|
|
123
|
+
client.removeListener('error', reject);
|
|
124
|
+
resolve();
|
|
125
|
+
});
|
|
126
|
+
client.once('error', (e) => {
|
|
127
|
+
client.removeListener('ready', resolve);
|
|
128
|
+
reject(e);
|
|
129
|
+
});
|
|
107
130
|
});
|
|
108
|
-
}
|
|
131
|
+
}
|
|
109
132
|
return client;
|
|
110
133
|
}
|
|
134
|
+
static async _createCluster(options) {
|
|
135
|
+
const clusterOptions = {
|
|
136
|
+
...options
|
|
137
|
+
};
|
|
138
|
+
delete clusterOptions.name;
|
|
139
|
+
delete clusterOptions.nodes;
|
|
140
|
+
const cluster = new redis_client_js_1.RedisCluster(options.nodes, clusterOptions);
|
|
141
|
+
if (!options.lazyConnect) {
|
|
142
|
+
await new Promise((resolve, reject) => {
|
|
143
|
+
cluster.once('ready', () => {
|
|
144
|
+
cluster.removeListener('error', reject);
|
|
145
|
+
resolve();
|
|
146
|
+
});
|
|
147
|
+
cluster.once('error', (e) => {
|
|
148
|
+
cluster.removeListener('ready', resolve);
|
|
149
|
+
reject(e);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return cluster;
|
|
154
|
+
}
|
|
155
|
+
async onApplicationShutdown() {
|
|
156
|
+
try {
|
|
157
|
+
const client = this.moduleRef.get(this.options.token || redis_client_js_1.RedisClient);
|
|
158
|
+
await client.quit();
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
//
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const cluster = this.moduleRef.get(this.options.token || redis_client_js_1.RedisCluster);
|
|
165
|
+
await cluster.quit();
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
//
|
|
169
|
+
}
|
|
170
|
+
}
|
|
111
171
|
};
|
|
112
|
-
RedisCoreModule = RedisCoreModule_1 = tslib_1.__decorate([
|
|
172
|
+
exports.RedisCoreModule = RedisCoreModule = RedisCoreModule_1 = tslib_1.__decorate([
|
|
113
173
|
(0, common_1.Global)(),
|
|
114
174
|
(0, common_1.Module)({}),
|
|
115
175
|
tslib_1.__param(0, (0, common_1.Inject)(redis_constants_js_1.IOREDIS_MODULE_OPTIONS)),
|
|
116
176
|
tslib_1.__metadata("design:paramtypes", [Object, core_1.ModuleRef])
|
|
117
177
|
], RedisCoreModule);
|
|
118
|
-
|
|
178
|
+
//# sourceMappingURL=redis-core.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-core.module.js","sourceRoot":"","sources":["../../../packages/ioredis/src/redis-core.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import Redis from 'ioredis';
|
|
1
|
+
import Redis, { Cluster } from 'ioredis';
|
|
2
2
|
export interface LockOptions {
|
|
3
3
|
expire?: number;
|
|
4
4
|
retryInterval?: number;
|
|
5
5
|
maxRetries?: number;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
type This = RedisLock & (Redis | Cluster);
|
|
8
|
+
export declare class RedisLock {
|
|
8
9
|
lockPrefix?: string;
|
|
9
10
|
/**
|
|
10
11
|
* Try to lock once
|
|
@@ -12,7 +13,7 @@ export declare class RedisClient extends Redis {
|
|
|
12
13
|
* @param {number} [expire] milliseconds, TTL for the redis key
|
|
13
14
|
* @returns {boolean} true: success, false: failed
|
|
14
15
|
*/
|
|
15
|
-
tryLock(name: any, expire: any): Promise<boolean>;
|
|
16
|
+
tryLock(this: This, name: any, expire: any): Promise<boolean>;
|
|
16
17
|
/**
|
|
17
18
|
* lock, automatically retrying if failed
|
|
18
19
|
* @param {string} name redis-lock name
|
|
@@ -21,21 +22,18 @@ export declare class RedisClient extends Redis {
|
|
|
21
22
|
* @param {number} [options.retryInterval=100] milliseconds, the interval to retry if failed
|
|
22
23
|
* @param {number} [options.maxRetries=10] max times to retry
|
|
23
24
|
*/
|
|
24
|
-
lock(name: string, options?: LockOptions): Promise<void>;
|
|
25
|
+
lock(this: This, name: string, options?: LockOptions): Promise<void>;
|
|
25
26
|
/**
|
|
26
27
|
* Unlock a redis-lock by name
|
|
27
28
|
* @param {string} name redis-lock name
|
|
28
29
|
*/
|
|
29
|
-
unlock(name: any): Promise<void>;
|
|
30
|
+
unlock(this: This, name: any): Promise<void>;
|
|
30
31
|
/**
|
|
31
32
|
* Set TTL for a redis-lock
|
|
32
33
|
* @param {string} name redis-lock name
|
|
33
34
|
* @param {number} milliseconds TTL
|
|
34
35
|
*/
|
|
35
|
-
setLockTTL(name: any, milliseconds: any): Promise<boolean>;
|
|
36
|
+
setLockTTL(this: This, name: any, milliseconds: any): Promise<boolean>;
|
|
36
37
|
private _getLockKey;
|
|
37
|
-
/**
|
|
38
|
-
* @param {number} ms milliseconds, the sleep interval
|
|
39
|
-
*/
|
|
40
|
-
private _sleep;
|
|
41
38
|
}
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedisLock = void 0;
|
|
4
|
+
const putil_varhelpers_1 = require("putil-varhelpers");
|
|
5
|
+
class RedisLock {
|
|
6
|
+
/**
|
|
7
|
+
* Try to lock once
|
|
8
|
+
* @param {string} name redis-lock name
|
|
9
|
+
* @param {number} [expire] milliseconds, TTL for the redis key
|
|
10
|
+
* @returns {boolean} true: success, false: failed
|
|
11
|
+
*/
|
|
12
|
+
async tryLock(name, expire) {
|
|
13
|
+
const result = await this.set(this._getLockKey(name), '_lock_', 'PX', expire, 'NX');
|
|
14
|
+
return result !== null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* lock, automatically retrying if failed
|
|
18
|
+
* @param {string} name redis-lock name
|
|
19
|
+
* @param {object} [options] Options
|
|
20
|
+
* @param {number} [options.expire=60000] TTL
|
|
21
|
+
* @param {number} [options.retryInterval=100] milliseconds, the interval to retry if failed
|
|
22
|
+
* @param {number} [options.maxRetries=10] max times to retry
|
|
23
|
+
*/
|
|
24
|
+
async lock(name, options) {
|
|
25
|
+
const expire = (0, putil_varhelpers_1.toNumberDef)(options?.expire, 60000);
|
|
26
|
+
const retryInterval = (0, putil_varhelpers_1.toNumberDef)(options?.retryInterval, 100);
|
|
27
|
+
const maxRetries = (0, putil_varhelpers_1.toNumberDef)(options?.maxRetries, 10);
|
|
28
|
+
let retryTimes = 0;
|
|
29
|
+
// eslint-disable-next-line no-constant-condition
|
|
30
|
+
while (1) {
|
|
31
|
+
if (await this.tryLock(name, expire)) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
await sleepAsync(retryInterval);
|
|
36
|
+
if (retryTimes >= maxRetries) {
|
|
37
|
+
throw new Error(`Redis lock "${name}" timed out`);
|
|
38
|
+
}
|
|
39
|
+
retryTimes++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Unlock a redis-lock by name
|
|
45
|
+
* @param {string} name redis-lock name
|
|
46
|
+
*/
|
|
47
|
+
async unlock(name) {
|
|
48
|
+
const s = 'if redis.call(\'get\', KEYS[1]) == ARGV[1] then return redis.call(\'del\', KEYS[1]) else return 0 end';
|
|
49
|
+
await this.eval(s, 1, this._getLockKey(name), '_lock_');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Set TTL for a redis-lock
|
|
53
|
+
* @param {string} name redis-lock name
|
|
54
|
+
* @param {number} milliseconds TTL
|
|
55
|
+
*/
|
|
56
|
+
async setLockTTL(name, milliseconds) {
|
|
57
|
+
const result = await this.pexpire(this._getLockKey(name), milliseconds);
|
|
58
|
+
return !!result;
|
|
59
|
+
}
|
|
60
|
+
_getLockKey(name) {
|
|
61
|
+
return (this.lockPrefix || 'lock:') + name;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.RedisLock = RedisLock;
|
|
65
|
+
async function sleepAsync(ms) {
|
|
66
|
+
return new Promise(resolve => setTimeout(resolve, Number(ms)));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=redis-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-lock.js","sourceRoot":"","sources":["../../../packages/ioredis/src/redis-lock.ts"],"names":[],"mappings":";;;AACA,uDAA+C;AAU/C,MAAa,SAAS;IAIpB;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAa,IAAI,EAAE,MAAM;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpF,OAAO,MAAM,KAAK,IAAI,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,IAAI,CAAa,IAAY,EAAE,OAAqB;QAC/D,MAAM,MAAM,GAAG,IAAA,8BAAW,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,IAAA,8BAAW,EAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAA,8BAAW,EAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAExD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,iDAAiD;QACjD,OAAO,CAAC,EAAE;YACR,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACpC,MAAM;aACP;iBAAM;gBACL,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC;gBAChC,IAAI,UAAU,IAAI,UAAU,EAAE;oBAC5B,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,aAAa,CAAC,CAAC;iBACnD;gBACD,UAAU,EAAE,CAAC;aACd;SACF;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM,CAAa,IAAI;QAClC,MAAM,CAAC,GAAG,uGAAuG,CAAC;QAClH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAa,IAAI,EAAE,YAAY;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;QACxE,OAAO,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IAEO,WAAW,CAAC,IAAI;QACtB,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,CAAC;CAEF;AAlED,8BAkEC;AAED,KAAK,UAAU,UAAU,CAAC,EAAU;IAClC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC"}
|
package/cjs/redis.constants.js
CHANGED
|
@@ -3,3 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.IOREDIS_MODULE_TOKEN = exports.IOREDIS_MODULE_OPTIONS = void 0;
|
|
4
4
|
exports.IOREDIS_MODULE_OPTIONS = Symbol('IOREDIS_MODULE_OPTIONS');
|
|
5
5
|
exports.IOREDIS_MODULE_TOKEN = Symbol('IOREDIS_MODULE_ID');
|
|
6
|
+
//# sourceMappingURL=redis.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.constants.js","sourceRoot":"","sources":["../../../packages/ioredis/src/redis.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC1D,QAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { RedisOptions } from 'ioredis';
|
|
2
|
+
import type { ClusterOptions } from 'ioredis/built/cluster/ClusterOptions';
|
|
3
|
+
import type { ClusterNode } from 'ioredis/built/cluster/index.js';
|
|
4
|
+
import type { ModuleMetadata } from '@nestjs/common/interfaces';
|
|
5
|
+
export interface RedisClientOptions extends RedisOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Injection token
|
|
8
|
+
*/
|
|
9
|
+
token?: any;
|
|
10
|
+
}
|
|
11
|
+
export interface RedisClientAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
12
|
+
/**
|
|
13
|
+
* Injection token
|
|
14
|
+
*/
|
|
15
|
+
token?: any;
|
|
16
|
+
useFactory?: (...args: any[]) => Promise<RedisClientOptions> | RedisClientOptions;
|
|
17
|
+
inject?: any[];
|
|
18
|
+
}
|
|
19
|
+
export interface RedisClusterOptions extends ClusterOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Injection token
|
|
22
|
+
*/
|
|
23
|
+
token?: any;
|
|
24
|
+
nodes: ClusterNode[];
|
|
25
|
+
}
|
|
26
|
+
export interface RedisClusterAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
27
|
+
/**
|
|
28
|
+
* Injection token
|
|
29
|
+
*/
|
|
30
|
+
token?: any;
|
|
31
|
+
useFactory?: (...args: any[]) => Promise<RedisClusterOptions> | RedisClusterOptions;
|
|
32
|
+
inject?: any[];
|
|
33
|
+
}
|
package/cjs/redis.interface.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.interface.js","sourceRoot":"","sources":["../../../packages/ioredis/src/redis.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { RedisClientAsyncOptions, RedisClientOptions, RedisClusterAsyncOptions, RedisClusterOptions } from './redis.interface.js';
|
|
3
|
+
export declare class RedisModule {
|
|
4
|
+
static registerClient(options: RedisClientOptions): DynamicModule;
|
|
5
|
+
static registerClientAsync(options: RedisClientAsyncOptions): DynamicModule;
|
|
6
|
+
static registerCluster(options: RedisClusterOptions): DynamicModule;
|
|
7
|
+
static registerClusterAsync(options: RedisClusterAsyncOptions): DynamicModule;
|
|
8
|
+
}
|
package/cjs/redis.module.js
CHANGED
|
@@ -5,21 +5,33 @@ exports.RedisModule = void 0;
|
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const common_1 = require("@nestjs/common");
|
|
7
7
|
const redis_core_module_js_1 = require("./redis-core.module.js");
|
|
8
|
-
let RedisModule = RedisModule_1 = class RedisModule {
|
|
9
|
-
static
|
|
8
|
+
let RedisModule = exports.RedisModule = RedisModule_1 = class RedisModule {
|
|
9
|
+
static registerClient(options) {
|
|
10
10
|
return {
|
|
11
11
|
module: RedisModule_1,
|
|
12
|
-
imports: [redis_core_module_js_1.RedisCoreModule.
|
|
12
|
+
imports: [redis_core_module_js_1.RedisCoreModule.registerClient(options)]
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
static
|
|
15
|
+
static registerClientAsync(options) {
|
|
16
16
|
return {
|
|
17
17
|
module: RedisModule_1,
|
|
18
|
-
imports: [redis_core_module_js_1.RedisCoreModule.
|
|
18
|
+
imports: [redis_core_module_js_1.RedisCoreModule.registerClientAsync(options)]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
static registerCluster(options) {
|
|
22
|
+
return {
|
|
23
|
+
module: RedisModule_1,
|
|
24
|
+
imports: [redis_core_module_js_1.RedisCoreModule.registerCluster(options)]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
static registerClusterAsync(options) {
|
|
28
|
+
return {
|
|
29
|
+
module: RedisModule_1,
|
|
30
|
+
imports: [redis_core_module_js_1.RedisCoreModule.registerClusterAsync(options)]
|
|
19
31
|
};
|
|
20
32
|
}
|
|
21
33
|
};
|
|
22
|
-
RedisModule = RedisModule_1 = tslib_1.__decorate([
|
|
34
|
+
exports.RedisModule = RedisModule = RedisModule_1 = tslib_1.__decorate([
|
|
23
35
|
(0, common_1.Module)({})
|
|
24
36
|
], RedisModule);
|
|
25
|
-
|
|
37
|
+
//# sourceMappingURL=redis.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../packages/ioredis/src/redis.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAuD;AAOvD,iEAAyD;AAGlD,IAAM,WAAW,yCAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,cAAc,CAAC,OAA2B;QAC/C,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,sCAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,OAAgC;QACzD,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,sCAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAA4B;QACjD,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,sCAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,OAAiC;QAC3D,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,sCAAe,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;SACzD,CAAC;IACJ,CAAC;CACF,CAAA;sBA5BY,WAAW;IADvB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CA4BvB"}
|
package/esm/index.js
CHANGED
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/ioredis/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|