This validator:
v
.object({
id: v.string().required(),
username: v.string(),
nested: v.object({
email: v.string(),
}),
})
Will produce this json-schema:
{
type: 'object',
properties: {
id: { type: 'string' },
username: { type: 'string' },
nested: { type: 'object', properties: [Object] }
},
required: [ 'id' ]
}
The problem here is that JSON-schema validators like ajv infer if there is no additionalProperties: false then additional properties are allowed. This conflicts with the implementation of the ObjectValidator because if you want to allow additional properties you are required to chain .additional({ ... }) which should imply to the developer that when .additional({...}) is not used then to expect _additionalProperties: false_ in the json-schema output.
This validator:
Will produce this json-schema:
The problem here is that JSON-schema validators like ajv infer if there is no
additionalProperties: falsethen additional properties are allowed. This conflicts with the implementation of theObjectValidatorbecause if you want to allow additional properties you are required to chain.additional({ ... })which should imply to the developer that when.additional({...})is not used then to expect_additionalProperties: false_in the json-schema output.