firelordjs
Version:
🔥 High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience
24 lines (23 loc) • 1.3 kB
TypeScript
import { MetaType } from '../metaTypeCreator';
import { DocumentReference } from '../refs';
import { ExactOptional, RecursivelyReplaceDeleteFieldWithErrorMsg } from '../exactOptional';
import { DeepKey, RemoveLastDot } from '../objectFlatten';
import { Transaction } from '../transaction';
import { WriteBatch } from '../batch';
type SetCreator<U> = <T extends MetaType, const Data extends Record<string, unknown>, SetOptions extends {
merge: boolean;
} | {
mergeFields: RemoveLastDot<DeepKey<Data, never>>[];
} | undefined = undefined>(reference: DocumentReference<T>, data: Data extends never ? Data : SetOptions extends {
merge: true;
} | {
mergeFields: RemoveLastDot<DeepKey<Data, never>>[];
} ? ExactOptional<T['writeMerge'], Data, (SetOptions extends {
merge: boolean;
} ? SetOptions['merge'] : SetOptions extends {
mergeFields: RemoveLastDot<DeepKey<Data, never>>[];
} ? SetOptions['mergeFields'] : false) extends infer R extends boolean | string[] ? R : never, false, true> : RecursivelyReplaceDeleteFieldWithErrorMsg<T['write'], Data>, options?: SetOptions extends never ? SetOptions : SetOptions) => U;
export type Set = SetCreator<Promise<void>>;
export type TransactionSet = SetCreator<Transaction>;
export type WriteBatchSet = SetCreator<WriteBatch>;
export {};