pretur.clay
Version:
Client-side immutability helper
38 lines (37 loc) • 1.73 kB
TypeScript
import { Spec, SpecType, Model, SpecPool } from 'pretur.spec';
import { Dispatch } from 'reducible-node';
import { Query, MutateRequest, Requester } from 'pretur.sync';
import { State } from './clay';
import { Querier } from './Querier';
import { Record } from './Record';
import { Set } from './Set';
import { Fields } from './fields';
export interface MutationGetter<T extends SpecType = SpecType> {
(clay: Set<T> | Record<T>, scope: string, model: T['name']): MutateRequest<T>[];
}
export declare function selectAndRefresh<T extends SpecType>(pool: SpecPool, spec: Spec<T>, requester: Requester, dispatch: Dispatch, set: Set<T>, querier: Querier<T>, extra?: Query<T>): Promise<{
data: Model<T>[];
count: number;
}>;
export interface Helpers<T extends SpecType> {
fields(values?: Partial<Model<T>>): Fields<T>;
record(state?: State, values?: Partial<Model<T>>): Record<T>;
record(values?: Partial<Model<T>>): Record<T>;
set(items?: Partial<Model<T>>[]): Set<T>;
mutations(clay: Set<T> | Record<T>): MutateRequest<T>[];
querier(query?: Query<T>): Querier<T>;
load(query?: Query<T>): Promise<{
data: Model<T>[];
count: number;
}>;
load(dispatch: Dispatch, set: Set<T>, query?: Query<T>): Promise<void>;
load(dispatch: Dispatch, record: Record<T>, query?: Query<T>): Promise<boolean>;
select(dispatch: Dispatch, set: Set<T>, querier: Querier<T>, extra?: Query<T>): Promise<{
data: Model<T>[];
count: number;
}>;
}
export interface HelperFactory {
<T extends SpecType>(spec: Spec<T>): Helpers<T>;
}
export declare function buildHelpersFactory(pool: SpecPool, requester: Requester, mutationGetter: MutationGetter<any>): HelperFactory;