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