import produce, { Draft } from 'immer'; import { assignPropertiesToObject } from './assignPropertiesToObject'; export function produceFirebaseObject( originalObject: T, dataToAssign: Partial, assignNullable?: boolean, callback?: (draft: Draft) => void ): T { return produce(originalObject, (draft) => { callback?.(draft); return assignPropertiesToObject(draft, dataToAssign, assignNullable); }); }