lakutata 2.0.66 → 2.0.68

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 (91) hide show
  1. package/com/cacher.cjs +1 -1
  2. package/com/cacher.mjs +1 -1
  3. package/com/entrypoint.cjs +3 -1
  4. package/com/entrypoint.mjs +3 -1
  5. package/decorator/ctrl.cjs +3 -1
  6. package/decorator/ctrl.mjs +3 -1
  7. package/helper.cjs +24 -18
  8. package/helper.d.ts +128 -2
  9. package/helper.mjs +6 -2
  10. package/lakutata.cjs +3 -1
  11. package/lakutata.d.ts +1 -1
  12. package/lakutata.mjs +3 -1
  13. package/package.json +1 -1
  14. package/src/components/cacher/Cacher.cjs +1 -1
  15. package/src/components/cacher/Cacher.mjs +1 -1
  16. package/src/components/cacher/adapters/CreateFileCacheAdapter.cjs +1 -1
  17. package/src/components/cacher/adapters/CreateFileCacheAdapter.mjs +1 -1
  18. package/src/components/cacher/adapters/CreateMemcacheCacheAdapter.cjs +2 -2
  19. package/src/components/cacher/adapters/CreateMemcacheCacheAdapter.mjs +2 -2
  20. package/src/components/cacher/adapters/CreateMongoCacheAdapter.cjs +2 -2
  21. package/src/components/cacher/adapters/CreateMongoCacheAdapter.mjs +2 -2
  22. package/src/components/cacher/adapters/CreateMysqlCacheAdapter.cjs +2 -2
  23. package/src/components/cacher/adapters/CreateMysqlCacheAdapter.mjs +2 -2
  24. package/src/components/cacher/adapters/CreatePostgresCacheAdapter.cjs +2 -2
  25. package/src/components/cacher/adapters/CreatePostgresCacheAdapter.mjs +2 -2
  26. package/src/components/cacher/adapters/CreateRedisCacheAdapter.cjs +2 -2
  27. package/src/components/cacher/adapters/CreateRedisCacheAdapter.mjs +2 -2
  28. package/src/components/cacher/adapters/CreateSqliteCacheAdapter.cjs +2 -2
  29. package/src/components/cacher/adapters/CreateSqliteCacheAdapter.mjs +2 -2
  30. package/src/components/entrypoint/Entrypoint.cjs +6 -1
  31. package/src/components/entrypoint/Entrypoint.mjs +6 -1
  32. package/src/decorators/ctrl/CLIAction.cjs +7 -5
  33. package/src/decorators/ctrl/CLIAction.mjs +3 -1
  34. package/src/decorators/ctrl/HTTPAction.cjs +8 -6
  35. package/src/decorators/ctrl/HTTPAction.mjs +3 -1
  36. package/src/decorators/ctrl/ServiceAction.cjs +3 -1
  37. package/src/decorators/ctrl/ServiceAction.mjs +7 -5
  38. package/src/decorators/ctrl/http/DELETE.cjs +3 -1
  39. package/src/decorators/ctrl/http/DELETE.mjs +3 -1
  40. package/src/decorators/ctrl/http/GET.cjs +3 -1
  41. package/src/decorators/ctrl/http/GET.mjs +3 -1
  42. package/src/decorators/ctrl/http/HEAD.cjs +3 -1
  43. package/src/decorators/ctrl/http/HEAD.mjs +3 -1
  44. package/src/decorators/ctrl/http/OPTIONS.cjs +3 -1
  45. package/src/decorators/ctrl/http/OPTIONS.mjs +3 -1
  46. package/src/decorators/ctrl/http/PATCH.cjs +3 -1
  47. package/src/decorators/ctrl/http/PATCH.mjs +3 -1
  48. package/src/decorators/ctrl/http/POST.cjs +3 -1
  49. package/src/decorators/ctrl/http/POST.mjs +3 -1
  50. package/src/decorators/ctrl/http/PUT.cjs +3 -1
  51. package/src/decorators/ctrl/http/PUT.mjs +3 -1
  52. package/src/lib/base/internal/ControllerEntrypoint.cjs +70 -610
  53. package/src/lib/base/internal/ControllerEntrypoint.mjs +87 -627
  54. package/src/lib/base/internal/StringifyPattern.cjs +1 -1
  55. package/src/lib/base/internal/StringifyPattern.mjs +1 -1
  56. package/src/lib/core/Application.cjs +3 -1
  57. package/src/lib/core/Application.mjs +3 -1
  58. package/src/lib/helpers/MD5.cjs +1 -1
  59. package/src/lib/helpers/MD5.mjs +1 -1
  60. package/src/lib/helpers/SHA1.cjs +1 -1
  61. package/src/lib/helpers/SHA1.mjs +1 -1
  62. package/src/lib/helpers/SHA256.cjs +1 -1
  63. package/src/lib/helpers/SHA256.mjs +1 -1
  64. package/src/lib/helpers/SortArray.cjs +1 -1
  65. package/src/lib/helpers/SortArray.mjs +1 -1
  66. package/src/lib/helpers/UUID.cjs +45 -0
  67. package/src/lib/helpers/UUID.mjs +39 -0
  68. package/vendor/Package.19.cjs +1 -1
  69. package/vendor/Package.19.mjs +176 -187
  70. package/vendor/Package.610.cjs +297 -113
  71. package/vendor/Package.610.mjs +285 -97
  72. package/vendor/Package.611.cjs +85 -103
  73. package/vendor/Package.611.mjs +80 -98
  74. package/vendor/Package.612.cjs +100 -121
  75. package/vendor/Package.612.mjs +97 -120
  76. package/vendor/Package.613.cjs +196 -0
  77. package/vendor/Package.613.mjs +180 -0
  78. package/vendor/Package.64.cjs +511 -134
  79. package/vendor/Package.64.mjs +491 -134
  80. package/vendor/Package.65.cjs +140 -4118
  81. package/vendor/Package.65.mjs +140 -4126
  82. package/vendor/Package.66.cjs +4142 -692
  83. package/vendor/Package.66.mjs +4151 -689
  84. package/vendor/Package.67.cjs +571 -535
  85. package/vendor/Package.67.mjs +586 -528
  86. package/vendor/Package.68.cjs +633 -96
  87. package/vendor/Package.68.mjs +619 -94
  88. package/vendor/Package.69.cjs +96 -294
  89. package/vendor/Package.69.mjs +95 -295
  90. package/vendor/TypeDef.internal.13.d.ts +1 -0
  91. package/vendor/TypeDef.internal.5.d.ts +1 -1
