keyv 6.0.0-alpha.2 → 6.0.0-beta.1

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/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "keyv",
3
- "version": "6.0.0-alpha.2",
3
+ "version": "6.0.0-beta.1",
4
4
  "description": "Simple key-value storage with support for multiple backends",
5
5
  "type": "module",
6
- "main": "dist/index.js",
7
- "module": "dist/index.js",
8
- "types": "dist/index.d.ts",
6
+ "main": "./dist/index.mjs",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.mts",
9
9
  "exports": {
10
10
  ".": {
11
11
  "require": {
@@ -13,8 +13,8 @@
13
13
  "default": "./dist/index.cjs"
14
14
  },
15
15
  "import": {
16
- "types": "./dist/index.d.ts",
17
- "default": "./dist/index.js"
16
+ "types": "./dist/index.d.mts",
17
+ "default": "./dist/index.mjs"
18
18
  }
19
19
  }
20
20
  },
@@ -50,12 +50,15 @@
50
50
  },
51
51
  "homepage": "https://github.com/jaredwray/keyv",
52
52
  "dependencies": {
53
- "@keyv/serialize": "^6.0.0-alpha.2"
53
+ "hookified": "^2.0.1"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@biomejs/biome": "^2.3.13",
57
57
  "@faker-js/faker": "^10.2.0",
58
58
  "@vitest/coverage-v8": "^4.0.18",
59
+ "happy-dom": "^20.8.7",
60
+ "keyv-anyredis": "^3.3.0",
61
+ "keyv-file": "^5.3.3",
59
62
  "lru.min": "^1.1.1",
60
63
  "quick-lru": "^7.0.0",
61
64
  "rimraf": "^6.1.2",
@@ -68,10 +71,10 @@
68
71
  },
69
72
  "files": [
70
73
  "dist",
71
- "LISCENCE"
74
+ "LICENSE"
72
75
  ],
