@tanstack/db
Version:
A reactive client store for building super fast apps on sync
43 lines (40 loc) • 1.17 kB
text/typescript
import type { 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