shelving
Version:
Toolkit for using data in JavaScript.
47 lines (46 loc) • 3.75 kB
TypeScript
import type { 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 { Sourceable } from "../util/source.js";
import type { Updates } from "../util/update.js";
import type { AsyncProvider, Provider } from "./Provider.js";
/** A provider that passes through to a synchronous source. */
export declare class ThroughProvider<I extends Identifier, T extends Database> implements Provider<I, T>, Sourceable<Provider<I, T>> {
readonly source: Provider<I, T>;
constructor(source: Provider<I, T>);
getItem<K extends DataKey<T>>(collection: K, id: I): OptionalItem<I, T[K]>;
requireItem<K extends DataKey<T>>(collection: K, id: I): Item<I, T[K]>;
getItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterable<OptionalItem<I, T[K]>>;
addItem<K extends DataKey<T>>(collection: K, data: T[K]): I;
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): void;
updateItem<K extends DataKey<T>>(collection: K, id: I, update: Updates<T[K]>): void;
deleteItem<K extends DataKey<T>>(collection: K, id: I): void;
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): number;
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Items<I, T[K]>;
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>;
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): void;
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, update: Updates<T[K]>): void;
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): void;
getFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): OptionalItem<I, T[K]>;
requireFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Item<I, T[K]>;
}
/** A provider that passes through to an asynchronous source. */
export declare class AsyncThroughProvider<I extends Identifier, T extends Database> implements AsyncProvider<I, T>, Sourceable<AsyncProvider<I, T>> {
readonly source: AsyncProvider<I, T>;
constructor(source: AsyncProvider<I, T>);
getItem<K extends DataKey<T>>(collection: K, id: I): Promise<OptionalItem<I, T[K]>>;
requireItem<K extends DataKey<T>>(collection: K, id: I): Promise<Item<I, T[K]>>;
getItemSequence<K extends DataKey<T>>(collection: K, id: I): AsyncIterable<OptionalItem<I, T[K]>>;
addItem<K extends DataKey<T>>(collection: K, data: T[K]): Promise<I>;
setItem<K extends DataKey<T>>(collection: K, id: I, data: T[K]): Promise<void>;
updateItem<K extends DataKey<T>>(collection: K, id: I, updates: Updates<T[K]>): Promise<void>;
deleteItem<K extends DataKey<T>>(collection: K, id: I): Promise<void>;
countQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Promise<number>;
getQuery<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): Promise<Items<I, T[K]>>;
getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>;
setQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, data: T[K]): Promise<void>;
updateQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>, updates: Updates<T[K]>): Promise<void>;
deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<void>;
getFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<OptionalItem<I, T[K]>>;
requireFirst<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): Promise<Item<I, T[K]>>;
}