import u from '@yanick/updeep-remeda'; import * as R from 'remeda'; export default function buildSchema( schema: any = {}, initialState = undefined, subduxes = {}, ) { if (typeof initialState !== 'undefined') schema = u(schema, { default: u.constant(initialState) }); if (!schema.type) { schema = u(schema, { type: Array.isArray(schema.default) ? 'array' : typeof schema.default, }); } if (schema.type === 'object') { // TODO will break with objects and arrays schema = u(schema, { properties: R.mapValues(schema.default, (v) => ({ type: typeof v, })), }); } if (Object.keys(subduxes).length > 0) { schema = u(schema, { properties: R.mapValues(subduxes, R.prop('schema')), }); } return schema; }