@distributed-functions/core
Version:
Distributed Functions for TypeScript
19 lines (18 loc) • 2.04 kB
TypeScript
import { DefaultCallResponseResultFailure, CallRequest, CallResponse } from './call';
export type CustomEitherCallResponseResultSuccess<Success extends Record<any, any>> = {
$case: 'success';
success: Success;
};
export type CustomEitherCallResponseResultFailure<Failure extends DefaultCallResponseResultFailure = DefaultCallResponseResultFailure> = {
$case: 'failure';
failure: Failure;
};
export type CustomEitherCallResponseResult<Success extends Record<any, any>, Failure extends DefaultCallResponseResultFailure = DefaultCallResponseResultFailure> = CustomEitherCallResponseResultSuccess<Success> | CustomEitherCallResponseResultFailure<Failure>;
export type CustomEitherCall<Name extends string, Meta extends Record<any, any>, RequestParams extends Record<any, any>, Success extends Record<any, any>, Failure extends DefaultCallResponseResultFailure = DefaultCallResponseResultFailure> = {
name: Name;
request: (params: RequestParams, meta?: Partial<Meta>) => CallRequest<Name, RequestParams, Meta>;
response: (requestOrId: string | CallRequest<Name, RequestParams, Meta>, result: CustomEitherCallResponseResult<Success, Failure>, meta?: Partial<Meta>) => CallResponse<CustomEitherCallResponseResult<Success, Failure>, Meta>;
success: (requestOrId: string | CallRequest<Name, RequestParams, Meta>, success: Success, meta?: Partial<Meta>) => CallResponse<CustomEitherCallResponseResultSuccess<Success>, Meta>;
failure: (requestOrId: string | CallRequest<Name, RequestParams, Meta>, failure: Failure, meta?: Partial<Meta>) => CallResponse<CustomEitherCallResponseResultFailure<Failure>, Meta>;
};
export declare const CustomEitherCall: <Name extends string, Meta extends Record<any, any>, Params extends Record<any, any>, Success extends Record<any, any>, Failure extends DefaultCallResponseResultFailure<undefined> = DefaultCallResponseResultFailure<undefined>>(name: Name, metaConstructor: (meta?: Partial<Meta> | undefined) => Meta) => CustomEitherCall<Name, Meta, Params, Success, Failure>;