fireschema
fireschema copied to clipboard
Check keys().hasOnly() for nested object
For type definition:
const DBData = z.object({
nested: z.object({
a: z.string(),
b: z.string(),
}),
})
The following validator is generated:
function __validator_0__(data) {
return (__validator_meta__(data) && (
__validator_keys__(data, ['nested'])
&& (data.nested.a is string && data.nested.b is string)
));
}
However the validator doesn't check if there's extra keys in data.nested, so the following data would be allowed:
{
nested: {
a: '',
b: '',
other: 'hey!',
},
}
Fireschema should generate something like:
function __validator_0__(data) {
return (__validator_meta__(data) && (
__validator_keys__(data, ['nested'])
&& (data.nested.a is string && data.nested.b is string && data.nested.keys().hasOnly(['a', 'b']))
));
}