You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 lines
1.0 KiB

import { SchemaItem } from '../model';
export const defaultSchema = {
string: {
type: 'string',
},
number: {
type: 'number',
},
array: {
type: 'array',
items: {
type: 'string',
},
},
object: {
type: 'object',
properties: {},
},
boolean: {
type: 'boolean',
},
integer: {
type: 'integer',
},
};
export const schemaType = ['string', 'number', 'array', 'object', 'boolean', 'integer'];
export const setAllFieldRequired = (schema: SchemaItem, checked: boolean): void => {
if (schema.type === 'object') {
const { properties } = schema;
const fields = Object.keys(properties);
if (checked) {
schema.required = fields;
} else {
delete schema.required;
}
fields.forEach((field) => {
const childSchema = properties[field];
if (['object', 'array'].includes(childSchema.type)) {
setAllFieldRequired(childSchema, checked);
}
});
} else if (schema.type === 'array') {
setAllFieldRequired(schema.items, checked);
}
};