UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

14 lines (13 loc) 979 B
import { IndexConstructor, IndexResolver } from './base-index.js'; /** * Enhanced index options that support both sync and async resolvers */ export interface IndexOptions<TResolver extends IndexResolver = IndexResolver> { name?: string; indexType?: TResolver; options?: TResolver extends IndexConstructor<any> ? TResolver extends new (id: string, expr: any, name?: string, options?: infer O) => any ? O : never : TResolver extends () => Promise<infer TCtor> ? TCtor extends new (id: string, expr: any, name?: string, options?: infer O) => any ? O : never : never; } /** * Utility type to extract the constructed index type from a resolver */ export type ResolvedIndexType<TResolver extends IndexResolver> = TResolver extends IndexConstructor<any> ? InstanceType<TResolver> : TResolver extends () => Promise<IndexConstructor<any>> ? TResolver extends () => Promise<infer TCtor> ? TCtor extends IndexConstructor<any> ? InstanceType<TCtor> : never : never : never;