firesage
Version:
🔥 Extremely High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience
18 lines (17 loc) • 1.28 kB
TypeScript
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 {};