UNPKG

@leyyo/cache

Version:
53 lines (52 loc) 2.97 kB
import { CacheChannelCreatorLambda } from "../channel"; import { CacheClient, CacheClientCreatorLambda } from "../client"; import { CacheEntity, CacheEntityCreatorLambda, CacheEntityDef } from "../entity"; import { CacheSegment, CacheSegmentCreatorLambda, CacheSegmentInfo, CacheSegmentPropLambda } from "../segment"; import { CachePropData, CachePropSecure } from "../prop"; import { CacheInfoCheck, Id, TR } from "../types"; import { CacheProvider } from "../provider"; import { BuilderAny } from "@leyyo/builder/dist/types"; import { ShiftMain, ShiftSecure } from "../secure"; import { CacheRemote } from "../remote"; import { CacheInvalidatorConsumer } from "../invalidator"; export interface CacheHub extends ShiftSecure<CacheHubSecure> { readonly prop: Readonly<CacheHubProp>; get segments(): Array<CacheSegment>; get clients(): Array<CacheClient>; get providers(): Array<CacheProvider>; registerClient(provider: CacheProvider, native: unknown): CacheClient; newSegment(client: CacheClient, path: string, fn: CacheSegmentPropLambda, id?: string): CacheSegment; newRemote(id: string): CacheRemote; info(check: CacheInfoCheck): Promise<CacheHubInfo>; changeProp(lambda: CacheHubPropLambda): void; getSegment(id: string): CacheSegment; getEntity<A extends TR = TR>(id: string): CacheEntity<A>; getInvalidatorConsumer(id: string): CacheInvalidatorConsumer; } export interface CacheHubSecure extends ShiftMain<CacheHub> { $setSegmentCreator(provider: CacheProvider, lambda: CacheSegmentCreatorLambda): void; $getSegmentCreator(provider: CacheProvider): CacheSegmentCreatorLambda; $setEntityCreator(provider: CacheProvider, lambda: CacheEntityCreatorLambda<TR>): void; $getEntityCreator(provider: CacheProvider): CacheEntityCreatorLambda<TR>; $setChannelCreator(provider: CacheProvider, lambda: CacheChannelCreatorLambda<TR, Id>): void; $getChannelCreator(provider: CacheProvider): CacheChannelCreatorLambda<TR, Id>; $setClientCreator(provider: CacheProvider, lambda: CacheClientCreatorLambda): void; $getClientCreator(provider: CacheProvider): CacheClientCreatorLambda; $setProp(prop: CacheHubPropData): void; $checkSegment(segment: CacheSegment): void; $checkEntity(entity: CacheEntityDef): void; $checkInvalidatorConsumer(consumer: CacheInvalidatorConsumer): void; } export type CacheHubPropData = CachePropData; export interface CacheHubProp extends CacheHubPropData, ShiftSecure<CacheHubPropSecure> { } export interface CacheHubPropSecure extends ShiftMain<CacheHubProp>, CachePropSecure { $setPure(pure: Partial<CacheHubPropData>): void; get $pure(): Partial<CacheHubPropData>; } export type CacheHubPropLambda = (builder: BuilderAny<CacheHubPropData>) => BuilderAny<CacheHubPropData> | CacheHubPropData; export interface CacheHubInfo { segments: Array<CacheSegmentInfo>; prop: Partial<CacheHubPropData>; defaults: Partial<CacheHubPropData>; }