@@ -5,7 +5,9 @@ import type {
55 OptionalTablesSchema ,
66 OptionalValuesSchema ,
77 Store ,
8+ TablesSchema ,
89 Value ,
10+ ValuesSchema ,
911} from '../../../store/with-schemas/index.d.ts' ;
1012
1113export type TableIdFromSchema < Schema extends OptionalTablesSchema > = AsId <
@@ -94,10 +96,10 @@ export type CellIsDefaultedFromSchema<
9496 CellId extends CellIdFromSchema < Schema , TableId > ,
9597 Then ,
9698 Else ,
97- > = Schema [ TableId ] [ CellId ] extends {
98- default : infer _ ;
99- }
100- ? Then
99+ > = Schema [ TableId ] [ CellId ] extends { default : infer Default }
100+ ? [ Default ] extends [ Cell < Schema , TableId , CellId > ]
101+ ? Then
102+ : Else
101103 : Else ;
102104
103105export type CellIsRequiredFromSchema <
@@ -190,12 +192,45 @@ export type ValueIsDefaultedFromSchema<
190192 ValueId extends ValueIdFromSchema < Schema > ,
191193 Then ,
192194 Else ,
193- > = Schema [ ValueId ] extends {
194- default : infer _ ;
195- }
196- ? Then
195+ > = Schema [ ValueId ] extends { default : infer Default }
196+ ? [ Default ] extends [ Value < Schema , ValueId > ]
197+ ? Then
198+ : Else
197199 : Else ;
198200
201+ type ValidCellDefault <
202+ Schema extends TablesSchema ,
203+ TableId extends TableIdFromSchema < Schema > ,
204+ CellId extends CellIdFromSchema < Schema , TableId > ,
205+ > = Schema [ TableId ] [ CellId ] extends { default : infer Default }
206+ ? [ Default ] extends [ Cell < Schema , TableId , CellId > ]
207+ ? unknown
208+ : never
209+ : unknown ;
210+
211+ export type ValidTablesSchema < Schema extends TablesSchema > = {
212+ [ TableId in TableIdFromSchema < Schema > ] : {
213+ [ CellId in CellIdFromSchema < Schema , TableId > ] : ValidCellDefault <
214+ Schema ,
215+ TableId ,
216+ CellId
217+ > ;
218+ } ;
219+ } ;
220+
221+ type ValidValueDefault <
222+ Schema extends ValuesSchema ,
223+ ValueId extends ValueIdFromSchema < Schema > ,
224+ > = Schema [ ValueId ] extends { default : infer Default }
225+ ? [ Default ] extends [ Value < Schema , ValueId > ]
226+ ? unknown
227+ : never
228+ : unknown ;
229+
230+ export type ValidValuesSchema < Schema extends ValuesSchema > = {
231+ [ ValueId in ValueIdFromSchema < Schema > ] : ValidValueDefault < Schema , ValueId > ;
232+ } ;
233+
199234export type ValueIsRequiredFromSchema <
200235 Schema extends OptionalValuesSchema ,
201236 ValueId extends ValueIdFromSchema < Schema > ,
0 commit comments