UNPKG

pretur.sync

Version:

Front-end back-end communication infrastructure

30 lines (29 loc) 1.23 kB
import { EmptySpec } from 'pretur.spec'; import { Bundle } from 'pretur.i18n'; import { Query } from './query'; import { Request, OperateRequest, ValidateRequest, MutateRequest } from './request'; import { Response, OperateResponse, ValidateResponse } from './response'; export interface TransactionLike { commit(): Promise<void>; rollback(): Promise<void>; } export interface ResolveResult { data: any[]; count: number; } export interface SyncResult { errors: Bundle[]; generatedIds?: any; } export interface PoolLike<C> { resolve(transaction: any, scope: string, model: string, query: Query<EmptySpec>, context?: C): Promise<ResolveResult>; sync(transaction: any, item: MutateRequest, context?: C): Promise<SyncResult>; } export interface ResponderOptions<C> { errorToBundle: (error: Error) => Bundle; pool?: PoolLike<C>; operator?: (request: OperateRequest, context?: C) => PromiseLike<OperateResponse>; validator?: (request: ValidateRequest, context?: C) => PromiseLike<ValidateResponse>; transact?: () => PromiseLike<TransactionLike>; } export declare function buildResponder<C>(options: ResponderOptions<C>): (requests: Request[], context?: any) => Promise<Response[]>;