* chore(deps): bump the minor-patch group across 1 directory with 17 updates Bumps the minor-patch group with 17 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@react-router/node](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-node) | `7.12.0` | `7.13.0` | | [@react-router/serve](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-serve) | `7.12.0` | `7.13.0` | | [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono) | `0.9.34` | `0.9.35` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.90.19` | `5.90.20` | | [better-auth](https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth) | `1.4.15` | `1.4.17` | | [hono](https://github.com/honojs/hono) | `4.11.4` | `4.11.5` | | [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `0.562.0` | `0.563.0` | | [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) | `7.12.0` | `7.13.0` | | [recharts](https://github.com/recharts/recharts) | `3.6.0` | `3.7.0` | | [@happy-dom/global-registrator](https://github.com/capricorn86/happy-dom) | `20.3.3` | `20.3.7` | | [@hey-api/openapi-ts](https://github.com/hey-api/openapi-ts) | `0.90.4` | `0.90.9` | | [@playwright/test](https://github.com/microsoft/playwright) | `1.57.0` | `1.58.0` | | [@react-router/dev](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dev) | `7.12.0` | `7.13.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.9` | `25.0.10` | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.8` | `19.2.9` | | [lightningcss](https://github.com/parcel-bundler/lightningcss) | `1.30.2` | `1.31.1` | | [vite-tsconfig-paths](https://github.com/aleclarson/vite-tsconfig-paths) | `6.0.4` | `6.0.5` | Updates `@react-router/node` from 7.12.0 to 7.13.0 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-node/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/@react-router/node@7.13.0/packages/react-router-node) Updates `@react-router/serve` from 7.12.0 to 7.13.0 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-serve/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/@react-router/serve@7.13.0/packages/react-router-serve) Updates `@scalar/hono-api-reference` from 0.9.34 to 0.9.35 - [Release notes](https://github.com/scalar/scalar/releases) - [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md) - [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono) Updates `@tanstack/react-query` from 5.90.19 to 5.90.20 - [Release notes](https://github.com/TanStack/query/releases) - [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md) - [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.90.20/packages/react-query) Updates `better-auth` from 1.4.15 to 1.4.17 - [Release notes](https://github.com/better-auth/better-auth/releases) - [Commits](https://github.com/better-auth/better-auth/commits/v1.4.17/packages/better-auth) Updates `hono` from 4.11.4 to 4.11.5 - [Release notes](https://github.com/honojs/hono/releases) - [Commits](https://github.com/honojs/hono/compare/v4.11.4...v4.11.5) Updates `lucide-react` from 0.562.0 to 0.563.0 - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/0.563.0/packages/lucide-react) Updates `react-router` from 7.12.0 to 7.13.0 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router@7.13.0/packages/react-router) Updates `recharts` from 3.6.0 to 3.7.0 - [Release notes](https://github.com/recharts/recharts/releases) - [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md) - [Commits](https://github.com/recharts/recharts/compare/v3.6.0...v3.7.0) Updates `@happy-dom/global-registrator` from 20.3.3 to 20.3.7 - [Release notes](https://github.com/capricorn86/happy-dom/releases) - [Commits](https://github.com/capricorn86/happy-dom/compare/v20.3.3...v20.3.7) Updates `@hey-api/openapi-ts` from 0.90.4 to 0.90.9 - [Release notes](https://github.com/hey-api/openapi-ts/releases) - [Changelog](https://github.com/hey-api/openapi-ts/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/hey-api/openapi-ts/compare/@hey-api/openapi-ts@0.90.4...@hey-api/openapi-ts@0.90.9) Updates `@playwright/test` from 1.57.0 to 1.58.0 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.57.0...v1.58.0) Updates `@react-router/dev` from 7.12.0 to 7.13.0 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dev/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/@react-router/dev@7.13.0/packages/react-router-dev) Updates `@types/node` from 25.0.9 to 25.0.10 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@types/react` from 19.2.8 to 19.2.9 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `lightningcss` from 1.30.2 to 1.31.1 - [Release notes](https://github.com/parcel-bundler/lightningcss/releases) - [Commits](https://github.com/parcel-bundler/lightningcss/commits) Updates `vite-tsconfig-paths` from 6.0.4 to 6.0.5 - [Release notes](https://github.com/aleclarson/vite-tsconfig-paths/releases) - [Commits](https://github.com/aleclarson/vite-tsconfig-paths/compare/v6.0.4...v6.0.5) --- updated-dependencies: - dependency-name: "@react-router/node" dependency-version: 7.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@react-router/serve" dependency-version: 7.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@scalar/hono-api-reference" dependency-version: 0.9.35 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@tanstack/react-query" dependency-version: 5.90.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: better-auth dependency-version: 1.4.17 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: hono dependency-version: 4.11.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: lucide-react dependency-version: 0.563.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: react-router dependency-version: 7.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: recharts dependency-version: 3.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@happy-dom/global-registrator" dependency-version: 20.3.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@hey-api/openapi-ts" dependency-version: 0.90.9 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@playwright/test" dependency-version: 1.58.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@react-router/dev" dependency-version: 7.13.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@types/node" dependency-version: 25.0.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@types/react" dependency-version: 19.2.9 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: lightningcss dependency-version: 1.31.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: vite-tsconfig-paths dependency-version: 6.0.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch ... Signed-off-by: dependabot[bot] <support@github.com> * chore: bump hono version in overrides * chore: gen api client --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicolas Meienberger <github@thisprops.com>
285 lines
6.6 KiB
TypeScript
285 lines
6.6 KiB
TypeScript
// This file is auto-generated by @hey-api/openapi-ts
|
|
|
|
import { createSseClient } from "../core/serverSentEvents.gen";
|
|
import type { HttpMethod } from "../core/types.gen";
|
|
import { getValidRequestBody } from "../core/utils.gen";
|
|
import type { Client, Config, RequestOptions, ResolvedRequestOptions } from "./types.gen";
|
|
import {
|
|
buildUrl,
|
|
createConfig,
|
|
createInterceptors,
|
|
getParseAs,
|
|
mergeConfigs,
|
|
mergeHeaders,
|
|
setAuthParams,
|
|
} from "./utils.gen";
|
|
|
|
type ReqInit = Omit<RequestInit, "body" | "headers"> & {
|
|
body?: any;
|
|
headers: ReturnType<typeof mergeHeaders>;
|
|
};
|
|
|
|
export const createClient = (config: Config = {}): Client => {
|
|
let _config = mergeConfigs(createConfig(), config);
|
|
|
|
const getConfig = (): Config => ({ ..._config });
|
|
|
|
const setConfig = (config: Config): Config => {
|
|
_config = mergeConfigs(_config, config);
|
|
return getConfig();
|
|
};
|
|
|
|
const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();
|
|
|
|
const beforeRequest = async (options: RequestOptions) => {
|
|
const opts = {
|
|
..._config,
|
|
...options,
|
|
fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
|
|
headers: mergeHeaders(_config.headers, options.headers),
|
|
serializedBody: undefined,
|
|
};
|
|
|
|
if (opts.security) {
|
|
await setAuthParams({
|
|
...opts,
|
|
security: opts.security,
|
|
});
|
|
}
|
|
|
|
if (opts.requestValidator) {
|
|
await opts.requestValidator(opts);
|
|
}
|
|
|
|
if (opts.body !== undefined && 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 === "") {
|
|
opts.headers.delete("Content-Type");
|
|
}
|
|
|
|
const url = buildUrl(opts);
|
|
|
|
return { opts, url };
|
|
};
|
|
|
|
const request: Client["request"] = async (options) => {
|
|
// @ts-expect-error
|
|
const { opts, url } = await beforeRequest(options);
|
|
const requestInit: ReqInit = {
|
|
redirect: "follow",
|
|
...opts,
|
|
body: getValidRequestBody(opts),
|
|
};
|
|
|
|
let request = new Request(url, requestInit);
|
|
|
|
for (const fn of interceptors.request.fns) {
|
|
if (fn) {
|
|
request = await fn(request, opts);
|
|
}
|
|
}
|
|
|
|
// fetch must be assigned here, otherwise it would throw the error:
|
|
// TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
|
|
const _fetch = opts.fetch!;
|
|
let response: Response;
|
|
|
|
try {
|
|
response = await _fetch(request);
|
|
} catch (error) {
|
|
// Handle fetch exceptions (AbortError, network errors, etc.)
|
|
let finalError = error;
|
|
|
|
for (const fn of interceptors.error.fns) {
|
|
if (fn) {
|
|
finalError = (await fn(error, undefined as any, request, opts)) as unknown;
|
|
}
|
|
}
|
|
|
|
finalError = finalError || ({} as unknown);
|
|
|
|
if (opts.throwOnError) {
|
|
throw finalError;
|
|
}
|
|
|
|
// Return error response
|
|
return opts.responseStyle === "data"
|
|
? undefined
|
|
: {
|
|
error: finalError,
|
|
request,
|
|
response: undefined as any,
|
|
};
|
|
}
|
|
|
|
for (const fn of interceptors.response.fns) {
|
|
if (fn) {
|
|
response = await fn(response, request, opts);
|
|
}
|
|
}
|
|
|
|
const result = {
|
|
request,
|
|
response,
|
|
};
|
|
|
|
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,
|
|
...result,
|
|
};
|
|
}
|
|
|
|
let data: any;
|
|
switch (parseAs) {
|
|
case "arrayBuffer":
|
|
case "blob":
|
|
case "formData":
|
|
case "text":
|
|
data = await response[parseAs]();
|
|
break;
|
|
case "json": {
|
|
// Some servers return 200 with no Content-Length and empty body.
|
|
// response.json() would throw; read as text and parse if non-empty.
|
|
const text = await response.text();
|
|
data = text ? JSON.parse(text) : {};
|
|
break;
|
|
}
|
|
case "stream":
|
|
return opts.responseStyle === "data"
|
|
? response.body
|
|
: {
|
|
data: response.body,
|
|
...result,
|
|
};
|
|
}
|
|
|
|
if (parseAs === "json") {
|
|
if (opts.responseValidator) {
|
|
await opts.responseValidator(data);
|
|
}
|
|
|
|
if (opts.responseTransformer) {
|
|
data = await opts.responseTransformer(data);
|
|
}
|
|
}
|
|
|
|
return opts.responseStyle === "data"
|
|
? data
|
|
: {
|
|
data,
|
|
...result,
|
|
};
|
|
}
|
|
|
|
const textError = await response.text();
|
|
let jsonError: unknown;
|
|
|
|
try {
|
|
jsonError = JSON.parse(textError);
|
|
} catch {
|
|
// noop
|
|
}
|
|
|
|
const error = jsonError ?? textError;
|
|
let finalError = error;
|
|
|
|
for (const fn of interceptors.error.fns) {
|
|
if (fn) {
|
|
finalError = (await fn(error, response, request, opts)) as string;
|
|
}
|
|
}
|
|
|
|
finalError = finalError || ({} as string);
|
|
|
|
if (opts.throwOnError) {
|
|
throw finalError;
|
|
}
|
|
|
|
// TODO: we probably want to return error and improve types
|
|
return opts.responseStyle === "data"
|
|
? undefined
|
|
: {
|
|
error: finalError,
|
|
...result,
|
|
};
|
|
};
|
|
|
|
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;
|
|
},
|
|
serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,
|
|
url,
|
|
});
|
|
};
|
|
|
|
return {
|
|
buildUrl,
|
|
connect: makeMethodFn("CONNECT"),
|
|
delete: makeMethodFn("DELETE"),
|
|
get: makeMethodFn("GET"),
|
|
getConfig,
|
|
head: makeMethodFn("HEAD"),
|
|
interceptors,
|
|
options: makeMethodFn("OPTIONS"),
|
|
patch: makeMethodFn("PATCH"),
|
|
post: makeMethodFn("POST"),
|
|
put: makeMethodFn("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"),
|
|
} as Client;
|
|
};
|