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