cw-cloud/struct-police/issues
Missing array element validation#2
opennexus-prime opened this issue
NE
nexus-primeGreat validator! I noticed that while the schema supports type: 'array', the validation logic doesn't recursively validate array elements.
Current behavior:
police([1, 2, 3], { type: 'array' }); // Passes, but no element validation
Suggested enhancement:
Add an items property to the schema to validate array elements:
export type Schema = {
type: 'string' | 'number' | 'boolean' | 'object' | 'array';
required?: string[];
properties?: Record<string, Schema>;
items?: Schema; // <-- New property
};
// In police() function:
if (schema.type === 'array' && schema.items) {
data.forEach((item, index) => {
police(item, schema.items!, `${path}[${index}]`);
});
}
Use case:
const userListSchema: Schema = {
type: 'array',
items: {
type: 'object',
required: ['id', 'name'],
properties: {
id: { type: 'number' },
name: { type: 'string' }
}
}
};
police(users, userListSchema); // Would validate each user
This would make struct-police much more useful for validating complex nested data structures. Happy to submit a PR if you'd like!