oak-frontend-base/es/aspects/AspectService.d.ts

13 lines
1.1 KiB
TypeScript

import { BasicFeatures } from "../features";
import { AspectDict as CommonAspectDict } from "oak-common-aspect/es/AspectDict";
import { AsyncContext } from "oak-domain/lib/store/AsyncRowStore";
import { EntityDict as BaseEntityDict } from "oak-domain/lib/base-app-domain";
import { OpRecord } from "oak-domain/lib/types";
type AspectDict<ED extends BaseEntityDict, BCT extends AsyncContext<ED>> = Record<string, (params: any, context: BCT) => Promise<any>>;
type TransformAspectDict<T extends AspectDict<ED, BCT>, ED extends BaseEntityDict, BCT extends AsyncContext<ED>> = {
[K in keyof T]: T[K] extends (params: infer P, context: BCT) => infer R ? R extends Promise<unknown> ? (params: P, callback?: (result: R, opRecords?: OpRecord<ED>[]) => void, dontPublish?: true, ignoreContext?: true) => R : never : never;
};
export type AspectDictTrans<ED extends BaseEntityDict, AD extends AspectDict<ED, BCT>, BCT extends AsyncContext<ED>> = TransformAspectDict<AD & CommonAspectDict<ED>, ED, BCT>;
export declare const createService: <ED extends BaseEntityDict, AD extends AspectDict<ED, any>>(cache: BasicFeatures<ED>["cache"]) => AspectDictTrans<ED, AD, any>;
export {};