UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

50 lines (49 loc) 3.92 kB
import { type DataSchema, type DataSchemas } from "../schema/DataSchema.js"; import type { Schema } from "../schema/Schema.js"; import type { Database, DataKey } from "../util/data.js"; import type { Identifier, 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"; import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js"; /** Validate a synchronous source provider (source can have any type because validation guarantees the type). */ export declare class ValidationProvider<I extends Identifier, T extends Database> extends ThroughProvider<I, T> implements Provider<I, T>, Sourceable<Provider<I, T>> { readonly identifier: Schema<I>; readonly schemas: DataSchemas<T>; constructor(id: Schema<I>, schemas: DataSchemas<T>, source: Provider<I, T>); /** Get a named schema. */ getSchema<K extends DataKey<T>>(collection: K): DataSchema<T[K]>; getItem<K extends DataKey<T>>(collection: K, id: I): OptionalItem<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, updates: 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]>; 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]>, updates: Updates<T[K]>): void; deleteQuery<K extends DataKey<T>>(collection: K, query: ItemQuery<I, T[K]>): void; getQuerySequence<K extends DataKey<T>>(collection: K, query?: ItemQuery<I, T[K]>): AsyncIterable<Items<I, T[K]>>; } /** Validate an asynchronous source provider (source can have any type because validation guarantees the type). */ export declare class AsyncValidationProvider<I extends Identifier, T extends Database> extends AsyncThroughProvider<I, T> implements AsyncProvider<I, T>, Sourceable<AsyncProvider<I, T>> { readonly identifier: Schema<I>; readonly schemas: DataSchemas<T>; constructor(id: Schema<I>, schemas: DataSchemas<T>, source: AsyncProvider<I, T>); /** Get a named data schema for this database. */ getSchema<K extends DataKey<T>>(collection: K): DataSchema<T[K]>; getItem<K extends DataKey<T>>(collection: K, id: I): Promise<OptionalItem<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>; }