@sphereon/ssi-sdk.kv-store-temp 0.33.1-feature.vcdm2.4 → 0.33.1-feature.vcdm2.tsup.18

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 (59) hide show
  1. package/dist/index.cjs +720 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +324 -0
  4. package/dist/index.d.ts +321 -8
  5. package/dist/index.js +679 -10
  6. package/dist/index.js.map +1 -1
  7. package/package.json +23 -12
  8. package/src/__tests__/keyv.test.ts +3 -3
  9. package/src/__tests__/kvstore.test.ts +1 -0
  10. package/src/store-adapters/typeorm/index.ts +1 -3
  11. package/dist/index.d.ts.map +0 -1
  12. package/dist/key-value-store.d.ts +0 -27
  13. package/dist/key-value-store.d.ts.map +0 -1
  14. package/dist/key-value-store.js +0 -94
  15. package/dist/key-value-store.js.map +0 -1
  16. package/dist/key-value-types.d.ts +0 -118
  17. package/dist/key-value-types.d.ts.map +0 -1
  18. package/dist/key-value-types.js +0 -2
  19. package/dist/key-value-types.js.map +0 -1
  20. package/dist/keyv/keyv-types.d.ts +0 -56
  21. package/dist/keyv/keyv-types.d.ts.map +0 -1
  22. package/dist/keyv/keyv-types.js +0 -2
  23. package/dist/keyv/keyv-types.js.map +0 -1
  24. package/dist/keyv/keyv.d.ts +0 -48
  25. package/dist/keyv/keyv.d.ts.map +0 -1
  26. package/dist/keyv/keyv.js +0 -252
  27. package/dist/keyv/keyv.js.map +0 -1
  28. package/dist/store-adapters/index.d.ts +0 -3
  29. package/dist/store-adapters/index.d.ts.map +0 -1
  30. package/dist/store-adapters/index.js +0 -3
  31. package/dist/store-adapters/index.js.map +0 -1
  32. package/dist/store-adapters/tiered/index.d.ts +0 -29
  33. package/dist/store-adapters/tiered/index.d.ts.map +0 -1
  34. package/dist/store-adapters/tiered/index.js +0 -133
  35. package/dist/store-adapters/tiered/index.js.map +0 -1
  36. package/dist/store-adapters/tiered/types.d.ts +0 -14
  37. package/dist/store-adapters/tiered/types.d.ts.map +0 -1
  38. package/dist/store-adapters/tiered/types.js +0 -2
  39. package/dist/store-adapters/tiered/types.js.map +0 -1
  40. package/dist/store-adapters/typeorm/entities/keyValueStoreEntity.d.ts +0 -11
  41. package/dist/store-adapters/typeorm/entities/keyValueStoreEntity.d.ts.map +0 -1
  42. package/dist/store-adapters/typeorm/entities/keyValueStoreEntity.js +0 -40
  43. package/dist/store-adapters/typeorm/entities/keyValueStoreEntity.js.map +0 -1
  44. package/dist/store-adapters/typeorm/index.d.ts +0 -39
  45. package/dist/store-adapters/typeorm/index.d.ts.map +0 -1
  46. package/dist/store-adapters/typeorm/index.js +0 -112
  47. package/dist/store-adapters/typeorm/index.js.map +0 -1
  48. package/dist/store-adapters/typeorm/migrations/1.createKVDatabase.d.ts +0 -14
  49. package/dist/store-adapters/typeorm/migrations/1.createKVDatabase.d.ts.map +0 -1
  50. package/dist/store-adapters/typeorm/migrations/1.createKVDatabase.js +0 -40
  51. package/dist/store-adapters/typeorm/migrations/1.createKVDatabase.js.map +0 -1
  52. package/dist/store-adapters/typeorm/migrations/index.d.ts +0 -10
  53. package/dist/store-adapters/typeorm/migrations/index.d.ts.map +0 -1
  54. package/dist/store-adapters/typeorm/migrations/index.js +0 -10
  55. package/dist/store-adapters/typeorm/migrations/index.js.map +0 -1
  56. package/dist/store-adapters/typeorm/types.d.ts +0 -22
  57. package/dist/store-adapters/typeorm/types.d.ts.map +0 -1
  58. package/dist/store-adapters/typeorm/types.js +0 -2
  59. package/dist/store-adapters/typeorm/types.js.map +0 -1
