@kikiutils/shared 9.2.0 → 9.3.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/README.md +34 -17
- package/dist/env.cjs +10 -13
- package/dist/env.cjs.map +1 -1
- package/dist/env.d.ts +9 -12
- package/dist/env.d.ts.map +1 -1
- package/dist/env.mjs +10 -13
- package/dist/env.mjs.map +1 -1
- package/dist/storage/enhanced/local/core.cjs +103 -0
- package/dist/storage/enhanced/local/core.cjs.map +1 -0
- package/dist/storage/enhanced/local/core.d.ts +56 -0
- package/dist/storage/enhanced/local/core.d.ts.map +1 -0
- package/dist/storage/enhanced/local/core.mjs +101 -0
- package/dist/storage/enhanced/local/core.mjs.map +1 -0
- package/dist/storage/enhanced/local/index.cjs +10 -0
- package/dist/storage/enhanced/local/index.cjs.map +1 -0
- package/dist/storage/enhanced/local/index.d.ts +3 -0
- package/dist/storage/enhanced/local/index.d.ts.map +1 -0
- package/dist/storage/enhanced/local/index.mjs +3 -0
- package/dist/storage/enhanced/local/index.mjs.map +1 -0
- package/dist/storage/enhanced/local/keyed-store.cjs +39 -0
- package/dist/storage/enhanced/local/keyed-store.cjs.map +1 -0
- package/dist/storage/enhanced/local/keyed-store.d.ts +31 -0
- package/dist/storage/enhanced/local/keyed-store.d.ts.map +1 -0
- package/dist/storage/enhanced/local/keyed-store.mjs +37 -0
- package/dist/storage/enhanced/local/keyed-store.mjs.map +1 -0
- package/dist/storage/enhanced/redis/core.cjs +142 -0
- package/dist/storage/enhanced/redis/core.cjs.map +1 -0
- package/dist/storage/enhanced/redis/core.d.ts +78 -0
- package/dist/storage/enhanced/redis/core.d.ts.map +1 -0
- package/dist/storage/enhanced/redis/core.mjs +140 -0
- package/dist/storage/enhanced/redis/core.mjs.map +1 -0
- package/dist/storage/enhanced/redis/index.cjs +10 -0
- package/dist/storage/enhanced/redis/index.cjs.map +1 -0
- package/dist/storage/enhanced/redis/index.d.ts +3 -0
- package/dist/storage/enhanced/redis/index.d.ts.map +1 -0
- package/dist/storage/enhanced/redis/index.mjs +3 -0
- package/dist/storage/enhanced/redis/index.mjs.map +1 -0
- package/dist/storage/enhanced/redis/keyed-store.cjs +44 -0
- package/dist/storage/enhanced/redis/keyed-store.cjs.map +1 -0
- package/dist/storage/enhanced/redis/keyed-store.d.ts +37 -0
- package/dist/storage/enhanced/redis/keyed-store.d.ts.map +1 -0
- package/dist/storage/enhanced/redis/keyed-store.mjs +42 -0
- package/dist/storage/enhanced/redis/keyed-store.mjs.map +1 -0
- package/dist/storage/lru/keyed-store.cjs +49 -0
- package/dist/storage/lru/keyed-store.cjs.map +1 -0
- package/dist/storage/lru/keyed-store.d.ts +40 -0
- package/dist/storage/lru/keyed-store.d.ts.map +1 -0
- package/dist/storage/lru/keyed-store.mjs +47 -0
- package/dist/storage/lru/keyed-store.mjs.map +1 -0
- package/package.json +33 -19
- package/src/env.ts +10 -13
- package/src/storage/enhanced/local/core.ts +104 -0
- package/src/storage/enhanced/local/index.ts +2 -0
- package/src/storage/enhanced/local/keyed-store.ts +34 -0
- package/src/storage/enhanced/redis/core.ts +149 -0
- package/src/storage/enhanced/redis/index.ts +2 -0
- package/src/storage/enhanced/redis/keyed-store.ts +41 -0
- package/src/storage/lru/keyed-store.ts +48 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { LRUCache } from 'lru-cache';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a reusable, type-safe keyed store wrapper for an LRUCache instance.
|
|
5
|
+
*
|
|
6
|
+
* This utility allows structured access to cache entries using a dynamic key-generation function.
|
|
7
|
+
*
|
|
8
|
+
* @template D - The specific value type exposed by this store (must extend `V`).
|
|
9
|
+
* @template K - The type of keys used in the LRU cache (default: string).
|
|
10
|
+
* @template V - The type of values stored in the LRU cache.
|
|
11
|
+
* @template FC - The value used by `lru-cache` fetch context (if any).
|
|
12
|
+
*
|
|
13
|
+
* @param {LRUCache<K, V, FC>} lruInstance - An instance of `lru-cache`.
|
|
14
|
+
*
|
|
15
|
+
* @returns A factory that accepts a key generator and returns a scoped, type-safe LRU-based store.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const lruCache = new LRUCache<string, { id: number }>();
|
|
20
|
+
* const userStore = createKeyedLruStore<User>(lruCache)((id: number) => `user:${id}`);
|
|
21
|
+
* userStore.setItem({ id: 1 }, 1);
|
|
22
|
+
* const user = userStore.getItem(1);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
// eslint-disable-next-line ts/no-empty-object-type
|
|
26
|
+
export function createKeyedLruStore<D extends V, K extends {}, V extends {}, FC = unknown>(
|
|
27
|
+
lruInstance: LRUCache<K, V, FC>,
|
|
28
|
+
) {
|
|
29
|
+
return <P extends any[]>(getKeyFunction: (...args: P) => K) => Object.freeze({
|
|
30
|
+
/**
|
|
31
|
+
* Return a value from the cache. Will update the recency of the cache entry found.
|
|
32
|
+
*
|
|
33
|
+
* If the key is not found, returns `null`.
|
|
34
|
+
*/
|
|
35
|
+
getItem(...args: P) {
|
|
36
|
+
const rawValue = lruInstance.get(getKeyFunction(...args));
|
|
37
|
+
return rawValue ?? null;
|
|
38
|
+
},
|
|
39
|
+
getItemTtl: (...args: P) => lruInstance.getRemainingTTL(getKeyFunction(...args)),
|
|
40
|
+
hasItem: (...args: P) => lruInstance.has(getKeyFunction(...args)),
|
|
41
|
+
removeItem: (...args: P) => lruInstance.delete(getKeyFunction(...args)),
|
|
42
|
+
/**
|
|
43
|
+
* Resolves the full cache key from the given arguments.
|
|
44
|
+
*/
|
|
45
|
+
resolveKey: (...args: P) => getKeyFunction(...args),
|
|
46
|
+
setItem: (value: D, ...args: P) => lruInstance.set(getKeyFunction(...args), value),
|
|
47
|
+
});
|
|
48
|
+
}
|