@tanstack/db
Version:
A reactive client store for building super fast apps on sync
14 lines (13 loc) • 979 B
TypeScript
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: number, expr: any, name?: string, options?: infer O) => any ? O : never : TResolver extends () => Promise<infer TCtor> ? TCtor extends new (id: number, 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;