73
76
  "scripts": {
74
- "build": "rimraf ./dist && tsup src/index.ts --format cjs,esm --dts --clean",
77
+ "build": "tsdown",
75
78
  "lint": "biome check --write --error-on-warnings",
76
79
  "lint:ci": "biome check --error-on-warnings",
77
80
  "test": "pnpm lint && vitest run --coverage",
package/dist/index.d.ts DELETED
@@ -1,386 +0,0 @@
1
- type EventListener = (...arguments_: any[]) => void;
2
- declare class EventManager {
3
- _eventListeners: Map<string, EventListener[]>;
4
- _maxListeners: number;
5
- constructor();
6
- maxListeners(): number;
7
- addListener(event: string, listener: EventListener): void;
8
- on(event: string, listener: EventListener): this;
9
- removeListener(event: string, listener: EventListener): void;
10
- off(event: string, listener: EventListener): void;
11
- once(event: string, listener: EventListener): void;
12
- emit(event: string, ...arguments_: any[]): void;
13
- listeners(event: string): EventListener[];
14
- removeAllListeners(event?: string): void;
15
- setMaxListeners(n: number): void;
16
- }
17
-
18
- type HookHandler = (...arguments_: any[]) => void;
19
- declare class HooksManager extends EventManager {
20
- _hookHandlers: Map<string, HookHandler[]>;
21
- constructor();
22
- addHandler(event: string, handler: HookHandler): void;
23
- removeHandler(event: string, handler: HookHandler): void;
24
- trigger(event: string, data: any): void;
25
- get handlers(): Map<string, HookHandler[]>;
26
- }
27
-
28
- declare class StatsManager extends EventManager {
29
- enabled: boolean;
30
- hits: number;
31
- misses: number;
32
- sets: number;
33
- deletes: number;
34
- errors: number;
35
- constructor(enabled?: boolean);
36
- hit(): void;
37
- miss(): void;
38
- set(): void;
39
- delete(): void;
40
- hitsOrMisses<T>(array: Array<T | undefined>): void;
41
- reset(): void;
42
- }
43
-
44
- type DeserializedData<Value> = {
45
- value?: Value;
46
- expires?: number | undefined;
47
- };
48
- type CompressionAdapter = {
49
- compress(value: any, options?: any): Promise<any>;
50
- decompress(value: any, options?: any): Promise<any>;
51
- serialize<Value>(data: DeserializedData<Value>): Promise<string> | string;
52
- deserialize<Value>(data: string): Promise<DeserializedData<Value> | undefined> | DeserializedData<Value> | undefined;
53
- };
54
- type Serialize = <Value>(data: DeserializedData<Value>) => Promise<string> | string;
55
- type Deserialize = <Value>(data: string) => Promise<DeserializedData<Value> | undefined> | DeserializedData<Value> | undefined;
56
- declare enum KeyvHooks {
57
- PRE_SET = "preSet",
58
- POST_SET = "postSet",
59
- PRE_GET = "preGet",
60
- POST_GET = "postGet",
61
- PRE_GET_MANY = "preGetMany",
62
- POST_GET_MANY = "postGetMany",
63
- PRE_GET_RAW = "preGetRaw",
64
- POST_GET_RAW = "postGetRaw",
65
- PRE_GET_MANY_RAW = "preGetManyRaw",
66
- POST_GET_MANY_RAW = "postGetManyRaw",
67
- PRE_DELETE = "preDelete",
68
- POST_DELETE = "postDelete"
69
- }
70
- type KeyvEntry = {
71
- /**
72
- * Key to set.
73
- */
74
- key: string;
75
- /**
76
- * Value to set.
77
- */
78
- value: any;
79
- /**
80
- * Time to live in milliseconds.
81
- */
82
- ttl?: number;
83
- };
84
- type StoredDataNoRaw<Value> = Value | undefined;
85
- type StoredDataRaw<Value> = DeserializedData<Value> | undefined;
86
- type StoredData<Value> = StoredDataNoRaw<Value> | StoredDataRaw<Value>;
87
- type IEventEmitter = {
88
- on(event: string, listener: (...arguments_: any[]) => void): IEventEmitter;
89
- };
90
- type KeyvStoreAdapter = {
91
- opts: any;
92
- namespace?: string | undefined;
93
- get<Value>(key: string): Promise<StoredData<Value> | undefined>;
94
- set(key: string, value: any, ttl?: number): any;
95
- setMany?(values: Array<{
96
- key: string;
97
- value: any;
98
- ttl?: number;
99
- }>): Promise<void>;
100
- delete(key: string): Promise<boolean>;
101
- clear(): Promise<void>;
102
- has?(key: string): Promise<boolean>;
103
- hasMany?(keys: string[]): Promise<boolean[]>;
104
- getMany?<Value>(keys: string[]): Promise<Array<StoredData<Value | undefined>>>;
105
- disconnect?(): Promise<void>;
106
- deleteMany?(key: string[]): Promise<boolean>;
107
- iterator?<Value>(namespace?: string): AsyncGenerator<Array<string | Awaited<Value> | undefined>, void>;
108
- } & IEventEmitter;
109
- type KeyvOptions = {
110
- /**
111
- * Emit errors
112
- * @default true
113
- */
114
- emitErrors?: boolean;
115
- /**
116
- * Namespace for the current instance.
117
- * @default 'keyv'
118
- */
119
- namespace?: string;
120
- /**
121
- * A custom serialization function.
122
- * @default defaultSerialize using JSON.stringify
123
- */
124
- serialize?: Serialize;
125
- /**
126
- * A custom deserialization function.
127
- * @default defaultDeserialize using JSON.parse
128
- */
129
- deserialize?: Deserialize;
130
- /**
131
- * The storage adapter instance to be used by Keyv.
132
- * @default new Map() - in-memory store
133
- */
134
- store?: KeyvStoreAdapter | Map<any, any> | any;
135
- /**
136
- * Default TTL in milliseconds. Can be overridden by specifying a TTL on `.set()`.
137
- * @default undefined
138
- */
139
- ttl?: number;
140
- /**
141
- * Enable compression option
142
- * @default false
143
- */
144
- compression?: CompressionAdapter | any;
145
- /**
146
- * Enable or disable statistics (default is false)
147
- * @default false
148
- */
149
- stats?: boolean;
150
- /**
151
- * Enable or disable key prefixing (default is true)
152
- * @default true
153
- */
154
- useKeyPrefix?: boolean;
155
- /**
156
- * Will enable throwing errors on methods in addition to emitting them.
157
- * @default false
158
- */
159
- throwOnErrors?: boolean;
160
- };
161
- type IteratorFunction = (argument: any) => AsyncGenerator<any, void>;
162
- declare class Keyv<GenericValue = any> extends EventManager {
163
- iterator?: IteratorFunction;
164
- hooks: HooksManager;
165
- stats: StatsManager;
166
- /**
167
- * Time to live in milliseconds
168
- */
169
- private _ttl?;
170
- /**
171
- * Namespace
172
- */
173
- private _namespace?;
174
- /**
175
- * Store
176
- */
177
- private _store;
178
- private _serialize;
179
- private _deserialize;
180
- private _compression;
181
- private _useKeyPrefix;
182
- private _throwOnErrors;
183
- private _emitErrors;
184
- /**
185
- * Keyv Constructor
186
- * @param {KeyvStoreAdapter | KeyvOptions | Map<any, any>} store to be provided or just the options
187
- * @param {Omit<KeyvOptions, 'store'>} [options] if you provide the store you can then provide the Keyv Options
188
- */
189
- constructor(store?: KeyvStoreAdapter | KeyvOptions | Map<any, any>, options?: Omit<KeyvOptions, "store">);
190
- /**
191
- * Keyv Constructor
192
- * @param {KeyvOptions} options to be provided
193
- */
194
- constructor(options?: KeyvOptions);
195
- /**
196
- * Get the current store
197
- */
198
- get store(): KeyvStoreAdapter | Map<any, any> | any;
199
- /**
200
- * Set the current store. This will also set the namespace, event error handler, and generate the iterator. If the store is not valid it will throw an error.
201
- * @param {KeyvStoreAdapter | Map<any, any> | any} store the store to set
202
- */
203
- set store(store: KeyvStoreAdapter | Map<any, any> | any);
204
- /**
205
- * Get the current compression function
206
- * @returns {CompressionAdapter} The current compression function
207
- */
208
- get compression(): CompressionAdapter | undefined;
209
- /**
210
- * Set the current compression function
211
- * @param {CompressionAdapter} compress The compression function to set
212
- */
213
- set compression(compress: CompressionAdapter | undefined);
214
- /**
215
- * Get the current namespace.
216
- * @returns {string | undefined} The current namespace.
217
- */
218
- get namespace(): string | undefined;
219
- /**
220
- * Set the current namespace.
221
- * @param {string | undefined} namespace The namespace to set.
222
- */
223
- set namespace(namespace: string | undefined);
224
- /**
225
- * Get the current TTL.
226
- * @returns {number} The current TTL in milliseconds.
227
- */
228
- get ttl(): number | undefined;
229
- /**
230
- * Set the current TTL.
231
- * @param {number} ttl The TTL to set in milliseconds.
232
- */
233
- set ttl(ttl: number | undefined);
234
- /**
235
- * Get the current serialize function.
236
- * @returns {Serialize} The current serialize function.
237
- */
238
- get serialize(): Serialize | undefined;
239
- /**
240
- * Set the current serialize function.
241
- * @param {Serialize} serialize The serialize function to set.
242
- */
243
- set serialize(serialize: Serialize | undefined);
244
- /**
245
- * Get the current deserialize function.
246
- * @returns {Deserialize} The current deserialize function.
247
- */
248
- get deserialize(): Deserialize | undefined;
249
- /**
250
- * Set the current deserialize function.
251
- * @param {Deserialize} deserialize The deserialize function to set.
252
- */
253
- set deserialize(deserialize: Deserialize | undefined);
254
- /**
255
- * Get the current useKeyPrefix value. This will enable or disable key prefixing.
256
- * @returns {boolean} The current useKeyPrefix value.
257
- * @default true
258
- */
259
- get useKeyPrefix(): boolean;
260
- /**
261
- * Set the current useKeyPrefix value. This will enable or disable key prefixing.
262
- * @param {boolean} value The useKeyPrefix value to set.
263
- */
264
- set useKeyPrefix(value: boolean);
265
- /**
266
- * Get the current throwErrors value. This will enable or disable throwing errors on methods in addition to emitting them.
267
- * @return {boolean} The current throwOnErrors value.
268
- */
269
- get throwOnErrors(): boolean;
270
- /**
271
- * Set the current throwOnErrors value. This will enable or disable throwing errors on methods in addition to emitting them.
272
- * @param {boolean} value The throwOnErrors value to set.
273
- */
274
- set throwOnErrors(value: boolean);
275
- /**
276
- * Get the current emitErrors value. This will enable or disable emitting errors on methods.
277
- * @return {boolean} The current emitErrors value.
278
- * @default true
279
- */
280
- get emitErrors(): boolean;
281
- /**
282
- * Set the current emitErrors value. This will enable or disable emitting errors on methods.
283
- * @param {boolean} value The emitErrors value to set.
284
- */
285
- set emitErrors(value: boolean);
286
- generateIterator(iterator: IteratorFunction): IteratorFunction;
287
- _checkIterableAdapter(): boolean;
288
- _getKeyPrefix(key: string): string;
289
- _getKeyPrefixArray(keys: string[]): string[];
290
- _getKeyUnprefix(key: string): string;
291
- _isValidStorageAdapter(store: KeyvStoreAdapter | any): boolean;
292
- /**
293
- * Get the Value of a Key
294
- * @param {string | string[]} key passing in a single key or multiple as an array
295
- * @param {{raw: boolean} | undefined} options can pass in to return the raw value by setting { raw: true }
296
- */
297
- get<Value = GenericValue>(key: string, options?: {
298
- raw: false;
299
- }): Promise<StoredDataNoRaw<Value>>;
300
- get<Value = GenericValue>(key: string, options?: {
301
- raw: true;
302
- }): Promise<StoredDataRaw<Value>>;
303
- get<Value = GenericValue>(key: string[], options?: {
304
- raw: false;
305
- }): Promise<Array<StoredDataNoRaw<Value>>>;
306
- get<Value = GenericValue>(key: string[], options?: {
307
- raw: true;
308
- }): Promise<Array<StoredDataRaw<Value>>>;
309
- /**
310
- * Get many values of keys
311
- * @param {string[]} keys passing in a single key or multiple as an array
312
- * @param {{raw: boolean} | undefined} options can pass in to return the raw value by setting { raw: true }
313
- */
314
- getMany<Value = GenericValue>(keys: string[], options?: {
315
- raw: false;
316
- }): Promise<Array<StoredDataNoRaw<Value>>>;
317
- getMany<Value = GenericValue>(keys: string[], options?: {
318
- raw: true;
319
- }): Promise<Array<StoredDataRaw<Value>>>;
320
- /**
321
- * Get the raw value of a key. This is the replacement for setting raw to true in the get() method.
322
- * @param {string} key the key to get
323
- * @returns {Promise<StoredDataRaw<Value> | undefined>} will return a StoredDataRaw<Value> or undefined if the key does not exist or is expired.
324
- */
325
- getRaw<Value = GenericValue>(key: string): Promise<StoredDataRaw<Value> | undefined>;
326
- /**
327
- * Get the raw values of many keys. This is the replacement for setting raw to true in the getMany() method.
328
- * @param {string[]} keys the keys to get
329
- * @returns {Promise<Array<StoredDataRaw<Value>>>} will return an array of StoredDataRaw<Value> or undefined if the key does not exist or is expired.
330
- */
331
- getManyRaw<Value = GenericValue>(keys: string[]): Promise<Array<StoredDataRaw<Value>>>;
332
- /**
333
- * Set an item to the store
334
- * @param {string | Array<KeyvEntry>} key the key to use. If you pass in an array of KeyvEntry it will set many items
335
- * @param {Value} value the value of the key
336
- * @param {number} [ttl] time to live in milliseconds
337
- * @returns {boolean} if it sets then it will return a true. On failure will return false.
338
- */
339
- set<Value = GenericValue>(key: string, value: Value, ttl?: number): Promise<boolean>;
340
- /**
341
- * Set many items to the store
342
- * @param {Array<KeyvEntry>} entries the entries to set
343
- * @returns {boolean[]} will return an array of booleans if it sets then it will return a true. On failure will return false.
344
- */
345
- setMany<Value = GenericValue>(entries: KeyvEntry[]): Promise<boolean[]>;
346
- /**
347
- * Delete an Entry
348
- * @param {string | string[]} key the key to be deleted. if an array it will delete many items
349
- * @returns {boolean} will return true if item or items are deleted. false if there is an error
350
- */
351
- delete(key: string | string[]): Promise<boolean>;
352
- /**
353
- * Delete many items from the store
354
- * @param {string[]} keys the keys to be deleted
355
- * @returns {boolean} will return true if item or items are deleted. false if there is an error
356
- */
357
- deleteMany(keys: string[]): Promise<boolean>;
358
- /**
359
- * Clear the store
360
- * @returns {void}
361
- */
362
- clear(): Promise<void>;
363
- /**
364
- * Has a key
365
- * @param {string} key the key to check
366
- * @returns {boolean} will return true if the key exists
367
- */
368
- has(key: string[]): Promise<boolean[]>;
369
- has(key: string): Promise<boolean>;
370
- /**
371
- * Check if many keys exist
372
- * @param {string[]} keys the keys to check
373
- * @returns {boolean[]} will return an array of booleans if the keys exist
374
- */
375
- hasMany(keys: string[]): Promise<boolean[]>;
376
- /**
377
- * Will disconnect the store. This is only available if the store has a disconnect method
378
- * @returns {Promise<void>}
379
- */
380
- disconnect(): Promise<void>;
381
- emit(event: string, ...arguments_: any[]): void;
382
- serializeData<T>(data: DeserializedData<T>): Promise<string | DeserializedData<T>>;
383
- deserializeData<T>(data: string | DeserializedData<T>): Promise<DeserializedData<T> | undefined>;
384
- }
385
-
386
- export { type CompressionAdapter, type Deserialize, type DeserializedData, type IEventEmitter, Keyv, type KeyvEntry, KeyvHooks, type KeyvOptions, type KeyvStoreAdapter, type Serialize, type StoredData, type StoredDataNoRaw, type StoredDataRaw, Keyv as default };