export function buildFormData(data: T): FormData { const formData = new FormData() function appendData(key: string, value: any) { if (value instanceof Blob) { formData.append(key, value) return } if (value instanceof Date) { formData.append(key, value.toISOString()) return } if (typeof value === 'number' || typeof value === 'boolean') { formData.append(key, String(value)) return } if (typeof value === 'string') { formData.append(key, value) return } if (typeof value === 'object') { formData.append(key, new Blob([JSON.stringify(value)], { type: 'application/json' })) return } } if (data) { Object.entries(data).forEach(([key, value]) => { if (value === undefined || value === null) return if (Array.isArray(value)) { for (const valueItem of value) { if (valueItem === undefined || valueItem === null) continue appendData(key, valueItem) } } else { appendData(key, value) } }) } return formData }