UNPKG

@inkline/inkline

Version:

Inkline is the intuitive UI Components library that gives you a developer-friendly foundation for building high-quality, accessible, and customizable Vue.js 3 Design Systems.

29 lines (28 loc) 884 B
import { isFormField, isFormGroup } from "@inkline/inkline/types"; import { reservedValidationFields } from "@inkline/inkline/constants"; export function serializeSchema(schema) { const serializedSchema = {}; Object.keys(schema).forEach((key) => { if (!schema.hasOwnProperty(key) || reservedValidationFields.includes(key)) { return; } const schemaField = schema[key]; if (Array.isArray(schemaField)) { serializedSchema[key] = schemaField.map( (item) => { if (isFormGroup(item)) { return serializeSchema(item); } return item.value; } ); } else if (isFormGroup(schemaField)) { serializedSchema[key] = serializeSchema( schemaField ); } else if (isFormField(schemaField)) { serializedSchema[key] = schemaField.value; } }); return serializedSchema; }