UNPKG

insite-subscriptions-client

Version:

inSite subscriptions client side

41 lines 3.36 kB
import type { SubscriptionArrayWithSubscription, Updated as SubscriptionArrayUpdated, Updates as SubscriptionArrayUpdates } from "../SubscriptionArray"; import type { SubscriptionMapWithSubscription, Updated as SubscriptionMapUpdated, Updates as SubscriptionMapUpdates } from "../SubscriptionMap"; import type { SubscriptionObjectWithSubscription, Updated as SubscriptionObjectUpdated, Updates as SubscriptionObjectUpdates } from "../SubscriptionObject"; import type { SubscriptionGroup } from "./SubscriptionGroup"; export type SubscriptionType = "array" | "map" | "object"; export type SubscriptionUpdated<T> = T extends "array" ? SubscriptionArrayUpdated<any> : T extends "map" ? SubscriptionMapUpdated<any> : T extends "object" ? SubscriptionObjectUpdated : never; export type SubscriptionValue<T> = T extends "array" ? SubscriptionArrayWithSubscription<any> : T extends "map" ? SubscriptionMapWithSubscription<any> : T extends "object" ? SubscriptionObjectWithSubscription : never; export type SubscriptionHandle<T> = T extends "array" ? (updated: SubscriptionArrayUpdated<any> | null, group: SubscriptionGroup) => void : T extends "map" ? (updated: SubscriptionMapUpdated<any> | null, group: SubscriptionGroup) => void : T extends "object" ? (updated: SubscriptionObjectUpdated | null, group: SubscriptionGroup) => void : never; export type SubscriptionOnBeforeInit<T> = T extends "array" ? (value: SubscriptionArrayWithSubscription<any>) => void : T extends "map" ? (value: SubscriptionMapWithSubscription<any>) => void : T extends "object" ? (value: SubscriptionObjectWithSubscription) => void : never; export type SubscriptionUpdates<T> = T extends "array" ? SubscriptionArrayUpdates : T extends "map" ? SubscriptionMapUpdates : T extends "object" ? SubscriptionObjectUpdates : never; export type Definition<T extends SubscriptionType = SubscriptionType> = { name: string; value?: SubscriptionValue<T>; type?: T; publicationName?: string; params?: unknown[]; handle?: (...args: any[]) => void; onBeforeInit?: (...args: any[]) => void; debounce?: number; preventBind?: boolean; }; export type TupleDefinition = unknown[]; export type UnparsedDefinition<T extends SubscriptionType = SubscriptionType> = Definition<T> | TupleDefinition; type ResolveObjectValue<T> = T extends { value: infer V; } ? V : T extends { type: "array"; } ? SubscriptionArrayWithSubscription<any> : T extends { type: "map"; } ? SubscriptionMapWithSubscription<any> : T extends { type: "object"; } ? SubscriptionObjectWithSubscription : SubscriptionObjectWithSubscription; type ResolveArrayValue<T extends any[]> = T[1] extends object ? T[1] : T[1] extends "array" ? SubscriptionArrayWithSubscription<any> : T[1] extends "map" ? SubscriptionMapWithSubscription<any> : T[1] extends "object" ? SubscriptionObjectWithSubscription : SubscriptionObjectWithSubscription; type ResolveValue<U> = U extends object ? ResolveObjectValue<U> : U extends any[] ? ResolveArrayValue<U> : never; export type ParseValues<T extends Array<any[] | object>> = T & { [K in keyof T as T[K] extends { name: infer N; } ? N extends string ? N : never : T[K] extends [infer F, any] ? F extends string ? F : never : never]: ResolveValue<T[K]>; } extends Array<infer U> ? ResolveValue<U>[] : never; export {}; //# sourceMappingURL=types.d.ts.map