Recursively resolves the value type for AllowNullForNullable.
For plain object types (not Date, arrays, primitives, or functions),
wraps with Partial<> and recurses via AllowNullForNullable so that:
All fields within @ObjectAttribute objects are optional in update payloads,
matching the partial update semantics (only provided fields are modified).
Nullable fields at any nesting depth receive | null during updates.
Arrays resolve through AllowNullInWholeValue: a list is written whole
(SET, never a document path), so nothing inside it becomes Partial and
every non-nullable field of an element is still required, while a nullable
field at any depth inside an element takes null, as it does everywhere else
in an update; the element is stored without that field.
Primitives, Date, and functions pass through unchanged.
Recursively resolves the value type for
AllowNullForNullable.For plain object types (not
Date, arrays, primitives, or functions), wraps withPartial<>and recurses via AllowNullForNullable so that:@ObjectAttributeobjects are optional in update payloads, matching the partial update semantics (only provided fields are modified).| nullduring updates.Arrays resolve through AllowNullInWholeValue: a list is written whole (
SET, never a document path), so nothing inside it becomesPartialand every non-nullable field of an element is still required, while a nullable field at any depth inside an element takesnull, as it does everywhere else in an update; the element is stored without that field.Primitives,
Date, and functions pass through unchanged.