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
@@ -1,180 +1,157 @@
1
1
  import t from "events";
2
2
 
3
- import e from "mysql2";
3
+ import { i as s } from "./Package.67.mjs";
4
4
 
5
- var s;
5
+ import e from "pg";
6
+
7
+ import "buffer";
6
8
 
7
9
  var a;
8
10
 
9
- var o = t => {
10
- t = t.replace(/#/g, "%23");
11
- const e = new URL(t);
12
- const s = {
13
- user: decodeURIComponent(e.username),
14
- password: decodeURIComponent(e.password) || void 0,
15
- host: e.hostname,
16
- port: e.port ? Number.parseInt(e.port, 10) : void 0,
17
- database: decodeURIComponent(e.pathname.slice(1))
18
- };
19
- for (const t of Object.keys(s)) {
20
- if (s[t] === void 0) {
21
- delete s[t];
22
- }
23
- }
24
- return s;
25
- };
11
+ var i;
26
12
 
27
- var i = (t, i = {}) => {
28
- if (a !== t) {
29
- s = void 0;
30
- a = t;
13
+ var o = (t, s = {}) => {
14
+ if (i !== t) {
15
+ a = void 0;
16
+ i = t;
31
17
  }
32
- const n = o(t);
33
- const r = {
34
- ...n,
35
- ...i
36
- };
37
- s ??= e.createPool(r);
38
- return s.promise();
18
+ a ??= new e.Pool({
19
+ connectionString: t,
20
+ ...s
21
+ });
22
+ return a;
39
23
  };
40
24
 
41
- var n = () => {
42
- if (s) {
43
- s.end();
44
- }
45
- a = void 0;
25
+ var r = async () => {
26
+ await a.end();
27
+ i = void 0;
46
28
  };
47
29
 
48
- var r = new Set([ "adapter", "compression", "connect", "dialect", "keySize", "table", "ttl", "uri" ]);
49
-
50
- var c = class extends t {
51
- ttlSupport=false;
30
+ var n = class extends t {
31
+ ttlSupport;
52
32
  opts;
53
- namespace;
54
33
  query;
34
+ namespace;
55
35
  constructor(t) {
56
36
  super();
57
- let e = {
58
- dialect: "mysql",
59
- uri: "mysql://localhost"
60
- };
37
+ this.ttlSupport = false;
61
38
  if (typeof t === "string") {
62
- e.uri = t;
39
+ const s = t;
40
+ t = {
41
+ dialect: "postgres",
42
+ uri: s
43
+ };
63
44
  } else {
64
- e = {
65
- ...e,
45
+ t = {
46
+ dialect: "postgres",
47
+ uri: "postgresql://localhost:5432",
66
48
  ...t
67
49
  };
68
50
  }
69
- if (e.intervalExpiration !== void 0 && e.intervalExpiration > 0) {
70
- this.ttlSupport = true;
71
- }
72
- const s = Object.fromEntries(Object.entries(e).filter((([t]) => !r.has(t))));
73
- delete s.namespace;
74
- delete s.serialize;
75
- delete s.deserialize;
76
- const a = async () => {
77
- const t = i(e.uri, s);
78
- return async e => {
79
- const s = await t.query(e);
80
- return s[0];
51
+ const s = async () => {
52
+ const s = o(t.uri, t);
53
+ return async (t, e) => {
54
+ const a = await s.query(t, e);
55
+ return a.rows;
81
56
  };
82
57
  };
83
58
  this.opts = {
84
59
  table: "keyv",
60
+ schema: "public",
85
61
  keySize: 255,
86
- ...e
62
+ ...t
87
63
  };
88
- const o = `CREATE TABLE IF NOT EXISTS ${this.opts.table}(id VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT)`;
89
- const n = a().then((async t => {
90
- await t(o);
91
- if (this.opts.intervalExpiration !== void 0 && this.opts.intervalExpiration > 0) {
92
- await t("SET GLOBAL event_scheduler = ON;");
93
- await t("DROP EVENT IF EXISTS keyv_delete_expired_keys;");
94
- await t(`CREATE EVENT IF NOT EXISTS keyv_delete_expired_keys ON SCHEDULE EVERY ${this.opts.intervalExpiration} SECOND\n\t\t\t\t\tDO DELETE FROM ${this.opts.table}\n\t\t\t\t\tWHERE CAST(value->'$.expires' AS UNSIGNED) BETWEEN 1 AND UNIX_TIMESTAMP(NOW(3)) * 1000;`);
64
+ let e = `CREATE${this.opts.useUnloggedTable ? " UNLOGGED " : " "}TABLE IF NOT EXISTS ${this.opts.schema}.${this.opts.table}(key VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT )`;
65
+ if (this.opts.schema !== "public") {
66
+ e = `CREATE SCHEMA IF NOT EXISTS ${this.opts.schema}; ${e}`;
67
+ }
68
+ const a = s().then((async t => {
69
+ try {
70
+ await t(e);
71
+ } catch (s) {
72
+ if (s.code !== "23505") {
73
+ this.emit("error", s);
74
+ }
75
+ return t;
95
76
  }
96
77
  return t;
97
78
  })).catch((t => this.emit("error", t)));
98
- this.query = async t => {
99
- const e = await n;
100
- return e(t);
101
- };
79
+ this.query = async (t, s) => a.then((e => e(t, s)));
102
80
  }
103
81
  async get(t) {
104
- const s = `SELECT * FROM ${this.opts.table} WHERE id = ?`;
105
- const a = e.format(s, [ t ]);
106
- const o = await this.query(a);
107
- const i = o[0];
108
- return i?.value;
82
+ const s = `SELECT * FROM ${this.opts.schema}.${this.opts.table} WHERE key = $1`;
83
+ const e = await this.query(s, [ t ]);
84
+ const a = e[0];
85
+ return a === void 0 ? void 0 : a.value;
109
86
  }
110
87
  async getMany(t) {
111
- const s = `SELECT * FROM ${this.opts.table} WHERE id IN (?)`;
112
- const a = e.format(s, [ t ]);
113
- const o = await this.query(a);
114
- const i = [];
115
- for (const e of t) {
116
- const t = o.findIndex((t => t.id === e));
117
- i.push(t === -1 ? void 0 : o[t].value);
88
+ const s = `SELECT * FROM ${this.opts.schema}.${this.opts.table} WHERE key = ANY($1)`;
89
+ const e = await this.query(s, [ t ]);
90
+ const a = [];
91
+ for (const s of t) {
92
+ const t = e?.findIndex((t => t.key === s));
93
+ a.push(t > -1 ? e[t].value : void 0);
118
94
  }
119
- return i;
95
+ return a;
120
96
  }
121
97
  async set(t, s) {
122
- const a = `INSERT INTO ${this.opts.table} (id, value)\n\t\t\tVALUES(?, ?) \n\t\t\tON DUPLICATE KEY UPDATE value=?;`;
123
- const o = [ t, s, s ];
124
- const i = e.format(a, o);
125
- return this.query(i);
98
+ const e = `INSERT INTO ${this.opts.schema}.${this.opts.table} (key, value)\n VALUES($1, $2) \n ON CONFLICT(key) \n DO UPDATE SET value=excluded.value;`;
99
+ await this.query(e, [ t, s ]);
126
100
  }
127
101
  async delete(t) {
128
- const s = `SELECT * FROM ${this.opts.table} WHERE id = ?`;
129
- const a = e.format(s, [ t ]);
130
- const o = `DELETE FROM ${this.opts.table} WHERE id = ?`;
131
- const i = e.format(o, [ t ]);
132
- const n = await this.query(a);
133
- const r = n[0];
134
- if (r === void 0) {
102
+ const s = `SELECT * FROM ${this.opts.schema}.${this.opts.table} WHERE key = $1`;
103
+ const e = `DELETE FROM ${this.opts.schema}.${this.opts.table} WHERE key = $1`;
104
+ const a = await this.query(s, [ t ]);
105
+ if (a[0] === void 0) {
135
106
  return false;
136
107
  }
137
- await this.query(i);
108
+ await this.query(e, [ t ]);
138
109
  return true;
139
110
  }
140
111
  async deleteMany(t) {
141
- const s = `DELETE FROM ${this.opts.table} WHERE id IN (?)`;
142
- const a = e.format(s, [ t ]);
143
- const o = await this.query(a);
144
- return o.affectedRows !== 0;
112
+ const s = `SELECT * FROM ${this.opts.schema}.${this.opts.table} WHERE key = ANY($1)`;
113
+ const e = `DELETE FROM ${this.opts.schema}.${this.opts.table} WHERE key = ANY($1)`;
114
+ const a = await this.query(s, [ t ]);
115
+ if (a[0] === void 0) {
116
+ return false;
117
+ }
118
+ await this.query(e, [ t ]);
119
+ return true;
145
120
  }
146
121
  async clear() {
147
- const t = `DELETE FROM ${this.opts.table} WHERE id LIKE ?`;
148
- const s = e.format(t, [ this.namespace ? `${this.namespace}:%` : "%" ]);
149
- await this.query(s);
122
+ const t = `DELETE FROM ${this.opts.schema}.${this.opts.table} WHERE key LIKE $1`;
123
+ await this.query(t, [ this.namespace ? `${this.namespace}:%` : "%" ]);
150
124
  }
151
125
  async* iterator(t) {
152
- const s = Number.parseInt(this.opts.iterationLimit, 10) || 10;
153
- async function* a(o, i, n) {
154
- const r = `SELECT * FROM ${i.table} WHERE id LIKE ? LIMIT ? OFFSET ?`;
155
- const c = e.format(r, [ `${t ? t + ":" : ""}%`, s, o ]);
156
- const E = await n(c);
157
- if (E.length === 0) {
126
+ const s = Number.parseInt(String(this.opts.iterationLimit), 10) || 10;
127
+ async function* e(a, i, o) {
128
+ const r = `SELECT * FROM ${i.schema}.${i.table} WHERE key LIKE $1 LIMIT $2 OFFSET $3`;
129
+ const n = await o(r, [ `${t ? t + ":" : ""}%`, s, a ]);
130
+ if (n.length === 0) {
158
131
  return;
159
132
  }
160
- for (const t of E) {
161
- o += 1;
162
- yield [ t.id, t.value ];
133
+ for (const t of n) {
134
+ a += 1;
135
+ yield [ t.key, t.value ];
163
136
  }
164
- yield* a(o, i, n);
137
+ yield* e(a, i, o);
165
138
  }
166
- yield* a(0, this.opts, this.query);
139
+ yield* e(0, this.opts, this.query);
167
140
  }
168
141
  async has(t) {
169
- const e = `SELECT EXISTS ( SELECT * FROM ${this.opts.table} WHERE id = '${t}' )`;
170
- const s = await this.query(e);
171
- return Object.values(s[0])[0] === 1;
142
+ const s = `SELECT EXISTS ( SELECT * FROM ${this.opts.schema}.${this.opts.table} WHERE key = $1 )`;
143
+ const e = await this.query(s, [ t ]);
144
+ return e[0].exists;
172
145
  }
173
146
  async disconnect() {
174
- n();
147
+ await r();
175
148
  }
176
149
  };
177
150
 
178
- var E = c;
151
+ var c = t => new s({
152
+ store: new n(t)
153
+ });
154
+
155
+ var h = n;
179
156
 
180
- export { c as KeyvMysql, E as default };
157
+ export { n as KeyvPostgres, c as createKeyv, h as default };
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, {
4
+ value: "Module"
5
+ });
6
+
7
+ const t = require("events");
8
+
9
+ const e = require("mysql2");
10
+
11
+ const s = t => t && t.__esModule ? t : {
12
+ default: t
13
+ };
14
+
15
+ const a = s(t);
16
+
17
+ const o = s(e);
18
+
19
+ var n;
20
+
21
+ var i;
22
+
23
+ var r = t => {
24
+ t = t.replace(/#/g, "%23");
25
+ const e = new URL(t);
26
+ const s = {
27
+ user: decodeURIComponent(e.username),
28
+ password: decodeURIComponent(e.password) || void 0,
29
+ host: e.hostname,
30
+ port: e.port ? Number.parseInt(e.port, 10) : void 0,
31
+ database: decodeURIComponent(e.pathname.slice(1))
32
+ };
33
+ for (const t of Object.keys(s)) {
34
+ if (s[t] === void 0) {
35
+ delete s[t];
36
+ }
37
+ }
38
+ return s;
39
+ };
40
+
41
+ var c = (t, e = {}) => {
42
+ if (i !== t) {
43
+ n = void 0;
44
+ i = t;
45
+ }
46
+ const s = r(t);
47
+ const a = {
48
+ ...s,
49
+ ...e
50
+ };
51
+ n ??= o.default.createPool(a);
52
+ return n.promise();
53
+ };
54
+
55
+ var E = () => {
56
+ if (n) {
57
+ n.end();
58
+ }
59
+ i = void 0;
60
+ };
61
+
62
+ var l = new Set([ "adapter", "compression", "connect", "dialect", "keySize", "table", "ttl", "uri" ]);
63
+
64
+ var u = class extends a.default {
65
+ ttlSupport=false;
66
+ opts;
67
+ namespace;
68
+ query;
69
+ constructor(t) {
70
+ super();
71
+ let e = {
72
+ dialect: "mysql",
73
+ uri: "mysql://localhost"
74
+ };
75
+ if (typeof t === "string") {
76
+ e.uri = t;
77
+ } else {
78
+ e = {
79
+ ...e,
80
+ ...t
81
+ };
82
+ }
83
+ if (e.intervalExpiration !== void 0 && e.intervalExpiration > 0) {
84
+ this.ttlSupport = true;
85
+ }
86
+ const s = Object.fromEntries(Object.entries(e).filter((([t]) => !l.has(t))));
87
+ delete s.namespace;
88
+ delete s.serialize;
89
+ delete s.deserialize;
90
+ const a = async () => {
91
+ const t = c(e.uri, s);
92
+ return async e => {
93
+ const s = await t.query(e);
94
+ return s[0];
95
+ };
96
+ };
97
+ this.opts = {
98
+ table: "keyv",
99
+ keySize: 255,
100
+ ...e
101
+ };
102
+ const o = `CREATE TABLE IF NOT EXISTS ${this.opts.table}(id VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT)`;
103
+ const n = a().then((async t => {
104
+ await t(o);
105
+ if (this.opts.intervalExpiration !== void 0 && this.opts.intervalExpiration > 0) {
106
+ await t("SET GLOBAL event_scheduler = ON;");
107
+ await t("DROP EVENT IF EXISTS keyv_delete_expired_keys;");
108
+ await t(`CREATE EVENT IF NOT EXISTS keyv_delete_expired_keys ON SCHEDULE EVERY ${this.opts.intervalExpiration} SECOND\n\t\t\t\t\tDO DELETE FROM ${this.opts.table}\n\t\t\t\t\tWHERE CAST(value->'$.expires' AS UNSIGNED) BETWEEN 1 AND UNIX_TIMESTAMP(NOW(3)) * 1000;`);
109
+ }
110
+ return t;
111
+ })).catch((t => this.emit("error", t)));
112
+ this.query = async t => {
113
+ const e = await n;
114
+ return e(t);
115
+ };
116
+ }
117
+ async get(t) {
118
+ const e = `SELECT * FROM ${this.opts.table} WHERE id = ?`;
119
+ const s = o.default.format(e, [ t ]);
120
+ const a = await this.query(s);
121
+ const n = a[0];
122
+ return n?.value;
123
+ }
124
+ async getMany(t) {
125
+ const e = `SELECT * FROM ${this.opts.table} WHERE id IN (?)`;
126
+ const s = o.default.format(e, [ t ]);
127
+ const a = await this.query(s);
128
+ const n = [];
129
+ for (const e of t) {
130
+ const t = a.findIndex((t => t.id === e));
131
+ n.push(t === -1 ? void 0 : a[t].value);
132
+ }
133
+ return n;
134
+ }
135
+ async set(t, e) {
136
+ const s = `INSERT INTO ${this.opts.table} (id, value)\n\t\t\tVALUES(?, ?) \n\t\t\tON DUPLICATE KEY UPDATE value=?;`;
137
+ const a = [ t, e, e ];
138
+ const n = o.default.format(s, a);
139
+ return this.query(n);
140
+ }
141
+ async delete(t) {
142
+ const e = `SELECT * FROM ${this.opts.table} WHERE id = ?`;
143
+ const s = o.default.format(e, [ t ]);
144
+ const a = `DELETE FROM ${this.opts.table} WHERE id = ?`;
145
+ const n = o.default.format(a, [ t ]);
146
+ const i = await this.query(s);
147
+ const r = i[0];
148
+ if (r === void 0) {
149
+ return false;
150
+ }
151
+ await this.query(n);
152
+ return true;
153
+ }
154
+ async deleteMany(t) {
155
+ const e = `DELETE FROM ${this.opts.table} WHERE id IN (?)`;
156
+ const s = o.default.format(e, [ t ]);
157
+ const a = await this.query(s);
158
+ return a.affectedRows !== 0;
159
+ }
160
+ async clear() {
161
+ const t = `DELETE FROM ${this.opts.table} WHERE id LIKE ?`;
162
+ const e = o.default.format(t, [ this.namespace ? `${this.namespace}:%` : "%" ]);
163
+ await this.query(e);
164
+ }
165
+ async* iterator(t) {
166
+ const e = Number.parseInt(this.opts.iterationLimit, 10) || 10;
167
+ async function* s(a, n, i) {
168
+ const r = `SELECT * FROM ${n.table} WHERE id LIKE ? LIMIT ? OFFSET ?`;
169
+ const c = o.default.format(r, [ `${t ? t + ":" : ""}%`, e, a ]);
170
+ const E = await i(c);
171
+ if (E.length === 0) {
172
+ return;
173
+ }
174
+ for (const t of E) {
175
+ a += 1;
176
+ yield [ t.id, t.value ];
177
+ }
178
+ yield* s(a, n, i);
179
+ }
180
+ yield* s(0, this.opts, this.query);
181
+ }
182
+ async has(t) {
183
+ const e = `SELECT EXISTS ( SELECT * FROM ${this.opts.table} WHERE id = '${t}' )`;
184
+ const s = await this.query(e);
185
+ return Object.values(s[0])[0] === 1;
186
+ }
187
+ async disconnect() {
188
+ E();
189
+ }
190
+ };
191
+
192
+ var d = u;
193
+
194
+ exports.KeyvMysql = u;
195
+
196
+ exports.default = d;
@@ -0,0 +1,180 @@
1
+ import t from "events";
2
+
3
+ import e from "mysql2";
4
+
5
+ var s;
6
+
7
+ var a;
8
+
9
+ var o = t => {
10
+ t = t.replace(/#/g, "%23");
11
+ const e = new URL(t);
12
+ const s = {
13
+ user: decodeURIComponent(e.username),
14
+ password: decodeURIComponent(e.password) || void 0,
15
+ host: e.hostname,
16
+ port: e.port ? Number.parseInt(e.port, 10) : void 0,
17
+ database: decodeURIComponent(e.pathname.slice(1))
18
+ };
19
+ for (const t of Object.keys(s)) {
20
+ if (s[t] === void 0) {
21
+ delete s[t];
22
+ }
23
+ }
24
+ return s;
25
+ };
26
+
27
+ var i = (t, i = {}) => {
28
+ if (a !== t) {
29
+ s = void 0;
30
+ a = t;
31
+ }
32
+ const n = o(t);
33
+ const r = {
34
+ ...n,
35
+ ...i
36
+ };
37
+ s ??= e.createPool(r);
38
+ return s.promise();
39
+ };
40
+
41
+ var n = () => {
42
+ if (s) {
43
+ s.end();
44
+ }
45
+ a = void 0;
46
+ };
47
+
48
+ var r = new Set([ "adapter", "compression", "connect", "dialect", "keySize", "table", "ttl", "uri" ]);
49
+
50
+ var c = class extends t {
51
+ ttlSupport=false;
52
+ opts;
53
+ namespace;
54
+ query;
55
+ constructor(t) {
56
+ super();
57
+ let e = {
58
+ dialect: "mysql",
59
+ uri: "mysql://localhost"
60
+ };
61
+ if (typeof t === "string") {
62
+ e.uri = t;
63
+ } else {
64
+ e = {
65
+ ...e,
66
+ ...t
67
+ };
68
+ }
69
+ if (e.intervalExpiration !== void 0 && e.intervalExpiration > 0) {
70
+ this.ttlSupport = true;
71
+ }
72
+ const s = Object.fromEntries(Object.entries(e).filter((([t]) => !r.has(t))));
73
+ delete s.namespace;
74
+ delete s.serialize;
75
+ delete s.deserialize;
76
+ const a = async () => {
77
+ const t = i(e.uri, s);
78
+ return async e => {
79
+ const s = await t.query(e);
80
+ return s[0];
81
+ };
82
+ };
83
+ this.opts = {
84
+ table: "keyv",
85
+ keySize: 255,
86
+ ...e
87
+ };
88
+ const o = `CREATE TABLE IF NOT EXISTS ${this.opts.table}(id VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT)`;
89
+ const n = a().then((async t => {
90
+ await t(o);
91
+ if (this.opts.intervalExpiration !== void 0 && this.opts.intervalExpiration > 0) {
92
+ await t("SET GLOBAL event_scheduler = ON;");
93
+ await t("DROP EVENT IF EXISTS keyv_delete_expired_keys;");
94
+ await t(`CREATE EVENT IF NOT EXISTS keyv_delete_expired_keys ON SCHEDULE EVERY ${this.opts.intervalExpiration} SECOND\n\t\t\t\t\tDO DELETE FROM ${this.opts.table}\n\t\t\t\t\tWHERE CAST(value->'$.expires' AS UNSIGNED) BETWEEN 1 AND UNIX_TIMESTAMP(NOW(3)) * 1000;`);
95
+ }
96
+ return t;
97
+ })).catch((t => this.emit("error", t)));
98
+ this.query = async t => {
99
+ const e = await n;
100
+ return e(t);
101
+ };
102
+ }
103
+ async get(t) {
104
+ const s = `SELECT * FROM ${this.opts.table} WHERE id = ?`;
105
+ const a = e.format(s, [ t ]);
106
+ const o = await this.query(a);
107
+ const i = o[0];
108
+ return i?.value;
109
+ }
110
+ async getMany(t) {
111
+ const s = `SELECT * FROM ${this.opts.table} WHERE id IN (?)`;
112
+ const a = e.format(s, [ t ]);
113
+ const o = await this.query(a);
114
+ const i = [];
115
+ for (const e of t) {
116
+ const t = o.findIndex((t => t.id === e));
117
+ i.push(t === -1 ? void 0 : o[t].value);
118
+ }
119
+ return i;
120
+ }
121
+ async set(t, s) {
122
+ const a = `INSERT INTO ${this.opts.table} (id, value)\n\t\t\tVALUES(?, ?) \n\t\t\tON DUPLICATE KEY UPDATE value=?;`;
123
+ const o = [ t, s, s ];
124
+ const i = e.format(a, o);
125
+ return this.query(i);
126
+ }
127
+ async delete(t) {
128
+ const s = `SELECT * FROM ${this.opts.table} WHERE id = ?`;
129
+ const a = e.format(s, [ t ]);
130
+ const o = `DELETE FROM ${this.opts.table} WHERE id = ?`;
131
+ const i = e.format(o, [ t ]);
132
+ const n = await this.query(a);
133
+ const r = n[0];
134
+ if (r === void 0) {
135
+ return false;
136
+ }
137
+ await this.query(i);
138
+ return true;
139
+ }
140
+ async deleteMany(t) {
141
+ const s = `DELETE FROM ${this.opts.table} WHERE id IN (?)`;
142
+ const a = e.format(s, [ t ]);
143
+ const o = await this.query(a);
144
+ return o.affectedRows !== 0;
145
+ }
146
+ async clear() {
147
+ const t = `DELETE FROM ${this.opts.table} WHERE id LIKE ?`;
148
+ const s = e.format(t, [ this.namespace ? `${this.namespace}:%` : "%" ]);
149
+ await this.query(s);
150
+ }
151
+ async* iterator(t) {
152
+ const s = Number.parseInt(this.opts.iterationLimit, 10) || 10;
153
+ async function* a(o, i, n) {
154
+ const r = `SELECT * FROM ${i.table} WHERE id LIKE ? LIMIT ? OFFSET ?`;
155
+ const c = e.format(r, [ `${t ? t + ":" : ""}%`, s, o ]);
156
+ const E = await n(c);
157
+ if (E.length === 0) {
158
+ return;
159
+ }
160
+ for (const t of E) {
161
+ o += 1;
162
+ yield [ t.id, t.value ];
163
+ }
164
+ yield* a(o, i, n);
165
+ }
166
+ yield* a(0, this.opts, this.query);
167
+ }
168
+ async has(t) {
169
+ const e = `SELECT EXISTS ( SELECT * FROM ${this.opts.table} WHERE id = '${t}' )`;
170
+ const s = await this.query(e);
171
+ return Object.values(s[0])[0] === 1;
172
+ }
173
+ async disconnect() {
174
+ n();
175
+ }
176
+ };
177
+
178
+ var E = c;
179
+
180
+ export { c as KeyvMysql, E as default };