@@ -4,140 +4,677 @@ Object.defineProperty(exports, Symbol.toStringTag, {
4
4
  value: "Module"
5
5
  });
6
6
 
7
- const e = require("events");
7
+ const e = require("@redis/client");
8
8
 
9
- const t = require("memjs");
9
+ const t = require("./Package.67.cjs");
10
10
 
11
- const s = require("./Package.66.cjs");
11
+ const r = require("cluster-key-slot");
12
12
 
13
13
  require("buffer");
14
14
 
15
- const r = e => e && e.__esModule ? e : {
15
+ const s = e => e && e.__esModule ? e : {
16
16
  default: e
17
17
  };
18
18
 
19
- const i = r(e);
19
+ const i = s(r);
20
20
 
21
- const a = r(t);
21
+ var n = class {
22
+ _eventListeners;
23
+ _maxListeners;
24
+ _logger;
25
+ constructor(e) {
26
+ this._eventListeners = new Map, this._maxListeners = 100, this._logger = e?.logger;
27
+ }
28
+ once(e, t) {
29
+ let r = (...s) => {
30
+ this.off(e, r), t(...s);
31
+ };
32
+ return this.on(e, r), this;
33
+ }
34
+ listenerCount(e) {
35
+ if (!e) return this.getAllListeners().length;
36
+ let t = this._eventListeners.get(e);
37
+ return t ? t.length : 0;
38
+ }
39
+ eventNames() {
40
+ return [ ...this._eventListeners.keys() ];
41
+ }
42
+ rawListeners(e) {
43
+ return e ? this._eventListeners.get(e) ?? [] : this.getAllListeners();
44
+ }
45
+ prependListener(e, t) {
46
+ let r = this._eventListeners.get(e) ?? [];
47
+ return r.unshift(t), this._eventListeners.set(e, r), this;
48
+ }
49
+ prependOnceListener(e, t) {
50
+ let r = (...s) => {
51
+ this.off(e, r), t(...s);
52
+ };
53
+ return this.prependListener(e, r), this;
54
+ }
55
+ maxListeners() {
56
+ return this._maxListeners;
57
+ }
58
+ addListener(e, t) {
59
+ return this.on(e, t), this;
60
+ }
61
+ on(e, t) {
62
+ this._eventListeners.has(e) || this._eventListeners.set(e, []);
63
+ let r = this._eventListeners.get(e);
64
+ return r && (r.length >= this._maxListeners && console.warn(`MaxListenersExceededWarning: Possible event memory leak detected. ${r.length + 1} ${e} listeners added. Use setMaxListeners() to increase limit.`),
65
+ r.push(t)), this;
66
+ }
67
+ removeListener(e, t) {
68
+ return this.off(e, t), this;
69
+ }
70
+ off(e, t) {
71
+ let r = this._eventListeners.get(e) ?? [], s = r.indexOf(t);
72
+ return s !== -1 && r.splice(s, 1), r.length === 0 && this._eventListeners.delete(e),
73
+ this;
74
+ }
75
+ emit(e, ...t) {
76
+ let r = !1, s = this._eventListeners.get(e);
77
+ if (s && s.length > 0) for (let e of s) e(...t), r = !0;
78
+ return r;
79
+ }
80
+ listeners(e) {
81
+ return this._eventListeners.get(e) ?? [];
82
+ }
83
+ removeAllListeners(e) {
84
+ return e ? this._eventListeners.delete(e) : this._eventListeners.clear(), this;
85
+ }
86
+ setMaxListeners(e) {
87
+ this._maxListeners = e;
88
+ for (let t of this._eventListeners.values()) t.length > e && t.splice(e);
89
+ }
90
+ getAllListeners() {
91
+ let e = new Array;
92
+ for (let t of this._eventListeners.values()) e = [ ...e, ...t ];
93
+ return e;
94
+ }
95
+ };
96
+
97
+ var o = class extends n {
98
+ _hooks;
99
+ _throwHookErrors=!1;
100
+ constructor(e) {
101
+ super({
102
+ logger: e?.logger
103
+ }), this._hooks = new Map, e?.throwHookErrors !== void 0 && (this._throwHookErrors = e.throwHookErrors);
104
+ }
105
+ get hooks() {
106
+ return this._hooks;
107
+ }
108
+ get throwHookErrors() {
109
+ return this._throwHookErrors;
110
+ }
111
+ set throwHookErrors(e) {
112
+ this._throwHookErrors = e;
113
+ }
114
+ get logger() {
115
+ return this._logger;
116
+ }
117
+ set logger(e) {
118
+ this._logger = e;
119
+ }
120
+ onHook(e, t) {
121
+ let r = this._hooks.get(e);
122
+ r ? r.push(t) : this._hooks.set(e, [ t ]);
123
+ }
124
+ addHook(e, t) {
125
+ this.onHook(e, t);
126
+ }
127
+ onHooks(e) {
128
+ for (let t of e) this.onHook(t.event, t.handler);
129
+ }
130
+ prependHook(e, t) {
131
+ let r = this._hooks.get(e);
132
+ r ? r.unshift(t) : this._hooks.set(e, [ t ]);
133
+ }
134
+ prependOnceHook(e, t) {
135
+ let r = async (...s) => (this.removeHook(e, r), t(...s));
136
+ this.prependHook(e, r);
137
+ }
138
+ onceHook(e, t) {
139
+ let r = async (...s) => (this.removeHook(e, r), t(...s));
140
+ this.onHook(e, r);
141
+ }
142
+ removeHook(e, t) {
143
+ let r = this._hooks.get(e);
144
+ if (r) {
145
+ let e = r.indexOf(t);
146
+ e !== -1 && r.splice(e, 1);
147
+ }
148
+ }
149
+ removeHooks(e) {
150
+ for (let t of e) this.removeHook(t.event, t.handler);
151
+ }
152
+ async hook(e, ...t) {
153
+ let r = this._hooks.get(e);
154
+ if (r) for (let s of r) try {
155
+ await s(...t);
156
+ } catch (t) {
157
+ let r = `${e}: ${t.message}`;
158
+ if (this.emit("error", new Error(r)), this._logger && this._logger.error(r), this._throwHookErrors) throw new Error(r);
159
+ }
160
+ }
161
+ async callHook(e, ...t) {
162
+ await this.hook(e, ...t);
163
+ }
164
+ getHooks(e) {
165
+ return this._hooks.get(e);
166
+ }
167
+ clearHooks() {
168
+ this._hooks.clear();
169
+ }
170
+ };
171
+
172
+ var a = (e => {
173
+ e["RedisClientNotConnectedThrown"] = "Redis client is not connected or has failed to connect. This is thrown because throwOnConnectError is set to true.";
174
+ return e;
175
+ })(a || {});
176
+
177
+ var c = e => {
178
+ const t = Math.min(2 ** e * 100, 2e3);
179
+ const r = (Math.random() - .5) * 100;
180
+ return t + r;
181
+ };
22
182
 
23
- var n = class extends i.default {
24
- ttlSupport=true;
25
- namespace;
26
- client;
27
- opts;
28
- constructor(e, t) {
183
+ var h = class extends o {
184
+ _client=e.createClient();
185
+ _namespace;
186
+ _keyPrefixSeparator="::";
187
+ _clearBatchSize=1e3;
188
+ _useUnlink=true;
189
+ _noNamespaceAffectsAll=false;
190
+ _throwOnConnectError=true;
191
+ _throwErrors=false;
192
+ _connectionTimeout;
193
+ constructor(t, r) {
29
194
  super();
30
- t = {
31
- ...typeof e === "string" ? {
32
- uri: e
33
- } : e,
34
- ...t
195
+ const s = {
196
+ reconnectStrategy: c
35
197
  };
36
- if (t.uri && t.url === void 0) {
37
- t.url = t.uri;
198
+ if (t) {
199
+ if (typeof t === "string") {
200
+ this._client = e.createClient({
201
+ url: t,
202
+ socket: s
203
+ });
204
+ } else if (t.connect !== void 0) {
205
+ this._client = this.isClientCluster(t) ? t : t;
206
+ } else if (t instanceof Object) {
207
+ this._client = t.rootNodes === void 0 ? e.createClient(t) : e.createCluster(t);
208
+ }
38
209
  }
39
- if (e === void 0) {
40
- e = "localhost:11211";
41
- t.url = t.uri = e;
210
+ this.setOptions(r);
211
+ this.initClient();
212
+ }
213
+ get client() {
214
+ return this._client;
215
+ }
216
+ set client(e) {
217
+ this._client = e;
218
+ this.initClient();
219
+ }
220
+ get opts() {
221
+ let e = "redis://localhost:6379";
222
+ if (this._client.options) {
223
+ const t = this._client.options?.url;
224
+ if (t) {
225
+ e = t;
226
+ }
42
227
  }
43
- this.opts = t;
44
- this.client = a.default.Client.create(e, t);
228
+ const t = {
229
+ namespace: this._namespace,
230
+ keyPrefixSeparator: this._keyPrefixSeparator,
231
+ clearBatchSize: this._clearBatchSize,
232
+ noNamespaceAffectsAll: this._noNamespaceAffectsAll,
233
+ useUnlink: this._useUnlink,
234
+ throwOnConnectError: this._throwOnConnectError,
235
+ throwErrors: this._throwErrors,
236
+ connectionTimeout: this._connectionTimeout,
237
+ dialect: "redis",
238
+ url: e
239
+ };
240
+ return t;
45
241
  }
46
- _getNamespace() {
47
- return `namespace:${this.namespace}`;
242
+ set opts(e) {
243
+ this.setOptions(e);
48
244
  }
49
- async get(e) {
50
- return new Promise(((t, r) => {
51
- this.client.get(this.formatKey(e), ((e, i) => {
52
- if (e) {
53
- this.emit("error", e);
54
- r(e);
245
+ get namespace() {
246
+ return this._namespace;
247
+ }
248
+ set namespace(e) {
249
+ this._namespace = e;
250
+ }
251
+ get keyPrefixSeparator() {
252
+ return this._keyPrefixSeparator;
253
+ }
254
+ set keyPrefixSeparator(e) {
255
+ this._keyPrefixSeparator = e;
256
+ }
257
+ get clearBatchSize() {
258
+ return this._clearBatchSize;
259
+ }
260
+ set clearBatchSize(e) {
261
+ if (e > 0) {
262
+ this._clearBatchSize = e;
263
+ } else {
264
+ this.emit("error", "clearBatchSize must be greater than 0");
265
+ }
266
+ }
267
+ get useUnlink() {
268
+ return this._useUnlink;
269
+ }
270
+ set useUnlink(e) {
271
+ this._useUnlink = e;
272
+ }
273
+ get noNamespaceAffectsAll() {
274
+ return this._noNamespaceAffectsAll;
275
+ }
276
+ set noNamespaceAffectsAll(e) {
277
+ this._noNamespaceAffectsAll = e;
278
+ }
279
+ get throwOnConnectError() {
280
+ return this._throwOnConnectError;
281
+ }
282
+ set throwOnConnectError(e) {
283
+ this._throwOnConnectError = e;
284
+ }
285
+ get throwErrors() {
286
+ return this._throwErrors;
287
+ }
288
+ set throwErrors(e) {
289
+ this._throwErrors = e;
290
+ }
291
+ get connectionTimeout() {
292
+ return this._connectionTimeout;
293
+ }
294
+ set connectionTimeout(e) {
295
+ this._connectionTimeout = e;
296
+ }
297
+ async getClient() {
298
+ if (this._client.isOpen) {
299
+ return this._client;
300
+ }
301
+ try {
302
+ if (this._connectionTimeout === void 0) {
303
+ await this._client.connect();
304
+ } else {
305
+ await Promise.race([ this._client.connect(), this.createTimeoutPromise(this._connectionTimeout) ]);
306
+ }
307
+ } catch (e) {
308
+ this.emit("error", e);
309
+ if (this._throwOnConnectError) {
310
+ throw new Error("Redis client is not connected or has failed to connect. This is thrown because throwOnConnectError is set to true.");
311
+ }
312
+ await this.disconnect(true);
313
+ }
314
+ this.initClient();
315
+ return this._client;
316
+ }
317
+ async set(e, t, r) {
318
+ const s = await this.getClient();
319
+ try {
320
+ e = this.createKeyPrefix(e, this._namespace);
321
+ if (r) {
322
+ await s.set(e, t, {
323
+ PX: r
324
+ });
325
+ } else {
326
+ await s.set(e, t);
327
+ }
328
+ } catch (e) {
329
+ this.emit("error", e);
330
+ if (this._throwErrors) {
331
+ throw e;
332
+ }
333
+ }
334
+ }
335
+ async setMany(e) {
336
+ const t = await this.getClient();
337
+ try {
338
+ const r = t.multi();
339
+ for (const {key: t, value: s, ttl: i} of e) {
340
+ const e = this.createKeyPrefix(t, this._namespace);
341
+ if (i) {
342
+ r.set(e, s, {
343
+ PX: i
344
+ });
55
345
  } else {
56
- let e;
57
- if (i === null) {
58
- e = {
59
- value: void 0,
60
- expires: 0
61
- };
62
- } else {
63
- e = this.opts.deserialize ? this.opts.deserialize(i) : s.defaultDeserialize(i);
64
- }
65
- t(e);
346
+ r.set(e, s);
66
347
  }
67
- }));
68
- }));
348
+ }
349
+ await r.exec();
350
+ } catch (e) {
351
+ this.emit("error", e);
352
+ if (this._throwErrors) {
353
+ throw e;
354
+ }
355
+ }
69
356
  }
70
- async getMany(e) {
71
- const t = [];
72
- for (const s of e) {
73
- t.push(this.get(s));
357
+ async has(e) {
358
+ const t = await this.getClient();
359
+ try {
360
+ e = this.createKeyPrefix(e, this._namespace);
361
+ const r = await t.exists(e);
362
+ return r === 1;
363
+ } catch (e) {
364
+ this.emit("error", e);
365
+ if (this._throwErrors) {
366
+ throw e;
367
+ }
368
+ return false;
74
369
  }
75
- return Promise.allSettled(t).then((e => {
76
- const t = [];
77
- for (const s of e) {
78
- t.push(s.value);
370
+ }
371
+ async hasMany(e) {
372
+ const t = await this.getClient();
373
+ try {
374
+ const r = t.multi();
375
+ for (const t of e) {
376
+ const e = this.createKeyPrefix(t, this._namespace);
377
+ r.exists(e);
79
378
  }
80
- return t;
81
- }));
379
+ const s = await r.exec();
380
+ return s.map((e => e === 1));
381
+ } catch (t) {
382
+ this.emit("error", t);
383
+ if (this._throwErrors) {
384
+ throw t;
385
+ }
386
+ return Array.from({
387
+ length: e.length
388
+ }).fill(false);
389
+ }
82
390
  }
83
- async set(e, t, s) {
84
- const r = {};
85
- if (s !== void 0) {
86
- r.expires = r.ttl = Math.floor(s / 1e3);
391
+ async get(e) {
392
+ const t = await this.getClient();
393
+ try {
394
+ e = this.createKeyPrefix(e, this._namespace);
395
+ const r = await t.get(e);
396
+ if (r === null) {
397
+ return void 0;
398
+ }
399
+ return r;
400
+ } catch (e) {
401
+ this.emit("error", e);
402
+ if (this._throwErrors) {
403
+ throw e;
404
+ }
405
+ return void 0;
406
+ }
407
+ }
408
+ async getMany(e) {
409
+ if (e.length === 0) {
410
+ return [];
411
+ }
412
+ e = e.map((e => this.createKeyPrefix(e, this._namespace)));
413
+ try {
414
+ const t = await this.mget(e);
415
+ return t;
416
+ } catch (t) {
417
+ this.emit("error", t);
418
+ if (this._throwErrors) {
419
+ throw t;
420
+ }
421
+ return Array.from({
422
+ length: e.length
423
+ }).fill(void 0);
87
424
  }
88
- await this.client.set(this.formatKey(e), t, r);
89
425
  }
90
426
  async delete(e) {
91
- return new Promise(((t, s) => {
92
- this.client.delete(this.formatKey(e), ((e, r) => {
93
- if (e) {
94
- this.emit("error", e);
95
- s(e);
427
+ const t = await this.getClient();
428
+ try {
429
+ e = this.createKeyPrefix(e, this._namespace);
430
+ let r = 0;
431
+ r = await (this._useUnlink ? t.unlink(e) : t.del(e));
432
+ return r > 0;
433
+ } catch (e) {
434
+ this.emit("error", e);
435
+ if (this._throwErrors) {
436
+ throw e;
437
+ }
438
+ return false;
439
+ }
440
+ }
441
+ async deleteMany(e) {
442
+ let t = false;
443
+ const r = await this.getClient();
444
+ try {
445
+ const s = r.multi();
446
+ for (const t of e) {
447
+ const e = this.createKeyPrefix(t, this._namespace);
448
+ if (this._useUnlink) {
449
+ s.unlink(e);
96
450
  } else {
97
- t(Boolean(r));
451
+ s.del(e);
98
452
  }
99
- }));
100
- }));
453
+ }
454
+ const i = await s.exec();
455
+ for (const e of i) {
456
+ if (typeof e === "number" && e > 0) {
457
+ t = true;
458
+ }
459
+ }
460
+ } catch (e) {
461
+ this.emit("error", e);
462
+ if (this._throwErrors) {
463
+ throw e;
464
+ }
465
+ }
466
+ return t;
101
467
  }
102
- async deleteMany(e) {
103
- const t = e.map((async e => this.delete(e)));
104
- const s = await Promise.allSettled(t);
105
- return s.every((e => e.value === true));
468
+ async disconnect(e) {
469
+ if (this._client.isOpen) {
470
+ await (e ? this._client.disconnect() : this._client.quit());
471
+ }
472
+ }
473
+ createKeyPrefix(e, t) {
474
+ if (t) {
475
+ return `${t}${this._keyPrefixSeparator}${e}`;
476
+ }
477
+ return e;
478
+ }
479
+ getKeyWithoutPrefix(e, t) {
480
+ if (t) {
481
+ return e.replace(`${t}${this._keyPrefixSeparator}`, "");
482
+ }
483
+ return e;
484
+ }
485
+ isCluster() {
486
+ return this.isClientCluster(this._client);
487
+ }
488
+ async getMasterNodes() {
489
+ if (this.isCluster()) {
490
+ const e = await this.getClient();
491
+ return Promise.all(e.masters.map((async t => e.nodeClient(t))));
492
+ }
493
+ return [ await this.getClient() ];
494
+ }
495
+ async* iterator(e) {
496
+ const t = await this.getMasterNodes();
497
+ for (const r of t) {
498
+ const t = e ? `${e}${this._keyPrefixSeparator}*` : "*";
499
+ let s = "0";
500
+ do {
501
+ const i = await r.scan(Number.parseInt(s, 10), {
502
+ MATCH: t,
503
+ TYPE: "string"
504
+ });
505
+ s = i.cursor.toString();
506
+ let {keys: n} = i;
507
+ if (!e && !this._noNamespaceAffectsAll) {
508
+ n = n.filter((e => !e.includes(this._keyPrefixSeparator)));
509
+ }
510
+ if (n.length > 0) {
511
+ const t = await this.mget(n);
512
+ for (const r of n.keys()) {
513
+ const s = this.getKeyWithoutPrefix(n[r], e);
514
+ const i = t[r];
515
+ yield [ s, i ];
516
+ }
517
+ }
518
+ } while (s !== "0");
519
+ }
106
520
  }
107
521
  async clear() {
108
- return new Promise(((e, t) => {
109
- this.client.flush((s => {
110
- if (s) {
111
- this.emit("error", s);
112
- t(s);
113
- } else {
114
- e(void 0);
522
+ try {
523
+ const e = await this.getMasterNodes();
524
+ await Promise.all(e.map((async e => {
525
+ if (!this._namespace && this._noNamespaceAffectsAll) {
526
+ await e.flushDb();
527
+ return;
115
528
  }
116
- }));
117
- }));
529
+ let t = "0";
530
+ const r = this._clearBatchSize;
531
+ const s = this._namespace ? `${this._namespace}${this._keyPrefixSeparator}*` : "*";
532
+ const i = [];
533
+ do {
534
+ const n = await e.scan(Number.parseInt(t, 10), {
535
+ MATCH: s,
536
+ COUNT: r,
537
+ TYPE: "string"
538
+ });
539
+ t = n.cursor.toString();
540
+ let {keys: o} = n;
541
+ if (o.length === 0) {
542
+ continue;
543
+ }
544
+ if (!this._namespace) {
545
+ o = o.filter((e => !e.includes(this._keyPrefixSeparator)));
546
+ }
547
+ i.push(this.clearWithClusterSupport(o));
548
+ } while (t !== "0");
549
+ await Promise.all(i);
550
+ })));
551
+ } catch (e) {
552
+ this.emit("error", e);
553
+ }
118
554
  }
119
- formatKey(e) {
120
- let t = e;
121
- if (this.namespace) {
122
- t = this.namespace.trim() + ":" + e.trim();
555
+ async mget(e) {
556
+ const t = this.getSlotMap(e);
557
+ const r = new Map;
558
+ await Promise.all(Array.from(t.entries(), (async ([e, t]) => {
559
+ const s = await this.getSlotMaster(e);
560
+ const i = await s.mGet(t);
561
+ for (const [e, s] of i.entries()) {
562
+ r.set(t[e], s ?? void 0);
563
+ }
564
+ })));
565
+ return e.map((e => r.get(e)));
566
+ }
567
+ async clearWithClusterSupport(e) {
568
+ if (e.length > 0) {
569
+ const t = this.getSlotMap(e);
570
+ await Promise.all(Array.from(t.entries(), (async ([e, t]) => {
571
+ const r = await this.getSlotMaster(e);
572
+ return this._useUnlink ? r.unlink(t) : r.del(t);
573
+ })));
574
+ }
575
+ }
576
+ async getSlotMaster(e) {
577
+ const t = await this.getClient();
578
+ if (this.isCluster()) {
579
+ const r = t;
580
+ const s = r.slots[e].master;
581
+ return r.nodeClient(s);
123
582
  }
124
583
  return t;
125
584
  }
126
- async has(e) {
127
- return new Promise((t => {
128
- this.client.get(this.formatKey(e), ((e, s) => {
129
- if (e) {
130
- t(false);
131
- } else {
132
- t(s !== null);
133
- }
134
- }));
585
+ getSlotMap(e) {
586
+ const t = new Map;
587
+ if (this.isCluster()) {
588
+ for (const r of e) {
589
+ const e = i.default(r);
590
+ const s = t.get(e) ?? [];
591
+ s.push(r);
592
+ t.set(e, s);
593
+ }
594
+ } else {
595
+ t.set(0, e);
596
+ }
597
+ return t;
598
+ }
599
+ isClientCluster(e) {
600
+ if (e.options === void 0 && e.scan === void 0) {
601
+ return true;
602
+ }
603
+ return false;
604
+ }
605
+ setOptions(e) {
606
+ if (!e) {
607
+ return;
608
+ }
609
+ if (e.namespace) {
610
+ this._namespace = e.namespace;
611
+ }
612
+ if (e.keyPrefixSeparator !== void 0) {
613
+ this._keyPrefixSeparator = e.keyPrefixSeparator;
614
+ }
615
+ if (e.clearBatchSize !== void 0 && e.clearBatchSize > 0) {
616
+ this._clearBatchSize = e.clearBatchSize;
617
+ }
618
+ if (e.useUnlink !== void 0) {
619
+ this._useUnlink = e.useUnlink;
620
+ }
621
+ if (e.noNamespaceAffectsAll !== void 0) {
622
+ this._noNamespaceAffectsAll = e.noNamespaceAffectsAll;
623
+ }
624
+ if (e.throwOnConnectError !== void 0) {
625
+ this._throwOnConnectError = e.throwOnConnectError;
626
+ }
627
+ if (e.throwErrors !== void 0) {
628
+ this._throwErrors = e.throwErrors;
629
+ }
630
+ if (e.connectionTimeout !== void 0) {
631
+ this._connectionTimeout = e.connectionTimeout;
632
+ }
633
+ }
634
+ initClient() {
635
+ this._client.on("connect", (() => {
636
+ this.emit("connect", this._client);
135
637
  }));
638
+ this._client.on("disconnect", (() => {
639
+ this.emit("disconnect", this._client);
640
+ }));
641
+ this._client.on("reconnecting", (e => {
642
+ this.emit("reconnecting", e);
643
+ }));
644
+ }
645
+ async createTimeoutPromise(e) {
646
+ return new Promise(((t, r) => setTimeout((() => {
647
+ r(new Error(`Redis timed out after ${e}ms`));
648
+ }), e)));
136
649
  }
137
650
  };
138
651
 
139
- var o = n;
652
+ function l(e, r) {
653
+ e ??= "redis://localhost:6379";
654
+ const s = new h(e, r);
655
+ const i = new t.Keyv(s, {
656
+ namespace: r?.namespace,
657
+ useKeyPrefix: false
658
+ });
659
+ return i;
660
+ }
661
+
662
+ Object.defineProperty(exports, "createClient", {
663
+ enumerable: true,
664
+ get: () => e.createClient
665
+ });
666
+
667
+ Object.defineProperty(exports, "createCluster", {
668
+ enumerable: true,
669
+ get: () => e.createCluster
670
+ });
671
+
672
+ exports.Keyv = t.Keyv;
673
+
674
+ exports.RedisErrorMessages = a;
675
+
676
+ exports.createKeyv = l;
140
677
 
141
- exports.KeyvMemcache = n;
678
+ exports.default = h;
142
679
 
143
- exports.default = o;
680
+ exports.defaultReconnectStrategy = c;