UNPKG

pretur.sync

Version:

Front-end back-end communication infrastructure

44 lines (43 loc) 1.98 kB
import { SpecType, Model } from 'pretur.spec'; import { Bundle } from 'pretur.i18n'; import { Query } from './query'; import { FetchStatus } from './fetch'; import { Request } from './request'; import { SelectResult, OperateResult, MutateResult, ValidateResult } from './result'; export declare type InsertOptions<T extends SpecType> = { data: Partial<Model<T>>; scope: string; model: T['name']; }; export declare type UpdateOptions<T extends SpecType> = { data: Partial<T['fields']>; scope: string; model: T['name']; }; export declare type RemoveOptions<T extends SpecType> = { identifiers: Partial<T['fields']>; scope: string; model: T['name']; }; export interface Requester { select<T extends SpecType>(scope: string, model: T['name'], query: Query<T>): Promise<SelectResult<T>>; operate<TData, TResult>(name: string, data?: TData): Promise<OperateResult<TResult>>; insert<T extends SpecType>(options: InsertOptions<T>): Promise<MutateResult<T>>; insert<T extends SpecType>(scope: string, model: T['name'], data: Partial<Model<T>>): Promise<MutateResult<T>>; update<T extends SpecType>(options: UpdateOptions<T>): Promise<MutateResult>; update<T extends SpecType>(scope: string, model: T['name'], data: Partial<T['fields']>): Promise<MutateResult>; remove<T extends SpecType>(options: RemoveOptions<T>): Promise<MutateResult>; remove<T extends SpecType>(scope: string, model: T['name'], identifiers: Partial<T['fields']>): Promise<MutateResult>; validate<T>(name: string, data: T): Promise<ValidateResult>; batchMutateStart(): void; batchMutateEnd(): void; flush(): void; cancel(): void; } export interface BuildRequesterOptions { wait?: number; maxWait?: number; cancelError: (request: Request) => Bundle[]; networkError: (status: FetchStatus, error?: any) => Bundle[]; } export declare function buildRequester(endPoint: string, options: BuildRequesterOptions): Requester;