@hey-api/openapi-ts 0.81.1 → 0.82.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/chunk-FBWTZXZ2.js +43 -0
- package/dist/chunk-FBWTZXZ2.js.map +1 -0
- package/dist/clients/core/serverSentEvents.ts +28 -1
- package/dist/clients/fetch/client.ts +34 -7
- package/dist/clients/fetch/types.ts +1 -1
- package/dist/clients/next/client.ts +39 -6
- package/dist/clients/nuxt/client.ts +1 -0
- package/dist/index.cjs +68 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +675 -6
- package/dist/index.d.ts +675 -6
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/internal.cjs +13 -13
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +1 -1
- package/dist/{types.d-BGYcYtD8.d.cts → types.d-C6wYENRD.d.cts} +2940 -2406
- package/dist/{types.d-BGYcYtD8.d.ts → types.d-C6wYENRD.d.ts} +2940 -2406
- package/package.json +2 -2
- package/dist/chunk-A2YBSPFD.js +0 -43
- package/dist/chunk-A2YBSPFD.js.map +0 -1
|
@@ -5,6 +5,17 @@ export type ServerSentEventsOptions<TData = unknown> = Omit<
|
|
|
5
5
|
'method'
|
|
6
6
|
> &
|
|
7
7
|
Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {
|
|
8
|
+
/**
|
|
9
|
+
* Fetch API implementation. You can use this option to provide a custom
|
|
10
|
+
* fetch instance.
|
|
11
|
+
*
|
|
12
|
+
* @default globalThis.fetch
|
|
13
|
+
*/
|
|
14
|
+
fetch?: typeof fetch;
|
|
15
|
+
/**
|
|
16
|
+
* Implementing clients can call request interceptors inside this hook.
|
|
17
|
+
*/
|
|
18
|
+
onRequest?: (url: string, init: RequestInit) => Promise<Request>;
|
|
8
19
|
/**
|
|
9
20
|
* Callback invoked when a network or parsing error occurs during streaming.
|
|
10
21
|
*
|
|
@@ -22,6 +33,7 @@ export type ServerSentEventsOptions<TData = unknown> = Omit<
|
|
|
22
33
|
* @returns Nothing (void).
|
|
23
34
|
*/
|
|
24
35
|
onSseEvent?: (event: StreamEvent<TData>) => void;
|
|
36
|
+
serializedBody?: RequestInit['body'];
|
|
25
37
|
/**
|
|
26
38
|
* Default retry delay in milliseconds.
|
|
27
39
|
*
|
|
@@ -73,6 +85,7 @@ export type ServerSentEventsResult<
|
|
|
73
85
|
};
|
|
74
86
|
|
|
75
87
|
export const createSseClient = <TData = unknown>({
|
|
88
|
+
onRequest,
|
|
76
89
|
onSseError,
|
|
77
90
|
onSseEvent,
|
|
78
91
|
responseTransformer,
|
|
@@ -110,7 +123,21 @@ export const createSseClient = <TData = unknown>({
|
|
|
110
123
|
}
|
|
111
124
|
|
|
112
125
|
try {
|
|
113
|
-
const
|
|
126
|
+
const requestInit: RequestInit = {
|
|
127
|
+
redirect: 'follow',
|
|
128
|
+
...options,
|
|
129
|
+
body: options.serializedBody,
|
|
130
|
+
headers,
|
|
131
|
+
signal,
|
|
132
|
+
};
|
|
133
|
+
let request = new Request(url, requestInit);
|
|
134
|
+
if (onRequest) {
|
|
135
|
+
request = await onRequest(url, requestInit);
|
|
136
|
+
}
|
|
137
|
+
// fetch must be assigned here, otherwise it would throw the error:
|
|
138
|
+
// TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
|
|
139
|
+
const _fetch = options.fetch ?? globalThis.fetch;
|
|
140
|
+
const response = await _fetch(request);
|
|
114
141
|
|
|
115
142
|
if (!response.ok)
|
|
116
143
|
throw new Error(
|
|
@@ -106,23 +106,41 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
if (response.ok) {
|
|
109
|
+
const parseAs =
|
|
110
|
+
(opts.parseAs === 'auto'
|
|
111
|
+
? getParseAs(response.headers.get('Content-Type'))
|
|
112
|
+
: opts.parseAs) ?? 'json';
|
|
113
|
+
|
|
109
114
|
if (
|
|
110
115
|
response.status === 204 ||
|
|
111
116
|
response.headers.get('Content-Length') === '0'
|
|
112
117
|
) {
|
|
118
|
+
let emptyData: any;
|
|
119
|
+
switch (parseAs) {
|
|
120
|
+
case 'arrayBuffer':
|
|
121
|
+
case 'blob':
|
|
122
|
+
case 'text':
|
|
123
|
+
emptyData = await response[parseAs]();
|
|
124
|
+
break;
|
|
125
|
+
case 'formData':
|
|
126
|
+
emptyData = new FormData();
|
|
127
|
+
break;
|
|
128
|
+
case 'stream':
|
|
129
|
+
emptyData = response.body;
|
|
130
|
+
break;
|
|
131
|
+
case 'json':
|
|
132
|
+
default:
|
|
133
|
+
emptyData = {};
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
113
136
|
return opts.responseStyle === 'data'
|
|
114
|
-
?
|
|
137
|
+
? emptyData
|
|
115
138
|
: {
|
|
116
|
-
data:
|
|
139
|
+
data: emptyData,
|
|
117
140
|
...result,
|
|
118
141
|
};
|
|
119
142
|
}
|
|
120
143
|
|
|
121
|
-
const parseAs =
|
|
122
|
-
(opts.parseAs === 'auto'
|
|
123
|
-
? getParseAs(response.headers.get('Content-Type'))
|
|
124
|
-
: opts.parseAs) ?? 'json';
|
|
125
|
-
|
|
126
144
|
let data: any;
|
|
127
145
|
switch (parseAs) {
|
|
128
146
|
case 'arrayBuffer':
|
|
@@ -204,6 +222,15 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
204
222
|
body: opts.body as BodyInit | null | undefined,
|
|
205
223
|
headers: opts.headers as unknown as Record<string, string>,
|
|
206
224
|
method,
|
|
225
|
+
onRequest: async (url, init) => {
|
|
226
|
+
let request = new Request(url, init);
|
|
227
|
+
for (const fn of interceptors.request._fns) {
|
|
228
|
+
if (fn) {
|
|
229
|
+
request = await fn(request, opts);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return request;
|
|
233
|
+
},
|
|
207
234
|
url,
|
|
208
235
|
});
|
|
209
236
|
};
|
|
@@ -24,7 +24,7 @@ export interface Config<T extends ClientOptions = ClientOptions>
|
|
|
24
24
|
*
|
|
25
25
|
* @default globalThis.fetch
|
|
26
26
|
*/
|
|
27
|
-
fetch?:
|
|
27
|
+
fetch?: typeof fetch;
|
|
28
28
|
/**
|
|
29
29
|
* Please don't use the Fetch client for Next.js applications. The `next`
|
|
30
30
|
* options won't have any effect.
|
|
@@ -101,21 +101,39 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
if (response.ok) {
|
|
104
|
+
const parseAs =
|
|
105
|
+
(opts.parseAs === 'auto'
|
|
106
|
+
? getParseAs(response.headers.get('Content-Type'))
|
|
107
|
+
: opts.parseAs) ?? 'json';
|
|
108
|
+
|
|
104
109
|
if (
|
|
105
110
|
response.status === 204 ||
|
|
106
111
|
response.headers.get('Content-Length') === '0'
|
|
107
112
|
) {
|
|
113
|
+
let emptyData: any;
|
|
114
|
+
switch (parseAs) {
|
|
115
|
+
case 'arrayBuffer':
|
|
116
|
+
case 'blob':
|
|
117
|
+
case 'text':
|
|
118
|
+
emptyData = await response[parseAs]();
|
|
119
|
+
break;
|
|
120
|
+
case 'formData':
|
|
121
|
+
emptyData = new FormData();
|
|
122
|
+
break;
|
|
123
|
+
case 'stream':
|
|
124
|
+
emptyData = response.body;
|
|
125
|
+
break;
|
|
126
|
+
case 'json':
|
|
127
|
+
default:
|
|
128
|
+
emptyData = {};
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
108
131
|
return {
|
|
109
|
-
data:
|
|
132
|
+
data: emptyData,
|
|
110
133
|
...result,
|
|
111
134
|
};
|
|
112
135
|
}
|
|
113
136
|
|
|
114
|
-
const parseAs =
|
|
115
|
-
(opts.parseAs === 'auto'
|
|
116
|
-
? getParseAs(response.headers.get('Content-Type'))
|
|
117
|
-
: opts.parseAs) ?? 'json';
|
|
118
|
-
|
|
119
137
|
let data: any;
|
|
120
138
|
switch (parseAs) {
|
|
121
139
|
case 'arrayBuffer':
|
|
@@ -190,6 +208,21 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
190
208
|
body: opts.body as BodyInit | null | undefined,
|
|
191
209
|
headers: opts.headers as unknown as Record<string, string>,
|
|
192
210
|
method,
|
|
211
|
+
onRequest: async (url, init) => {
|
|
212
|
+
let request = new Request(url, init);
|
|
213
|
+
const requestInit = {
|
|
214
|
+
...init,
|
|
215
|
+
method: init.method as Config['method'],
|
|
216
|
+
url,
|
|
217
|
+
};
|
|
218
|
+
for (const fn of interceptors.request._fns) {
|
|
219
|
+
if (fn) {
|
|
220
|
+
await fn(requestInit);
|
|
221
|
+
request = new Request(requestInit.url, requestInit);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return request;
|
|
225
|
+
},
|
|
193
226
|
url,
|
|
194
227
|
});
|
|
195
228
|
};
|