fork of hey-api/openapi-ts because I need some additional things

Merge pull request #2763 from mauriciabad/patch-1

fix: When axios request fails, gracefuly return error

authored by

Lubos and committed by
GitHub
437be1bf d11577c0

+735 -248
+5
.changeset/sour-trees-work.md
··· 1 + --- 2 + "@hey-api/openapi-ts": patch 3 + --- 4 + 5 + fix(client-axios): return error when axios request fails
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/angular-query-experimental/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/react-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/solid-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/svelte-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@tanstack/vue-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/content-types/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/parameter-explode-false-axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/angular-query-experimental/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/react-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/solid-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/svelte-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.0.x/plugins/@tanstack/vue-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-false/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-number/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-strict/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/base-url-string/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/clean-false/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/default/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/import-file-extension-ts/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen.ts'; 7 7 import type { HttpMethod } from '../core/types.gen.ts'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-optional/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/sdk-client-required/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/clients/@hey-api/client-axios/tsconfig-nodenext-sdk/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen.js'; 7 7 import type { HttpMethod } from '../core/types.gen.js'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/content-types/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/parameter-explode-false-axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/angular-query-experimental/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/react-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/solid-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/svelte-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/plugins/@tanstack/vue-query/axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+17 -8
packages/openapi-ts-tests/main/test/__snapshots__/3.1.x/sse-axios/client/client.gen.ts
··· 1 1 // This file is auto-generated by @hey-api/openapi-ts 2 2 3 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 - import axios from 'axios'; 3 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 4 + import axios, { AxiosError } from 'axios'; 5 5 6 6 import { createSseClient } from '../core/serverSentEvents.gen'; 7 7 import type { HttpMethod } from '../core/types.gen'; ··· 69 69 return { opts, url }; 70 70 }; 71 71 72 - // @ts-expect-error 73 72 const request: Client['request'] = async (options) => { 74 73 // @ts-expect-error 75 74 const { opts, url } = await beforeRequest(options); ··· 87 86 params: opts.paramsSerializer ? opts.query : undefined, 88 87 url, 89 88 }); 89 + if (response instanceof Error) throw response; 90 90 91 91 let { data } = response; 92 92 ··· 105 105 data: data ?? {}, 106 106 }; 107 107 } catch (error) { 108 - const e = error as AxiosError; 109 108 if (opts.throwOnError) { 110 - throw e; 109 + throw error; 110 + } 111 + 112 + if (error instanceof AxiosError) { 113 + // @ts-expect-error 114 + error.error = error.response?.data ?? {}; 115 + return error; 116 + } 117 + 118 + if (typeof error === 'object' && error !== null) { 119 + error.error = {}; 120 + return error; 111 121 } 112 - // @ts-expect-error 113 - e.error = e.response?.data ?? {}; 114 - return e; 122 + 123 + return { error: {} }; 115 124 } 116 125 }; 117 126
+203
packages/openapi-ts/src/plugins/@hey-api/client-axios/__tests__/client.test.ts
··· 352 352 expect(config).toBe('https://api.example.com/users'); 353 353 }); 354 354 }); 355 + 356 + describe('error handling', () => { 357 + it('should handle 404 response when throwOnError is false', async () => { 358 + const client = createClient({ baseURL: 'https://api.example.com' }); 359 + 360 + const errorData = { error: 'Resource not found' }; 361 + const axiosError = new axios.AxiosError( 362 + 'Request failed with status code 404', 363 + 'ERR_BAD_REQUEST', 364 + {} as any, 365 + {}, 366 + { 367 + config: {} as any, 368 + data: errorData, 369 + headers: {}, 370 + status: 404, 371 + statusText: 'Not Found', 372 + }, 373 + ); 374 + 375 + const mockAxios = vi.fn().mockResolvedValue(axiosError); 376 + 377 + const result = await client.get({ 378 + axios: mockAxios as Partial<AxiosInstance> as AxiosInstance, 379 + headers: {}, 380 + throwOnError: false, 381 + url: '/users/999', 382 + }); 383 + 384 + expect(mockAxios).toHaveBeenCalledWith( 385 + expect.objectContaining({ 386 + url: 'https://api.example.com/users/999', 387 + }), 388 + ); 389 + expect(result).toBeInstanceOf(axios.AxiosError); 390 + expect(result).toMatchObject({ 391 + error: errorData, 392 + response: { 393 + data: errorData, 394 + status: 404, 395 + statusText: 'Not Found', 396 + }, 397 + }); 398 + }); 399 + 400 + it('should throw 404 error when throwOnError is true', async () => { 401 + const client = createClient({ baseURL: 'https://api.example.com' }); 402 + 403 + const errorData = { error: 'Resource not found' }; 404 + const axiosError = new axios.AxiosError( 405 + 'Request failed with status code 404', 406 + 'ERR_BAD_REQUEST', 407 + {} as any, 408 + {}, 409 + { 410 + config: {} as any, 411 + data: errorData, 412 + headers: {}, 413 + status: 404, 414 + statusText: 'Not Found', 415 + }, 416 + ); 417 + 418 + const mockAxios = vi.fn().mockResolvedValue(axiosError); 419 + 420 + await expect( 421 + client.get({ 422 + axios: mockAxios as Partial<AxiosInstance> as AxiosInstance, 423 + headers: {}, 424 + throwOnError: true, 425 + url: '/users/999', 426 + }), 427 + ).rejects.toMatchObject({ 428 + response: { 429 + data: errorData, 430 + status: 404, 431 + statusText: 'Not Found', 432 + }, 433 + }); 434 + }); 435 + 436 + it('should handle ECONNREFUSED error when throwOnError is false', async () => { 437 + const client = createClient({ baseURL: 'https://api.example.com' }); 438 + 439 + const connectionError = axios.AxiosError.from( 440 + new AggregateError( 441 + [ 442 + new Error('connect ECONNREFUSED ::1:3000'), 443 + new Error('connect ECONNREFUSED 127.0.0.1:3000'), 444 + ], 445 + 'Error', 446 + ), 447 + 'ECONNREFUSED', 448 + {} as any, 449 + {}, 450 + undefined, // no response object for connection errors 451 + ); 452 + 453 + const mockAxios = vi.fn().mockResolvedValue(connectionError); 454 + 455 + const result = await client.get({ 456 + axios: mockAxios as Partial<AxiosInstance> as AxiosInstance, 457 + headers: {}, 458 + throwOnError: false, 459 + url: '/users', 460 + }); 461 + 462 + expect(mockAxios).toHaveBeenCalledWith( 463 + expect.objectContaining({ 464 + url: 'https://api.example.com/users', 465 + }), 466 + ); 467 + expect(result).toMatchObject({ 468 + code: 'ECONNREFUSED', 469 + error: {}, // error.response?.data ?? {} 470 + message: 'Error', 471 + }); 472 + }); 473 + 474 + it('should throw ECONNREFUSED error when throwOnError is true', async () => { 475 + const client = createClient({ baseURL: 'https://api.example.com' }); 476 + 477 + const connectionError = axios.AxiosError.from( 478 + new AggregateError( 479 + [ 480 + new Error('connect ECONNREFUSED ::1:3000'), 481 + new Error('connect ECONNREFUSED 127.0.0.1:3000'), 482 + ], 483 + 'Error', 484 + ), 485 + 'ECONNREFUSED', 486 + {} as any, 487 + {}, 488 + undefined, 489 + ); 490 + 491 + const mockAxios = vi.fn().mockResolvedValue(connectionError); 492 + 493 + await expect( 494 + client.get({ 495 + axios: mockAxios as Partial<AxiosInstance> as AxiosInstance, 496 + headers: {}, 497 + throwOnError: true, 498 + url: '/users', 499 + }), 500 + ).rejects.toMatchObject({ 501 + code: 'ECONNREFUSED', 502 + message: 'Error', 503 + name: 'AggregateError', 504 + }); 505 + }); 506 + 507 + it('should handle non-object error from responseValidator when throwOnError is false', async () => { 508 + const client = createClient({ baseURL: 'https://api.example.com' }); 509 + 510 + const mockAxios = vi.fn().mockResolvedValue({ 511 + data: { id: 1, name: 'test' }, 512 + headers: {}, 513 + status: 200, 514 + statusText: 'OK', 515 + }); 516 + 517 + const result = await client.get({ 518 + axios: mockAxios as Partial<AxiosInstance> as AxiosInstance, 519 + headers: {}, 520 + responseType: 'json', 521 + responseValidator: vi.fn().mockRejectedValue('validation failed'), 522 + throwOnError: false, 523 + url: '/users/1', 524 + }); 525 + 526 + expect(mockAxios).toHaveBeenCalledWith( 527 + expect.objectContaining({ 528 + url: 'https://api.example.com/users/1', 529 + }), 530 + ); 531 + expect(result).toEqual({ 532 + error: {}, 533 + }); 534 + }); 535 + 536 + it('should throw non-object error from responseValidator when throwOnError is true', async () => { 537 + const client = createClient({ baseURL: 'https://api.example.com' }); 538 + 539 + const mockAxios = vi.fn().mockResolvedValue({ 540 + data: { id: 1, name: 'test' }, 541 + headers: {}, 542 + status: 200, 543 + statusText: 'OK', 544 + }); 545 + 546 + await expect( 547 + client.get({ 548 + axios: mockAxios as Partial<AxiosInstance> as AxiosInstance, 549 + headers: {}, 550 + responseType: 'json', 551 + responseValidator: vi.fn().mockRejectedValue('non-object error'), 552 + throwOnError: true, 553 + url: '/users/1', 554 + }), 555 + ).rejects.toBe('non-object error'); 556 + }); 557 + });
+17 -8
packages/openapi-ts/src/plugins/@hey-api/client-axios/bundle/client.ts
··· 1 - import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 2 - import axios from 'axios'; 1 + import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios'; 2 + import axios, { AxiosError } from 'axios'; 3 3 4 4 import { createSseClient } from '../../client-core/bundle/serverSentEvents'; 5 5 import type { HttpMethod } from '../../client-core/bundle/types'; ··· 67 67 return { opts, url }; 68 68 }; 69 69 70 - // @ts-expect-error 71 70 const request: Client['request'] = async (options) => { 72 71 // @ts-expect-error 73 72 const { opts, url } = await beforeRequest(options); ··· 85 84 params: opts.paramsSerializer ? opts.query : undefined, 86 85 url, 87 86 }); 87 + if (response instanceof Error) throw response; 88 88 89 89 let { data } = response; 90 90 ··· 103 103 data: data ?? {}, 104 104 }; 105 105 } catch (error) { 106 - const e = error as AxiosError; 107 106 if (opts.throwOnError) { 108 - throw e; 107 + throw error; 108 + } 109 + 110 + if (error instanceof AxiosError) { 111 + // @ts-expect-error 112 + error.error = error.response?.data ?? {}; 113 + return error; 114 + } 115 + 116 + if (typeof error === 'object' && error !== null) { 117 + error.error = {}; 118 + return error; 109 119 } 110 - // @ts-expect-error 111 - e.error = e.response?.data ?? {}; 112 - return e; 120 + 121 + return { error: {} }; 113 122 } 114 123 }; 115 124