@sphereon/ssi-sdk.kv-store-temp 0.32.1-next.54 → 0.33.1-feature.vcdm2.4
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/dist/index.js +4 -22
- package/dist/index.js.map +1 -1
- package/dist/key-value-store.js +59 -88
- package/dist/key-value-store.js.map +1 -1
- package/dist/key-value-types.js +1 -2
- package/dist/keyv/keyv-types.js +1 -2
- package/dist/keyv/keyv.js +100 -150
- package/dist/keyv/keyv.js.map +1 -1
- package/dist/store-adapters/index.js +2 -18
- package/dist/store-adapters/index.js.map +1 -1
- package/dist/store-adapters/tiered/index.js +93 -158
- package/dist/store-adapters/tiered/index.js.map +1 -1
- package/dist/store-adapters/tiered/types.js +1 -2
- package/dist/store-adapters/typeorm/entities/keyValueStoreEntity.js +12 -10
- package/dist/store-adapters/typeorm/entities/keyValueStoreEntity.js.map +1 -1
- package/dist/store-adapters/typeorm/index.js +81 -110
- package/dist/store-adapters/typeorm/index.js.map +1 -1
- package/dist/store-adapters/typeorm/migrations/1.createKVDatabase.js +27 -46
- package/dist/store-adapters/typeorm/migrations/1.createKVDatabase.js.map +1 -1
- package/dist/store-adapters/typeorm/migrations/index.js +2 -5
- package/dist/store-adapters/typeorm/migrations/index.js.map +1 -1
- package/dist/store-adapters/typeorm/types.js +1 -2
- package/package.json +4 -4
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./tiered/index"), exports);
|
|
18
|
-
__exportStar(require("./typeorm/index"), exports);
|
|
1
|
+
export * from './tiered/index';
|
|
2
|
+
export * from './typeorm/index';
|
|
19
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store-adapters/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store-adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA"}
|
|
@@ -1,186 +1,121 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
-
var t = {};
|
|
13
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
-
t[p] = s[p];
|
|
15
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
-
t[p[i]] = s[p[i]];
|
|
19
|
-
}
|
|
20
|
-
return t;
|
|
21
|
-
};
|
|
22
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
23
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
24
|
-
var m = o[Symbol.asyncIterator], i;
|
|
25
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
26
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
27
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
28
|
-
};
|
|
29
|
-
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
30
|
-
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
31
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
32
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
33
|
-
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
34
|
-
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
35
|
-
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
36
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
37
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
38
|
-
function fulfill(value) { resume("next", value); }
|
|
39
|
-
function reject(value) { resume("throw", value); }
|
|
40
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
41
|
-
};
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.KeyValueTieredStoreAdapter = void 0;
|
|
44
|
-
const events_1 = require("events");
|
|
45
|
-
const keyv_1 = require("../../keyv/keyv");
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { Keyv } from '../../keyv/keyv';
|
|
46
3
|
/**
|
|
47
4
|
* Tiered keyv store adapter, combining 2 adapters/stores into one
|
|
48
5
|
* @alpha
|
|
49
6
|
*/
|
|
50
|
-
class KeyValueTieredStoreAdapter extends
|
|
51
|
-
|
|
52
|
-
|
|
7
|
+
export class KeyValueTieredStoreAdapter extends EventEmitter {
|
|
8
|
+
opts;
|
|
9
|
+
remote;
|
|
10
|
+
local;
|
|
11
|
+
iterationLimit;
|
|
12
|
+
namespace;
|
|
13
|
+
constructor({ remote, local, ...options }) {
|
|
53
14
|
super();
|
|
54
|
-
this.opts =
|
|
15
|
+
this.opts = {
|
|
16
|
+
validator: () => true,
|
|
17
|
+
dialect: 'tiered',
|
|
18
|
+
...options,
|
|
19
|
+
};
|
|
55
20
|
// todo: since we are instantiating a new Keyv object in case we encounter a map, the key prefix applied twice, given it will be part of a an outer keyv object as well.
|
|
56
21
|
// Probably wise to simply create a Map Store class. As it is an in memory construct, and will work in terms of resolution it does not have highest priority
|
|
57
|
-
this.local = (isMap(local) ? new
|
|
58
|
-
this.remote = (isMap(remote) ? new
|
|
22
|
+
this.local = (isMap(local) ? new Keyv(local) : local);
|
|
23
|
+
this.remote = (isMap(remote) ? new Keyv(remote) : remote);
|
|
59
24
|
this.namespace = this.local.namespace;
|
|
60
25
|
}
|
|
61
|
-
get(key, options) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this.local.delete(key);
|
|
79
|
-
}
|
|
26
|
+
async get(key, options) {
|
|
27
|
+
if (Array.isArray(key)) {
|
|
28
|
+
return await this.getMany(key, options);
|
|
29
|
+
}
|
|
30
|
+
const localResult = (await this.local.get(key, options));
|
|
31
|
+
if (localResult === undefined || !this.opts.validator(localResult, key)) {
|
|
32
|
+
const remoteResult = await this.remote.get(key, options);
|
|
33
|
+
if (remoteResult !== localResult) {
|
|
34
|
+
const value = (!!remoteResult ? (typeof remoteResult === 'object' && 'value' in remoteResult ? remoteResult.value : remoteResult) : undefined);
|
|
35
|
+
const ttl = !!remoteResult && typeof remoteResult === 'object' && 'expires' in remoteResult && remoteResult.expires
|
|
36
|
+
? remoteResult.expires - Date.now()
|
|
37
|
+
: undefined;
|
|
38
|
+
if (!ttl || ttl > 0) {
|
|
39
|
+
await this.local.set(key, value, ttl);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.local.delete(key);
|
|
80
43
|
}
|
|
81
|
-
return remoteResult;
|
|
82
44
|
}
|
|
83
|
-
return
|
|
84
|
-
}
|
|
45
|
+
return remoteResult;
|
|
46
|
+
}
|
|
47
|
+
return localResult;
|
|
85
48
|
}
|
|
86
|
-
getMany(keys, options) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return data;
|
|
98
|
-
});
|
|
49
|
+
async getMany(keys, options) {
|
|
50
|
+
const promises = [];
|
|
51
|
+
for (const key of keys) {
|
|
52
|
+
promises.push(this.get(key, options));
|
|
53
|
+
}
|
|
54
|
+
const values = await Promise.all(promises);
|
|
55
|
+
const data = [];
|
|
56
|
+
for (const value of values) {
|
|
57
|
+
data.push(value);
|
|
58
|
+
}
|
|
59
|
+
return data;
|
|
99
60
|
}
|
|
100
|
-
set(key, value, ttl) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return Promise.all(toSet.map((store) => __awaiter(this, void 0, void 0, function* () { return this[store].set(key, value, ttl); })));
|
|
104
|
-
});
|
|
61
|
+
async set(key, value, ttl) {
|
|
62
|
+
const toSet = ['local', 'remote'];
|
|
63
|
+
return Promise.all(toSet.map(async (store) => this[store].set(key, value, ttl)));
|
|
105
64
|
}
|
|
106
|
-
clear() {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return undefined;
|
|
114
|
-
});
|
|
65
|
+
async clear() {
|
|
66
|
+
const toClear = ['local'];
|
|
67
|
+
if (!this.opts.localOnly) {
|
|
68
|
+
toClear.push('remote');
|
|
69
|
+
}
|
|
70
|
+
await Promise.all(toClear.map(async (store) => this[store].clear()));
|
|
71
|
+
return undefined;
|
|
115
72
|
}
|
|
116
|
-
delete(key) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return deleted.every(Boolean);
|
|
124
|
-
});
|
|
73
|
+
async delete(key) {
|
|
74
|
+
const toDelete = ['local'];
|
|
75
|
+
if (!this.opts.localOnly) {
|
|
76
|
+
toDelete.push('remote');
|
|
77
|
+
}
|
|
78
|
+
const deleted = await Promise.all(toDelete.map(async (store) => this[store].delete(key)));
|
|
79
|
+
return deleted.every(Boolean);
|
|
125
80
|
}
|
|
126
|
-
deleteMany(keys) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return values.every(Boolean);
|
|
134
|
-
});
|
|
81
|
+
async deleteMany(keys) {
|
|
82
|
+
const promises = [];
|
|
83
|
+
for (const key of keys) {
|
|
84
|
+
promises.push(this.delete(key));
|
|
85
|
+
}
|
|
86
|
+
const values = await Promise.all(promises);
|
|
87
|
+
return values.every(Boolean);
|
|
135
88
|
}
|
|
136
|
-
has(key) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
89
|
+
async has(key) {
|
|
90
|
+
let response;
|
|
91
|
+
if (typeof this.local.has === 'function') {
|
|
92
|
+
response = this.local.has(key);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const value = await this.local.get(key);
|
|
96
|
+
response = value !== undefined;
|
|
97
|
+
}
|
|
98
|
+
if (!response || !this.opts.validator(response, key)) {
|
|
99
|
+
if (typeof this.remote.has === 'function') {
|
|
100
|
+
response = this.remote.has(key);
|
|
141
101
|
}
|
|
142
102
|
else {
|
|
143
|
-
const value =
|
|
103
|
+
const value = await this.remote.get(key);
|
|
144
104
|
response = value !== undefined;
|
|
145
105
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
response = this.remote.has(key);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
const value = yield this.remote.get(key);
|
|
152
|
-
response = value !== undefined;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return response;
|
|
156
|
-
});
|
|
106
|
+
}
|
|
107
|
+
return response;
|
|
157
108
|
}
|
|
158
|
-
iterator(namespace) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
this.remote.
|
|
163
|
-
|
|
164
|
-
try {
|
|
165
|
-
for (var _d = true, _e = __asyncValues(this.remote.iterator(namespace)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {
|
|
166
|
-
_c = _f.value;
|
|
167
|
-
_d = false;
|
|
168
|
-
const entries = _c;
|
|
169
|
-
yield yield __await(entries);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
173
|
-
finally {
|
|
174
|
-
try {
|
|
175
|
-
if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
|
|
176
|
-
}
|
|
177
|
-
finally { if (e_1) throw e_1.error; }
|
|
178
|
-
}
|
|
109
|
+
async *iterator(namespace) {
|
|
110
|
+
const limit = Number.parseInt(this.iterationLimit, 10) || 10;
|
|
111
|
+
this.remote.opts.iterationLimit = limit;
|
|
112
|
+
if (this.remote && typeof this.remote.iterator === 'function') {
|
|
113
|
+
for await (const entries of this.remote.iterator(namespace)) {
|
|
114
|
+
yield entries;
|
|
179
115
|
}
|
|
180
|
-
}
|
|
116
|
+
}
|
|
181
117
|
}
|
|
182
118
|
}
|
|
183
|
-
exports.KeyValueTieredStoreAdapter = KeyValueTieredStoreAdapter;
|
|
184
119
|
function isMap(map) {
|
|
185
120
|
if (map instanceof Map) {
|
|
186
121
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store-adapters/tiered/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store-adapters/tiered/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,31 +7,34 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
exports.KeyValueStoreEntity = void 0;
|
|
13
|
-
const typeorm_1 = require("typeorm");
|
|
10
|
+
import { BaseEntity, Column, Entity, PrimaryColumn } from 'typeorm';
|
|
14
11
|
/**
|
|
15
12
|
*
|
|
16
13
|
* @beta This API may change without a BREAKING CHANGE notice.
|
|
17
14
|
*/
|
|
18
|
-
let KeyValueStoreEntity = class KeyValueStoreEntity extends
|
|
15
|
+
let KeyValueStoreEntity = class KeyValueStoreEntity extends BaseEntity {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
key;
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
data;
|
|
20
|
+
expires;
|
|
19
21
|
};
|
|
20
|
-
exports.KeyValueStoreEntity = KeyValueStoreEntity;
|
|
21
22
|
__decorate([
|
|
22
|
-
|
|
23
|
+
PrimaryColumn()
|
|
23
24
|
// @ts-ignore
|
|
24
25
|
,
|
|
25
26
|
__metadata("design:type", String)
|
|
26
27
|
], KeyValueStoreEntity.prototype, "key", void 0);
|
|
27
28
|
__decorate([
|
|
28
|
-
|
|
29
|
+
Column({
|
|
29
30
|
type: 'text',
|
|
30
31
|
})
|
|
31
32
|
// @ts-ignore
|
|
32
33
|
,
|
|
33
34
|
__metadata("design:type", String)
|
|
34
35
|
], KeyValueStoreEntity.prototype, "data", void 0);
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
KeyValueStoreEntity = __decorate([
|
|
37
|
+
Entity('keyvaluestore')
|
|
37
38
|
], KeyValueStoreEntity);
|
|
39
|
+
export { KeyValueStoreEntity };
|
|
38
40
|
//# sourceMappingURL=keyValueStoreEntity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyValueStoreEntity.js","sourceRoot":"","sources":["../../../../src/store-adapters/typeorm/entities/keyValueStoreEntity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keyValueStoreEntity.js","sourceRoot":"","sources":["../../../../src/store-adapters/typeorm/entities/keyValueStoreEntity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEnE;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAGjD,AADA,aAAa;IACb,GAAG,CAAQ;IAMX,AADA,aAAa;IACb,IAAI,CAAQ;IAEZ,OAAO,CAAS;CACjB,CAAA;AATC;IAFC,aAAa,EAAE;IAChB,aAAa;;;gDACF;AAMX;IAJC,MAAM,CAAC;QACN,IAAI,EAAE,MAAM;KACb,CAAC;IACF,aAAa;;;iDACD;AATD,mBAAmB;IAD/B,MAAM,CAAC,eAAe,CAAC;GACX,mBAAmB,CAY/B"}
|
|
@@ -1,141 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.KeyValueTypeORMStoreAdapter = exports.kvStoreMigrations = exports.KeyValueStoreEntity = void 0;
|
|
16
|
-
exports._getConnectedDb = _getConnectedDb;
|
|
17
|
-
const events_1 = require("events");
|
|
18
|
-
const typeorm_1 = require("typeorm");
|
|
19
|
-
const keyValueStoreEntity_1 = require("./entities/keyValueStoreEntity");
|
|
20
|
-
const json_buffer_1 = __importDefault(require("json-buffer"));
|
|
21
|
-
var keyValueStoreEntity_2 = require("./entities/keyValueStoreEntity");
|
|
22
|
-
Object.defineProperty(exports, "KeyValueStoreEntity", { enumerable: true, get: function () { return keyValueStoreEntity_2.KeyValueStoreEntity; } });
|
|
23
|
-
var migrations_1 = require("./migrations");
|
|
24
|
-
Object.defineProperty(exports, "kvStoreMigrations", { enumerable: true, get: function () { return migrations_1.kvStoreMigrations; } });
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { In, Like } from 'typeorm';
|
|
3
|
+
import { KeyValueStoreEntity } from './entities/keyValueStoreEntity';
|
|
4
|
+
import JSONB from 'json-buffer';
|
|
5
|
+
export { KeyValueStoreEntity } from './entities/keyValueStoreEntity';
|
|
6
|
+
export { kvStoreMigrations } from './migrations';
|
|
25
7
|
/**
|
|
26
8
|
* TypeORM based key value store adapter
|
|
27
9
|
* @beta
|
|
28
10
|
*/
|
|
29
|
-
class KeyValueTypeORMStoreAdapter extends
|
|
11
|
+
export class KeyValueTypeORMStoreAdapter extends EventEmitter {
|
|
12
|
+
dbConnection;
|
|
13
|
+
namespace;
|
|
14
|
+
opts;
|
|
30
15
|
constructor(options) {
|
|
31
16
|
super();
|
|
32
17
|
this.dbConnection = options.dbConnection;
|
|
33
18
|
this.namespace = options.namespace || 'keyv';
|
|
34
|
-
this.opts =
|
|
19
|
+
this.opts = {
|
|
20
|
+
validator: () => true,
|
|
21
|
+
dialect: 'typeorm',
|
|
22
|
+
serialize: JSONB.stringify,
|
|
23
|
+
deserialize: JSONB.parse,
|
|
24
|
+
...options,
|
|
25
|
+
};
|
|
35
26
|
}
|
|
36
|
-
get(key, options) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
key,
|
|
44
|
-
});
|
|
45
|
-
return (options === null || options === void 0 ? void 0 : options.raw) !== true || !result ? result === null || result === void 0 ? void 0 : result.data : { value: result === null || result === void 0 ? void 0 : result.data, expires: result === null || result === void 0 ? void 0 : result.expires };
|
|
27
|
+
async get(key, options) {
|
|
28
|
+
if (Array.isArray(key)) {
|
|
29
|
+
return this.getMany(key, options);
|
|
30
|
+
}
|
|
31
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
32
|
+
const result = await connection.getRepository(KeyValueStoreEntity).findOneBy({
|
|
33
|
+
key,
|
|
46
34
|
});
|
|
35
|
+
return options?.raw !== true || !result ? result?.data : { value: result?.data, expires: result?.expires };
|
|
47
36
|
}
|
|
48
|
-
getMany(keys, options) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
key: (0, typeorm_1.In)(keys),
|
|
53
|
-
});
|
|
54
|
-
const values = keys.map((key) => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
var _a;
|
|
56
|
-
const result = results.find((result) => result.key === key);
|
|
57
|
-
return (options === null || options === void 0 ? void 0 : options.raw) !== true || !result
|
|
58
|
-
? result === null || result === void 0 ? void 0 : result.data
|
|
59
|
-
: {
|
|
60
|
-
value: (result === null || result === void 0 ? void 0 : result.data) ? (_a = (yield this.opts.deserialize(result.data))) === null || _a === void 0 ? void 0 : _a.value : undefined,
|
|
61
|
-
expires: result === null || result === void 0 ? void 0 : result.expires,
|
|
62
|
-
};
|
|
63
|
-
}));
|
|
64
|
-
return Promise.all(values);
|
|
37
|
+
async getMany(keys, options) {
|
|
38
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
39
|
+
const results = await connection.getRepository(KeyValueStoreEntity).findBy({
|
|
40
|
+
key: In(keys),
|
|
65
41
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
yield connection.getRepository(keyValueStoreEntity_1.KeyValueStoreEntity).save(entity);
|
|
75
|
-
return { value: value, expires: ttl };
|
|
42
|
+
const values = keys.map(async (key) => {
|
|
43
|
+
const result = results.find((result) => result.key === key);
|
|
44
|
+
return options?.raw !== true || !result
|
|
45
|
+
? result?.data
|
|
46
|
+
: {
|
|
47
|
+
value: result?.data ? (await this.opts.deserialize(result.data))?.value : undefined,
|
|
48
|
+
expires: result?.expires,
|
|
49
|
+
};
|
|
76
50
|
});
|
|
51
|
+
return Promise.all(values);
|
|
77
52
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
});
|
|
53
|
+
async set(key, value, ttl) {
|
|
54
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
55
|
+
const entity = new KeyValueStoreEntity();
|
|
56
|
+
entity.key = key;
|
|
57
|
+
entity.data = value;
|
|
58
|
+
entity.expires = ttl;
|
|
59
|
+
await connection.getRepository(KeyValueStoreEntity).save(entity);
|
|
60
|
+
return { value: value, expires: ttl };
|
|
87
61
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
62
|
+
async delete(key) {
|
|
63
|
+
if (Array.isArray(key)) {
|
|
64
|
+
return this.deleteMany(key);
|
|
65
|
+
}
|
|
66
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
67
|
+
const result = await connection.getRepository(KeyValueStoreEntity).delete({ key });
|
|
68
|
+
return result.affected === 1;
|
|
96
69
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
key: (0, typeorm_1.Like)(`${this.namespace}:%`),
|
|
102
|
-
});
|
|
70
|
+
async deleteMany(keys) {
|
|
71
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
72
|
+
const results = await connection.getRepository(KeyValueStoreEntity).delete({
|
|
73
|
+
key: In(keys),
|
|
103
74
|
});
|
|
75
|
+
return !!results.affected && results.affected >= 1;
|
|
104
76
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
key,
|
|
110
|
-
});
|
|
111
|
-
return result === 1;
|
|
77
|
+
async clear() {
|
|
78
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
79
|
+
await connection.getRepository(KeyValueStoreEntity).delete({
|
|
80
|
+
key: Like(`${this.namespace}:%`),
|
|
112
81
|
});
|
|
113
82
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
83
|
+
async has(key) {
|
|
84
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
85
|
+
const result = await connection.getRepository(KeyValueStoreEntity).countBy({
|
|
86
|
+
key,
|
|
118
87
|
});
|
|
88
|
+
return result === 1;
|
|
89
|
+
}
|
|
90
|
+
async disconnect() {
|
|
91
|
+
const connection = await _getConnectedDb(this.dbConnection);
|
|
92
|
+
await connection.destroy();
|
|
119
93
|
}
|
|
120
94
|
}
|
|
121
|
-
exports.KeyValueTypeORMStoreAdapter = KeyValueTypeORMStoreAdapter;
|
|
122
95
|
/**
|
|
123
96
|
* Ensures that the provided DataSource is connected.
|
|
124
97
|
*
|
|
125
98
|
* @param dbConnection - a TypeORM DataSource or a Promise that resolves to a DataSource
|
|
126
99
|
* @internal
|
|
127
100
|
*/
|
|
128
|
-
function _getConnectedDb(dbConnection) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
});
|
|
101
|
+
export async function _getConnectedDb(dbConnection) {
|
|
102
|
+
if (dbConnection instanceof Promise) {
|
|
103
|
+
return await dbConnection;
|
|
104
|
+
}
|
|
105
|
+
else if (!dbConnection.isInitialized) {
|
|
106
|
+
return await dbConnection.initialize();
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return dbConnection;
|
|
110
|
+
}
|
|
140
111
|
}
|
|
141
112
|
//# sourceMappingURL=index.js.map
|