lakutata 2.0.65 → 2.0.67

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 (213) hide show
  1. package/com/cacher.cjs +1 -1
  2. package/com/cacher.d.ts +4 -4
  3. package/com/cacher.mjs +1 -1
  4. package/com/database.cjs +0 -2
  5. package/com/database.d.ts +4 -4
  6. package/com/database.mjs +0 -2
  7. package/com/docker.d.ts +5 -5
  8. package/com/entrypoint.cjs +3 -1
  9. package/com/entrypoint.d.ts +2 -2
  10. package/com/entrypoint.mjs +3 -1
  11. package/com/logger.d.ts +1 -1
  12. package/com/monitor.d.ts +2 -2
  13. package/decorator/asst.d.ts +1 -1
  14. package/decorator/ctrl.cjs +3 -1
  15. package/decorator/ctrl.d.ts +4 -4
  16. package/decorator/ctrl.mjs +3 -1
  17. package/decorator/di.d.ts +3 -3
  18. package/decorator/dto.d.ts +3 -3
  19. package/decorator/orm.cjs +86 -88
  20. package/decorator/orm.d.ts +51 -75
  21. package/decorator/orm.mjs +44 -46
  22. package/helper.cjs +24 -18
  23. package/helper.d.ts +129 -3
  24. package/helper.mjs +6 -2
  25. package/lakutata.cjs +3 -1
  26. package/lakutata.d.ts +10 -10
  27. package/lakutata.mjs +3 -1
  28. package/orm.cjs +1075 -112
  29. package/orm.d.ts +6 -6
  30. package/orm.mjs +1015 -17
  31. package/package.json +1 -1
  32. package/provider/database.cjs +0 -2
  33. package/provider/database.d.ts +4 -4
  34. package/provider/database.mjs +0 -2
  35. package/provider/passwordHash.d.ts +1 -1
  36. package/src/components/Database.cjs +0 -2
  37. package/src/components/Database.mjs +0 -2
  38. package/src/components/cacher/Cacher.cjs +1 -1
  39. package/src/components/cacher/Cacher.mjs +1 -1
  40. package/src/components/cacher/adapters/CreateFileCacheAdapter.cjs +1 -1
  41. package/src/components/cacher/adapters/CreateFileCacheAdapter.mjs +1 -1
  42. package/src/components/cacher/adapters/CreateMemcacheCacheAdapter.cjs +2 -2
  43. package/src/components/cacher/adapters/CreateMemcacheCacheAdapter.mjs +2 -2
  44. package/src/components/cacher/adapters/CreateMongoCacheAdapter.cjs +2 -2
  45. package/src/components/cacher/adapters/CreateMongoCacheAdapter.mjs +2 -2
  46. package/src/components/cacher/adapters/CreateMysqlCacheAdapter.cjs +2 -2
  47. package/src/components/cacher/adapters/CreateMysqlCacheAdapter.mjs +2 -2
  48. package/src/components/cacher/adapters/CreatePostgresCacheAdapter.cjs +2 -2
  49. package/src/components/cacher/adapters/CreatePostgresCacheAdapter.mjs +2 -2
  50. package/src/components/cacher/adapters/CreateRedisCacheAdapter.cjs +2 -2
  51. package/src/components/cacher/adapters/CreateRedisCacheAdapter.mjs +2 -2
  52. package/src/components/cacher/adapters/CreateSqliteCacheAdapter.cjs +2 -2
  53. package/src/components/cacher/adapters/CreateSqliteCacheAdapter.mjs +2 -2
  54. package/src/components/entrypoint/Entrypoint.cjs +3 -1
  55. package/src/components/entrypoint/Entrypoint.mjs +3 -1
  56. package/src/decorators/ctrl/CLIAction.cjs +7 -5
  57. package/src/decorators/ctrl/CLIAction.mjs +3 -1
  58. package/src/decorators/ctrl/HTTPAction.cjs +8 -6
  59. package/src/decorators/ctrl/HTTPAction.mjs +3 -1
  60. package/src/decorators/ctrl/ServiceAction.cjs +3 -1
  61. package/src/decorators/ctrl/ServiceAction.mjs +7 -5
  62. package/src/decorators/ctrl/http/DELETE.cjs +3 -1
  63. package/src/decorators/ctrl/http/DELETE.mjs +3 -1
  64. package/src/decorators/ctrl/http/GET.cjs +3 -1
  65. package/src/decorators/ctrl/http/GET.mjs +3 -1
  66. package/src/decorators/ctrl/http/HEAD.cjs +3 -1
  67. package/src/decorators/ctrl/http/HEAD.mjs +3 -1
  68. package/src/decorators/ctrl/http/OPTIONS.cjs +3 -1
  69. package/src/decorators/ctrl/http/OPTIONS.mjs +3 -1
  70. package/src/decorators/ctrl/http/PATCH.cjs +3 -1
  71. package/src/decorators/ctrl/http/PATCH.mjs +3 -1
  72. package/src/decorators/ctrl/http/POST.cjs +3 -1
  73. package/src/decorators/ctrl/http/POST.mjs +3 -1
  74. package/src/decorators/ctrl/http/PUT.cjs +3 -1
  75. package/src/decorators/ctrl/http/PUT.mjs +3 -1
  76. package/src/decorators/orm/AfterInsert.cjs +27 -7
  77. package/src/decorators/orm/AfterInsert.mjs +28 -6
  78. package/src/decorators/orm/AfterLoad.cjs +27 -7
  79. package/src/decorators/orm/AfterLoad.mjs +28 -6
  80. package/src/decorators/orm/AfterRecover.cjs +27 -7
  81. package/src/decorators/orm/AfterRecover.mjs +28 -6
  82. package/src/decorators/orm/AfterRemove.cjs +27 -7
  83. package/src/decorators/orm/AfterRemove.mjs +28 -6
  84. package/src/decorators/orm/AfterSoftRemove.cjs +27 -7
  85. package/src/decorators/orm/AfterSoftRemove.mjs +28 -6
  86. package/src/decorators/orm/AfterUpdate.cjs +27 -7
  87. package/src/decorators/orm/AfterUpdate.mjs +28 -6
  88. package/src/decorators/orm/BeforeInsert.cjs +27 -7
  89. package/src/decorators/orm/BeforeInsert.mjs +28 -6
  90. package/src/decorators/orm/BeforeRecover.cjs +27 -7
  91. package/src/decorators/orm/BeforeRecover.mjs +28 -6
  92. package/src/decorators/orm/BeforeRemove.cjs +27 -7
  93. package/src/decorators/orm/BeforeRemove.mjs +28 -6
  94. package/src/decorators/orm/BeforeSoftRemove.cjs +27 -7
  95. package/src/decorators/orm/BeforeSoftRemove.mjs +28 -6
  96. package/src/decorators/orm/BeforeUpdate.cjs +27 -7
  97. package/src/decorators/orm/BeforeUpdate.mjs +28 -6
  98. package/src/decorators/orm/Check.cjs +30 -7
  99. package/src/decorators/orm/Check.mjs +31 -6
  100. package/src/decorators/orm/ChildEntity.cjs +30 -7
  101. package/src/decorators/orm/ChildEntity.mjs +31 -6
  102. package/src/decorators/orm/Column.cjs +62 -7
  103. package/src/decorators/orm/Column.mjs +63 -6
  104. package/src/decorators/orm/CreateDateColumn.cjs +26 -7
  105. package/src/decorators/orm/CreateDateColumn.mjs +27 -6
  106. package/src/decorators/orm/DeleteDateColumn.cjs +26 -7
  107. package/src/decorators/orm/DeleteDateColumn.mjs +27 -6
  108. package/src/decorators/orm/Entity.cjs +36 -7
  109. package/src/decorators/orm/Entity.mjs +37 -6
  110. package/src/decorators/orm/EventSubscriber.cjs +23 -7
  111. package/src/decorators/orm/EventSubscriber.mjs +24 -6
  112. package/src/decorators/orm/Exclusion.cjs +30 -7
  113. package/src/decorators/orm/Exclusion.mjs +31 -6
  114. package/src/decorators/orm/Generated.cjs +25 -7
  115. package/src/decorators/orm/Generated.mjs +26 -6
  116. package/src/decorators/orm/Index.cjs +42 -7
  117. package/src/decorators/orm/Index.mjs +43 -6
  118. package/src/decorators/orm/JoinColumn.cjs +30 -7
  119. package/src/decorators/orm/JoinColumn.mjs +31 -6
  120. package/src/decorators/orm/JoinTable.cjs +31 -7
  121. package/src/decorators/orm/JoinTable.mjs +32 -6
  122. package/src/decorators/orm/ManyToMany.cjs +43 -7
  123. package/src/decorators/orm/ManyToMany.mjs +44 -6
  124. package/src/decorators/orm/ManyToOne.cjs +43 -7
  125. package/src/decorators/orm/ManyToOne.mjs +44 -6
  126. package/src/decorators/orm/ObjectIdColumn.cjs +29 -7
  127. package/src/decorators/orm/ObjectIdColumn.mjs +30 -6
  128. package/src/decorators/orm/OneToMany.cjs +35 -7
  129. package/src/decorators/orm/OneToMany.mjs +36 -6
  130. package/src/decorators/orm/OneToOne.cjs +43 -7
  131. package/src/decorators/orm/OneToOne.mjs +44 -6
  132. package/src/decorators/orm/PrimaryColumn.cjs +50 -7
  133. package/src/decorators/orm/PrimaryColumn.mjs +51 -6
  134. package/src/decorators/orm/PrimaryGeneratedColumn.cjs +55 -7
  135. package/src/decorators/orm/PrimaryGeneratedColumn.mjs +56 -6
  136. package/src/decorators/orm/RelationId.cjs +27 -7
  137. package/src/decorators/orm/RelationId.mjs +28 -6
  138. package/src/decorators/orm/TableInheritance.cjs +27 -7
  139. package/src/decorators/orm/TableInheritance.mjs +28 -6
  140. package/src/decorators/orm/Tree.cjs +25 -7
  141. package/src/decorators/orm/Tree.mjs +26 -6
  142. package/src/decorators/orm/TreeChildren.cjs +32 -7
  143. package/src/decorators/orm/TreeChildren.mjs +33 -6
  144. package/src/decorators/orm/TreeLevelColumn.cjs +26 -7
  145. package/src/decorators/orm/TreeLevelColumn.mjs +27 -6
  146. package/src/decorators/orm/TreeParent.cjs +32 -7
  147. package/src/decorators/orm/TreeParent.mjs +33 -6
  148. package/src/decorators/orm/Unique.cjs +45 -7
  149. package/src/decorators/orm/Unique.mjs +46 -6
  150. package/src/decorators/orm/UpdateDateColumn.cjs +26 -7
  151. package/src/decorators/orm/UpdateDateColumn.mjs +27 -6
  152. package/src/decorators/orm/VersionColumn.cjs +26 -7
  153. package/src/decorators/orm/VersionColumn.mjs +27 -6
  154. package/src/decorators/orm/ViewColumn.cjs +26 -7
  155. package/src/decorators/orm/ViewColumn.mjs +27 -6
  156. package/src/decorators/orm/ViewEntity.cjs +35 -7
  157. package/src/decorators/orm/ViewEntity.mjs +36 -6
  158. package/src/decorators/orm/VirtualColumn.cjs +43 -7
  159. package/src/decorators/orm/VirtualColumn.mjs +44 -6
  160. package/src/lib/base/internal/ControllerEntrypoint.cjs +70 -610
  161. package/src/lib/base/internal/ControllerEntrypoint.mjs +87 -627
  162. package/src/lib/base/internal/StringifyPattern.cjs +1 -1
  163. package/src/lib/base/internal/StringifyPattern.mjs +1 -1
  164. package/src/lib/core/Application.cjs +3 -1
  165. package/src/lib/core/Application.mjs +3 -1
  166. package/src/lib/helpers/MD5.cjs +1 -1
  167. package/src/lib/helpers/MD5.mjs +1 -1
  168. package/src/lib/helpers/SHA1.cjs +1 -1
  169. package/src/lib/helpers/SHA1.mjs +1 -1
  170. package/src/lib/helpers/SHA256.cjs +1 -1
  171. package/src/lib/helpers/SHA256.mjs +1 -1
  172. package/src/lib/helpers/SortArray.cjs +1 -1
  173. package/src/lib/helpers/SortArray.mjs +1 -1
  174. package/src/lib/helpers/UUID.cjs +45 -0
  175. package/src/lib/helpers/UUID.mjs +39 -0
  176. package/src/providers/Database.cjs +0 -2
  177. package/src/providers/Database.mjs +0 -2
  178. package/vendor/Package.122.cjs +13223 -16706
  179. package/vendor/Package.122.mjs +13498 -16881
  180. package/vendor/Package.19.cjs +184 -195
  181. package/vendor/Package.19.mjs +176 -187
  182. package/vendor/Package.610.cjs +297 -113
  183. package/vendor/Package.610.mjs +285 -97
  184. package/vendor/Package.611.cjs +85 -103
  185. package/vendor/Package.611.mjs +80 -98
  186. package/vendor/Package.612.cjs +100 -121
  187. package/vendor/Package.612.mjs +97 -120
  188. package/vendor/Package.613.cjs +196 -0
  189. package/vendor/Package.613.mjs +180 -0
  190. package/vendor/Package.64.cjs +511 -134
  191. package/vendor/Package.64.mjs +491 -134
  192. package/vendor/Package.65.cjs +140 -4118
  193. package/vendor/Package.65.mjs +140 -4126
  194. package/vendor/Package.66.cjs +4142 -692
  195. package/vendor/Package.66.mjs +4151 -689
  196. package/vendor/Package.67.cjs +571 -535
  197. package/vendor/Package.67.mjs +586 -528
  198. package/vendor/Package.68.cjs +633 -96
  199. package/vendor/Package.68.mjs +619 -94
  200. package/vendor/Package.69.cjs +96 -294
  201. package/vendor/Package.69.mjs +95 -295
  202. package/vendor/TypeDef.internal.1.d.ts +1 -1
  203. package/vendor/TypeDef.internal.10.d.ts +1 -1
  204. package/vendor/TypeDef.internal.11.d.ts +2 -2
  205. package/vendor/TypeDef.internal.12.d.ts +2 -2
  206. package/vendor/TypeDef.internal.13.d.ts +6 -6
  207. package/vendor/TypeDef.internal.3.d.ts +3 -3
  208. package/vendor/TypeDef.internal.4.d.ts +181 -347
  209. package/vendor/TypeDef.internal.5.d.ts +2 -2
  210. package/vendor/TypeDef.internal.6.d.ts +2 -2
  211. package/vendor/TypeDef.internal.7.d.ts +1 -1
  212. package/vendor/TypeDef.internal.8.d.ts +1 -1
  213. package/vendor/TypeDef.internal.9.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;