diff --git a/.changeset/nine-cats-cross.md b/.changeset/nine-cats-cross.md
index 748ecf200..b07d12c17 100644
--- a/.changeset/nine-cats-cross.md
+++ b/.changeset/nine-cats-cross.md
@@ -2,4 +2,4 @@
'@hey-api/openapi-ts': patch
---
-fix(sdk): add paramsStructure field
+fix(sdk): add `paramsStructure` option
diff --git a/dev/openapi-ts.config.ts b/dev/openapi-ts.config.ts
index 7ca575a03..8d573d2bc 100644
--- a/dev/openapi-ts.config.ts
+++ b/dev/openapi-ts.config.ts
@@ -41,12 +41,12 @@ export default defineConfig(() => {
// 'invalid',
// 'openai.yaml',
// 'full.yaml',
- 'opencode.yaml',
+ // 'opencode.yaml',
// 'sdk-instance.yaml',
// 'string-with-format.yaml',
// 'transformers.json',
// 'type-format.yaml',
- // 'validators.yaml',
+ 'validators.yaml',
// 'validators-circular-ref.json',
// 'validators-circular-ref-2.yaml',
// 'zoom-video-sdk.json',
@@ -260,7 +260,7 @@ export default defineConfig(() => {
// },
// include...
instance: true,
- name: '@hey-api/sdk',
+ // name: '@hey-api/sdk',
// operationId: false,
paramsStructure: 'flat',
// responseStyle: 'data',
@@ -335,7 +335,7 @@ export default defineConfig(() => {
},
},
{
- // name: 'arktype',
+ name: 'arktype',
// types: {
// infer: true,
// },
@@ -346,7 +346,7 @@ export default defineConfig(() => {
// definitions: 'z{{name}}Definition',
exportFromIndex: true,
// metadata: true,
- // name: 'valibot',
+ name: 'valibot',
// requests: {
// case: 'PascalCase',
// name: '{{name}}Data',
@@ -396,7 +396,7 @@ export default defineConfig(() => {
},
// exportFromIndex: true,
// metadata: true,
- // name: 'zod',
+ name: 'zod',
// requests: {
// // case: 'SCREAMING_SNAKE_CASE',
// // name: 'z{{name}}TestData',
@@ -417,9 +417,9 @@ export default defineConfig(() => {
// },
},
types: {
- infer: {
- case: 'snake_case',
- },
+ // infer: {
+ // case: 'snake_case',
+ // },
},
'~hooks': {
symbols: {
diff --git a/dev/package.json b/dev/package.json
new file mode 100644
index 000000000..7ba556089
--- /dev/null
+++ b/dev/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@test/openapi-ts-playground",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "devDependencies": {
+ "@angular-devkit/build-angular": "19.2.19",
+ "@angular/animations": "19.2.15",
+ "@angular/cli": "19.2.19",
+ "@angular/common": "19.2.15",
+ "@angular/compiler": "19.2.15",
+ "@angular/compiler-cli": "19.2.15",
+ "@angular/core": "19.2.15",
+ "@angular/forms": "19.2.15",
+ "@angular/platform-browser": "19.2.15",
+ "@angular/platform-browser-dynamic": "19.2.15",
+ "@angular/router": "19.2.15",
+ "@config/vite-base": "workspace:*",
+ "@hey-api/codegen-core": "workspace:*",
+ "@hey-api/custom-client": "workspace:*",
+ "@hey-api/openapi-ts": "workspace:*",
+ "@pinia/colada": "0.17.7",
+ "@tanstack/angular-query-experimental": "5.73.3",
+ "@tanstack/react-query": "5.73.3",
+ "@tanstack/solid-query": "5.73.3",
+ "@tanstack/svelte-query": "5.73.3",
+ "@tanstack/vue-query": "5.73.3",
+ "@types/cross-spawn": "6.0.6",
+ "ajv": "8.17.1",
+ "arktype": "2.1.25",
+ "axios": "1.8.2",
+ "cross-spawn": "7.0.6",
+ "eslint": "9.17.0",
+ "fastify": "5.2.0",
+ "glob": "11.0.3",
+ "node-fetch": "3.3.2",
+ "nuxt": "3.14.1592",
+ "ofetch": "1.4.1",
+ "prettier": "3.4.2",
+ "rxjs": "7.8.2",
+ "ts-node": "10.9.2",
+ "tslib": "2.8.1",
+ "typescript": "5.9.3",
+ "valibot": "1.1.0",
+ "vue": "3.5.13",
+ "zod": "4.1.12"
+ }
+}
diff --git a/dev/tsconfig.json b/dev/tsconfig.json
new file mode 100644
index 000000000..3d795553d
--- /dev/null
+++ b/dev/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../packages/openapi-ts-tests/tsconfig.base.json",
+ "compilerOptions": {
+ "allowImportingTsExtensions": true,
+ "declaration": false,
+ "esModuleInterop": true,
+ "noEmit": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true
+ }
+}
diff --git a/dev/turbo.json b/dev/turbo.json
new file mode 100644
index 000000000..f98d36d36
--- /dev/null
+++ b/dev/turbo.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "../node_modules/turbo/schema.json",
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "dependsOn": [],
+ "outputs": ["dist/**"]
+ }
+ }
+}
diff --git a/examples/openapi-ts-sample/.gitignore b/examples/openapi-ts-sample/.gitignore
deleted file mode 100644
index a547bf36d..000000000
--- a/examples/openapi-ts-sample/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/examples/openapi-ts-sample/CHANGELOG.md b/examples/openapi-ts-sample/CHANGELOG.md
deleted file mode 100644
index edd50ad37..000000000
--- a/examples/openapi-ts-sample/CHANGELOG.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# @example/openapi-ts-sample
-
-## 0.0.17
-
-### Patch Changes
-
-- Updated dependencies [[`f23f3ae`](https://github.com/hey-api/openapi-ts/commit/f23f3ae874385e758eb8d43bb4e274c9858a4e40)]:
- - @hey-api/client-fetch@0.13.1
-
-## 0.0.16
-
-### Patch Changes
-
-- Updated dependencies [[`10d2e03`](https://github.com/hey-api/openapi-ts/commit/10d2e03b8295e4e887fab8d023aa823699efbae8)]:
- - @hey-api/client-fetch@0.13.0
-
-## 0.0.15
-
-### Patch Changes
-
-- Updated dependencies [[`4d8c030`](https://github.com/hey-api/openapi-ts/commit/4d8c03038979c9a75315cc158789b3c198c62f90)]:
- - @hey-api/client-fetch@0.12.0
-
-## 0.0.14
-
-### Patch Changes
-
-- Updated dependencies [[`8152aaf`](https://github.com/hey-api/openapi-ts/commit/8152aaf4892c48b79fd3dc486eb3c0ea333dc3e6)]:
- - @hey-api/client-fetch@0.11.0
-
-## 0.0.13
-
-### Patch Changes
-
-- Updated dependencies [[`1f99066`](https://github.com/hey-api/openapi-ts/commit/1f99066efbb2d0e6b9e3710c701293c2cc09d65e)]:
- - @hey-api/client-fetch@0.10.2
-
-## 0.0.12
-
-### Patch Changes
-
-- Updated dependencies [[`565e0b8`](https://github.com/hey-api/openapi-ts/commit/565e0b89fbab4556ecdc63dfe08250942681140e)]:
- - @hey-api/client-fetch@0.10.1
-
-## 0.0.11
-
-### Patch Changes
-
-- Updated dependencies [[`fed9699`](https://github.com/hey-api/openapi-ts/commit/fed969985275621c7c2b65ffc760c7c66fafaf72)]:
- - @hey-api/client-fetch@0.10.0
-
-## 0.0.10
-
-### Patch Changes
-
-- Updated dependencies [[`67c385b`](https://github.com/hey-api/openapi-ts/commit/67c385bf6289a79726b0cdd85fd81ca501cf2248)]:
- - @hey-api/client-fetch@0.9.0
-
-## 0.0.9
-
-### Patch Changes
-
-- Updated dependencies [[`fe43b88`](https://github.com/hey-api/openapi-ts/commit/fe43b889c20a2001f56e259f93f64851a1caa1d1)]:
- - @hey-api/client-fetch@0.8.4
-
-## 0.0.8
-
-### Patch Changes
-
-- Updated dependencies [[`c0b36b9`](https://github.com/hey-api/openapi-ts/commit/c0b36b95645d484034c3af145c5554867568979b)]:
- - @hey-api/client-fetch@0.8.3
-
-## 0.0.7
-
-### Patch Changes
-
-- Updated dependencies [[`b8cc9f8`](https://github.com/hey-api/openapi-ts/commit/b8cc9f8a5eaf4f4ff345abc49c14c6b96744c2ea)]:
- - @hey-api/client-fetch@0.8.2
-
-## 0.0.6
-
-### Patch Changes
-
-- Updated dependencies [[`7f0f4a7`](https://github.com/hey-api/openapi-ts/commit/7f0f4a76b06c8fafb33581b522faf8efc6fd85ac)]:
- - @hey-api/client-fetch@0.8.1
-
-## 0.0.5
-
-### Patch Changes
-
-- Updated dependencies [[`bb6d46a`](https://github.com/hey-api/openapi-ts/commit/bb6d46ae119ce4e7e3a2ab3fded74ac4fb4cdff2)]:
- - @hey-api/client-fetch@0.8.0
-
-## 0.0.4
-
-### Patch Changes
-
-- Updated dependencies [[`2dc380e`](https://github.com/hey-api/openapi-ts/commit/2dc380eabc17c723654beb04ecd7bce6d33d3b49), [`603541e`](https://github.com/hey-api/openapi-ts/commit/603541e307dc2953da7dddd300176865629b50bb), [`2cbffeb`](https://github.com/hey-api/openapi-ts/commit/2cbffeb2cdd6c6143cd68cac68369584879dda31), [`2cbffeb`](https://github.com/hey-api/openapi-ts/commit/2cbffeb2cdd6c6143cd68cac68369584879dda31)]:
- - @hey-api/client-fetch@0.7.3
-
-## 0.0.3
-
-### Patch Changes
-
-- Updated dependencies [[`8eba19d`](https://github.com/hey-api/openapi-ts/commit/8eba19d4092fc0903572ab9fdadf0b4c26928ba2)]:
- - @hey-api/client-fetch@0.7.2
-
-## 0.0.2
-
-### Patch Changes
-
-- Updated dependencies [[`0432418`](https://github.com/hey-api/openapi-ts/commit/0432418d72c94ef94865f8216ed2f723ad5191f9), [`4784727`](https://github.com/hey-api/openapi-ts/commit/47847276e8bc854045044dd414382080270dd779)]:
- - @hey-api/client-fetch@0.7.1
diff --git a/examples/openapi-ts-sample/index.html b/examples/openapi-ts-sample/index.html
deleted file mode 100644
index d301a3a91..000000000
--- a/examples/openapi-ts-sample/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- Hey API + Fetch API Demo
-
-
-
-
-
-
diff --git a/examples/openapi-ts-sample/openapi-ts.config.ts b/examples/openapi-ts-sample/openapi-ts.config.ts
deleted file mode 100644
index c37931115..000000000
--- a/examples/openapi-ts-sample/openapi-ts.config.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { defineConfig } from '@hey-api/openapi-ts';
-
-export default defineConfig({
- input:
- 'https://raw.githubusercontent.com/swagger-api/swagger-petstore/master/src/main/resources/openapi.yaml',
- output: {
- format: 'prettier',
- lint: 'eslint',
- path: './src/client',
- },
- plugins: [
- {
- name: '@hey-api/client-fetch',
- runtimeConfigPath: './src/hey-api.ts',
- },
- '@hey-api/schemas',
- {
- name: '@hey-api/sdk',
- validator: 'zod',
- },
- {
- enums: 'javascript',
- name: '@hey-api/typescript',
- },
- ],
-});
diff --git a/examples/openapi-ts-sample/package.json b/examples/openapi-ts-sample/package.json
deleted file mode 100644
index 02c16705f..000000000
--- a/examples/openapi-ts-sample/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "@example/openapi-ts-sample",
- "private": true,
- "version": "0.0.17",
- "type": "module",
- "scripts": {
- "build": "tsc && vite build",
- "dev": "vite",
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
- "openapi-ts": "openapi-ts",
- "preview": "vite preview",
- "typecheck": "tsc --noEmit"
- },
- "dependencies": {
- "@radix-ui/react-form": "0.1.1",
- "@radix-ui/react-icons": "1.3.2",
- "@radix-ui/themes": "3.1.6",
- "react": "19.0.0",
- "react-dom": "19.0.0",
- "valibot": "1.1.0",
- "zod": "4.0.5"
- },
- "devDependencies": {
- "@config/vite-base": "workspace:*",
- "@hey-api/openapi-ts": "workspace:*",
- "@types/react": "19.0.1",
- "@types/react-dom": "19.0.1",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
- "@vitejs/plugin-react": "4.4.0-beta.1",
- "autoprefixer": "10.4.19",
- "eslint": "9.17.0",
- "eslint-plugin-react-hooks": "5.2.0",
- "eslint-plugin-react-refresh": "0.4.7",
- "postcss": "8.4.41",
- "prettier": "3.4.2",
- "tailwindcss": "3.4.9",
- "typescript": "5.8.3",
- "vite": "7.1.2"
- }
-}
diff --git a/examples/openapi-ts-sample/postcss.config.js b/examples/openapi-ts-sample/postcss.config.js
deleted file mode 100644
index 9eef821c4..000000000
--- a/examples/openapi-ts-sample/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
- plugins: {
- autoprefixer: {},
- tailwindcss: {},
- },
-};
diff --git a/examples/openapi-ts-sample/src/App.css b/examples/openapi-ts-sample/src/App.css
deleted file mode 100644
index b5c61c956..000000000
--- a/examples/openapi-ts-sample/src/App.css
+++ /dev/null
@@ -1,3 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
diff --git a/examples/openapi-ts-sample/src/App.tsx b/examples/openapi-ts-sample/src/App.tsx
deleted file mode 100644
index 30976530a..000000000
--- a/examples/openapi-ts-sample/src/App.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import './App.css';
-
-import {
- Box,
- Button,
- Container,
- Flex,
- Heading,
- Section,
-} from '@radix-ui/themes';
-
-import { getPetById } from './client/sdk.gen';
-
-function App() {
- const onClick = async () => {
- const response = await getPetById({
- path: {
- // @ts-expect-error
- foo: 3,
- petId: 3,
- },
- });
- console.log(response);
- };
-
- return (
-
-
-
-
- sample for internal testing
-
-
-
-
-
-
-
-
- );
-}
-
-export default App;
diff --git a/examples/openapi-ts-sample/src/client/client.gen.ts b/examples/openapi-ts-sample/src/client/client.gen.ts
deleted file mode 100644
index 4e785697c..000000000
--- a/examples/openapi-ts-sample/src/client/client.gen.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import {
- type ClientOptions,
- type Config,
- createClient,
- createConfig,
-} from './client';
-import { createClientConfig } from './src/hey-api.ts';
-import type { ClientOptions as ClientOptions2 } from './types.gen';
-
-/**
- * The `createClientConfig()` function will be called on client initialization
- * and the returned object will become the client's initial configuration.
- *
- * You may want to initialize your client this way instead of calling
- * `setConfig()`. This is useful for example if you're using Next.js
- * to ensure your client always has the correct values.
- */
-export type CreateClientConfig = (
- override?: Config,
-) => Config & T>;
-
-export const client = createClient(
- createClientConfig(
- createConfig({
- baseUrl: 'https://petstore3.swagger.io/api/v3',
- }),
- ),
-);
diff --git a/examples/openapi-ts-sample/src/client/client/client.gen.ts b/examples/openapi-ts-sample/src/client/client/client.gen.ts
deleted file mode 100644
index a439d2748..000000000
--- a/examples/openapi-ts-sample/src/client/client/client.gen.ts
+++ /dev/null
@@ -1,268 +0,0 @@
-// 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 & {
- body?: any;
- headers: ReturnType;
-};
-
-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 = await _fetch(request);
-
- 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 'json':
- case 'text':
- data = await response[parseAs]();
- 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) => (options: RequestOptions) =>
- request({ ...options, method });
-
- const makeSseFn =
- (method: Uppercase) => 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,
- 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,
- });
- };
-
- 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;
-};
diff --git a/examples/openapi-ts-sample/src/client/client/index.ts b/examples/openapi-ts-sample/src/client/client/index.ts
deleted file mode 100644
index cbf8dfeed..000000000
--- a/examples/openapi-ts-sample/src/client/client/index.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-export type { Auth } from '../core/auth.gen';
-export type { QuerySerializerOptions } from '../core/bodySerializer.gen';
-export {
- formDataBodySerializer,
- jsonBodySerializer,
- urlSearchParamsBodySerializer,
-} from '../core/bodySerializer.gen';
-export { buildClientParams } from '../core/params.gen';
-export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen';
-export { createClient } from './client.gen';
-export type {
- Client,
- ClientOptions,
- Config,
- CreateClientConfig,
- Options,
- OptionsLegacyParser,
- RequestOptions,
- RequestResult,
- ResolvedRequestOptions,
- ResponseStyle,
- TDataShape,
-} from './types.gen';
-export { createConfig, mergeHeaders } from './utils.gen';
diff --git a/examples/openapi-ts-sample/src/client/client/types.gen.ts b/examples/openapi-ts-sample/src/client/client/types.gen.ts
deleted file mode 100644
index 5c70971f2..000000000
--- a/examples/openapi-ts-sample/src/client/client/types.gen.ts
+++ /dev/null
@@ -1,268 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import type { Auth } from '../core/auth.gen';
-import type {
- ServerSentEventsOptions,
- ServerSentEventsResult,
-} from '../core/serverSentEvents.gen';
-import type {
- Client as CoreClient,
- Config as CoreConfig,
-} from '../core/types.gen';
-import type { Middleware } from './utils.gen';
-
-export type ResponseStyle = 'data' | 'fields';
-
-export interface Config
- extends Omit,
- CoreConfig {
- /**
- * Base URL for all requests made by this client.
- */
- baseUrl?: T['baseUrl'];
- /**
- * Fetch API implementation. You can use this option to provide a custom
- * fetch instance.
- *
- * @default globalThis.fetch
- */
- fetch?: typeof fetch;
- /**
- * Please don't use the Fetch client for Next.js applications. The `next`
- * options won't have any effect.
- *
- * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead.
- */
- next?: never;
- /**
- * Return the response data parsed in a specified format. By default, `auto`
- * will infer the appropriate method from the `Content-Type` response header.
- * You can override this behavior with any of the {@link Body} methods.
- * Select `stream` if you don't want to parse response data at all.
- *
- * @default 'auto'
- */
- parseAs?:
- | 'arrayBuffer'
- | 'auto'
- | 'blob'
- | 'formData'
- | 'json'
- | 'stream'
- | 'text';
- /**
- * Should we return only data or multiple fields (data, error, response, etc.)?
- *
- * @default 'fields'
- */
- responseStyle?: ResponseStyle;
- /**
- * Throw an error instead of returning it in the response?
- *
- * @default false
- */
- throwOnError?: T['throwOnError'];
-}
-
-export interface RequestOptions<
- TData = unknown,
- TResponseStyle extends ResponseStyle = 'fields',
- ThrowOnError extends boolean = boolean,
- Url extends string = string,
-> extends Config<{
- responseStyle: TResponseStyle;
- throwOnError: ThrowOnError;
- }>,
- Pick<
- ServerSentEventsOptions,
- | 'onSseError'
- | 'onSseEvent'
- | 'sseDefaultRetryDelay'
- | 'sseMaxRetryAttempts'
- | 'sseMaxRetryDelay'
- > {
- /**
- * Any body that you want to add to your request.
- *
- * {@link https://developer.mozilla.org/docs/Web/API/fetch#body}
- */
- body?: unknown;
- path?: Record;
- query?: Record;
- /**
- * Security mechanism(s) to use for the request.
- */
- security?: ReadonlyArray;
- url: Url;
-}
-
-export interface ResolvedRequestOptions<
- TResponseStyle extends ResponseStyle = 'fields',
- ThrowOnError extends boolean = boolean,
- Url extends string = string,
-> extends RequestOptions {
- serializedBody?: string;
-}
-
-export type RequestResult<
- TData = unknown,
- TError = unknown,
- ThrowOnError extends boolean = boolean,
- TResponseStyle extends ResponseStyle = 'fields',
-> = ThrowOnError extends true
- ? Promise<
- TResponseStyle extends 'data'
- ? TData extends Record
- ? TData[keyof TData]
- : TData
- : {
- data: TData extends Record
- ? TData[keyof TData]
- : TData;
- request: Request;
- response: Response;
- }
- >
- : Promise<
- TResponseStyle extends 'data'
- ?
- | (TData extends Record
- ? TData[keyof TData]
- : TData)
- | undefined
- : (
- | {
- data: TData extends Record
- ? TData[keyof TData]
- : TData;
- error: undefined;
- }
- | {
- data: undefined;
- error: TError extends Record
- ? TError[keyof TError]
- : TError;
- }
- ) & {
- request: Request;
- response: Response;
- }
- >;
-
-export interface ClientOptions {
- baseUrl?: string;
- responseStyle?: ResponseStyle;
- throwOnError?: boolean;
-}
-
-type MethodFn = <
- TData = unknown,
- TError = unknown,
- ThrowOnError extends boolean = false,
- TResponseStyle extends ResponseStyle = 'fields',
->(
- options: Omit, 'method'>,
-) => RequestResult;
-
-type SseFn = <
- TData = unknown,
- TError = unknown,
- ThrowOnError extends boolean = false,
- TResponseStyle extends ResponseStyle = 'fields',
->(
- options: Omit, 'method'>,
-) => Promise>;
-
-type RequestFn = <
- TData = unknown,
- TError = unknown,
- ThrowOnError extends boolean = false,
- TResponseStyle extends ResponseStyle = 'fields',
->(
- options: Omit, 'method'> &
- Pick<
- Required>,
- 'method'
- >,
-) => RequestResult;
-
-type BuildUrlFn = <
- TData extends {
- body?: unknown;
- path?: Record;
- query?: Record;
- url: string;
- },
->(
- options: TData & Options,
-) => string;
-
-export type Client = CoreClient<
- RequestFn,
- Config,
- MethodFn,
- BuildUrlFn,
- SseFn
-> & {
- interceptors: Middleware;
-};
-
-/**
- * The `createClientConfig()` function will be called on client initialization
- * and the returned object will become the client's initial configuration.
- *
- * You may want to initialize your client this way instead of calling
- * `setConfig()`. This is useful for example if you're using Next.js
- * to ensure your client always has the correct values.
- */
-export type CreateClientConfig = (
- override?: Config,
-) => Config & T>;
-
-export interface TDataShape {
- body?: unknown;
- headers?: unknown;
- path?: unknown;
- query?: unknown;
- url: string;
-}
-
-type OmitKeys = Pick>;
-
-export type Options<
- TData extends TDataShape = TDataShape,
- ThrowOnError extends boolean = boolean,
- TResponse = unknown,
- TResponseStyle extends ResponseStyle = 'fields',
-> = OmitKeys<
- RequestOptions,
- 'body' | 'path' | 'query' | 'url'
-> &
- ([TData] extends [never] ? unknown : Omit);
-
-export type OptionsLegacyParser<
- TData = unknown,
- ThrowOnError extends boolean = boolean,
- TResponseStyle extends ResponseStyle = 'fields',
-> = TData extends { body?: any }
- ? TData extends { headers?: any }
- ? OmitKeys<
- RequestOptions,
- 'body' | 'headers' | 'url'
- > &
- TData
- : OmitKeys<
- RequestOptions,
- 'body' | 'url'
- > &
- TData &
- Pick, 'headers'>
- : TData extends { headers?: any }
- ? OmitKeys<
- RequestOptions,
- 'headers' | 'url'
- > &
- TData &
- Pick, 'body'>
- : OmitKeys, 'url'> &
- TData;
diff --git a/examples/openapi-ts-sample/src/client/client/utils.gen.ts b/examples/openapi-ts-sample/src/client/client/utils.gen.ts
deleted file mode 100644
index 89416454b..000000000
--- a/examples/openapi-ts-sample/src/client/client/utils.gen.ts
+++ /dev/null
@@ -1,337 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import { getAuthToken } from '../core/auth.gen';
-import type { QuerySerializerOptions } from '../core/bodySerializer.gen';
-import { jsonBodySerializer } from '../core/bodySerializer.gen';
-import {
- serializeArrayParam,
- serializeObjectParam,
- serializePrimitiveParam,
-} from '../core/pathSerializer.gen';
-import { getUrl } from '../core/utils.gen';
-import type {
- Client,
- ClientOptions,
- Config,
- RequestOptions,
-} from './types.gen';
-
-export const createQuerySerializer = ({
- parameters = {},
- ...args
-}: QuerySerializerOptions = {}) => {
- const querySerializer = (queryParams: T) => {
- const search: string[] = [];
- if (queryParams && typeof queryParams === 'object') {
- for (const name in queryParams) {
- const value = queryParams[name];
-
- if (value === undefined || value === null) {
- continue;
- }
-
- const options = parameters[name] || args;
-
- if (Array.isArray(value)) {
- const serializedArray = serializeArrayParam({
- allowReserved: options.allowReserved,
- explode: true,
- name,
- style: 'form',
- value,
- ...options.array,
- });
- if (serializedArray) search.push(serializedArray);
- } else if (typeof value === 'object') {
- const serializedObject = serializeObjectParam({
- allowReserved: options.allowReserved,
- explode: true,
- name,
- style: 'deepObject',
- value: value as Record,
- ...options.object,
- });
- if (serializedObject) search.push(serializedObject);
- } else {
- const serializedPrimitive = serializePrimitiveParam({
- allowReserved: options.allowReserved,
- name,
- value: value as string,
- });
- if (serializedPrimitive) search.push(serializedPrimitive);
- }
- }
- }
- return search.join('&');
- };
- return querySerializer;
-};
-
-/**
- * Infers parseAs value from provided Content-Type header.
- */
-export const getParseAs = (
- contentType: string | null,
-): Exclude => {
- if (!contentType) {
- // If no Content-Type header is provided, the best we can do is return the raw response body,
- // which is effectively the same as the 'stream' option.
- return 'stream';
- }
-
- const cleanContent = contentType.split(';')[0]?.trim();
-
- if (!cleanContent) {
- return;
- }
-
- if (
- cleanContent.startsWith('application/json') ||
- cleanContent.endsWith('+json')
- ) {
- return 'json';
- }
-
- if (cleanContent === 'multipart/form-data') {
- return 'formData';
- }
-
- if (
- ['application/', 'audio/', 'image/', 'video/'].some((type) =>
- cleanContent.startsWith(type),
- )
- ) {
- return 'blob';
- }
-
- if (cleanContent.startsWith('text/')) {
- return 'text';
- }
-
- return;
-};
-
-const checkForExistence = (
- options: Pick & {
- headers: Headers;
- },
- name?: string,
-): boolean => {
- if (!name) {
- return false;
- }
- if (
- options.headers.has(name) ||
- options.query?.[name] ||
- options.headers.get('Cookie')?.includes(`${name}=`)
- ) {
- return true;
- }
- return false;
-};
-
-export const setAuthParams = async ({
- security,
- ...options
-}: Pick, 'security'> &
- Pick & {
- headers: Headers;
- }) => {
- for (const auth of security) {
- if (checkForExistence(options, auth.name)) {
- continue;
- }
-
- const token = await getAuthToken(auth, options.auth);
-
- if (!token) {
- continue;
- }
-
- const name = auth.name ?? 'Authorization';
-
- switch (auth.in) {
- case 'query':
- if (!options.query) {
- options.query = {};
- }
- options.query[name] = token;
- break;
- case 'cookie':
- options.headers.append('Cookie', `${name}=${token}`);
- break;
- case 'header':
- default:
- options.headers.set(name, token);
- break;
- }
- }
-};
-
-export const buildUrl: Client['buildUrl'] = (options) =>
- getUrl({
- baseUrl: options.baseUrl as string,
- path: options.path,
- query: options.query,
- querySerializer:
- typeof options.querySerializer === 'function'
- ? options.querySerializer
- : createQuerySerializer(options.querySerializer),
- url: options.url,
- });
-
-export const mergeConfigs = (a: Config, b: Config): Config => {
- const config = { ...a, ...b };
- if (config.baseUrl?.endsWith('/')) {
- config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
- }
- config.headers = mergeHeaders(a.headers, b.headers);
- return config;
-};
-
-const headersEntries = (headers: Headers): Array<[string, string]> => {
- const entries: Array<[string, string]> = [];
- headers.forEach((value, key) => {
- entries.push([key, value]);
- });
- return entries;
-};
-
-export const mergeHeaders = (
- ...headers: Array['headers'] | undefined>
-): Headers => {
- const mergedHeaders = new Headers();
- for (const header of headers) {
- if (!header) {
- continue;
- }
-
- const iterator =
- header instanceof Headers
- ? headersEntries(header)
- : Object.entries(header);
-
- for (const [key, value] of iterator) {
- if (value === null) {
- mergedHeaders.delete(key);
- } else if (Array.isArray(value)) {
- for (const v of value) {
- mergedHeaders.append(key, v as string);
- }
- } else if (value !== undefined) {
- // assume object headers are meant to be JSON stringified, i.e. their
- // content value in OpenAPI specification is 'application/json'
- mergedHeaders.set(
- key,
- typeof value === 'object' ? JSON.stringify(value) : (value as string),
- );
- }
- }
- }
- return mergedHeaders;
-};
-
-type ErrInterceptor = (
- error: Err,
- response: Res,
- request: Req,
- options: Options,
-) => Err | Promise;
-
-type ReqInterceptor = (
- request: Req,
- options: Options,
-) => Req | Promise;
-
-type ResInterceptor = (
- response: Res,
- request: Req,
- options: Options,
-) => Res | Promise;
-
-class Interceptors {
- fns: Array = [];
-
- clear(): void {
- this.fns = [];
- }
-
- eject(id: number | Interceptor): void {
- const index = this.getInterceptorIndex(id);
- if (this.fns[index]) {
- this.fns[index] = null;
- }
- }
-
- exists(id: number | Interceptor): boolean {
- const index = this.getInterceptorIndex(id);
- return Boolean(this.fns[index]);
- }
-
- getInterceptorIndex(id: number | Interceptor): number {
- if (typeof id === 'number') {
- return this.fns[id] ? id : -1;
- }
- return this.fns.indexOf(id);
- }
-
- update(
- id: number | Interceptor,
- fn: Interceptor,
- ): number | Interceptor | false {
- const index = this.getInterceptorIndex(id);
- if (this.fns[index]) {
- this.fns[index] = fn;
- return id;
- }
- return false;
- }
-
- use(fn: Interceptor): number {
- this.fns.push(fn);
- return this.fns.length - 1;
- }
-}
-
-export interface Middleware {
- error: Interceptors>;
- request: Interceptors>;
- response: Interceptors>;
-}
-
-export const createInterceptors = (): Middleware<
- Req,
- Res,
- Err,
- Options
-> => ({
- error: new Interceptors>(),
- request: new Interceptors>(),
- response: new Interceptors>(),
-});
-
-const defaultQuerySerializer = createQuerySerializer({
- allowReserved: false,
- array: {
- explode: true,
- style: 'form',
- },
- object: {
- explode: true,
- style: 'deepObject',
- },
-});
-
-const defaultHeaders = {
- 'Content-Type': 'application/json',
-};
-
-export const createConfig = (
- override: Config & T> = {},
-): Config & T> => ({
- ...jsonBodySerializer,
- headers: defaultHeaders,
- parseAs: 'auto',
- querySerializer: defaultQuerySerializer,
- ...override,
-});
diff --git a/examples/openapi-ts-sample/src/client/core/auth.gen.ts b/examples/openapi-ts-sample/src/client/core/auth.gen.ts
deleted file mode 100644
index f8a73266f..000000000
--- a/examples/openapi-ts-sample/src/client/core/auth.gen.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-export type AuthToken = string | undefined;
-
-export interface Auth {
- /**
- * Which part of the request do we use to send the auth?
- *
- * @default 'header'
- */
- in?: 'header' | 'query' | 'cookie';
- /**
- * Header or query parameter name.
- *
- * @default 'Authorization'
- */
- name?: string;
- scheme?: 'basic' | 'bearer';
- type: 'apiKey' | 'http';
-}
-
-export const getAuthToken = async (
- auth: Auth,
- callback: ((auth: Auth) => Promise | AuthToken) | AuthToken,
-): Promise => {
- const token =
- typeof callback === 'function' ? await callback(auth) : callback;
-
- if (!token) {
- return;
- }
-
- if (auth.scheme === 'bearer') {
- return `Bearer ${token}`;
- }
-
- if (auth.scheme === 'basic') {
- return `Basic ${btoa(token)}`;
- }
-
- return token;
-};
diff --git a/examples/openapi-ts-sample/src/client/core/bodySerializer.gen.ts b/examples/openapi-ts-sample/src/client/core/bodySerializer.gen.ts
deleted file mode 100644
index 552b50f7c..000000000
--- a/examples/openapi-ts-sample/src/client/core/bodySerializer.gen.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import type {
- ArrayStyle,
- ObjectStyle,
- SerializerOptions,
-} from './pathSerializer.gen';
-
-export type QuerySerializer = (query: Record) => string;
-
-export type BodySerializer = (body: any) => any;
-
-type QuerySerializerOptionsObject = {
- allowReserved?: boolean;
- array?: Partial>;
- object?: Partial>;
-};
-
-export type QuerySerializerOptions = QuerySerializerOptionsObject & {
- /**
- * Per-parameter serialization overrides. When provided, these settings
- * override the global array/object settings for specific parameter names.
- */
- parameters?: Record;
-};
-
-const serializeFormDataPair = (
- data: FormData,
- key: string,
- value: unknown,
-): void => {
- if (typeof value === 'string' || value instanceof Blob) {
- data.append(key, value);
- } else if (value instanceof Date) {
- data.append(key, value.toISOString());
- } else {
- data.append(key, JSON.stringify(value));
- }
-};
-
-const serializeUrlSearchParamsPair = (
- data: URLSearchParams,
- key: string,
- value: unknown,
-): void => {
- if (typeof value === 'string') {
- data.append(key, value);
- } else {
- data.append(key, JSON.stringify(value));
- }
-};
-
-export const formDataBodySerializer = {
- bodySerializer: | Array>>(
- body: T,
- ): FormData => {
- const data = new FormData();
-
- Object.entries(body).forEach(([key, value]) => {
- if (value === undefined || value === null) {
- return;
- }
- if (Array.isArray(value)) {
- value.forEach((v) => serializeFormDataPair(data, key, v));
- } else {
- serializeFormDataPair(data, key, value);
- }
- });
-
- return data;
- },
-};
-
-export const jsonBodySerializer = {
- bodySerializer: (body: T): string =>
- JSON.stringify(body, (_key, value) =>
- typeof value === 'bigint' ? value.toString() : value,
- ),
-};
-
-export const urlSearchParamsBodySerializer = {
- bodySerializer: | Array>>(
- body: T,
- ): string => {
- const data = new URLSearchParams();
-
- Object.entries(body).forEach(([key, value]) => {
- if (value === undefined || value === null) {
- return;
- }
- if (Array.isArray(value)) {
- value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));
- } else {
- serializeUrlSearchParamsPair(data, key, value);
- }
- });
-
- return data.toString();
- },
-};
diff --git a/examples/openapi-ts-sample/src/client/core/params.gen.ts b/examples/openapi-ts-sample/src/client/core/params.gen.ts
deleted file mode 100644
index 602715c46..000000000
--- a/examples/openapi-ts-sample/src/client/core/params.gen.ts
+++ /dev/null
@@ -1,176 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-type Slot = 'body' | 'headers' | 'path' | 'query';
-
-export type Field =
- | {
- in: Exclude;
- /**
- * Field name. This is the name we want the user to see and use.
- */
- key: string;
- /**
- * Field mapped name. This is the name we want to use in the request.
- * If omitted, we use the same value as `key`.
- */
- map?: string;
- }
- | {
- in: Extract;
- /**
- * Key isn't required for bodies.
- */
- key?: string;
- map?: string;
- }
- | {
- /**
- * Field name. This is the name we want the user to see and use.
- */
- key: string;
- /**
- * Field mapped name. This is the name we want to use in the request.
- * If `in` is omitted, `map` aliases `key` to the transport layer.
- */
- map: Slot;
- };
-
-export interface Fields {
- allowExtra?: Partial>;
- args?: ReadonlyArray;
-}
-
-export type FieldsConfig = ReadonlyArray;
-
-const extraPrefixesMap: Record = {
- $body_: 'body',
- $headers_: 'headers',
- $path_: 'path',
- $query_: 'query',
-};
-const extraPrefixes = Object.entries(extraPrefixesMap);
-
-type KeyMap = Map<
- string,
- | {
- in: Slot;
- map?: string;
- }
- | {
- in?: never;
- map: Slot;
- }
->;
-
-const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {
- if (!map) {
- map = new Map();
- }
-
- for (const config of fields) {
- if ('in' in config) {
- if (config.key) {
- map.set(config.key, {
- in: config.in,
- map: config.map,
- });
- }
- } else if ('key' in config) {
- map.set(config.key, {
- map: config.map,
- });
- } else if (config.args) {
- buildKeyMap(config.args, map);
- }
- }
-
- return map;
-};
-
-interface Params {
- body: unknown;
- headers: Record;
- path: Record;
- query: Record;
-}
-
-const stripEmptySlots = (params: Params) => {
- for (const [slot, value] of Object.entries(params)) {
- if (value && typeof value === 'object' && !Object.keys(value).length) {
- delete params[slot as Slot];
- }
- }
-};
-
-export const buildClientParams = (
- args: ReadonlyArray,
- fields: FieldsConfig,
-) => {
- const params: Params = {
- body: {},
- headers: {},
- path: {},
- query: {},
- };
-
- const map = buildKeyMap(fields);
-
- let config: FieldsConfig[number] | undefined;
-
- for (const [index, arg] of args.entries()) {
- if (fields[index]) {
- config = fields[index];
- }
-
- if (!config) {
- continue;
- }
-
- if ('in' in config) {
- if (config.key) {
- const field = map.get(config.key)!;
- const name = field.map || config.key;
- if (field.in) {
- (params[field.in] as Record)[name] = arg;
- }
- } else {
- params.body = arg;
- }
- } else {
- for (const [key, value] of Object.entries(arg ?? {})) {
- const field = map.get(key);
-
- if (field) {
- if (field.in) {
- const name = field.map || key;
- (params[field.in] as Record)[name] = value;
- } else {
- params[field.map] = value;
- }
- } else {
- const extra = extraPrefixes.find(([prefix]) =>
- key.startsWith(prefix),
- );
-
- if (extra) {
- const [prefix, slot] = extra;
- (params[slot] as Record)[
- key.slice(prefix.length)
- ] = value;
- } else if ('allowExtra' in config && config.allowExtra) {
- for (const [slot, allowed] of Object.entries(config.allowExtra)) {
- if (allowed) {
- (params[slot as Slot] as Record)[key] = value;
- break;
- }
- }
- }
- }
- }
- }
- }
-
- stripEmptySlots(params);
-
- return params;
-};
diff --git a/examples/openapi-ts-sample/src/client/core/pathSerializer.gen.ts b/examples/openapi-ts-sample/src/client/core/pathSerializer.gen.ts
deleted file mode 100644
index 8d9993104..000000000
--- a/examples/openapi-ts-sample/src/client/core/pathSerializer.gen.ts
+++ /dev/null
@@ -1,181 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-interface SerializeOptions
- extends SerializePrimitiveOptions,
- SerializerOptions {}
-
-interface SerializePrimitiveOptions {
- allowReserved?: boolean;
- name: string;
-}
-
-export interface SerializerOptions {
- /**
- * @default true
- */
- explode: boolean;
- style: T;
-}
-
-export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';
-export type ArraySeparatorStyle = ArrayStyle | MatrixStyle;
-type MatrixStyle = 'label' | 'matrix' | 'simple';
-export type ObjectStyle = 'form' | 'deepObject';
-type ObjectSeparatorStyle = ObjectStyle | MatrixStyle;
-
-interface SerializePrimitiveParam extends SerializePrimitiveOptions {
- value: string;
-}
-
-export const separatorArrayExplode = (style: ArraySeparatorStyle) => {
- switch (style) {
- case 'label':
- return '.';
- case 'matrix':
- return ';';
- case 'simple':
- return ',';
- default:
- return '&';
- }
-};
-
-export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {
- switch (style) {
- case 'form':
- return ',';
- case 'pipeDelimited':
- return '|';
- case 'spaceDelimited':
- return '%20';
- default:
- return ',';
- }
-};
-
-export const separatorObjectExplode = (style: ObjectSeparatorStyle) => {
- switch (style) {
- case 'label':
- return '.';
- case 'matrix':
- return ';';
- case 'simple':
- return ',';
- default:
- return '&';
- }
-};
-
-export const serializeArrayParam = ({
- allowReserved,
- explode,
- name,
- style,
- value,
-}: SerializeOptions & {
- value: unknown[];
-}) => {
- if (!explode) {
- const joinedValues = (
- allowReserved ? value : value.map((v) => encodeURIComponent(v as string))
- ).join(separatorArrayNoExplode(style));
- switch (style) {
- case 'label':
- return `.${joinedValues}`;
- case 'matrix':
- return `;${name}=${joinedValues}`;
- case 'simple':
- return joinedValues;
- default:
- return `${name}=${joinedValues}`;
- }
- }
-
- const separator = separatorArrayExplode(style);
- const joinedValues = value
- .map((v) => {
- if (style === 'label' || style === 'simple') {
- return allowReserved ? v : encodeURIComponent(v as string);
- }
-
- return serializePrimitiveParam({
- allowReserved,
- name,
- value: v as string,
- });
- })
- .join(separator);
- return style === 'label' || style === 'matrix'
- ? separator + joinedValues
- : joinedValues;
-};
-
-export const serializePrimitiveParam = ({
- allowReserved,
- name,
- value,
-}: SerializePrimitiveParam) => {
- if (value === undefined || value === null) {
- return '';
- }
-
- if (typeof value === 'object') {
- throw new Error(
- 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',
- );
- }
-
- return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
-};
-
-export const serializeObjectParam = ({
- allowReserved,
- explode,
- name,
- style,
- value,
- valueOnly,
-}: SerializeOptions & {
- value: Record | Date;
- valueOnly?: boolean;
-}) => {
- if (value instanceof Date) {
- return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
- }
-
- if (style !== 'deepObject' && !explode) {
- let values: string[] = [];
- Object.entries(value).forEach(([key, v]) => {
- values = [
- ...values,
- key,
- allowReserved ? (v as string) : encodeURIComponent(v as string),
- ];
- });
- const joinedValues = values.join(',');
- switch (style) {
- case 'form':
- return `${name}=${joinedValues}`;
- case 'label':
- return `.${joinedValues}`;
- case 'matrix':
- return `;${name}=${joinedValues}`;
- default:
- return joinedValues;
- }
- }
-
- const separator = separatorObjectExplode(style);
- const joinedValues = Object.entries(value)
- .map(([key, v]) =>
- serializePrimitiveParam({
- allowReserved,
- name: style === 'deepObject' ? `${name}[${key}]` : key,
- value: v as string,
- }),
- )
- .join(separator);
- return style === 'label' || style === 'matrix'
- ? separator + joinedValues
- : joinedValues;
-};
diff --git a/examples/openapi-ts-sample/src/client/core/queryKeySerializer.gen.ts b/examples/openapi-ts-sample/src/client/core/queryKeySerializer.gen.ts
deleted file mode 100644
index d3bb68396..000000000
--- a/examples/openapi-ts-sample/src/client/core/queryKeySerializer.gen.ts
+++ /dev/null
@@ -1,136 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-/**
- * JSON-friendly union that mirrors what Pinia Colada can hash.
- */
-export type JsonValue =
- | null
- | string
- | number
- | boolean
- | JsonValue[]
- | { [key: string]: JsonValue };
-
-/**
- * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes.
- */
-export const queryKeyJsonReplacer = (_key: string, value: unknown) => {
- if (
- value === undefined ||
- typeof value === 'function' ||
- typeof value === 'symbol'
- ) {
- return undefined;
- }
- if (typeof value === 'bigint') {
- return value.toString();
- }
- if (value instanceof Date) {
- return value.toISOString();
- }
- return value;
-};
-
-/**
- * Safely stringifies a value and parses it back into a JsonValue.
- */
-export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => {
- try {
- const json = JSON.stringify(input, queryKeyJsonReplacer);
- if (json === undefined) {
- return undefined;
- }
- return JSON.parse(json) as JsonValue;
- } catch {
- return undefined;
- }
-};
-
-/**
- * Detects plain objects (including objects with a null prototype).
- */
-const isPlainObject = (value: unknown): value is Record => {
- if (value === null || typeof value !== 'object') {
- return false;
- }
- const prototype = Object.getPrototypeOf(value as object);
- return prototype === Object.prototype || prototype === null;
-};
-
-/**
- * Turns URLSearchParams into a sorted JSON object for deterministic keys.
- */
-const serializeSearchParams = (params: URLSearchParams): JsonValue => {
- const entries = Array.from(params.entries()).sort(([a], [b]) =>
- a.localeCompare(b),
- );
- const result: Record = {};
-
- for (const [key, value] of entries) {
- const existing = result[key];
- if (existing === undefined) {
- result[key] = value;
- continue;
- }
-
- if (Array.isArray(existing)) {
- (existing as string[]).push(value);
- } else {
- result[key] = [existing, value];
- }
- }
-
- return result;
-};
-
-/**
- * Normalizes any accepted value into a JSON-friendly shape for query keys.
- */
-export const serializeQueryKeyValue = (
- value: unknown,
-): JsonValue | undefined => {
- if (value === null) {
- return null;
- }
-
- if (
- typeof value === 'string' ||
- typeof value === 'number' ||
- typeof value === 'boolean'
- ) {
- return value;
- }
-
- if (
- value === undefined ||
- typeof value === 'function' ||
- typeof value === 'symbol'
- ) {
- return undefined;
- }
-
- if (typeof value === 'bigint') {
- return value.toString();
- }
-
- if (value instanceof Date) {
- return value.toISOString();
- }
-
- if (Array.isArray(value)) {
- return stringifyToJsonValue(value);
- }
-
- if (
- typeof URLSearchParams !== 'undefined' &&
- value instanceof URLSearchParams
- ) {
- return serializeSearchParams(value);
- }
-
- if (isPlainObject(value)) {
- return stringifyToJsonValue(value);
- }
-
- return undefined;
-};
diff --git a/examples/openapi-ts-sample/src/client/core/serverSentEvents.gen.ts b/examples/openapi-ts-sample/src/client/core/serverSentEvents.gen.ts
deleted file mode 100644
index f8fd78e28..000000000
--- a/examples/openapi-ts-sample/src/client/core/serverSentEvents.gen.ts
+++ /dev/null
@@ -1,264 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import type { Config } from './types.gen';
-
-export type ServerSentEventsOptions = Omit<
- RequestInit,
- 'method'
-> &
- Pick & {
- /**
- * Fetch API implementation. You can use this option to provide a custom
- * fetch instance.
- *
- * @default globalThis.fetch
- */
- fetch?: typeof fetch;
- /**
- * Implementing clients can call request interceptors inside this hook.
- */
- onRequest?: (url: string, init: RequestInit) => Promise;
- /**
- * Callback invoked when a network or parsing error occurs during streaming.
- *
- * This option applies only if the endpoint returns a stream of events.
- *
- * @param error The error that occurred.
- */
- onSseError?: (error: unknown) => void;
- /**
- * Callback invoked when an event is streamed from the server.
- *
- * This option applies only if the endpoint returns a stream of events.
- *
- * @param event Event streamed from the server.
- * @returns Nothing (void).
- */
- onSseEvent?: (event: StreamEvent) => void;
- serializedBody?: RequestInit['body'];
- /**
- * Default retry delay in milliseconds.
- *
- * This option applies only if the endpoint returns a stream of events.
- *
- * @default 3000
- */
- sseDefaultRetryDelay?: number;
- /**
- * Maximum number of retry attempts before giving up.
- */
- sseMaxRetryAttempts?: number;
- /**
- * Maximum retry delay in milliseconds.
- *
- * Applies only when exponential backoff is used.
- *
- * This option applies only if the endpoint returns a stream of events.
- *
- * @default 30000
- */
- sseMaxRetryDelay?: number;
- /**
- * Optional sleep function for retry backoff.
- *
- * Defaults to using `setTimeout`.
- */
- sseSleepFn?: (ms: number) => Promise;
- url: string;
- };
-
-export interface StreamEvent {
- data: TData;
- event?: string;
- id?: string;
- retry?: number;
-}
-
-export type ServerSentEventsResult<
- TData = unknown,
- TReturn = void,
- TNext = unknown,
-> = {
- stream: AsyncGenerator<
- TData extends Record ? TData[keyof TData] : TData,
- TReturn,
- TNext
- >;
-};
-
-export const createSseClient = ({
- onRequest,
- onSseError,
- onSseEvent,
- responseTransformer,
- responseValidator,
- sseDefaultRetryDelay,
- sseMaxRetryAttempts,
- sseMaxRetryDelay,
- sseSleepFn,
- url,
- ...options
-}: ServerSentEventsOptions): ServerSentEventsResult => {
- let lastEventId: string | undefined;
-
- const sleep =
- sseSleepFn ??
- ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));
-
- const createStream = async function* () {
- let retryDelay: number = sseDefaultRetryDelay ?? 3000;
- let attempt = 0;
- const signal = options.signal ?? new AbortController().signal;
-
- while (true) {
- if (signal.aborted) break;
-
- attempt++;
-
- const headers =
- options.headers instanceof Headers
- ? options.headers
- : new Headers(options.headers as Record | undefined);
-
- if (lastEventId !== undefined) {
- headers.set('Last-Event-ID', lastEventId);
- }
-
- try {
- const requestInit: RequestInit = {
- redirect: 'follow',
- ...options,
- body: options.serializedBody,
- headers,
- signal,
- };
- let request = new Request(url, requestInit);
- if (onRequest) {
- request = await onRequest(url, requestInit);
- }
- // fetch must be assigned here, otherwise it would throw the error:
- // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
- const _fetch = options.fetch ?? globalThis.fetch;
- const response = await _fetch(request);
-
- if (!response.ok)
- throw new Error(
- `SSE failed: ${response.status} ${response.statusText}`,
- );
-
- if (!response.body) throw new Error('No body in SSE response');
-
- const reader = response.body
- .pipeThrough(new TextDecoderStream())
- .getReader();
-
- let buffer = '';
-
- const abortHandler = () => {
- try {
- reader.cancel();
- } catch {
- // noop
- }
- };
-
- signal.addEventListener('abort', abortHandler);
-
- try {
- while (true) {
- const { done, value } = await reader.read();
- if (done) break;
- buffer += value;
-
- const chunks = buffer.split('\n\n');
- buffer = chunks.pop() ?? '';
-
- for (const chunk of chunks) {
- const lines = chunk.split('\n');
- const dataLines: Array = [];
- let eventName: string | undefined;
-
- for (const line of lines) {
- if (line.startsWith('data:')) {
- dataLines.push(line.replace(/^data:\s*/, ''));
- } else if (line.startsWith('event:')) {
- eventName = line.replace(/^event:\s*/, '');
- } else if (line.startsWith('id:')) {
- lastEventId = line.replace(/^id:\s*/, '');
- } else if (line.startsWith('retry:')) {
- const parsed = Number.parseInt(
- line.replace(/^retry:\s*/, ''),
- 10,
- );
- if (!Number.isNaN(parsed)) {
- retryDelay = parsed;
- }
- }
- }
-
- let data: unknown;
- let parsedJson = false;
-
- if (dataLines.length) {
- const rawData = dataLines.join('\n');
- try {
- data = JSON.parse(rawData);
- parsedJson = true;
- } catch {
- data = rawData;
- }
- }
-
- if (parsedJson) {
- if (responseValidator) {
- await responseValidator(data);
- }
-
- if (responseTransformer) {
- data = await responseTransformer(data);
- }
- }
-
- onSseEvent?.({
- data,
- event: eventName,
- id: lastEventId,
- retry: retryDelay,
- });
-
- if (dataLines.length) {
- yield data as any;
- }
- }
- }
- } finally {
- signal.removeEventListener('abort', abortHandler);
- reader.releaseLock();
- }
-
- break; // exit loop on normal completion
- } catch (error) {
- // connection failed or aborted; retry after delay
- onSseError?.(error);
-
- if (
- sseMaxRetryAttempts !== undefined &&
- attempt >= sseMaxRetryAttempts
- ) {
- break; // stop after firing error
- }
-
- // exponential backoff: double retry each attempt, cap at 30s
- const backoff = Math.min(
- retryDelay * 2 ** (attempt - 1),
- sseMaxRetryDelay ?? 30000,
- );
- await sleep(backoff);
- }
- }
- };
-
- const stream = createStream();
-
- return { stream };
-};
diff --git a/examples/openapi-ts-sample/src/client/core/types.gen.ts b/examples/openapi-ts-sample/src/client/core/types.gen.ts
deleted file mode 100644
index 643c070c9..000000000
--- a/examples/openapi-ts-sample/src/client/core/types.gen.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import type { Auth, AuthToken } from './auth.gen';
-import type {
- BodySerializer,
- QuerySerializer,
- QuerySerializerOptions,
-} from './bodySerializer.gen';
-
-export type HttpMethod =
- | 'connect'
- | 'delete'
- | 'get'
- | 'head'
- | 'options'
- | 'patch'
- | 'post'
- | 'put'
- | 'trace';
-
-export type Client<
- RequestFn = never,
- Config = unknown,
- MethodFn = never,
- BuildUrlFn = never,
- SseFn = never,
-> = {
- /**
- * Returns the final request URL.
- */
- buildUrl: BuildUrlFn;
- getConfig: () => Config;
- request: RequestFn;
- setConfig: (config: Config) => Config;
-} & {
- [K in HttpMethod]: MethodFn;
-} & ([SseFn] extends [never]
- ? { sse?: never }
- : { sse: { [K in HttpMethod]: SseFn } });
-
-export interface Config {
- /**
- * Auth token or a function returning auth token. The resolved value will be
- * added to the request payload as defined by its `security` array.
- */
- auth?: ((auth: Auth) => Promise | AuthToken) | AuthToken;
- /**
- * A function for serializing request body parameter. By default,
- * {@link JSON.stringify()} will be used.
- */
- bodySerializer?: BodySerializer | null;
- /**
- * An object containing any HTTP headers that you want to pre-populate your
- * `Headers` object with.
- *
- * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more}
- */
- headers?:
- | RequestInit['headers']
- | Record<
- string,
- | string
- | number
- | boolean
- | (string | number | boolean)[]
- | null
- | undefined
- | unknown
- >;
- /**
- * The request method.
- *
- * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more}
- */
- method?: Uppercase;
- /**
- * A function for serializing request query parameters. By default, arrays
- * will be exploded in form style, objects will be exploded in deepObject
- * style, and reserved characters are percent-encoded.
- *
- * This method will have no effect if the native `paramsSerializer()` Axios
- * API function is used.
- *
- * {@link https://swagger.io/docs/specification/serialization/#query View examples}
- */
- querySerializer?: QuerySerializer | QuerySerializerOptions;
- /**
- * A function validating request data. This is useful if you want to ensure
- * the request conforms to the desired shape, so it can be safely sent to
- * the server.
- */
- requestValidator?: (data: unknown) => Promise;
- /**
- * A function transforming response data before it's returned. This is useful
- * for post-processing data, e.g. converting ISO strings into Date objects.
- */
- responseTransformer?: (data: unknown) => Promise;
- /**
- * A function validating response data. This is useful if you want to ensure
- * the response conforms to the desired shape, so it can be safely passed to
- * the transformers and returned to the user.
- */
- responseValidator?: (data: unknown) => Promise;
-}
-
-type IsExactlyNeverOrNeverUndefined = [T] extends [never]
- ? true
- : [T] extends [never | undefined]
- ? [undefined] extends [T]
- ? false
- : true
- : false;
-
-export type OmitNever> = {
- [K in keyof T as IsExactlyNeverOrNeverUndefined extends true
- ? never
- : K]: T[K];
-};
diff --git a/examples/openapi-ts-sample/src/client/core/utils.gen.ts b/examples/openapi-ts-sample/src/client/core/utils.gen.ts
deleted file mode 100644
index 0b5389d08..000000000
--- a/examples/openapi-ts-sample/src/client/core/utils.gen.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import type { BodySerializer, QuerySerializer } from './bodySerializer.gen';
-import {
- type ArraySeparatorStyle,
- serializeArrayParam,
- serializeObjectParam,
- serializePrimitiveParam,
-} from './pathSerializer.gen';
-
-export interface PathSerializer {
- path: Record;
- url: string;
-}
-
-export const PATH_PARAM_RE = /\{[^{}]+\}/g;
-
-export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {
- let url = _url;
- const matches = _url.match(PATH_PARAM_RE);
- if (matches) {
- for (const match of matches) {
- let explode = false;
- let name = match.substring(1, match.length - 1);
- let style: ArraySeparatorStyle = 'simple';
-
- if (name.endsWith('*')) {
- explode = true;
- name = name.substring(0, name.length - 1);
- }
-
- if (name.startsWith('.')) {
- name = name.substring(1);
- style = 'label';
- } else if (name.startsWith(';')) {
- name = name.substring(1);
- style = 'matrix';
- }
-
- const value = path[name];
-
- if (value === undefined || value === null) {
- continue;
- }
-
- if (Array.isArray(value)) {
- url = url.replace(
- match,
- serializeArrayParam({ explode, name, style, value }),
- );
- continue;
- }
-
- if (typeof value === 'object') {
- url = url.replace(
- match,
- serializeObjectParam({
- explode,
- name,
- style,
- value: value as Record,
- valueOnly: true,
- }),
- );
- continue;
- }
-
- if (style === 'matrix') {
- url = url.replace(
- match,
- `;${serializePrimitiveParam({
- name,
- value: value as string,
- })}`,
- );
- continue;
- }
-
- const replaceValue = encodeURIComponent(
- style === 'label' ? `.${value as string}` : (value as string),
- );
- url = url.replace(match, replaceValue);
- }
- }
- return url;
-};
-
-export const getUrl = ({
- baseUrl,
- path,
- query,
- querySerializer,
- url: _url,
-}: {
- baseUrl?: string;
- path?: Record;
- query?: Record;
- querySerializer: QuerySerializer;
- url: string;
-}) => {
- const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;
- let url = (baseUrl ?? '') + pathUrl;
- if (path) {
- url = defaultPathSerializer({ path, url });
- }
- let search = query ? querySerializer(query) : '';
- if (search.startsWith('?')) {
- search = search.substring(1);
- }
- if (search) {
- url += `?${search}`;
- }
- return url;
-};
-
-export function getValidRequestBody(options: {
- body?: unknown;
- bodySerializer?: BodySerializer | null;
- serializedBody?: unknown;
-}) {
- const hasBody = options.body !== undefined;
- const isSerializedBody = hasBody && options.bodySerializer;
-
- if (isSerializedBody) {
- if ('serializedBody' in options) {
- const hasSerializedBody =
- options.serializedBody !== undefined && options.serializedBody !== '';
-
- return hasSerializedBody ? options.serializedBody : null;
- }
-
- // not all clients implement a serializedBody property (i.e. client-axios)
- return options.body !== '' ? options.body : null;
- }
-
- // plain/text body
- if (hasBody) {
- return options.body;
- }
-
- // no body was provided
- return undefined;
-}
diff --git a/examples/openapi-ts-sample/src/client/index.ts b/examples/openapi-ts-sample/src/client/index.ts
deleted file mode 100644
index 57ed02bf5..000000000
--- a/examples/openapi-ts-sample/src/client/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-export * from './sdk.gen';
-export type * from './types.gen';
diff --git a/examples/openapi-ts-sample/src/client/schemas.gen.ts b/examples/openapi-ts-sample/src/client/schemas.gen.ts
deleted file mode 100644
index 646632e83..000000000
--- a/examples/openapi-ts-sample/src/client/schemas.gen.ts
+++ /dev/null
@@ -1,188 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-export const OrderSchema = {
- properties: {
- complete: {
- type: 'boolean',
- },
- id: {
- example: 10,
- format: 'int64',
- type: 'integer',
- },
- petId: {
- example: 198772,
- format: 'int64',
- type: 'integer',
- },
- quantity: {
- example: 7,
- format: 'int32',
- type: 'integer',
- },
- shipDate: {
- format: 'date-time',
- type: 'string',
- },
- status: {
- description: 'Order Status',
- enum: ['placed', 'approved', 'delivered'],
- example: 'approved',
- type: 'string',
- },
- },
- type: 'object',
- 'x-swagger-router-model': 'io.swagger.petstore.model.Order',
- xml: {
- name: 'order',
- },
-} as const;
-
-export const CategorySchema = {
- properties: {
- id: {
- example: 1,
- format: 'int64',
- type: 'integer',
- },
- name: {
- example: 'Dogs',
- type: 'string',
- },
- },
- type: 'object',
- 'x-swagger-router-model': 'io.swagger.petstore.model.Category',
- xml: {
- name: 'category',
- },
-} as const;
-
-export const UserSchema = {
- properties: {
- email: {
- example: 'john@email.com',
- type: 'string',
- },
- firstName: {
- example: 'John',
- type: 'string',
- },
- id: {
- example: 10,
- format: 'int64',
- type: 'integer',
- },
- lastName: {
- example: 'James',
- type: 'string',
- },
- password: {
- example: '12345',
- type: 'string',
- },
- phone: {
- example: '12345',
- type: 'string',
- },
- userStatus: {
- description: 'User Status',
- example: 1,
- format: 'int32',
- type: 'integer',
- },
- username: {
- example: 'theUser',
- type: 'string',
- },
- },
- type: 'object',
- 'x-swagger-router-model': 'io.swagger.petstore.model.User',
- xml: {
- name: 'user',
- },
-} as const;
-
-export const TagSchema = {
- properties: {
- id: {
- format: 'int64',
- type: 'integer',
- },
- name: {
- type: 'string',
- },
- },
- type: 'object',
- 'x-swagger-router-model': 'io.swagger.petstore.model.Tag',
- xml: {
- name: 'tag',
- },
-} as const;
-
-export const PetSchema = {
- properties: {
- category: {
- $ref: '#/components/schemas/Category',
- },
- id: {
- example: 10,
- format: 'int64',
- type: 'integer',
- },
- name: {
- example: 'doggie',
- type: 'string',
- },
- photoUrls: {
- items: {
- type: 'string',
- xml: {
- name: 'photoUrl',
- },
- },
- type: 'array',
- xml: {
- wrapped: true,
- },
- },
- status: {
- description: 'pet status in the store',
- enum: ['available', 'pending', 'sold'],
- type: 'string',
- },
- tags: {
- items: {
- $ref: '#/components/schemas/Tag',
- },
- type: 'array',
- xml: {
- wrapped: true,
- },
- },
- },
- required: ['name', 'photoUrls'],
- type: 'object',
- 'x-swagger-router-model': 'io.swagger.petstore.model.Pet',
- xml: {
- name: 'pet',
- },
-} as const;
-
-export const ApiResponseSchema = {
- properties: {
- code: {
- format: 'int32',
- type: 'integer',
- },
- message: {
- type: 'string',
- },
- type: {
- type: 'string',
- },
- },
- type: 'object',
- xml: {
- name: '##default',
- },
-} as const;
diff --git a/examples/openapi-ts-sample/src/client/sdk.gen.ts b/examples/openapi-ts-sample/src/client/sdk.gen.ts
deleted file mode 100644
index 867b5a377..000000000
--- a/examples/openapi-ts-sample/src/client/sdk.gen.ts
+++ /dev/null
@@ -1,571 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import type { Client, Options as Options2, TDataShape } from './client';
-import { client } from './client.gen';
-import type {
- AddPetData,
- AddPetErrors,
- AddPetResponses,
- CreateUserData,
- CreateUserErrors,
- CreateUserResponses,
- CreateUsersWithListInputData,
- CreateUsersWithListInputErrors,
- CreateUsersWithListInputResponses,
- DeleteOrderData,
- DeleteOrderErrors,
- DeleteOrderResponses,
- DeletePetData,
- DeletePetErrors,
- DeletePetResponses,
- DeleteUserData,
- DeleteUserErrors,
- DeleteUserResponses,
- FindPetsByStatusData,
- FindPetsByStatusErrors,
- FindPetsByStatusResponses,
- FindPetsByTagsData,
- FindPetsByTagsErrors,
- FindPetsByTagsResponses,
- GetInventoryData,
- GetInventoryErrors,
- GetInventoryResponses,
- GetOrderByIdData,
- GetOrderByIdErrors,
- GetOrderByIdResponses,
- GetPetByIdData,
- GetPetByIdErrors,
- GetPetByIdResponses,
- GetUserByNameData,
- GetUserByNameErrors,
- GetUserByNameResponses,
- LoginUserData,
- LoginUserErrors,
- LoginUserResponses,
- LogoutUserData,
- LogoutUserErrors,
- LogoutUserResponses,
- PlaceOrderData,
- PlaceOrderErrors,
- PlaceOrderResponses,
- UpdatePetData,
- UpdatePetErrors,
- UpdatePetResponses,
- UpdatePetWithFormData,
- UpdatePetWithFormErrors,
- UpdatePetWithFormResponses,
- UpdateUserData,
- UpdateUserErrors,
- UpdateUserResponses,
- UploadFileData,
- UploadFileErrors,
- UploadFileResponses,
-} from './types.gen';
-import {
- zAddPetData,
- zAddPetResponse,
- zCreateUserData,
- zCreateUserResponse,
- zCreateUsersWithListInputData,
- zCreateUsersWithListInputResponse,
- zDeleteOrderData,
- zDeletePetData,
- zDeleteUserData,
- zFindPetsByStatusData,
- zFindPetsByStatusResponse,
- zFindPetsByTagsData,
- zFindPetsByTagsResponse,
- zGetInventoryData,
- zGetInventoryResponse,
- zGetOrderByIdData,
- zGetOrderByIdResponse,
- zGetPetByIdData,
- zGetPetByIdResponse,
- zGetUserByNameData,
- zGetUserByNameResponse,
- zLoginUserData,
- zLoginUserResponse,
- zLogoutUserData,
- zPlaceOrderData,
- zPlaceOrderResponse,
- zUpdatePetData,
- zUpdatePetResponse,
- zUpdatePetWithFormData,
- zUpdatePetWithFormResponse,
- zUpdateUserData,
- zUploadFileData,
- zUploadFileResponse,
-} from './zod.gen';
-
-export type Options<
- TData extends TDataShape = TDataShape,
- ThrowOnError extends boolean = boolean,
-> = Options2 & {
- /**
- * You can provide a client instance returned by `createClient()` instead of
- * individual options. This might be also useful if you want to implement a
- * custom client.
- */
- client?: Client;
- /**
- * You can pass arbitrary values through the `meta` object. This can be
- * used to access values that aren't defined as part of the SDK function.
- */
- meta?: Record;
-};
-
-/**
- * Add a new pet to the store.
- *
- * Add a new pet to the store.
- */
-export const addPet = (
- options: Options,
-) =>
- (options.client ?? client).post({
- requestValidator: async (data) => await zAddPetData.parseAsync(data),
- responseValidator: async (data) => await zAddPetResponse.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet',
- ...options,
- headers: {
- 'Content-Type': 'application/json',
- ...options.headers,
- },
- });
-
-/**
- * Update an existing pet.
- *
- * Update an existing pet by Id.
- */
-export const updatePet = (
- options: Options,
-) =>
- (options.client ?? client).put<
- UpdatePetResponses,
- UpdatePetErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zUpdatePetData.parseAsync(data),
- responseValidator: async (data) =>
- await zUpdatePetResponse.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet',
- ...options,
- headers: {
- 'Content-Type': 'application/json',
- ...options.headers,
- },
- });
-
-/**
- * Finds Pets by status.
- *
- * Multiple status values can be provided with comma separated strings.
- */
-export const findPetsByStatus = (
- options: Options,
-) =>
- (options.client ?? client).get<
- FindPetsByStatusResponses,
- FindPetsByStatusErrors,
- ThrowOnError
- >({
- requestValidator: async (data) =>
- await zFindPetsByStatusData.parseAsync(data),
- responseValidator: async (data) =>
- await zFindPetsByStatusResponse.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet/findByStatus',
- ...options,
- });
-
-/**
- * Finds Pets by tags.
- *
- * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
- */
-export const findPetsByTags = (
- options: Options,
-) =>
- (options.client ?? client).get<
- FindPetsByTagsResponses,
- FindPetsByTagsErrors,
- ThrowOnError
- >({
- requestValidator: async (data) =>
- await zFindPetsByTagsData.parseAsync(data),
- responseValidator: async (data) =>
- await zFindPetsByTagsResponse.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet/findByTags',
- ...options,
- });
-
-/**
- * Deletes a pet.
- *
- * Delete a pet.
- */
-export const deletePet = (
- options: Options,
-) =>
- (options.client ?? client).delete<
- DeletePetResponses,
- DeletePetErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zDeletePetData.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet/{petId}',
- ...options,
- });
-
-/**
- * Find pet by ID.
- *
- * Returns a single pet.
- */
-export const getPetById = (
- options: Options,
-) =>
- (options.client ?? client).get<
- GetPetByIdResponses,
- GetPetByIdErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zGetPetByIdData.parseAsync(data),
- responseValidator: async (data) =>
- await zGetPetByIdResponse.parseAsync(data),
- security: [
- {
- name: 'api_key',
- type: 'apiKey',
- },
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet/{petId}',
- ...options,
- });
-
-/**
- * Updates a pet in the store with form data.
- *
- * Updates a pet resource based on the form data.
- */
-export const updatePetWithForm = (
- options: Options,
-) =>
- (options.client ?? client).post<
- UpdatePetWithFormResponses,
- UpdatePetWithFormErrors,
- ThrowOnError
- >({
- requestValidator: async (data) =>
- await zUpdatePetWithFormData.parseAsync(data),
- responseValidator: async (data) =>
- await zUpdatePetWithFormResponse.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet/{petId}',
- ...options,
- });
-
-/**
- * Uploads an image.
- *
- * Upload image of the pet.
- */
-export const uploadFile = (
- options: Options,
-) =>
- (options.client ?? client).post<
- UploadFileResponses,
- UploadFileErrors,
- ThrowOnError
- >({
- bodySerializer: null,
- requestValidator: async (data) => await zUploadFileData.parseAsync(data),
- responseValidator: async (data) =>
- await zUploadFileResponse.parseAsync(data),
- security: [
- {
- scheme: 'bearer',
- type: 'http',
- },
- ],
- url: '/pet/{petId}/uploadImage',
- ...options,
- headers: {
- 'Content-Type': 'application/octet-stream',
- ...options.headers,
- },
- });
-
-/**
- * Returns pet inventories by status.
- *
- * Returns a map of status codes to quantities.
- */
-export const getInventory = (
- options?: Options,
-) =>
- (options?.client ?? client).get<
- GetInventoryResponses,
- GetInventoryErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zGetInventoryData.parseAsync(data),
- responseValidator: async (data) =>
- await zGetInventoryResponse.parseAsync(data),
- security: [
- {
- name: 'api_key',
- type: 'apiKey',
- },
- ],
- url: '/store/inventory',
- ...options,
- });
-
-/**
- * Place an order for a pet.
- *
- * Place a new order in the store.
- */
-export const placeOrder = (
- options?: Options,
-) =>
- (options?.client ?? client).post<
- PlaceOrderResponses,
- PlaceOrderErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zPlaceOrderData.parseAsync(data),
- responseValidator: async (data) =>
- await zPlaceOrderResponse.parseAsync(data),
- url: '/store/order',
- ...options,
- headers: {
- 'Content-Type': 'application/json',
- ...options?.headers,
- },
- });
-
-/**
- * Delete purchase order by identifier.
- *
- * For valid response try integer IDs with value < 1000. Anything above 1000 or non-integers will generate API errors.
- */
-export const deleteOrder = (
- options: Options,
-) =>
- (options.client ?? client).delete<
- DeleteOrderResponses,
- DeleteOrderErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zDeleteOrderData.parseAsync(data),
- url: '/store/order/{orderId}',
- ...options,
- });
-
-/**
- * Find purchase order by ID.
- *
- * For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions.
- */
-export const getOrderById = (
- options: Options,
-) =>
- (options.client ?? client).get<
- GetOrderByIdResponses,
- GetOrderByIdErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zGetOrderByIdData.parseAsync(data),
- responseValidator: async (data) =>
- await zGetOrderByIdResponse.parseAsync(data),
- url: '/store/order/{orderId}',
- ...options,
- });
-
-/**
- * Create user.
- *
- * This can only be done by the logged in user.
- */
-export const createUser = (
- options?: Options,
-) =>
- (options?.client ?? client).post<
- CreateUserResponses,
- CreateUserErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zCreateUserData.parseAsync(data),
- responseValidator: async (data) =>
- await zCreateUserResponse.parseAsync(data),
- url: '/user',
- ...options,
- headers: {
- 'Content-Type': 'application/json',
- ...options?.headers,
- },
- });
-
-/**
- * Creates list of users with given input array.
- *
- * Creates list of users with given input array.
- */
-export const createUsersWithListInput = (
- options?: Options,
-) =>
- (options?.client ?? client).post<
- CreateUsersWithListInputResponses,
- CreateUsersWithListInputErrors,
- ThrowOnError
- >({
- requestValidator: async (data) =>
- await zCreateUsersWithListInputData.parseAsync(data),
- responseValidator: async (data) =>
- await zCreateUsersWithListInputResponse.parseAsync(data),
- url: '/user/createWithList',
- ...options,
- headers: {
- 'Content-Type': 'application/json',
- ...options?.headers,
- },
- });
-
-/**
- * Logs user into the system.
- *
- * Log into the system.
- */
-export const loginUser = (
- options?: Options,
-) =>
- (options?.client ?? client).get<
- LoginUserResponses,
- LoginUserErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zLoginUserData.parseAsync(data),
- responseValidator: async (data) =>
- await zLoginUserResponse.parseAsync(data),
- url: '/user/login',
- ...options,
- });
-
-/**
- * Logs out current logged in user session.
- *
- * Log user out of the system.
- */
-export const logoutUser = (
- options?: Options,
-) =>
- (options?.client ?? client).get<
- LogoutUserResponses,
- LogoutUserErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zLogoutUserData.parseAsync(data),
- url: '/user/logout',
- ...options,
- });
-
-/**
- * Delete user resource.
- *
- * This can only be done by the logged in user.
- */
-export const deleteUser = (
- options: Options,
-) =>
- (options.client ?? client).delete<
- DeleteUserResponses,
- DeleteUserErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zDeleteUserData.parseAsync(data),
- url: '/user/{username}',
- ...options,
- });
-
-/**
- * Get user by user name.
- *
- * Get user detail based on username.
- */
-export const getUserByName = (
- options: Options,
-) =>
- (options.client ?? client).get<
- GetUserByNameResponses,
- GetUserByNameErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zGetUserByNameData.parseAsync(data),
- responseValidator: async (data) =>
- await zGetUserByNameResponse.parseAsync(data),
- url: '/user/{username}',
- ...options,
- });
-
-/**
- * Update user resource.
- *
- * This can only be done by the logged in user.
- */
-export const updateUser = (
- options: Options,
-) =>
- (options.client ?? client).put<
- UpdateUserResponses,
- UpdateUserErrors,
- ThrowOnError
- >({
- requestValidator: async (data) => await zUpdateUserData.parseAsync(data),
- url: '/user/{username}',
- ...options,
- headers: {
- 'Content-Type': 'application/json',
- ...options.headers,
- },
- });
diff --git a/examples/openapi-ts-sample/src/client/types.gen.ts b/examples/openapi-ts-sample/src/client/types.gen.ts
deleted file mode 100644
index a2e6be0fa..000000000
--- a/examples/openapi-ts-sample/src/client/types.gen.ts
+++ /dev/null
@@ -1,699 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-export type ClientOptions = {
- baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {});
-};
-
-export type Order = {
- complete?: boolean;
- id?: number;
- petId?: number;
- quantity?: number;
- shipDate?: string;
- /**
- * Order Status
- */
- status?: 'placed' | 'approved' | 'delivered';
-};
-
-export type Category = {
- id?: number;
- name?: string;
-};
-
-export type User = {
- email?: string;
- firstName?: string;
- id?: number;
- lastName?: string;
- password?: string;
- phone?: string;
- /**
- * User Status
- */
- userStatus?: number;
- username?: string;
-};
-
-export type Tag = {
- id?: number;
- name?: string;
-};
-
-export type Pet = {
- category?: Category;
- id?: number;
- name: string;
- photoUrls: Array;
- /**
- * pet status in the store
- */
- status?: 'available' | 'pending' | 'sold';
- tags?: Array;
-};
-
-export type ApiResponse = {
- code?: number;
- message?: string;
- type?: string;
-};
-
-export type Pet2 = Pet;
-
-/**
- * List of user object
- */
-export type UserArray = Array;
-
-export type AddPetData = {
- /**
- * Create a new pet in the store
- */
- body: Pet;
- path?: never;
- query?: never;
- url: '/pet';
-};
-
-export type AddPetErrors = {
- /**
- * Invalid input
- */
- 400: unknown;
- /**
- * Validation exception
- */
- 422: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type AddPetResponses = {
- /**
- * Successful operation
- */
- 200: Pet;
-};
-
-export type AddPetResponse = AddPetResponses[keyof AddPetResponses];
-
-export type UpdatePetData = {
- /**
- * Update an existent pet in the store
- */
- body: Pet;
- path?: never;
- query?: never;
- url: '/pet';
-};
-
-export type UpdatePetErrors = {
- /**
- * Invalid ID supplied
- */
- 400: unknown;
- /**
- * Pet not found
- */
- 404: unknown;
- /**
- * Validation exception
- */
- 422: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type UpdatePetResponses = {
- /**
- * Successful operation
- */
- 200: Pet;
-};
-
-export type UpdatePetResponse = UpdatePetResponses[keyof UpdatePetResponses];
-
-export type FindPetsByStatusData = {
- body?: never;
- path?: never;
- query: {
- /**
- * Status values that need to be considered for filter
- */
- status: 'available' | 'pending' | 'sold';
- };
- url: '/pet/findByStatus';
-};
-
-export type FindPetsByStatusErrors = {
- /**
- * Invalid status value
- */
- 400: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type FindPetsByStatusResponses = {
- /**
- * successful operation
- */
- 200: Array;
-};
-
-export type FindPetsByStatusResponse =
- FindPetsByStatusResponses[keyof FindPetsByStatusResponses];
-
-export type FindPetsByTagsData = {
- body?: never;
- path?: never;
- query: {
- /**
- * Tags to filter by
- */
- tags: Array;
- };
- url: '/pet/findByTags';
-};
-
-export type FindPetsByTagsErrors = {
- /**
- * Invalid tag value
- */
- 400: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type FindPetsByTagsResponses = {
- /**
- * successful operation
- */
- 200: Array;
-};
-
-export type FindPetsByTagsResponse =
- FindPetsByTagsResponses[keyof FindPetsByTagsResponses];
-
-export type DeletePetData = {
- body?: never;
- headers?: {
- api_key?: string;
- };
- path: {
- /**
- * Pet id to delete
- */
- petId: number;
- };
- query?: never;
- url: '/pet/{petId}';
-};
-
-export type DeletePetErrors = {
- /**
- * Invalid pet value
- */
- 400: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type DeletePetResponses = {
- /**
- * Pet deleted
- */
- 200: unknown;
-};
-
-export type GetPetByIdData = {
- body?: never;
- path: {
- /**
- * ID of pet to return
- */
- petId: number;
- };
- query?: never;
- url: '/pet/{petId}';
-};
-
-export type GetPetByIdErrors = {
- /**
- * Invalid ID supplied
- */
- 400: unknown;
- /**
- * Pet not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type GetPetByIdResponses = {
- /**
- * successful operation
- */
- 200: Pet;
-};
-
-export type GetPetByIdResponse = GetPetByIdResponses[keyof GetPetByIdResponses];
-
-export type UpdatePetWithFormData = {
- body?: never;
- path: {
- /**
- * ID of pet that needs to be updated
- */
- petId: number;
- };
- query?: {
- /**
- * Name of pet that needs to be updated
- */
- name?: string;
- /**
- * Status of pet that needs to be updated
- */
- status?: string;
- };
- url: '/pet/{petId}';
-};
-
-export type UpdatePetWithFormErrors = {
- /**
- * Invalid input
- */
- 400: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type UpdatePetWithFormResponses = {
- /**
- * successful operation
- */
- 200: Pet;
-};
-
-export type UpdatePetWithFormResponse =
- UpdatePetWithFormResponses[keyof UpdatePetWithFormResponses];
-
-export type UploadFileData = {
- body?: Blob | File;
- path: {
- /**
- * ID of pet to update
- */
- petId: number;
- };
- query?: {
- /**
- * Additional Metadata
- */
- additionalMetadata?: string;
- };
- url: '/pet/{petId}/uploadImage';
-};
-
-export type UploadFileErrors = {
- /**
- * No file uploaded
- */
- 400: unknown;
- /**
- * Pet not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type UploadFileResponses = {
- /**
- * successful operation
- */
- 200: ApiResponse;
-};
-
-export type UploadFileResponse = UploadFileResponses[keyof UploadFileResponses];
-
-export type GetInventoryData = {
- body?: never;
- path?: never;
- query?: never;
- url: '/store/inventory';
-};
-
-export type GetInventoryErrors = {
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type GetInventoryResponses = {
- /**
- * successful operation
- */
- 200: {
- [key: string]: number;
- };
-};
-
-export type GetInventoryResponse =
- GetInventoryResponses[keyof GetInventoryResponses];
-
-export type PlaceOrderData = {
- body?: Order;
- path?: never;
- query?: never;
- url: '/store/order';
-};
-
-export type PlaceOrderErrors = {
- /**
- * Invalid input
- */
- 400: unknown;
- /**
- * Validation exception
- */
- 422: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type PlaceOrderResponses = {
- /**
- * successful operation
- */
- 200: Order;
-};
-
-export type PlaceOrderResponse = PlaceOrderResponses[keyof PlaceOrderResponses];
-
-export type DeleteOrderData = {
- body?: never;
- path: {
- /**
- * ID of the order that needs to be deleted
- */
- orderId: number;
- };
- query?: never;
- url: '/store/order/{orderId}';
-};
-
-export type DeleteOrderErrors = {
- /**
- * Invalid ID supplied
- */
- 400: unknown;
- /**
- * Order not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type DeleteOrderResponses = {
- /**
- * order deleted
- */
- 200: unknown;
-};
-
-export type GetOrderByIdData = {
- body?: never;
- path: {
- /**
- * ID of order that needs to be fetched
- */
- orderId: number;
- };
- query?: never;
- url: '/store/order/{orderId}';
-};
-
-export type GetOrderByIdErrors = {
- /**
- * Invalid ID supplied
- */
- 400: unknown;
- /**
- * Order not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type GetOrderByIdResponses = {
- /**
- * successful operation
- */
- 200: Order;
-};
-
-export type GetOrderByIdResponse =
- GetOrderByIdResponses[keyof GetOrderByIdResponses];
-
-export type CreateUserData = {
- /**
- * Created user object
- */
- body?: User;
- path?: never;
- query?: never;
- url: '/user';
-};
-
-export type CreateUserErrors = {
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type CreateUserResponses = {
- /**
- * successful operation
- */
- 200: User;
-};
-
-export type CreateUserResponse = CreateUserResponses[keyof CreateUserResponses];
-
-export type CreateUsersWithListInputData = {
- body?: Array;
- path?: never;
- query?: never;
- url: '/user/createWithList';
-};
-
-export type CreateUsersWithListInputErrors = {
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type CreateUsersWithListInputResponses = {
- /**
- * Successful operation
- */
- 200: User;
-};
-
-export type CreateUsersWithListInputResponse =
- CreateUsersWithListInputResponses[keyof CreateUsersWithListInputResponses];
-
-export type LoginUserData = {
- body?: never;
- path?: never;
- query?: {
- /**
- * The password for login in clear text
- */
- password?: string;
- /**
- * The user name for login
- */
- username?: string;
- };
- url: '/user/login';
-};
-
-export type LoginUserErrors = {
- /**
- * Invalid username/password supplied
- */
- 400: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type LoginUserResponses = {
- /**
- * successful operation
- */
- 200: string;
-};
-
-export type LoginUserResponse = LoginUserResponses[keyof LoginUserResponses];
-
-export type LogoutUserData = {
- body?: never;
- path?: never;
- query?: never;
- url: '/user/logout';
-};
-
-export type LogoutUserErrors = {
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type LogoutUserResponses = {
- /**
- * successful operation
- */
- 200: unknown;
-};
-
-export type DeleteUserData = {
- body?: never;
- path: {
- /**
- * The name that needs to be deleted
- */
- username: string;
- };
- query?: never;
- url: '/user/{username}';
-};
-
-export type DeleteUserErrors = {
- /**
- * Invalid username supplied
- */
- 400: unknown;
- /**
- * User not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type DeleteUserResponses = {
- /**
- * User deleted
- */
- 200: unknown;
-};
-
-export type GetUserByNameData = {
- body?: never;
- path: {
- /**
- * The name that needs to be fetched. Use user1 for testing
- */
- username: string;
- };
- query?: never;
- url: '/user/{username}';
-};
-
-export type GetUserByNameErrors = {
- /**
- * Invalid username supplied
- */
- 400: unknown;
- /**
- * User not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type GetUserByNameResponses = {
- /**
- * successful operation
- */
- 200: User;
-};
-
-export type GetUserByNameResponse =
- GetUserByNameResponses[keyof GetUserByNameResponses];
-
-export type UpdateUserData = {
- /**
- * Update an existent user in the store
- */
- body?: User;
- path: {
- /**
- * name that need to be deleted
- */
- username: string;
- };
- query?: never;
- url: '/user/{username}';
-};
-
-export type UpdateUserErrors = {
- /**
- * bad request
- */
- 400: unknown;
- /**
- * user not found
- */
- 404: unknown;
- /**
- * Unexpected error
- */
- default: unknown;
-};
-
-export type UpdateUserResponses = {
- /**
- * successful operation
- */
- 200: unknown;
-};
diff --git a/examples/openapi-ts-sample/src/client/zod.gen.ts b/examples/openapi-ts-sample/src/client/zod.gen.ts
deleted file mode 100644
index a4730a50d..000000000
--- a/examples/openapi-ts-sample/src/client/zod.gen.ts
+++ /dev/null
@@ -1,280 +0,0 @@
-// This file is auto-generated by @hey-api/openapi-ts
-
-import { z } from 'zod';
-
-export const zOrder = z.object({
- complete: z.optional(z.boolean()),
- id: z.optional(z.coerce.bigint()),
- petId: z.optional(z.coerce.bigint()),
- quantity: z.optional(z.int()),
- shipDate: z.optional(z.iso.datetime()),
- status: z.optional(z.enum(['placed', 'approved', 'delivered'])),
-});
-
-export const zCategory = z.object({
- id: z.optional(z.coerce.bigint()),
- name: z.optional(z.string()),
-});
-
-export const zUser = z.object({
- email: z.optional(z.string()),
- firstName: z.optional(z.string()),
- id: z.optional(z.coerce.bigint()),
- lastName: z.optional(z.string()),
- password: z.optional(z.string()),
- phone: z.optional(z.string()),
- userStatus: z.optional(z.int()),
- username: z.optional(z.string()),
-});
-
-export const zTag = z.object({
- id: z.optional(z.coerce.bigint()),
- name: z.optional(z.string()),
-});
-
-export const zPet = z.object({
- category: z.optional(zCategory),
- id: z.optional(z.coerce.bigint()),
- name: z.string(),
- photoUrls: z.array(z.string()),
- status: z.optional(z.enum(['available', 'pending', 'sold'])),
- tags: z.optional(z.array(zTag)),
-});
-
-export const zApiResponse = z.object({
- code: z.optional(z.int()),
- message: z.optional(z.string()),
- type: z.optional(z.string()),
-});
-
-export const zPet2 = zPet;
-
-/**
- * List of user object
- */
-export const zUserArray = z.array(zUser);
-
-export const zAddPetData = z.object({
- body: zPet,
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-/**
- * Successful operation
- */
-export const zAddPetResponse = zPet;
-
-export const zUpdatePetData = z.object({
- body: zPet,
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-/**
- * Successful operation
- */
-export const zUpdatePetResponse = zPet;
-
-export const zFindPetsByStatusData = z.object({
- body: z.optional(z.never()),
- path: z.optional(z.never()),
- query: z.object({
- status: z.enum(['available', 'pending', 'sold']),
- }),
-});
-
-/**
- * successful operation
- */
-export const zFindPetsByStatusResponse = z.array(zPet);
-
-export const zFindPetsByTagsData = z.object({
- body: z.optional(z.never()),
- path: z.optional(z.never()),
- query: z.object({
- tags: z.array(z.string()),
- }),
-});
-
-/**
- * successful operation
- */
-export const zFindPetsByTagsResponse = z.array(zPet);
-
-export const zDeletePetData = z.object({
- body: z.optional(z.never()),
- headers: z.optional(
- z.object({
- api_key: z.optional(z.string()),
- }),
- ),
- path: z.object({
- petId: z.coerce.bigint(),
- }),
- query: z.optional(z.never()),
-});
-
-export const zGetPetByIdData = z.object({
- body: z.optional(z.never()),
- path: z.object({
- petId: z.coerce.bigint(),
- }),
- query: z.optional(z.never()),
-});
-
-/**
- * successful operation
- */
-export const zGetPetByIdResponse = zPet;
-
-export const zUpdatePetWithFormData = z.object({
- body: z.optional(z.never()),
- path: z.object({
- petId: z.coerce.bigint(),
- }),
- query: z.optional(
- z.object({
- name: z.optional(z.string()),
- status: z.optional(z.string()),
- }),
- ),
-});
-
-/**
- * successful operation
- */
-export const zUpdatePetWithFormResponse = zPet;
-
-export const zUploadFileData = z.object({
- body: z.optional(z.string()),
- path: z.object({
- petId: z.coerce.bigint(),
- }),
- query: z.optional(
- z.object({
- additionalMetadata: z.optional(z.string()),
- }),
- ),
-});
-
-/**
- * successful operation
- */
-export const zUploadFileResponse = zApiResponse;
-
-export const zGetInventoryData = z.object({
- body: z.optional(z.never()),
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-/**
- * successful operation
- */
-export const zGetInventoryResponse = z.record(z.string(), z.int());
-
-export const zPlaceOrderData = z.object({
- body: z.optional(zOrder),
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-/**
- * successful operation
- */
-export const zPlaceOrderResponse = zOrder;
-
-export const zDeleteOrderData = z.object({
- body: z.optional(z.never()),
- path: z.object({
- orderId: z.coerce.bigint(),
- }),
- query: z.optional(z.never()),
-});
-
-export const zGetOrderByIdData = z.object({
- body: z.optional(z.never()),
- path: z.object({
- orderId: z.coerce.bigint(),
- }),
- query: z.optional(z.never()),
-});
-
-/**
- * successful operation
- */
-export const zGetOrderByIdResponse = zOrder;
-
-export const zCreateUserData = z.object({
- body: z.optional(zUser),
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-/**
- * successful operation
- */
-export const zCreateUserResponse = zUser;
-
-export const zCreateUsersWithListInputData = z.object({
- body: z.optional(z.array(zUser)),
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-/**
- * Successful operation
- */
-export const zCreateUsersWithListInputResponse = zUser;
-
-export const zLoginUserData = z.object({
- body: z.optional(z.never()),
- path: z.optional(z.never()),
- query: z.optional(
- z.object({
- password: z.optional(z.string()),
- username: z.optional(z.string()),
- }),
- ),
-});
-
-/**
- * successful operation
- */
-export const zLoginUserResponse = z.string();
-
-export const zLogoutUserData = z.object({
- body: z.optional(z.never()),
- path: z.optional(z.never()),
- query: z.optional(z.never()),
-});
-
-export const zDeleteUserData = z.object({
- body: z.optional(z.never()),
- path: z.object({
- username: z.string(),
- }),
- query: z.optional(z.never()),
-});
-
-export const zGetUserByNameData = z.object({
- body: z.optional(z.never()),
- path: z.object({
- username: z.string(),
- }),
- query: z.optional(z.never()),
-});
-
-/**
- * successful operation
- */
-export const zGetUserByNameResponse = zUser;
-
-export const zUpdateUserData = z.object({
- body: z.optional(zUser),
- path: z.object({
- username: z.string(),
- }),
- query: z.optional(z.never()),
-});
diff --git a/examples/openapi-ts-sample/src/hey-api.ts b/examples/openapi-ts-sample/src/hey-api.ts
deleted file mode 100644
index 19707d1ed..000000000
--- a/examples/openapi-ts-sample/src/hey-api.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import type { CreateClientConfig } from './client/client';
-
-export const createClientConfig: CreateClientConfig = (config) => ({
- ...config,
- // set default base url for requests
- baseUrl: 'https://petstore3.swagger.io/api/v3',
- // set default headers for requests
- headers: {
- Authorization: 'Bearer ',
- },
-});
diff --git a/examples/openapi-ts-sample/src/main.tsx b/examples/openapi-ts-sample/src/main.tsx
deleted file mode 100644
index 2f7678524..000000000
--- a/examples/openapi-ts-sample/src/main.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import '@radix-ui/themes/styles.css';
-
-import { Theme } from '@radix-ui/themes';
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-
-import App from './App.tsx';
-
-ReactDOM.createRoot(document.getElementById('root')!).render(
-
-
-
-
- ,
-);
diff --git a/examples/openapi-ts-sample/src/vite-env.d.ts b/examples/openapi-ts-sample/src/vite-env.d.ts
deleted file mode 100644
index 11f02fe2a..000000000
--- a/examples/openapi-ts-sample/src/vite-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/examples/openapi-ts-sample/tailwind.config.js b/examples/openapi-ts-sample/tailwind.config.js
deleted file mode 100644
index 0284c5614..000000000
--- a/examples/openapi-ts-sample/tailwind.config.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
- content: ['./index.html', './src/**/*.{html,js,ts,jsx,tsx}'],
- plugins: [],
- theme: {
- extend: {},
- },
-};
diff --git a/examples/openapi-ts-sample/tsconfig.json b/examples/openapi-ts-sample/tsconfig.json
deleted file mode 100644
index a7fc6fbf2..000000000
--- a/examples/openapi-ts-sample/tsconfig.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2020",
- "useDefineForClassFields": true,
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
- "module": "ESNext",
- "skipLibCheck": true,
-
- /* Bundler mode */
- "moduleResolution": "bundler",
- "allowImportingTsExtensions": true,
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx",
-
- /* Linting */
- "strict": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true
- },
- "include": ["src"],
- "references": [{ "path": "./tsconfig.node.json" }]
-}
diff --git a/examples/openapi-ts-sample/tsconfig.node.json b/examples/openapi-ts-sample/tsconfig.node.json
deleted file mode 100644
index 97ede7ee6..000000000
--- a/examples/openapi-ts-sample/tsconfig.node.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "skipLibCheck": true,
- "module": "ESNext",
- "moduleResolution": "bundler",
- "allowSyntheticDefaultImports": true,
- "strict": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/examples/openapi-ts-sample/vite.config.ts b/examples/openapi-ts-sample/vite.config.ts
deleted file mode 100644
index 8cbf22f1b..000000000
--- a/examples/openapi-ts-sample/vite.config.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { createViteConfig } from '@config/vite-base';
-import react from '@vitejs/plugin-react';
-
-// https://vitejs.dev/config/
-export default createViteConfig({
- plugins: [react()],
-});
diff --git a/package.json b/package.json
index 8a677bce7..5fd1c7670 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
"funding": "https://github.com/sponsors/hey-api",
"type": "module",
"scripts": {
- "build": "turbo run build --filter=\"!@example/openapi-ts-sample\"",
+ "build": "turbo run build",
"changeset": "changeset",
"examples:check": "sh ./scripts/examples-check.sh",
"examples:generate": "sh ./scripts/examples-generate.sh",
@@ -33,8 +33,8 @@
"test:coverage": "turbo run test:coverage",
"test:update": "turbo run test:update",
"test:watch": "turbo run test:watch",
- "test": "turbo run test --filter=\"!@example/openapi-ts-sample\"",
- "typecheck": "turbo run typecheck --filter=\"!@example/openapi-ts-sample\""
+ "test": "turbo run test",
+ "typecheck": "turbo run typecheck"
},
"engines": {
"node": ">=20.19.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d4acadb0a..a14ae2d04 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -110,6 +110,129 @@ importers:
specifier: 3.1.1
version: 3.1.1(@types/debug@4.1.12)(@types/node@22.10.5)(jiti@2.6.1)(jsdom@23.0.0)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
+ dev:
+ devDependencies:
+ '@angular-devkit/build-angular':
+ specifier: 19.2.19
+ version: 19.2.19(@angular/compiler-cli@19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3))(@angular/compiler@19.2.15)(@angular/platform-server@19.2.0(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.15)(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.9.3)))(typescript@5.9.3)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(yaml@2.8.1)
+ '@angular/animations':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))
+ '@angular/cli':
+ specifier: 19.2.19
+ version: 19.2.19(@types/node@22.10.5)(chokidar@4.0.3)
+ '@angular/common':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)
+ '@angular/compiler':
+ specifier: 19.2.15
+ version: 19.2.15
+ '@angular/compiler-cli':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3)
+ '@angular/core':
+ specifier: 19.2.15
+ version: 19.2.15(rxjs@7.8.2)(zone.js@0.15.1)
+ '@angular/forms':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)
+ '@angular/platform-browser':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))
+ '@angular/platform-browser-dynamic':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.15)(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))
+ '@angular/router':
+ specifier: 19.2.15
+ version: 19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)
+ '@config/vite-base':
+ specifier: workspace:*
+ version: link:../packages/config-vite-base
+ '@hey-api/codegen-core':
+ specifier: workspace:*
+ version: link:../packages/codegen-core
+ '@hey-api/custom-client':
+ specifier: workspace:*
+ version: link:../packages/custom-client
+ '@hey-api/openapi-ts':
+ specifier: workspace:*
+ version: link:../packages/openapi-ts
+ '@pinia/colada':
+ specifier: 0.17.7
+ version: 0.17.7(pinia@3.0.3(typescript@5.9.3)(vue@3.5.13(typescript@5.9.3)))(vue@3.5.13(typescript@5.9.3))
+ '@tanstack/angular-query-experimental':
+ specifier: 5.73.3
+ version: 5.73.3(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))
+ '@tanstack/react-query':
+ specifier: 5.73.3
+ version: 5.73.3(react@19.0.0)
+ '@tanstack/solid-query':
+ specifier: 5.73.3
+ version: 5.73.3(solid-js@1.9.9)
+ '@tanstack/svelte-query':
+ specifier: 5.73.3
+ version: 5.73.3(svelte@5.19.9)
+ '@tanstack/vue-query':
+ specifier: 5.73.3
+ version: 5.73.3(vue@3.5.13(typescript@5.9.3))
+ '@types/cross-spawn':
+ specifier: 6.0.6
+ version: 6.0.6
+ ajv:
+ specifier: 8.17.1
+ version: 8.17.1
+ arktype:
+ specifier: 2.1.25
+ version: 2.1.25
+ axios:
+ specifier: 1.8.2
+ version: 1.8.2
+ cross-spawn:
+ specifier: 7.0.6
+ version: 7.0.6
+ eslint:
+ specifier: 9.17.0
+ version: 9.17.0(jiti@2.6.1)
+ fastify:
+ specifier: 5.2.0
+ version: 5.2.0
+ glob:
+ specifier: 11.0.3
+ version: 11.0.3
+ node-fetch:
+ specifier: 3.3.2
+ version: 3.3.2
+ nuxt:
+ specifier: 3.14.1592
+ version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.3.2)(encoding@0.1.13)(eslint@9.17.0(jiti@2.6.1))(ioredis@5.7.0)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
+ ofetch:
+ specifier: 1.4.1
+ version: 1.4.1
+ prettier:
+ specifier: 3.4.2
+ version: 3.4.2
+ rxjs:
+ specifier: 7.8.2
+ version: 7.8.2
+ ts-node:
+ specifier: 10.9.2
+ version: 10.9.2(@types/node@22.10.5)(typescript@5.9.3)
+ tslib:
+ specifier: 2.8.1
+ version: 2.8.1
+ typescript:
+ specifier: 5.9.3
+ version: 5.9.3
+ valibot:
+ specifier: 1.1.0
+ version: 1.1.0(typescript@5.9.3)
+ vue:
+ specifier: 3.5.13
+ version: 3.5.13(typescript@5.9.3)
+ zod:
+ specifier: 4.1.12
+ version: 4.1.12
+
docs:
dependencies:
'@stackblitz/sdk':
@@ -1342,7 +1465,7 @@ importers:
version: 11.0.3
nuxt:
specifier: 3.14.1592
- version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.3.2)(encoding@0.1.13)(eslint@9.17.0(jiti@2.6.1))(ioredis@5.7.0)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))
+ version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.3.2)(encoding@0.1.13)(eslint@9.17.0(jiti@2.6.1))(ioredis@5.7.0)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3)
ofetch:
specifier: 1.4.1
version: 1.4.1
@@ -7984,10 +8107,6 @@ packages:
resolution: {integrity: sha512-YKGmAy84hKH+hHIIER07VCAHf9u0Ldelx1uU6EBxsRPDXIA1m5fsKmJfyC3xBhw6cVC/1i83VdbL4PvepTrt8A==}
hasBin: true
- cross-spawn@7.0.5:
- resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
- engines: {node: '>= 8'}
-
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -14283,7 +14402,7 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.0(chokidar@4.0.3)
- '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)))(webpack@5.98.0(esbuild@0.25.0))
+ '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0)
'@angular-devkit/core': 19.2.0(chokidar@4.0.3)
'@angular/build': 19.2.0(@angular/compiler-cli@19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.8.3))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/platform-server@19.2.0(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.0(@angular/animations@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))))(@angular/ssr@19.2.15(5c03da8199d2fcdf9ff93b70f9349edd))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.8.3)))(terser@5.39.0)(typescript@5.8.3)(yaml@2.8.1)
'@angular/compiler-cli': 19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.8.3)
@@ -14301,7 +14420,7 @@ snapshots:
'@vitejs/plugin-basic-ssl': 1.2.0(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.8.1))
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.5.2)
- babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.98.0(esbuild@0.25.0))
+ babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.98.0)
browserslist: 4.25.4
copy-webpack-plugin: 12.0.2(webpack@5.98.0)
css-loader: 7.1.2(webpack@5.98.0)
@@ -14321,7 +14440,7 @@ snapshots:
picomatch: 4.0.2
piscina: 4.8.0
postcss: 8.5.2
- postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.0))
+ postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0)
resolve-url-loader: 5.0.0
rxjs: 7.8.1
sass: 1.85.0
@@ -14334,8 +14453,8 @@ snapshots:
tslib: 2.8.1
typescript: 5.8.3
webpack: 5.98.0(esbuild@0.25.0)
- webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0))
- webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0))
+ webpack-dev-middleware: 7.4.2(webpack@5.98.0)
+ webpack-dev-server: 5.2.0(webpack@5.98.0)
webpack-merge: 6.0.1
webpack-subresource-integrity: 5.1.0(webpack@5.98.0)
optionalDependencies:
@@ -14389,10 +14508,10 @@ snapshots:
'@vitejs/plugin-basic-ssl': 1.2.0(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.5.2)
- babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.98.0(esbuild@0.25.0))
+ babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.98.0)
browserslist: 4.25.4
- copy-webpack-plugin: 12.0.2(webpack@5.98.0)
- css-loader: 7.1.2(webpack@5.98.0)
+ copy-webpack-plugin: 12.0.2(webpack@5.98.0(esbuild@0.25.0))
+ css-loader: 7.1.2(webpack@5.98.0(esbuild@0.25.0))
esbuild-wasm: 0.25.0
fast-glob: 3.3.3
http-proxy-middleware: 3.0.3
@@ -14400,22 +14519,22 @@ snapshots:
jsonc-parser: 3.3.1
karma-source-map-support: 1.4.0
less: 4.2.2
- less-loader: 12.2.0(less@4.2.2)(webpack@5.98.0)
- license-webpack-plugin: 4.0.2(webpack@5.98.0)
+ less-loader: 12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.0))
+ license-webpack-plugin: 4.0.2(webpack@5.98.0(esbuild@0.25.0))
loader-utils: 3.3.1
- mini-css-extract-plugin: 2.9.2(webpack@5.98.0)
+ mini-css-extract-plugin: 2.9.2(webpack@5.98.0(esbuild@0.25.0))
open: 10.1.0
ora: 5.4.1
picomatch: 4.0.2
piscina: 4.8.0
postcss: 8.5.2
- postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.0))
+ postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0)
resolve-url-loader: 5.0.0
rxjs: 7.8.1
sass: 1.85.0
- sass-loader: 16.0.5(sass@1.85.0)(webpack@5.98.0)
+ sass-loader: 16.0.5(sass@1.85.0)(webpack@5.98.0(esbuild@0.25.0))
semver: 7.7.1
- source-map-loader: 5.0.0(webpack@5.98.0)
+ source-map-loader: 5.0.0(webpack@5.98.0(esbuild@0.25.0))
source-map-support: 0.5.21
terser: 5.39.0
tree-kill: 1.2.2
@@ -14425,7 +14544,7 @@ snapshots:
webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0))
webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0))
webpack-merge: 6.0.1
- webpack-subresource-integrity: 5.1.0(webpack@5.98.0)
+ webpack-subresource-integrity: 5.1.0(webpack@5.98.0(esbuild@0.25.0))
optionalDependencies:
'@angular/platform-server': 19.2.0(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.0(@angular/animations@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))
'@angular/ssr': 19.2.15(5c03da8199d2fcdf9ff93b70f9349edd)
@@ -14497,7 +14616,7 @@ snapshots:
picomatch: 4.0.2
piscina: 4.8.0
postcss: 8.5.2
- postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.0))
+ postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0)
resolve-url-loader: 5.0.0
rxjs: 7.8.1
sass: 1.85.0
@@ -14510,7 +14629,7 @@ snapshots:
tslib: 2.8.1
typescript: 5.8.3
webpack: 5.98.0(esbuild@0.25.4)
- webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0))
+ webpack-dev-middleware: 7.4.2(webpack@5.98.0)
webpack-dev-server: 5.2.2(webpack@5.98.0)
webpack-merge: 6.0.1
webpack-subresource-integrity: 5.1.0(webpack@5.98.0)
@@ -14598,7 +14717,94 @@ snapshots:
tslib: 2.8.1
typescript: 5.9.3
webpack: 5.98.0(esbuild@0.25.4)
- webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0))
+ webpack-dev-middleware: 7.4.2(webpack@5.98.0)
+ webpack-dev-server: 5.2.2(webpack@5.98.0)
+ webpack-merge: 6.0.1
+ webpack-subresource-integrity: 5.1.0(webpack@5.98.0)
+ optionalDependencies:
+ '@angular/platform-server': 19.2.0(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.15)(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))
+ esbuild: 0.25.4
+ karma: 6.4.4
+ tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.9.3))
+ transitivePeerDependencies:
+ - '@angular/compiler'
+ - '@rspack/core'
+ - '@swc/core'
+ - '@types/node'
+ - bufferutil
+ - chokidar
+ - debug
+ - html-webpack-plugin
+ - jiti
+ - lightningcss
+ - node-sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - tsx
+ - uglify-js
+ - utf-8-validate
+ - vite
+ - webpack-cli
+ - yaml
+
+ '@angular-devkit/build-angular@19.2.19(@angular/compiler-cli@19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3))(@angular/compiler@19.2.15)(@angular/platform-server@19.2.0(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.15)(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.9.3)))(typescript@5.9.3)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(yaml@2.8.1)':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@angular-devkit/architect': 0.1902.19(chokidar@4.0.3)
+ '@angular-devkit/build-webpack': 0.1902.19(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.98.0))(webpack@5.98.0)
+ '@angular-devkit/core': 19.2.19(chokidar@4.0.3)
+ '@angular/build': 19.2.19(@angular/compiler-cli@19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3))(@angular/compiler@19.2.15)(@angular/platform-server@19.2.0(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.15)(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/animations@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.9.3)))(terser@5.39.0)(typescript@5.9.3)(yaml@2.8.1)
+ '@angular/compiler-cli': 19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3)
+ '@babel/core': 7.26.10
+ '@babel/generator': 7.26.10
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10)
+ '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10)
+ '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10)
+ '@babel/preset-env': 7.26.9(@babel/core@7.26.10)
+ '@babel/runtime': 7.26.10
+ '@discoveryjs/json-ext': 0.6.3
+ '@ngtools/webpack': 19.2.19(@angular/compiler-cli@19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.98.0)
+ '@vitejs/plugin-basic-ssl': 1.2.0(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
+ ansi-colors: 4.1.3
+ autoprefixer: 10.4.20(postcss@8.5.2)
+ babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0)
+ browserslist: 4.25.4
+ copy-webpack-plugin: 12.0.2(webpack@5.98.0)
+ css-loader: 7.1.2(webpack@5.98.0)
+ esbuild-wasm: 0.25.4
+ fast-glob: 3.3.3
+ http-proxy-middleware: 3.0.5
+ istanbul-lib-instrument: 6.0.3
+ jsonc-parser: 3.3.1
+ karma-source-map-support: 1.4.0
+ less: 4.2.2
+ less-loader: 12.2.0(less@4.2.2)(webpack@5.98.0)
+ license-webpack-plugin: 4.0.2(webpack@5.98.0)
+ loader-utils: 3.3.1
+ mini-css-extract-plugin: 2.9.2(webpack@5.98.0)
+ open: 10.1.0
+ ora: 5.4.1
+ picomatch: 4.0.2
+ piscina: 4.8.0
+ postcss: 8.5.2
+ postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.9.3)(webpack@5.98.0)
+ resolve-url-loader: 5.0.0
+ rxjs: 7.8.1
+ sass: 1.85.0
+ sass-loader: 16.0.5(sass@1.85.0)(webpack@5.98.0)
+ semver: 7.7.1
+ source-map-loader: 5.0.0(webpack@5.98.0)
+ source-map-support: 0.5.21
+ terser: 5.39.0
+ tree-kill: 1.2.2
+ tslib: 2.8.1
+ typescript: 5.9.3
+ webpack: 5.98.0(esbuild@0.25.4)
+ webpack-dev-middleware: 7.4.2(webpack@5.98.0)
webpack-dev-server: 5.2.2(webpack@5.98.0)
webpack-merge: 6.0.1
webpack-subresource-integrity: 5.1.0(webpack@5.98.0)
@@ -14639,11 +14845,20 @@ snapshots:
transitivePeerDependencies:
- chokidar
+ '@angular-devkit/build-webpack@0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0)':
+ dependencies:
+ '@angular-devkit/architect': 0.1902.0(chokidar@4.0.3)
+ rxjs: 7.8.1
+ webpack: 5.98.0(esbuild@0.25.0)
+ webpack-dev-server: 5.2.0(webpack@5.98.0)
+ transitivePeerDependencies:
+ - chokidar
+
'@angular-devkit/build-webpack@0.1902.15(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.98.0))(webpack@5.98.0)':
dependencies:
'@angular-devkit/architect': 0.1902.15(chokidar@4.0.3)
rxjs: 7.8.1
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
webpack-dev-server: 5.2.2(webpack@5.98.0)
transitivePeerDependencies:
- chokidar
@@ -14652,7 +14867,7 @@ snapshots:
dependencies:
'@angular-devkit/architect': 0.1902.19(chokidar@4.0.3)
rxjs: 7.8.1
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
webpack-dev-server: 5.2.2(webpack@5.98.0)
transitivePeerDependencies:
- chokidar
@@ -18054,13 +18269,13 @@ snapshots:
dependencies:
'@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.8.3)
typescript: 5.8.3
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
'@ngtools/webpack@19.2.19(@angular/compiler-cli@19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.98.0)':
dependencies:
'@angular/compiler-cli': 19.2.15(@angular/compiler@19.2.15)(typescript@5.9.3)
typescript: 5.9.3
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
'@nodelib/fs.scandir@2.1.5':
dependencies:
@@ -18157,12 +18372,12 @@ snapshots:
- magicast
- supports-color
- '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))':
+ '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))':
dependencies:
'@nuxt/kit': 3.15.4(magicast@0.3.5)
'@nuxt/schema': 3.16.2
execa: 7.2.0
- vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)
+ vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
transitivePeerDependencies:
- magicast
- supports-color
@@ -18212,8 +18427,8 @@ snapshots:
scule: 1.3.0
semver: 7.7.2
simple-git: 3.28.0
- sirv: 3.0.1
- tinyglobby: 0.2.14
+ sirv: 3.0.2
+ tinyglobby: 0.2.15
unimport: 3.14.6(rollup@3.29.5)
vite: 7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@3.29.5)(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
@@ -18259,8 +18474,8 @@ snapshots:
scule: 1.3.0
semver: 7.7.2
simple-git: 3.28.0
- sirv: 3.0.1
- tinyglobby: 0.2.14
+ sirv: 3.0.2
+ tinyglobby: 0.2.15
unimport: 3.14.6(rollup@4.50.0)
vite: 7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
@@ -18306,8 +18521,8 @@ snapshots:
scule: 1.3.0
semver: 7.7.2
simple-git: 3.28.0
- sirv: 3.0.1
- tinyglobby: 0.2.14
+ sirv: 3.0.2
+ tinyglobby: 0.2.15
unimport: 3.14.6(rollup@4.50.0)
vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.8.1)
vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.8.1))
@@ -18321,13 +18536,13 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/devtools@1.7.0(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))(vue@3.5.13(typescript@5.9.3))':
+ '@nuxt/devtools@1.7.0(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.13(typescript@5.9.3))':
dependencies:
'@antfu/utils': 0.7.10
- '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))
+ '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
'@nuxt/devtools-wizard': 1.7.0
'@nuxt/kit': 3.15.4(magicast@0.3.5)
- '@vue/devtools-core': 7.6.8(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))(vue@3.5.13(typescript@5.9.3))
+ '@vue/devtools-core': 7.6.8(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.13(typescript@5.9.3))
'@vue/devtools-kit': 7.6.8
birpc: 0.2.19
consola: 3.4.2
@@ -18353,12 +18568,12 @@ snapshots:
scule: 1.3.0
semver: 7.7.2
simple-git: 3.28.0
- sirv: 3.0.1
- tinyglobby: 0.2.14
+ sirv: 3.0.2
+ tinyglobby: 0.2.15
unimport: 3.14.6(rollup@4.50.0)
- vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)
- vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))
- vite-plugin-vue-inspector: 5.3.2(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))
+ vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
+ vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
+ vite-plugin-vue-inspector: 5.3.2(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
which: 3.0.1
ws: 8.18.3
transitivePeerDependencies:
@@ -18368,17 +18583,63 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@3.29.5)':
+ '@nuxt/devtools@1.7.0(rollup@4.50.0)(vue@3.5.13(typescript@5.9.3))':
dependencies:
- '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5)
- c12: 2.0.1(magicast@0.3.5)
- consola: 3.4.2
- defu: 6.1.4
- destr: 2.0.5
- globby: 14.1.0
+ '@antfu/utils': 0.7.10
+ '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
+ '@nuxt/devtools-wizard': 1.7.0
+ '@nuxt/kit': 3.15.4(magicast@0.3.5)
+ '@vue/devtools-core': 7.6.8(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.13(typescript@5.9.3))
+ '@vue/devtools-kit': 7.6.8
+ birpc: 0.2.19
+ consola: 3.4.2
+ cronstrue: 2.59.0
+ destr: 2.0.5
+ error-stack-parser-es: 0.1.5
+ execa: 7.2.0
+ fast-npm-meta: 0.2.2
+ flatted: 3.3.3
+ get-port-please: 3.2.0
+ hookable: 5.5.3
+ image-meta: 0.2.1
+ is-installed-globally: 1.0.0
+ launch-editor: 2.11.1
+ local-pkg: 0.5.1
+ magicast: 0.3.5
+ nypm: 0.4.1
+ ohash: 1.1.6
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.3.1
+ rc9: 2.1.2
+ scule: 1.3.0
+ semver: 7.7.2
+ simple-git: 3.28.0
+ sirv: 3.0.2
+ tinyglobby: 0.2.15
+ unimport: 3.14.6(rollup@4.50.0)
+ vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
+ vite-plugin-vue-inspector: 5.3.2(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
+ which: 3.0.1
+ ws: 8.18.3
+ transitivePeerDependencies:
+ - bufferutil
+ - rollup
+ - supports-color
+ - utf-8-validate
+ - vue
+
+ '@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@3.29.5)':
+ dependencies:
+ '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5)
+ c12: 2.0.1(magicast@0.3.5)
+ consola: 3.4.2
+ defu: 6.1.4
+ destr: 2.0.5
+ globby: 14.1.0
hash-sum: 2.0.0
ignore: 6.0.2
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
mlly: 1.8.0
@@ -18405,7 +18666,7 @@ snapshots:
globby: 14.1.0
hash-sum: 2.0.0
ignore: 6.0.2
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
mlly: 1.8.0
@@ -18623,9 +18884,9 @@ snapshots:
externality: 1.0.2
get-port-please: 3.2.0
h3: 1.15.4
- jiti: 2.5.1
+ jiti: 2.6.1
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
ohash: 1.1.6
pathe: 1.1.2
@@ -18683,9 +18944,9 @@ snapshots:
externality: 1.0.2
get-port-please: 3.2.0
h3: 1.15.4
- jiti: 2.5.1
+ jiti: 2.6.1
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
ohash: 1.1.6
pathe: 1.1.2
@@ -18743,9 +19004,9 @@ snapshots:
externality: 1.0.2
get-port-please: 3.2.0
h3: 1.15.4
- jiti: 2.5.1
+ jiti: 2.6.1
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
ohash: 1.1.6
pathe: 1.1.2
@@ -21130,14 +21391,14 @@ snapshots:
transitivePeerDependencies:
- vite
- '@vue/devtools-core@7.6.8(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))(vue@3.5.13(typescript@5.9.3))':
+ '@vue/devtools-core@7.6.8(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.13(typescript@5.9.3))':
dependencies:
'@vue/devtools-kit': 7.7.7
'@vue/devtools-shared': 7.7.7
mitt: 3.0.1
nanoid: 5.1.5
pathe: 1.1.2
- vite-hot-client: 0.2.4(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))
+ vite-hot-client: 0.2.4(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))
vue: 3.5.13(typescript@5.9.3)
transitivePeerDependencies:
- vite
@@ -21702,7 +21963,7 @@ snapshots:
ast-walker-scope@0.6.2:
dependencies:
- '@babel/parser': 7.28.3
+ '@babel/parser': 7.28.4
ast-kit: 1.4.3
async-function@1.0.0: {}
@@ -21783,9 +22044,9 @@ snapshots:
'@babel/core': 7.26.10
find-cache-dir: 4.0.0
schema-utils: 4.3.2
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
- babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.98.0(esbuild@0.25.0)):
+ babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.98.0):
dependencies:
'@babel/core': 7.26.9
find-cache-dir: 4.0.0
@@ -22369,7 +22630,7 @@ snapshots:
graceful-fs: 4.2.11
p-event: 6.0.1
- copy-webpack-plugin@12.0.2(webpack@5.98.0):
+ copy-webpack-plugin@12.0.2(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
fast-glob: 3.3.3
glob-parent: 6.0.2
@@ -22379,6 +22640,16 @@ snapshots:
serialize-javascript: 6.0.2
webpack: 5.98.0(esbuild@0.25.0)
+ copy-webpack-plugin@12.0.2(webpack@5.98.0):
+ dependencies:
+ fast-glob: 3.3.3
+ glob-parent: 6.0.2
+ globby: 14.1.0
+ normalize-path: 3.0.0
+ schema-utils: 4.3.2
+ serialize-javascript: 6.0.2
+ webpack: 5.98.0(esbuild@0.25.4)
+
core-js-compat@3.45.1:
dependencies:
browserslist: 4.25.4
@@ -22425,12 +22696,6 @@ snapshots:
cronstrue@2.59.0: {}
- cross-spawn@7.0.5:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -22445,7 +22710,7 @@ snapshots:
dependencies:
postcss: 8.5.6
- css-loader@7.1.2(webpack@5.98.0):
+ css-loader@7.1.2(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
icss-utils: 5.1.0(postcss@8.4.41)
postcss: 8.4.41
@@ -22458,6 +22723,19 @@ snapshots:
optionalDependencies:
webpack: 5.98.0(esbuild@0.25.0)
+ css-loader@7.1.2(webpack@5.98.0):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.4.41)
+ postcss: 8.4.41
+ postcss-modules-extract-imports: 3.1.0(postcss@8.4.41)
+ postcss-modules-local-by-default: 4.2.0(postcss@8.4.41)
+ postcss-modules-scope: 3.2.1(postcss@8.4.41)
+ postcss-modules-values: 4.0.0(postcss@8.4.41)
+ postcss-value-parser: 4.2.0
+ semver: 7.7.2
+ optionalDependencies:
+ webpack: 5.98.0(esbuild@0.25.4)
+
css-select@5.2.2:
dependencies:
boolbase: 1.0.0
@@ -23221,7 +23499,7 @@ snapshots:
eslint: 9.17.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.17.0(jiti@2.6.1))
eslint-plugin-react: 7.37.5(eslint@9.17.0(jiti@2.6.1))
eslint-plugin-react-hooks: 5.2.0(eslint@9.17.0(jiti@2.6.1))
@@ -23259,7 +23537,7 @@ snapshots:
tinyglobby: 0.2.14
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -23274,7 +23552,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -24708,7 +24986,7 @@ snapshots:
istanbul-lib-instrument@6.0.3:
dependencies:
- '@babel/core': 7.26.9
+ '@babel/core': 7.28.3
'@babel/parser': 7.28.3
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
@@ -24995,12 +25273,18 @@ snapshots:
dependencies:
readable-stream: 2.3.8
- less-loader@12.2.0(less@4.2.2)(webpack@5.98.0):
+ less-loader@12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
less: 4.2.2
optionalDependencies:
webpack: 5.98.0(esbuild@0.25.0)
+ less-loader@12.2.0(less@4.2.2)(webpack@5.98.0):
+ dependencies:
+ less: 4.2.2
+ optionalDependencies:
+ webpack: 5.98.0(esbuild@0.25.4)
+
less@4.2.2:
dependencies:
copy-anything: 2.0.6
@@ -25020,12 +25304,18 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
- license-webpack-plugin@4.0.2(webpack@5.98.0):
+ license-webpack-plugin@4.0.2(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
webpack-sources: 3.3.3
optionalDependencies:
webpack: 5.98.0(esbuild@0.25.0)
+ license-webpack-plugin@4.0.2(webpack@5.98.0):
+ dependencies:
+ webpack-sources: 3.3.3
+ optionalDependencies:
+ webpack: 5.98.0(esbuild@0.25.4)
+
light-my-request@6.6.0:
dependencies:
cookie: 1.0.2
@@ -25064,7 +25354,7 @@ snapshots:
get-port-please: 3.2.0
h3: 1.15.4
http-shutdown: 1.2.2
- jiti: 2.5.1
+ jiti: 2.6.1
mlly: 1.8.0
node-forge: 1.3.1
pathe: 1.1.2
@@ -25567,12 +25857,18 @@ snapshots:
mimic-function@5.0.1: {}
- mini-css-extract-plugin@2.9.2(webpack@5.98.0):
+ mini-css-extract-plugin@2.9.2(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
schema-utils: 4.3.2
tapable: 2.2.3
webpack: 5.98.0(esbuild@0.25.0)
+ mini-css-extract-plugin@2.9.2(webpack@5.98.0):
+ dependencies:
+ schema-utils: 4.3.2
+ tapable: 2.2.3
+ webpack: 5.98.0(esbuild@0.25.4)
+
minimalistic-assert@1.0.1: {}
minimatch@10.0.3:
@@ -25824,11 +26120,11 @@ snapshots:
hookable: 5.5.3
httpxy: 0.1.7
ioredis: 5.7.0
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
listhen: 1.9.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
magicast: 0.3.5
mime: 4.0.7
mlly: 1.8.0
@@ -26017,7 +26313,7 @@ snapshots:
npm-run-all2@6.2.0:
dependencies:
ansi-styles: 6.2.1
- cross-spawn: 7.0.5
+ cross-spawn: 7.0.6
memorystream: 0.3.1
minimatch: 9.0.5
pidtree: 0.6.0
@@ -26055,7 +26351,7 @@ snapshots:
'@unhead/shared': 1.11.20
'@unhead/ssr': 1.11.20
'@unhead/vue': 1.11.20(vue@3.5.13(typescript@5.9.3))
- '@vue/shared': 3.5.20
+ '@vue/shared': 3.5.21
acorn: 8.14.0
c12: 2.0.1(magicast@0.3.5)
chokidar: 4.0.3
@@ -26074,10 +26370,10 @@ snapshots:
hookable: 5.5.3
ignore: 6.0.2
impound: 0.2.2(rollup@3.29.5)
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
nanotar: 0.1.1
nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-beta.44)
@@ -26176,7 +26472,7 @@ snapshots:
'@unhead/shared': 1.11.20
'@unhead/ssr': 1.11.20
'@unhead/vue': 1.11.20(vue@3.5.13(typescript@5.9.3))
- '@vue/shared': 3.5.20
+ '@vue/shared': 3.5.21
acorn: 8.14.0
c12: 2.0.1(magicast@0.3.5)
chokidar: 4.0.3
@@ -26195,10 +26491,131 @@ snapshots:
hookable: 5.5.3
ignore: 6.0.2
impound: 0.2.2(rollup@4.50.0)
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
+ mlly: 1.8.0
+ nanotar: 0.1.1
+ nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-beta.44)
+ nuxi: 3.28.0
+ nypm: 0.3.12
+ ofetch: 1.4.1
+ ohash: 1.1.6
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.3.1
+ radix3: 1.1.2
+ scule: 1.3.0
+ semver: 7.7.2
+ std-env: 3.9.0
+ strip-literal: 2.1.1
+ tinyglobby: 0.2.10
+ ufo: 1.6.1
+ ultrahtml: 1.6.0
+ uncrypto: 0.1.3
+ unctx: 2.4.1
+ unenv: 1.10.0
+ unhead: 1.11.20
+ unimport: 3.14.6(rollup@4.50.0)
+ unplugin: 1.16.1
+ unplugin-vue-router: 0.10.9(rollup@4.50.0)(vue-router@4.5.0(vue@3.5.13(typescript@5.9.3)))(vue@3.5.13(typescript@5.9.3))
+ unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.2)(ioredis@5.7.0)
+ untyped: 1.5.2
+ vue: 3.5.13(typescript@5.9.3)
+ vue-bundle-renderer: 2.1.2
+ vue-devtools-stub: 0.1.0
+ vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3))
+ optionalDependencies:
+ '@parcel/watcher': 2.5.1
+ '@types/node': 22.10.5
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@biomejs/biome'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - better-sqlite3
+ - bufferutil
+ - db0
+ - drizzle-orm
+ - encoding
+ - eslint
+ - idb-keyval
+ - ioredis
+ - less
+ - lightningcss
+ - magicast
+ - meow
+ - mysql2
+ - optionator
+ - rolldown
+ - rollup
+ - sass
+ - sass-embedded
+ - sqlite3
+ - stylelint
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - typescript
+ - uploadthing
+ - utf-8-validate
+ - vite
+ - vls
+ - vti
+ - vue-tsc
+ - xml2js
+
+ nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.3.2)(encoding@0.1.13)(eslint@9.17.0(jiti@2.6.1))(ioredis@5.7.0)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3):
+ dependencies:
+ '@nuxt/devalue': 2.0.2
+ '@nuxt/devtools': 1.7.0(rollup@4.50.0)(vue@3.5.13(typescript@5.9.3))
+ '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.50.0)
+ '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.50.0)
+ '@nuxt/telemetry': 2.6.6(magicast@0.3.5)
+ '@nuxt/vite-builder': 3.14.1592(@types/node@22.10.5)(eslint@9.17.0(jiti@2.6.1))(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3)(vue@3.5.13(typescript@5.9.3))
+ '@unhead/dom': 1.11.20
+ '@unhead/shared': 1.11.20
+ '@unhead/ssr': 1.11.20
+ '@unhead/vue': 1.11.20(vue@3.5.13(typescript@5.9.3))
+ '@vue/shared': 3.5.21
+ acorn: 8.14.0
+ c12: 2.0.1(magicast@0.3.5)
+ chokidar: 4.0.3
+ compatx: 0.1.8
+ consola: 3.4.2
+ cookie-es: 1.2.2
+ defu: 6.1.4
+ destr: 2.0.5
+ devalue: 5.3.2
+ errx: 0.1.0
+ esbuild: 0.24.2
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ globby: 14.1.0
+ h3: 1.15.4
+ hookable: 5.5.3
+ ignore: 6.0.2
+ impound: 0.2.2(rollup@4.50.0)
+ jiti: 2.6.1
+ klona: 2.0.6
+ knitwork: 1.2.0
+ magic-string: 0.30.19
mlly: 1.8.0
nanotar: 0.1.1
nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-beta.44)
@@ -26297,7 +26714,7 @@ snapshots:
'@unhead/shared': 1.11.20
'@unhead/ssr': 1.11.20
'@unhead/vue': 1.11.20(vue@3.5.13(typescript@5.9.3))
- '@vue/shared': 3.5.20
+ '@vue/shared': 3.5.21
acorn: 8.14.0
c12: 2.0.1(magicast@0.3.5)
chokidar: 4.0.3
@@ -26316,10 +26733,10 @@ snapshots:
hookable: 5.5.3
ignore: 6.0.2
impound: 0.2.2(rollup@4.50.0)
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
nanotar: 0.1.1
nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-beta.44)
@@ -26406,10 +26823,10 @@ snapshots:
- vue-tsc
- xml2js
- nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.3.2)(encoding@0.1.13)(eslint@9.17.0(jiti@2.6.1))(ioredis@5.7.0)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)):
+ nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.3.2)(encoding@0.1.13)(eslint@9.17.0(jiti@2.6.1))(ioredis@5.7.0)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.44)(rollup@4.50.0)(sass@1.85.0)(terser@5.43.1)(typescript@5.9.3)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)):
dependencies:
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 1.7.0(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0))(vue@3.5.13(typescript@5.9.3))
+ '@nuxt/devtools': 1.7.0(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.13(typescript@5.9.3))
'@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.50.0)
'@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.50.0)
'@nuxt/telemetry': 2.6.6(magicast@0.3.5)
@@ -26418,7 +26835,7 @@ snapshots:
'@unhead/shared': 1.11.20
'@unhead/ssr': 1.11.20
'@unhead/vue': 1.11.20(vue@3.5.13(typescript@5.9.3))
- '@vue/shared': 3.5.20
+ '@vue/shared': 3.5.21
acorn: 8.14.0
c12: 2.0.1(magicast@0.3.5)
chokidar: 4.0.3
@@ -26437,10 +26854,10 @@ snapshots:
hookable: 5.5.3
ignore: 6.0.2
impound: 0.2.2(rollup@4.50.0)
- jiti: 2.5.1
+ jiti: 2.6.1
klona: 2.0.6
knitwork: 1.2.0
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
nanotar: 0.1.1
nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-beta.44)
@@ -27047,7 +27464,7 @@ snapshots:
ts-node: 10.9.2(@types/node@22.10.5)(typescript@5.9.3)
optional: true
- postcss-loader@8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.0)):
+ postcss-loader@8.1.1(postcss@8.5.2)(typescript@5.8.3)(webpack@5.98.0):
dependencies:
cosmiconfig: 9.0.0(typescript@5.8.3)
jiti: 1.21.7
@@ -27065,7 +27482,7 @@ snapshots:
postcss: 8.5.2
semver: 7.7.2
optionalDependencies:
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
transitivePeerDependencies:
- typescript
@@ -27885,13 +28302,20 @@ snapshots:
safer-buffer@2.1.2: {}
- sass-loader@16.0.5(sass@1.85.0)(webpack@5.98.0):
+ sass-loader@16.0.5(sass@1.85.0)(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
neo-async: 2.6.2
optionalDependencies:
sass: 1.85.0
webpack: 5.98.0(esbuild@0.25.0)
+ sass-loader@16.0.5(sass@1.85.0)(webpack@5.98.0):
+ dependencies:
+ neo-async: 2.6.2
+ optionalDependencies:
+ sass: 1.85.0
+ webpack: 5.98.0(esbuild@0.25.4)
+
sass@1.85.0:
dependencies:
chokidar: 4.0.3
@@ -28253,12 +28677,18 @@ snapshots:
source-map-js@1.2.1: {}
- source-map-loader@5.0.0(webpack@5.98.0):
+ source-map-loader@5.0.0(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
iconv-lite: 0.6.3
source-map-js: 1.2.1
webpack: 5.98.0(esbuild@0.25.0)
+ source-map-loader@5.0.0(webpack@5.98.0):
+ dependencies:
+ iconv-lite: 0.6.3
+ source-map-js: 1.2.1
+ webpack: 5.98.0(esbuild@0.25.4)
+
source-map-support@0.5.21:
dependencies:
buffer-from: 1.1.2
@@ -28706,7 +29136,7 @@ snapshots:
schema-utils: 4.3.2
serialize-javascript: 6.0.2
terser: 5.43.1
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
optionalDependencies:
esbuild: 0.25.4
@@ -29165,7 +29595,7 @@ snapshots:
estree-walker: 3.0.3
fast-glob: 3.3.3
local-pkg: 1.1.2
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
pathe: 2.0.3
picomatch: 4.0.3
@@ -29184,7 +29614,7 @@ snapshots:
estree-walker: 3.0.3
fast-glob: 3.3.3
local-pkg: 1.1.2
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
pathe: 2.0.3
picomatch: 4.0.3
@@ -29290,7 +29720,7 @@ snapshots:
unplugin-vue-router@0.10.9(rollup@3.29.5)(vue-router@4.5.0(vue@3.5.13(typescript@5.9.3)))(vue@3.5.13(typescript@5.9.3)):
dependencies:
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@rollup/pluginutils': 5.2.0(rollup@3.29.5)
'@vue-macros/common': 1.16.1(vue@3.5.13(typescript@5.9.3))
ast-walker-scope: 0.6.2
@@ -29298,7 +29728,7 @@ snapshots:
fast-glob: 3.3.3
json5: 2.2.3
local-pkg: 0.5.1
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
pathe: 1.1.2
scule: 1.3.0
@@ -29312,7 +29742,7 @@ snapshots:
unplugin-vue-router@0.10.9(rollup@4.50.0)(vue-router@4.5.0(vue@3.5.13(typescript@5.9.3)))(vue@3.5.13(typescript@5.9.3)):
dependencies:
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@rollup/pluginutils': 5.2.0(rollup@4.50.0)
'@vue-macros/common': 1.16.1(vue@3.5.13(typescript@5.9.3))
ast-walker-scope: 0.6.2
@@ -29320,7 +29750,7 @@ snapshots:
fast-glob: 3.3.3
json5: 2.2.3
local-pkg: 0.5.1
- magic-string: 0.30.18
+ magic-string: 0.30.19
mlly: 1.8.0
pathe: 1.1.2
scule: 1.3.0
@@ -29517,9 +29947,9 @@ snapshots:
dependencies:
vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.8.1)
- vite-hot-client@0.2.4(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)):
+ vite-hot-client@0.2.4(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)):
dependencies:
- vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)
+ vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
vite-hot-client@2.1.0(vite@7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)):
dependencies:
@@ -29657,7 +30087,7 @@ snapshots:
open: 10.2.0
perfect-debounce: 1.0.0
picocolors: 1.1.1
- sirv: 3.0.1
+ sirv: 3.0.2
vite: 7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
optionalDependencies:
'@nuxt/kit': 3.15.4(magicast@0.3.5)
@@ -29675,7 +30105,7 @@ snapshots:
open: 10.2.0
perfect-debounce: 1.0.0
picocolors: 1.1.1
- sirv: 3.0.1
+ sirv: 3.0.2
vite: 7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
optionalDependencies:
'@nuxt/kit': 3.15.4(magicast@0.3.5)
@@ -29693,7 +30123,7 @@ snapshots:
open: 10.2.0
perfect-debounce: 1.0.0
picocolors: 1.1.1
- sirv: 3.0.1
+ sirv: 3.0.2
vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.8.1)
optionalDependencies:
'@nuxt/kit': 3.15.4(magicast@0.3.5)
@@ -29701,7 +30131,7 @@ snapshots:
- rollup
- supports-color
- vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)):
+ vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.50.0)(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.2.0(rollup@4.50.0)
@@ -29711,8 +30141,8 @@ snapshots:
open: 10.2.0
perfect-debounce: 1.0.0
picocolors: 1.1.1
- sirv: 3.0.1
- vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)
+ sirv: 3.0.2
+ vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
optionalDependencies:
'@nuxt/kit': 3.15.4(magicast@0.3.5)
transitivePeerDependencies:
@@ -29779,7 +30209,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vite-plugin-vue-inspector@5.3.2(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)):
+ vite-plugin-vue-inspector@5.3.2(vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)):
dependencies:
'@babel/core': 7.28.3
'@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3)
@@ -29790,7 +30220,7 @@ snapshots:
'@vue/compiler-dom': 3.5.21
kolorist: 1.8.0
magic-string: 0.30.18
- vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0)
+ vite: 7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
@@ -29914,23 +30344,6 @@ snapshots:
terser: 5.39.0
yaml: 2.8.1
- vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.0):
- dependencies:
- esbuild: 0.25.9
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.50.0
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 22.10.5
- fsevents: 2.3.3
- jiti: 2.6.1
- less: 4.2.2
- sass: 1.85.0
- terser: 5.43.1
- yaml: 2.8.0
-
vite@7.1.5(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.1):
dependencies:
esbuild: 0.25.9
@@ -30277,6 +30690,17 @@ snapshots:
optionalDependencies:
webpack: 5.98.0(esbuild@0.25.0)
+ webpack-dev-middleware@7.4.2(webpack@5.98.0):
+ dependencies:
+ colorette: 2.0.20
+ memfs: 4.38.2
+ mime-types: 2.1.35
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ schema-utils: 4.3.2
+ optionalDependencies:
+ webpack: 5.98.0(esbuild@0.25.4)
+
webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
'@types/bonjour': 3.5.13
@@ -30314,6 +30738,43 @@ snapshots:
- supports-color
- utf-8-validate
+ webpack-dev-server@5.2.0(webpack@5.98.0):
+ dependencies:
+ '@types/bonjour': 3.5.13
+ '@types/connect-history-api-fallback': 1.5.4
+ '@types/express': 4.17.21
+ '@types/serve-index': 1.9.4
+ '@types/serve-static': 1.15.8
+ '@types/sockjs': 0.3.36
+ '@types/ws': 8.18.1
+ ansi-html-community: 0.0.8
+ bonjour-service: 1.3.0
+ chokidar: 3.6.0
+ colorette: 2.0.20
+ compression: 1.8.1
+ connect-history-api-fallback: 2.0.0
+ express: 4.21.2
+ graceful-fs: 4.2.11
+ http-proxy-middleware: 2.0.9(@types/express@4.17.21)
+ ipaddr.js: 2.2.0
+ launch-editor: 2.11.1
+ open: 10.2.0
+ p-retry: 6.2.1
+ schema-utils: 4.3.2
+ selfsigned: 2.4.1
+ serve-index: 1.9.1
+ sockjs: 0.3.24
+ spdy: 4.0.2
+ webpack-dev-middleware: 7.4.2(webpack@5.98.0)
+ ws: 8.18.3
+ optionalDependencies:
+ webpack: 5.98.0(esbuild@0.25.0)
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - supports-color
+ - utf-8-validate
+
webpack-dev-server@5.2.2(webpack@5.98.0):
dependencies:
'@types/bonjour': 3.5.13
@@ -30342,10 +30803,10 @@ snapshots:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0))
+ webpack-dev-middleware: 7.4.2(webpack@5.98.0)
ws: 8.18.3
optionalDependencies:
- webpack: 5.98.0(esbuild@0.25.0)
+ webpack: 5.98.0(esbuild@0.25.4)
transitivePeerDependencies:
- bufferutil
- debug
@@ -30360,11 +30821,16 @@ snapshots:
webpack-sources@3.3.3: {}
- webpack-subresource-integrity@5.1.0(webpack@5.98.0):
+ webpack-subresource-integrity@5.1.0(webpack@5.98.0(esbuild@0.25.0)):
dependencies:
typed-assert: 1.0.9
webpack: 5.98.0(esbuild@0.25.0)
+ webpack-subresource-integrity@5.1.0(webpack@5.98.0):
+ dependencies:
+ typed-assert: 1.0.9
+ webpack: 5.98.0(esbuild@0.25.4)
+
webpack-virtual-modules@0.6.2: {}
webpack@5.98.0(esbuild@0.25.0):
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 02d09d6f4..6b1e031c1 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,5 +1,6 @@
packages:
- docs
+ - dev/**
- examples/**/*
- packages/**/*