UNPKG

firesage

Version:

🔥 Extremely High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience

18 lines (17 loc) • 1.28 kB
import { MetaType } from './metaTypeCreator'; import { OriSnapshotOptions } from './ori'; import { ServerTimestamp } from './fieldValue'; import { ObjectFlattenRead } from './objectFlatten'; declare type None = 'none'; declare type Previous = 'previous'; export declare type NoneAndPrevious = None | Previous; export declare type RecursiveUnionReadServerTimestampWithNull<T, Read> = T extends ServerTimestamp ? Read | null : T extends Record<string, unknown> ? Read extends Record<string, unknown> ? { [K in keyof T & keyof Read]: RecursiveUnionReadServerTimestampWithNull<T[K], Read[K]>; } : never : Read; export declare type UnionReadServerTimestampWithNull<T extends MetaType, SnapshotOptions extends OriSnapshotOptions = { serverTimestamps: None; }> = SnapshotOptions['serverTimestamps'] extends NoneAndPrevious ? RecursiveUnionReadServerTimestampWithNull<T['write'], T['read']> : T['read']; export declare type UnionReadServerTimestampWithNullFlatten<T extends MetaType, SnapshotOptions extends OriSnapshotOptions = { serverTimestamps: None; }> = SnapshotOptions['serverTimestamps'] extends NoneAndPrevious ? RecursiveUnionReadServerTimestampWithNull<T['writeFlatten'], ObjectFlattenRead<T['read']>> : ObjectFlattenRead<T['read']>; export {};