shelving
Version:
Toolkit for using data in JavaScript.
31 lines (30 loc) • 2.19 kB
TypeScript
import type { MutableArray } from "../util/array.js";
import type { DataKey, Database } from "../util/data.js";
import type { ItemQuery } from "../util/item.js";
import type { Updates } from "../util/update.js";
import type { DatabaseChange, DatabaseChanges } from "./Change.js";
import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js";
/** Synchronous provider that keeps a log of any written changes to its `.changes` property. */
export declare class ChangesProvider<T extends Database> extends ThroughProvider<T> {
get changes(): DatabaseChanges<T>;
readonly _changes: MutableArray<DatabaseChange<T>>;
addItem<K extends DataKey<T>>(collection: K, data: T[K]): string;
setItem<K extends DataKey<T>>(collection: K, id: string, data: T[K]): void;
updateItem<K extends DataKey<T>>(collection: K, id: string, updates: Updates<T[K]>): void;
deleteItem<K extends DataKey<T>>(collection: K, id: string): void;
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): void;
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates<T[K]>): void;
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): void;
}
/** Asynchronous provider that keeps a log of any written changes to its `.written` property. */
export declare class AsyncLoggedProvider<T extends Database> extends AsyncThroughProvider<T> {
get written(): DatabaseChanges<T>;
readonly _written: MutableArray<DatabaseChange<T>>;
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<string>;
setItem<K extends DataKey<T>>(collection: K, id: string, data: T[K]): Promise<void>;
updateItem<K extends DataKey<T>>(collection: K, id: string, updates: Updates<T[K]>): Promise<void>;
deleteItem<K extends DataKey<T>>(collection: K, id: string): Promise<void>;
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, data: T[K]): Promise<void>;
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>, updates: Updates<T[K]>): Promise<void>;
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<T[K]>): Promise<void>;
}