|
|
@@ -1,8 +1,6 @@
|
|
|
// This file is auto-generated by @hey-api/openapi-ts
|
|
|
|
|
|
import { createSseClient } from "../core/serverSentEvents.gen.js"
|
|
|
-import type { HttpMethod } from "../core/types.gen.js"
|
|
|
-import { getValidRequestBody } from "../core/utils.gen.js"
|
|
|
import type { Client, Config, RequestOptions, ResolvedRequestOptions } from "./types.gen.js"
|
|
|
import {
|
|
|
buildUrl,
|
|
|
@@ -51,12 +49,12 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
await opts.requestValidator(opts)
|
|
|
}
|
|
|
|
|
|
- if (opts.body !== undefined && opts.bodySerializer) {
|
|
|
+ if (opts.body && opts.bodySerializer) {
|
|
|
opts.serializedBody = opts.bodySerializer(opts.body)
|
|
|
}
|
|
|
|
|
|
// remove Content-Type header if body is empty to avoid sending invalid requests
|
|
|
- if (opts.body === undefined || opts.serializedBody === "") {
|
|
|
+ if (opts.serializedBody === undefined || opts.serializedBody === "") {
|
|
|
opts.headers.delete("Content-Type")
|
|
|
}
|
|
|
|
|
|
@@ -71,7 +69,7 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
const requestInit: ReqInit = {
|
|
|
redirect: "follow",
|
|
|
...opts,
|
|
|
- body: getValidRequestBody(opts),
|
|
|
+ body: opts.serializedBody,
|
|
|
}
|
|
|
|
|
|
let request = new Request(url, requestInit)
|
|
|
@@ -99,36 +97,18 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
}
|
|
|
|
|
|
if (response.ok) {
|
|
|
- const parseAs =
|
|
|
- (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json"
|
|
|
-
|
|
|
if (response.status === 204 || response.headers.get("Content-Length") === "0") {
|
|
|
- let emptyData: any
|
|
|
- switch (parseAs) {
|
|
|
- case "arrayBuffer":
|
|
|
- case "blob":
|
|
|
- case "text":
|
|
|
- emptyData = await response[parseAs]()
|
|
|
- break
|
|
|
- case "formData":
|
|
|
- emptyData = new FormData()
|
|
|
- break
|
|
|
- case "stream":
|
|
|
- emptyData = response.body
|
|
|
- break
|
|
|
- case "json":
|
|
|
- default:
|
|
|
- emptyData = {}
|
|
|
- break
|
|
|
- }
|
|
|
return opts.responseStyle === "data"
|
|
|
- ? emptyData
|
|
|
+ ? {}
|
|
|
: {
|
|
|
- data: emptyData,
|
|
|
+ data: {},
|
|
|
...result,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ const parseAs =
|
|
|
+ (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json"
|
|
|
+
|
|
|
let data: any
|
|
|
switch (parseAs) {
|
|
|
case "arrayBuffer":
|
|
|
@@ -198,53 +178,35 @@ export const createClient = (config: Config = {}): Client => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) => request({ ...options, method })
|
|
|
-
|
|
|
- const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {
|
|
|
- const { opts, url } = await beforeRequest(options)
|
|
|
- return createSseClient({
|
|
|
- ...opts,
|
|
|
- body: opts.body as BodyInit | null | undefined,
|
|
|
- headers: opts.headers as unknown as Record<string, string>,
|
|
|
- method,
|
|
|
- onRequest: async (url, init) => {
|
|
|
- let request = new Request(url, init)
|
|
|
- for (const fn of interceptors.request._fns) {
|
|
|
- if (fn) {
|
|
|
- request = await fn(request, opts)
|
|
|
- }
|
|
|
- }
|
|
|
- return request
|
|
|
- },
|
|
|
- url,
|
|
|
- })
|
|
|
+ const makeMethod = (method: Required<Config>["method"]) => {
|
|
|
+ const fn = (options: RequestOptions) => request({ ...options, method })
|
|
|
+ fn.sse = async (options: RequestOptions) => {
|
|
|
+ const { opts, url } = await beforeRequest(options)
|
|
|
+ return createSseClient({
|
|
|
+ ...opts,
|
|
|
+ body: opts.body as BodyInit | null | undefined,
|
|
|
+ headers: opts.headers as unknown as Record<string, string>,
|
|
|
+ method,
|
|
|
+ url,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return fn
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
buildUrl,
|
|
|
- connect: makeMethodFn("CONNECT"),
|
|
|
- delete: makeMethodFn("DELETE"),
|
|
|
- get: makeMethodFn("GET"),
|
|
|
+ connect: makeMethod("CONNECT"),
|
|
|
+ delete: makeMethod("DELETE"),
|
|
|
+ get: makeMethod("GET"),
|
|
|
getConfig,
|
|
|
- head: makeMethodFn("HEAD"),
|
|
|
+ head: makeMethod("HEAD"),
|
|
|
interceptors,
|
|
|
- options: makeMethodFn("OPTIONS"),
|
|
|
- patch: makeMethodFn("PATCH"),
|
|
|
- post: makeMethodFn("POST"),
|
|
|
- put: makeMethodFn("PUT"),
|
|
|
+ options: makeMethod("OPTIONS"),
|
|
|
+ patch: makeMethod("PATCH"),
|
|
|
+ post: makeMethod("POST"),
|
|
|
+ put: makeMethod("PUT"),
|
|
|
request,
|
|
|
setConfig,
|
|
|
- sse: {
|
|
|
- connect: makeSseFn("CONNECT"),
|
|
|
- delete: makeSseFn("DELETE"),
|
|
|
- get: makeSseFn("GET"),
|
|
|
- head: makeSseFn("HEAD"),
|
|
|
- options: makeSseFn("OPTIONS"),
|
|
|
- patch: makeSseFn("PATCH"),
|
|
|
- post: makeSseFn("POST"),
|
|
|
- put: makeSseFn("PUT"),
|
|
|
- trace: makeSseFn("TRACE"),
|
|
|
- },
|
|
|
- trace: makeMethodFn("TRACE"),
|
|
|
+ trace: makeMethod("TRACE"),
|
|
|
} as Client
|
|
|
}
|