@@ -527,20 +527,11 @@ export namespace TypesaurusCore {
527
527
528
528
/**
529
529
* Doc data type. Defines the shape of the document data returned from the
530
- * database. It resolves server dates and nullifies undefineds .
530
+ * database. It resolves server dates.
531
531
*/
532
532
export type Data <
533
533
Model extends ModelObjectType ,
534
534
DateMissing extends ServerDateMissing ,
535
- > = DataNullified < Nullify < Model > , DateMissing > ;
536
-
537
- /**
538
- * Nullifed doc data type, used internally by the data types. It expects
539
- * already nullified data, preventing {@link Nullify} called again.
540
- */
541
- export type DataNullified <
542
- Model extends ModelObjectType ,
543
- DateMissing extends ServerDateMissing ,
544
535
> = {
545
536
[ Key in keyof Model ] : DataField < Model [ Key ] , DateMissing > ;
546
537
} ;
@@ -570,7 +561,7 @@ export namespace TypesaurusCore {
570
561
? Array < DataField < ItemType , DateMissing > >
571
562
: // Now process objects
572
563
Type extends object
573
- ? DataNullified < Type , DateMissing >
564
+ ? Data < Type , DateMissing >
574
565
: never ; // Nothing shoule be left
575
566
576
567
/**
@@ -671,7 +662,7 @@ export namespace TypesaurusCore {
671
662
export type AssignData <
672
663
Model extends ModelObjectType ,
673
664
Props extends DocProps ,
674
- > = WriteData < Nullify < Model > , Props > ;
665
+ > = WriteData < Model , Props > ;
675
666
676
667
/**
677
668
* Write data type, used internally by the write field types.
@@ -1232,12 +1223,12 @@ export namespace TypesaurusCore {
1232
1223
>
1233
1224
? NestedCollection <
1234
1225
{
1235
- Model : Model ;
1226
+ Model : NullifyModel < Model > ;
1236
1227
Name : CustomName extends string ? CustomName : Name ;
1237
1228
Id : CustomId extends Id < any > | string
1238
1229
? CustomId
1239
1230
: Id < Utils . ComposePath < BasePath , Name > > ;
1240
- WideModel : Model ;
1231
+ WideModel : NullifyModel < Model > ;
1241
1232
Flags : DocDefFlags ;
1242
1233
} ,
1243
1234
DB < Schema , Utils . ComposePath < BasePath , Name > >
@@ -1248,12 +1239,12 @@ export namespace TypesaurusCore {
1248
1239
infer CustomName
1249
1240
>
1250
1241
? Collection < {
1251
- Model : Model ;
1242
+ Model : NullifyModel < Model > ;
1252
1243
Name : CustomName extends string ? CustomName : Name ;
1253
1244
Id : CustomId extends Id < any > | string
1254
1245
? CustomId
1255
1246
: Id < Utils . ComposePath < BasePath , Name > > ;
1256
- WideModel : Model ;
1247
+ WideModel : NullifyModel < Model > ;
1257
1248
Flags : DocDefFlags ;
1258
1249
} >
1259
1250
: never
@@ -1682,4 +1673,140 @@ export namespace TypesaurusCore {
1682
1673
: Nullify < Exclude < Type [ Key ] , undefined > > ;
1683
1674
}
1684
1675
: never ;
1676
+
1677
+ /**
1678
+ * Deeply adds null to shapes of a variable model.
1679
+ */
1680
+ export type NullifyModel < Model extends ModelType > =
1681
+ Model extends ModelObjectType
1682
+ ? Nullify < Model >
1683
+ : Model extends [
1684
+ infer A extends ModelObjectType ,
1685
+ infer B extends ModelObjectType ,
1686
+ infer C extends ModelObjectType ,
1687
+ infer D extends ModelObjectType ,
1688
+ infer E extends ModelObjectType ,
1689
+ infer F extends ModelObjectType ,
1690
+ infer G extends ModelObjectType ,
1691
+ infer H extends ModelObjectType ,
1692
+ infer I extends ModelObjectType ,
1693
+ infer J extends ModelObjectType ,
1694
+ ]
1695
+ ? [
1696
+ Nullify < A > ,
1697
+ Nullify < B > ,
1698
+ Nullify < C > ,
1699
+ Nullify < D > ,
1700
+ Nullify < E > ,
1701
+ Nullify < F > ,
1702
+ Nullify < G > ,
1703
+ Nullify < H > ,
1704
+ Nullify < I > ,
1705
+ Nullify < J > ,
1706
+ ]
1707
+ : Model extends [
1708
+ infer A extends ModelObjectType ,
1709
+ infer B extends ModelObjectType ,
1710
+ infer C extends ModelObjectType ,
1711
+ infer D extends ModelObjectType ,
1712
+ infer E extends ModelObjectType ,
1713
+ infer F extends ModelObjectType ,
1714
+ infer G extends ModelObjectType ,
1715
+ infer H extends ModelObjectType ,
1716
+ infer I extends ModelObjectType ,
1717
+ ]
1718
+ ? [
1719
+ Nullify < A > ,
1720
+ Nullify < B > ,
1721
+ Nullify < C > ,
1722
+ Nullify < D > ,
1723
+ Nullify < E > ,
1724
+ Nullify < F > ,
1725
+ Nullify < G > ,
1726
+ Nullify < H > ,
1727
+ Nullify < I > ,
1728
+ ]
1729
+ : Model extends [
1730
+ infer A extends ModelObjectType ,
1731
+ infer B extends ModelObjectType ,
1732
+ infer C extends ModelObjectType ,
1733
+ infer D extends ModelObjectType ,
1734
+ infer E extends ModelObjectType ,
1735
+ infer F extends ModelObjectType ,
1736
+ infer G extends ModelObjectType ,
1737
+ infer H extends ModelObjectType ,
1738
+ ]
1739
+ ? [
1740
+ Nullify < A > ,
1741
+ Nullify < B > ,
1742
+ Nullify < C > ,
1743
+ Nullify < D > ,
1744
+ Nullify < E > ,
1745
+ Nullify < F > ,
1746
+ Nullify < G > ,
1747
+ Nullify < H > ,
1748
+ ]
1749
+ : Model extends [
1750
+ infer A extends ModelObjectType ,
1751
+ infer B extends ModelObjectType ,
1752
+ infer C extends ModelObjectType ,
1753
+ infer D extends ModelObjectType ,
1754
+ infer E extends ModelObjectType ,
1755
+ infer F extends ModelObjectType ,
1756
+ infer G extends ModelObjectType ,
1757
+ ]
1758
+ ? [
1759
+ Nullify < A > ,
1760
+ Nullify < B > ,
1761
+ Nullify < C > ,
1762
+ Nullify < D > ,
1763
+ Nullify < E > ,
1764
+ Nullify < F > ,
1765
+ Nullify < G > ,
1766
+ ]
1767
+ : Model extends [
1768
+ infer A extends ModelObjectType ,
1769
+ infer B extends ModelObjectType ,
1770
+ infer C extends ModelObjectType ,
1771
+ infer D extends ModelObjectType ,
1772
+ infer E extends ModelObjectType ,
1773
+ infer F extends ModelObjectType ,
1774
+ ]
1775
+ ? [
1776
+ Nullify < A > ,
1777
+ Nullify < B > ,
1778
+ Nullify < C > ,
1779
+ Nullify < D > ,
1780
+ Nullify < E > ,
1781
+ Nullify < F > ,
1782
+ ]
1783
+ : Model extends [
1784
+ infer A extends ModelObjectType ,
1785
+ infer B extends ModelObjectType ,
1786
+ infer C extends ModelObjectType ,
1787
+ infer D extends ModelObjectType ,
1788
+ infer E extends ModelObjectType ,
1789
+ ]
1790
+ ? [ Nullify < A > , Nullify < B > , Nullify < C > , Nullify < D > , Nullify < E > ]
1791
+ : Model extends [
1792
+ infer A extends ModelObjectType ,
1793
+ infer B extends ModelObjectType ,
1794
+ infer C extends ModelObjectType ,
1795
+ infer D extends ModelObjectType ,
1796
+ ]
1797
+ ? [ Nullify < A > , Nullify < B > , Nullify < C > , Nullify < D > ]
1798
+ : Model extends [
1799
+ infer A extends ModelObjectType ,
1800
+ infer B extends ModelObjectType ,
1801
+ infer C extends ModelObjectType ,
1802
+ ]
1803
+ ? [ Nullify < A > , Nullify < B > , Nullify < C > ]
1804
+ : Model extends [
1805
+ infer A extends ModelObjectType ,
1806
+ infer B extends ModelObjectType ,
1807
+ ]
1808
+ ? [ Nullify < A > , Nullify < B > ]
1809
+ : Model extends [ infer A extends ModelObjectType ]
1810
+ ? [ Nullify < A > ]
1811
+ : never ;
1685
1812
}
0 commit comments