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,154 +4,338 @@ Object.defineProperty(exports, Symbol.toStringTag, {
4
4
  value: "Module"
5
5
  });
6
6
 
7
- const t = require("events");
7
+ const e = require("events");
8
8
 
9
- const e = require("util");
9
+ const t = require("buffer");
10
10
 
11
- const s = require("./Package.66.cjs");
11
+ const n = require("mongodb");
12
12
 
13
- const i = require("sqlite3");
14
-
15
- require("buffer");
16
-
17
- const a = t => t && t.__esModule ? t : {
18
- default: t
13
+ const s = e => e && e.__esModule ? e : {
14
+ default: e
19
15
  };
20
16
 
21
- const n = a(t);
17
+ const o = s(e);
22
18
 
23
- const r = a(i);
19
+ var a = new Set([ "url", "collection", "namespace", "serialize", "deserialize", "uri", "useGridFS", "dialect", "db" ]);
24
20
 
25
- var o = t => String(t).search(/^[a-zA-Z]+$/) < 0 ? "_" + t : t;
26
-
27
- var c = class extends n.default {
28
- ttlSupport;
21
+ var i = class extends o.default {
22
+ ttlSupport=false;
29
23
  opts;
24
+ connect;
30
25
  namespace;
31
- close;
32
- query;
33
- constructor(t) {
26
+ constructor(e, t) {
34
27
  super();
35
- this.ttlSupport = false;
36
- let s = {
37
- dialect: "sqlite",
38
- uri: "sqlite://:memory:"
39
- };
40
- if (typeof t === "string") {
41
- s.uri = t;
42
- } else {
43
- s = {
44
- ...s,
45
- ...t
28
+ e ??= {};
29
+ if (typeof e === "string") {
30
+ e = {
31
+ url: e
46
32
  };
47
33
  }
48
- s.db = s.uri.replace(/^sqlite:\/\//, "");
49
- s.connect = async () => new Promise(((t, e) => {
50
- const i = new r.default.Database(s.db, (a => {
51
- if (a) {
52
- e(a);
34
+ if (e.uri) {
35
+ e = {
36
+ url: e.uri,
37
+ ...e
38
+ };
39
+ }
40
+ this.opts = {
41
+ url: "mongodb://127.0.0.1:27017",
42
+ collection: "keyv",
43
+ ...e,
44
+ ...t
45
+ };
46
+ delete this.opts.emitErrors;
47
+ const s = Object.fromEntries(Object.entries(this.opts).filter((([e]) => !a.has(e))));
48
+ this.opts = Object.fromEntries(Object.entries(this.opts).filter((([e]) => a.has(e))));
49
+ this.connect = new Promise((async (e, t) => {
50
+ try {
51
+ let t = "";
52
+ if (this.opts.url) {
53
+ t = this.opts.url;
54
+ }
55
+ const o = new n.MongoClient(t, s);
56
+ await o.connect();
57
+ const a = o.db(this.opts.db);
58
+ if (this.opts.useGridFS) {
59
+ const t = new n.GridFSBucket(a, {
60
+ readPreference: this.opts.readPreference,
61
+ bucketName: this.opts.collection
62
+ });
63
+ const s = a.collection(`${this.opts.collection}.files`);
64
+ await s.createIndex({
65
+ uploadDate: -1
66
+ });
67
+ await s.createIndex({
68
+ "metadata.expiresAt": 1
69
+ });
70
+ await s.createIndex({
71
+ "metadata.lastAccessed": 1
72
+ });
73
+ await s.createIndex({
74
+ "metadata.filename": 1
75
+ });
76
+ e({
77
+ bucket: t,
78
+ store: s,
79
+ db: a,
80
+ mongoClient: o
81
+ });
53
82
  } else {
54
- if (s.busyTimeout) {
55
- i.configure("busyTimeout", s.busyTimeout);
83
+ let t = "keyv";
84
+ if (this.opts.collection) {
85
+ t = this.opts.collection;
56
86
  }
57
- t(i);
87
+ const n = a.collection(t);
88
+ await n.createIndex({
89
+ key: 1
90
+ }, {
91
+ unique: true,
92
+ background: true
93
+ });
94
+ await n.createIndex({
95
+ expiresAt: 1
96
+ }, {
97
+ expireAfterSeconds: 0,
98
+ background: true
99
+ });
100
+ e({
101
+ store: n,
102
+ mongoClient: o
103
+ });
58
104
  }
59
- }));
60
- })).then((t => ({
61
- query: e.promisify(t.all).bind(t),
62
- close: e.promisify(t.close).bind(t)
63
- })));
64
- this.opts = {
65
- table: "keyv",
66
- keySize: 255,
67
- ...s
68
- };
69
- this.opts.table = o(this.opts.table);
70
- const i = `CREATE TABLE IF NOT EXISTS ${this.opts.table}(key VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT )`;
71
- const a = this.opts.connect().then((async t => t.query(i).then((() => t)))).catch((t => this.emit("error", t)));
72
- this.query = async (t, ...e) => a.then((async s => s.query(t, ...e)));
73
- this.close = async () => a.then((t => t.close()));
105
+ } catch (e) {
106
+ this.emit("error", e);
107
+ }
108
+ }));
74
109
  }
75
- async get(t) {
76
- const e = `SELECT * FROM ${this.opts.table} WHERE key = ?`;
77
- const s = await this.query(e, t);
78
- const i = s[0];
79
- if (i === void 0) {
110
+ async get(e) {
111
+ const n = await this.connect;
112
+ if (this.opts.useGridFS) {
113
+ await n.store.updateOne({
114
+ filename: e
115
+ }, {
116
+ $set: {
117
+ "metadata.lastAccessed": new Date
118
+ }
119
+ });
120
+ const s = n.bucket.openDownloadStreamByName(e);
121
+ return new Promise((e => {
122
+ const n = [];
123
+ s.on("error", (() => {
124
+ e(void 0);
125
+ }));
126
+ s.on("end", (() => {
127
+ const s = t.Buffer.concat(n).toString("utf8");
128
+ e(s);
129
+ }));
130
+ s.on("data", (e => {
131
+ n.push(e);
132
+ }));
133
+ }));
134
+ }
135
+ const s = await n.store.findOne({
136
+ key: {
137
+ $eq: e
138
+ }
139
+ });
140
+ if (!s) {
80
141
  return void 0;
81
142
  }
82
- return i.value;
143
+ return s.value;
83
144
  }
84
- async getMany(t) {
85
- const e = `SELECT * FROM ${this.opts.table} WHERE key IN (SELECT value FROM json_each(?))`;
86
- const s = await this.query(e, JSON.stringify(t));
87
- return t.map((t => {
88
- const e = s.find((e => e.key === t));
89
- return e ? e.value : void 0;
90
- }));
145
+ async getMany(e) {
146
+ if (this.opts.useGridFS) {
147
+ const t = [];
148
+ for (const n of e) {
149
+ t.push(this.get(n));
150
+ }
151
+ const n = await Promise.allSettled(t);
152
+ const s = [];
153
+ for (const e of n) {
154
+ s.push(e.value);
155
+ }
156
+ return s;
157
+ }
158
+ const t = await this.connect;
159
+ const n = await t.store.s.db.collection(this.opts.collection).find({
160
+ key: {
161
+ $in: e
162
+ }
163
+ }).project({
164
+ _id: 0,
165
+ value: 1,
166
+ key: 1
167
+ }).toArray();
168
+ const s = [ ...e ];
169
+ let o = 0;
170
+ for (const t of e) {
171
+ const e = n.findIndex((e => e.key === t));
172
+ s[o] = e > -1 ? n[e].value : void 0;
173
+ o++;
174
+ }
175
+ return s;
91
176
  }
92
- async set(t, e) {
93
- const s = `INSERT INTO ${this.opts.table} (key, value)\n\t\t\tVALUES(?, ?) \n\t\t\tON CONFLICT(key) \n\t\t\tDO UPDATE SET value=excluded.value;`;
94
- return this.query(s, t, e);
177
+ async set(e, t, n) {
178
+ const s = typeof n === "number" ? new Date(Date.now() + n) : null;
179
+ if (this.opts.useGridFS) {
180
+ const n = await this.connect;
181
+ const o = n.bucket.openUploadStream(e, {
182
+ metadata: {
183
+ expiresAt: s,
184
+ lastAccessed: new Date
185
+ }
186
+ });
187
+ return new Promise((e => {
188
+ o.on("finish", (() => {
189
+ e(o);
190
+ }));
191
+ o.end(t);
192
+ }));
193
+ }
194
+ const o = await this.connect;
195
+ await o.store.updateOne({
196
+ key: {
197
+ $eq: e
198
+ }
199
+ }, {
200
+ $set: {
201
+ key: e,
202
+ value: t,
203
+ expiresAt: s
204
+ }
205
+ }, {
206
+ upsert: true
207
+ });
95
208
  }
96
- async delete(t) {
97
- const e = `SELECT * FROM ${this.opts.table} WHERE key = ?`;
98
- const s = `DELETE FROM ${this.opts.table} WHERE key = ?`;
99
- const i = await this.query(e, t);
100
- const a = i[0];
101
- if (a === void 0) {
209
+ async delete(e) {
210
+ if (typeof e !== "string") {
102
211
  return false;
103
212
  }
104
- await this.query(s, t);
105
- return true;
213
+ const t = await this.connect;
214
+ if (this.opts.useGridFS) {
215
+ try {
216
+ const s = t.db;
217
+ const o = new n.GridFSBucket(s, {
218
+ bucketName: this.opts.collection
219
+ });
220
+ const a = await o.find({
221
+ filename: e
222
+ }).toArray();
223
+ await t.bucket.delete(a[0]._id);
224
+ return true;
225
+ } catch {
226
+ return false;
227
+ }
228
+ }
229
+ const s = await t.store.deleteOne({
230
+ key: {
231
+ $eq: e
232
+ }
233
+ });
234
+ return s.deletedCount > 0;
106
235
  }
107
- async deleteMany(t) {
108
- const e = `DELETE FROM ${this.opts.table} WHERE key IN (SELECT value FROM json_each(?))`;
109
- const s = await this.getMany(t);
110
- if (s.every((t => t === void 0))) {
111
- return false;
236
+ async deleteMany(e) {
237
+ const t = await this.connect;
238
+ if (this.opts.useGridFS) {
239
+ const s = t.db;
240
+ const o = new n.GridFSBucket(s, {
241
+ bucketName: this.opts.collection
242
+ });
243
+ const a = await o.find({
244
+ filename: {
245
+ $in: e
246
+ }
247
+ }).toArray();
248
+ if (a.length === 0) {
249
+ return false;
250
+ }
251
+ await Promise.all(a.map((async e => t.bucket.delete(e._id))));
252
+ return true;
112
253
  }
113
- await this.query(e, JSON.stringify(t));
114
- return true;
254
+ const s = await t.store.deleteMany({
255
+ key: {
256
+ $in: e
257
+ }
258
+ });
259
+ return s.deletedCount > 0;
115
260
  }
116
261
  async clear() {
117
- const t = `DELETE FROM ${this.opts.table} WHERE key LIKE ?`;
118
- await this.query(t, this.namespace ? `${this.namespace}:%` : "%");
119
- }
120
- async* iterator(t) {
121
- const e = Number.parseInt(this.opts.iterationLimit, 10) || 10;
122
- async function* s(i, a, n) {
123
- const r = `SELECT * FROM ${a.table} WHERE key LIKE ? LIMIT ? OFFSET ?`;
124
- const o = await n(r, [ `${t ? t + ":" : ""}%`, e, i ]);
125
- const c = [ ...o ];
126
- if (c.length === 0) {
127
- return;
262
+ const e = await this.connect;
263
+ if (this.opts.useGridFS) {
264
+ try {
265
+ await e.bucket.drop();
266
+ } catch (e) {
267
+ if (!(e instanceof n.MongoServerError && e.code === 26)) {
268
+ throw e;
269
+ }
128
270
  }
129
- for (const t of c) {
130
- i += 1;
131
- yield [ t.key, t.value ];
271
+ }
272
+ await e.store.deleteMany({
273
+ key: {
274
+ $regex: this.namespace ? `^${this.namespace}:*` : ""
132
275
  }
133
- yield* s(i, a, n);
276
+ });
277
+ }
278
+ async clearExpired() {
279
+ if (!this.opts.useGridFS) {
280
+ return false;
134
281
  }
135
- yield* s(0, this.opts, this.query);
282
+ return this.connect.then((async e => {
283
+ const t = e.db;
284
+ const s = new n.GridFSBucket(t, {
285
+ bucketName: this.opts.collection
286
+ });
287
+ return s.find({
288
+ "metadata.expiresAt": {
289
+ $lte: new Date(Date.now())
290
+ }
291
+ }).toArray().then((async t => Promise.all(t.map((async t => e.bucket.delete(t._id)))).then((() => true))));
292
+ }));
293
+ }
294
+ async clearUnusedFor(e) {
295
+ if (!this.opts.useGridFS) {
296
+ return false;
297
+ }
298
+ const t = await this.connect;
299
+ const s = t.db;
300
+ const o = new n.GridFSBucket(s, {
301
+ bucketName: this.opts.collection
302
+ });
303
+ const a = await o.find({
304
+ "metadata.lastAccessed": {
305
+ $lte: new Date(Date.now() - e * 1e3)
306
+ }
307
+ }).toArray();
308
+ await Promise.all(a.map((async e => t.bucket.delete(e._id))));
309
+ return true;
310
+ }
311
+ async* iterator(e) {
312
+ const t = await this.connect;
313
+ const n = new RegExp(`^${e ? e + ":" : ".*"}`);
314
+ const s = this.opts.useGridFS ? t.store.find({
315
+ filename: n
316
+ }).map((async e => [ e.filename, await this.get(e.filename) ])) : t.store.find({
317
+ key: n
318
+ }).map((e => [ e.key, e.value ]));
319
+ yield* s;
136
320
  }
137
- async has(t) {
138
- const e = `SELECT EXISTS ( SELECT * FROM ${this.opts.table} WHERE key = ? )`;
139
- const s = await this.query(e, t);
140
- return Object.values(s[0])[0] === 1;
321
+ async has(e) {
322
+ const t = await this.connect;
323
+ const n = {
324
+ [this.opts.useGridFS ? "filename" : "key"]: {
325
+ $eq: e
326
+ }
327
+ };
328
+ const s = await t.store.count(n);
329
+ return s !== 0;
141
330
  }
142
331
  async disconnect() {
143
- await this.close();
332
+ const e = await this.connect;
333
+ await e.mongoClient.close();
144
334
  }
145
335
  };
146
336
 
147
- var u = t => new s.index_default({
148
- store: new c(t)
149
- });
150
-
151
- var l = c;
152
-
153
- exports.KeyvSqlite = c;
337
+ var c = i;
154
338
 
155
- exports.createKeyv = u;
339
+ exports.KeyvMongo = i;
156
340
 
157
- exports.default = l;
341
+ exports.default = c;