UNPKG

sveltekit-superforms

Version:

Making SvelteKit forms a pleasure to use!

32 lines (31 loc) 1.15 kB
/** * Simple JSON Schema generator for validation libraries without introspection. */ export function simpleSchema(value) { if (value === null || value === undefined) { return {}; } switch (typeof value) { case 'object': { if (value instanceof Date) { return { type: 'integer', format: 'unix-time' }; } if (Array.isArray(value)) { const output = { type: 'array' }; output.items = value.length ? simpleSchema(value[0]) : {}; return output; } else { const obj = value; return { type: 'object', properties: Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, simpleSchema(value)])), required: Object.keys(obj).filter((key) => (!obj[key] && obj[key] !== undefined && obj[key] !== null) || (Array.isArray(obj[key]) && !obj[key].length)), additionalProperties: false }; } } } return { type: typeof value }; }