@warlock.js/cache 4.0.174 → 4.1.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 +85 -0
- package/cjs/index.cjs +4088 -0
- package/cjs/index.cjs.map +1 -0
- package/esm/cache-manager.d.mts +314 -0
- package/esm/cache-manager.d.mts.map +1 -0
- package/esm/cache-manager.mjs +486 -0
- package/esm/cache-manager.mjs.map +1 -0
- package/esm/cached/auto-key.d.mts +25 -0
- package/esm/cached/auto-key.d.mts.map +1 -0
- package/esm/cached/auto-key.mjs +55 -0
- package/esm/cached/auto-key.mjs.map +1 -0
- package/esm/cached/cached.d.mts +54 -0
- package/esm/cached/cached.d.mts.map +1 -0
- package/esm/cached/cached.mjs +25 -0
- package/esm/cached/cached.mjs.map +1 -0
- package/esm/cached/index.d.mts +3 -0
- package/esm/cached/index.mjs +5 -0
- package/esm/cached/normalize-args.d.mts +51 -0
- package/esm/cached/normalize-args.d.mts.map +1 -0
- package/esm/cached/normalize-args.mjs +26 -0
- package/esm/cached/normalize-args.mjs.map +1 -0
- package/esm/drivers/base-cache-driver.d.mts +322 -0
- package/esm/drivers/base-cache-driver.d.mts.map +1 -0
- package/esm/drivers/base-cache-driver.mjs +522 -0
- package/esm/drivers/base-cache-driver.mjs.map +1 -0
- package/esm/drivers/file-cache-driver.d.mts +68 -0
- package/esm/drivers/file-cache-driver.d.mts.map +1 -0
- package/esm/drivers/file-cache-driver.mjs +174 -0
- package/esm/drivers/file-cache-driver.mjs.map +1 -0
- package/esm/drivers/index.d.mts +9 -0
- package/esm/drivers/index.mjs +11 -0
- package/esm/drivers/lru-memory-cache-driver.d.mts +136 -0
- package/esm/drivers/lru-memory-cache-driver.d.mts.map +1 -0
- package/esm/drivers/lru-memory-cache-driver.mjs +317 -0
- package/esm/drivers/lru-memory-cache-driver.mjs.map +1 -0
- package/esm/drivers/memory-cache-driver.d.mts +112 -0
- package/esm/drivers/memory-cache-driver.d.mts.map +1 -0
- package/esm/drivers/memory-cache-driver.mjs +241 -0
- package/esm/drivers/memory-cache-driver.mjs.map +1 -0
- package/esm/drivers/memory-extended-cache-driver.d.mts +17 -0
- package/esm/drivers/memory-extended-cache-driver.d.mts.map +1 -0
- package/esm/drivers/memory-extended-cache-driver.mjs +34 -0
- package/esm/drivers/memory-extended-cache-driver.mjs.map +1 -0
- package/esm/drivers/mock-cache-driver.d.mts +137 -0
- package/esm/drivers/mock-cache-driver.d.mts.map +1 -0
- package/esm/drivers/mock-cache-driver.mjs +226 -0
- package/esm/drivers/mock-cache-driver.mjs.map +1 -0
- package/esm/drivers/null-cache-driver.d.mts +69 -0
- package/esm/drivers/null-cache-driver.d.mts.map +1 -0
- package/esm/drivers/null-cache-driver.mjs +92 -0
- package/esm/drivers/null-cache-driver.mjs.map +1 -0
- package/esm/drivers/pg-cache-driver.d.mts +148 -0
- package/esm/drivers/pg-cache-driver.d.mts.map +1 -0
- package/esm/drivers/pg-cache-driver.mjs +437 -0
- package/esm/drivers/pg-cache-driver.mjs.map +1 -0
- package/esm/drivers/redis-cache-driver.d.mts +86 -0
- package/esm/drivers/redis-cache-driver.d.mts.map +1 -0
- package/esm/drivers/redis-cache-driver.mjs +312 -0
- package/esm/drivers/redis-cache-driver.mjs.map +1 -0
- package/esm/index.d.mts +21 -0
- package/esm/index.mjs +24 -0
- package/esm/list/index.d.mts +1 -0
- package/esm/list/memory-cache-list.d.mts +77 -0
- package/esm/list/memory-cache-list.d.mts.map +1 -0
- package/esm/list/memory-cache-list.mjs +119 -0
- package/esm/list/memory-cache-list.mjs.map +1 -0
- package/esm/metrics.d.mts +118 -0
- package/esm/metrics.d.mts.map +1 -0
- package/esm/metrics.mjs +197 -0
- package/esm/metrics.mjs.map +1 -0
- package/esm/scoped-cache.d.mts +205 -0
- package/esm/scoped-cache.d.mts.map +1 -0
- package/esm/scoped-cache.mjs +274 -0
- package/esm/scoped-cache.mjs.map +1 -0
- package/esm/tagged-cache.d.mts +89 -0
- package/esm/tagged-cache.d.mts.map +1 -0
- package/esm/tagged-cache.mjs +147 -0
- package/esm/tagged-cache.mjs.map +1 -0
- package/esm/tagged-scoped-cache.d.mts +111 -0
- package/esm/tagged-scoped-cache.d.mts.map +1 -0
- package/esm/tagged-scoped-cache.mjs +142 -0
- package/esm/tagged-scoped-cache.mjs.map +1 -0
- package/esm/types.d.mts +1067 -0
- package/esm/types.d.mts.map +1 -0
- package/esm/types.mjs +62 -0
- package/esm/types.mjs.map +1 -0
- package/esm/utils.d.mts +161 -0
- package/esm/utils.d.mts.map +1 -0
- package/esm/utils.mjs +222 -0
- package/esm/utils.mjs.map +1 -0
- package/llms-full.txt +2071 -0
- package/llms.txt +28 -0
- package/package.json +53 -39
- package/skills/apply-cache-patterns/SKILL.md +97 -0
- package/skills/cache-basics/SKILL.md +121 -0
- package/skills/configure-pg-cache/SKILL.md +115 -0
- package/skills/configure-set-options/SKILL.md +96 -0
- package/skills/handle-cache-errors/SKILL.md +91 -0
- package/skills/observe-cache/SKILL.md +103 -0
- package/skills/overview/SKILL.md +69 -0
- package/skills/pick-cache-driver/SKILL.md +115 -0
- package/skills/test-cache-code/SKILL.md +219 -0
- package/skills/use-cache-atomic/SKILL.md +67 -0
- package/skills/use-cache-bulk/SKILL.md +57 -0
- package/skills/use-cache-list/SKILL.md +85 -0
- package/skills/use-cache-lock/SKILL.md +104 -0
- package/skills/use-cache-namespace/SKILL.md +88 -0
- package/skills/use-cache-similarity/SKILL.md +94 -0
- package/skills/use-cache-tags/SKILL.md +85 -0
- package/skills/use-cache-update-merge/SKILL.md +84 -0
- package/skills/use-cache-utils/SKILL.md +89 -0
- package/skills/use-cached-hof/SKILL.md +102 -0
- package/skills/use-swr/SKILL.md +104 -0
- package/cjs/cache-manager.d.ts +0 -163
- package/cjs/cache-manager.d.ts.map +0 -1
- package/cjs/cache-manager.js +0 -322
- package/cjs/cache-manager.js.map +0 -1
- package/cjs/drivers/base-cache-driver.d.ts +0 -152
- package/cjs/drivers/base-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/base-cache-driver.js +0 -321
- package/cjs/drivers/base-cache-driver.js.map +0 -1
- package/cjs/drivers/file-cache-driver.d.ts +0 -45
- package/cjs/drivers/file-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/file-cache-driver.js +0 -133
- package/cjs/drivers/file-cache-driver.js.map +0 -1
- package/cjs/drivers/index.d.ts +0 -8
- package/cjs/drivers/index.d.ts.map +0 -1
- package/cjs/drivers/lru-memory-cache-driver.d.ts +0 -98
- package/cjs/drivers/lru-memory-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/lru-memory-cache-driver.js +0 -252
- package/cjs/drivers/lru-memory-cache-driver.js.map +0 -1
- package/cjs/drivers/memory-cache-driver.d.ts +0 -82
- package/cjs/drivers/memory-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/memory-cache-driver.js +0 -218
- package/cjs/drivers/memory-cache-driver.js.map +0 -1
- package/cjs/drivers/memory-extended-cache-driver.d.ts +0 -13
- package/cjs/drivers/memory-extended-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/memory-extended-cache-driver.js +0 -25
- package/cjs/drivers/memory-extended-cache-driver.js.map +0 -1
- package/cjs/drivers/null-cache-driver.d.ts +0 -58
- package/cjs/drivers/null-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/null-cache-driver.js +0 -84
- package/cjs/drivers/null-cache-driver.js.map +0 -1
- package/cjs/drivers/redis-cache-driver.d.ts +0 -57
- package/cjs/drivers/redis-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/redis-cache-driver.js +0 -263
- package/cjs/drivers/redis-cache-driver.js.map +0 -1
- package/cjs/index.d.ts +0 -6
- package/cjs/index.d.ts.map +0 -1
- package/cjs/index.js +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/tagged-cache.d.ts +0 -77
- package/cjs/tagged-cache.d.ts.map +0 -1
- package/cjs/tagged-cache.js +0 -160
- package/cjs/tagged-cache.js.map +0 -1
- package/cjs/types.d.ts +0 -391
- package/cjs/types.d.ts.map +0 -1
- package/cjs/types.js +0 -36
- package/cjs/types.js.map +0 -1
- package/cjs/utils.d.ts +0 -50
- package/cjs/utils.d.ts.map +0 -1
- package/cjs/utils.js +0 -55
- package/cjs/utils.js.map +0 -1
- package/esm/cache-manager.d.ts +0 -163
- package/esm/cache-manager.d.ts.map +0 -1
- package/esm/cache-manager.js +0 -322
- package/esm/cache-manager.js.map +0 -1
- package/esm/drivers/base-cache-driver.d.ts +0 -152
- package/esm/drivers/base-cache-driver.d.ts.map +0 -1
- package/esm/drivers/base-cache-driver.js +0 -321
- package/esm/drivers/base-cache-driver.js.map +0 -1
- package/esm/drivers/file-cache-driver.d.ts +0 -45
- package/esm/drivers/file-cache-driver.d.ts.map +0 -1
- package/esm/drivers/file-cache-driver.js +0 -133
- package/esm/drivers/file-cache-driver.js.map +0 -1
- package/esm/drivers/index.d.ts +0 -8
- package/esm/drivers/index.d.ts.map +0 -1
- package/esm/drivers/lru-memory-cache-driver.d.ts +0 -98
- package/esm/drivers/lru-memory-cache-driver.d.ts.map +0 -1
- package/esm/drivers/lru-memory-cache-driver.js +0 -252
- package/esm/drivers/lru-memory-cache-driver.js.map +0 -1
- package/esm/drivers/memory-cache-driver.d.ts +0 -82
- package/esm/drivers/memory-cache-driver.d.ts.map +0 -1
- package/esm/drivers/memory-cache-driver.js +0 -218
- package/esm/drivers/memory-cache-driver.js.map +0 -1
- package/esm/drivers/memory-extended-cache-driver.d.ts +0 -13
- package/esm/drivers/memory-extended-cache-driver.d.ts.map +0 -1
- package/esm/drivers/memory-extended-cache-driver.js +0 -25
- package/esm/drivers/memory-extended-cache-driver.js.map +0 -1
- package/esm/drivers/null-cache-driver.d.ts +0 -58
- package/esm/drivers/null-cache-driver.d.ts.map +0 -1
- package/esm/drivers/null-cache-driver.js +0 -84
- package/esm/drivers/null-cache-driver.js.map +0 -1
- package/esm/drivers/redis-cache-driver.d.ts +0 -57
- package/esm/drivers/redis-cache-driver.d.ts.map +0 -1
- package/esm/drivers/redis-cache-driver.js +0 -263
- package/esm/drivers/redis-cache-driver.js.map +0 -1
- package/esm/index.d.ts +0 -6
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -1
- package/esm/index.js.map +0 -1
- package/esm/tagged-cache.d.ts +0 -77
- package/esm/tagged-cache.d.ts.map +0 -1
- package/esm/tagged-cache.js +0 -160
- package/esm/tagged-cache.js.map +0 -1
- package/esm/types.d.ts +0 -391
- package/esm/types.d.ts.map +0 -1
- package/esm/types.js +0 -36
- package/esm/types.js.map +0 -1
- package/esm/utils.d.ts +0 -50
- package/esm/utils.d.ts.map +0 -1
- package/esm/utils.js +0 -55
- package/esm/utils.js.map +0 -1
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { CacheConfigurations, CacheDriver, CacheEventHandler, CacheEventType, CacheKey, CacheListAccessor, CacheMetricsSnapshot, CacheNamespaceOptions, CacheSetOptions, CacheSimilarHit, CacheSimilarOptions, CacheSwrOptions, CacheTtl, DriverClass, LockOptions, LockOutcome, RememberOptions, ScopedCacheContract, TaggedCacheDriver } from "./types.mjs";
|
|
2
|
+
import { CacheMetricsCollector } from "./metrics.mjs";
|
|
3
|
+
|
|
4
|
+
//#region ../../@warlock.js/cache/src/cache-manager.d.ts
|
|
5
|
+
declare class CacheManager implements CacheDriver<any, any> {
|
|
6
|
+
/**
|
|
7
|
+
* Cache Driver
|
|
8
|
+
*/
|
|
9
|
+
currentDriver?: CacheDriver<any, any>;
|
|
10
|
+
/**
|
|
11
|
+
* Loaded drivers
|
|
12
|
+
*/
|
|
13
|
+
loadedDrivers: Record<string, CacheDriver<any, any>>;
|
|
14
|
+
/**
|
|
15
|
+
* Configurations list
|
|
16
|
+
*/
|
|
17
|
+
protected configurations: CacheConfigurations;
|
|
18
|
+
/**
|
|
19
|
+
* Global event listeners
|
|
20
|
+
*/
|
|
21
|
+
protected globalEventListeners: Map<CacheEventType, Set<CacheEventHandler>>;
|
|
22
|
+
/**
|
|
23
|
+
* Metrics collector — lazy on first {@link metrics} call so apps that
|
|
24
|
+
* never read metrics pay zero cost. Once instantiated, it stays
|
|
25
|
+
* subscribed to events for the manager's lifetime.
|
|
26
|
+
*/
|
|
27
|
+
protected metricsCollector?: CacheMetricsCollector;
|
|
28
|
+
/**
|
|
29
|
+
* {@inheritdoc}
|
|
30
|
+
*/
|
|
31
|
+
name: string;
|
|
32
|
+
/**
|
|
33
|
+
* {@inheritdoc}
|
|
34
|
+
*/
|
|
35
|
+
get client(): any;
|
|
36
|
+
/**
|
|
37
|
+
* Set the cache configurations
|
|
38
|
+
*/
|
|
39
|
+
setCacheConfigurations(configurations: CacheConfigurations): void;
|
|
40
|
+
/**
|
|
41
|
+
* Set logging state
|
|
42
|
+
*/
|
|
43
|
+
setLoggingState(loggingState: boolean): void;
|
|
44
|
+
/**
|
|
45
|
+
* Switch the manager to a registered driver, optionally injecting runtime
|
|
46
|
+
* options that merge over the static config.
|
|
47
|
+
*
|
|
48
|
+
* The string form looks the driver up in `setCacheConfigurations({ drivers })`,
|
|
49
|
+
* loads it (or returns the cached instance), and sets it as `currentDriver`.
|
|
50
|
+
* The instance form takes a pre-built driver and bypasses the registry; the
|
|
51
|
+
* `runtimeOptions` argument is silently ignored in that case because the
|
|
52
|
+
* instance was constructed externally.
|
|
53
|
+
*
|
|
54
|
+
* Runtime options merge over `config.options[name]` per-key — runtime wins.
|
|
55
|
+
* Use this for constructor-only knobs that can't live in static config
|
|
56
|
+
* (e.g. `pg`'s `client: pg.Pool`).
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* const pool = new Pool({ connectionString });
|
|
60
|
+
* await cache.use("pg", { client: pool });
|
|
61
|
+
*/
|
|
62
|
+
use(driver: string | CacheDriver<any, any>, runtimeOptions?: Record<string, any>): Promise<this>;
|
|
63
|
+
/**
|
|
64
|
+
* Ensure driver is initialized before operations
|
|
65
|
+
*/
|
|
66
|
+
protected ensureDriverInitialized(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Return the running metrics snapshot — counters, hit-rate, latency
|
|
69
|
+
* percentiles, per-driver breakdowns. Lazy-attaches the collector on
|
|
70
|
+
* first call so apps that never read metrics pay zero cost.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* const m = cache.metrics();
|
|
74
|
+
* console.log(`hit rate: ${(m.hitRate * 100).toFixed(1)}%`);
|
|
75
|
+
* console.log(`p95: ${m.latencyMs.p95.toFixed(2)}ms`);
|
|
76
|
+
*/
|
|
77
|
+
metrics(): CacheMetricsSnapshot;
|
|
78
|
+
/**
|
|
79
|
+
* Wipe every counter + latency sample and reset `startedAt` to now.
|
|
80
|
+
* The collector itself stays subscribed to events.
|
|
81
|
+
*/
|
|
82
|
+
resetMetrics(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Lazy-construct the metrics collector and wire it to the global event
|
|
85
|
+
* bus. Subsequent calls return the same instance — survives `cache.use()`
|
|
86
|
+
* driver switches because handlers attach via `on()` and re-bind to every
|
|
87
|
+
* loaded driver.
|
|
88
|
+
*/
|
|
89
|
+
protected ensureMetricsCollector(): CacheMetricsCollector;
|
|
90
|
+
/**
|
|
91
|
+
* Time the body, record the elapsed milliseconds against the metrics
|
|
92
|
+
* collector for the given driver (defaults to the current driver's name).
|
|
93
|
+
* Pass-through if the collector hasn't been instantiated yet — apps that
|
|
94
|
+
* don't read metrics never pay for sample collection.
|
|
95
|
+
*/
|
|
96
|
+
protected timed<T>(body: () => Promise<T>, driverName?: string): Promise<T>;
|
|
97
|
+
/**
|
|
98
|
+
* {@inheritdoc}
|
|
99
|
+
*/
|
|
100
|
+
get<T = any>(key: CacheKey): Promise<T | null>;
|
|
101
|
+
/**
|
|
102
|
+
* Set a value in the cache.
|
|
103
|
+
*
|
|
104
|
+
* Accepts a positional TTL (number of seconds or duration string like `"1h"`)
|
|
105
|
+
* or a rich {@link CacheSetOptions} object supporting `ttl`, `expiresAt`,
|
|
106
|
+
* `tags`, `onConflict`, `namespace`, and per-call `driver` overrides.
|
|
107
|
+
*/
|
|
108
|
+
set(key: CacheKey, value: any, ttlOrOptions?: CacheTtl | CacheSetOptions): Promise<any>;
|
|
109
|
+
/**
|
|
110
|
+
* {@inheritdoc}
|
|
111
|
+
*/
|
|
112
|
+
remove(key: CacheKey): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* {@inheritdoc}
|
|
115
|
+
*/
|
|
116
|
+
removeNamespace(namespace: string): Promise<any>;
|
|
117
|
+
/**
|
|
118
|
+
* {@inheritdoc}
|
|
119
|
+
*/
|
|
120
|
+
flush(): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* {@inheritdoc}
|
|
123
|
+
*/
|
|
124
|
+
connect(): Promise<any>;
|
|
125
|
+
/**
|
|
126
|
+
* {@inheritdoc}
|
|
127
|
+
*/
|
|
128
|
+
parseKey(key: CacheKey): string;
|
|
129
|
+
/**
|
|
130
|
+
* {@inheritdoc}
|
|
131
|
+
*/
|
|
132
|
+
get options(): any;
|
|
133
|
+
/**
|
|
134
|
+
* {@inheritdoc}
|
|
135
|
+
*/
|
|
136
|
+
setOptions(options: Record<string, any>): any;
|
|
137
|
+
/**
|
|
138
|
+
* Return the loaded driver instance for `driverName`, loading it on first
|
|
139
|
+
* call. Optional `runtimeOptions` follow the same merge-over-config rules
|
|
140
|
+
* as {@link load}; passing options after the driver has already been
|
|
141
|
+
* loaded throws to avoid silent swallowing.
|
|
142
|
+
*/
|
|
143
|
+
driver(driverName: string, runtimeOptions?: Record<string, any>): Promise<CacheDriver<any, any>>;
|
|
144
|
+
/**
|
|
145
|
+
* Initialize the cache manager and pick the default driver
|
|
146
|
+
*/
|
|
147
|
+
init(): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Load and connect the registered driver named `driver`. First-call wins —
|
|
150
|
+
* subsequent calls without `runtimeOptions` return the cached instance, and
|
|
151
|
+
* subsequent calls *with* `runtimeOptions` throw {@link CacheConfigurationError}
|
|
152
|
+
* to avoid silently dropping the new options.
|
|
153
|
+
*
|
|
154
|
+
* `runtimeOptions` merge over `config.options[driver]` per-key (runtime wins),
|
|
155
|
+
* letting consumers split static knobs (table, ttl, globalPrefix) from
|
|
156
|
+
* constructor-only ones (pg's `client`, custom adapters, etc.).
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* const pool = new Pool({ connectionString });
|
|
160
|
+
* const pg = await cache.load("pg", { client: pool });
|
|
161
|
+
*/
|
|
162
|
+
load(driver: string, runtimeOptions?: Record<string, any>): Promise<CacheDriver<any, any>>;
|
|
163
|
+
/**
|
|
164
|
+
* Guard against silently dropping runtime options on a re-load. Once a
|
|
165
|
+
* driver has been instantiated, its options are frozen — calling `load` /
|
|
166
|
+
* `driver` / `use` again with a non-empty `runtimeOptions` would otherwise
|
|
167
|
+
* appear to work but actually use the original options. We throw instead
|
|
168
|
+
* so the misuse surfaces at the call site.
|
|
169
|
+
*/
|
|
170
|
+
protected assertNoConflictingReload(driverName: string, runtimeOptions: Record<string, any> | undefined): void;
|
|
171
|
+
/**
|
|
172
|
+
* Register and bind a driver
|
|
173
|
+
*/
|
|
174
|
+
registerDriver(driverName: string, driverClass: DriverClass): void;
|
|
175
|
+
/**
|
|
176
|
+
* Disconnect the cache manager
|
|
177
|
+
*/
|
|
178
|
+
disconnect(): Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* {@inheritdoc}
|
|
181
|
+
*/
|
|
182
|
+
has(key: CacheKey): Promise<boolean>;
|
|
183
|
+
/**
|
|
184
|
+
* {@inheritdoc}
|
|
185
|
+
*/
|
|
186
|
+
remember<T = any>(key: CacheKey, ttlOrOptions: CacheTtl | RememberOptions, callback: () => Promise<T>): Promise<T>;
|
|
187
|
+
/**
|
|
188
|
+
* Stale-while-revalidate. Returns cached when fresh, returns the stale
|
|
189
|
+
* value plus a background refresh when within `freshTtl..staleTtl`,
|
|
190
|
+
* blocks like a normal miss past `staleTtl`. Honors per-call `driver`
|
|
191
|
+
* override the same way `remember()` does.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* const product = await cache.swr(
|
|
195
|
+
* "product.42",
|
|
196
|
+
* { freshTtl: "1m", staleTtl: "1h" },
|
|
197
|
+
* () => db.products.find(42),
|
|
198
|
+
* );
|
|
199
|
+
*/
|
|
200
|
+
swr<T = any>(key: CacheKey, options: CacheSwrOptions, callback: () => Promise<T>): Promise<T>;
|
|
201
|
+
/**
|
|
202
|
+
* {@inheritdoc}
|
|
203
|
+
*/
|
|
204
|
+
pull(key: CacheKey): Promise<any | null>;
|
|
205
|
+
/**
|
|
206
|
+
* {@inheritdoc}
|
|
207
|
+
*/
|
|
208
|
+
forever(key: CacheKey, value: any): Promise<any>;
|
|
209
|
+
/**
|
|
210
|
+
* {@inheritdoc}
|
|
211
|
+
*/
|
|
212
|
+
increment(key: CacheKey, value?: number): Promise<number>;
|
|
213
|
+
/**
|
|
214
|
+
* {@inheritdoc}
|
|
215
|
+
*/
|
|
216
|
+
decrement(key: CacheKey, value?: number): Promise<number>;
|
|
217
|
+
/**
|
|
218
|
+
* {@inheritdoc}
|
|
219
|
+
*/
|
|
220
|
+
many(keys: CacheKey[]): Promise<any[]>;
|
|
221
|
+
/**
|
|
222
|
+
* {@inheritdoc}
|
|
223
|
+
*/
|
|
224
|
+
setMany(items: Record<string, any>, ttl?: number): Promise<void>;
|
|
225
|
+
/**
|
|
226
|
+
* Register a global event listener (applies to all drivers)
|
|
227
|
+
*/
|
|
228
|
+
on(event: CacheEventType, handler: CacheEventHandler): this;
|
|
229
|
+
/**
|
|
230
|
+
* Remove a global event listener
|
|
231
|
+
*/
|
|
232
|
+
off(event: CacheEventType, handler: CacheEventHandler): this;
|
|
233
|
+
/**
|
|
234
|
+
* Register a one-time global event listener
|
|
235
|
+
*/
|
|
236
|
+
once(event: CacheEventType, handler: CacheEventHandler): this;
|
|
237
|
+
/**
|
|
238
|
+
* Attach global listeners to a driver
|
|
239
|
+
*/
|
|
240
|
+
protected attachGlobalListeners(driver: CacheDriver<any, any>): void;
|
|
241
|
+
/**
|
|
242
|
+
* Set if not exists (atomic operation)
|
|
243
|
+
* Returns true if key was set, false if key already existed
|
|
244
|
+
* Note: Only supported by drivers that implement setNX (e.g., Redis)
|
|
245
|
+
*/
|
|
246
|
+
setNX(key: CacheKey, value: any, ttl?: number): Promise<boolean>;
|
|
247
|
+
/**
|
|
248
|
+
* Create a tagged cache instance for the given tags
|
|
249
|
+
*/
|
|
250
|
+
tags(tags: string[]): TaggedCacheDriver;
|
|
251
|
+
/**
|
|
252
|
+
* Atomically read, transform, and write a cached value. Delegates to the current driver.
|
|
253
|
+
*/
|
|
254
|
+
update<T = any>(key: CacheKey, fn: (current: T | null) => T | null | Promise<T | null>, options?: {
|
|
255
|
+
ttl?: CacheTtl;
|
|
256
|
+
}): Promise<T | null>;
|
|
257
|
+
/**
|
|
258
|
+
* Shallow-merge a partial object into a cached value.
|
|
259
|
+
*/
|
|
260
|
+
merge<T extends Record<string, any> = Record<string, any>>(key: CacheKey, partial: Partial<T>, options?: {
|
|
261
|
+
ttl?: CacheTtl;
|
|
262
|
+
}): Promise<T>;
|
|
263
|
+
/**
|
|
264
|
+
* Obtain a list accessor bound to the current driver.
|
|
265
|
+
*/
|
|
266
|
+
list<T = any>(key: CacheKey): CacheListAccessor<T>;
|
|
267
|
+
/**
|
|
268
|
+
* Acquire a distributed lock, run `fn`, and auto-release. Returns a
|
|
269
|
+
* {@link LockOutcome} discriminated union so callers can distinguish
|
|
270
|
+
* "ran and got this value" from "skipped because someone else holds it".
|
|
271
|
+
*
|
|
272
|
+
* Honors the `driver` option for per-call driver override, same as `set`
|
|
273
|
+
* and `remember`.
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* const outcome = await cache.lock("lock.import", "5m", async () => {
|
|
277
|
+
* await runImport();
|
|
278
|
+
* return "done";
|
|
279
|
+
* });
|
|
280
|
+
* if (!outcome.acquired) {
|
|
281
|
+
* console.log("another worker is already importing");
|
|
282
|
+
* }
|
|
283
|
+
*/
|
|
284
|
+
lock<T>(key: CacheKey, ttlOrOptions: CacheTtl | LockOptions, fn: () => Promise<T>): Promise<LockOutcome<T>>;
|
|
285
|
+
/**
|
|
286
|
+
* Similarity retrieval. Delegates to the current driver's `similar()` impl.
|
|
287
|
+
*
|
|
288
|
+
* Drivers that lack a similarity index throw {@link CacheUnsupportedError}.
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* const hits = await cache.similar(await embed(query), { topK: 5, threshold: 0.7 });
|
|
292
|
+
*/
|
|
293
|
+
/**
|
|
294
|
+
* Create a scoped view over the cache. Every key written through the
|
|
295
|
+
* returned scope is automatically prefixed with `prefix`; optional defaults
|
|
296
|
+
* (`ttl`, `tags`) flow through every write inside the scope.
|
|
297
|
+
*
|
|
298
|
+
* Per-call options always win over scope defaults. Scope tags merge
|
|
299
|
+
* additively with per-call tags. Nested scopes inherit from the parent.
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* const chat = cache.namespace("chats.10", { ttl: "30d" });
|
|
303
|
+
* await chat.set("messages.1", msg); // → "chats.10.messages.1", 30d
|
|
304
|
+
* await chat.set("draft", d, { ttl: "1h" }); // per-call ttl wins
|
|
305
|
+
* await chat.namespace("typing", { ttl: "5s" }).set("user.42", true);
|
|
306
|
+
* await chat.clear(); // wipe the whole scope
|
|
307
|
+
*/
|
|
308
|
+
namespace(prefix: string, options?: CacheNamespaceOptions): ScopedCacheContract;
|
|
309
|
+
similar<T = any>(vector: number[], options: CacheSimilarOptions): Promise<CacheSimilarHit<T>[]>;
|
|
310
|
+
}
|
|
311
|
+
declare const cache: CacheManager;
|
|
312
|
+
//#endregion
|
|
313
|
+
export { CacheManager, cache };
|
|
314
|
+
//# sourceMappingURL=cache-manager.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.mts","names":[],"sources":["../../../../../@warlock.js/cache/src/cache-manager.ts"],"mappings":"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"}
|