import type { TimerService } from "./timers.ts"; import type { RedisDependency } from "./types.ts"; export interface StoreSetOptions { /** milliseconds */ maxAge?: number; } /** * @group Store * * Store is an async abstraction around a key-value engine like Redis or a JavaScript Map * with extra features for storing things for set-durations * * Store implements Disposable so you can use Explicit Resource Management * * ```js * async function main() { * await using store = new MemoryStore(…) * * await store.set('users/geoff', …) * } * ``` */ export interface Store { /** * Retrieve the value from the store * * ```js * const value = await store.get("users/geoff") * ``` */ get(key: string): Promise; /** * Put a value into the store * * ```js * await store.set( * 'users/geoff', * { name: "Geoff Testington"}, * ) * * // Store jess for 5 minutes * await store.set( * "users/jess", * { name: "Jess Smith" }, * { maxAge: 5 * 60 * 1_000 } * ) * ``` */ set(key: string, value: T, options?: StoreSetOptions): Promise; /** * Remove a value from the store * * ```js * await store.remove("users/geoff") * ``` */ delete(key: string): Promise; /** * Close the store * * ```js * await store.dispose() * ``` */ dispose(): Promise; [Symbol.asyncDispose](): Promise; /** @deprecated use {@link dispose} */ close(): Promise; } /** * @group Store * * MemoryStore is a in-memory implementation of {@link Store} that puts values into a Map and uses timers to expire data. * It was mainly made for automated testing. * * ```js * const store = new MemoryStore() * ``` */ export declare class MemoryStore implements Store { values: Map; timeouts: Map; timers: TimerService; constructor(timers?: typeof globalThis); get(key: string): Promise; set(key: string, value: T, options?: StoreSetOptions): Promise; delete(key: string): Promise; dispose(): Promise; close(): Promise; [Symbol.asyncDispose](): Promise; } /** * @group Store * @unstable */ export interface RedisStoreOptions { prefix?: string; } /** * @group Store * @unstable */ export declare class RedisStore implements Store { redis: RedisDependency; prefix: string; constructor(redis: unknown, options?: RedisStoreOptions); get(key: string): Promise; set(key: string, value: T, options?: StoreSetOptions): Promise; delete(key: string): Promise; close(): Promise; dispose(): Promise; [Symbol.asyncDispose](): Promise; } //# sourceMappingURL=store.d.ts.map