import { DeferredSequence } from "../sequence/DeferredSequence.js"; import type { Data, Database, DataKey } from "../util/data.js"; import type { Identifier, Item, Items, OptionalItem } from "../util/item.js"; import type { ItemQuery } from "../util/query.js"; import type { Updates } from "../util/update.js"; import { Provider } from "./Provider.js"; /** * Fast in-memory store for data. * - Extremely fast (ideal for caching!), but does not persist data after the browser window is closed. * - `get()` etc return the exact same instance of an object that's passed into `set()` */ export declare class MemoryProvider extends Provider { /** List of tables in `{ collection: Table }` format. */ private _tables; /** Get a table for a collection. */ getTable>(collection: K): MemoryTable; getItemTime>(collection: K, id: I): number | undefined; getItem>(collection: K, id: I): OptionalItem; getItemSequence>(collection: K, id: I): AsyncIterable>; getCachedItemSequence>(collection: K, id: I): AsyncIterable>; addItem>(collection: K, data: T[K]): I; setItem>(collection: K, id: I, data: T[K]): void; setItemSequence>(collection: K, id: I, sequence: AsyncIterable>): AsyncIterable>; updateItem>(collection: K, id: I, updates: Updates): void; deleteItem>(collection: K, id: I): void; getQueryTime>(collection: K, query?: ItemQuery): number | undefined; countQuery>(collection: K, query?: ItemQuery): number; getQuery>(collection: K, query?: ItemQuery): Items; getQuerySequence>(collection: K, query?: ItemQuery): AsyncIterable>; getCachedQuerySequence>(collection: K, query?: ItemQuery): AsyncIterable>; setQuery>(collection: K, query: ItemQuery, data: T[K]): void; updateQuery>(collection: K, query: ItemQuery, updates: Updates): void; deleteQuery>(collection: K, query: ItemQuery): void; setItems>(collection: K, items: Items, query?: ItemQuery): void; setItemsSequence>(collection: K, sequence: AsyncIterable>, query?: ItemQuery): AsyncIterable>; } /** An individual table of data. */ export declare class MemoryTable { /** Actual data in this table. */ protected readonly _data: Map>; /** Times data was last updated. */ protected readonly _times: Map; /** Deferred sequence of next values. */ readonly next: DeferredSequence; getItemTime(id: I): number | undefined; getItem(id: I): OptionalItem; getItemSequence(id: I): AsyncIterable>; getCachedItemSequence(id: I): AsyncIterable>; /** Function to generate a random ID for this table. */ generateUniqueID(): I; addItem(data: T): I; setItem(id: I, data: Item | T): void; setItemSequence(id: I, sequence: AsyncIterable>): AsyncIterable>; updateItem(id: I, updates: Updates): void; deleteItem(id: I): void; getQueryTime(query?: ItemQuery): number | undefined; countQuery(query?: ItemQuery): number; getQuery(query?: ItemQuery): Items; getQuerySequence(query?: ItemQuery): AsyncIterable>; getCachedQuerySequence(query?: ItemQuery): AsyncIterable>; setQuery(query: ItemQuery, data: T): void; updateQuery(query: ItemQuery, updates: Updates): void; deleteQuery(query: ItemQuery): void; setItems(items: Items, query?: ItemQuery): void; setItemsSequence(sequence: AsyncIterable>, query?: ItemQuery): AsyncIterable>; }