fork of hey-api/openapi-ts because I need some additional things
at main 84 lines 2.5 kB view raw
1// This file is auto-generated by @hey-api/openapi-ts 2 3import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen' 4 5export type QuerySerializer = (query: Record<string, unknown>) => string 6 7export type BodySerializer = (body: any) => any 8 9type QuerySerializerOptionsObject = { 10 allowReserved?: boolean 11 array?: Partial<SerializerOptions<ArrayStyle>> 12 object?: Partial<SerializerOptions<ObjectStyle>> 13} 14 15export type QuerySerializerOptions = QuerySerializerOptionsObject & { 16 /** 17 * Per-parameter serialization overrides. When provided, these settings 18 * override the global array/object settings for specific parameter names. 19 */ 20 parameters?: Record<string, QuerySerializerOptionsObject> 21} 22 23const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => { 24 if (typeof value === 'string' || value instanceof Blob) { 25 data.append(key, value) 26 } else if (value instanceof Date) { 27 data.append(key, value.toISOString()) 28 } else { 29 data.append(key, JSON.stringify(value)) 30 } 31} 32 33const serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => { 34 if (typeof value === 'string') { 35 data.append(key, value) 36 } else { 37 data.append(key, JSON.stringify(value)) 38 } 39} 40 41export const formDataBodySerializer = { 42 bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>( 43 body: T 44 ): FormData => { 45 const data = new FormData() 46 47 Object.entries(body).forEach(([key, value]) => { 48 if (value === undefined || value === null) { 49 return 50 } 51 if (Array.isArray(value)) { 52 value.forEach((v) => serializeFormDataPair(data, key, v)) 53 } else { 54 serializeFormDataPair(data, key, value) 55 } 56 }) 57 58 return data 59 } 60} 61 62export const jsonBodySerializer = { 63 bodySerializer: <T>(body: T): string => 64 JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)) 65} 66 67export const urlSearchParamsBodySerializer = { 68 bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(body: T): string => { 69 const data = new URLSearchParams() 70 71 Object.entries(body).forEach(([key, value]) => { 72 if (value === undefined || value === null) { 73 return 74 } 75 if (Array.isArray(value)) { 76 value.forEach((v) => serializeUrlSearchParamsPair(data, key, v)) 77 } else { 78 serializeUrlSearchParamsPair(data, key, value) 79 } 80 }) 81 82 return data.toString() 83 } 84}