package/dist/keyv/keyv.js DELETED
@@ -1,252 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import JSONB from 'json-buffer';
3
- /**
4
- * Please note that this is code adapted from @link https://github.com/jaredwray/keyv to support Typescript and ESM in Veramo
5
- *
6
- * The code should support the storage plugins available for the keyv project.
7
- * Veramo itself supports NodeJS, Browser and React-Native environment.
8
- * Please be aware that these requirements probably aren't true for any keyv storage plugins.
9
- *
10
- * One of the big changes compared to the upstream project is that this port does not have dynamic loading of store-adapters based on URIs.
11
- * We believe that any Veramo Key Value store should use explicitly defined store-adapters.
12
- *
13
- * The port is part of the Veramo Key Value Store module, as we do not want to make an official maintained port out of it.
14
- * Veramo exposes its own API/interfaces for the Key Value store, meaning we could also support any other implementation in the future
15
- *
16
- * The Veramo kv-store module provides out of the box support for in memory/maps, sqlite and typeorm implementations,
17
- * including a tiered local/remote implementation that support all environments.
18
- *
19
- * We welcome any new storage modules
20
- */
21
- export class Keyv extends EventEmitter {
22
- opts;
23
- namespace;
24
- iterator;
25
- constructor(uri, options) {
26
- super();
27
- const emitErrors = options?.emitErrors === undefined ? true : options.emitErrors;
28
- uri = uri ?? options?.uri;
29
- /*if (!uri) {
30
- throw Error('No URI provided')
31
- }*/
32
- this.opts = {
33
- namespace: 'keyv',
34
- serialize: JSONB.stringify,
35
- deserialize: JSONB.parse,
36
- ...(typeof uri === 'string' ? { uri } : uri),
37
- ...options,
38
- };
39
- if (!this.opts.store) {
40
- if (typeof uri !== 'string') {
41
- this.opts.store = uri;
42
- } /* else {
43
- const adapterOptions = { ...this.opts }
44
- this.opts.store = loadStore(adapterOptions)
45
- }*/
46
- }
47
- if (!this.opts.store) {
48
- throw Error('No store');
49
- }
50
- if (this.opts.compression) {
51
- const compression = this.opts.compression;
52
- this.opts.serialize = compression.serialize.bind(compression);
53
- this.opts.deserialize = compression.deserialize.bind(compression);
54
- }
55
- if (typeof this.opts.store.on === 'function' && emitErrors) {
56
- this.opts.store.on('error', (error) => this.emit('error', error));
57
- }
58
- this.opts.store.namespace = this.opts.namespace || 'keyv';
59
- this.namespace = this.opts.store.namespace;
60
- const generateIterator = (iterator, keyv) => async function* () {
61
- for await (const [key, raw] of typeof iterator === 'function' ? iterator(keyv.store.namespace) : iterator) {
62
- const data = await keyv.deserialize(raw);
63
- if (keyv.store.namespace && !key.includes(keyv.store.namespace)) {
64
- continue;
65
- }
66
- if (data && typeof data.expires === 'number' && Date.now() > data.expires) {
67
- keyv.delete(key);
68
- continue;
69
- }
70
- yield [keyv._getKeyUnprefix(key), data?.value];
71
- }
72
- };
73
- // Attach iterators
74
- // @ts-ignore
75
- if (typeof this.store[Symbol.iterator] === 'function' && this.store instanceof Map) {
76
- this.iterator = generateIterator(this.store, this);
77
- }
78
- else if (typeof this.store.iterator === 'function' && this.store.opts && this._checkIterableAdapter()) {
79
- this.iterator = generateIterator(this.store.iterator.bind(this.store), this);
80
- }
81
- }
82
- get store() {
83
- return this.opts.store;
84
- }
85
- get deserialize() {
86
- return this.opts.deserialize;
87
- }
88
- get serialize() {
89
- return this.opts.serialize;
90
- }
91
- _checkIterableAdapter() {
92
- return ((this.store.opts.dialect && iterableAdapters.includes(this.store.opts.dialect)) ||
93
- (this.store.opts.url && iterableAdapters.findIndex((element) => this.store.opts.url.includes(element)) >= 0));
94
- }
95
- _getKeyPrefix(key) {
96
- return `${this.opts.namespace}:${key}`;
97
- }
98
- _getKeyPrefixArray(keys) {
99
- return keys.map((key) => this._getKeyPrefix(key));
100
- }
101
- _getKeyUnprefix(key) {
102
- return key.split(':').splice(1).join(':');
103
- }
104
- async getMany(keys, options) {
105
- const keyPrefixed = this._getKeyPrefixArray(keys);
106
- let promise;
107
- if (this.store.getMany !== undefined) {
108
- // todo: Probably wise to check expired ValueData here, if the getMany does not implement this feature itself!
109
- promise = this.store.getMany(keyPrefixed, options);
110
- }
111
- else if (this.isMapWithEntries(this.store)) {
112
- // Handle Map-based stores with prefix matching
113
- promise = this.getFromMapWithPrefix(keyPrefixed);
114
- }
115
- else {
116
- promise = Promise.all(keyPrefixed.map((k) => this.store.get(k, options)));
117
- }
118
- const allValues = Promise.resolve(promise);
119
- const results = [];
120
- return Promise.resolve(allValues)
121
- .then((all) => {
122
- const entries = Array.isArray(all) ? all : [all];
123
- entries.forEach((data, index) => {
124
- let result = typeof data === 'string' ? this.deserialize(data) : !!data && this.opts.compression ? this.deserialize(data) : data;
125
- if (result && typeof result === 'object' && 'expires' in result && typeof result.expires === 'number' && Date.now() > result.expires) {
126
- this.delete(keys[index]);
127
- result = undefined;
128
- }
129
- const final = (options && options.raw ? result : result && typeof result === 'object' && 'value' in result ? result.value : result);
130
- results.push(final);
131
- });
132
- })
133
- .then(() => Promise.all(results));
134
- }
135
- isMapWithEntries(store) {
136
- return store instanceof Map && typeof store.entries === 'function';
137
- }
138
- async getFromMapWithPrefix(prefixes) {
139
- if (!this.isMapWithEntries(this.store)) {
140
- return [];
141
- }
142
- const map = this.store;
143
- return prefixes.flatMap((prefix) => {
144
- const matchedValues = Array.from(map.entries())
145
- .filter(([key]) => key.startsWith(prefix))
146
- .map(([, value]) => value);
147
- return matchedValues.length > 0 ? matchedValues : [undefined];
148
- });
149
- }
150
- async get(key, options) {
151
- const isArray = Array.isArray(key);
152
- return Promise.resolve()
153
- .then(() => (isArray ? this.getMany(this._getKeyPrefixArray(key), options) : this.store.get(this._getKeyPrefix(key))))
154
- .then((data) => (typeof data === 'string' ? this.deserialize(data) : this.opts.compression ? this.deserialize(data) : data))
155
- .then((data) => {
156
- if (data === undefined || data === null) {
157
- return undefined;
158
- }
159
- const rows = Array.isArray(data) ? data : [data];
160
- if (isArray) {
161
- const result = [];
162
- for (let row of rows) {
163
- if (row === undefined || row === null) {
164
- result.push(undefined);
165
- continue;
166
- }
167
- if (this.isExpired(row)) {
168
- this.delete(key).then(() => undefined);
169
- result.push(undefined);
170
- }
171
- else {
172
- result.push(options && options.raw ? row : toValue(row));
173
- }
174
- }
175
- return result;
176
- }
177
- else if (!Array.isArray(data)) {
178
- if (this.isExpired(data)) {
179
- return this.delete(key).then(() => undefined);
180
- }
181
- }
182
- return options && options.raw ? data : Array.isArray(data) ? data.map((d) => toValue(d)) : toValue(data);
183
- });
184
- }
185
- isExpired(data) {
186
- return (typeof data !== 'string' &&
187
- data &&
188
- typeof data === 'object' &&
189
- 'expires' in data &&
190
- typeof data.expires === 'number' &&
191
- Date.now() > data.expires);
192
- }
193
- set(key, value, ttl) {
194
- const keyPrefixed = this._getKeyPrefix(key);
195
- if (typeof ttl === 'undefined') {
196
- ttl = this.opts.ttl;
197
- }
198
- if (ttl === 0) {
199
- ttl = undefined;
200
- }
201
- // @ts-ignore
202
- return Promise.resolve()
203
- .then(() => {
204
- const expires = typeof ttl === 'number' ? Date.now() + ttl : undefined;
205
- if (typeof value === 'symbol') {
206
- this.emit('error', 'symbol cannot be serialized');
207
- }
208
- const input = { value, expires };
209
- return this.serialize(input);
210
- })
211
- .then((value) => this.store.set(keyPrefixed, value, ttl))
212
- .then(() => true);
213
- }
214
- delete(key) {
215
- if (!Array.isArray(key)) {
216
- const keyPrefixed = this._getKeyPrefix(key);
217
- return Promise.resolve().then(() => this.store.delete(keyPrefixed));
218
- }
219
- const keyPrefixed = this._getKeyPrefixArray(key);
220
- if (this.store.deleteMany !== undefined) {
221
- return Promise.resolve().then(() => this.store.deleteMany(keyPrefixed));
222
- }
223
- const promises = [];
224
- for (const key of keyPrefixed) {
225
- promises.push(this.store.delete(key));
226
- }
227
- return Promise.allSettled(promises).then((values) => values.every((x) => x.valueOf() === true));
228
- }
229
- async clear() {
230
- return Promise.resolve().then(() => this.store.clear());
231
- }
232
- has(key) {
233
- const keyPrefixed = this._getKeyPrefix(key);
234
- return Promise.resolve().then(async () => {
235
- if (typeof this.store.has === 'function') {
236
- return this.store.has(keyPrefixed);
237
- }
238
- const value = await this.store.get(keyPrefixed);
239
- return value !== undefined;
240
- });
241
- }
242
- disconnect() {
243
- if (typeof this.store.disconnect === 'function') {
244
- return this.store.disconnect();
245
- }
246
- }
247
- }
248
- const iterableAdapters = ['sqlite', 'postgres', 'mysql', 'mongo', 'redis', 'tiered'];
249
- function toValue(input) {
250
- return input !== null && typeof input === 'object' && 'value' in input ? input.value : input;
251
- }
252
- //# sourceMappingURL=keyv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyv.js","sourceRoot":"","sources":["../../src/keyv/keyv.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from './tiered/index';
2
- export * from './typeorm/index';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store-adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from './tiered/index';
2
- export * from './typeorm/index';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store-adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA"}
@@ -1,29 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import type { Options, Options_ } from './types';
3
- import { KeyvStore, KeyvStoredData } from '../../keyv/keyv-types';
4
- import { IKeyValueStoreAdapter } from '../../key-value-types';
5
- /**
6
- * Tiered keyv store adapter, combining 2 adapters/stores into one
7
- * @alpha
8
- */
9
- export declare class KeyValueTieredStoreAdapter<Value> extends EventEmitter implements KeyvStore<Value>, IKeyValueStoreAdapter<Value> {
10
- opts: Options_;
11
- remote: KeyvStore<Value>;
12
- local: KeyvStore<Value>;
13
- iterationLimit?: string | number;
14
- namespace?: string | undefined;
15
- constructor({ remote, local, ...options }: Options<Value>);
16
- get(key: string | string[], options?: {
17
- raw?: boolean;
18
- }): Promise<KeyvStoredData<Value> | Array<KeyvStoredData<Value>>>;
19
- getMany(keys: string[], options?: {
20
- raw?: boolean;
21
- }): Promise<Array<KeyvStoredData<Value>>>;
22
- set(key: string, value: any, ttl?: number): Promise<any[]>;
23
- clear(): Promise<undefined>;
24
- delete(key: string): Promise<boolean>;
25
- deleteMany(keys: string[]): Promise<boolean>;
26
- has(key: string): Promise<boolean>;
27
- iterator(namespace?: string): AsyncGenerator<any, void, any>;
28
- }
29
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store-adapters/tiered/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAI7D;;;GAGG;AACH,qBAAa,0BAA0B,CAAC,KAAK,CAAE,SAAQ,YAAa,YAAW,SAAS,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC;IAC3H,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACxB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAEhC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;gBAElB,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;IAenD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IA6BvH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAc3F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAKzC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC;IAW3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;CASpE"}
@@ -1,133 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { Keyv } from '../../keyv/keyv';
3
- /**
4
- * Tiered keyv store adapter, combining 2 adapters/stores into one
5
- * @alpha
6
- */
7
- export class KeyValueTieredStoreAdapter extends EventEmitter {
8
- opts;
9
- remote;
10
- local;
11
- iterationLimit;
12
- namespace;
13
- constructor({ remote, local, ...options }) {
14
- super();
15
- this.opts = {
16
- validator: () => true,
17
- dialect: 'tiered',
18
- ...options,
19
- };
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.
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
22
- this.local = (isMap(local) ? new Keyv(local) : local);
23
- this.remote = (isMap(remote) ? new Keyv(remote) : remote);
24
- this.namespace = this.local.namespace;
25
- }
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);
43
- }
44
- }
45
- return remoteResult;
46
- }
47
- return localResult;
48
- }
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;
60
- }
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)));
64
- }
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;
72
- }
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);
80
- }
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);
88
- }
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);
101
- }
102
- else {
103
- const value = await this.remote.get(key);
104
- response = value !== undefined;
105
- }
106
- }
107
- return response;
108
- }
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;
115
- }
116
- }
117
- }
118
- }
119
- function isMap(map) {
120
- if (map instanceof Map) {
121
- return true;
122
- }
123
- else if (map &&
124
- typeof map.clear === 'function' &&
125
- typeof map.delete === 'function' &&
126
- typeof map.get === 'function' &&
127
- typeof map.has === 'function' &&
128
- typeof map.set === 'function') {
129
- return true;
130
- }
131
- return false;
132
- }
133
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store-adapters/tiered/index.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { IKeyValueStoreAdapter } from '../../key-value-types';
2
- export type Options<ValueType> = {
3
- local: IKeyValueStoreAdapter<ValueType> | Map<string, ValueType>;
4
- remote: IKeyValueStoreAdapter<ValueType> | Map<string, ValueType>;
5
- localOnly?: boolean;
6
- iterationLimit?: number | string;
7
- };
8
- export type Options_ = {
9
- validator: (value: any, key: string) => boolean;
10
- dialect: string;
11
- iterationLimit?: number | string;
12
- localOnly?: boolean;
13
- };
14
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/store-adapters/tiered/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,MAAM,OAAO,CAAC,SAAS,IAAI;IAC/B,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAChE,MAAM,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACjE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACjC,CAAA;AAGD,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/store-adapters/tiered/types.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import { BaseEntity } from 'typeorm';
2
- /**
3
- *
4
- * @beta This API may change without a BREAKING CHANGE notice.
5
- */
6
- export declare class KeyValueStoreEntity extends BaseEntity {
7
- key: string;
8
- data: string;
9
- expires?: number;
10
- }
11
- //# sourceMappingURL=keyValueStoreEntity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyValueStoreEntity.d.ts","sourceRoot":"","sources":["../../../../src/store-adapters/typeorm/entities/keyValueStoreEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiC,MAAM,SAAS,CAAA;AAEnE;;;GAGG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IAGjD,GAAG,EAAE,MAAM,CAAA;IAMX,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
@@ -1,40 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { BaseEntity, Column, Entity, PrimaryColumn } from 'typeorm';
11
- /**
12
- *
13
- * @beta This API may change without a BREAKING CHANGE notice.
14
- */
15
- let KeyValueStoreEntity = class KeyValueStoreEntity extends BaseEntity {
16
- // @ts-ignore
17
- key;
18
- // @ts-ignore
19
- data;
20
- expires;
21
- };
22
- __decorate([
23
- PrimaryColumn()
24
- // @ts-ignore
25
- ,
26
- __metadata("design:type", String)
27
- ], KeyValueStoreEntity.prototype, "key", void 0);
28
- __decorate([
29
- Column({
30
- type: 'text',
31
- })
32
- // @ts-ignore
33
- ,
34
- __metadata("design:type", String)
35
- ], KeyValueStoreEntity.prototype, "data", void 0);
36
- KeyValueStoreEntity = __decorate([
37
- Entity('keyvaluestore')
38
- ], KeyValueStoreEntity);
39
- export { KeyValueStoreEntity };
40
- //# sourceMappingURL=keyValueStoreEntity.js.map
@@ -1 +0,0 @@
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,39 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { OrPromise } from '@veramo/utils';
3
- import { DataSource } from 'typeorm';
4
- import { KeyValueTypeORMOptions, Options_ } from './types';
5
- import { KeyvStore, KeyvStoredData } from '../../keyv/keyv-types';
6
- import { IKeyValueStoreAdapter } from '../../key-value-types';
7
- export { KeyValueTypeORMOptions } from './types';
8
- export { KeyValueStoreEntity } from './entities/keyValueStoreEntity';
9
- export { kvStoreMigrations } from './migrations';
10
- /**
11
- * TypeORM based key value store adapter
12
- * @beta
13
- */
14
- export declare class KeyValueTypeORMStoreAdapter extends EventEmitter implements KeyvStore<string>, IKeyValueStoreAdapter<string> {
15
- private readonly dbConnection;
16
- readonly namespace: string;
17
- opts: Options_<string>;
18
- constructor(options: KeyValueTypeORMOptions);
19
- get(key: string | string[], options?: {
20
- raw?: boolean;
21
- }): Promise<KeyvStoredData<string> | Array<KeyvStoredData<string>>>;
22
- getMany(keys: string[], options?: {
23
- raw?: boolean;
24
- }): Promise<Array<KeyvStoredData<string>>>;
25
- set(key: string, value: string, ttl?: number): Promise<KeyvStoredData<string>>;
26
- delete(key: string | string[]): Promise<boolean>;
27
- deleteMany(keys: string[]): Promise<boolean>;
28
- clear(): Promise<void>;
29
- has(key: string): Promise<boolean>;
30
- disconnect(): Promise<void>;
31
- }
32
- /**
33
- * Ensures that the provided DataSource is connected.
34
- *
35
- * @param dbConnection - a TypeORM DataSource or a Promise that resolves to a DataSource
36
- * @internal
37
- */
38
- export declare function _getConnectedDb(dbConnection: OrPromise<DataSource>): Promise<DataSource>;
39
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store-adapters/typeorm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAY,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAG7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,YAAa,YAAW,SAAS,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC;IACvH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAEV,OAAO,EAAE,sBAAsB;IAarC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAWzH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAkB5F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAU9E,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAShD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIlC;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAQ9F"}