UNPKG

firelordjs

Version:

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

33 lines (32 loc) • 1.59 kB
import { OriFieldValue } from './alias'; import { ErrorArrayFieldValueEmpty } from './error'; declare const serverTimestampSymbol: unique symbol; declare const deleteFieldSymbol: unique symbol; declare const incrementSymbol: unique symbol; declare const possiblyReadAsUndefinedSymbol: unique symbol; declare const arraySymbol: unique symbol; type ServerTimestampSymbol = typeof serverTimestampSymbol; type DeleteSymbol = typeof deleteFieldSymbol; type IncrementSymbol = typeof incrementSymbol; type PossiblyReadAsUndefinedSymbol = typeof possiblyReadAsUndefinedSymbol; type ArraySymbol = typeof arraySymbol; declare class FieldValue<T> { protected 'Firelord_FieldValue_Do_Not_Access': T; } declare class ArrayFieldValue<T> { protected Firelord_ArrayFieldValue?: T; } export interface PossiblyReadAsUndefined extends FieldValue<PossiblyReadAsUndefinedSymbol> { } export interface ServerTimestamp extends OriFieldValue, FieldValue<ServerTimestampSymbol> { } export interface Delete extends OriFieldValue, FieldValue<DeleteSymbol> { } export interface Increment extends OriFieldValue, FieldValue<IncrementSymbol> { } export interface ArrayUnionOrRemove<T> extends OriFieldValue, FieldValue<ArraySymbol>, ArrayFieldValue<T> { } export type ArrayRemoveOrUnionFunction = <Elements extends unknown[]>(...elements: Elements extends [] ? [ErrorArrayFieldValueEmpty] : Elements) => ArrayUnionOrRemove<Elements[number]>; export type UnassignedAbleFieldValue = Increment | ArrayUnionOrRemove<unknown>; export type FieldValues = ServerTimestamp | UnassignedAbleFieldValue | Delete; export {};