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

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #3573 from mikhin/nestjs

feat: add NestJS plugin

authored by

Lubos and committed by
GitHub
3cb1e284 27e01aaf

+9860 -410
+5
.changeset/bright-wasps-invite.md
··· 1 + --- 2 + "@hey-api/openapi-ts": patch 3 + --- 4 + 5 + **plugin(nestjs)**: initial release
+4 -4
docs/.vitepress/config/en.ts
··· 228 228 text: 'Fastify', 229 229 }, 230 230 { 231 + link: '/openapi-ts/plugins/nest', 232 + text: 'Nest', 233 + }, 234 + { 231 235 link: '/openapi-ts/plugins/adonis', 232 236 text: 'Adonis <span data-soon>soon</span>', 233 237 }, ··· 246 250 { 247 251 link: '/openapi-ts/plugins/koa', 248 252 text: 'Koa <span data-soon>soon</span>', 249 - }, 250 - { 251 - link: '/openapi-ts/plugins/nest', 252 - text: 'Nest <span data-soon>soon</span>', 253 253 }, 254 254 ], 255 255 link: '/openapi-ts/web-frameworks',
+28
docs/.vitepress/theme/components/Examples.vue
··· 1 + <script setup lang="ts"> 2 + const props = defineProps<{ 3 + githubExamplePath?: string; 4 + }>(); 5 + </script> 6 + 7 + <template> 8 + <h2 id="examples" tabindex="-1"> 9 + Examples 10 + <a class="header-anchor" href="#examples" aria-label="Permalink to “Examples”">​</a> 11 + </h2> 12 + <p> 13 + You can view live examples on 14 + <a 15 + href="https://stackblitz.com/orgs/github/hey-api/collections/openapi-ts-examples" 16 + target="_blank" 17 + rel="noreferrer" 18 + >StackBlitz</a 19 + > 20 + or on 21 + <a 22 + :href="`https://github.com/hey-api/openapi-ts/tree/main/examples${props.githubExamplePath ? props.githubExamplePath : ''}`" 23 + target="_blank" 24 + rel="noreferrer" 25 + >GitHub</a 26 + >. 27 + </p> 28 + </template>
+5
docs/data/people.ts
··· 27 27 github: 'https://github.com/SebastiaanWouters', 28 28 name: 'Sebastiaan Wouters', 29 29 }; 30 + 31 + export const yuriMikhin: Person = { 32 + github: 'https://github.com/mikhin', 33 + name: 'Yuri Mikhin', 34 + };
+3 -1
docs/openapi-ts/plugins/fastify.md
··· 5 5 6 6 <script setup lang="ts"> 7 7 import AuthorsList from '@components/AuthorsList.vue'; 8 + import Examples from '@components/Examples.vue'; 8 9 import Heading from '@components/Heading.vue'; 9 10 import { jacobCohen } from '@data/people.js'; 10 11 import VersionLabel from '@components/VersionLabel.vue'; ··· 99 100 100 101 You can view the complete list of options in the [UserConfig](https://github.com/hey-api/openapi-ts/blob/main/packages/openapi-ts/src/plugins/fastify/types.ts) interface. 101 102 102 - <!--@include: ../../partials/examples.md--> 103 + <Examples githubExamplePath="/openapi-ts-fastify" /> 104 + 103 105 <!--@include: ../../partials/sponsors.md-->
+94 -5
docs/openapi-ts/plugins/nest.md
··· 1 1 --- 2 - title: Nest 3 - description: Nest plugin for Hey API. Compatible with all our features. 2 + title: NestJS v11 Plugin 3 + description: Generate NestJS v11 controller methods from OpenAPI with the NestJS plugin for openapi-ts. Fully compatible with validators, transformers, and all core features. 4 4 --- 5 5 6 6 <script setup lang="ts"> 7 - import FeatureStatus from '@components/FeatureStatus.vue'; 7 + import AuthorsList from '@components/AuthorsList.vue'; 8 + import Examples from '@components/Examples.vue'; 9 + import Heading from '@components/Heading.vue'; 10 + import { yuriMikhin } from '@data/people.js'; 11 + import VersionLabel from '@components/VersionLabel.vue'; 8 12 </script> 9 13 10 - # Nest <span data-soon>soon</span> 14 + <Heading> 15 + <h1>NestJS<span class="sr-only"> v11</span></h1> 16 + <VersionLabel value="v11" /> 17 + </Heading> 11 18 12 - <FeatureStatus issueNumber=1481 name="Nest" /> 19 + ::: warning 20 + NestJS plugin is currently in beta. The interface might change before it becomes stable. We encourage you to leave feedback on [GitHub](https://github.com/hey-api/openapi-ts/issues). 21 + ::: 13 22 14 23 ### About 15 24 16 25 [Nest](https://nestjs.com) is a progressive Node.js framework for building efficient, reliable and scalable server-side applications. 26 + 27 + The NestJS plugin for Hey API generates type-safe controller method signatures from your OpenAPI spec, fully compatible with all core features. 28 + 29 + ### Collaborators 30 + 31 + <AuthorsList :people="[yuriMikhin]" /> 32 + 33 + ## Features 34 + 35 + - NestJS v11 support 36 + - seamless integration with `@hey-api/openapi-ts` ecosystem 37 + - type-safe controller methods 38 + - minimal learning curve thanks to extending the underlying technology 39 + 40 + ## Installation 41 + 42 + In your [configuration](/openapi-ts/get-started), add `nestjs` to your plugins and you'll be ready to generate NestJS artifacts. :tada: 43 + 44 + ```js 45 + export default { 46 + input: 'hey-api/backend', // sign up at app.heyapi.dev 47 + output: 'src/client', 48 + plugins: [ 49 + // ...other plugins 50 + 'nestjs', // [!code ++] 51 + ], 52 + }; 53 + ``` 54 + 55 + ## Output 56 + 57 + The NestJS plugin will generate the following artifacts, depending on the input specification. 58 + 59 + ## Controller Methods 60 + 61 + Operations are grouped by their first tag into separate types. 62 + 63 + ::: code-group 64 + 65 + ```ts [example] 66 + export type PetsControllerMethods = { 67 + createPet: (body: CreatePetData['body']) => Promise<CreatePetResponse>; 68 + listPets: (query?: ListPetsData['query']) => Promise<ListPetsResponse>; 69 + showPetById: (path: ShowPetByIdData['path']) => Promise<ShowPetByIdResponse>; 70 + }; 71 + 72 + export type StoreControllerMethods = { 73 + getInventory: () => Promise<GetInventoryResponse>; 74 + }; 75 + ``` 76 + 77 + ```ts [usage] 78 + import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common'; 79 + 80 + import type { PetsControllerMethods } from '../client/nestjs.gen'; 81 + import type { CreatePetData, ListPetsData, ShowPetByIdData } from '../client/types.gen'; 82 + 83 + @Controller('pets') 84 + export class PetsController implements Pick< 85 + PetsControllerMethods, 86 + 'createPet' | 'listPets' | 'showPetById' 87 + > { 88 + @Post() 89 + async createPet(@Body() body: CreatePetData['body']) {} 90 + 91 + @Get() 92 + async listPets(@Query() query?: ListPetsData['query']) {} 93 + 94 + @Get(':petId') 95 + async showPetById(@Param() path: ShowPetByIdData['path']) {} 96 + } 97 + ``` 98 + 99 + ::: 100 + 101 + ## API 102 + 103 + You can view the complete list of options in the [UserConfig](https://github.com/hey-api/openapi-ts/blob/main/packages/openapi-ts/src/plugins/nestjs/types.ts) interface. 104 + 105 + <Examples githubExamplePath="/openapi-ts-nestjs" /> 17 106 18 107 <!--@include: ../../partials/sponsors.md-->
+1 -1
docs/openapi-ts/web-frameworks.md
··· 13 13 14 14 - [Angular](/openapi-ts/plugins/angular) 15 15 - [Fastify](/openapi-ts/plugins/fastify) 16 + - [Nest](/openapi-ts/plugins/nest) 16 17 - [Adonis](/openapi-ts/plugins/adonis) <span data-soon>Soon</span> 17 18 - [Elysia](/openapi-ts/plugins/elysia) <span data-soon>Soon</span> 18 19 - [Express](/openapi-ts/plugins/express) <span data-soon>Soon</span> 19 20 - [Hono](/openapi-ts/plugins/hono) <span data-soon>Soon</span> 20 21 - [Koa](/openapi-ts/plugins/koa) <span data-soon>Soon</span> 21 - - [Nest](/openapi-ts/plugins/nest) <span data-soon>Soon</span> 22 22 23 23 Don't see your framework? Let us know your interest by [opening an issue](https://github.com/hey-api/openapi-ts/issues). 24 24
+1
eslint.config.js
··· 59 59 '**/node_modules/', 60 60 'temp/', 61 61 'dev/.gen/', 62 + 'examples/openapi-ts-nestjs/src/client/**/*.ts', 62 63 'examples/openapi-ts-openai/src/client/**/*.ts', 63 64 '**/test/generated/', 64 65 '**/__snapshots__/',
+13
examples/openapi-ts-nestjs/openapi-ts.config.ts
··· 1 + import { defineConfig } from '@hey-api/openapi-ts'; 2 + 3 + export default defineConfig({ 4 + input: './openapi.json', 5 + logs: { 6 + path: './logs', 7 + }, 8 + output: { 9 + path: './src/client', 10 + postProcess: ['oxfmt', 'eslint'], 11 + }, 12 + plugins: ['nestjs', '@hey-api/sdk'], 13 + });
+329
examples/openapi-ts-nestjs/openapi.json
··· 1 + { 2 + "openapi": "3.1.0", 3 + "info": { 4 + "title": "Petstore API", 5 + "version": "1.0.0", 6 + "description": "A sample API that uses a petstore as an example" 7 + }, 8 + "servers": [ 9 + { 10 + "url": "http://localhost:3000/v3" 11 + } 12 + ], 13 + "tags": [ 14 + { 15 + "name": "pets", 16 + "description": "Pet operations" 17 + }, 18 + { 19 + "name": "store", 20 + "description": "Store operations" 21 + } 22 + ], 23 + "paths": { 24 + "/pets": { 25 + "get": { 26 + "summary": "List all pets", 27 + "operationId": "listPets", 28 + "tags": ["pets"], 29 + "parameters": [ 30 + { 31 + "name": "limit", 32 + "in": "query", 33 + "required": false, 34 + "schema": { 35 + "type": "integer", 36 + "format": "int32", 37 + "minimum": 1, 38 + "maximum": 100 39 + } 40 + }, 41 + { 42 + "name": "offset", 43 + "in": "query", 44 + "required": false, 45 + "schema": { 46 + "type": "integer", 47 + "format": "int32", 48 + "minimum": 0 49 + } 50 + } 51 + ], 52 + "responses": { 53 + "200": { 54 + "description": "A list of pets", 55 + "content": { 56 + "application/json": { 57 + "schema": { 58 + "type": "array", 59 + "items": { 60 + "$ref": "#/components/schemas/Pet" 61 + } 62 + } 63 + } 64 + } 65 + } 66 + } 67 + }, 68 + "post": { 69 + "summary": "Create a pet", 70 + "operationId": "createPet", 71 + "tags": ["pets"], 72 + "requestBody": { 73 + "required": true, 74 + "content": { 75 + "application/json": { 76 + "schema": { 77 + "$ref": "#/components/schemas/CreatePetBody" 78 + } 79 + } 80 + } 81 + }, 82 + "responses": { 83 + "201": { 84 + "description": "Pet created", 85 + "content": { 86 + "application/json": { 87 + "schema": { 88 + "$ref": "#/components/schemas/Pet" 89 + } 90 + } 91 + } 92 + }, 93 + "400": { 94 + "description": "Validation error", 95 + "content": { 96 + "application/json": { 97 + "schema": { 98 + "$ref": "#/components/schemas/Error" 99 + } 100 + } 101 + } 102 + } 103 + } 104 + } 105 + }, 106 + "/pets/{petId}": { 107 + "get": { 108 + "summary": "Find pet by ID", 109 + "operationId": "showPetById", 110 + "tags": ["pets"], 111 + "parameters": [ 112 + { 113 + "name": "petId", 114 + "in": "path", 115 + "required": true, 116 + "schema": { 117 + "type": "string", 118 + "format": "uuid" 119 + } 120 + } 121 + ], 122 + "responses": { 123 + "200": { 124 + "description": "Pet found", 125 + "content": { 126 + "application/json": { 127 + "schema": { 128 + "$ref": "#/components/schemas/Pet" 129 + } 130 + } 131 + } 132 + }, 133 + "404": { 134 + "description": "Pet not found", 135 + "content": { 136 + "application/json": { 137 + "schema": { 138 + "$ref": "#/components/schemas/Error" 139 + } 140 + } 141 + } 142 + } 143 + } 144 + }, 145 + "put": { 146 + "summary": "Update a pet", 147 + "operationId": "updatePet", 148 + "tags": ["pets"], 149 + "parameters": [ 150 + { 151 + "name": "petId", 152 + "in": "path", 153 + "required": true, 154 + "schema": { 155 + "type": "string", 156 + "format": "uuid" 157 + } 158 + } 159 + ], 160 + "requestBody": { 161 + "required": true, 162 + "content": { 163 + "application/json": { 164 + "schema": { 165 + "$ref": "#/components/schemas/UpdatePetBody" 166 + } 167 + } 168 + } 169 + }, 170 + "responses": { 171 + "200": { 172 + "description": "Pet updated", 173 + "content": { 174 + "application/json": { 175 + "schema": { 176 + "$ref": "#/components/schemas/Pet" 177 + } 178 + } 179 + } 180 + }, 181 + "400": { 182 + "description": "Validation error", 183 + "content": { 184 + "application/json": { 185 + "schema": { 186 + "$ref": "#/components/schemas/Error" 187 + } 188 + } 189 + } 190 + }, 191 + "404": { 192 + "description": "Pet not found", 193 + "content": { 194 + "application/json": { 195 + "schema": { 196 + "$ref": "#/components/schemas/Error" 197 + } 198 + } 199 + } 200 + } 201 + } 202 + }, 203 + "delete": { 204 + "summary": "Delete a pet", 205 + "operationId": "deletePet", 206 + "tags": ["pets"], 207 + "parameters": [ 208 + { 209 + "name": "petId", 210 + "in": "path", 211 + "required": true, 212 + "schema": { 213 + "type": "string", 214 + "format": "uuid" 215 + } 216 + } 217 + ], 218 + "responses": { 219 + "204": { 220 + "description": "Pet deleted" 221 + }, 222 + "404": { 223 + "description": "Pet not found", 224 + "content": { 225 + "application/json": { 226 + "schema": { 227 + "$ref": "#/components/schemas/Error" 228 + } 229 + } 230 + } 231 + } 232 + } 233 + } 234 + }, 235 + "/store/inventory": { 236 + "get": { 237 + "summary": "Returns pet inventories by status", 238 + "operationId": "getInventory", 239 + "tags": ["store"], 240 + "responses": { 241 + "200": { 242 + "description": "Successful operation", 243 + "content": { 244 + "application/json": { 245 + "schema": { 246 + "type": "object", 247 + "additionalProperties": { 248 + "type": "integer", 249 + "format": "int32" 250 + } 251 + } 252 + } 253 + } 254 + } 255 + } 256 + } 257 + } 258 + }, 259 + "components": { 260 + "schemas": { 261 + "Pet": { 262 + "type": "object", 263 + "required": ["id", "name"], 264 + "properties": { 265 + "id": { 266 + "type": "string", 267 + "format": "uuid" 268 + }, 269 + "name": { 270 + "type": "string", 271 + "minLength": 1, 272 + "maxLength": 100 273 + }, 274 + "tag": { 275 + "type": "string" 276 + }, 277 + "status": { 278 + "type": "string", 279 + "enum": ["available", "pending", "sold"] 280 + } 281 + } 282 + }, 283 + "CreatePetBody": { 284 + "type": "object", 285 + "required": ["name"], 286 + "properties": { 287 + "name": { 288 + "type": "string", 289 + "minLength": 1, 290 + "maxLength": 100 291 + }, 292 + "tag": { 293 + "type": "string" 294 + } 295 + } 296 + }, 297 + "UpdatePetBody": { 298 + "type": "object", 299 + "properties": { 300 + "name": { 301 + "type": "string", 302 + "minLength": 1, 303 + "maxLength": 100 304 + }, 305 + "tag": { 306 + "type": "string" 307 + }, 308 + "status": { 309 + "type": "string", 310 + "enum": ["available", "pending", "sold"] 311 + } 312 + } 313 + }, 314 + "Error": { 315 + "type": "object", 316 + "required": ["code", "message"], 317 + "properties": { 318 + "code": { 319 + "type": "integer", 320 + "format": "int32" 321 + }, 322 + "message": { 323 + "type": "string" 324 + } 325 + } 326 + } 327 + } 328 + } 329 + }
+31
examples/openapi-ts-nestjs/package.json
··· 1 + { 2 + "name": "@example/openapi-ts-nestjs", 3 + "version": "0.1.0", 4 + "private": true, 5 + "type": "module", 6 + "scripts": { 7 + "openapi-ts": "openapi-ts", 8 + "start": "node --import @swc-node/register/esm-register src/main.ts", 9 + "test": "vitest", 10 + "typecheck": "tsc --noEmit" 11 + }, 12 + "dependencies": { 13 + "@nestjs/common": "^11.0.1", 14 + "@nestjs/core": "^11.0.1", 15 + "@nestjs/platform-express": "^11.0.1", 16 + "reflect-metadata": "^0.2.2", 17 + "rxjs": "^7.8.1" 18 + }, 19 + "devDependencies": { 20 + "@hey-api/openapi-ts": "workspace:*", 21 + "@nestjs/testing": "^11.0.1", 22 + "@swc-node/register": "^1.10.10", 23 + "@swc/core": "^1.11.29", 24 + "eslint": "^9.18.0", 25 + "oxfmt": "^0.27.0", 26 + "typescript": "^5.9.3", 27 + "unplugin-swc": "^1.5.5", 28 + "vite": "^7.3.1", 29 + "vitest": "^4.0.18" 30 + } 31 + }
+9
examples/openapi-ts-nestjs/src/app.module.ts
··· 1 + import { Module } from '@nestjs/common'; 2 + 3 + import { PetsModule } from './pets/pets.module'; 4 + import { StoreModule } from './store/store.module'; 5 + 6 + @Module({ 7 + imports: [PetsModule, StoreModule], 8 + }) 9 + export class AppModule {}
+20
examples/openapi-ts-nestjs/src/client/client.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { type ClientOptions, type Config, createClient, createConfig } from './client'; 4 + import type { ClientOptions as ClientOptions2 } from './types.gen'; 5 + 6 + /** 7 + * The `createClientConfig()` function will be called on client initialization 8 + * and the returned object will become the client's initial configuration. 9 + * 10 + * You may want to initialize your client this way instead of calling 11 + * `setConfig()`. This is useful for example if you're using Next.js 12 + * to ensure your client always has the correct values. 13 + */ 14 + export type CreateClientConfig<T extends ClientOptions = ClientOptions2> = ( 15 + override?: Config<ClientOptions & T>, 16 + ) => Config<Required<ClientOptions> & T>; 17 + 18 + export const client = createClient( 19 + createConfig<ClientOptions2>({ baseUrl: 'http://localhost:3000/v3' }), 20 + );
+290
examples/openapi-ts-nestjs/src/client/client/client.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { createSseClient } from '../core/serverSentEvents.gen'; 4 + import type { HttpMethod } from '../core/types.gen'; 5 + import { getValidRequestBody } from '../core/utils.gen'; 6 + import type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen'; 7 + import { 8 + buildUrl, 9 + createConfig, 10 + createInterceptors, 11 + getParseAs, 12 + mergeConfigs, 13 + mergeHeaders, 14 + setAuthParams, 15 + } from './utils.gen'; 16 + 17 + type ReqInit = Omit<RequestInit, 'body' | 'headers'> & { 18 + body?: any; 19 + headers: ReturnType<typeof mergeHeaders>; 20 + }; 21 + 22 + export const createClient = (config: Config = {}): Client => { 23 + let _config = mergeConfigs(createConfig(), config); 24 + 25 + const getConfig = (): Config => ({ ..._config }); 26 + 27 + const setConfig = (config: Config): Config => { 28 + _config = mergeConfigs(_config, config); 29 + return getConfig(); 30 + }; 31 + 32 + const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>(); 33 + 34 + const beforeRequest = async (options: RequestOptions) => { 35 + const opts = { 36 + ..._config, 37 + ...options, 38 + fetch: options.fetch ?? _config.fetch ?? globalThis.fetch, 39 + headers: mergeHeaders(_config.headers, options.headers), 40 + serializedBody: undefined as string | undefined, 41 + }; 42 + 43 + if (opts.security) { 44 + await setAuthParams({ 45 + ...opts, 46 + security: opts.security, 47 + }); 48 + } 49 + 50 + if (opts.requestValidator) { 51 + await opts.requestValidator(opts); 52 + } 53 + 54 + if (opts.body !== undefined && opts.bodySerializer) { 55 + opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined; 56 + } 57 + 58 + // remove Content-Type header if body is empty to avoid sending invalid requests 59 + if (opts.body === undefined || opts.serializedBody === '') { 60 + opts.headers.delete('Content-Type'); 61 + } 62 + 63 + const url = buildUrl(opts); 64 + 65 + return { opts, url }; 66 + }; 67 + 68 + const request: Client['request'] = async (options) => { 69 + // @ts-expect-error 70 + const { opts, url } = await beforeRequest(options); 71 + const requestInit: ReqInit = { 72 + redirect: 'follow', 73 + ...opts, 74 + body: getValidRequestBody(opts), 75 + }; 76 + 77 + let request = new Request(url, requestInit); 78 + 79 + for (const fn of interceptors.request.fns) { 80 + if (fn) { 81 + request = await fn(request, opts); 82 + } 83 + } 84 + 85 + // fetch must be assigned here, otherwise it would throw the error: 86 + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation 87 + const _fetch = opts.fetch!; 88 + let response: Response; 89 + 90 + try { 91 + response = await _fetch(request); 92 + } catch (error) { 93 + // Handle fetch exceptions (AbortError, network errors, etc.) 94 + let finalError = error; 95 + 96 + for (const fn of interceptors.error.fns) { 97 + if (fn) { 98 + finalError = (await fn(error, undefined as any, request, opts)) as unknown; 99 + } 100 + } 101 + 102 + finalError = finalError || ({} as unknown); 103 + 104 + if (opts.throwOnError) { 105 + throw finalError; 106 + } 107 + 108 + // Return error response 109 + return opts.responseStyle === 'data' 110 + ? undefined 111 + : { 112 + error: finalError, 113 + request, 114 + response: undefined as any, 115 + }; 116 + } 117 + 118 + for (const fn of interceptors.response.fns) { 119 + if (fn) { 120 + response = await fn(response, request, opts); 121 + } 122 + } 123 + 124 + const result = { 125 + request, 126 + response, 127 + }; 128 + 129 + if (response.ok) { 130 + const parseAs = 131 + (opts.parseAs === 'auto' 132 + ? getParseAs(response.headers.get('Content-Type')) 133 + : opts.parseAs) ?? 'json'; 134 + 135 + if (response.status === 204 || response.headers.get('Content-Length') === '0') { 136 + let emptyData: any; 137 + switch (parseAs) { 138 + case 'arrayBuffer': 139 + case 'blob': 140 + case 'text': 141 + emptyData = await response[parseAs](); 142 + break; 143 + case 'formData': 144 + emptyData = new FormData(); 145 + break; 146 + case 'stream': 147 + emptyData = response.body; 148 + break; 149 + case 'json': 150 + default: 151 + emptyData = {}; 152 + break; 153 + } 154 + return opts.responseStyle === 'data' 155 + ? emptyData 156 + : { 157 + data: emptyData, 158 + ...result, 159 + }; 160 + } 161 + 162 + let data: any; 163 + switch (parseAs) { 164 + case 'arrayBuffer': 165 + case 'blob': 166 + case 'formData': 167 + case 'text': 168 + data = await response[parseAs](); 169 + break; 170 + case 'json': { 171 + // Some servers return 200 with no Content-Length and empty body. 172 + // response.json() would throw; read as text and parse if non-empty. 173 + const text = await response.text(); 174 + data = text ? JSON.parse(text) : {}; 175 + break; 176 + } 177 + case 'stream': 178 + return opts.responseStyle === 'data' 179 + ? response.body 180 + : { 181 + data: response.body, 182 + ...result, 183 + }; 184 + } 185 + 186 + if (parseAs === 'json') { 187 + if (opts.responseValidator) { 188 + await opts.responseValidator(data); 189 + } 190 + 191 + if (opts.responseTransformer) { 192 + data = await opts.responseTransformer(data); 193 + } 194 + } 195 + 196 + return opts.responseStyle === 'data' 197 + ? data 198 + : { 199 + data, 200 + ...result, 201 + }; 202 + } 203 + 204 + const textError = await response.text(); 205 + let jsonError: unknown; 206 + 207 + try { 208 + jsonError = JSON.parse(textError); 209 + } catch { 210 + // noop 211 + } 212 + 213 + const error = jsonError ?? textError; 214 + let finalError = error; 215 + 216 + for (const fn of interceptors.error.fns) { 217 + if (fn) { 218 + finalError = (await fn(error, response, request, opts)) as string; 219 + } 220 + } 221 + 222 + finalError = finalError || ({} as string); 223 + 224 + if (opts.throwOnError) { 225 + throw finalError; 226 + } 227 + 228 + // TODO: we probably want to return error and improve types 229 + return opts.responseStyle === 'data' 230 + ? undefined 231 + : { 232 + error: finalError, 233 + ...result, 234 + }; 235 + }; 236 + 237 + const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) => 238 + request({ ...options, method }); 239 + 240 + const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => { 241 + const { opts, url } = await beforeRequest(options); 242 + return createSseClient({ 243 + ...opts, 244 + body: opts.body as BodyInit | null | undefined, 245 + headers: opts.headers as unknown as Record<string, string>, 246 + method, 247 + onRequest: async (url, init) => { 248 + let request = new Request(url, init); 249 + for (const fn of interceptors.request.fns) { 250 + if (fn) { 251 + request = await fn(request, opts); 252 + } 253 + } 254 + return request; 255 + }, 256 + serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined, 257 + url, 258 + }); 259 + }; 260 + 261 + const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options }); 262 + 263 + return { 264 + buildUrl: _buildUrl, 265 + connect: makeMethodFn('CONNECT'), 266 + delete: makeMethodFn('DELETE'), 267 + get: makeMethodFn('GET'), 268 + getConfig, 269 + head: makeMethodFn('HEAD'), 270 + interceptors, 271 + options: makeMethodFn('OPTIONS'), 272 + patch: makeMethodFn('PATCH'), 273 + post: makeMethodFn('POST'), 274 + put: makeMethodFn('PUT'), 275 + request, 276 + setConfig, 277 + sse: { 278 + connect: makeSseFn('CONNECT'), 279 + delete: makeSseFn('DELETE'), 280 + get: makeSseFn('GET'), 281 + head: makeSseFn('HEAD'), 282 + options: makeSseFn('OPTIONS'), 283 + patch: makeSseFn('PATCH'), 284 + post: makeSseFn('POST'), 285 + put: makeSseFn('PUT'), 286 + trace: makeSseFn('TRACE'), 287 + }, 288 + trace: makeMethodFn('TRACE'), 289 + } as Client; 290 + };
+25
examples/openapi-ts-nestjs/src/client/client/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type { Auth } from '../core/auth.gen'; 4 + export type { QuerySerializerOptions } from '../core/bodySerializer.gen'; 5 + export { 6 + formDataBodySerializer, 7 + jsonBodySerializer, 8 + urlSearchParamsBodySerializer, 9 + } from '../core/bodySerializer.gen'; 10 + export { buildClientParams } from '../core/params.gen'; 11 + export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen'; 12 + export { createClient } from './client.gen'; 13 + export type { 14 + Client, 15 + ClientOptions, 16 + Config, 17 + CreateClientConfig, 18 + Options, 19 + RequestOptions, 20 + RequestResult, 21 + ResolvedRequestOptions, 22 + ResponseStyle, 23 + TDataShape, 24 + } from './types.gen'; 25 + export { createConfig, mergeHeaders } from './utils.gen';
+211
examples/openapi-ts-nestjs/src/client/client/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Auth } from '../core/auth.gen'; 4 + import type { ServerSentEventsOptions, ServerSentEventsResult } from '../core/serverSentEvents.gen'; 5 + import type { Client as CoreClient, Config as CoreConfig } from '../core/types.gen'; 6 + import type { Middleware } from './utils.gen'; 7 + 8 + export type ResponseStyle = 'data' | 'fields'; 9 + 10 + export interface Config<T extends ClientOptions = ClientOptions> 11 + extends Omit<RequestInit, 'body' | 'headers' | 'method'>, CoreConfig { 12 + /** 13 + * Base URL for all requests made by this client. 14 + */ 15 + baseUrl?: T['baseUrl']; 16 + /** 17 + * Fetch API implementation. You can use this option to provide a custom 18 + * fetch instance. 19 + * 20 + * @default globalThis.fetch 21 + */ 22 + fetch?: typeof fetch; 23 + /** 24 + * Please don't use the Fetch client for Next.js applications. The `next` 25 + * options won't have any effect. 26 + * 27 + * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead. 28 + */ 29 + next?: never; 30 + /** 31 + * Return the response data parsed in a specified format. By default, `auto` 32 + * will infer the appropriate method from the `Content-Type` response header. 33 + * You can override this behavior with any of the {@link Body} methods. 34 + * Select `stream` if you don't want to parse response data at all. 35 + * 36 + * @default 'auto' 37 + */ 38 + parseAs?: 'arrayBuffer' | 'auto' | 'blob' | 'formData' | 'json' | 'stream' | 'text'; 39 + /** 40 + * Should we return only data or multiple fields (data, error, response, etc.)? 41 + * 42 + * @default 'fields' 43 + */ 44 + responseStyle?: ResponseStyle; 45 + /** 46 + * Throw an error instead of returning it in the response? 47 + * 48 + * @default false 49 + */ 50 + throwOnError?: T['throwOnError']; 51 + } 52 + 53 + export interface RequestOptions< 54 + TData = unknown, 55 + TResponseStyle extends ResponseStyle = 'fields', 56 + ThrowOnError extends boolean = boolean, 57 + Url extends string = string, 58 + > 59 + extends 60 + Config<{ 61 + responseStyle: TResponseStyle; 62 + throwOnError: ThrowOnError; 63 + }>, 64 + Pick< 65 + ServerSentEventsOptions<TData>, 66 + | 'onRequest' 67 + | 'onSseError' 68 + | 'onSseEvent' 69 + | 'sseDefaultRetryDelay' 70 + | 'sseMaxRetryAttempts' 71 + | 'sseMaxRetryDelay' 72 + > { 73 + /** 74 + * Any body that you want to add to your request. 75 + * 76 + * {@link https://developer.mozilla.org/docs/Web/API/fetch#body} 77 + */ 78 + body?: unknown; 79 + path?: Record<string, unknown>; 80 + query?: Record<string, unknown>; 81 + /** 82 + * Security mechanism(s) to use for the request. 83 + */ 84 + security?: ReadonlyArray<Auth>; 85 + url: Url; 86 + } 87 + 88 + export interface ResolvedRequestOptions< 89 + TResponseStyle extends ResponseStyle = 'fields', 90 + ThrowOnError extends boolean = boolean, 91 + Url extends string = string, 92 + > extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> { 93 + serializedBody?: string; 94 + } 95 + 96 + export type RequestResult< 97 + TData = unknown, 98 + TError = unknown, 99 + ThrowOnError extends boolean = boolean, 100 + TResponseStyle extends ResponseStyle = 'fields', 101 + > = ThrowOnError extends true 102 + ? Promise< 103 + TResponseStyle extends 'data' 104 + ? TData extends Record<string, unknown> 105 + ? TData[keyof TData] 106 + : TData 107 + : { 108 + data: TData extends Record<string, unknown> ? TData[keyof TData] : TData; 109 + request: Request; 110 + response: Response; 111 + } 112 + > 113 + : Promise< 114 + TResponseStyle extends 'data' 115 + ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined 116 + : ( 117 + | { 118 + data: TData extends Record<string, unknown> ? TData[keyof TData] : TData; 119 + error: undefined; 120 + } 121 + | { 122 + data: undefined; 123 + error: TError extends Record<string, unknown> ? TError[keyof TError] : TError; 124 + } 125 + ) & { 126 + request: Request; 127 + response: Response; 128 + } 129 + >; 130 + 131 + export interface ClientOptions { 132 + baseUrl?: string; 133 + responseStyle?: ResponseStyle; 134 + throwOnError?: boolean; 135 + } 136 + 137 + type MethodFn = < 138 + TData = unknown, 139 + TError = unknown, 140 + ThrowOnError extends boolean = false, 141 + TResponseStyle extends ResponseStyle = 'fields', 142 + >( 143 + options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'>, 144 + ) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>; 145 + 146 + type SseFn = < 147 + TData = unknown, 148 + TError = unknown, 149 + ThrowOnError extends boolean = false, 150 + TResponseStyle extends ResponseStyle = 'fields', 151 + >( 152 + options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'>, 153 + ) => Promise<ServerSentEventsResult<TData, TError>>; 154 + 155 + type RequestFn = < 156 + TData = unknown, 157 + TError = unknown, 158 + ThrowOnError extends boolean = false, 159 + TResponseStyle extends ResponseStyle = 'fields', 160 + >( 161 + options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'> & 162 + Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, 'method'>, 163 + ) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>; 164 + 165 + type BuildUrlFn = < 166 + TData extends { 167 + body?: unknown; 168 + path?: Record<string, unknown>; 169 + query?: Record<string, unknown>; 170 + url: string; 171 + }, 172 + >( 173 + options: TData & Options<TData>, 174 + ) => string; 175 + 176 + export type Client = CoreClient<RequestFn, Config, MethodFn, BuildUrlFn, SseFn> & { 177 + interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions>; 178 + }; 179 + 180 + /** 181 + * The `createClientConfig()` function will be called on client initialization 182 + * and the returned object will become the client's initial configuration. 183 + * 184 + * You may want to initialize your client this way instead of calling 185 + * `setConfig()`. This is useful for example if you're using Next.js 186 + * to ensure your client always has the correct values. 187 + */ 188 + export type CreateClientConfig<T extends ClientOptions = ClientOptions> = ( 189 + override?: Config<ClientOptions & T>, 190 + ) => Config<Required<ClientOptions> & T>; 191 + 192 + export interface TDataShape { 193 + body?: unknown; 194 + headers?: unknown; 195 + path?: unknown; 196 + query?: unknown; 197 + url: string; 198 + } 199 + 200 + type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>>; 201 + 202 + export type Options< 203 + TData extends TDataShape = TDataShape, 204 + ThrowOnError extends boolean = boolean, 205 + TResponse = unknown, 206 + TResponseStyle extends ResponseStyle = 'fields', 207 + > = OmitKeys< 208 + RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 209 + 'body' | 'path' | 'query' | 'url' 210 + > & 211 + ([TData] extends [never] ? unknown : Omit<TData, 'url'>);
+316
examples/openapi-ts-nestjs/src/client/client/utils.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { getAuthToken } from '../core/auth.gen'; 4 + import type { QuerySerializerOptions } from '../core/bodySerializer.gen'; 5 + import { jsonBodySerializer } from '../core/bodySerializer.gen'; 6 + import { 7 + serializeArrayParam, 8 + serializeObjectParam, 9 + serializePrimitiveParam, 10 + } from '../core/pathSerializer.gen'; 11 + import { getUrl } from '../core/utils.gen'; 12 + import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; 13 + 14 + export const createQuerySerializer = <T = unknown>({ 15 + parameters = {}, 16 + ...args 17 + }: QuerySerializerOptions = {}) => { 18 + const querySerializer = (queryParams: T) => { 19 + const search: string[] = []; 20 + if (queryParams && typeof queryParams === 'object') { 21 + for (const name in queryParams) { 22 + const value = queryParams[name]; 23 + 24 + if (value === undefined || value === null) { 25 + continue; 26 + } 27 + 28 + const options = parameters[name] || args; 29 + 30 + if (Array.isArray(value)) { 31 + const serializedArray = serializeArrayParam({ 32 + allowReserved: options.allowReserved, 33 + explode: true, 34 + name, 35 + style: 'form', 36 + value, 37 + ...options.array, 38 + }); 39 + if (serializedArray) search.push(serializedArray); 40 + } else if (typeof value === 'object') { 41 + const serializedObject = serializeObjectParam({ 42 + allowReserved: options.allowReserved, 43 + explode: true, 44 + name, 45 + style: 'deepObject', 46 + value: value as Record<string, unknown>, 47 + ...options.object, 48 + }); 49 + if (serializedObject) search.push(serializedObject); 50 + } else { 51 + const serializedPrimitive = serializePrimitiveParam({ 52 + allowReserved: options.allowReserved, 53 + name, 54 + value: value as string, 55 + }); 56 + if (serializedPrimitive) search.push(serializedPrimitive); 57 + } 58 + } 59 + } 60 + return search.join('&'); 61 + }; 62 + return querySerializer; 63 + }; 64 + 65 + /** 66 + * Infers parseAs value from provided Content-Type header. 67 + */ 68 + export const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => { 69 + if (!contentType) { 70 + // If no Content-Type header is provided, the best we can do is return the raw response body, 71 + // which is effectively the same as the 'stream' option. 72 + return 'stream'; 73 + } 74 + 75 + const cleanContent = contentType.split(';')[0]?.trim(); 76 + 77 + if (!cleanContent) { 78 + return; 79 + } 80 + 81 + if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) { 82 + return 'json'; 83 + } 84 + 85 + if (cleanContent === 'multipart/form-data') { 86 + return 'formData'; 87 + } 88 + 89 + if ( 90 + ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type)) 91 + ) { 92 + return 'blob'; 93 + } 94 + 95 + if (cleanContent.startsWith('text/')) { 96 + return 'text'; 97 + } 98 + 99 + return; 100 + }; 101 + 102 + const checkForExistence = ( 103 + options: Pick<RequestOptions, 'auth' | 'query'> & { 104 + headers: Headers; 105 + }, 106 + name?: string, 107 + ): boolean => { 108 + if (!name) { 109 + return false; 110 + } 111 + if ( 112 + options.headers.has(name) || 113 + options.query?.[name] || 114 + options.headers.get('Cookie')?.includes(`${name}=`) 115 + ) { 116 + return true; 117 + } 118 + return false; 119 + }; 120 + 121 + export const setAuthParams = async ({ 122 + security, 123 + ...options 124 + }: Pick<Required<RequestOptions>, 'security'> & 125 + Pick<RequestOptions, 'auth' | 'query'> & { 126 + headers: Headers; 127 + }) => { 128 + for (const auth of security) { 129 + if (checkForExistence(options, auth.name)) { 130 + continue; 131 + } 132 + 133 + const token = await getAuthToken(auth, options.auth); 134 + 135 + if (!token) { 136 + continue; 137 + } 138 + 139 + const name = auth.name ?? 'Authorization'; 140 + 141 + switch (auth.in) { 142 + case 'query': 143 + if (!options.query) { 144 + options.query = {}; 145 + } 146 + options.query[name] = token; 147 + break; 148 + case 'cookie': 149 + options.headers.append('Cookie', `${name}=${token}`); 150 + break; 151 + case 'header': 152 + default: 153 + options.headers.set(name, token); 154 + break; 155 + } 156 + } 157 + }; 158 + 159 + export const buildUrl: Client['buildUrl'] = (options) => 160 + getUrl({ 161 + baseUrl: options.baseUrl as string, 162 + path: options.path, 163 + query: options.query, 164 + querySerializer: 165 + typeof options.querySerializer === 'function' 166 + ? options.querySerializer 167 + : createQuerySerializer(options.querySerializer), 168 + url: options.url, 169 + }); 170 + 171 + export const mergeConfigs = (a: Config, b: Config): Config => { 172 + const config = { ...a, ...b }; 173 + if (config.baseUrl?.endsWith('/')) { 174 + config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1); 175 + } 176 + config.headers = mergeHeaders(a.headers, b.headers); 177 + return config; 178 + }; 179 + 180 + const headersEntries = (headers: Headers): Array<[string, string]> => { 181 + const entries: Array<[string, string]> = []; 182 + headers.forEach((value, key) => { 183 + entries.push([key, value]); 184 + }); 185 + return entries; 186 + }; 187 + 188 + export const mergeHeaders = ( 189 + ...headers: Array<Required<Config>['headers'] | undefined> 190 + ): Headers => { 191 + const mergedHeaders = new Headers(); 192 + for (const header of headers) { 193 + if (!header) { 194 + continue; 195 + } 196 + 197 + const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header); 198 + 199 + for (const [key, value] of iterator) { 200 + if (value === null) { 201 + mergedHeaders.delete(key); 202 + } else if (Array.isArray(value)) { 203 + for (const v of value) { 204 + mergedHeaders.append(key, v as string); 205 + } 206 + } else if (value !== undefined) { 207 + // assume object headers are meant to be JSON stringified, i.e. their 208 + // content value in OpenAPI specification is 'application/json' 209 + mergedHeaders.set( 210 + key, 211 + typeof value === 'object' ? JSON.stringify(value) : (value as string), 212 + ); 213 + } 214 + } 215 + } 216 + return mergedHeaders; 217 + }; 218 + 219 + type ErrInterceptor<Err, Res, Req, Options> = ( 220 + error: Err, 221 + response: Res, 222 + request: Req, 223 + options: Options, 224 + ) => Err | Promise<Err>; 225 + 226 + type ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>; 227 + 228 + type ResInterceptor<Res, Req, Options> = ( 229 + response: Res, 230 + request: Req, 231 + options: Options, 232 + ) => Res | Promise<Res>; 233 + 234 + class Interceptors<Interceptor> { 235 + fns: Array<Interceptor | null> = []; 236 + 237 + clear(): void { 238 + this.fns = []; 239 + } 240 + 241 + eject(id: number | Interceptor): void { 242 + const index = this.getInterceptorIndex(id); 243 + if (this.fns[index]) { 244 + this.fns[index] = null; 245 + } 246 + } 247 + 248 + exists(id: number | Interceptor): boolean { 249 + const index = this.getInterceptorIndex(id); 250 + return Boolean(this.fns[index]); 251 + } 252 + 253 + getInterceptorIndex(id: number | Interceptor): number { 254 + if (typeof id === 'number') { 255 + return this.fns[id] ? id : -1; 256 + } 257 + return this.fns.indexOf(id); 258 + } 259 + 260 + update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false { 261 + const index = this.getInterceptorIndex(id); 262 + if (this.fns[index]) { 263 + this.fns[index] = fn; 264 + return id; 265 + } 266 + return false; 267 + } 268 + 269 + use(fn: Interceptor): number { 270 + this.fns.push(fn); 271 + return this.fns.length - 1; 272 + } 273 + } 274 + 275 + export interface Middleware<Req, Res, Err, Options> { 276 + error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>; 277 + request: Interceptors<ReqInterceptor<Req, Options>>; 278 + response: Interceptors<ResInterceptor<Res, Req, Options>>; 279 + } 280 + 281 + export const createInterceptors = <Req, Res, Err, Options>(): Middleware< 282 + Req, 283 + Res, 284 + Err, 285 + Options 286 + > => ({ 287 + error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(), 288 + request: new Interceptors<ReqInterceptor<Req, Options>>(), 289 + response: new Interceptors<ResInterceptor<Res, Req, Options>>(), 290 + }); 291 + 292 + const defaultQuerySerializer = createQuerySerializer({ 293 + allowReserved: false, 294 + array: { 295 + explode: true, 296 + style: 'form', 297 + }, 298 + object: { 299 + explode: true, 300 + style: 'deepObject', 301 + }, 302 + }); 303 + 304 + const defaultHeaders = { 305 + 'Content-Type': 'application/json', 306 + }; 307 + 308 + export const createConfig = <T extends ClientOptions = ClientOptions>( 309 + override: Config<Omit<ClientOptions, keyof T> & T> = {}, 310 + ): Config<Omit<ClientOptions, keyof T> & T> => ({ 311 + ...jsonBodySerializer, 312 + headers: defaultHeaders, 313 + parseAs: 'auto', 314 + querySerializer: defaultQuerySerializer, 315 + ...override, 316 + });
+41
examples/openapi-ts-nestjs/src/client/core/auth.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type AuthToken = string | undefined; 4 + 5 + export interface Auth { 6 + /** 7 + * Which part of the request do we use to send the auth? 8 + * 9 + * @default 'header' 10 + */ 11 + in?: 'header' | 'query' | 'cookie'; 12 + /** 13 + * Header or query parameter name. 14 + * 15 + * @default 'Authorization' 16 + */ 17 + name?: string; 18 + scheme?: 'basic' | 'bearer'; 19 + type: 'apiKey' | 'http'; 20 + } 21 + 22 + export const getAuthToken = async ( 23 + auth: Auth, 24 + callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken, 25 + ): Promise<string | undefined> => { 26 + const token = typeof callback === 'function' ? await callback(auth) : callback; 27 + 28 + if (!token) { 29 + return; 30 + } 31 + 32 + if (auth.scheme === 'bearer') { 33 + return `Bearer ${token}`; 34 + } 35 + 36 + if (auth.scheme === 'basic') { 37 + return `Basic ${btoa(token)}`; 38 + } 39 + 40 + return token; 41 + };
+82
examples/openapi-ts-nestjs/src/client/core/bodySerializer.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen'; 4 + 5 + export type QuerySerializer = (query: Record<string, unknown>) => string; 6 + 7 + export type BodySerializer = (body: unknown) => unknown; 8 + 9 + type QuerySerializerOptionsObject = { 10 + allowReserved?: boolean; 11 + array?: Partial<SerializerOptions<ArrayStyle>>; 12 + object?: Partial<SerializerOptions<ObjectStyle>>; 13 + }; 14 + 15 + export type QuerySerializerOptions = QuerySerializerOptionsObject & { 16 + /** 17 + * Per-parameter serialization overrides. When provided, these settings 18 + * override the global array/object settings for specific parameter names. 19 + */ 20 + parameters?: Record<string, QuerySerializerOptionsObject>; 21 + }; 22 + 23 + const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => { 24 + if (typeof value === 'string' || value instanceof Blob) { 25 + data.append(key, value); 26 + } else if (value instanceof Date) { 27 + data.append(key, value.toISOString()); 28 + } else { 29 + data.append(key, JSON.stringify(value)); 30 + } 31 + }; 32 + 33 + const serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => { 34 + if (typeof value === 'string') { 35 + data.append(key, value); 36 + } else { 37 + data.append(key, JSON.stringify(value)); 38 + } 39 + }; 40 + 41 + export const formDataBodySerializer = { 42 + bodySerializer: (body: unknown): FormData => { 43 + const data = new FormData(); 44 + 45 + Object.entries(body as Record<string, unknown>).forEach(([key, value]) => { 46 + if (value === undefined || value === null) { 47 + return; 48 + } 49 + if (Array.isArray(value)) { 50 + value.forEach((v) => serializeFormDataPair(data, key, v)); 51 + } else { 52 + serializeFormDataPair(data, key, value); 53 + } 54 + }); 55 + 56 + return data; 57 + }, 58 + }; 59 + 60 + export const jsonBodySerializer = { 61 + bodySerializer: (body: unknown): string => 62 + JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)), 63 + }; 64 + 65 + export const urlSearchParamsBodySerializer = { 66 + bodySerializer: (body: unknown): string => { 67 + const data = new URLSearchParams(); 68 + 69 + Object.entries(body as Record<string, unknown>).forEach(([key, value]) => { 70 + if (value === undefined || value === null) { 71 + return; 72 + } 73 + if (Array.isArray(value)) { 74 + value.forEach((v) => serializeUrlSearchParamsPair(data, key, v)); 75 + } else { 76 + serializeUrlSearchParamsPair(data, key, value); 77 + } 78 + }); 79 + 80 + return data.toString(); 81 + }, 82 + };
+169
examples/openapi-ts-nestjs/src/client/core/params.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + type Slot = 'body' | 'headers' | 'path' | 'query'; 4 + 5 + export type Field = 6 + | { 7 + in: Exclude<Slot, 'body'>; 8 + /** 9 + * Field name. This is the name we want the user to see and use. 10 + */ 11 + key: string; 12 + /** 13 + * Field mapped name. This is the name we want to use in the request. 14 + * If omitted, we use the same value as `key`. 15 + */ 16 + map?: string; 17 + } 18 + | { 19 + in: Extract<Slot, 'body'>; 20 + /** 21 + * Key isn't required for bodies. 22 + */ 23 + key?: string; 24 + map?: string; 25 + } 26 + | { 27 + /** 28 + * Field name. This is the name we want the user to see and use. 29 + */ 30 + key: string; 31 + /** 32 + * Field mapped name. This is the name we want to use in the request. 33 + * If `in` is omitted, `map` aliases `key` to the transport layer. 34 + */ 35 + map: Slot; 36 + }; 37 + 38 + export interface Fields { 39 + allowExtra?: Partial<Record<Slot, boolean>>; 40 + args?: ReadonlyArray<Field>; 41 + } 42 + 43 + export type FieldsConfig = ReadonlyArray<Field | Fields>; 44 + 45 + const extraPrefixesMap: Record<string, Slot> = { 46 + $body_: 'body', 47 + $headers_: 'headers', 48 + $path_: 'path', 49 + $query_: 'query', 50 + }; 51 + const extraPrefixes = Object.entries(extraPrefixesMap); 52 + 53 + type KeyMap = Map< 54 + string, 55 + | { 56 + in: Slot; 57 + map?: string; 58 + } 59 + | { 60 + in?: never; 61 + map: Slot; 62 + } 63 + >; 64 + 65 + const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => { 66 + if (!map) { 67 + map = new Map(); 68 + } 69 + 70 + for (const config of fields) { 71 + if ('in' in config) { 72 + if (config.key) { 73 + map.set(config.key, { 74 + in: config.in, 75 + map: config.map, 76 + }); 77 + } 78 + } else if ('key' in config) { 79 + map.set(config.key, { 80 + map: config.map, 81 + }); 82 + } else if (config.args) { 83 + buildKeyMap(config.args, map); 84 + } 85 + } 86 + 87 + return map; 88 + }; 89 + 90 + interface Params { 91 + body: unknown; 92 + headers: Record<string, unknown>; 93 + path: Record<string, unknown>; 94 + query: Record<string, unknown>; 95 + } 96 + 97 + const stripEmptySlots = (params: Params) => { 98 + for (const [slot, value] of Object.entries(params)) { 99 + if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) { 100 + delete params[slot as Slot]; 101 + } 102 + } 103 + }; 104 + 105 + export const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => { 106 + const params: Params = { 107 + body: {}, 108 + headers: {}, 109 + path: {}, 110 + query: {}, 111 + }; 112 + 113 + const map = buildKeyMap(fields); 114 + 115 + let config: FieldsConfig[number] | undefined; 116 + 117 + for (const [index, arg] of args.entries()) { 118 + if (fields[index]) { 119 + config = fields[index]; 120 + } 121 + 122 + if (!config) { 123 + continue; 124 + } 125 + 126 + if ('in' in config) { 127 + if (config.key) { 128 + const field = map.get(config.key)!; 129 + const name = field.map || config.key; 130 + if (field.in) { 131 + (params[field.in] as Record<string, unknown>)[name] = arg; 132 + } 133 + } else { 134 + params.body = arg; 135 + } 136 + } else { 137 + for (const [key, value] of Object.entries(arg ?? {})) { 138 + const field = map.get(key); 139 + 140 + if (field) { 141 + if (field.in) { 142 + const name = field.map || key; 143 + (params[field.in] as Record<string, unknown>)[name] = value; 144 + } else { 145 + params[field.map] = value; 146 + } 147 + } else { 148 + const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix)); 149 + 150 + if (extra) { 151 + const [prefix, slot] = extra; 152 + (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value; 153 + } else if ('allowExtra' in config && config.allowExtra) { 154 + for (const [slot, allowed] of Object.entries(config.allowExtra)) { 155 + if (allowed) { 156 + (params[slot as Slot] as Record<string, unknown>)[key] = value; 157 + break; 158 + } 159 + } 160 + } 161 + } 162 + } 163 + } 164 + } 165 + 166 + stripEmptySlots(params); 167 + 168 + return params; 169 + };
+171
examples/openapi-ts-nestjs/src/client/core/pathSerializer.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + interface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {} 4 + 5 + interface SerializePrimitiveOptions { 6 + allowReserved?: boolean; 7 + name: string; 8 + } 9 + 10 + export interface SerializerOptions<T> { 11 + /** 12 + * @default true 13 + */ 14 + explode: boolean; 15 + style: T; 16 + } 17 + 18 + export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited'; 19 + export type ArraySeparatorStyle = ArrayStyle | MatrixStyle; 20 + type MatrixStyle = 'label' | 'matrix' | 'simple'; 21 + export type ObjectStyle = 'form' | 'deepObject'; 22 + type ObjectSeparatorStyle = ObjectStyle | MatrixStyle; 23 + 24 + interface SerializePrimitiveParam extends SerializePrimitiveOptions { 25 + value: string; 26 + } 27 + 28 + export const separatorArrayExplode = (style: ArraySeparatorStyle) => { 29 + switch (style) { 30 + case 'label': 31 + return '.'; 32 + case 'matrix': 33 + return ';'; 34 + case 'simple': 35 + return ','; 36 + default: 37 + return '&'; 38 + } 39 + }; 40 + 41 + export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => { 42 + switch (style) { 43 + case 'form': 44 + return ','; 45 + case 'pipeDelimited': 46 + return '|'; 47 + case 'spaceDelimited': 48 + return '%20'; 49 + default: 50 + return ','; 51 + } 52 + }; 53 + 54 + export const separatorObjectExplode = (style: ObjectSeparatorStyle) => { 55 + switch (style) { 56 + case 'label': 57 + return '.'; 58 + case 'matrix': 59 + return ';'; 60 + case 'simple': 61 + return ','; 62 + default: 63 + return '&'; 64 + } 65 + }; 66 + 67 + export const serializeArrayParam = ({ 68 + allowReserved, 69 + explode, 70 + name, 71 + style, 72 + value, 73 + }: SerializeOptions<ArraySeparatorStyle> & { 74 + value: unknown[]; 75 + }) => { 76 + if (!explode) { 77 + const joinedValues = ( 78 + allowReserved ? value : value.map((v) => encodeURIComponent(v as string)) 79 + ).join(separatorArrayNoExplode(style)); 80 + switch (style) { 81 + case 'label': 82 + return `.${joinedValues}`; 83 + case 'matrix': 84 + return `;${name}=${joinedValues}`; 85 + case 'simple': 86 + return joinedValues; 87 + default: 88 + return `${name}=${joinedValues}`; 89 + } 90 + } 91 + 92 + const separator = separatorArrayExplode(style); 93 + const joinedValues = value 94 + .map((v) => { 95 + if (style === 'label' || style === 'simple') { 96 + return allowReserved ? v : encodeURIComponent(v as string); 97 + } 98 + 99 + return serializePrimitiveParam({ 100 + allowReserved, 101 + name, 102 + value: v as string, 103 + }); 104 + }) 105 + .join(separator); 106 + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues; 107 + }; 108 + 109 + export const serializePrimitiveParam = ({ 110 + allowReserved, 111 + name, 112 + value, 113 + }: SerializePrimitiveParam) => { 114 + if (value === undefined || value === null) { 115 + return ''; 116 + } 117 + 118 + if (typeof value === 'object') { 119 + throw new Error( 120 + 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.', 121 + ); 122 + } 123 + 124 + return `${name}=${allowReserved ? value : encodeURIComponent(value)}`; 125 + }; 126 + 127 + export const serializeObjectParam = ({ 128 + allowReserved, 129 + explode, 130 + name, 131 + style, 132 + value, 133 + valueOnly, 134 + }: SerializeOptions<ObjectSeparatorStyle> & { 135 + value: Record<string, unknown> | Date; 136 + valueOnly?: boolean; 137 + }) => { 138 + if (value instanceof Date) { 139 + return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`; 140 + } 141 + 142 + if (style !== 'deepObject' && !explode) { 143 + let values: string[] = []; 144 + Object.entries(value).forEach(([key, v]) => { 145 + values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)]; 146 + }); 147 + const joinedValues = values.join(','); 148 + switch (style) { 149 + case 'form': 150 + return `${name}=${joinedValues}`; 151 + case 'label': 152 + return `.${joinedValues}`; 153 + case 'matrix': 154 + return `;${name}=${joinedValues}`; 155 + default: 156 + return joinedValues; 157 + } 158 + } 159 + 160 + const separator = separatorObjectExplode(style); 161 + const joinedValues = Object.entries(value) 162 + .map(([key, v]) => 163 + serializePrimitiveParam({ 164 + allowReserved, 165 + name: style === 'deepObject' ? `${name}[${key}]` : key, 166 + value: v as string, 167 + }), 168 + ) 169 + .join(separator); 170 + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues; 171 + };
+117
examples/openapi-ts-nestjs/src/client/core/queryKeySerializer.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + /** 4 + * JSON-friendly union that mirrors what Pinia Colada can hash. 5 + */ 6 + export type JsonValue = 7 + | null 8 + | string 9 + | number 10 + | boolean 11 + | JsonValue[] 12 + | { [key: string]: JsonValue }; 13 + 14 + /** 15 + * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes. 16 + */ 17 + export const queryKeyJsonReplacer = (_key: string, value: unknown) => { 18 + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { 19 + return undefined; 20 + } 21 + if (typeof value === 'bigint') { 22 + return value.toString(); 23 + } 24 + if (value instanceof Date) { 25 + return value.toISOString(); 26 + } 27 + return value; 28 + }; 29 + 30 + /** 31 + * Safely stringifies a value and parses it back into a JsonValue. 32 + */ 33 + export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => { 34 + try { 35 + const json = JSON.stringify(input, queryKeyJsonReplacer); 36 + if (json === undefined) { 37 + return undefined; 38 + } 39 + return JSON.parse(json) as JsonValue; 40 + } catch { 41 + return undefined; 42 + } 43 + }; 44 + 45 + /** 46 + * Detects plain objects (including objects with a null prototype). 47 + */ 48 + const isPlainObject = (value: unknown): value is Record<string, unknown> => { 49 + if (value === null || typeof value !== 'object') { 50 + return false; 51 + } 52 + const prototype = Object.getPrototypeOf(value as object); 53 + return prototype === Object.prototype || prototype === null; 54 + }; 55 + 56 + /** 57 + * Turns URLSearchParams into a sorted JSON object for deterministic keys. 58 + */ 59 + const serializeSearchParams = (params: URLSearchParams): JsonValue => { 60 + const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b)); 61 + const result: Record<string, JsonValue> = {}; 62 + 63 + for (const [key, value] of entries) { 64 + const existing = result[key]; 65 + if (existing === undefined) { 66 + result[key] = value; 67 + continue; 68 + } 69 + 70 + if (Array.isArray(existing)) { 71 + (existing as string[]).push(value); 72 + } else { 73 + result[key] = [existing, value]; 74 + } 75 + } 76 + 77 + return result; 78 + }; 79 + 80 + /** 81 + * Normalizes any accepted value into a JSON-friendly shape for query keys. 82 + */ 83 + export const serializeQueryKeyValue = (value: unknown): JsonValue | undefined => { 84 + if (value === null) { 85 + return null; 86 + } 87 + 88 + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { 89 + return value; 90 + } 91 + 92 + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { 93 + return undefined; 94 + } 95 + 96 + if (typeof value === 'bigint') { 97 + return value.toString(); 98 + } 99 + 100 + if (value instanceof Date) { 101 + return value.toISOString(); 102 + } 103 + 104 + if (Array.isArray(value)) { 105 + return stringifyToJsonValue(value); 106 + } 107 + 108 + if (typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams) { 109 + return serializeSearchParams(value); 110 + } 111 + 112 + if (isPlainObject(value)) { 113 + return stringifyToJsonValue(value); 114 + } 115 + 116 + return undefined; 117 + };
+243
examples/openapi-ts-nestjs/src/client/core/serverSentEvents.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Config } from './types.gen'; 4 + 5 + export type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> & 6 + Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & { 7 + /** 8 + * Fetch API implementation. You can use this option to provide a custom 9 + * fetch instance. 10 + * 11 + * @default globalThis.fetch 12 + */ 13 + fetch?: typeof fetch; 14 + /** 15 + * Implementing clients can call request interceptors inside this hook. 16 + */ 17 + onRequest?: (url: string, init: RequestInit) => Promise<Request>; 18 + /** 19 + * Callback invoked when a network or parsing error occurs during streaming. 20 + * 21 + * This option applies only if the endpoint returns a stream of events. 22 + * 23 + * @param error The error that occurred. 24 + */ 25 + onSseError?: (error: unknown) => void; 26 + /** 27 + * Callback invoked when an event is streamed from the server. 28 + * 29 + * This option applies only if the endpoint returns a stream of events. 30 + * 31 + * @param event Event streamed from the server. 32 + * @returns Nothing (void). 33 + */ 34 + onSseEvent?: (event: StreamEvent<TData>) => void; 35 + serializedBody?: RequestInit['body']; 36 + /** 37 + * Default retry delay in milliseconds. 38 + * 39 + * This option applies only if the endpoint returns a stream of events. 40 + * 41 + * @default 3000 42 + */ 43 + sseDefaultRetryDelay?: number; 44 + /** 45 + * Maximum number of retry attempts before giving up. 46 + */ 47 + sseMaxRetryAttempts?: number; 48 + /** 49 + * Maximum retry delay in milliseconds. 50 + * 51 + * Applies only when exponential backoff is used. 52 + * 53 + * This option applies only if the endpoint returns a stream of events. 54 + * 55 + * @default 30000 56 + */ 57 + sseMaxRetryDelay?: number; 58 + /** 59 + * Optional sleep function for retry backoff. 60 + * 61 + * Defaults to using `setTimeout`. 62 + */ 63 + sseSleepFn?: (ms: number) => Promise<void>; 64 + url: string; 65 + }; 66 + 67 + export interface StreamEvent<TData = unknown> { 68 + data: TData; 69 + event?: string; 70 + id?: string; 71 + retry?: number; 72 + } 73 + 74 + export type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = { 75 + stream: AsyncGenerator< 76 + TData extends Record<string, unknown> ? TData[keyof TData] : TData, 77 + TReturn, 78 + TNext 79 + >; 80 + }; 81 + 82 + export const createSseClient = <TData = unknown>({ 83 + onRequest, 84 + onSseError, 85 + onSseEvent, 86 + responseTransformer, 87 + responseValidator, 88 + sseDefaultRetryDelay, 89 + sseMaxRetryAttempts, 90 + sseMaxRetryDelay, 91 + sseSleepFn, 92 + url, 93 + ...options 94 + }: ServerSentEventsOptions): ServerSentEventsResult<TData> => { 95 + let lastEventId: string | undefined; 96 + 97 + const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms))); 98 + 99 + const createStream = async function* () { 100 + let retryDelay: number = sseDefaultRetryDelay ?? 3000; 101 + let attempt = 0; 102 + const signal = options.signal ?? new AbortController().signal; 103 + 104 + while (true) { 105 + if (signal.aborted) break; 106 + 107 + attempt++; 108 + 109 + const headers = 110 + options.headers instanceof Headers 111 + ? options.headers 112 + : new Headers(options.headers as Record<string, string> | undefined); 113 + 114 + if (lastEventId !== undefined) { 115 + headers.set('Last-Event-ID', lastEventId); 116 + } 117 + 118 + try { 119 + const requestInit: RequestInit = { 120 + redirect: 'follow', 121 + ...options, 122 + body: options.serializedBody, 123 + headers, 124 + signal, 125 + }; 126 + let request = new Request(url, requestInit); 127 + if (onRequest) { 128 + request = await onRequest(url, requestInit); 129 + } 130 + // fetch must be assigned here, otherwise it would throw the error: 131 + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation 132 + const _fetch = options.fetch ?? globalThis.fetch; 133 + const response = await _fetch(request); 134 + 135 + if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`); 136 + 137 + if (!response.body) throw new Error('No body in SSE response'); 138 + 139 + const reader = response.body.pipeThrough(new TextDecoderStream()).getReader(); 140 + 141 + let buffer = ''; 142 + 143 + const abortHandler = () => { 144 + try { 145 + reader.cancel(); 146 + } catch { 147 + // noop 148 + } 149 + }; 150 + 151 + signal.addEventListener('abort', abortHandler); 152 + 153 + try { 154 + while (true) { 155 + const { done, value } = await reader.read(); 156 + if (done) break; 157 + buffer += value; 158 + // Normalize line endings: CRLF -> LF, then CR -> LF 159 + buffer = buffer.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); 160 + 161 + const chunks = buffer.split('\n\n'); 162 + buffer = chunks.pop() ?? ''; 163 + 164 + for (const chunk of chunks) { 165 + const lines = chunk.split('\n'); 166 + const dataLines: Array<string> = []; 167 + let eventName: string | undefined; 168 + 169 + for (const line of lines) { 170 + if (line.startsWith('data:')) { 171 + dataLines.push(line.replace(/^data:\s*/, '')); 172 + } else if (line.startsWith('event:')) { 173 + eventName = line.replace(/^event:\s*/, ''); 174 + } else if (line.startsWith('id:')) { 175 + lastEventId = line.replace(/^id:\s*/, ''); 176 + } else if (line.startsWith('retry:')) { 177 + const parsed = Number.parseInt(line.replace(/^retry:\s*/, ''), 10); 178 + if (!Number.isNaN(parsed)) { 179 + retryDelay = parsed; 180 + } 181 + } 182 + } 183 + 184 + let data: unknown; 185 + let parsedJson = false; 186 + 187 + if (dataLines.length) { 188 + const rawData = dataLines.join('\n'); 189 + try { 190 + data = JSON.parse(rawData); 191 + parsedJson = true; 192 + } catch { 193 + data = rawData; 194 + } 195 + } 196 + 197 + if (parsedJson) { 198 + if (responseValidator) { 199 + await responseValidator(data); 200 + } 201 + 202 + if (responseTransformer) { 203 + data = await responseTransformer(data); 204 + } 205 + } 206 + 207 + onSseEvent?.({ 208 + data, 209 + event: eventName, 210 + id: lastEventId, 211 + retry: retryDelay, 212 + }); 213 + 214 + if (dataLines.length) { 215 + yield data as any; 216 + } 217 + } 218 + } 219 + } finally { 220 + signal.removeEventListener('abort', abortHandler); 221 + reader.releaseLock(); 222 + } 223 + 224 + break; // exit loop on normal completion 225 + } catch (error) { 226 + // connection failed or aborted; retry after delay 227 + onSseError?.(error); 228 + 229 + if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) { 230 + break; // stop after firing error 231 + } 232 + 233 + // exponential backoff: double retry each attempt, cap at 30s 234 + const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000); 235 + await sleep(backoff); 236 + } 237 + } 238 + }; 239 + 240 + const stream = createStream(); 241 + 242 + return { stream }; 243 + };
+104
examples/openapi-ts-nestjs/src/client/core/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Auth, AuthToken } from './auth.gen'; 4 + import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from './bodySerializer.gen'; 5 + 6 + export type HttpMethod = 7 + | 'connect' 8 + | 'delete' 9 + | 'get' 10 + | 'head' 11 + | 'options' 12 + | 'patch' 13 + | 'post' 14 + | 'put' 15 + | 'trace'; 16 + 17 + export type Client< 18 + RequestFn = never, 19 + Config = unknown, 20 + MethodFn = never, 21 + BuildUrlFn = never, 22 + SseFn = never, 23 + > = { 24 + /** 25 + * Returns the final request URL. 26 + */ 27 + buildUrl: BuildUrlFn; 28 + getConfig: () => Config; 29 + request: RequestFn; 30 + setConfig: (config: Config) => Config; 31 + } & { 32 + [K in HttpMethod]: MethodFn; 33 + } & ([SseFn] extends [never] ? { sse?: never } : { sse: { [K in HttpMethod]: SseFn } }); 34 + 35 + export interface Config { 36 + /** 37 + * Auth token or a function returning auth token. The resolved value will be 38 + * added to the request payload as defined by its `security` array. 39 + */ 40 + auth?: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken; 41 + /** 42 + * A function for serializing request body parameter. By default, 43 + * {@link JSON.stringify()} will be used. 44 + */ 45 + bodySerializer?: BodySerializer | null; 46 + /** 47 + * An object containing any HTTP headers that you want to pre-populate your 48 + * `Headers` object with. 49 + * 50 + * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more} 51 + */ 52 + headers?: 53 + | RequestInit['headers'] 54 + | Record< 55 + string, 56 + string | number | boolean | (string | number | boolean)[] | null | undefined | unknown 57 + >; 58 + /** 59 + * The request method. 60 + * 61 + * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more} 62 + */ 63 + method?: Uppercase<HttpMethod>; 64 + /** 65 + * A function for serializing request query parameters. By default, arrays 66 + * will be exploded in form style, objects will be exploded in deepObject 67 + * style, and reserved characters are percent-encoded. 68 + * 69 + * This method will have no effect if the native `paramsSerializer()` Axios 70 + * API function is used. 71 + * 72 + * {@link https://swagger.io/docs/specification/serialization/#query View examples} 73 + */ 74 + querySerializer?: QuerySerializer | QuerySerializerOptions; 75 + /** 76 + * A function validating request data. This is useful if you want to ensure 77 + * the request conforms to the desired shape, so it can be safely sent to 78 + * the server. 79 + */ 80 + requestValidator?: (data: unknown) => Promise<unknown>; 81 + /** 82 + * A function transforming response data before it's returned. This is useful 83 + * for post-processing data, e.g. converting ISO strings into Date objects. 84 + */ 85 + responseTransformer?: (data: unknown) => Promise<unknown>; 86 + /** 87 + * A function validating response data. This is useful if you want to ensure 88 + * the response conforms to the desired shape, so it can be safely passed to 89 + * the transformers and returned to the user. 90 + */ 91 + responseValidator?: (data: unknown) => Promise<unknown>; 92 + } 93 + 94 + type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never] 95 + ? true 96 + : [T] extends [never | undefined] 97 + ? [undefined] extends [T] 98 + ? false 99 + : true 100 + : false; 101 + 102 + export type OmitNever<T extends Record<string, unknown>> = { 103 + [K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true ? never : K]: T[K]; 104 + };
+140
examples/openapi-ts-nestjs/src/client/core/utils.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { BodySerializer, QuerySerializer } from './bodySerializer.gen'; 4 + import { 5 + type ArraySeparatorStyle, 6 + serializeArrayParam, 7 + serializeObjectParam, 8 + serializePrimitiveParam, 9 + } from './pathSerializer.gen'; 10 + 11 + export interface PathSerializer { 12 + path: Record<string, unknown>; 13 + url: string; 14 + } 15 + 16 + export const PATH_PARAM_RE = /\{[^{}]+\}/g; 17 + 18 + export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { 19 + let url = _url; 20 + const matches = _url.match(PATH_PARAM_RE); 21 + if (matches) { 22 + for (const match of matches) { 23 + let explode = false; 24 + let name = match.substring(1, match.length - 1); 25 + let style: ArraySeparatorStyle = 'simple'; 26 + 27 + if (name.endsWith('*')) { 28 + explode = true; 29 + name = name.substring(0, name.length - 1); 30 + } 31 + 32 + if (name.startsWith('.')) { 33 + name = name.substring(1); 34 + style = 'label'; 35 + } else if (name.startsWith(';')) { 36 + name = name.substring(1); 37 + style = 'matrix'; 38 + } 39 + 40 + const value = path[name]; 41 + 42 + if (value === undefined || value === null) { 43 + continue; 44 + } 45 + 46 + if (Array.isArray(value)) { 47 + url = url.replace(match, serializeArrayParam({ explode, name, style, value })); 48 + continue; 49 + } 50 + 51 + if (typeof value === 'object') { 52 + url = url.replace( 53 + match, 54 + serializeObjectParam({ 55 + explode, 56 + name, 57 + style, 58 + value: value as Record<string, unknown>, 59 + valueOnly: true, 60 + }), 61 + ); 62 + continue; 63 + } 64 + 65 + if (style === 'matrix') { 66 + url = url.replace( 67 + match, 68 + `;${serializePrimitiveParam({ 69 + name, 70 + value: value as string, 71 + })}`, 72 + ); 73 + continue; 74 + } 75 + 76 + const replaceValue = encodeURIComponent( 77 + style === 'label' ? `.${value as string}` : (value as string), 78 + ); 79 + url = url.replace(match, replaceValue); 80 + } 81 + } 82 + return url; 83 + }; 84 + 85 + export const getUrl = ({ 86 + baseUrl, 87 + path, 88 + query, 89 + querySerializer, 90 + url: _url, 91 + }: { 92 + baseUrl?: string; 93 + path?: Record<string, unknown>; 94 + query?: Record<string, unknown>; 95 + querySerializer: QuerySerializer; 96 + url: string; 97 + }) => { 98 + const pathUrl = _url.startsWith('/') ? _url : `/${_url}`; 99 + let url = (baseUrl ?? '') + pathUrl; 100 + if (path) { 101 + url = defaultPathSerializer({ path, url }); 102 + } 103 + let search = query ? querySerializer(query) : ''; 104 + if (search.startsWith('?')) { 105 + search = search.substring(1); 106 + } 107 + if (search) { 108 + url += `?${search}`; 109 + } 110 + return url; 111 + }; 112 + 113 + export function getValidRequestBody(options: { 114 + body?: unknown; 115 + bodySerializer?: BodySerializer | null; 116 + serializedBody?: unknown; 117 + }) { 118 + const hasBody = options.body !== undefined; 119 + const isSerializedBody = hasBody && options.bodySerializer; 120 + 121 + if (isSerializedBody) { 122 + if ('serializedBody' in options) { 123 + const hasSerializedBody = 124 + options.serializedBody !== undefined && options.serializedBody !== ''; 125 + 126 + return hasSerializedBody ? options.serializedBody : null; 127 + } 128 + 129 + // not all clients implement a serializedBody property (i.e. client-axios) 130 + return options.body !== '' ? options.body : null; 131 + } 132 + 133 + // plain/text body 134 + if (hasBody) { 135 + return options.body; 136 + } 137 + 138 + // no body was provided 139 + return undefined; 140 + }
+44
examples/openapi-ts-nestjs/src/client/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export { 4 + createPet, 5 + deletePet, 6 + getInventory, 7 + listPets, 8 + type Options, 9 + showPetById, 10 + updatePet, 11 + } from './sdk.gen'; 12 + export type { 13 + ClientOptions, 14 + CreatePetBody, 15 + CreatePetData, 16 + CreatePetError, 17 + CreatePetErrors, 18 + CreatePetResponse, 19 + CreatePetResponses, 20 + DeletePetData, 21 + DeletePetError, 22 + DeletePetErrors, 23 + DeletePetResponse, 24 + DeletePetResponses, 25 + Error, 26 + GetInventoryData, 27 + GetInventoryResponse, 28 + GetInventoryResponses, 29 + ListPetsData, 30 + ListPetsResponse, 31 + ListPetsResponses, 32 + Pet, 33 + ShowPetByIdData, 34 + ShowPetByIdError, 35 + ShowPetByIdErrors, 36 + ShowPetByIdResponse, 37 + ShowPetByIdResponses, 38 + UpdatePetBody, 39 + UpdatePetData, 40 + UpdatePetError, 41 + UpdatePetErrors, 42 + UpdatePetResponse, 43 + UpdatePetResponses, 44 + } from './types.gen';
+30
examples/openapi-ts-nestjs/src/client/nestjs.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { 4 + CreatePetData, 5 + CreatePetResponse, 6 + DeletePetData, 7 + DeletePetResponse, 8 + GetInventoryResponse, 9 + ListPetsData, 10 + ListPetsResponse, 11 + ShowPetByIdData, 12 + ShowPetByIdResponse, 13 + UpdatePetData, 14 + UpdatePetResponse, 15 + } from './types.gen'; 16 + 17 + export type PetsControllerMethods = { 18 + listPets: (query?: ListPetsData['query']) => Promise<ListPetsResponse>; 19 + createPet: (body: CreatePetData['body']) => Promise<CreatePetResponse>; 20 + deletePet: (path: DeletePetData['path']) => Promise<DeletePetResponse>; 21 + showPetById: (path: ShowPetByIdData['path']) => Promise<ShowPetByIdResponse>; 22 + updatePet: ( 23 + path: UpdatePetData['path'], 24 + body: UpdatePetData['body'], 25 + ) => Promise<UpdatePetResponse>; 26 + }; 27 + 28 + export type StoreControllerMethods = { 29 + getInventory: () => Promise<GetInventoryResponse>; 30 + };
+113
examples/openapi-ts-nestjs/src/client/sdk.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Client, Options as Options2, TDataShape } from './client'; 4 + import { client } from './client.gen'; 5 + import type { 6 + CreatePetData, 7 + CreatePetErrors, 8 + CreatePetResponses, 9 + DeletePetData, 10 + DeletePetErrors, 11 + DeletePetResponses, 12 + GetInventoryData, 13 + GetInventoryResponses, 14 + ListPetsData, 15 + ListPetsResponses, 16 + ShowPetByIdData, 17 + ShowPetByIdErrors, 18 + ShowPetByIdResponses, 19 + UpdatePetData, 20 + UpdatePetErrors, 21 + UpdatePetResponses, 22 + } from './types.gen'; 23 + 24 + export type Options< 25 + TData extends TDataShape = TDataShape, 26 + ThrowOnError extends boolean = boolean, 27 + > = Options2<TData, ThrowOnError> & { 28 + /** 29 + * You can provide a client instance returned by `createClient()` instead of 30 + * individual options. This might be also useful if you want to implement a 31 + * custom client. 32 + */ 33 + client?: Client; 34 + /** 35 + * You can pass arbitrary values through the `meta` object. This can be 36 + * used to access values that aren't defined as part of the SDK function. 37 + */ 38 + meta?: Record<string, unknown>; 39 + }; 40 + 41 + /** 42 + * List all pets 43 + */ 44 + export const listPets = <ThrowOnError extends boolean = false>( 45 + options?: Options<ListPetsData, ThrowOnError>, 46 + ) => 47 + (options?.client ?? client).get<ListPetsResponses, unknown, ThrowOnError>({ 48 + url: '/pets', 49 + ...options, 50 + }); 51 + 52 + /** 53 + * Create a pet 54 + */ 55 + export const createPet = <ThrowOnError extends boolean = false>( 56 + options: Options<CreatePetData, ThrowOnError>, 57 + ) => 58 + (options.client ?? client).post<CreatePetResponses, CreatePetErrors, ThrowOnError>({ 59 + url: '/pets', 60 + ...options, 61 + headers: { 62 + 'Content-Type': 'application/json', 63 + ...options.headers, 64 + }, 65 + }); 66 + 67 + /** 68 + * Delete a pet 69 + */ 70 + export const deletePet = <ThrowOnError extends boolean = false>( 71 + options: Options<DeletePetData, ThrowOnError>, 72 + ) => 73 + (options.client ?? client).delete<DeletePetResponses, DeletePetErrors, ThrowOnError>({ 74 + url: '/pets/{petId}', 75 + ...options, 76 + }); 77 + 78 + /** 79 + * Find pet by ID 80 + */ 81 + export const showPetById = <ThrowOnError extends boolean = false>( 82 + options: Options<ShowPetByIdData, ThrowOnError>, 83 + ) => 84 + (options.client ?? client).get<ShowPetByIdResponses, ShowPetByIdErrors, ThrowOnError>({ 85 + url: '/pets/{petId}', 86 + ...options, 87 + }); 88 + 89 + /** 90 + * Update a pet 91 + */ 92 + export const updatePet = <ThrowOnError extends boolean = false>( 93 + options: Options<UpdatePetData, ThrowOnError>, 94 + ) => 95 + (options.client ?? client).put<UpdatePetResponses, UpdatePetErrors, ThrowOnError>({ 96 + url: '/pets/{petId}', 97 + ...options, 98 + headers: { 99 + 'Content-Type': 'application/json', 100 + ...options.headers, 101 + }, 102 + }); 103 + 104 + /** 105 + * Returns pet inventories by status 106 + */ 107 + export const getInventory = <ThrowOnError extends boolean = false>( 108 + options?: Options<GetInventoryData, ThrowOnError>, 109 + ) => 110 + (options?.client ?? client).get<GetInventoryResponses, unknown, ThrowOnError>({ 111 + url: '/store/inventory', 112 + ...options, 113 + });
+175
examples/openapi-ts-nestjs/src/client/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type ClientOptions = { 4 + baseUrl: 'http://localhost:3000/v3' | (string & {}); 5 + }; 6 + 7 + export type Pet = { 8 + id: string; 9 + name: string; 10 + tag?: string; 11 + status?: 'available' | 'pending' | 'sold'; 12 + }; 13 + 14 + export type CreatePetBody = { 15 + name: string; 16 + tag?: string; 17 + }; 18 + 19 + export type UpdatePetBody = { 20 + name?: string; 21 + tag?: string; 22 + status?: 'available' | 'pending' | 'sold'; 23 + }; 24 + 25 + export type Error = { 26 + code: number; 27 + message: string; 28 + }; 29 + 30 + export type ListPetsData = { 31 + body?: never; 32 + path?: never; 33 + query?: { 34 + limit?: number; 35 + offset?: number; 36 + }; 37 + url: '/pets'; 38 + }; 39 + 40 + export type ListPetsResponses = { 41 + /** 42 + * A list of pets 43 + */ 44 + 200: Array<Pet>; 45 + }; 46 + 47 + export type ListPetsResponse = ListPetsResponses[keyof ListPetsResponses]; 48 + 49 + export type CreatePetData = { 50 + body: CreatePetBody; 51 + path?: never; 52 + query?: never; 53 + url: '/pets'; 54 + }; 55 + 56 + export type CreatePetErrors = { 57 + /** 58 + * Validation error 59 + */ 60 + 400: Error; 61 + }; 62 + 63 + export type CreatePetError = CreatePetErrors[keyof CreatePetErrors]; 64 + 65 + export type CreatePetResponses = { 66 + /** 67 + * Pet created 68 + */ 69 + 201: Pet; 70 + }; 71 + 72 + export type CreatePetResponse = CreatePetResponses[keyof CreatePetResponses]; 73 + 74 + export type DeletePetData = { 75 + body?: never; 76 + path: { 77 + petId: string; 78 + }; 79 + query?: never; 80 + url: '/pets/{petId}'; 81 + }; 82 + 83 + export type DeletePetErrors = { 84 + /** 85 + * Pet not found 86 + */ 87 + 404: Error; 88 + }; 89 + 90 + export type DeletePetError = DeletePetErrors[keyof DeletePetErrors]; 91 + 92 + export type DeletePetResponses = { 93 + /** 94 + * Pet deleted 95 + */ 96 + 204: void; 97 + }; 98 + 99 + export type DeletePetResponse = DeletePetResponses[keyof DeletePetResponses]; 100 + 101 + export type ShowPetByIdData = { 102 + body?: never; 103 + path: { 104 + petId: string; 105 + }; 106 + query?: never; 107 + url: '/pets/{petId}'; 108 + }; 109 + 110 + export type ShowPetByIdErrors = { 111 + /** 112 + * Pet not found 113 + */ 114 + 404: Error; 115 + }; 116 + 117 + export type ShowPetByIdError = ShowPetByIdErrors[keyof ShowPetByIdErrors]; 118 + 119 + export type ShowPetByIdResponses = { 120 + /** 121 + * Pet found 122 + */ 123 + 200: Pet; 124 + }; 125 + 126 + export type ShowPetByIdResponse = ShowPetByIdResponses[keyof ShowPetByIdResponses]; 127 + 128 + export type UpdatePetData = { 129 + body: UpdatePetBody; 130 + path: { 131 + petId: string; 132 + }; 133 + query?: never; 134 + url: '/pets/{petId}'; 135 + }; 136 + 137 + export type UpdatePetErrors = { 138 + /** 139 + * Validation error 140 + */ 141 + 400: Error; 142 + /** 143 + * Pet not found 144 + */ 145 + 404: Error; 146 + }; 147 + 148 + export type UpdatePetError = UpdatePetErrors[keyof UpdatePetErrors]; 149 + 150 + export type UpdatePetResponses = { 151 + /** 152 + * Pet updated 153 + */ 154 + 200: Pet; 155 + }; 156 + 157 + export type UpdatePetResponse = UpdatePetResponses[keyof UpdatePetResponses]; 158 + 159 + export type GetInventoryData = { 160 + body?: never; 161 + path?: never; 162 + query?: never; 163 + url: '/store/inventory'; 164 + }; 165 + 166 + export type GetInventoryResponses = { 167 + /** 168 + * Successful operation 169 + */ 170 + 200: { 171 + [key: string]: number; 172 + }; 173 + }; 174 + 175 + export type GetInventoryResponse = GetInventoryResponses[keyof GetInventoryResponses];
+12
examples/openapi-ts-nestjs/src/main.ts
··· 1 + import 'reflect-metadata'; 2 + 3 + import { NestFactory } from '@nestjs/core'; 4 + 5 + import { AppModule } from './app.module'; 6 + 7 + async function bootstrap() { 8 + const app = await NestFactory.create(AppModule); 9 + await app.listen(3000); 10 + } 11 + 12 + bootstrap();
+47
examples/openapi-ts-nestjs/src/pets/pets.controller.ts
··· 1 + import { Body, Controller, Get, NotFoundException, Param, Post, Query } from '@nestjs/common'; 2 + 3 + import type { PetsControllerMethods } from '../client/nestjs.gen'; 4 + import type { CreatePetData, ListPetsData, Pet, ShowPetByIdData } from '../client/types.gen'; 5 + 6 + @Controller('pets') 7 + export class PetsController implements Pick< 8 + PetsControllerMethods, 9 + 'createPet' | 'listPets' | 'showPetById' 10 + > { 11 + private readonly pets: Pet[] = [ 12 + { id: '1', name: 'Fido', status: 'available', tag: 'dog' }, 13 + { id: '2', name: 'Kitty', status: 'available', tag: 'cat' }, 14 + ]; 15 + 16 + @Get() 17 + async listPets(@Query() query?: ListPetsData['query']) { 18 + const limit = query?.limit ?? 20; 19 + 20 + return this.pets.slice(0, limit); 21 + } 22 + 23 + @Post() 24 + async createPet(@Body() body: CreatePetData['body']) { 25 + const pet: Pet = { 26 + id: crypto.randomUUID(), 27 + name: body.name, 28 + status: 'available', 29 + tag: body.tag, 30 + }; 31 + 32 + this.pets.push(pet); 33 + 34 + return pet; 35 + } 36 + 37 + @Get(':petId') 38 + async showPetById(@Param() path: ShowPetByIdData['path']) { 39 + const pet = this.pets.find((p) => p.id === path.petId); 40 + 41 + if (!pet) { 42 + throw new NotFoundException(`Pet ${path.petId} not found`); 43 + } 44 + 45 + return pet; 46 + } 47 + }
+8
examples/openapi-ts-nestjs/src/pets/pets.module.ts
··· 1 + import { Module } from '@nestjs/common'; 2 + 3 + import { PetsController } from './pets.controller'; 4 + 5 + @Module({ 6 + controllers: [PetsController], 7 + }) 8 + export class PetsModule {}
+15
examples/openapi-ts-nestjs/src/store/store.controller.ts
··· 1 + import { Controller, Get } from '@nestjs/common'; 2 + 3 + import type { StoreControllerMethods } from '../client/nestjs.gen'; 4 + 5 + @Controller('store') 6 + export class StoreController implements Pick<StoreControllerMethods, 'getInventory'> { 7 + @Get('inventory') 8 + async getInventory() { 9 + return { 10 + available: 10, 11 + pending: 3, 12 + sold: 5, 13 + }; 14 + } 15 + }
+8
examples/openapi-ts-nestjs/src/store/store.module.ts
··· 1 + import { Module } from '@nestjs/common'; 2 + 3 + import { StoreController } from './store.controller'; 4 + 5 + @Module({ 6 + controllers: [StoreController], 7 + }) 8 + export class StoreModule {}
+58
examples/openapi-ts-nestjs/test/pets.test.ts
··· 1 + import type { INestApplication } from '@nestjs/common'; 2 + import { Test } from '@nestjs/testing'; 3 + import type { AddressInfo } from 'net'; 4 + import { AppModule } from 'src/app.module'; 5 + import { createPet, getInventory, listPets, showPetById } from 'src/client'; 6 + import { client } from 'src/client/client.gen'; 7 + 8 + let app: INestApplication; 9 + 10 + beforeAll(async () => { 11 + const moduleRef = await Test.createTestingModule({ 12 + imports: [AppModule], 13 + }).compile(); 14 + 15 + app = moduleRef.createNestApplication(); 16 + await app.init(); 17 + await app.listen(0); 18 + 19 + const address = app.getHttpServer().address() as AddressInfo; 20 + const baseUrl = `http://localhost:${String(address.port)}`; 21 + client.setConfig({ baseUrl }); 22 + }); 23 + 24 + afterAll(async () => { 25 + await app.close(); 26 + }); 27 + 28 + describe('PetsController', () => { 29 + test('listPets', async () => { 30 + const result = await listPets({ client }); 31 + expect(result.response.status).toBe(200); 32 + expect(Array.isArray(result.data)).toBe(true); 33 + }); 34 + 35 + test('showPetById', async () => { 36 + const result = await showPetById({ 37 + client, 38 + path: { petId: '1' }, 39 + }); 40 + expect(result.response.status).toBe(200); 41 + }); 42 + 43 + test('createPet', async () => { 44 + const result = await createPet({ 45 + body: { name: 'Buddy' }, 46 + client, 47 + }); 48 + expect(result.response.status).toBe(201); 49 + expect(result.data).toMatchObject({ name: 'Buddy' }); 50 + }); 51 + }); 52 + 53 + describe('StoreController', () => { 54 + test('getInventory', async () => { 55 + const result = await getInventory({ client }); 56 + expect(result.response.status).toBe(200); 57 + }); 58 + });
+29
examples/openapi-ts-nestjs/tsconfig.json
··· 1 + { 2 + "include": ["src/**/*", "test/**/*"], 3 + "compilerOptions": { 4 + "emitDecoratorMetadata": true, 5 + "experimentalDecorators": true, 6 + "esModuleInterop": true, 7 + "lib": ["es2023", "dom", "dom.iterable"], 8 + "module": "ESNext", 9 + "moduleResolution": "Bundler", 10 + "paths": { 11 + "src/*": ["./src/*"] 12 + }, 13 + "skipLibCheck": true, 14 + "target": "es2022", 15 + "types": ["node", "vitest/globals"], 16 + 17 + "strict": true, 18 + "noUncheckedIndexedAccess": true, 19 + "noUnusedLocals": true, 20 + "noUnusedParameters": true, 21 + "noImplicitReturns": true, 22 + "noFallthroughCasesInSwitch": true, 23 + "noImplicitOverride": true, 24 + "noPropertyAccessFromIndexSignature": true, 25 + "forceConsistentCasingInFileNames": true, 26 + "isolatedModules": true 27 + }, 28 + "references": [{ "path": "./tsconfig.node.json" }] 29 + }
+11
examples/openapi-ts-nestjs/tsconfig.node.json
··· 1 + { 2 + "compilerOptions": { 3 + "composite": true, 4 + "skipLibCheck": true, 5 + "module": "ESNext", 6 + "moduleResolution": "bundler", 7 + "allowSyntheticDefaultImports": true, 8 + "strict": true 9 + }, 10 + "include": ["vite.config.ts"] 11 + }
+16
examples/openapi-ts-nestjs/vite.config.ts
··· 1 + import swc from 'unplugin-swc'; 2 + import { defineProject } from 'vitest/config'; 3 + 4 + export default defineProject({ 5 + plugins: [swc.vite()], 6 + resolve: { 7 + alias: { 8 + src: new URL('./src', import.meta.url).pathname, 9 + }, 10 + }, 11 + test: { 12 + environment: 'node', 13 + globals: true, 14 + include: ['test/**/*.test.ts'], 15 + }, 16 + });
+3
packages/openapi-ts-tests/nestjs/v11/__snapshots__/2.0.x/default/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type { ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, Date, Default, DeleteCallWithoutParametersAndResponseData, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponses, DummyBData, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithStrings, ExternalRefA, ExternalRefB, ExternalSharedModel, FailureFailure, FooWowData, FooWowResponses, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, ModelThatExtends, ModelThatExtendsExtends, ModelWithArray, ModelWithBoolean, ModelWithCircularReference, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithInteger, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableString, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, OptionsCallWithoutParametersAndResponseData, ParameterActivityParams, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyErrors, PostApiVbyApiVersionBodyResponse, PostApiVbyApiVersionBodyResponses, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ResponsePostActivityResponse, ServiceWithEmptyTagData, SimpleBoolean, SimpleFile, SimpleInteger, SimpleReference, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses } from './types.gen';
+82
packages/openapi-ts-tests/nestjs/v11/__snapshots__/2.0.x/default/nestjs.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesResponse, CallWithParametersData, CallWithResponseAndNoContentResponseResponse, CallWithResponseResponse, CallWithResponsesResponse, CallWithWeirdParameterNamesData, CollectionFormatData, ComplexTypesData, ComplexTypesResponse, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyResponse, TestErrorCodeData, TypesData, TypesResponse } from './types.gen'; 4 + 5 + export type DefaultControllerMethods = { 6 + serviceWithEmptyTag: () => Promise<void>; 7 + patchApiVbyApiVersionNoTag: () => Promise<void>; 8 + fooWow: () => Promise<void>; 9 + postApiVbyApiVersionBody: (body: PostApiVbyApiVersionBodyData['body']) => Promise<PostApiVbyApiVersionBodyResponse>; 10 + }; 11 + 12 + export type SimpleControllerMethods = { 13 + deleteCallWithoutParametersAndResponse: () => Promise<void>; 14 + getCallWithoutParametersAndResponse: () => Promise<void>; 15 + headCallWithoutParametersAndResponse: () => Promise<void>; 16 + optionsCallWithoutParametersAndResponse: () => Promise<void>; 17 + patchCallWithoutParametersAndResponse: () => Promise<void>; 18 + postCallWithoutParametersAndResponse: () => Promise<void>; 19 + putCallWithoutParametersAndResponse: () => Promise<void>; 20 + }; 21 + 22 + export type DescriptionsControllerMethods = { 23 + callWithDescriptions: (query?: CallWithDescriptionsData['query']) => Promise<void>; 24 + }; 25 + 26 + export type ParametersControllerMethods = { 27 + callWithParameters: (path: CallWithParametersData['path'], query: CallWithParametersData['query'], headers: CallWithParametersData['headers']) => Promise<void>; 28 + callWithWeirdParameterNames: (path: CallWithWeirdParameterNamesData['path'], query: CallWithWeirdParameterNamesData['query'], body: CallWithWeirdParameterNamesData['body'], headers: CallWithWeirdParameterNamesData['headers']) => Promise<void>; 29 + }; 30 + 31 + export type DefaultsControllerMethods = { 32 + callWithDefaultParameters: (query: CallWithDefaultParametersData['query']) => Promise<void>; 33 + callWithDefaultOptionalParameters: (query?: CallWithDefaultOptionalParametersData['query']) => Promise<void>; 34 + callToTestOrderOfParams: (query: CallToTestOrderOfParamsData['query']) => Promise<void>; 35 + }; 36 + 37 + export type DuplicateControllerMethods = { 38 + duplicateName: () => Promise<void>; 39 + duplicateName2: () => Promise<void>; 40 + duplicateName3: () => Promise<void>; 41 + duplicateName4: () => Promise<void>; 42 + }; 43 + 44 + export type NoContentControllerMethods = { 45 + callWithNoContentResponse: () => Promise<void>; 46 + }; 47 + 48 + export type ResponseControllerMethods = { 49 + callWithResponseAndNoContentResponse: () => Promise<CallWithResponseAndNoContentResponseResponse>; 50 + callWithResponse: () => Promise<CallWithResponseResponse>; 51 + callWithDuplicateResponses: () => Promise<CallWithDuplicateResponsesResponse>; 52 + callWithResponses: () => Promise<CallWithResponsesResponse>; 53 + }; 54 + 55 + export type MultipleTags1ControllerMethods = { 56 + dummyA: () => Promise<void>; 57 + dummyB: () => Promise<void>; 58 + }; 59 + 60 + export type CollectionFormatControllerMethods = { 61 + collectionFormat: (query: CollectionFormatData['query']) => Promise<void>; 62 + }; 63 + 64 + export type TypesControllerMethods = { 65 + types: (query: TypesData['query'], path?: TypesData['path']) => Promise<TypesResponse>; 66 + }; 67 + 68 + export type ComplexControllerMethods = { 69 + complexTypes: (query: ComplexTypesData['query']) => Promise<ComplexTypesResponse>; 70 + }; 71 + 72 + export type HeaderControllerMethods = { 73 + callWithResultFromHeader: () => Promise<void>; 74 + }; 75 + 76 + export type ErrorControllerMethods = { 77 + testErrorCode: (query: TestErrorCodeData['query']) => Promise<void>; 78 + }; 79 + 80 + export type NonAsciiÆøåÆøÅöôêÊControllerMethods = { 81 + nonAsciiæøåÆøÅöôêÊ字符串: (query: NonAsciiæøåÆøÅöôêÊ字符串Data['query']) => Promise<NonAsciiæøåÆøÅöôêÊ字符串Response>; 82 + };
+1190
packages/openapi-ts-tests/nestjs/v11/__snapshots__/2.0.x/default/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type ClientOptions = { 4 + baseUrl: 'http://localhost:3000/base' | (string & {}); 5 + }; 6 + 7 + export type ExternalRefA = ExternalSharedModel; 8 + 9 + export type ExternalRefB = ExternalSharedModel; 10 + 11 + /** 12 + * Testing multiline comments in string: First line 13 + * Second line 14 + * 15 + * Fourth line 16 + */ 17 + export type CommentWithBreaks = number; 18 + 19 + /** 20 + * Testing backticks in string: `backticks` and ```multiple backticks``` should work 21 + */ 22 + export type CommentWithBackticks = number; 23 + 24 + /** 25 + * Testing backticks and quotes in string: `backticks`, 'quotes', "double quotes" and ```multiple backticks``` should work 26 + */ 27 + export type CommentWithBackticksAndQuotes = number; 28 + 29 + /** 30 + * Testing slashes in string: \backwards\\\ and /forwards/// should work 31 + */ 32 + export type CommentWithSlashes = number; 33 + 34 + /** 35 + * Testing expression placeholders in string: ${expression} should work 36 + */ 37 + export type CommentWithExpressionPlaceholders = number; 38 + 39 + /** 40 + * Testing quotes in string: 'single quote''' and "double quotes""" should work 41 + */ 42 + export type CommentWithQuotes = number; 43 + 44 + /** 45 + * Testing reserved characters in string: * inline * and ** inline ** should work 46 + */ 47 + export type CommentWithReservedCharacters = number; 48 + 49 + /** 50 + * This is a simple number 51 + */ 52 + export type SimpleInteger = number; 53 + 54 + /** 55 + * This is a simple boolean 56 + */ 57 + export type SimpleBoolean = boolean; 58 + 59 + /** 60 + * This is a simple string 61 + */ 62 + export type SimpleString = string; 63 + 64 + /** 65 + * A string with non-ascii (unicode) characters valid in typescript identifiers (æøåÆØÅöÔèÈ字符串) 66 + */ 67 + export type NonAsciiStringæøåÆøÅöôêÊ字符串 = string; 68 + 69 + /** 70 + * This is a simple file 71 + */ 72 + export type SimpleFile = Blob | File; 73 + 74 + export type SimpleReference = ModelWithString; 75 + 76 + /** 77 + * This is a simple string 78 + */ 79 + export type SimpleStringWithPattern = string; 80 + 81 + /** 82 + * This is a simple enum with strings 83 + */ 84 + export type EnumWithStrings = 'Success' | 'Warning' | 'Error' | '\'Single Quote\'' | '"Double Quotes"' | 'Non-ascii: øæåôöØÆÅÔÖ字符串'; 85 + 86 + /** 87 + * This is a simple enum with numbers 88 + */ 89 + export type EnumWithNumbers = 1 | 2 | 3 | 1.1 | 1.2 | 1.3 | 100 | 200 | 300 | -100 | -200 | -300 | -1.1 | -1.2 | -1.3; 90 + 91 + /** 92 + * Success=1,Warning=2,Error=3 93 + */ 94 + export type EnumFromDescription = number; 95 + 96 + /** 97 + * This is a simple enum with numbers 98 + */ 99 + export type EnumWithExtensions = 200 | 400 | 500; 100 + 101 + /** 102 + * This is a simple array with numbers 103 + */ 104 + export type ArrayWithNumbers = Array<number>; 105 + 106 + /** 107 + * This is a simple array with booleans 108 + */ 109 + export type ArrayWithBooleans = Array<boolean>; 110 + 111 + /** 112 + * This is a simple array with strings 113 + */ 114 + export type ArrayWithStrings = Array<string>; 115 + 116 + /** 117 + * This is a simple array with references 118 + */ 119 + export type ArrayWithReferences = Array<ModelWithString>; 120 + 121 + /** 122 + * This is a simple array containing an array 123 + */ 124 + export type ArrayWithArray = Array<Array<ModelWithString>>; 125 + 126 + /** 127 + * This is a simple array with properties 128 + */ 129 + export type ArrayWithProperties = Array<{ 130 + foo?: string; 131 + bar?: string; 132 + }>; 133 + 134 + /** 135 + * This is a string dictionary 136 + */ 137 + export type DictionaryWithString = { 138 + [key: string]: string; 139 + }; 140 + 141 + /** 142 + * This is a string reference 143 + */ 144 + export type DictionaryWithReference = { 145 + [key: string]: ModelWithString; 146 + }; 147 + 148 + /** 149 + * This is a complex dictionary 150 + */ 151 + export type DictionaryWithArray = { 152 + [key: string]: Array<ModelWithString>; 153 + }; 154 + 155 + /** 156 + * This is a string dictionary 157 + */ 158 + export type DictionaryWithDictionary = { 159 + [key: string]: { 160 + [key: string]: string; 161 + }; 162 + }; 163 + 164 + /** 165 + * This is a complex dictionary 166 + */ 167 + export type DictionaryWithProperties = { 168 + [key: string]: { 169 + foo?: string; 170 + bar?: string; 171 + }; 172 + }; 173 + 174 + /** 175 + * This is a type-only model that defines Date as a string 176 + */ 177 + export type Date = string; 178 + 179 + /** 180 + * This is a model with one number property 181 + */ 182 + export type ModelWithInteger = { 183 + /** 184 + * This is a simple number property 185 + */ 186 + prop?: number; 187 + }; 188 + 189 + /** 190 + * This is a model with one boolean property 191 + */ 192 + export type ModelWithBoolean = { 193 + /** 194 + * This is a simple boolean property 195 + */ 196 + prop?: boolean; 197 + }; 198 + 199 + /** 200 + * This is a model with one string property 201 + */ 202 + export type ModelWithString = { 203 + /** 204 + * This is a simple string property 205 + */ 206 + prop?: string; 207 + }; 208 + 209 + /** 210 + * This is a model with one string property 211 + */ 212 + export type ModelWithStringError = { 213 + /** 214 + * This is a simple string property 215 + */ 216 + prop?: string; 217 + }; 218 + 219 + /** 220 + * This is a model with one string property 221 + */ 222 + export type ModelWithNullableString = { 223 + /** 224 + * This is a simple string property 225 + */ 226 + nullableProp?: string | null; 227 + /** 228 + * This is a simple string property 229 + */ 230 + nullableRequiredProp: string | null; 231 + }; 232 + 233 + /** 234 + * This is a model with one enum 235 + */ 236 + export type ModelWithEnum = { 237 + /** 238 + * This is a simple enum with strings 239 + */ 240 + test?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 241 + /** 242 + * These are the HTTP error code enums 243 + */ 244 + statusCode?: '100' | '200 FOO' | '300 FOO_BAR' | '400 foo-bar' | '500 foo.bar' | '600 foo&bar'; 245 + /** 246 + * Simple boolean enum 247 + */ 248 + bool?: true; 249 + }; 250 + 251 + /** 252 + * This is a model with one enum 253 + */ 254 + export type ModelWithEnumFromDescription = { 255 + /** 256 + * Success=1,Warning=2,Error=3 257 + */ 258 + test?: number; 259 + }; 260 + 261 + /** 262 + * This is a model with nested enums 263 + */ 264 + export type ModelWithNestedEnums = { 265 + dictionaryWithEnum?: { 266 + [key: string]: 'Success' | 'Warning' | 'Error'; 267 + }; 268 + dictionaryWithEnumFromDescription?: { 269 + [key: string]: number; 270 + }; 271 + arrayWithEnum?: Array<'Success' | 'Warning' | 'Error'>; 272 + arrayWithDescription?: Array<number>; 273 + }; 274 + 275 + /** 276 + * This is a model with one property containing a reference 277 + */ 278 + export type ModelWithReference = { 279 + prop?: ModelWithProperties; 280 + }; 281 + 282 + /** 283 + * This is a model with one property containing an array 284 + */ 285 + export type ModelWithArray = { 286 + prop?: Array<ModelWithString>; 287 + propWithFile?: Array<Blob | File>; 288 + propWithNumber?: Array<number>; 289 + }; 290 + 291 + /** 292 + * This is a model with one property containing a dictionary 293 + */ 294 + export type ModelWithDictionary = { 295 + prop?: { 296 + [key: string]: string; 297 + }; 298 + }; 299 + 300 + /** 301 + * This is a model with one property containing a circular reference 302 + */ 303 + export type ModelWithCircularReference = { 304 + prop?: ModelWithCircularReference; 305 + }; 306 + 307 + /** 308 + * This is a model with one nested property 309 + */ 310 + export type ModelWithProperties = { 311 + required: string; 312 + readonly requiredAndReadOnly: string; 313 + string?: string; 314 + number?: number; 315 + boolean?: boolean; 316 + reference?: ModelWithString; 317 + 'property with space'?: string; 318 + default?: string; 319 + try?: string; 320 + readonly '@namespace.string'?: string; 321 + readonly '@namespace.integer'?: number; 322 + }; 323 + 324 + /** 325 + * This is a model with one nested property 326 + */ 327 + export type ModelWithNestedProperties = { 328 + readonly first: { 329 + readonly second: { 330 + readonly third: string; 331 + }; 332 + }; 333 + }; 334 + 335 + /** 336 + * This is a model with duplicated properties 337 + */ 338 + export type ModelWithDuplicateProperties = { 339 + prop?: ModelWithString; 340 + }; 341 + 342 + /** 343 + * This is a model with ordered properties 344 + */ 345 + export type ModelWithOrderedProperties = { 346 + zebra?: string; 347 + apple?: string; 348 + hawaii?: string; 349 + }; 350 + 351 + /** 352 + * This is a model with duplicated imports 353 + */ 354 + export type ModelWithDuplicateImports = { 355 + propA?: ModelWithString; 356 + propB?: ModelWithString; 357 + propC?: ModelWithString; 358 + }; 359 + 360 + /** 361 + * This is a model that extends another model 362 + */ 363 + export type ModelThatExtends = ModelWithString & { 364 + propExtendsA?: string; 365 + propExtendsB?: ModelWithString; 366 + }; 367 + 368 + /** 369 + * This is a model that extends another model 370 + */ 371 + export type ModelThatExtendsExtends = ModelWithString & ModelThatExtends & { 372 + propExtendsC?: string; 373 + propExtendsD?: ModelWithString; 374 + }; 375 + 376 + export type Default = { 377 + name?: string; 378 + }; 379 + 380 + /** 381 + * This is a model that contains a some patterns 382 + */ 383 + export type ModelWithPattern = { 384 + key: string; 385 + name: string; 386 + readonly enabled?: boolean; 387 + readonly modified?: string; 388 + id?: string; 389 + text?: string; 390 + patternWithSingleQuotes?: string; 391 + patternWithNewline?: string; 392 + patternWithBacktick?: string; 393 + patternWithUnicode?: string; 394 + }; 395 + 396 + export type ParameterActivityParams = { 397 + description?: string; 398 + graduate_id?: number; 399 + organization_id?: number; 400 + parent_activity?: number; 401 + post_id?: number; 402 + }; 403 + 404 + export type ResponsePostActivityResponse = { 405 + description?: string; 406 + graduate_id?: number; 407 + organization_id?: number; 408 + parent_activity_id?: number; 409 + post_id?: number; 410 + }; 411 + 412 + export type FailureFailure = { 413 + error?: string; 414 + message?: string; 415 + reference_code?: string; 416 + }; 417 + 418 + export type ExternalSharedModel = { 419 + id: string; 420 + name?: string; 421 + }; 422 + 423 + /** 424 + * This is a model with one property containing a reference 425 + */ 426 + export type ModelWithReferenceWritable = { 427 + prop?: ModelWithPropertiesWritable; 428 + }; 429 + 430 + /** 431 + * This is a model with one nested property 432 + */ 433 + export type ModelWithPropertiesWritable = { 434 + required: string; 435 + string?: string; 436 + number?: number; 437 + boolean?: boolean; 438 + reference?: ModelWithString; 439 + 'property with space'?: string; 440 + default?: string; 441 + try?: string; 442 + }; 443 + 444 + /** 445 + * This is a model that contains a some patterns 446 + */ 447 + export type ModelWithPatternWritable = { 448 + key: string; 449 + name: string; 450 + id?: string; 451 + text?: string; 452 + patternWithSingleQuotes?: string; 453 + patternWithNewline?: string; 454 + patternWithBacktick?: string; 455 + patternWithUnicode?: string; 456 + }; 457 + 458 + export type ServiceWithEmptyTagData = { 459 + body?: never; 460 + path?: never; 461 + query?: never; 462 + url: '/api/v{api-version}/no+tag'; 463 + }; 464 + 465 + export type PatchApiVbyApiVersionNoTagData = { 466 + body?: never; 467 + path?: never; 468 + query?: never; 469 + url: '/api/v{api-version}/no+tag'; 470 + }; 471 + 472 + export type PatchApiVbyApiVersionNoTagResponses = { 473 + /** 474 + * OK 475 + */ 476 + default: unknown; 477 + }; 478 + 479 + export type FooWowData = { 480 + body?: never; 481 + path?: never; 482 + query?: never; 483 + url: '/api/v{api-version}/no+tag'; 484 + }; 485 + 486 + export type FooWowResponses = { 487 + /** 488 + * OK 489 + */ 490 + default: unknown; 491 + }; 492 + 493 + export type DeleteCallWithoutParametersAndResponseData = { 494 + body?: never; 495 + path?: never; 496 + query?: never; 497 + url: '/api/v{api-version}/simple'; 498 + }; 499 + 500 + export type GetCallWithoutParametersAndResponseData = { 501 + body?: never; 502 + path?: never; 503 + query?: never; 504 + url: '/api/v{api-version}/simple'; 505 + }; 506 + 507 + export type HeadCallWithoutParametersAndResponseData = { 508 + body?: never; 509 + path?: never; 510 + query?: never; 511 + url: '/api/v{api-version}/simple'; 512 + }; 513 + 514 + export type OptionsCallWithoutParametersAndResponseData = { 515 + body?: never; 516 + path?: never; 517 + query?: never; 518 + url: '/api/v{api-version}/simple'; 519 + }; 520 + 521 + export type PatchCallWithoutParametersAndResponseData = { 522 + body?: never; 523 + path?: never; 524 + query?: never; 525 + url: '/api/v{api-version}/simple'; 526 + }; 527 + 528 + export type PostCallWithoutParametersAndResponseData = { 529 + body?: never; 530 + path?: never; 531 + query?: never; 532 + url: '/api/v{api-version}/simple'; 533 + }; 534 + 535 + export type PutCallWithoutParametersAndResponseData = { 536 + body?: never; 537 + path?: never; 538 + query?: never; 539 + url: '/api/v{api-version}/simple'; 540 + }; 541 + 542 + export type CallWithDescriptionsData = { 543 + body?: never; 544 + path?: never; 545 + query?: { 546 + /** 547 + * Testing multiline comments in string: First line 548 + * Second line 549 + * 550 + * Fourth line 551 + */ 552 + parameterWithBreaks?: string; 553 + /** 554 + * Testing backticks in string: `backticks` and ```multiple backticks``` should work 555 + */ 556 + parameterWithBackticks?: string; 557 + /** 558 + * Testing slashes in string: \backwards\\\ and /forwards/// should work 559 + */ 560 + parameterWithSlashes?: string; 561 + /** 562 + * Testing expression placeholders in string: ${expression} should work 563 + */ 564 + parameterWithExpressionPlaceholders?: string; 565 + /** 566 + * Testing quotes in string: 'single quote''' and "double quotes""" should work 567 + */ 568 + parameterWithQuotes?: string; 569 + /** 570 + * Testing reserved characters in string: * inline * and ** inline ** should work 571 + */ 572 + parameterWithReservedCharacters?: string; 573 + }; 574 + url: '/api/v{api-version}/descriptions/'; 575 + }; 576 + 577 + export type CallWithParametersData = { 578 + body?: never; 579 + headers: { 580 + /** 581 + * This is the parameter that goes into the header 582 + */ 583 + parameterHeader: string; 584 + }; 585 + path: { 586 + /** 587 + * This is the parameter that goes into the path 588 + */ 589 + parameterPath: string; 590 + /** 591 + * api-version should be required in standalone clients 592 + */ 593 + 'api-version': string; 594 + }; 595 + query: { 596 + /** 597 + * This is the parameter that goes into the query params 598 + */ 599 + parameterQuery: string; 600 + }; 601 + url: '/api/v{api-version}/parameters/{parameterPath}'; 602 + }; 603 + 604 + export type CallWithWeirdParameterNamesData = { 605 + /** 606 + * This is the parameter that is sent as request body 607 + */ 608 + body: string; 609 + headers: { 610 + /** 611 + * This is the parameter that goes into the request header 612 + */ 613 + 'parameter.header': string; 614 + }; 615 + path: { 616 + /** 617 + * This is the parameter that goes into the path 618 + */ 619 + 'parameter.path.1'?: string; 620 + /** 621 + * This is the parameter that goes into the path 622 + */ 623 + 'parameter-path-2'?: string; 624 + /** 625 + * This is the parameter that goes into the path 626 + */ 627 + 'PARAMETER-PATH-3'?: string; 628 + /** 629 + * api-version should be required in standalone clients 630 + */ 631 + 'api-version': string; 632 + }; 633 + query: { 634 + /** 635 + * This is the parameter with a reserved keyword 636 + */ 637 + default?: string; 638 + /** 639 + * This is the parameter that goes into the request query params 640 + */ 641 + 'parameter-query': string; 642 + }; 643 + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}'; 644 + }; 645 + 646 + export type CallWithDefaultParametersData = { 647 + body?: never; 648 + path?: never; 649 + query: { 650 + /** 651 + * This is a simple string with default value 652 + */ 653 + parameterString: string; 654 + /** 655 + * This is a simple number with default value 656 + */ 657 + parameterNumber: number; 658 + /** 659 + * This is a simple boolean with default value 660 + */ 661 + parameterBoolean: boolean; 662 + /** 663 + * This is a simple enum with default value 664 + */ 665 + parameterEnum: 'Success' | 'Warning' | 'Error'; 666 + /** 667 + * This is a model with one string property 668 + */ 669 + parameterModel: { 670 + /** 671 + * This is a simple string property 672 + */ 673 + prop?: string; 674 + }; 675 + }; 676 + url: '/api/v{api-version}/defaults'; 677 + }; 678 + 679 + export type CallWithDefaultOptionalParametersData = { 680 + body?: never; 681 + path?: never; 682 + query?: { 683 + /** 684 + * This is a simple string that is optional with default value 685 + */ 686 + parameterString?: string; 687 + /** 688 + * This is a simple number that is optional with default value 689 + */ 690 + parameterNumber?: number; 691 + /** 692 + * This is a simple boolean that is optional with default value 693 + */ 694 + parameterBoolean?: boolean; 695 + /** 696 + * This is a simple enum that is optional with default value 697 + */ 698 + parameterEnum?: 'Success' | 'Warning' | 'Error'; 699 + }; 700 + url: '/api/v{api-version}/defaults'; 701 + }; 702 + 703 + export type CallToTestOrderOfParamsData = { 704 + body?: never; 705 + path?: never; 706 + query: { 707 + /** 708 + * This is a optional string with default 709 + */ 710 + parameterOptionalStringWithDefault?: string; 711 + /** 712 + * This is a optional string with empty default 713 + */ 714 + parameterOptionalStringWithEmptyDefault?: string; 715 + /** 716 + * This is a optional string with no default 717 + */ 718 + parameterOptionalStringWithNoDefault?: string; 719 + /** 720 + * This is a string with default 721 + */ 722 + parameterStringWithDefault: string; 723 + /** 724 + * This is a string with empty default 725 + */ 726 + parameterStringWithEmptyDefault: string; 727 + /** 728 + * This is a string with no default 729 + */ 730 + parameterStringWithNoDefault: string; 731 + /** 732 + * This is a string that can be null with no default 733 + */ 734 + parameterStringNullableWithNoDefault?: string | null; 735 + /** 736 + * This is a string that can be null with default 737 + */ 738 + parameterStringNullableWithDefault?: string | null; 739 + }; 740 + url: '/api/v{api-version}/defaults'; 741 + }; 742 + 743 + export type DuplicateNameData = { 744 + body?: never; 745 + path?: never; 746 + query?: never; 747 + url: '/api/v{api-version}/duplicate'; 748 + }; 749 + 750 + export type DuplicateName2Data = { 751 + body?: never; 752 + path?: never; 753 + query?: never; 754 + url: '/api/v{api-version}/duplicate'; 755 + }; 756 + 757 + export type DuplicateName3Data = { 758 + body?: never; 759 + path?: never; 760 + query?: never; 761 + url: '/api/v{api-version}/duplicate'; 762 + }; 763 + 764 + export type DuplicateName4Data = { 765 + body?: never; 766 + path?: never; 767 + query?: never; 768 + url: '/api/v{api-version}/duplicate'; 769 + }; 770 + 771 + export type CallWithNoContentResponseData = { 772 + body?: never; 773 + path?: never; 774 + query?: never; 775 + url: '/api/v{api-version}/no-content'; 776 + }; 777 + 778 + export type CallWithNoContentResponseResponses = { 779 + /** 780 + * Success 781 + */ 782 + 204: unknown; 783 + }; 784 + 785 + export type CallWithResponseAndNoContentResponseData = { 786 + body?: never; 787 + path?: never; 788 + query?: never; 789 + url: '/api/v{api-version}/multiple-tags/response-and-no-content'; 790 + }; 791 + 792 + export type CallWithResponseAndNoContentResponseResponses = { 793 + /** 794 + * Response is a simple number 795 + */ 796 + 200: number; 797 + /** 798 + * Success 799 + */ 800 + 204: unknown; 801 + }; 802 + 803 + export type CallWithResponseAndNoContentResponseResponse = CallWithResponseAndNoContentResponseResponses[keyof CallWithResponseAndNoContentResponseResponses]; 804 + 805 + export type DummyAData = { 806 + body?: never; 807 + path?: never; 808 + query?: never; 809 + url: '/api/v{api-version}/multiple-tags/a'; 810 + }; 811 + 812 + export type DummyAResponses = { 813 + /** 814 + * Success 815 + */ 816 + 204: unknown; 817 + }; 818 + 819 + export type DummyBData = { 820 + body?: never; 821 + path?: never; 822 + query?: never; 823 + url: '/api/v{api-version}/multiple-tags/b'; 824 + }; 825 + 826 + export type DummyBResponses = { 827 + /** 828 + * Success 829 + */ 830 + 204: unknown; 831 + }; 832 + 833 + export type CallWithResponseData = { 834 + body?: never; 835 + path?: never; 836 + query?: never; 837 + url: '/api/v{api-version}/response'; 838 + }; 839 + 840 + export type CallWithResponseResponses = { 841 + /** 842 + * Message for default response 843 + */ 844 + default: ModelWithString; 845 + }; 846 + 847 + export type CallWithResponseResponse = CallWithResponseResponses[keyof CallWithResponseResponses]; 848 + 849 + export type CallWithDuplicateResponsesData = { 850 + body?: never; 851 + path?: never; 852 + query?: never; 853 + url: '/api/v{api-version}/response'; 854 + }; 855 + 856 + export type CallWithDuplicateResponsesErrors = { 857 + /** 858 + * Message for 500 error 859 + */ 860 + 500: ModelWithStringError; 861 + /** 862 + * Message for 501 error 863 + */ 864 + 501: ModelWithStringError; 865 + /** 866 + * Message for 502 error 867 + */ 868 + 502: ModelWithStringError; 869 + /** 870 + * Message for default response 871 + */ 872 + default: ModelWithString; 873 + }; 874 + 875 + export type CallWithDuplicateResponsesError = CallWithDuplicateResponsesErrors[keyof CallWithDuplicateResponsesErrors]; 876 + 877 + export type CallWithDuplicateResponsesResponses = { 878 + /** 879 + * Message for 201 response 880 + */ 881 + 201: ModelWithString; 882 + /** 883 + * Message for 202 response 884 + */ 885 + 202: ModelWithString; 886 + }; 887 + 888 + export type CallWithDuplicateResponsesResponse = CallWithDuplicateResponsesResponses[keyof CallWithDuplicateResponsesResponses]; 889 + 890 + export type CallWithResponsesData = { 891 + body?: never; 892 + path?: never; 893 + query?: never; 894 + url: '/api/v{api-version}/response'; 895 + }; 896 + 897 + export type CallWithResponsesErrors = { 898 + /** 899 + * Message for 500 error 900 + */ 901 + 500: ModelWithStringError; 902 + /** 903 + * Message for 501 error 904 + */ 905 + 501: ModelWithStringError; 906 + /** 907 + * Message for 502 error 908 + */ 909 + 502: ModelWithStringError; 910 + /** 911 + * Message for default response 912 + */ 913 + default: ModelWithString; 914 + }; 915 + 916 + export type CallWithResponsesError = CallWithResponsesErrors[keyof CallWithResponsesErrors]; 917 + 918 + export type CallWithResponsesResponses = { 919 + /** 920 + * Message for 200 response 921 + */ 922 + 200: { 923 + readonly '@namespace.string'?: string; 924 + readonly '@namespace.integer'?: number; 925 + readonly value?: Array<ModelWithString>; 926 + }; 927 + /** 928 + * Message for 201 response 929 + */ 930 + 201: ModelThatExtends; 931 + /** 932 + * Message for 202 response 933 + */ 934 + 202: ModelThatExtendsExtends; 935 + }; 936 + 937 + export type CallWithResponsesResponse = CallWithResponsesResponses[keyof CallWithResponsesResponses]; 938 + 939 + export type CollectionFormatData = { 940 + body?: never; 941 + path?: never; 942 + query: { 943 + /** 944 + * This is an array parameter that is sent as csv format (comma-separated values) 945 + */ 946 + parameterArrayCSV: Array<string>; 947 + /** 948 + * This is an array parameter that is sent as ssv format (space-separated values) 949 + */ 950 + parameterArraySSV: Array<string>; 951 + /** 952 + * This is an array parameter that is sent as tsv format (tab-separated values) 953 + */ 954 + parameterArrayTSV: Array<string>; 955 + /** 956 + * This is an array parameter that is sent as pipes format (pipe-separated values) 957 + */ 958 + parameterArrayPipes: Array<string>; 959 + /** 960 + * This is an array parameter that is sent as multi format (multiple parameter instances) 961 + */ 962 + parameterArrayMulti: Array<string>; 963 + }; 964 + url: '/api/v{api-version}/collectionFormat'; 965 + }; 966 + 967 + export type TypesData = { 968 + body?: never; 969 + path?: { 970 + /** 971 + * This is a number parameter 972 + */ 973 + id?: number; 974 + }; 975 + query: { 976 + /** 977 + * This is a number parameter 978 + */ 979 + parameterNumber: number; 980 + /** 981 + * This is a string parameter 982 + */ 983 + parameterString: string; 984 + /** 985 + * This is a boolean parameter 986 + */ 987 + parameterBoolean: boolean; 988 + /** 989 + * This is an array parameter 990 + */ 991 + parameterArray: Array<string>; 992 + /** 993 + * This is a dictionary parameter 994 + */ 995 + parameterDictionary: { 996 + [key: string]: unknown; 997 + }; 998 + /** 999 + * This is an enum parameter 1000 + */ 1001 + parameterEnum: 'Success' | 'Warning' | 'Error'; 1002 + }; 1003 + url: '/api/v{api-version}/types'; 1004 + }; 1005 + 1006 + export type TypesResponses = { 1007 + /** 1008 + * Response is a simple number 1009 + */ 1010 + 200: number; 1011 + /** 1012 + * Response is a simple string 1013 + */ 1014 + 201: string; 1015 + /** 1016 + * Response is a simple boolean 1017 + */ 1018 + 202: boolean; 1019 + /** 1020 + * Response is a simple object 1021 + */ 1022 + 203: { 1023 + [key: string]: unknown; 1024 + }; 1025 + }; 1026 + 1027 + export type TypesResponse = TypesResponses[keyof TypesResponses]; 1028 + 1029 + export type ComplexTypesData = { 1030 + body?: never; 1031 + path?: never; 1032 + query: { 1033 + /** 1034 + * Parameter containing object 1035 + */ 1036 + parameterObject: { 1037 + first?: { 1038 + second?: { 1039 + third?: string; 1040 + }; 1041 + }; 1042 + }; 1043 + /** 1044 + * This is a model with one string property 1045 + */ 1046 + parameterReference: { 1047 + /** 1048 + * This is a simple string property 1049 + */ 1050 + prop?: string; 1051 + }; 1052 + }; 1053 + url: '/api/v{api-version}/complex'; 1054 + }; 1055 + 1056 + export type ComplexTypesErrors = { 1057 + /** 1058 + * 400 server error 1059 + */ 1060 + 400: unknown; 1061 + /** 1062 + * 500 server error 1063 + */ 1064 + 500: unknown; 1065 + }; 1066 + 1067 + export type ComplexTypesResponses = { 1068 + /** 1069 + * Successful response 1070 + */ 1071 + 200: Array<ModelWithString>; 1072 + }; 1073 + 1074 + export type ComplexTypesResponse = ComplexTypesResponses[keyof ComplexTypesResponses]; 1075 + 1076 + export type CallWithResultFromHeaderData = { 1077 + body?: never; 1078 + path?: never; 1079 + query?: never; 1080 + url: '/api/v{api-version}/header'; 1081 + }; 1082 + 1083 + export type CallWithResultFromHeaderErrors = { 1084 + /** 1085 + * 400 server error 1086 + */ 1087 + 400: unknown; 1088 + /** 1089 + * 500 server error 1090 + */ 1091 + 500: unknown; 1092 + }; 1093 + 1094 + export type CallWithResultFromHeaderResponses = { 1095 + /** 1096 + * Successful response 1097 + */ 1098 + 200: unknown; 1099 + }; 1100 + 1101 + export type TestErrorCodeData = { 1102 + body?: never; 1103 + path?: never; 1104 + query: { 1105 + /** 1106 + * Status code to return 1107 + */ 1108 + status: string; 1109 + }; 1110 + url: '/api/v{api-version}/error'; 1111 + }; 1112 + 1113 + export type TestErrorCodeErrors = { 1114 + /** 1115 + * Custom message: Internal Server Error 1116 + */ 1117 + 500: unknown; 1118 + /** 1119 + * Custom message: Not Implemented 1120 + */ 1121 + 501: unknown; 1122 + /** 1123 + * Custom message: Bad Gateway 1124 + */ 1125 + 502: unknown; 1126 + /** 1127 + * Custom message: Service Unavailable 1128 + */ 1129 + 503: unknown; 1130 + }; 1131 + 1132 + export type TestErrorCodeResponses = { 1133 + /** 1134 + * Custom message: Successful response 1135 + */ 1136 + 200: unknown; 1137 + }; 1138 + 1139 + export type NonAsciiæøåÆøÅöôêÊ字符串Data = { 1140 + body?: never; 1141 + path?: never; 1142 + query: { 1143 + /** 1144 + * Dummy input param 1145 + */ 1146 + nonAsciiParamæøåÆØÅöôêÊ: number; 1147 + }; 1148 + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; 1149 + }; 1150 + 1151 + export type NonAsciiæøåÆøÅöôêÊ字符串Responses = { 1152 + /** 1153 + * Successful response 1154 + */ 1155 + 200: NonAsciiStringæøåÆøÅöôêÊ字符串; 1156 + }; 1157 + 1158 + export type NonAsciiæøåÆøÅöôêÊ字符串Response = NonAsciiæøåÆøÅöôêÊ字符串Responses[keyof NonAsciiæøåÆøÅöôêÊ字符串Responses]; 1159 + 1160 + export type PostApiVbyApiVersionBodyData = { 1161 + /** 1162 + * Body should not be unknown 1163 + */ 1164 + body: ParameterActivityParams; 1165 + path?: never; 1166 + query?: never; 1167 + url: '/api/v{api-version}/body'; 1168 + }; 1169 + 1170 + export type PostApiVbyApiVersionBodyErrors = { 1171 + /** 1172 + * Bad Request 1173 + */ 1174 + 400: FailureFailure; 1175 + /** 1176 + * Internal Server Error 1177 + */ 1178 + 500: FailureFailure; 1179 + }; 1180 + 1181 + export type PostApiVbyApiVersionBodyError = PostApiVbyApiVersionBodyErrors[keyof PostApiVbyApiVersionBodyErrors]; 1182 + 1183 + export type PostApiVbyApiVersionBodyResponses = { 1184 + /** 1185 + * OK 1186 + */ 1187 + 200: ResponsePostActivityResponse; 1188 + }; 1189 + 1190 + export type PostApiVbyApiVersionBodyResponse = PostApiVbyApiVersionBodyResponses[keyof PostApiVbyApiVersionBodyResponses];
+3
packages/openapi-ts-tests/nestjs/v11/__snapshots__/3.0.x/default/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAdditionalPropertiesRef, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen';
+114
packages/openapi-ts-tests/nestjs/v11/__snapshots__/3.0.x/default/nestjs.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { ApiVVersionODataControllerCountResponse, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesResponse, CallWithNoContentResponseResponse, CallWithParametersData, CallWithResponseAndNoContentResponseResponse, CallWithResponseResponse, CallWithResponsesResponse, CallWithWeirdParameterNamesData, CollectionFormatData, ComplexParamsData, ComplexParamsResponse, ComplexTypesData, ComplexTypesResponse, DeleteFooData3, DeprecatedCallData, DummyAResponse, DummyBResponse, FileResponseData, FileResponseResponse, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationResponse, GetCallWithOptionalParamData, ImportData, ImportResponse, MultipartRequestData, MultipartResponseResponse, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PutWithFormUrlEncodedData, TestErrorCodeData, TypesData, TypesResponse, UploadFileData, UploadFileResponse } from './types.gen'; 4 + 5 + export type DefaultControllerMethods = { 6 + export: () => Promise<void>; 7 + patchApiVbyApiVersionNoTag: () => Promise<void>; 8 + import: (body: ImportData['body']) => Promise<ImportResponse>; 9 + fooWow: () => Promise<void>; 10 + getApiVbyApiVersionSimpleOperation: (path: GetApiVbyApiVersionSimpleOperationData['path']) => Promise<GetApiVbyApiVersionSimpleOperationResponse>; 11 + }; 12 + 13 + export type SimpleControllerMethods = { 14 + apiVVersionODataControllerCount: () => Promise<ApiVVersionODataControllerCountResponse>; 15 + deleteCallWithoutParametersAndResponse: () => Promise<void>; 16 + getCallWithoutParametersAndResponse: () => Promise<void>; 17 + headCallWithoutParametersAndResponse: () => Promise<void>; 18 + optionsCallWithoutParametersAndResponse: () => Promise<void>; 19 + patchCallWithoutParametersAndResponse: () => Promise<void>; 20 + postCallWithoutParametersAndResponse: () => Promise<void>; 21 + putCallWithoutParametersAndResponse: () => Promise<void>; 22 + }; 23 + 24 + export type ParametersControllerMethods = { 25 + deleteFoo: (path: DeleteFooData3['path'], headers: DeleteFooData3['headers']) => Promise<void>; 26 + callWithParameters: (path: CallWithParametersData['path'], query: CallWithParametersData['query'], body: CallWithParametersData['body'], headers: CallWithParametersData['headers']) => Promise<void>; 27 + callWithWeirdParameterNames: (path: CallWithWeirdParameterNamesData['path'], query: CallWithWeirdParameterNamesData['query'], body: CallWithWeirdParameterNamesData['body'], headers: CallWithWeirdParameterNamesData['headers']) => Promise<void>; 28 + getCallWithOptionalParam: (body: GetCallWithOptionalParamData['body'], query?: GetCallWithOptionalParamData['query']) => Promise<void>; 29 + postCallWithOptionalParam: (query: PostCallWithOptionalParamData['query'], body?: PostCallWithOptionalParamData['body']) => Promise<PostCallWithOptionalParamResponse>; 30 + }; 31 + 32 + export type DescriptionsControllerMethods = { 33 + callWithDescriptions: (query?: CallWithDescriptionsData['query']) => Promise<void>; 34 + }; 35 + 36 + export type DeprecatedControllerMethods = { 37 + deprecatedCall: (headers: DeprecatedCallData['headers']) => Promise<void>; 38 + }; 39 + 40 + export type RequestBodyControllerMethods = { 41 + postApiVbyApiVersionRequestBody: (query?: PostApiVbyApiVersionRequestBodyData['query'], body?: PostApiVbyApiVersionRequestBodyData['body']) => Promise<void>; 42 + }; 43 + 44 + export type FormDataControllerMethods = { 45 + postApiVbyApiVersionFormData: (query?: PostApiVbyApiVersionFormDataData['query'], body?: PostApiVbyApiVersionFormDataData['body']) => Promise<void>; 46 + }; 47 + 48 + export type DefaultsControllerMethods = { 49 + callWithDefaultParameters: (query?: CallWithDefaultParametersData['query']) => Promise<void>; 50 + callWithDefaultOptionalParameters: (query?: CallWithDefaultOptionalParametersData['query']) => Promise<void>; 51 + callToTestOrderOfParams: (query: CallToTestOrderOfParamsData['query']) => Promise<void>; 52 + }; 53 + 54 + export type DuplicateControllerMethods = { 55 + duplicateName: () => Promise<void>; 56 + duplicateName2: () => Promise<void>; 57 + duplicateName3: () => Promise<void>; 58 + duplicateName4: () => Promise<void>; 59 + }; 60 + 61 + export type NoContentControllerMethods = { 62 + callWithNoContentResponse: () => Promise<CallWithNoContentResponseResponse>; 63 + }; 64 + 65 + export type ResponseControllerMethods = { 66 + callWithResponseAndNoContentResponse: () => Promise<CallWithResponseAndNoContentResponseResponse>; 67 + callWithResponse: () => Promise<CallWithResponseResponse>; 68 + callWithDuplicateResponses: () => Promise<CallWithDuplicateResponsesResponse>; 69 + callWithResponses: () => Promise<CallWithResponsesResponse>; 70 + }; 71 + 72 + export type MultipleTags1ControllerMethods = { 73 + dummyA: () => Promise<DummyAResponse>; 74 + dummyB: () => Promise<DummyBResponse>; 75 + }; 76 + 77 + export type CollectionFormatControllerMethods = { 78 + collectionFormat: (query: CollectionFormatData['query']) => Promise<void>; 79 + }; 80 + 81 + export type TypesControllerMethods = { 82 + types: (query: TypesData['query'], path?: TypesData['path']) => Promise<TypesResponse>; 83 + }; 84 + 85 + export type UploadControllerMethods = { 86 + uploadFile: (path: UploadFileData['path'], body: UploadFileData['body']) => Promise<UploadFileResponse>; 87 + }; 88 + 89 + export type FileResponseControllerMethods = { 90 + fileResponse: (path: FileResponseData['path']) => Promise<FileResponseResponse>; 91 + }; 92 + 93 + export type ComplexControllerMethods = { 94 + complexTypes: (query: ComplexTypesData['query']) => Promise<ComplexTypesResponse>; 95 + complexParams: (path: ComplexParamsData['path'], body?: ComplexParamsData['body']) => Promise<ComplexParamsResponse>; 96 + }; 97 + 98 + export type MultipartControllerMethods = { 99 + multipartResponse: () => Promise<MultipartResponseResponse>; 100 + multipartRequest: (body?: MultipartRequestData['body']) => Promise<void>; 101 + }; 102 + 103 + export type HeaderControllerMethods = { 104 + callWithResultFromHeader: () => Promise<void>; 105 + }; 106 + 107 + export type ErrorControllerMethods = { 108 + testErrorCode: (query: TestErrorCodeData['query']) => Promise<void>; 109 + }; 110 + 111 + export type NonAsciiÆøåÆøÅöôêÊControllerMethods = { 112 + nonAsciiæøåÆøÅöôêÊ字符串: (query: NonAsciiæøåÆøÅöôêÊ字符串Data['query']) => Promise<NonAsciiæøåÆøÅöôêÊ字符串Response>; 113 + putWithFormUrlEncoded: (body: PutWithFormUrlEncodedData['body']) => Promise<void>; 114 + };
+2081
packages/openapi-ts-tests/nestjs/v11/__snapshots__/3.0.x/default/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type ClientOptions = { 4 + baseUrl: 'http://localhost:3000/base' | (string & {}); 5 + }; 6 + 7 + /** 8 + * Model with number-only name 9 + */ 10 + export type _400 = string; 11 + 12 + export type ExternalRefA = ExternalSharedModel; 13 + 14 + export type ExternalRefB = ExternalSharedModel; 15 + 16 + /** 17 + * Testing multiline comments in string: First line 18 + * Second line 19 + * 20 + * Fourth line 21 + */ 22 + export type CamelCaseCommentWithBreaks = number; 23 + 24 + /** 25 + * Testing multiline comments in string: First line 26 + * Second line 27 + * 28 + * Fourth line 29 + */ 30 + export type CommentWithBreaks = number; 31 + 32 + /** 33 + * Testing backticks in string: `backticks` and ```multiple backticks``` should work 34 + */ 35 + export type CommentWithBackticks = number; 36 + 37 + /** 38 + * Testing backticks and quotes in string: `backticks`, 'quotes', "double quotes" and ```multiple backticks``` should work 39 + */ 40 + export type CommentWithBackticksAndQuotes = number; 41 + 42 + /** 43 + * Testing slashes in string: \backwards\\\ and /forwards/// should work 44 + */ 45 + export type CommentWithSlashes = number; 46 + 47 + /** 48 + * Testing expression placeholders in string: ${expression} should work 49 + */ 50 + export type CommentWithExpressionPlaceholders = number; 51 + 52 + /** 53 + * Testing quotes in string: 'single quote''' and "double quotes""" should work 54 + */ 55 + export type CommentWithQuotes = number; 56 + 57 + /** 58 + * Testing reserved characters in string: * inline * and ** inline ** should work 59 + */ 60 + export type CommentWithReservedCharacters = number; 61 + 62 + /** 63 + * This is a simple number 64 + */ 65 + export type SimpleInteger = number; 66 + 67 + /** 68 + * This is a simple boolean 69 + */ 70 + export type SimpleBoolean = boolean; 71 + 72 + /** 73 + * This is a simple string 74 + */ 75 + export type SimpleString = string; 76 + 77 + /** 78 + * A string with non-ascii (unicode) characters valid in typescript identifiers (æøåÆØÅöÔèÈ字符串) 79 + */ 80 + export type NonAsciiStringæøåÆøÅöôêÊ字符串 = string; 81 + 82 + /** 83 + * This is a simple file 84 + */ 85 + export type SimpleFile = Blob | File; 86 + 87 + /** 88 + * This is a simple reference 89 + */ 90 + export type SimpleReference = ModelWithString; 91 + 92 + /** 93 + * This is a simple string 94 + */ 95 + export type SimpleStringWithPattern = string | null; 96 + 97 + /** 98 + * This is a simple enum with strings 99 + */ 100 + export type EnumWithStrings = 'Success' | 'Warning' | 'Error' | '\'Single Quote\'' | '"Double Quotes"' | 'Non-ascii: øæåôöØÆÅÔÖ字符串'; 101 + 102 + export type EnumWithReplacedCharacters = '\'Single Quote\'' | '"Double Quotes"' | 'øæåôöØÆÅÔÖ字符串' | 3.1 | ''; 103 + 104 + /** 105 + * This is a simple enum with numbers 106 + */ 107 + export type EnumWithNumbers = 1 | 2 | 3 | 1.1 | 1.2 | 1.3 | 100 | 200 | 300 | -100 | -200 | -300 | -1.1 | -1.2 | -1.3; 108 + 109 + /** 110 + * Success=1,Warning=2,Error=3 111 + */ 112 + export type EnumFromDescription = number; 113 + 114 + /** 115 + * This is a simple enum with numbers 116 + */ 117 + export type EnumWithExtensions = 200 | 400 | 500; 118 + 119 + export type EnumWithXEnumNames = 0 | 1 | 2; 120 + 121 + /** 122 + * This is a simple array with numbers 123 + */ 124 + export type ArrayWithNumbers = Array<number>; 125 + 126 + /** 127 + * This is a simple array with booleans 128 + */ 129 + export type ArrayWithBooleans = Array<boolean>; 130 + 131 + /** 132 + * This is a simple array with strings 133 + */ 134 + export type ArrayWithStrings = Array<string>; 135 + 136 + /** 137 + * This is a simple array with references 138 + */ 139 + export type ArrayWithReferences = Array<ModelWithString>; 140 + 141 + /** 142 + * This is a simple array containing an array 143 + */ 144 + export type ArrayWithArray = Array<Array<ModelWithString>>; 145 + 146 + /** 147 + * This is a simple array with properties 148 + */ 149 + export type ArrayWithProperties = Array<{ 150 + '16x16'?: CamelCaseCommentWithBreaks; 151 + bar?: string; 152 + }>; 153 + 154 + /** 155 + * This is a simple array with any of properties 156 + */ 157 + export type ArrayWithAnyOfProperties = Array<{ 158 + foo?: string; 159 + } | { 160 + bar?: string; 161 + }>; 162 + 163 + export type AnyOfAnyAndNull = { 164 + data?: unknown; 165 + }; 166 + 167 + /** 168 + * This is a simple array with any of properties 169 + */ 170 + export type AnyOfArrays = { 171 + results?: Array<{ 172 + foo?: string; 173 + } | { 174 + bar?: string; 175 + }>; 176 + }; 177 + 178 + /** 179 + * This is a string dictionary 180 + */ 181 + export type DictionaryWithString = { 182 + [key: string]: string; 183 + }; 184 + 185 + export type DictionaryWithPropertiesAndAdditionalProperties = { 186 + foo?: number; 187 + bar?: boolean; 188 + [key: string]: string | number | boolean | undefined; 189 + }; 190 + 191 + /** 192 + * This is a string reference 193 + */ 194 + export type DictionaryWithReference = { 195 + [key: string]: ModelWithString; 196 + }; 197 + 198 + /** 199 + * This is a complex dictionary 200 + */ 201 + export type DictionaryWithArray = { 202 + [key: string]: Array<ModelWithString>; 203 + }; 204 + 205 + /** 206 + * This is a string dictionary 207 + */ 208 + export type DictionaryWithDictionary = { 209 + [key: string]: { 210 + [key: string]: string; 211 + }; 212 + }; 213 + 214 + /** 215 + * This is a complex dictionary 216 + */ 217 + export type DictionaryWithProperties = { 218 + [key: string]: { 219 + foo?: string; 220 + bar?: string; 221 + }; 222 + }; 223 + 224 + /** 225 + * This is a model with one number property 226 + */ 227 + export type ModelWithInteger = { 228 + /** 229 + * This is a simple number property 230 + */ 231 + prop?: number; 232 + }; 233 + 234 + /** 235 + * This is a model with one boolean property 236 + */ 237 + export type ModelWithBoolean = { 238 + /** 239 + * This is a simple boolean property 240 + */ 241 + prop?: boolean; 242 + }; 243 + 244 + /** 245 + * This is a model with one string property 246 + */ 247 + export type ModelWithString = { 248 + /** 249 + * This is a simple string property 250 + */ 251 + prop?: string; 252 + }; 253 + 254 + /** 255 + * This is a model with one string property 256 + */ 257 + export type ModelWithStringError = { 258 + /** 259 + * This is a simple string property 260 + */ 261 + prop?: string; 262 + }; 263 + 264 + /** 265 + * `Comment` or `VoiceComment`. The JSON object for adding voice comments to tickets is different. See [Adding voice comments to tickets](/documentation/ticketing/managing-tickets/adding-voice-comments-to-tickets) 266 + */ 267 + export type ModelFromZendesk = string; 268 + 269 + /** 270 + * This is a model with one string property 271 + */ 272 + export type ModelWithNullableString = { 273 + /** 274 + * This is a simple string property 275 + */ 276 + nullableProp1?: string | null; 277 + /** 278 + * This is a simple string property 279 + */ 280 + nullableRequiredProp1: string | null; 281 + /** 282 + * This is a simple string property 283 + */ 284 + nullableProp2?: string | null; 285 + /** 286 + * This is a simple string property 287 + */ 288 + nullableRequiredProp2: string | null; 289 + /** 290 + * This is a simple enum with strings 291 + */ 292 + 'foo_bar-enum'?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 293 + }; 294 + 295 + /** 296 + * This is a model with one enum 297 + */ 298 + export type ModelWithEnum = { 299 + /** 300 + * This is a simple enum with strings 301 + */ 302 + 'foo_bar-enum'?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 303 + /** 304 + * These are the HTTP error code enums 305 + */ 306 + statusCode?: '100' | '200 FOO' | '300 FOO_BAR' | '400 foo-bar' | '500 foo.bar' | '600 foo&bar'; 307 + /** 308 + * Simple boolean enum 309 + */ 310 + bool?: true; 311 + }; 312 + 313 + /** 314 + * This is a model with one enum with escaped name 315 + */ 316 + export type ModelWithEnumWithHyphen = { 317 + /** 318 + * Foo-Bar-Baz-Qux 319 + */ 320 + 'foo-bar-baz-qux'?: '3.0'; 321 + }; 322 + 323 + /** 324 + * This is a model with one enum 325 + */ 326 + export type ModelWithEnumFromDescription = { 327 + /** 328 + * Success=1,Warning=2,Error=3 329 + */ 330 + test?: number; 331 + }; 332 + 333 + /** 334 + * This is a model with nested enums 335 + */ 336 + export type ModelWithNestedEnums = { 337 + dictionaryWithEnum?: { 338 + [key: string]: 'Success' | 'Warning' | 'Error'; 339 + }; 340 + dictionaryWithEnumFromDescription?: { 341 + [key: string]: number; 342 + }; 343 + arrayWithEnum?: Array<'Success' | 'Warning' | 'Error'>; 344 + arrayWithDescription?: Array<number>; 345 + /** 346 + * This is a simple enum with strings 347 + */ 348 + 'foo_bar-enum'?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 349 + }; 350 + 351 + /** 352 + * This is a model with one property containing a reference 353 + */ 354 + export type ModelWithReference = { 355 + prop?: ModelWithProperties; 356 + }; 357 + 358 + /** 359 + * This is a model with one property containing an array 360 + */ 361 + export type ModelWithArrayReadOnlyAndWriteOnly = { 362 + prop?: Array<ModelWithReadOnlyAndWriteOnly>; 363 + propWithFile?: Array<Blob | File>; 364 + propWithNumber?: Array<number>; 365 + }; 366 + 367 + /** 368 + * This is a model with one property containing an array 369 + */ 370 + export type ModelWithArray = { 371 + prop?: Array<ModelWithString>; 372 + propWithFile?: Array<Blob | File>; 373 + propWithNumber?: Array<number>; 374 + }; 375 + 376 + /** 377 + * This is a model with one property containing a dictionary 378 + */ 379 + export type ModelWithDictionary = { 380 + prop?: { 381 + [key: string]: string; 382 + }; 383 + }; 384 + 385 + /** 386 + * This is a deprecated model with a deprecated property 387 + * 388 + * @deprecated 389 + */ 390 + export type DeprecatedModel = { 391 + /** 392 + * This is a deprecated property 393 + * 394 + * @deprecated 395 + */ 396 + prop?: string; 397 + }; 398 + 399 + /** 400 + * This is a model with one property containing a circular reference 401 + */ 402 + export type ModelWithCircularReference = { 403 + prop?: ModelWithCircularReference; 404 + }; 405 + 406 + /** 407 + * This is a model with one property with a 'one of' relationship 408 + */ 409 + export type CompositionWithOneOf = { 410 + propA?: ModelWithString | ModelWithEnum | ModelWithArray | ModelWithDictionary; 411 + }; 412 + 413 + /** 414 + * This is a model with one property with a 'one of' relationship where the options are not $ref 415 + */ 416 + export type CompositionWithOneOfAnonymous = { 417 + propA?: { 418 + propA?: string; 419 + } | string | number; 420 + }; 421 + 422 + /** 423 + * Circle 424 + */ 425 + export type ModelCircle = { 426 + kind: string; 427 + radius?: number; 428 + }; 429 + 430 + /** 431 + * Square 432 + */ 433 + export type ModelSquare = { 434 + kind: string; 435 + sideLength?: number; 436 + }; 437 + 438 + /** 439 + * This is a model with one property with a 'one of' relationship where the options are not $ref 440 + */ 441 + export type CompositionWithOneOfDiscriminator = ({ 442 + kind: 'circle'; 443 + } & ModelCircle) | ({ 444 + kind: 'square'; 445 + } & ModelSquare); 446 + 447 + /** 448 + * This is a model with one property with a 'any of' relationship 449 + */ 450 + export type CompositionWithAnyOf = { 451 + propA?: ModelWithString | ModelWithEnum | ModelWithArray | ModelWithDictionary; 452 + }; 453 + 454 + /** 455 + * This is a model with one property with a 'any of' relationship where the options are not $ref 456 + */ 457 + export type CompositionWithAnyOfAnonymous = { 458 + propA?: { 459 + propA?: string; 460 + } | string | number; 461 + }; 462 + 463 + /** 464 + * This is a model with nested 'any of' property with a type null 465 + */ 466 + export type CompositionWithNestedAnyAndTypeNull = { 467 + propA?: Array<ModelWithDictionary | null> | Array<ModelWithArray | null>; 468 + }; 469 + 470 + export type _3eNum1Период = 'Bird' | 'Dog'; 471 + 472 + export type ConstValue = 'ConstValue'; 473 + 474 + /** 475 + * This is a model with one property with a 'any of' relationship where the options are not $ref 476 + */ 477 + export type CompositionWithNestedAnyOfAndNull = { 478 + propA?: Array<_3eNum1Период | ConstValue> | null; 479 + }; 480 + 481 + /** 482 + * This is a model with one property with a 'one of' relationship 483 + */ 484 + export type CompositionWithOneOfAndNullable = { 485 + propA?: { 486 + boolean?: boolean; 487 + } | ModelWithEnum | ModelWithArray | ModelWithDictionary | null; 488 + }; 489 + 490 + /** 491 + * This is a model that contains a simple dictionary within composition 492 + */ 493 + export type CompositionWithOneOfAndSimpleDictionary = { 494 + propA?: boolean | { 495 + [key: string]: number; 496 + }; 497 + }; 498 + 499 + /** 500 + * This is a model that contains a dictionary of simple arrays within composition 501 + */ 502 + export type CompositionWithOneOfAndSimpleArrayDictionary = { 503 + propA?: boolean | { 504 + [key: string]: Array<boolean>; 505 + }; 506 + }; 507 + 508 + /** 509 + * This is a model that contains a dictionary of complex arrays (composited) within composition 510 + */ 511 + export type CompositionWithOneOfAndComplexArrayDictionary = { 512 + propA?: boolean | { 513 + [key: string]: Array<number | string>; 514 + }; 515 + }; 516 + 517 + /** 518 + * This is a model with one property with a 'all of' relationship 519 + */ 520 + export type CompositionWithAllOfAndNullable = { 521 + propA?: ({ 522 + boolean?: boolean; 523 + } & ModelWithEnum & ModelWithArray & ModelWithDictionary) | null; 524 + }; 525 + 526 + /** 527 + * This is a model with one property with a 'any of' relationship 528 + */ 529 + export type CompositionWithAnyOfAndNullable = { 530 + propA?: { 531 + boolean?: boolean; 532 + } | ModelWithEnum | ModelWithArray | ModelWithDictionary | null; 533 + }; 534 + 535 + /** 536 + * This is a base model with two simple optional properties 537 + */ 538 + export type CompositionBaseModel = { 539 + firstName?: string; 540 + lastname?: string; 541 + }; 542 + 543 + /** 544 + * This is a model that extends the base model 545 + */ 546 + export type CompositionExtendedModel = CompositionBaseModel & { 547 + age: number; 548 + firstName: string; 549 + lastname: string; 550 + }; 551 + 552 + /** 553 + * This is a model with one nested property 554 + */ 555 + export type ModelWithProperties = { 556 + required: string; 557 + readonly requiredAndReadOnly: string; 558 + requiredAndNullable: string | null; 559 + string?: string; 560 + number?: number; 561 + boolean?: boolean; 562 + reference?: ModelWithString; 563 + 'property with space'?: string; 564 + default?: string; 565 + try?: string; 566 + readonly '@namespace.string'?: string; 567 + readonly '@namespace.integer'?: number; 568 + }; 569 + 570 + /** 571 + * This is a model with one nested property 572 + */ 573 + export type ModelWithNestedProperties = { 574 + readonly first: { 575 + readonly second: { 576 + readonly third: string | null; 577 + } | null; 578 + } | null; 579 + }; 580 + 581 + /** 582 + * This is a model with duplicated properties 583 + */ 584 + export type ModelWithDuplicateProperties = { 585 + prop?: ModelWithString; 586 + }; 587 + 588 + /** 589 + * This is a model with ordered properties 590 + */ 591 + export type ModelWithOrderedProperties = { 592 + zebra?: string; 593 + apple?: string; 594 + hawaii?: string; 595 + }; 596 + 597 + /** 598 + * This is a model with duplicated imports 599 + */ 600 + export type ModelWithDuplicateImports = { 601 + propA?: ModelWithString; 602 + propB?: ModelWithString; 603 + propC?: ModelWithString; 604 + }; 605 + 606 + /** 607 + * This is a model that extends another model 608 + */ 609 + export type ModelThatExtends = ModelWithString & { 610 + propExtendsA?: string; 611 + propExtendsB?: ModelWithString; 612 + }; 613 + 614 + /** 615 + * This is a model that extends another model 616 + */ 617 + export type ModelThatExtendsExtends = ModelWithString & ModelThatExtends & { 618 + propExtendsC?: string; 619 + propExtendsD?: ModelWithString; 620 + }; 621 + 622 + /** 623 + * This is a model that contains a some patterns 624 + */ 625 + export type ModelWithPattern = { 626 + key: string; 627 + name: string; 628 + readonly enabled?: boolean; 629 + readonly modified?: string; 630 + id?: string; 631 + text?: string; 632 + patternWithSingleQuotes?: string; 633 + patternWithNewline?: string; 634 + patternWithBacktick?: string; 635 + patternWithUnicode?: string; 636 + }; 637 + 638 + export type File = { 639 + /** 640 + * Id 641 + */ 642 + readonly id?: string; 643 + /** 644 + * Updated at 645 + */ 646 + readonly updated_at?: string; 647 + /** 648 + * Created at 649 + */ 650 + readonly created_at?: string; 651 + /** 652 + * Mime 653 + */ 654 + mime: string; 655 + /** 656 + * File 657 + */ 658 + readonly file?: string; 659 + }; 660 + 661 + export type Default = { 662 + name?: string; 663 + }; 664 + 665 + export type Pageable = { 666 + page?: number; 667 + size?: number; 668 + sort?: Array<string>; 669 + }; 670 + 671 + /** 672 + * This is a free-form object without additionalProperties. 673 + */ 674 + export type FreeFormObjectWithoutAdditionalProperties = { 675 + [key: string]: unknown; 676 + }; 677 + 678 + /** 679 + * This is a free-form object with additionalProperties: true. 680 + */ 681 + export type FreeFormObjectWithAdditionalPropertiesEqTrue = { 682 + [key: string]: unknown; 683 + }; 684 + 685 + /** 686 + * This is a free-form object with additionalProperties: {}. 687 + */ 688 + export type FreeFormObjectWithAdditionalPropertiesEqEmptyObject = { 689 + [key: string]: unknown; 690 + }; 691 + 692 + export type ModelWithConst = { 693 + String?: 'String'; 694 + number?: 0; 695 + null?: unknown; 696 + withType?: 'Some string'; 697 + }; 698 + 699 + /** 700 + * This is a model with one property and additionalProperties: true 701 + */ 702 + export type ModelWithAdditionalPropertiesEqTrue = { 703 + /** 704 + * This is a simple string property 705 + */ 706 + prop?: string; 707 + [key: string]: unknown; 708 + }; 709 + 710 + export type NestedAnyOfArraysNullable = { 711 + nullableArray?: Array<string | boolean> | null; 712 + }; 713 + 714 + export type CompositionWithOneOfAndProperties = ({ 715 + foo: SimpleParameter; 716 + } | { 717 + bar: NonAsciiStringæøåÆøÅöôêÊ字符串; 718 + }) & { 719 + baz: number | null; 720 + qux: number; 721 + }; 722 + 723 + /** 724 + * An object that can be null 725 + */ 726 + export type NullableObject = { 727 + foo?: string; 728 + } | null; 729 + 730 + /** 731 + * Some % character 732 + */ 733 + export type CharactersInDescription = string; 734 + 735 + export type ModelWithNullableObject = { 736 + data?: NullableObject; 737 + }; 738 + 739 + /** 740 + * An object with additional properties that can be null 741 + */ 742 + export type ModelWithAdditionalPropertiesRef = { 743 + [key: string]: NullableObject | null; 744 + }; 745 + 746 + export type ModelWithOneOfEnum = { 747 + foo: 'Bar'; 748 + } | { 749 + foo: 'Baz'; 750 + } | { 751 + foo: 'Qux'; 752 + } | { 753 + content: string; 754 + foo: 'Quux'; 755 + } | { 756 + content: [ 757 + string, 758 + string 759 + ]; 760 + foo: 'Corge'; 761 + }; 762 + 763 + export type ModelWithNestedArrayEnumsDataFoo = 'foo' | 'bar'; 764 + 765 + export type ModelWithNestedArrayEnumsDataBar = 'baz' | 'qux'; 766 + 767 + export type ModelWithNestedArrayEnumsData = { 768 + foo?: Array<ModelWithNestedArrayEnumsDataFoo>; 769 + bar?: Array<ModelWithNestedArrayEnumsDataBar>; 770 + }; 771 + 772 + export type ModelWithNestedArrayEnums = { 773 + array_strings?: Array<string>; 774 + data?: ModelWithNestedArrayEnumsData; 775 + }; 776 + 777 + export type ModelWithNestedCompositionEnums = { 778 + foo?: ModelWithNestedArrayEnumsDataFoo; 779 + }; 780 + 781 + export type ModelWithReadOnlyAndWriteOnly = { 782 + foo: string; 783 + readonly bar: string; 784 + }; 785 + 786 + export type ModelWithConstantSizeArray = [ 787 + number, 788 + number 789 + ]; 790 + 791 + export type ModelWithAnyOfConstantSizeArray = [ 792 + number | string, 793 + number | string, 794 + number | string 795 + ]; 796 + 797 + export type ModelWithPrefixItemsConstantSizeArray = Array<ModelWithInteger | number | string>; 798 + 799 + export type ModelWithAnyOfConstantSizeArrayNullable = [ 800 + number | null | string, 801 + number | null | string, 802 + number | null | string 803 + ]; 804 + 805 + export type ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions = [ 806 + number | Import, 807 + number | Import 808 + ]; 809 + 810 + export type ModelWithAnyOfConstantSizeArrayAndIntersect = [ 811 + number & string, 812 + number & string 813 + ]; 814 + 815 + export type ModelWithNumericEnumUnion = { 816 + /** 817 + * Период 818 + */ 819 + value?: -10 | -1 | 0 | 1 | 3 | 6 | 12; 820 + }; 821 + 822 + /** 823 + * Some description with `back ticks` 824 + */ 825 + export type ModelWithBackticksInDescription = { 826 + /** 827 + * The template `that` should be used for parsing and importing the contents of the CSV file. 828 + * 829 + * <br/><p>There is one placeholder currently supported:<ul> <li><b>${x}</b> - refers to the n-th column in the CSV file, e.g. ${1}, ${2}, ...)</li></ul><p>Example of a correct JSON template:</p> 830 + * <pre> 831 + * [ 832 + * { 833 + * "resourceType": "Asset", 834 + * "identifier": { 835 + * "name": "${1}", 836 + * "domain": { 837 + * "name": "${2}", 838 + * "community": { 839 + * "name": "Some Community" 840 + * } 841 + * } 842 + * }, 843 + * "attributes" : { 844 + * "00000000-0000-0000-0000-000000003115" : [ { 845 + * "value" : "${3}" 846 + * } ], 847 + * "00000000-0000-0000-0000-000000000222" : [ { 848 + * "value" : "${4}" 849 + * } ] 850 + * } 851 + * } 852 + * ] 853 + * </pre> 854 + */ 855 + template?: string; 856 + }; 857 + 858 + export type ModelWithOneOfAndProperties = (SimpleParameter | NonAsciiStringæøåÆøÅöôêÊ字符串) & { 859 + baz: number | null; 860 + qux: number; 861 + }; 862 + 863 + /** 864 + * Model used to test deduplication strategy (unused) 865 + */ 866 + export type ParameterSimpleParameterUnused = string; 867 + 868 + /** 869 + * Model used to test deduplication strategy 870 + */ 871 + export type PostServiceWithEmptyTagResponse = string; 872 + 873 + /** 874 + * Model used to test deduplication strategy 875 + */ 876 + export type PostServiceWithEmptyTagResponse2 = string; 877 + 878 + /** 879 + * Model used to test deduplication strategy 880 + */ 881 + export type DeleteFooData = string; 882 + 883 + /** 884 + * Model used to test deduplication strategy 885 + */ 886 + export type DeleteFooData2 = string; 887 + 888 + /** 889 + * Model with restricted keyword name 890 + */ 891 + export type Import = string; 892 + 893 + export type SchemaWithFormRestrictedKeys = { 894 + description?: string; 895 + 'x-enum-descriptions'?: string; 896 + 'x-enum-varnames'?: string; 897 + 'x-enumNames'?: string; 898 + title?: string; 899 + object?: { 900 + description?: string; 901 + 'x-enum-descriptions'?: string; 902 + 'x-enum-varnames'?: string; 903 + 'x-enumNames'?: string; 904 + title?: string; 905 + }; 906 + array?: Array<{ 907 + description?: string; 908 + 'x-enum-descriptions'?: string; 909 + 'x-enum-varnames'?: string; 910 + 'x-enumNames'?: string; 911 + title?: string; 912 + }>; 913 + }; 914 + 915 + /** 916 + * This schema was giving PascalCase transformations a hard time 917 + */ 918 + export type IoK8sApimachineryPkgApisMetaV1DeleteOptions = { 919 + /** 920 + * Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned. 921 + */ 922 + preconditions?: IoK8sApimachineryPkgApisMetaV1Preconditions; 923 + }; 924 + 925 + /** 926 + * This schema was giving PascalCase transformations a hard time 927 + */ 928 + export type IoK8sApimachineryPkgApisMetaV1Preconditions = { 929 + /** 930 + * Specifies the target ResourceVersion 931 + */ 932 + resourceVersion?: string; 933 + /** 934 + * Specifies the target UID. 935 + */ 936 + uid?: string; 937 + }; 938 + 939 + export type AdditionalPropertiesUnknownIssue = { 940 + [key: string]: string | number; 941 + }; 942 + 943 + export type AdditionalPropertiesUnknownIssue2 = { 944 + [key: string]: string | number; 945 + }; 946 + 947 + export type AdditionalPropertiesUnknownIssue3 = string & { 948 + entries: { 949 + [key: string]: AdditionalPropertiesUnknownIssue; 950 + }; 951 + }; 952 + 953 + export type AdditionalPropertiesIntegerIssue = { 954 + value: number; 955 + [key: string]: number; 956 + }; 957 + 958 + export type OneOfAllOfIssue = ((ConstValue | GenericSchemaDuplicateIssue1SystemBoolean) & _3eNum1Период) | GenericSchemaDuplicateIssue1SystemString; 959 + 960 + export type GenericSchemaDuplicateIssue1SystemBoolean = { 961 + item?: boolean; 962 + error?: string | null; 963 + readonly hasError?: boolean; 964 + data?: { 965 + [key: string]: never; 966 + }; 967 + }; 968 + 969 + export type GenericSchemaDuplicateIssue1SystemString = { 970 + item?: string | null; 971 + error?: string | null; 972 + readonly hasError?: boolean; 973 + }; 974 + 975 + export type ExternalSharedModel = { 976 + id: string; 977 + name?: string; 978 + }; 979 + 980 + /** 981 + * This is a model with one property containing a reference 982 + */ 983 + export type ModelWithReferenceWritable = { 984 + prop?: ModelWithPropertiesWritable; 985 + }; 986 + 987 + /** 988 + * This is a model with one property containing an array 989 + */ 990 + export type ModelWithArrayReadOnlyAndWriteOnlyWritable = { 991 + prop?: Array<ModelWithReadOnlyAndWriteOnlyWritable>; 992 + propWithFile?: Array<Blob | File>; 993 + propWithNumber?: Array<number>; 994 + }; 995 + 996 + /** 997 + * This is a model with one nested property 998 + */ 999 + export type ModelWithPropertiesWritable = { 1000 + required: string; 1001 + requiredAndNullable: string | null; 1002 + string?: string; 1003 + number?: number; 1004 + boolean?: boolean; 1005 + reference?: ModelWithString; 1006 + 'property with space'?: string; 1007 + default?: string; 1008 + try?: string; 1009 + }; 1010 + 1011 + /** 1012 + * This is a model that contains a some patterns 1013 + */ 1014 + export type ModelWithPatternWritable = { 1015 + key: string; 1016 + name: string; 1017 + id?: string; 1018 + text?: string; 1019 + patternWithSingleQuotes?: string; 1020 + patternWithNewline?: string; 1021 + patternWithBacktick?: string; 1022 + patternWithUnicode?: string; 1023 + }; 1024 + 1025 + export type FileWritable = { 1026 + /** 1027 + * Mime 1028 + */ 1029 + mime: string; 1030 + }; 1031 + 1032 + export type ModelWithReadOnlyAndWriteOnlyWritable = { 1033 + foo: string; 1034 + baz: string; 1035 + }; 1036 + 1037 + export type ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable = [ 1038 + number | Import, 1039 + number | Import 1040 + ]; 1041 + 1042 + export type AdditionalPropertiesUnknownIssueWritable = { 1043 + [key: string]: string | number; 1044 + }; 1045 + 1046 + export type OneOfAllOfIssueWritable = ((ConstValue | GenericSchemaDuplicateIssue1SystemBoolean) & _3eNum1Период) | GenericSchemaDuplicateIssue1SystemString; 1047 + 1048 + export type GenericSchemaDuplicateIssue1SystemBooleanWritable = { 1049 + item?: boolean; 1050 + error?: string | null; 1051 + data?: { 1052 + [key: string]: never; 1053 + }; 1054 + }; 1055 + 1056 + export type GenericSchemaDuplicateIssue1SystemStringWritable = { 1057 + item?: string | null; 1058 + error?: string | null; 1059 + }; 1060 + 1061 + /** 1062 + * This is a reusable parameter 1063 + */ 1064 + export type SimpleParameter = string; 1065 + 1066 + /** 1067 + * Parameter with illegal characters 1068 + */ 1069 + export type XFooBar = ModelWithString; 1070 + 1071 + export type SimpleRequestBody = ModelWithString; 1072 + 1073 + export type SimpleFormData = ModelWithString; 1074 + 1075 + export type ExportData = { 1076 + body?: never; 1077 + path?: never; 1078 + query?: never; 1079 + url: '/api/v{api-version}/no+tag'; 1080 + }; 1081 + 1082 + export type PatchApiVbyApiVersionNoTagData = { 1083 + body?: never; 1084 + path?: never; 1085 + query?: never; 1086 + url: '/api/v{api-version}/no+tag'; 1087 + }; 1088 + 1089 + export type PatchApiVbyApiVersionNoTagResponses = { 1090 + /** 1091 + * OK 1092 + */ 1093 + default: unknown; 1094 + }; 1095 + 1096 + export type ImportData = { 1097 + body: ModelWithReadOnlyAndWriteOnlyWritable | ModelWithArrayReadOnlyAndWriteOnlyWritable; 1098 + path?: never; 1099 + query?: never; 1100 + url: '/api/v{api-version}/no+tag'; 1101 + }; 1102 + 1103 + export type ImportResponses = { 1104 + /** 1105 + * Success 1106 + */ 1107 + 200: ModelFromZendesk; 1108 + /** 1109 + * Default success response 1110 + */ 1111 + default: ModelWithReadOnlyAndWriteOnly; 1112 + }; 1113 + 1114 + export type ImportResponse = ImportResponses[keyof ImportResponses]; 1115 + 1116 + export type FooWowData = { 1117 + body?: never; 1118 + path?: never; 1119 + query?: never; 1120 + url: '/api/v{api-version}/no+tag'; 1121 + }; 1122 + 1123 + export type FooWowResponses = { 1124 + /** 1125 + * OK 1126 + */ 1127 + default: unknown; 1128 + }; 1129 + 1130 + export type ApiVVersionODataControllerCountData = { 1131 + body?: never; 1132 + path?: never; 1133 + query?: never; 1134 + url: '/api/v{api-version}/simple/$count'; 1135 + }; 1136 + 1137 + export type ApiVVersionODataControllerCountResponses = { 1138 + /** 1139 + * Success 1140 + */ 1141 + 200: ModelFromZendesk; 1142 + }; 1143 + 1144 + export type ApiVVersionODataControllerCountResponse = ApiVVersionODataControllerCountResponses[keyof ApiVVersionODataControllerCountResponses]; 1145 + 1146 + export type GetApiVbyApiVersionSimpleOperationData = { 1147 + body?: never; 1148 + path: { 1149 + /** 1150 + * foo in method 1151 + */ 1152 + foo_param: string; 1153 + }; 1154 + query?: never; 1155 + url: '/api/v{api-version}/simple:operation'; 1156 + }; 1157 + 1158 + export type GetApiVbyApiVersionSimpleOperationErrors = { 1159 + /** 1160 + * Default error response 1161 + */ 1162 + default: ModelWithBoolean; 1163 + }; 1164 + 1165 + export type GetApiVbyApiVersionSimpleOperationError = GetApiVbyApiVersionSimpleOperationErrors[keyof GetApiVbyApiVersionSimpleOperationErrors]; 1166 + 1167 + export type GetApiVbyApiVersionSimpleOperationResponses = { 1168 + /** 1169 + * Response is a simple number 1170 + */ 1171 + 200: number; 1172 + }; 1173 + 1174 + export type GetApiVbyApiVersionSimpleOperationResponse = GetApiVbyApiVersionSimpleOperationResponses[keyof GetApiVbyApiVersionSimpleOperationResponses]; 1175 + 1176 + export type DeleteCallWithoutParametersAndResponseData = { 1177 + body?: never; 1178 + path?: never; 1179 + query?: never; 1180 + url: '/api/v{api-version}/simple'; 1181 + }; 1182 + 1183 + export type GetCallWithoutParametersAndResponseData = { 1184 + body?: never; 1185 + path?: never; 1186 + query?: never; 1187 + url: '/api/v{api-version}/simple'; 1188 + }; 1189 + 1190 + export type HeadCallWithoutParametersAndResponseData = { 1191 + body?: never; 1192 + path?: never; 1193 + query?: never; 1194 + url: '/api/v{api-version}/simple'; 1195 + }; 1196 + 1197 + export type OptionsCallWithoutParametersAndResponseData = { 1198 + body?: never; 1199 + path?: never; 1200 + query?: never; 1201 + url: '/api/v{api-version}/simple'; 1202 + }; 1203 + 1204 + export type PatchCallWithoutParametersAndResponseData = { 1205 + body?: never; 1206 + path?: never; 1207 + query?: never; 1208 + url: '/api/v{api-version}/simple'; 1209 + }; 1210 + 1211 + export type PostCallWithoutParametersAndResponseData = { 1212 + body?: never; 1213 + path?: never; 1214 + query?: never; 1215 + url: '/api/v{api-version}/simple'; 1216 + }; 1217 + 1218 + export type PutCallWithoutParametersAndResponseData = { 1219 + body?: never; 1220 + path?: never; 1221 + query?: never; 1222 + url: '/api/v{api-version}/simple'; 1223 + }; 1224 + 1225 + export type DeleteFooData3 = { 1226 + body?: never; 1227 + headers: { 1228 + /** 1229 + * Parameter with illegal characters 1230 + */ 1231 + 'x-Foo-Bar': ModelWithString; 1232 + }; 1233 + path: { 1234 + /** 1235 + * foo in method 1236 + */ 1237 + foo_param: string; 1238 + /** 1239 + * bar in method 1240 + */ 1241 + BarParam: string; 1242 + }; 1243 + query?: never; 1244 + url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}'; 1245 + }; 1246 + 1247 + export type CallWithDescriptionsData = { 1248 + body?: never; 1249 + path?: never; 1250 + query?: { 1251 + /** 1252 + * Testing multiline comments in string: First line 1253 + * Second line 1254 + * 1255 + * Fourth line 1256 + */ 1257 + parameterWithBreaks?: string; 1258 + /** 1259 + * Testing backticks in string: `backticks` and ```multiple backticks``` should work 1260 + */ 1261 + parameterWithBackticks?: string; 1262 + /** 1263 + * Testing slashes in string: \backwards\\\ and /forwards/// should work 1264 + */ 1265 + parameterWithSlashes?: string; 1266 + /** 1267 + * Testing expression placeholders in string: ${expression} should work 1268 + */ 1269 + parameterWithExpressionPlaceholders?: string; 1270 + /** 1271 + * Testing quotes in string: 'single quote''' and "double quotes""" should work 1272 + */ 1273 + parameterWithQuotes?: string; 1274 + /** 1275 + * Testing reserved characters in string: * inline * and ** inline ** should work 1276 + */ 1277 + parameterWithReservedCharacters?: string; 1278 + }; 1279 + url: '/api/v{api-version}/descriptions'; 1280 + }; 1281 + 1282 + export type DeprecatedCallData = { 1283 + body?: never; 1284 + headers: { 1285 + /** 1286 + * This parameter is deprecated 1287 + * 1288 + * @deprecated 1289 + */ 1290 + parameter: DeprecatedModel | null; 1291 + }; 1292 + path?: never; 1293 + query?: never; 1294 + url: '/api/v{api-version}/parameters/deprecated'; 1295 + }; 1296 + 1297 + export type CallWithParametersData = { 1298 + /** 1299 + * This is the parameter that goes into the body 1300 + */ 1301 + body: { 1302 + [key: string]: unknown; 1303 + } | null; 1304 + headers: { 1305 + /** 1306 + * This is the parameter that goes into the header 1307 + */ 1308 + parameterHeader: string | null; 1309 + }; 1310 + path: { 1311 + /** 1312 + * This is the parameter that goes into the path 1313 + */ 1314 + parameterPath: string | null; 1315 + /** 1316 + * api-version should be required in standalone clients 1317 + */ 1318 + 'api-version': string | null; 1319 + }; 1320 + query: { 1321 + foo_ref_enum?: ModelWithNestedArrayEnumsDataFoo; 1322 + foo_all_of_enum: ModelWithNestedArrayEnumsDataFoo; 1323 + /** 1324 + * This is the parameter that goes into the query params 1325 + */ 1326 + cursor: string | null; 1327 + }; 1328 + url: '/api/v{api-version}/parameters/{parameterPath}'; 1329 + }; 1330 + 1331 + export type CallWithWeirdParameterNamesData = { 1332 + /** 1333 + * This is the parameter that goes into the body 1334 + */ 1335 + body: ModelWithString | null; 1336 + headers: { 1337 + /** 1338 + * This is the parameter that goes into the request header 1339 + */ 1340 + 'parameter.header': string | null; 1341 + }; 1342 + path: { 1343 + /** 1344 + * This is the parameter that goes into the path 1345 + */ 1346 + 'parameter.path.1'?: string; 1347 + /** 1348 + * This is the parameter that goes into the path 1349 + */ 1350 + 'parameter-path-2'?: string; 1351 + /** 1352 + * This is the parameter that goes into the path 1353 + */ 1354 + 'PARAMETER-PATH-3'?: string; 1355 + /** 1356 + * api-version should be required in standalone clients 1357 + */ 1358 + 'api-version': string | null; 1359 + }; 1360 + query: { 1361 + /** 1362 + * This is the parameter with a reserved keyword 1363 + */ 1364 + default?: string; 1365 + /** 1366 + * This is the parameter that goes into the request query params 1367 + */ 1368 + 'parameter-query': string | null; 1369 + }; 1370 + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}'; 1371 + }; 1372 + 1373 + export type GetCallWithOptionalParamData = { 1374 + /** 1375 + * This is a required parameter 1376 + */ 1377 + body: ModelWithOneOfEnum; 1378 + path?: never; 1379 + query?: { 1380 + /** 1381 + * This is an optional parameter 1382 + */ 1383 + page?: number; 1384 + }; 1385 + url: '/api/v{api-version}/parameters'; 1386 + }; 1387 + 1388 + export type PostCallWithOptionalParamData = { 1389 + /** 1390 + * This is an optional parameter 1391 + */ 1392 + body?: { 1393 + offset?: number | null; 1394 + }; 1395 + path?: never; 1396 + query: { 1397 + /** 1398 + * This is a required parameter 1399 + */ 1400 + parameter: Pageable; 1401 + }; 1402 + url: '/api/v{api-version}/parameters'; 1403 + }; 1404 + 1405 + export type PostCallWithOptionalParamResponses = { 1406 + /** 1407 + * Response is a simple number 1408 + */ 1409 + 200: number; 1410 + /** 1411 + * Success 1412 + */ 1413 + 204: void; 1414 + }; 1415 + 1416 + export type PostCallWithOptionalParamResponse = PostCallWithOptionalParamResponses[keyof PostCallWithOptionalParamResponses]; 1417 + 1418 + export type PostApiVbyApiVersionRequestBodyData = { 1419 + /** 1420 + * A reusable request body 1421 + */ 1422 + body?: SimpleRequestBody; 1423 + path?: never; 1424 + query?: { 1425 + /** 1426 + * This is a reusable parameter 1427 + */ 1428 + parameter?: string; 1429 + }; 1430 + url: '/api/v{api-version}/requestBody'; 1431 + }; 1432 + 1433 + export type PostApiVbyApiVersionFormDataData = { 1434 + /** 1435 + * A reusable request body 1436 + */ 1437 + body?: SimpleFormData; 1438 + path?: never; 1439 + query?: { 1440 + /** 1441 + * This is a reusable parameter 1442 + */ 1443 + parameter?: string; 1444 + }; 1445 + url: '/api/v{api-version}/formData'; 1446 + }; 1447 + 1448 + export type CallWithDefaultParametersData = { 1449 + body?: never; 1450 + path?: never; 1451 + query?: { 1452 + /** 1453 + * This is a simple string with default value 1454 + */ 1455 + parameterString?: string | null; 1456 + /** 1457 + * This is a simple number with default value 1458 + */ 1459 + parameterNumber?: number | null; 1460 + /** 1461 + * This is a simple boolean with default value 1462 + */ 1463 + parameterBoolean?: boolean | null; 1464 + /** 1465 + * This is a simple enum with default value 1466 + */ 1467 + parameterEnum?: 'Success' | 'Warning' | 'Error'; 1468 + /** 1469 + * This is a simple model with default value 1470 + */ 1471 + parameterModel?: ModelWithString | null; 1472 + }; 1473 + url: '/api/v{api-version}/defaults'; 1474 + }; 1475 + 1476 + export type CallWithDefaultOptionalParametersData = { 1477 + body?: never; 1478 + path?: never; 1479 + query?: { 1480 + /** 1481 + * This is a simple string that is optional with default value 1482 + */ 1483 + parameterString?: string; 1484 + /** 1485 + * This is a simple number that is optional with default value 1486 + */ 1487 + parameterNumber?: number; 1488 + /** 1489 + * This is a simple boolean that is optional with default value 1490 + */ 1491 + parameterBoolean?: boolean; 1492 + /** 1493 + * This is a simple enum that is optional with default value 1494 + */ 1495 + parameterEnum?: 'Success' | 'Warning' | 'Error'; 1496 + /** 1497 + * This is a simple model that is optional with default value 1498 + */ 1499 + parameterModel?: ModelWithString; 1500 + }; 1501 + url: '/api/v{api-version}/defaults'; 1502 + }; 1503 + 1504 + export type CallToTestOrderOfParamsData = { 1505 + body?: never; 1506 + path?: never; 1507 + query: { 1508 + /** 1509 + * This is a optional string with default 1510 + */ 1511 + parameterOptionalStringWithDefault?: string; 1512 + /** 1513 + * This is a optional string with empty default 1514 + */ 1515 + parameterOptionalStringWithEmptyDefault?: string; 1516 + /** 1517 + * This is a optional string with no default 1518 + */ 1519 + parameterOptionalStringWithNoDefault?: string; 1520 + /** 1521 + * This is a string with default 1522 + */ 1523 + parameterStringWithDefault: string; 1524 + /** 1525 + * This is a string with empty default 1526 + */ 1527 + parameterStringWithEmptyDefault: string; 1528 + /** 1529 + * This is a string with no default 1530 + */ 1531 + parameterStringWithNoDefault: string; 1532 + /** 1533 + * This is a string that can be null with no default 1534 + */ 1535 + parameterStringNullableWithNoDefault?: string | null; 1536 + /** 1537 + * This is a string that can be null with default 1538 + */ 1539 + parameterStringNullableWithDefault?: string | null; 1540 + }; 1541 + url: '/api/v{api-version}/defaults'; 1542 + }; 1543 + 1544 + export type DuplicateNameData = { 1545 + body?: never; 1546 + path?: never; 1547 + query?: never; 1548 + url: '/api/v{api-version}/duplicate'; 1549 + }; 1550 + 1551 + export type DuplicateName2Data = { 1552 + body?: never; 1553 + path?: never; 1554 + query?: never; 1555 + url: '/api/v{api-version}/duplicate'; 1556 + }; 1557 + 1558 + export type DuplicateName3Data = { 1559 + body?: never; 1560 + path?: never; 1561 + query?: never; 1562 + url: '/api/v{api-version}/duplicate'; 1563 + }; 1564 + 1565 + export type DuplicateName4Data = { 1566 + body?: never; 1567 + path?: never; 1568 + query?: never; 1569 + url: '/api/v{api-version}/duplicate'; 1570 + }; 1571 + 1572 + export type CallWithNoContentResponseData = { 1573 + body?: never; 1574 + path?: never; 1575 + query?: never; 1576 + url: '/api/v{api-version}/no-content'; 1577 + }; 1578 + 1579 + export type CallWithNoContentResponseResponses = { 1580 + /** 1581 + * Success 1582 + */ 1583 + 204: void; 1584 + }; 1585 + 1586 + export type CallWithNoContentResponseResponse = CallWithNoContentResponseResponses[keyof CallWithNoContentResponseResponses]; 1587 + 1588 + export type CallWithResponseAndNoContentResponseData = { 1589 + body?: never; 1590 + path?: never; 1591 + query?: never; 1592 + url: '/api/v{api-version}/multiple-tags/response-and-no-content'; 1593 + }; 1594 + 1595 + export type CallWithResponseAndNoContentResponseResponses = { 1596 + /** 1597 + * Response is a simple number 1598 + */ 1599 + 200: number; 1600 + /** 1601 + * Success 1602 + */ 1603 + 204: void; 1604 + }; 1605 + 1606 + export type CallWithResponseAndNoContentResponseResponse = CallWithResponseAndNoContentResponseResponses[keyof CallWithResponseAndNoContentResponseResponses]; 1607 + 1608 + export type DummyAData = { 1609 + body?: never; 1610 + path?: never; 1611 + query?: never; 1612 + url: '/api/v{api-version}/multiple-tags/a'; 1613 + }; 1614 + 1615 + export type DummyAResponses = { 1616 + 200: _400; 1617 + }; 1618 + 1619 + export type DummyAResponse = DummyAResponses[keyof DummyAResponses]; 1620 + 1621 + export type DummyBData = { 1622 + body?: never; 1623 + path?: never; 1624 + query?: never; 1625 + url: '/api/v{api-version}/multiple-tags/b'; 1626 + }; 1627 + 1628 + export type DummyBResponses = { 1629 + /** 1630 + * Success 1631 + */ 1632 + 204: void; 1633 + }; 1634 + 1635 + export type DummyBResponse = DummyBResponses[keyof DummyBResponses]; 1636 + 1637 + export type CallWithResponseData = { 1638 + body?: never; 1639 + path?: never; 1640 + query?: never; 1641 + url: '/api/v{api-version}/response'; 1642 + }; 1643 + 1644 + export type CallWithResponseResponses = { 1645 + default: Import; 1646 + }; 1647 + 1648 + export type CallWithResponseResponse = CallWithResponseResponses[keyof CallWithResponseResponses]; 1649 + 1650 + export type CallWithDuplicateResponsesData = { 1651 + body?: never; 1652 + path?: never; 1653 + query?: never; 1654 + url: '/api/v{api-version}/response'; 1655 + }; 1656 + 1657 + export type CallWithDuplicateResponsesErrors = { 1658 + /** 1659 + * Message for 500 error 1660 + */ 1661 + 500: ModelWithStringError; 1662 + /** 1663 + * Message for 501 error 1664 + */ 1665 + 501: ModelWithStringError; 1666 + /** 1667 + * Message for 502 error 1668 + */ 1669 + 502: ModelWithStringError; 1670 + /** 1671 + * Message for 4XX errors 1672 + */ 1673 + '4XX': DictionaryWithArray; 1674 + /** 1675 + * Default error response 1676 + */ 1677 + default: ModelWithBoolean; 1678 + }; 1679 + 1680 + export type CallWithDuplicateResponsesError = CallWithDuplicateResponsesErrors[keyof CallWithDuplicateResponsesErrors]; 1681 + 1682 + export type CallWithDuplicateResponsesResponses = { 1683 + /** 1684 + * Message for 200 response 1685 + */ 1686 + 200: ModelWithBoolean & ModelWithInteger; 1687 + /** 1688 + * Message for 201 response 1689 + */ 1690 + 201: ModelWithString; 1691 + /** 1692 + * Message for 202 response 1693 + */ 1694 + 202: ModelWithString; 1695 + }; 1696 + 1697 + export type CallWithDuplicateResponsesResponse = CallWithDuplicateResponsesResponses[keyof CallWithDuplicateResponsesResponses]; 1698 + 1699 + export type CallWithResponsesData = { 1700 + body?: never; 1701 + path?: never; 1702 + query?: never; 1703 + url: '/api/v{api-version}/response'; 1704 + }; 1705 + 1706 + export type CallWithResponsesErrors = { 1707 + /** 1708 + * Message for 500 error 1709 + */ 1710 + 500: ModelWithStringError; 1711 + /** 1712 + * Message for 501 error 1713 + */ 1714 + 501: ModelWithStringError; 1715 + /** 1716 + * Message for 502 error 1717 + */ 1718 + 502: ModelWithStringError; 1719 + /** 1720 + * Message for default response 1721 + */ 1722 + default: ModelWithStringError; 1723 + }; 1724 + 1725 + export type CallWithResponsesError = CallWithResponsesErrors[keyof CallWithResponsesErrors]; 1726 + 1727 + export type CallWithResponsesResponses = { 1728 + /** 1729 + * Message for 200 response 1730 + */ 1731 + 200: { 1732 + readonly '@namespace.string'?: string; 1733 + readonly '@namespace.integer'?: number; 1734 + readonly value?: Array<ModelWithString>; 1735 + }; 1736 + /** 1737 + * Message for 201 response 1738 + */ 1739 + 201: ModelThatExtends; 1740 + /** 1741 + * Message for 202 response 1742 + */ 1743 + 202: ModelThatExtendsExtends; 1744 + }; 1745 + 1746 + export type CallWithResponsesResponse = CallWithResponsesResponses[keyof CallWithResponsesResponses]; 1747 + 1748 + export type CollectionFormatData = { 1749 + body?: never; 1750 + path?: never; 1751 + query: { 1752 + /** 1753 + * This is an array parameter that is sent as csv format (comma-separated values) 1754 + */ 1755 + parameterArrayCSV: Array<string> | null; 1756 + /** 1757 + * This is an array parameter that is sent as ssv format (space-separated values) 1758 + */ 1759 + parameterArraySSV: Array<string> | null; 1760 + /** 1761 + * This is an array parameter that is sent as tsv format (tab-separated values) 1762 + */ 1763 + parameterArrayTSV: Array<string> | null; 1764 + /** 1765 + * This is an array parameter that is sent as pipes format (pipe-separated values) 1766 + */ 1767 + parameterArrayPipes: Array<string> | null; 1768 + /** 1769 + * This is an array parameter that is sent as multi format (multiple parameter instances) 1770 + */ 1771 + parameterArrayMulti: Array<string> | null; 1772 + }; 1773 + url: '/api/v{api-version}/collectionFormat'; 1774 + }; 1775 + 1776 + export type TypesData = { 1777 + body?: never; 1778 + path?: { 1779 + /** 1780 + * This is a number parameter 1781 + */ 1782 + id?: number; 1783 + }; 1784 + query: { 1785 + /** 1786 + * This is a number parameter 1787 + */ 1788 + parameterNumber: number; 1789 + /** 1790 + * This is a string parameter 1791 + */ 1792 + parameterString: string | null; 1793 + /** 1794 + * This is a boolean parameter 1795 + */ 1796 + parameterBoolean: boolean | null; 1797 + /** 1798 + * This is an object parameter 1799 + */ 1800 + parameterObject: { 1801 + [key: string]: unknown; 1802 + } | null; 1803 + /** 1804 + * This is an array parameter 1805 + */ 1806 + parameterArray: Array<string> | null; 1807 + /** 1808 + * This is a dictionary parameter 1809 + */ 1810 + parameterDictionary: { 1811 + [key: string]: unknown; 1812 + } | null; 1813 + /** 1814 + * This is an enum parameter 1815 + */ 1816 + parameterEnum: 'Success' | 'Warning' | 'Error'; 1817 + }; 1818 + url: '/api/v{api-version}/types'; 1819 + }; 1820 + 1821 + export type TypesResponses = { 1822 + /** 1823 + * Response is a simple number 1824 + */ 1825 + 200: number; 1826 + /** 1827 + * Response is a simple string 1828 + */ 1829 + 201: string; 1830 + /** 1831 + * Response is a simple boolean 1832 + */ 1833 + 202: boolean; 1834 + /** 1835 + * Response is a simple object 1836 + */ 1837 + 203: { 1838 + [key: string]: unknown; 1839 + }; 1840 + }; 1841 + 1842 + export type TypesResponse = TypesResponses[keyof TypesResponses]; 1843 + 1844 + export type UploadFileData = { 1845 + body: Blob | File; 1846 + path: { 1847 + /** 1848 + * api-version should be required in standalone clients 1849 + */ 1850 + 'api-version': string | null; 1851 + }; 1852 + query?: never; 1853 + url: '/api/v{api-version}/upload'; 1854 + }; 1855 + 1856 + export type UploadFileResponses = { 1857 + 200: boolean; 1858 + }; 1859 + 1860 + export type UploadFileResponse = UploadFileResponses[keyof UploadFileResponses]; 1861 + 1862 + export type FileResponseData = { 1863 + body?: never; 1864 + path: { 1865 + id: string; 1866 + /** 1867 + * api-version should be required in standalone clients 1868 + */ 1869 + 'api-version': string; 1870 + }; 1871 + query?: never; 1872 + url: '/api/v{api-version}/file/{id}'; 1873 + }; 1874 + 1875 + export type FileResponseResponses = { 1876 + /** 1877 + * Success 1878 + */ 1879 + 200: Blob | File; 1880 + }; 1881 + 1882 + export type FileResponseResponse = FileResponseResponses[keyof FileResponseResponses]; 1883 + 1884 + export type ComplexTypesData = { 1885 + body?: never; 1886 + path?: never; 1887 + query: { 1888 + /** 1889 + * Parameter containing object 1890 + */ 1891 + parameterObject: { 1892 + first?: { 1893 + second?: { 1894 + third?: string; 1895 + }; 1896 + }; 1897 + }; 1898 + /** 1899 + * Parameter containing reference 1900 + */ 1901 + parameterReference: ModelWithString; 1902 + }; 1903 + url: '/api/v{api-version}/complex'; 1904 + }; 1905 + 1906 + export type ComplexTypesErrors = { 1907 + /** 1908 + * 400 `server` error 1909 + */ 1910 + 400: unknown; 1911 + /** 1912 + * 500 server error 1913 + */ 1914 + 500: unknown; 1915 + }; 1916 + 1917 + export type ComplexTypesResponses = { 1918 + /** 1919 + * Successful response 1920 + */ 1921 + 200: Array<ModelWithString>; 1922 + }; 1923 + 1924 + export type ComplexTypesResponse = ComplexTypesResponses[keyof ComplexTypesResponses]; 1925 + 1926 + export type MultipartResponseData = { 1927 + body?: never; 1928 + path?: never; 1929 + query?: never; 1930 + url: '/api/v{api-version}/multipart'; 1931 + }; 1932 + 1933 + export type MultipartResponseResponses = { 1934 + /** 1935 + * OK 1936 + */ 1937 + 200: { 1938 + file?: Blob | File; 1939 + metadata?: { 1940 + foo?: string; 1941 + bar?: string; 1942 + }; 1943 + }; 1944 + }; 1945 + 1946 + export type MultipartResponseResponse = MultipartResponseResponses[keyof MultipartResponseResponses]; 1947 + 1948 + export type MultipartRequestData = { 1949 + body?: { 1950 + content?: Blob | File; 1951 + data?: ModelWithString | null; 1952 + }; 1953 + path?: never; 1954 + query?: never; 1955 + url: '/api/v{api-version}/multipart'; 1956 + }; 1957 + 1958 + export type ComplexParamsData = { 1959 + body?: { 1960 + readonly key: string | null; 1961 + name: string | null; 1962 + enabled?: boolean; 1963 + type: 'Monkey' | 'Horse' | 'Bird'; 1964 + listOfModels?: Array<ModelWithString> | null; 1965 + listOfStrings?: Array<string> | null; 1966 + parameters: ModelWithString | ModelWithEnum | ModelWithArray | ModelWithDictionary; 1967 + readonly user?: { 1968 + readonly id?: number; 1969 + readonly name?: string | null; 1970 + }; 1971 + }; 1972 + path: { 1973 + id: number; 1974 + /** 1975 + * api-version should be required in standalone clients 1976 + */ 1977 + 'api-version': string; 1978 + }; 1979 + query?: never; 1980 + url: '/api/v{api-version}/complex/{id}'; 1981 + }; 1982 + 1983 + export type ComplexParamsResponses = { 1984 + /** 1985 + * Success 1986 + */ 1987 + 200: ModelWithString; 1988 + }; 1989 + 1990 + export type ComplexParamsResponse = ComplexParamsResponses[keyof ComplexParamsResponses]; 1991 + 1992 + export type CallWithResultFromHeaderData = { 1993 + body?: never; 1994 + path?: never; 1995 + query?: never; 1996 + url: '/api/v{api-version}/header'; 1997 + }; 1998 + 1999 + export type CallWithResultFromHeaderErrors = { 2000 + /** 2001 + * 400 server error 2002 + */ 2003 + 400: unknown; 2004 + /** 2005 + * 500 server error 2006 + */ 2007 + 500: unknown; 2008 + }; 2009 + 2010 + export type CallWithResultFromHeaderResponses = { 2011 + /** 2012 + * Successful response 2013 + */ 2014 + 200: unknown; 2015 + }; 2016 + 2017 + export type TestErrorCodeData = { 2018 + body?: never; 2019 + path?: never; 2020 + query: { 2021 + /** 2022 + * Status code to return 2023 + */ 2024 + status: number; 2025 + }; 2026 + url: '/api/v{api-version}/error'; 2027 + }; 2028 + 2029 + export type TestErrorCodeErrors = { 2030 + /** 2031 + * Custom message: Internal Server Error 2032 + */ 2033 + 500: unknown; 2034 + /** 2035 + * Custom message: Not Implemented 2036 + */ 2037 + 501: unknown; 2038 + /** 2039 + * Custom message: Bad Gateway 2040 + */ 2041 + 502: unknown; 2042 + /** 2043 + * Custom message: Service Unavailable 2044 + */ 2045 + 503: unknown; 2046 + }; 2047 + 2048 + export type TestErrorCodeResponses = { 2049 + /** 2050 + * Custom message: Successful response 2051 + */ 2052 + 200: unknown; 2053 + }; 2054 + 2055 + export type NonAsciiæøåÆøÅöôêÊ字符串Data = { 2056 + body?: never; 2057 + path?: never; 2058 + query: { 2059 + /** 2060 + * Dummy input param 2061 + */ 2062 + nonAsciiParamæøåÆØÅöôêÊ: number; 2063 + }; 2064 + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; 2065 + }; 2066 + 2067 + export type NonAsciiæøåÆøÅöôêÊ字符串Responses = { 2068 + /** 2069 + * Successful response 2070 + */ 2071 + 200: Array<NonAsciiStringæøåÆøÅöôêÊ字符串>; 2072 + }; 2073 + 2074 + export type NonAsciiæøåÆøÅöôêÊ字符串Response = NonAsciiæøåÆøÅöôêÊ字符串Responses[keyof NonAsciiæøåÆøÅöôêÊ字符串Responses]; 2075 + 2076 + export type PutWithFormUrlEncodedData = { 2077 + body: ArrayWithStrings; 2078 + path?: never; 2079 + query?: never; 2080 + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; 2081 + };
+3
packages/openapi-ts-tests/nestjs/v11/__snapshots__/3.1.x/default/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type { _3eNum1Период, _400, AdditionalPropertiesIntegerIssue, AdditionalPropertiesUnknownIssue, AdditionalPropertiesUnknownIssue2, AdditionalPropertiesUnknownIssue3, AdditionalPropertiesUnknownIssueWritable, AnyOfAnyAndNull, AnyOfArrays, ApiVVersionODataControllerCountData, ApiVVersionODataControllerCountResponse, ApiVVersionODataControllerCountResponses, ArrayWithAnyOfProperties, ArrayWithArray, ArrayWithBooleans, ArrayWithNumbers, ArrayWithProperties, ArrayWithReferences, ArrayWithStrings, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesErrors, CallWithDuplicateResponsesResponse, CallWithDuplicateResponsesResponses, CallWithNoContentResponseData, CallWithNoContentResponseResponse, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseAndNoContentResponseResponses, CallWithResponseData, CallWithResponseResponse, CallWithResponseResponses, CallWithResponsesData, CallWithResponsesError, CallWithResponsesErrors, CallWithResponsesResponse, CallWithResponsesResponses, CallWithResultFromHeaderData, CallWithResultFromHeaderErrors, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, CamelCaseCommentWithBreaks, CharactersInDescription, ClientOptions, CollectionFormatData, CommentWithBackticks, CommentWithBackticksAndQuotes, CommentWithBreaks, CommentWithExpressionPlaceholders, CommentWithQuotes, CommentWithReservedCharacters, CommentWithSlashes, ComplexParamsData, ComplexParamsResponse, ComplexParamsResponses, ComplexTypesData, ComplexTypesErrors, ComplexTypesResponse, ComplexTypesResponses, CompositionBaseModel, CompositionExtendedModel, CompositionWithAllOfAndNullable, CompositionWithAnyOf, CompositionWithAnyOfAndNullable, CompositionWithAnyOfAnonymous, CompositionWithNestedAnyAndTypeNull, CompositionWithNestedAnyOfAndNull, CompositionWithOneOf, CompositionWithOneOfAndComplexArrayDictionary, CompositionWithOneOfAndNullable, CompositionWithOneOfAndProperties, CompositionWithOneOfAndSimpleArrayDictionary, CompositionWithOneOfAndSimpleDictionary, CompositionWithOneOfAnonymous, CompositionWithOneOfDiscriminator, ConstValue, Default, DeleteCallWithoutParametersAndResponseData, DeleteFooData, DeleteFooData2, DeleteFooData3, DeprecatedCallData, DeprecatedModel, DictionaryWithArray, DictionaryWithDictionary, DictionaryWithProperties, DictionaryWithPropertiesAndAdditionalProperties, DictionaryWithReference, DictionaryWithString, DummyAData, DummyAResponse, DummyAResponses, DummyBData, DummyBResponse, DummyBResponses, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, EnumFromDescription, EnumWithExtensions, EnumWithNumbers, EnumWithReplacedCharacters, EnumWithStrings, EnumWithXEnumNames, ExportData, ExternalRefA, ExternalRefB, ExternalSharedModel, File, FileResponseData, FileResponseResponse, FileResponseResponses, FileWritable, FooWowData, FooWowResponses, FreeFormObjectWithAdditionalPropertiesEqEmptyObject, FreeFormObjectWithAdditionalPropertiesEqTrue, FreeFormObjectWithoutAdditionalProperties, GenericSchemaDuplicateIssue1SystemBoolean, GenericSchemaDuplicateIssue1SystemBooleanWritable, GenericSchemaDuplicateIssue1SystemString, GenericSchemaDuplicateIssue1SystemStringWritable, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationError, GetApiVbyApiVersionSimpleOperationErrors, GetApiVbyApiVersionSimpleOperationResponse, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, GetCallWithoutParametersAndResponseData, HeadCallWithoutParametersAndResponseData, Import, ImportData, ImportResponse, ImportResponses, IoK8sApimachineryPkgApisMetaV1DeleteOptions, IoK8sApimachineryPkgApisMetaV1Preconditions, ModelCircle, ModelFromZendesk, ModelSquare, ModelThatExtends, ModelThatExtendsExtends, ModelWithAdditionalPropertiesEqTrue, ModelWithAdditionalPropertiesRef, ModelWithAnyOfConstantSizeArray, ModelWithAnyOfConstantSizeArrayAndIntersect, ModelWithAnyOfConstantSizeArrayNullable, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions, ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable, ModelWithArray, ModelWithArrayReadOnlyAndWriteOnly, ModelWithArrayReadOnlyAndWriteOnlyWritable, ModelWithBackticksInDescription, ModelWithBoolean, ModelWithCircularReference, ModelWithConst, ModelWithConstantSizeArray, ModelWithDictionary, ModelWithDuplicateImports, ModelWithDuplicateProperties, ModelWithEnum, ModelWithEnumFromDescription, ModelWithEnumWithHyphen, ModelWithInteger, ModelWithNestedArrayEnums, ModelWithNestedArrayEnumsData, ModelWithNestedArrayEnumsDataBar, ModelWithNestedArrayEnumsDataFoo, ModelWithNestedCompositionEnums, ModelWithNestedEnums, ModelWithNestedProperties, ModelWithNullableObject, ModelWithNullableString, ModelWithNumericEnumUnion, ModelWithOneOfAndProperties, ModelWithOneOfEnum, ModelWithOrderedProperties, ModelWithPattern, ModelWithPatternWritable, ModelWithPrefixItemsConstantSizeArray, ModelWithProperties, ModelWithPropertiesWritable, ModelWithReadOnlyAndWriteOnly, ModelWithReadOnlyAndWriteOnlyWritable, ModelWithReference, ModelWithReferenceWritable, ModelWithString, ModelWithStringError, MultipartRequestData, MultipartResponseData, MultipartResponseResponse, MultipartResponseResponses, NestedAnyOfArraysNullable, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, NonAsciiæøåÆøÅöôêÊ字符串Responses, NonAsciiStringæøåÆøÅöôêÊ字符串, NullableObject, OneOfAllOfIssue, OneOfAllOfIssueWritable, OptionsCallWithoutParametersAndResponseData, Pageable, ParameterSimpleParameterUnused, PatchApiVbyApiVersionNoTagData, PatchApiVbyApiVersionNoTagResponses, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PostCallWithOptionalParamResponses, PostCallWithoutParametersAndResponseData, PostServiceWithEmptyTagResponse, PostServiceWithEmptyTagResponse2, PutCallWithoutParametersAndResponseData, PutWithFormUrlEncodedData, SchemaWithFormRestrictedKeys, SimpleBoolean, SimpleFile, SimpleFormData, SimpleInteger, SimpleParameter, SimpleReference, SimpleRequestBody, SimpleString, SimpleStringWithPattern, TestErrorCodeData, TestErrorCodeErrors, TestErrorCodeResponses, TypesData, TypesResponse, TypesResponses, UploadFileData, UploadFileResponse, UploadFileResponses, XFooBar } from './types.gen';
+114
packages/openapi-ts-tests/nestjs/v11/__snapshots__/3.1.x/default/nestjs.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { ApiVVersionODataControllerCountResponse, CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesResponse, CallWithNoContentResponseResponse, CallWithParametersData, CallWithResponseAndNoContentResponseResponse, CallWithResponseResponse, CallWithResponsesResponse, CallWithWeirdParameterNamesData, CollectionFormatData, ComplexParamsData, ComplexParamsResponse, ComplexTypesData, ComplexTypesResponse, DeleteFooData3, DeprecatedCallData, DummyAResponse, DummyBResponse, FileResponseData, FileResponseResponse, GetApiVbyApiVersionSimpleOperationData, GetApiVbyApiVersionSimpleOperationResponse, GetCallWithOptionalParamData, ImportData, ImportResponse, MultipartRequestData, MultipartResponseResponse, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponse, PutWithFormUrlEncodedData, TestErrorCodeData, TypesData, TypesResponse, UploadFileData, UploadFileResponse } from './types.gen'; 4 + 5 + export type DefaultControllerMethods = { 6 + export: () => Promise<void>; 7 + patchApiVbyApiVersionNoTag: () => Promise<void>; 8 + import: (body: ImportData['body']) => Promise<ImportResponse>; 9 + fooWow: () => Promise<void>; 10 + getApiVbyApiVersionSimpleOperation: (path: GetApiVbyApiVersionSimpleOperationData['path']) => Promise<GetApiVbyApiVersionSimpleOperationResponse>; 11 + }; 12 + 13 + export type SimpleControllerMethods = { 14 + apiVVersionODataControllerCount: () => Promise<ApiVVersionODataControllerCountResponse>; 15 + deleteCallWithoutParametersAndResponse: () => Promise<void>; 16 + getCallWithoutParametersAndResponse: () => Promise<void>; 17 + headCallWithoutParametersAndResponse: () => Promise<void>; 18 + optionsCallWithoutParametersAndResponse: () => Promise<void>; 19 + patchCallWithoutParametersAndResponse: () => Promise<void>; 20 + postCallWithoutParametersAndResponse: () => Promise<void>; 21 + putCallWithoutParametersAndResponse: () => Promise<void>; 22 + }; 23 + 24 + export type ParametersControllerMethods = { 25 + deleteFoo: (path: DeleteFooData3['path'], headers: DeleteFooData3['headers']) => Promise<void>; 26 + callWithParameters: (path: CallWithParametersData['path'], query: CallWithParametersData['query'], body: CallWithParametersData['body'], headers: CallWithParametersData['headers']) => Promise<void>; 27 + callWithWeirdParameterNames: (path: CallWithWeirdParameterNamesData['path'], query: CallWithWeirdParameterNamesData['query'], body: CallWithWeirdParameterNamesData['body'], headers: CallWithWeirdParameterNamesData['headers']) => Promise<void>; 28 + getCallWithOptionalParam: (body: GetCallWithOptionalParamData['body'], query?: GetCallWithOptionalParamData['query']) => Promise<void>; 29 + postCallWithOptionalParam: (query: PostCallWithOptionalParamData['query'], body?: PostCallWithOptionalParamData['body']) => Promise<PostCallWithOptionalParamResponse>; 30 + }; 31 + 32 + export type DescriptionsControllerMethods = { 33 + callWithDescriptions: (query?: CallWithDescriptionsData['query']) => Promise<void>; 34 + }; 35 + 36 + export type DeprecatedControllerMethods = { 37 + deprecatedCall: (headers: DeprecatedCallData['headers']) => Promise<void>; 38 + }; 39 + 40 + export type RequestBodyControllerMethods = { 41 + postApiVbyApiVersionRequestBody: (query?: PostApiVbyApiVersionRequestBodyData['query'], body?: PostApiVbyApiVersionRequestBodyData['body']) => Promise<void>; 42 + }; 43 + 44 + export type FormDataControllerMethods = { 45 + postApiVbyApiVersionFormData: (query?: PostApiVbyApiVersionFormDataData['query'], body?: PostApiVbyApiVersionFormDataData['body']) => Promise<void>; 46 + }; 47 + 48 + export type DefaultsControllerMethods = { 49 + callWithDefaultParameters: (query?: CallWithDefaultParametersData['query']) => Promise<void>; 50 + callWithDefaultOptionalParameters: (query?: CallWithDefaultOptionalParametersData['query']) => Promise<void>; 51 + callToTestOrderOfParams: (query: CallToTestOrderOfParamsData['query']) => Promise<void>; 52 + }; 53 + 54 + export type DuplicateControllerMethods = { 55 + duplicateName: () => Promise<void>; 56 + duplicateName2: () => Promise<void>; 57 + duplicateName3: () => Promise<void>; 58 + duplicateName4: () => Promise<void>; 59 + }; 60 + 61 + export type NoContentControllerMethods = { 62 + callWithNoContentResponse: () => Promise<CallWithNoContentResponseResponse>; 63 + }; 64 + 65 + export type ResponseControllerMethods = { 66 + callWithResponseAndNoContentResponse: () => Promise<CallWithResponseAndNoContentResponseResponse>; 67 + callWithResponse: () => Promise<CallWithResponseResponse>; 68 + callWithDuplicateResponses: () => Promise<CallWithDuplicateResponsesResponse>; 69 + callWithResponses: () => Promise<CallWithResponsesResponse>; 70 + }; 71 + 72 + export type MultipleTags1ControllerMethods = { 73 + dummyA: () => Promise<DummyAResponse>; 74 + dummyB: () => Promise<DummyBResponse>; 75 + }; 76 + 77 + export type CollectionFormatControllerMethods = { 78 + collectionFormat: (query: CollectionFormatData['query']) => Promise<void>; 79 + }; 80 + 81 + export type TypesControllerMethods = { 82 + types: (query: TypesData['query'], path?: TypesData['path']) => Promise<TypesResponse>; 83 + }; 84 + 85 + export type UploadControllerMethods = { 86 + uploadFile: (path: UploadFileData['path'], body: UploadFileData['body']) => Promise<UploadFileResponse>; 87 + }; 88 + 89 + export type FileResponseControllerMethods = { 90 + fileResponse: (path: FileResponseData['path']) => Promise<FileResponseResponse>; 91 + }; 92 + 93 + export type ComplexControllerMethods = { 94 + complexTypes: (query: ComplexTypesData['query']) => Promise<ComplexTypesResponse>; 95 + complexParams: (path: ComplexParamsData['path'], body?: ComplexParamsData['body']) => Promise<ComplexParamsResponse>; 96 + }; 97 + 98 + export type MultipartControllerMethods = { 99 + multipartResponse: () => Promise<MultipartResponseResponse>; 100 + multipartRequest: (body?: MultipartRequestData['body']) => Promise<void>; 101 + }; 102 + 103 + export type HeaderControllerMethods = { 104 + callWithResultFromHeader: () => Promise<void>; 105 + }; 106 + 107 + export type ErrorControllerMethods = { 108 + testErrorCode: (query: TestErrorCodeData['query']) => Promise<void>; 109 + }; 110 + 111 + export type NonAsciiÆøåÆøÅöôêÊControllerMethods = { 112 + nonAsciiæøåÆøÅöôêÊ字符串: (query: NonAsciiæøåÆøÅöôêÊ字符串Data['query']) => Promise<NonAsciiæøåÆøÅöôêÊ字符串Response>; 113 + putWithFormUrlEncoded: (body: PutWithFormUrlEncodedData['body']) => Promise<void>; 114 + };
+2100
packages/openapi-ts-tests/nestjs/v11/__snapshots__/3.1.x/default/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type ClientOptions = { 4 + baseUrl: 'http://localhost:3000/base' | (string & {}); 5 + }; 6 + 7 + /** 8 + * Model with number-only name 9 + */ 10 + export type _400 = string; 11 + 12 + /** 13 + * External ref to shared model (A) 14 + */ 15 + export type ExternalRefA = ExternalSharedModel; 16 + 17 + /** 18 + * External ref to shared model (B) 19 + */ 20 + export type ExternalRefB = ExternalSharedModel; 21 + 22 + /** 23 + * Testing multiline comments in string: First line 24 + * Second line 25 + * 26 + * Fourth line 27 + */ 28 + export type CamelCaseCommentWithBreaks = number; 29 + 30 + /** 31 + * Testing multiline comments in string: First line 32 + * Second line 33 + * 34 + * Fourth line 35 + */ 36 + export type CommentWithBreaks = number; 37 + 38 + /** 39 + * Testing backticks in string: `backticks` and ```multiple backticks``` should work 40 + */ 41 + export type CommentWithBackticks = number; 42 + 43 + /** 44 + * Testing backticks and quotes in string: `backticks`, 'quotes', "double quotes" and ```multiple backticks``` should work 45 + */ 46 + export type CommentWithBackticksAndQuotes = number; 47 + 48 + /** 49 + * Testing slashes in string: \backwards\\\ and /forwards/// should work 50 + */ 51 + export type CommentWithSlashes = number; 52 + 53 + /** 54 + * Testing expression placeholders in string: ${expression} should work 55 + */ 56 + export type CommentWithExpressionPlaceholders = number; 57 + 58 + /** 59 + * Testing quotes in string: 'single quote''' and "double quotes""" should work 60 + */ 61 + export type CommentWithQuotes = number; 62 + 63 + /** 64 + * Testing reserved characters in string: * inline * and ** inline ** should work 65 + */ 66 + export type CommentWithReservedCharacters = number; 67 + 68 + /** 69 + * This is a simple number 70 + */ 71 + export type SimpleInteger = number; 72 + 73 + /** 74 + * This is a simple boolean 75 + */ 76 + export type SimpleBoolean = boolean; 77 + 78 + /** 79 + * This is a simple string 80 + */ 81 + export type SimpleString = string; 82 + 83 + /** 84 + * A string with non-ascii (unicode) characters valid in typescript identifiers (æøåÆØÅöÔèÈ字符串) 85 + */ 86 + export type NonAsciiStringæøåÆøÅöôêÊ字符串 = string; 87 + 88 + /** 89 + * This is a simple file 90 + */ 91 + export type SimpleFile = Blob | File; 92 + 93 + /** 94 + * This is a simple reference 95 + */ 96 + export type SimpleReference = ModelWithString; 97 + 98 + /** 99 + * This is a simple string 100 + */ 101 + export type SimpleStringWithPattern = string | null; 102 + 103 + /** 104 + * This is a simple enum with strings 105 + */ 106 + export type EnumWithStrings = 'Success' | 'Warning' | 'Error' | '\'Single Quote\'' | '"Double Quotes"' | 'Non-ascii: øæåôöØÆÅÔÖ字符串'; 107 + 108 + export type EnumWithReplacedCharacters = '\'Single Quote\'' | '"Double Quotes"' | 'øæåôöØÆÅÔÖ字符串' | 3.1 | ''; 109 + 110 + /** 111 + * This is a simple enum with numbers 112 + */ 113 + export type EnumWithNumbers = 1 | 2 | 3 | 1.1 | 1.2 | 1.3 | 100 | 200 | 300 | -100 | -200 | -300 | -1.1 | -1.2 | -1.3; 114 + 115 + /** 116 + * Success=1,Warning=2,Error=3 117 + */ 118 + export type EnumFromDescription = number; 119 + 120 + /** 121 + * This is a simple enum with numbers 122 + */ 123 + export type EnumWithExtensions = 200 | 400 | 500; 124 + 125 + export type EnumWithXEnumNames = 0 | 1 | 2; 126 + 127 + /** 128 + * This is a simple array with numbers 129 + */ 130 + export type ArrayWithNumbers = Array<number>; 131 + 132 + /** 133 + * This is a simple array with booleans 134 + */ 135 + export type ArrayWithBooleans = Array<boolean>; 136 + 137 + /** 138 + * This is a simple array with strings 139 + */ 140 + export type ArrayWithStrings = Array<string>; 141 + 142 + /** 143 + * This is a simple array with references 144 + */ 145 + export type ArrayWithReferences = Array<ModelWithString>; 146 + 147 + /** 148 + * This is a simple array containing an array 149 + */ 150 + export type ArrayWithArray = Array<Array<ModelWithString>>; 151 + 152 + /** 153 + * This is a simple array with properties 154 + */ 155 + export type ArrayWithProperties = Array<{ 156 + '16x16'?: CamelCaseCommentWithBreaks; 157 + bar?: string; 158 + }>; 159 + 160 + /** 161 + * This is a simple array with any of properties 162 + */ 163 + export type ArrayWithAnyOfProperties = Array<{ 164 + foo?: string; 165 + } | { 166 + bar?: string; 167 + }>; 168 + 169 + export type AnyOfAnyAndNull = { 170 + data?: unknown | null; 171 + }; 172 + 173 + /** 174 + * This is a simple array with any of properties 175 + */ 176 + export type AnyOfArrays = { 177 + results?: Array<{ 178 + foo?: string; 179 + } | { 180 + bar?: string; 181 + }>; 182 + }; 183 + 184 + /** 185 + * This is a string dictionary 186 + */ 187 + export type DictionaryWithString = { 188 + [key: string]: string; 189 + }; 190 + 191 + export type DictionaryWithPropertiesAndAdditionalProperties = { 192 + foo?: number; 193 + bar?: boolean; 194 + [key: string]: string | number | boolean | undefined; 195 + }; 196 + 197 + /** 198 + * This is a string reference 199 + */ 200 + export type DictionaryWithReference = { 201 + [key: string]: ModelWithString; 202 + }; 203 + 204 + /** 205 + * This is a complex dictionary 206 + */ 207 + export type DictionaryWithArray = { 208 + [key: string]: Array<ModelWithString>; 209 + }; 210 + 211 + /** 212 + * This is a string dictionary 213 + */ 214 + export type DictionaryWithDictionary = { 215 + [key: string]: { 216 + [key: string]: string; 217 + }; 218 + }; 219 + 220 + /** 221 + * This is a complex dictionary 222 + */ 223 + export type DictionaryWithProperties = { 224 + [key: string]: { 225 + foo?: string; 226 + bar?: string; 227 + }; 228 + }; 229 + 230 + /** 231 + * This is a model with one number property 232 + */ 233 + export type ModelWithInteger = { 234 + /** 235 + * This is a simple number property 236 + */ 237 + prop?: number; 238 + }; 239 + 240 + /** 241 + * This is a model with one boolean property 242 + */ 243 + export type ModelWithBoolean = { 244 + /** 245 + * This is a simple boolean property 246 + */ 247 + prop?: boolean; 248 + }; 249 + 250 + /** 251 + * This is a model with one string property 252 + */ 253 + export type ModelWithString = { 254 + /** 255 + * This is a simple string property 256 + */ 257 + prop?: string; 258 + }; 259 + 260 + /** 261 + * This is a model with one string property 262 + */ 263 + export type ModelWithStringError = { 264 + /** 265 + * This is a simple string property 266 + */ 267 + prop?: string; 268 + }; 269 + 270 + /** 271 + * `Comment` or `VoiceComment`. The JSON object for adding voice comments to tickets is different. See [Adding voice comments to tickets](/documentation/ticketing/managing-tickets/adding-voice-comments-to-tickets) 272 + */ 273 + export type ModelFromZendesk = string; 274 + 275 + /** 276 + * This is a model with one string property 277 + */ 278 + export type ModelWithNullableString = { 279 + /** 280 + * This is a simple string property 281 + */ 282 + nullableProp1?: string | null; 283 + /** 284 + * This is a simple string property 285 + */ 286 + nullableRequiredProp1: string | null; 287 + /** 288 + * This is a simple string property 289 + */ 290 + nullableProp2?: string | null; 291 + /** 292 + * This is a simple string property 293 + */ 294 + nullableRequiredProp2: string | null; 295 + /** 296 + * This is a simple enum with strings 297 + */ 298 + 'foo_bar-enum'?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 299 + }; 300 + 301 + /** 302 + * This is a model with one enum 303 + */ 304 + export type ModelWithEnum = { 305 + /** 306 + * This is a simple enum with strings 307 + */ 308 + 'foo_bar-enum'?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 309 + /** 310 + * These are the HTTP error code enums 311 + */ 312 + statusCode?: '100' | '200 FOO' | '300 FOO_BAR' | '400 foo-bar' | '500 foo.bar' | '600 foo&bar'; 313 + /** 314 + * Simple boolean enum 315 + */ 316 + bool?: true; 317 + }; 318 + 319 + /** 320 + * This is a model with one enum with escaped name 321 + */ 322 + export type ModelWithEnumWithHyphen = { 323 + /** 324 + * Foo-Bar-Baz-Qux 325 + */ 326 + 'foo-bar-baz-qux'?: '3.0'; 327 + }; 328 + 329 + /** 330 + * This is a model with one enum 331 + */ 332 + export type ModelWithEnumFromDescription = { 333 + /** 334 + * Success=1,Warning=2,Error=3 335 + */ 336 + test?: number; 337 + }; 338 + 339 + /** 340 + * This is a model with nested enums 341 + */ 342 + export type ModelWithNestedEnums = { 343 + dictionaryWithEnum?: { 344 + [key: string]: 'Success' | 'Warning' | 'Error'; 345 + }; 346 + dictionaryWithEnumFromDescription?: { 347 + [key: string]: number; 348 + }; 349 + arrayWithEnum?: Array<'Success' | 'Warning' | 'Error'>; 350 + arrayWithDescription?: Array<number>; 351 + /** 352 + * This is a simple enum with strings 353 + */ 354 + 'foo_bar-enum'?: 'Success' | 'Warning' | 'Error' | 'ØÆÅ字符串'; 355 + }; 356 + 357 + /** 358 + * This is a model with one property containing a reference 359 + */ 360 + export type ModelWithReference = { 361 + prop?: ModelWithProperties; 362 + }; 363 + 364 + /** 365 + * This is a model with one property containing an array 366 + */ 367 + export type ModelWithArrayReadOnlyAndWriteOnly = { 368 + prop?: Array<ModelWithReadOnlyAndWriteOnly>; 369 + propWithFile?: Array<Blob | File>; 370 + propWithNumber?: Array<number>; 371 + }; 372 + 373 + /** 374 + * This is a model with one property containing an array 375 + */ 376 + export type ModelWithArray = { 377 + prop?: Array<ModelWithString>; 378 + propWithFile?: Array<Blob | File>; 379 + propWithNumber?: Array<number>; 380 + }; 381 + 382 + /** 383 + * This is a model with one property containing a dictionary 384 + */ 385 + export type ModelWithDictionary = { 386 + prop?: { 387 + [key: string]: string; 388 + }; 389 + }; 390 + 391 + /** 392 + * This is a deprecated model with a deprecated property 393 + * 394 + * @deprecated 395 + */ 396 + export type DeprecatedModel = { 397 + /** 398 + * This is a deprecated property 399 + * 400 + * @deprecated 401 + */ 402 + prop?: string; 403 + }; 404 + 405 + /** 406 + * This is a model with one property containing a circular reference 407 + */ 408 + export type ModelWithCircularReference = { 409 + prop?: ModelWithCircularReference; 410 + }; 411 + 412 + /** 413 + * This is a model with one property with a 'one of' relationship 414 + */ 415 + export type CompositionWithOneOf = { 416 + propA?: ModelWithString | ModelWithEnum | ModelWithArray | ModelWithDictionary; 417 + }; 418 + 419 + /** 420 + * This is a model with one property with a 'one of' relationship where the options are not $ref 421 + */ 422 + export type CompositionWithOneOfAnonymous = { 423 + propA?: { 424 + propA?: string; 425 + } | string | number; 426 + }; 427 + 428 + /** 429 + * Circle 430 + */ 431 + export type ModelCircle = { 432 + kind: string; 433 + radius?: number; 434 + }; 435 + 436 + /** 437 + * Square 438 + */ 439 + export type ModelSquare = { 440 + kind: string; 441 + sideLength?: number; 442 + }; 443 + 444 + /** 445 + * This is a model with one property with a 'one of' relationship where the options are not $ref 446 + */ 447 + export type CompositionWithOneOfDiscriminator = ({ 448 + kind: 'circle'; 449 + } & ModelCircle) | ({ 450 + kind: 'square'; 451 + } & ModelSquare); 452 + 453 + /** 454 + * This is a model with one property with a 'any of' relationship 455 + */ 456 + export type CompositionWithAnyOf = { 457 + propA?: ModelWithString | ModelWithEnum | ModelWithArray | ModelWithDictionary; 458 + }; 459 + 460 + /** 461 + * This is a model with one property with a 'any of' relationship where the options are not $ref 462 + */ 463 + export type CompositionWithAnyOfAnonymous = { 464 + propA?: { 465 + propA?: string; 466 + } | string | number; 467 + }; 468 + 469 + /** 470 + * This is a model with nested 'any of' property with a type null 471 + */ 472 + export type CompositionWithNestedAnyAndTypeNull = { 473 + propA?: Array<ModelWithDictionary | null> | Array<ModelWithArray | null>; 474 + }; 475 + 476 + export type _3eNum1Период = 'Bird' | 'Dog'; 477 + 478 + export type ConstValue = 'ConstValue'; 479 + 480 + /** 481 + * This is a model with one property with a 'any of' relationship where the options are not $ref 482 + */ 483 + export type CompositionWithNestedAnyOfAndNull = { 484 + /** 485 + * Scopes 486 + */ 487 + propA?: Array<_3eNum1Период | ConstValue> | null; 488 + }; 489 + 490 + /** 491 + * This is a model with one property with a 'one of' relationship 492 + */ 493 + export type CompositionWithOneOfAndNullable = { 494 + propA?: { 495 + boolean?: boolean; 496 + } | ModelWithEnum | ModelWithArray | ModelWithDictionary | null; 497 + }; 498 + 499 + /** 500 + * This is a model that contains a simple dictionary within composition 501 + */ 502 + export type CompositionWithOneOfAndSimpleDictionary = { 503 + propA?: boolean | { 504 + [key: string]: number; 505 + }; 506 + }; 507 + 508 + /** 509 + * This is a model that contains a dictionary of simple arrays within composition 510 + */ 511 + export type CompositionWithOneOfAndSimpleArrayDictionary = { 512 + propA?: boolean | { 513 + [key: string]: Array<boolean>; 514 + }; 515 + }; 516 + 517 + /** 518 + * This is a model that contains a dictionary of complex arrays (composited) within composition 519 + */ 520 + export type CompositionWithOneOfAndComplexArrayDictionary = { 521 + propA?: boolean | { 522 + [key: string]: Array<number | string>; 523 + }; 524 + }; 525 + 526 + /** 527 + * This is a model with one property with a 'all of' relationship 528 + */ 529 + export type CompositionWithAllOfAndNullable = { 530 + propA?: ({ 531 + boolean?: boolean; 532 + } & ModelWithEnum & ModelWithArray & ModelWithDictionary) | null; 533 + }; 534 + 535 + /** 536 + * This is a model with one property with a 'any of' relationship 537 + */ 538 + export type CompositionWithAnyOfAndNullable = { 539 + propA?: { 540 + boolean?: boolean; 541 + } | ModelWithEnum | ModelWithArray | ModelWithDictionary | null; 542 + }; 543 + 544 + /** 545 + * This is a base model with two simple optional properties 546 + */ 547 + export type CompositionBaseModel = { 548 + firstName?: string; 549 + lastname?: string; 550 + }; 551 + 552 + /** 553 + * This is a model that extends the base model 554 + */ 555 + export type CompositionExtendedModel = CompositionBaseModel & { 556 + age: number; 557 + firstName: string; 558 + lastname: string; 559 + }; 560 + 561 + /** 562 + * This is a model with one nested property 563 + */ 564 + export type ModelWithProperties = { 565 + required: string; 566 + readonly requiredAndReadOnly: string; 567 + requiredAndNullable: string | null; 568 + string?: string; 569 + number?: number; 570 + boolean?: boolean; 571 + reference?: ModelWithString; 572 + 'property with space'?: string; 573 + default?: string; 574 + try?: string; 575 + readonly '@namespace.string'?: string; 576 + readonly '@namespace.integer'?: number; 577 + }; 578 + 579 + /** 580 + * This is a model with one nested property 581 + */ 582 + export type ModelWithNestedProperties = { 583 + readonly first: { 584 + readonly second: { 585 + readonly third: string | null; 586 + } | null; 587 + } | null; 588 + }; 589 + 590 + /** 591 + * This is a model with duplicated properties 592 + */ 593 + export type ModelWithDuplicateProperties = { 594 + prop?: ModelWithString; 595 + }; 596 + 597 + /** 598 + * This is a model with ordered properties 599 + */ 600 + export type ModelWithOrderedProperties = { 601 + zebra?: string; 602 + apple?: string; 603 + hawaii?: string; 604 + }; 605 + 606 + /** 607 + * This is a model with duplicated imports 608 + */ 609 + export type ModelWithDuplicateImports = { 610 + propA?: ModelWithString; 611 + propB?: ModelWithString; 612 + propC?: ModelWithString; 613 + }; 614 + 615 + /** 616 + * This is a model that extends another model 617 + */ 618 + export type ModelThatExtends = ModelWithString & { 619 + propExtendsA?: string; 620 + propExtendsB?: ModelWithString; 621 + }; 622 + 623 + /** 624 + * This is a model that extends another model 625 + */ 626 + export type ModelThatExtendsExtends = ModelWithString & ModelThatExtends & { 627 + propExtendsC?: string; 628 + propExtendsD?: ModelWithString; 629 + }; 630 + 631 + /** 632 + * This is a model that contains a some patterns 633 + */ 634 + export type ModelWithPattern = { 635 + key: string; 636 + name: string; 637 + readonly enabled?: boolean; 638 + readonly modified?: string; 639 + id?: string; 640 + text?: string; 641 + patternWithSingleQuotes?: string; 642 + patternWithNewline?: string; 643 + patternWithBacktick?: string; 644 + patternWithUnicode?: string; 645 + }; 646 + 647 + export type File = { 648 + /** 649 + * Id 650 + */ 651 + readonly id?: string; 652 + /** 653 + * Updated at 654 + */ 655 + readonly updated_at?: string; 656 + /** 657 + * Created at 658 + */ 659 + readonly created_at?: string; 660 + /** 661 + * Mime 662 + */ 663 + mime: string; 664 + /** 665 + * File 666 + */ 667 + readonly file?: string; 668 + }; 669 + 670 + export type Default = { 671 + name?: string; 672 + }; 673 + 674 + export type Pageable = { 675 + page?: number; 676 + size?: number; 677 + sort?: Array<string>; 678 + }; 679 + 680 + /** 681 + * This is a free-form object without additionalProperties. 682 + */ 683 + export type FreeFormObjectWithoutAdditionalProperties = { 684 + [key: string]: unknown; 685 + }; 686 + 687 + /** 688 + * This is a free-form object with additionalProperties: true. 689 + */ 690 + export type FreeFormObjectWithAdditionalPropertiesEqTrue = { 691 + [key: string]: unknown; 692 + }; 693 + 694 + /** 695 + * This is a free-form object with additionalProperties: {}. 696 + */ 697 + export type FreeFormObjectWithAdditionalPropertiesEqEmptyObject = { 698 + [key: string]: unknown; 699 + }; 700 + 701 + export type ModelWithConst = { 702 + String?: 'String'; 703 + number?: 0; 704 + null?: null; 705 + withType?: 'Some string'; 706 + }; 707 + 708 + /** 709 + * This is a model with one property and additionalProperties: true 710 + */ 711 + export type ModelWithAdditionalPropertiesEqTrue = { 712 + /** 713 + * This is a simple string property 714 + */ 715 + prop?: string; 716 + [key: string]: unknown; 717 + }; 718 + 719 + export type NestedAnyOfArraysNullable = { 720 + nullableArray?: Array<string | boolean> | null; 721 + }; 722 + 723 + export type CompositionWithOneOfAndProperties = ({ 724 + foo: SimpleParameter; 725 + } | { 726 + bar: NonAsciiStringæøåÆøÅöôêÊ字符串; 727 + }) & { 728 + baz: number | null; 729 + qux: number; 730 + }; 731 + 732 + /** 733 + * An object that can be null 734 + */ 735 + export type NullableObject = { 736 + foo?: string; 737 + } | null; 738 + 739 + /** 740 + * Some % character 741 + */ 742 + export type CharactersInDescription = string; 743 + 744 + export type ModelWithNullableObject = { 745 + data?: NullableObject; 746 + }; 747 + 748 + /** 749 + * An object with additional properties that can be null (anyOf ref + null) 750 + */ 751 + export type ModelWithAdditionalPropertiesRef = { 752 + [key: string]: NullableObject | null; 753 + }; 754 + 755 + export type ModelWithOneOfEnum = { 756 + foo: 'Bar'; 757 + } | { 758 + foo: 'Baz'; 759 + } | { 760 + foo: 'Qux'; 761 + } | { 762 + content: string; 763 + foo: 'Quux'; 764 + } | { 765 + content: [ 766 + string, 767 + string 768 + ]; 769 + foo: 'Corge'; 770 + }; 771 + 772 + export type ModelWithNestedArrayEnumsDataFoo = 'foo' | 'bar'; 773 + 774 + export type ModelWithNestedArrayEnumsDataBar = 'baz' | 'qux'; 775 + 776 + export type ModelWithNestedArrayEnumsData = { 777 + foo?: Array<ModelWithNestedArrayEnumsDataFoo>; 778 + bar?: Array<ModelWithNestedArrayEnumsDataBar>; 779 + }; 780 + 781 + export type ModelWithNestedArrayEnums = { 782 + array_strings?: Array<string>; 783 + data?: ModelWithNestedArrayEnumsData; 784 + }; 785 + 786 + export type ModelWithNestedCompositionEnums = { 787 + foo?: ModelWithNestedArrayEnumsDataFoo; 788 + }; 789 + 790 + export type ModelWithReadOnlyAndWriteOnly = { 791 + foo: string; 792 + readonly bar: string; 793 + }; 794 + 795 + export type ModelWithConstantSizeArray = [ 796 + number, 797 + number 798 + ]; 799 + 800 + export type ModelWithAnyOfConstantSizeArray = [ 801 + number | string, 802 + number | string, 803 + number | string 804 + ]; 805 + 806 + export type ModelWithPrefixItemsConstantSizeArray = [ 807 + ModelWithInteger, 808 + number | string, 809 + string 810 + ]; 811 + 812 + export type ModelWithAnyOfConstantSizeArrayNullable = [ 813 + number | null | string, 814 + number | null | string, 815 + number | null | string 816 + ]; 817 + 818 + export type ModelWithAnyOfConstantSizeArrayWithNSizeAndOptions = [ 819 + number | Import, 820 + number | Import 821 + ]; 822 + 823 + export type ModelWithAnyOfConstantSizeArrayAndIntersect = [ 824 + number & string, 825 + number & string 826 + ]; 827 + 828 + export type ModelWithNumericEnumUnion = { 829 + /** 830 + * Период 831 + */ 832 + value?: -10 | -1 | 0 | 1 | 3 | 6 | 12; 833 + }; 834 + 835 + /** 836 + * Some description with `back ticks` 837 + */ 838 + export type ModelWithBackticksInDescription = { 839 + /** 840 + * The template `that` should be used for parsing and importing the contents of the CSV file. 841 + * 842 + * <br/><p>There is one placeholder currently supported:<ul> <li><b>${x}</b> - refers to the n-th column in the CSV file, e.g. ${1}, ${2}, ...)</li></ul><p>Example of a correct JSON template:</p> 843 + * <pre> 844 + * [ 845 + * { 846 + * "resourceType": "Asset", 847 + * "identifier": { 848 + * "name": "${1}", 849 + * "domain": { 850 + * "name": "${2}", 851 + * "community": { 852 + * "name": "Some Community" 853 + * } 854 + * } 855 + * }, 856 + * "attributes" : { 857 + * "00000000-0000-0000-0000-000000003115" : [ { 858 + * "value" : "${3}" 859 + * } ], 860 + * "00000000-0000-0000-0000-000000000222" : [ { 861 + * "value" : "${4}" 862 + * } ] 863 + * } 864 + * } 865 + * ] 866 + * </pre> 867 + */ 868 + template?: string; 869 + }; 870 + 871 + export type ModelWithOneOfAndProperties = (SimpleParameter | NonAsciiStringæøåÆøÅöôêÊ字符串) & { 872 + baz: number | null; 873 + qux: number; 874 + }; 875 + 876 + /** 877 + * Model used to test deduplication strategy (unused) 878 + */ 879 + export type ParameterSimpleParameterUnused = string; 880 + 881 + /** 882 + * Model used to test deduplication strategy 883 + */ 884 + export type PostServiceWithEmptyTagResponse = string; 885 + 886 + /** 887 + * Model used to test deduplication strategy 888 + */ 889 + export type PostServiceWithEmptyTagResponse2 = string; 890 + 891 + /** 892 + * Model used to test deduplication strategy 893 + */ 894 + export type DeleteFooData = string; 895 + 896 + /** 897 + * Model used to test deduplication strategy 898 + */ 899 + export type DeleteFooData2 = string; 900 + 901 + /** 902 + * Model with restricted keyword name 903 + */ 904 + export type Import = string; 905 + 906 + export type SchemaWithFormRestrictedKeys = { 907 + description?: string; 908 + 'x-enum-descriptions'?: string; 909 + 'x-enum-varnames'?: string; 910 + 'x-enumNames'?: string; 911 + title?: string; 912 + object?: { 913 + description?: string; 914 + 'x-enum-descriptions'?: string; 915 + 'x-enum-varnames'?: string; 916 + 'x-enumNames'?: string; 917 + title?: string; 918 + }; 919 + array?: Array<{ 920 + description?: string; 921 + 'x-enum-descriptions'?: string; 922 + 'x-enum-varnames'?: string; 923 + 'x-enumNames'?: string; 924 + title?: string; 925 + }>; 926 + }; 927 + 928 + /** 929 + * This schema was giving PascalCase transformations a hard time 930 + */ 931 + export type IoK8sApimachineryPkgApisMetaV1DeleteOptions = { 932 + /** 933 + * Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned. 934 + */ 935 + preconditions?: IoK8sApimachineryPkgApisMetaV1Preconditions; 936 + }; 937 + 938 + /** 939 + * This schema was giving PascalCase transformations a hard time 940 + */ 941 + export type IoK8sApimachineryPkgApisMetaV1Preconditions = { 942 + /** 943 + * Specifies the target ResourceVersion 944 + */ 945 + resourceVersion?: string; 946 + /** 947 + * Specifies the target UID. 948 + */ 949 + uid?: string; 950 + }; 951 + 952 + export type AdditionalPropertiesUnknownIssue = { 953 + [key: string]: string | number; 954 + }; 955 + 956 + export type AdditionalPropertiesUnknownIssue2 = { 957 + [key: string]: string | number; 958 + }; 959 + 960 + export type AdditionalPropertiesUnknownIssue3 = string & { 961 + entries: { 962 + [key: string]: AdditionalPropertiesUnknownIssue; 963 + }; 964 + }; 965 + 966 + export type AdditionalPropertiesIntegerIssue = { 967 + value: number; 968 + [key: string]: number; 969 + }; 970 + 971 + export type OneOfAllOfIssue = ((ConstValue | GenericSchemaDuplicateIssue1SystemBoolean) & _3eNum1Период) | GenericSchemaDuplicateIssue1SystemString; 972 + 973 + export type GenericSchemaDuplicateIssue1SystemBoolean = { 974 + item?: boolean; 975 + error?: string | null; 976 + readonly hasError?: boolean; 977 + data?: { 978 + [key: string]: never; 979 + }; 980 + }; 981 + 982 + export type GenericSchemaDuplicateIssue1SystemString = { 983 + item?: string | null; 984 + error?: string | null; 985 + readonly hasError?: boolean; 986 + }; 987 + 988 + export type ExternalSharedModel = { 989 + id: string; 990 + name?: string; 991 + }; 992 + 993 + /** 994 + * This is a model with one property containing a reference 995 + */ 996 + export type ModelWithReferenceWritable = { 997 + prop?: ModelWithPropertiesWritable; 998 + }; 999 + 1000 + /** 1001 + * This is a model with one property containing an array 1002 + */ 1003 + export type ModelWithArrayReadOnlyAndWriteOnlyWritable = { 1004 + prop?: Array<ModelWithReadOnlyAndWriteOnlyWritable>; 1005 + propWithFile?: Array<Blob | File>; 1006 + propWithNumber?: Array<number>; 1007 + }; 1008 + 1009 + /** 1010 + * This is a model with one nested property 1011 + */ 1012 + export type ModelWithPropertiesWritable = { 1013 + required: string; 1014 + requiredAndNullable: string | null; 1015 + string?: string; 1016 + number?: number; 1017 + boolean?: boolean; 1018 + reference?: ModelWithString; 1019 + 'property with space'?: string; 1020 + default?: string; 1021 + try?: string; 1022 + }; 1023 + 1024 + /** 1025 + * This is a model that contains a some patterns 1026 + */ 1027 + export type ModelWithPatternWritable = { 1028 + key: string; 1029 + name: string; 1030 + id?: string; 1031 + text?: string; 1032 + patternWithSingleQuotes?: string; 1033 + patternWithNewline?: string; 1034 + patternWithBacktick?: string; 1035 + patternWithUnicode?: string; 1036 + }; 1037 + 1038 + export type FileWritable = { 1039 + /** 1040 + * Mime 1041 + */ 1042 + mime: string; 1043 + }; 1044 + 1045 + export type ModelWithReadOnlyAndWriteOnlyWritable = { 1046 + foo: string; 1047 + baz: string; 1048 + }; 1049 + 1050 + export type ModelWithAnyOfConstantSizeArrayWithNSizeAndOptionsWritable = [ 1051 + number | Import, 1052 + number | Import 1053 + ]; 1054 + 1055 + export type AdditionalPropertiesUnknownIssueWritable = { 1056 + [key: string]: string | number; 1057 + }; 1058 + 1059 + export type OneOfAllOfIssueWritable = ((ConstValue | GenericSchemaDuplicateIssue1SystemBoolean) & _3eNum1Период) | GenericSchemaDuplicateIssue1SystemString; 1060 + 1061 + export type GenericSchemaDuplicateIssue1SystemBooleanWritable = { 1062 + item?: boolean; 1063 + error?: string | null; 1064 + data?: { 1065 + [key: string]: never; 1066 + }; 1067 + }; 1068 + 1069 + export type GenericSchemaDuplicateIssue1SystemStringWritable = { 1070 + item?: string | null; 1071 + error?: string | null; 1072 + }; 1073 + 1074 + /** 1075 + * This is a reusable parameter 1076 + */ 1077 + export type SimpleParameter = string; 1078 + 1079 + /** 1080 + * Parameter with illegal characters 1081 + */ 1082 + export type XFooBar = ModelWithString; 1083 + 1084 + /** 1085 + * A reusable request body 1086 + */ 1087 + export type SimpleRequestBody = ModelWithString; 1088 + 1089 + /** 1090 + * A reusable request body 1091 + */ 1092 + export type SimpleFormData = ModelWithString; 1093 + 1094 + export type ExportData = { 1095 + body?: never; 1096 + path?: never; 1097 + query?: never; 1098 + url: '/api/v{api-version}/no+tag'; 1099 + }; 1100 + 1101 + export type PatchApiVbyApiVersionNoTagData = { 1102 + body?: never; 1103 + path?: never; 1104 + query?: never; 1105 + url: '/api/v{api-version}/no+tag'; 1106 + }; 1107 + 1108 + export type PatchApiVbyApiVersionNoTagResponses = { 1109 + /** 1110 + * OK 1111 + */ 1112 + default: unknown; 1113 + }; 1114 + 1115 + export type ImportData = { 1116 + body: ModelWithReadOnlyAndWriteOnlyWritable | ModelWithArrayReadOnlyAndWriteOnlyWritable; 1117 + path?: never; 1118 + query?: never; 1119 + url: '/api/v{api-version}/no+tag'; 1120 + }; 1121 + 1122 + export type ImportResponses = { 1123 + /** 1124 + * Success 1125 + */ 1126 + 200: ModelFromZendesk; 1127 + /** 1128 + * Default success response 1129 + */ 1130 + default: ModelWithReadOnlyAndWriteOnly; 1131 + }; 1132 + 1133 + export type ImportResponse = ImportResponses[keyof ImportResponses]; 1134 + 1135 + export type FooWowData = { 1136 + body?: never; 1137 + path?: never; 1138 + query?: never; 1139 + url: '/api/v{api-version}/no+tag'; 1140 + }; 1141 + 1142 + export type FooWowResponses = { 1143 + /** 1144 + * OK 1145 + */ 1146 + default: unknown; 1147 + }; 1148 + 1149 + export type ApiVVersionODataControllerCountData = { 1150 + body?: never; 1151 + path?: never; 1152 + query?: never; 1153 + url: '/api/v{api-version}/simple/$count'; 1154 + }; 1155 + 1156 + export type ApiVVersionODataControllerCountResponses = { 1157 + /** 1158 + * Success 1159 + */ 1160 + 200: ModelFromZendesk; 1161 + }; 1162 + 1163 + export type ApiVVersionODataControllerCountResponse = ApiVVersionODataControllerCountResponses[keyof ApiVVersionODataControllerCountResponses]; 1164 + 1165 + export type GetApiVbyApiVersionSimpleOperationData = { 1166 + body?: never; 1167 + path: { 1168 + /** 1169 + * foo in method 1170 + */ 1171 + foo_param: string; 1172 + }; 1173 + query?: never; 1174 + url: '/api/v{api-version}/simple:operation'; 1175 + }; 1176 + 1177 + export type GetApiVbyApiVersionSimpleOperationErrors = { 1178 + /** 1179 + * Default error response 1180 + */ 1181 + default: ModelWithBoolean; 1182 + }; 1183 + 1184 + export type GetApiVbyApiVersionSimpleOperationError = GetApiVbyApiVersionSimpleOperationErrors[keyof GetApiVbyApiVersionSimpleOperationErrors]; 1185 + 1186 + export type GetApiVbyApiVersionSimpleOperationResponses = { 1187 + /** 1188 + * Response is a simple number 1189 + */ 1190 + 200: number; 1191 + }; 1192 + 1193 + export type GetApiVbyApiVersionSimpleOperationResponse = GetApiVbyApiVersionSimpleOperationResponses[keyof GetApiVbyApiVersionSimpleOperationResponses]; 1194 + 1195 + export type DeleteCallWithoutParametersAndResponseData = { 1196 + body?: never; 1197 + path?: never; 1198 + query?: never; 1199 + url: '/api/v{api-version}/simple'; 1200 + }; 1201 + 1202 + export type GetCallWithoutParametersAndResponseData = { 1203 + body?: never; 1204 + path?: never; 1205 + query?: never; 1206 + url: '/api/v{api-version}/simple'; 1207 + }; 1208 + 1209 + export type HeadCallWithoutParametersAndResponseData = { 1210 + body?: never; 1211 + path?: never; 1212 + query?: never; 1213 + url: '/api/v{api-version}/simple'; 1214 + }; 1215 + 1216 + export type OptionsCallWithoutParametersAndResponseData = { 1217 + body?: never; 1218 + path?: never; 1219 + query?: never; 1220 + url: '/api/v{api-version}/simple'; 1221 + }; 1222 + 1223 + export type PatchCallWithoutParametersAndResponseData = { 1224 + body?: never; 1225 + path?: never; 1226 + query?: never; 1227 + url: '/api/v{api-version}/simple'; 1228 + }; 1229 + 1230 + export type PostCallWithoutParametersAndResponseData = { 1231 + body?: never; 1232 + path?: never; 1233 + query?: never; 1234 + url: '/api/v{api-version}/simple'; 1235 + }; 1236 + 1237 + export type PutCallWithoutParametersAndResponseData = { 1238 + body?: never; 1239 + path?: never; 1240 + query?: never; 1241 + url: '/api/v{api-version}/simple'; 1242 + }; 1243 + 1244 + export type DeleteFooData3 = { 1245 + body?: never; 1246 + headers: { 1247 + /** 1248 + * Parameter with illegal characters 1249 + */ 1250 + 'x-Foo-Bar': ModelWithString; 1251 + }; 1252 + path: { 1253 + /** 1254 + * foo in method 1255 + */ 1256 + foo_param: string; 1257 + /** 1258 + * bar in method 1259 + */ 1260 + BarParam: string; 1261 + }; 1262 + query?: never; 1263 + url: '/api/v{api-version}/foo/{foo_param}/bar/{BarParam}'; 1264 + }; 1265 + 1266 + export type CallWithDescriptionsData = { 1267 + body?: never; 1268 + path?: never; 1269 + query?: { 1270 + /** 1271 + * Testing multiline comments in string: First line 1272 + * Second line 1273 + * 1274 + * Fourth line 1275 + */ 1276 + parameterWithBreaks?: string; 1277 + /** 1278 + * Testing backticks in string: `backticks` and ```multiple backticks``` should work 1279 + */ 1280 + parameterWithBackticks?: string; 1281 + /** 1282 + * Testing slashes in string: \backwards\\\ and /forwards/// should work 1283 + */ 1284 + parameterWithSlashes?: string; 1285 + /** 1286 + * Testing expression placeholders in string: ${expression} should work 1287 + */ 1288 + parameterWithExpressionPlaceholders?: string; 1289 + /** 1290 + * Testing quotes in string: 'single quote''' and "double quotes""" should work 1291 + */ 1292 + parameterWithQuotes?: string; 1293 + /** 1294 + * Testing reserved characters in string: * inline * and ** inline ** should work 1295 + */ 1296 + parameterWithReservedCharacters?: string; 1297 + }; 1298 + url: '/api/v{api-version}/descriptions'; 1299 + }; 1300 + 1301 + export type DeprecatedCallData = { 1302 + body?: never; 1303 + headers: { 1304 + /** 1305 + * This parameter is deprecated 1306 + * 1307 + * @deprecated 1308 + */ 1309 + parameter: DeprecatedModel | null; 1310 + }; 1311 + path?: never; 1312 + query?: never; 1313 + url: '/api/v{api-version}/parameters/deprecated'; 1314 + }; 1315 + 1316 + export type CallWithParametersData = { 1317 + /** 1318 + * This is the parameter that goes into the body 1319 + */ 1320 + body: { 1321 + [key: string]: unknown; 1322 + } | null; 1323 + headers: { 1324 + /** 1325 + * This is the parameter that goes into the header 1326 + */ 1327 + parameterHeader: string | null; 1328 + }; 1329 + path: { 1330 + /** 1331 + * This is the parameter that goes into the path 1332 + */ 1333 + parameterPath: string | null; 1334 + /** 1335 + * api-version should be required in standalone clients 1336 + */ 1337 + 'api-version': string | null; 1338 + }; 1339 + query: { 1340 + foo_ref_enum?: ModelWithNestedArrayEnumsDataFoo; 1341 + foo_all_of_enum: ModelWithNestedArrayEnumsDataFoo; 1342 + /** 1343 + * This is the parameter that goes into the query params 1344 + */ 1345 + cursor: string | null; 1346 + }; 1347 + url: '/api/v{api-version}/parameters/{parameterPath}'; 1348 + }; 1349 + 1350 + export type CallWithWeirdParameterNamesData = { 1351 + /** 1352 + * This is the parameter that goes into the body 1353 + */ 1354 + body: ModelWithString | null; 1355 + headers: { 1356 + /** 1357 + * This is the parameter that goes into the request header 1358 + */ 1359 + 'parameter.header': string | null; 1360 + }; 1361 + path: { 1362 + /** 1363 + * This is the parameter that goes into the path 1364 + */ 1365 + 'parameter.path.1'?: string; 1366 + /** 1367 + * This is the parameter that goes into the path 1368 + */ 1369 + 'parameter-path-2'?: string; 1370 + /** 1371 + * This is the parameter that goes into the path 1372 + */ 1373 + 'PARAMETER-PATH-3'?: string; 1374 + /** 1375 + * api-version should be required in standalone clients 1376 + */ 1377 + 'api-version': string | null; 1378 + }; 1379 + query: { 1380 + /** 1381 + * This is the parameter with a reserved keyword 1382 + */ 1383 + default?: string; 1384 + /** 1385 + * This is the parameter that goes into the request query params 1386 + */ 1387 + 'parameter-query': string | null; 1388 + }; 1389 + url: '/api/v{api-version}/parameters/{parameter.path.1}/{parameter-path-2}/{PARAMETER-PATH-3}'; 1390 + }; 1391 + 1392 + export type GetCallWithOptionalParamData = { 1393 + /** 1394 + * This is a required parameter 1395 + */ 1396 + body: ModelWithOneOfEnum; 1397 + path?: never; 1398 + query?: { 1399 + /** 1400 + * This is an optional parameter 1401 + */ 1402 + page?: number; 1403 + }; 1404 + url: '/api/v{api-version}/parameters'; 1405 + }; 1406 + 1407 + export type PostCallWithOptionalParamData = { 1408 + /** 1409 + * This is an optional parameter 1410 + */ 1411 + body?: { 1412 + offset?: number | null; 1413 + }; 1414 + path?: never; 1415 + query: { 1416 + /** 1417 + * This is a required parameter 1418 + */ 1419 + parameter: Pageable; 1420 + }; 1421 + url: '/api/v{api-version}/parameters'; 1422 + }; 1423 + 1424 + export type PostCallWithOptionalParamResponses = { 1425 + /** 1426 + * Response is a simple number 1427 + */ 1428 + 200: number; 1429 + /** 1430 + * Success 1431 + */ 1432 + 204: void; 1433 + }; 1434 + 1435 + export type PostCallWithOptionalParamResponse = PostCallWithOptionalParamResponses[keyof PostCallWithOptionalParamResponses]; 1436 + 1437 + export type PostApiVbyApiVersionRequestBodyData = { 1438 + /** 1439 + * A reusable request body 1440 + */ 1441 + body?: SimpleRequestBody; 1442 + path?: never; 1443 + query?: { 1444 + /** 1445 + * This is a reusable parameter 1446 + */ 1447 + parameter?: string; 1448 + }; 1449 + url: '/api/v{api-version}/requestBody'; 1450 + }; 1451 + 1452 + export type PostApiVbyApiVersionFormDataData = { 1453 + /** 1454 + * A reusable request body 1455 + */ 1456 + body?: SimpleFormData; 1457 + path?: never; 1458 + query?: { 1459 + /** 1460 + * This is a reusable parameter 1461 + */ 1462 + parameter?: string; 1463 + }; 1464 + url: '/api/v{api-version}/formData'; 1465 + }; 1466 + 1467 + export type CallWithDefaultParametersData = { 1468 + body?: never; 1469 + path?: never; 1470 + query?: { 1471 + /** 1472 + * This is a simple string with default value 1473 + */ 1474 + parameterString?: string | null; 1475 + /** 1476 + * This is a simple number with default value 1477 + */ 1478 + parameterNumber?: number | null; 1479 + /** 1480 + * This is a simple boolean with default value 1481 + */ 1482 + parameterBoolean?: boolean | null; 1483 + /** 1484 + * This is a simple enum with default value 1485 + */ 1486 + parameterEnum?: 'Success' | 'Warning' | 'Error'; 1487 + /** 1488 + * This is a simple model with default value 1489 + */ 1490 + parameterModel?: ModelWithString | null; 1491 + }; 1492 + url: '/api/v{api-version}/defaults'; 1493 + }; 1494 + 1495 + export type CallWithDefaultOptionalParametersData = { 1496 + body?: never; 1497 + path?: never; 1498 + query?: { 1499 + /** 1500 + * This is a simple string that is optional with default value 1501 + */ 1502 + parameterString?: string; 1503 + /** 1504 + * This is a simple number that is optional with default value 1505 + */ 1506 + parameterNumber?: number; 1507 + /** 1508 + * This is a simple boolean that is optional with default value 1509 + */ 1510 + parameterBoolean?: boolean; 1511 + /** 1512 + * This is a simple enum that is optional with default value 1513 + */ 1514 + parameterEnum?: 'Success' | 'Warning' | 'Error'; 1515 + /** 1516 + * This is a simple model that is optional with default value 1517 + */ 1518 + parameterModel?: ModelWithString; 1519 + }; 1520 + url: '/api/v{api-version}/defaults'; 1521 + }; 1522 + 1523 + export type CallToTestOrderOfParamsData = { 1524 + body?: never; 1525 + path?: never; 1526 + query: { 1527 + /** 1528 + * This is a optional string with default 1529 + */ 1530 + parameterOptionalStringWithDefault?: string; 1531 + /** 1532 + * This is a optional string with empty default 1533 + */ 1534 + parameterOptionalStringWithEmptyDefault?: string; 1535 + /** 1536 + * This is a optional string with no default 1537 + */ 1538 + parameterOptionalStringWithNoDefault?: string; 1539 + /** 1540 + * This is a string with default 1541 + */ 1542 + parameterStringWithDefault: string; 1543 + /** 1544 + * This is a string with empty default 1545 + */ 1546 + parameterStringWithEmptyDefault: string; 1547 + /** 1548 + * This is a string with no default 1549 + */ 1550 + parameterStringWithNoDefault: string; 1551 + /** 1552 + * This is a string that can be null with no default 1553 + */ 1554 + parameterStringNullableWithNoDefault?: string | null; 1555 + /** 1556 + * This is a string that can be null with default 1557 + */ 1558 + parameterStringNullableWithDefault?: string | null; 1559 + }; 1560 + url: '/api/v{api-version}/defaults'; 1561 + }; 1562 + 1563 + export type DuplicateNameData = { 1564 + body?: never; 1565 + path?: never; 1566 + query?: never; 1567 + url: '/api/v{api-version}/duplicate'; 1568 + }; 1569 + 1570 + export type DuplicateName2Data = { 1571 + body?: never; 1572 + path?: never; 1573 + query?: never; 1574 + url: '/api/v{api-version}/duplicate'; 1575 + }; 1576 + 1577 + export type DuplicateName3Data = { 1578 + body?: never; 1579 + path?: never; 1580 + query?: never; 1581 + url: '/api/v{api-version}/duplicate'; 1582 + }; 1583 + 1584 + export type DuplicateName4Data = { 1585 + body?: never; 1586 + path?: never; 1587 + query?: never; 1588 + url: '/api/v{api-version}/duplicate'; 1589 + }; 1590 + 1591 + export type CallWithNoContentResponseData = { 1592 + body?: never; 1593 + path?: never; 1594 + query?: never; 1595 + url: '/api/v{api-version}/no-content'; 1596 + }; 1597 + 1598 + export type CallWithNoContentResponseResponses = { 1599 + /** 1600 + * Success 1601 + */ 1602 + 204: void; 1603 + }; 1604 + 1605 + export type CallWithNoContentResponseResponse = CallWithNoContentResponseResponses[keyof CallWithNoContentResponseResponses]; 1606 + 1607 + export type CallWithResponseAndNoContentResponseData = { 1608 + body?: never; 1609 + path?: never; 1610 + query?: never; 1611 + url: '/api/v{api-version}/multiple-tags/response-and-no-content'; 1612 + }; 1613 + 1614 + export type CallWithResponseAndNoContentResponseResponses = { 1615 + /** 1616 + * Response is a simple number 1617 + */ 1618 + 200: number; 1619 + /** 1620 + * Success 1621 + */ 1622 + 204: void; 1623 + }; 1624 + 1625 + export type CallWithResponseAndNoContentResponseResponse = CallWithResponseAndNoContentResponseResponses[keyof CallWithResponseAndNoContentResponseResponses]; 1626 + 1627 + export type DummyAData = { 1628 + body?: never; 1629 + path?: never; 1630 + query?: never; 1631 + url: '/api/v{api-version}/multiple-tags/a'; 1632 + }; 1633 + 1634 + export type DummyAResponses = { 1635 + 200: _400; 1636 + }; 1637 + 1638 + export type DummyAResponse = DummyAResponses[keyof DummyAResponses]; 1639 + 1640 + export type DummyBData = { 1641 + body?: never; 1642 + path?: never; 1643 + query?: never; 1644 + url: '/api/v{api-version}/multiple-tags/b'; 1645 + }; 1646 + 1647 + export type DummyBResponses = { 1648 + /** 1649 + * Success 1650 + */ 1651 + 204: void; 1652 + }; 1653 + 1654 + export type DummyBResponse = DummyBResponses[keyof DummyBResponses]; 1655 + 1656 + export type CallWithResponseData = { 1657 + body?: never; 1658 + path?: never; 1659 + query?: never; 1660 + url: '/api/v{api-version}/response'; 1661 + }; 1662 + 1663 + export type CallWithResponseResponses = { 1664 + default: Import; 1665 + }; 1666 + 1667 + export type CallWithResponseResponse = CallWithResponseResponses[keyof CallWithResponseResponses]; 1668 + 1669 + export type CallWithDuplicateResponsesData = { 1670 + body?: never; 1671 + path?: never; 1672 + query?: never; 1673 + url: '/api/v{api-version}/response'; 1674 + }; 1675 + 1676 + export type CallWithDuplicateResponsesErrors = { 1677 + /** 1678 + * Message for 500 error 1679 + */ 1680 + 500: ModelWithStringError; 1681 + /** 1682 + * Message for 501 error 1683 + */ 1684 + 501: ModelWithStringError; 1685 + /** 1686 + * Message for 502 error 1687 + */ 1688 + 502: ModelWithStringError; 1689 + /** 1690 + * Message for 4XX errors 1691 + */ 1692 + '4XX': DictionaryWithArray; 1693 + /** 1694 + * Default error response 1695 + */ 1696 + default: ModelWithBoolean; 1697 + }; 1698 + 1699 + export type CallWithDuplicateResponsesError = CallWithDuplicateResponsesErrors[keyof CallWithDuplicateResponsesErrors]; 1700 + 1701 + export type CallWithDuplicateResponsesResponses = { 1702 + /** 1703 + * Message for 200 response 1704 + */ 1705 + 200: ModelWithBoolean & ModelWithInteger; 1706 + /** 1707 + * Message for 201 response 1708 + */ 1709 + 201: ModelWithString; 1710 + /** 1711 + * Message for 202 response 1712 + */ 1713 + 202: ModelWithString; 1714 + }; 1715 + 1716 + export type CallWithDuplicateResponsesResponse = CallWithDuplicateResponsesResponses[keyof CallWithDuplicateResponsesResponses]; 1717 + 1718 + export type CallWithResponsesData = { 1719 + body?: never; 1720 + path?: never; 1721 + query?: never; 1722 + url: '/api/v{api-version}/response'; 1723 + }; 1724 + 1725 + export type CallWithResponsesErrors = { 1726 + /** 1727 + * Message for 500 error 1728 + */ 1729 + 500: ModelWithStringError; 1730 + /** 1731 + * Message for 501 error 1732 + */ 1733 + 501: ModelWithStringError; 1734 + /** 1735 + * Message for 502 error 1736 + */ 1737 + 502: ModelWithStringError; 1738 + /** 1739 + * Message for default response 1740 + */ 1741 + default: ModelWithStringError; 1742 + }; 1743 + 1744 + export type CallWithResponsesError = CallWithResponsesErrors[keyof CallWithResponsesErrors]; 1745 + 1746 + export type CallWithResponsesResponses = { 1747 + /** 1748 + * Message for 200 response 1749 + */ 1750 + 200: { 1751 + readonly '@namespace.string'?: string; 1752 + readonly '@namespace.integer'?: number; 1753 + readonly value?: Array<ModelWithString>; 1754 + }; 1755 + /** 1756 + * Message for 201 response 1757 + */ 1758 + 201: ModelThatExtends; 1759 + /** 1760 + * Message for 202 response 1761 + */ 1762 + 202: ModelThatExtendsExtends; 1763 + }; 1764 + 1765 + export type CallWithResponsesResponse = CallWithResponsesResponses[keyof CallWithResponsesResponses]; 1766 + 1767 + export type CollectionFormatData = { 1768 + body?: never; 1769 + path?: never; 1770 + query: { 1771 + /** 1772 + * This is an array parameter that is sent as csv format (comma-separated values) 1773 + */ 1774 + parameterArrayCSV: Array<string> | null; 1775 + /** 1776 + * This is an array parameter that is sent as ssv format (space-separated values) 1777 + */ 1778 + parameterArraySSV: Array<string> | null; 1779 + /** 1780 + * This is an array parameter that is sent as tsv format (tab-separated values) 1781 + */ 1782 + parameterArrayTSV: Array<string> | null; 1783 + /** 1784 + * This is an array parameter that is sent as pipes format (pipe-separated values) 1785 + */ 1786 + parameterArrayPipes: Array<string> | null; 1787 + /** 1788 + * This is an array parameter that is sent as multi format (multiple parameter instances) 1789 + */ 1790 + parameterArrayMulti: Array<string> | null; 1791 + }; 1792 + url: '/api/v{api-version}/collectionFormat'; 1793 + }; 1794 + 1795 + export type TypesData = { 1796 + body?: never; 1797 + path?: { 1798 + /** 1799 + * This is a number parameter 1800 + */ 1801 + id?: number; 1802 + }; 1803 + query: { 1804 + /** 1805 + * This is a number parameter 1806 + */ 1807 + parameterNumber: number; 1808 + /** 1809 + * This is a string parameter 1810 + */ 1811 + parameterString: string | null; 1812 + /** 1813 + * This is a boolean parameter 1814 + */ 1815 + parameterBoolean: boolean | null; 1816 + /** 1817 + * This is an object parameter 1818 + */ 1819 + parameterObject: { 1820 + [key: string]: unknown; 1821 + } | null; 1822 + /** 1823 + * This is an array parameter 1824 + */ 1825 + parameterArray: Array<string> | null; 1826 + /** 1827 + * This is a dictionary parameter 1828 + */ 1829 + parameterDictionary: { 1830 + [key: string]: unknown; 1831 + } | null; 1832 + /** 1833 + * This is an enum parameter 1834 + */ 1835 + parameterEnum: 'Success' | 'Warning' | 'Error' | null; 1836 + }; 1837 + url: '/api/v{api-version}/types'; 1838 + }; 1839 + 1840 + export type TypesResponses = { 1841 + /** 1842 + * Response is a simple number 1843 + */ 1844 + 200: number; 1845 + /** 1846 + * Response is a simple string 1847 + */ 1848 + 201: string; 1849 + /** 1850 + * Response is a simple boolean 1851 + */ 1852 + 202: boolean; 1853 + /** 1854 + * Response is a simple object 1855 + */ 1856 + 203: { 1857 + [key: string]: unknown; 1858 + }; 1859 + }; 1860 + 1861 + export type TypesResponse = TypesResponses[keyof TypesResponses]; 1862 + 1863 + export type UploadFileData = { 1864 + body: Blob | File; 1865 + path: { 1866 + /** 1867 + * api-version should be required in standalone clients 1868 + */ 1869 + 'api-version': string | null; 1870 + }; 1871 + query?: never; 1872 + url: '/api/v{api-version}/upload'; 1873 + }; 1874 + 1875 + export type UploadFileResponses = { 1876 + 200: boolean; 1877 + }; 1878 + 1879 + export type UploadFileResponse = UploadFileResponses[keyof UploadFileResponses]; 1880 + 1881 + export type FileResponseData = { 1882 + body?: never; 1883 + path: { 1884 + id: string; 1885 + /** 1886 + * api-version should be required in standalone clients 1887 + */ 1888 + 'api-version': string; 1889 + }; 1890 + query?: never; 1891 + url: '/api/v{api-version}/file/{id}'; 1892 + }; 1893 + 1894 + export type FileResponseResponses = { 1895 + /** 1896 + * Success 1897 + */ 1898 + 200: Blob | File; 1899 + }; 1900 + 1901 + export type FileResponseResponse = FileResponseResponses[keyof FileResponseResponses]; 1902 + 1903 + export type ComplexTypesData = { 1904 + body?: never; 1905 + path?: never; 1906 + query: { 1907 + /** 1908 + * Parameter containing object 1909 + */ 1910 + parameterObject: { 1911 + first?: { 1912 + second?: { 1913 + third?: string; 1914 + }; 1915 + }; 1916 + }; 1917 + /** 1918 + * Parameter containing reference 1919 + */ 1920 + parameterReference: ModelWithString; 1921 + }; 1922 + url: '/api/v{api-version}/complex'; 1923 + }; 1924 + 1925 + export type ComplexTypesErrors = { 1926 + /** 1927 + * 400 `server` error 1928 + */ 1929 + 400: unknown; 1930 + /** 1931 + * 500 server error 1932 + */ 1933 + 500: unknown; 1934 + }; 1935 + 1936 + export type ComplexTypesResponses = { 1937 + /** 1938 + * Successful response 1939 + */ 1940 + 200: Array<ModelWithString>; 1941 + }; 1942 + 1943 + export type ComplexTypesResponse = ComplexTypesResponses[keyof ComplexTypesResponses]; 1944 + 1945 + export type MultipartResponseData = { 1946 + body?: never; 1947 + path?: never; 1948 + query?: never; 1949 + url: '/api/v{api-version}/multipart'; 1950 + }; 1951 + 1952 + export type MultipartResponseResponses = { 1953 + /** 1954 + * OK 1955 + */ 1956 + 200: { 1957 + file?: Blob | File; 1958 + metadata?: { 1959 + foo?: string; 1960 + bar?: string; 1961 + }; 1962 + }; 1963 + }; 1964 + 1965 + export type MultipartResponseResponse = MultipartResponseResponses[keyof MultipartResponseResponses]; 1966 + 1967 + export type MultipartRequestData = { 1968 + body?: { 1969 + content?: Blob | File; 1970 + data?: ModelWithString | null; 1971 + }; 1972 + path?: never; 1973 + query?: never; 1974 + url: '/api/v{api-version}/multipart'; 1975 + }; 1976 + 1977 + export type ComplexParamsData = { 1978 + body?: { 1979 + readonly key: string | null; 1980 + name: string | null; 1981 + enabled?: boolean; 1982 + type: 'Monkey' | 'Horse' | 'Bird'; 1983 + listOfModels?: Array<ModelWithString> | null; 1984 + listOfStrings?: Array<string> | null; 1985 + parameters: ModelWithString | ModelWithEnum | ModelWithArray | ModelWithDictionary; 1986 + readonly user?: { 1987 + readonly id?: number; 1988 + readonly name?: string | null; 1989 + }; 1990 + }; 1991 + path: { 1992 + id: number; 1993 + /** 1994 + * api-version should be required in standalone clients 1995 + */ 1996 + 'api-version': string; 1997 + }; 1998 + query?: never; 1999 + url: '/api/v{api-version}/complex/{id}'; 2000 + }; 2001 + 2002 + export type ComplexParamsResponses = { 2003 + /** 2004 + * Success 2005 + */ 2006 + 200: ModelWithString; 2007 + }; 2008 + 2009 + export type ComplexParamsResponse = ComplexParamsResponses[keyof ComplexParamsResponses]; 2010 + 2011 + export type CallWithResultFromHeaderData = { 2012 + body?: never; 2013 + path?: never; 2014 + query?: never; 2015 + url: '/api/v{api-version}/header'; 2016 + }; 2017 + 2018 + export type CallWithResultFromHeaderErrors = { 2019 + /** 2020 + * 400 server error 2021 + */ 2022 + 400: unknown; 2023 + /** 2024 + * 500 server error 2025 + */ 2026 + 500: unknown; 2027 + }; 2028 + 2029 + export type CallWithResultFromHeaderResponses = { 2030 + /** 2031 + * Successful response 2032 + */ 2033 + 200: unknown; 2034 + }; 2035 + 2036 + export type TestErrorCodeData = { 2037 + body?: never; 2038 + path?: never; 2039 + query: { 2040 + /** 2041 + * Status code to return 2042 + */ 2043 + status: number; 2044 + }; 2045 + url: '/api/v{api-version}/error'; 2046 + }; 2047 + 2048 + export type TestErrorCodeErrors = { 2049 + /** 2050 + * Custom message: Internal Server Error 2051 + */ 2052 + 500: unknown; 2053 + /** 2054 + * Custom message: Not Implemented 2055 + */ 2056 + 501: unknown; 2057 + /** 2058 + * Custom message: Bad Gateway 2059 + */ 2060 + 502: unknown; 2061 + /** 2062 + * Custom message: Service Unavailable 2063 + */ 2064 + 503: unknown; 2065 + }; 2066 + 2067 + export type TestErrorCodeResponses = { 2068 + /** 2069 + * Custom message: Successful response 2070 + */ 2071 + 200: unknown; 2072 + }; 2073 + 2074 + export type NonAsciiæøåÆøÅöôêÊ字符串Data = { 2075 + body?: never; 2076 + path?: never; 2077 + query: { 2078 + /** 2079 + * Dummy input param 2080 + */ 2081 + nonAsciiParamæøåÆØÅöôêÊ: number; 2082 + }; 2083 + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; 2084 + }; 2085 + 2086 + export type NonAsciiæøåÆøÅöôêÊ字符串Responses = { 2087 + /** 2088 + * Successful response 2089 + */ 2090 + 200: Array<NonAsciiStringæøåÆøÅöôêÊ字符串>; 2091 + }; 2092 + 2093 + export type NonAsciiæøåÆøÅöôêÊ字符串Response = NonAsciiæøåÆøÅöôêÊ字符串Responses[keyof NonAsciiæøåÆøÅöôêÊ字符串Responses]; 2094 + 2095 + export type PutWithFormUrlEncodedData = { 2096 + body: ArrayWithStrings; 2097 + path?: never; 2098 + query?: never; 2099 + url: '/api/v{api-version}/non-ascii-æøåÆØÅöôêÊ字符串'; 2100 + };
+16
packages/openapi-ts-tests/nestjs/v11/package.json
··· 1 + { 2 + "name": "@test/openapi-ts-nestjs-v11", 3 + "version": "0.0.0", 4 + "private": true, 5 + "type": "module", 6 + "scripts": { 7 + "typecheck": "tsgo --noEmit" 8 + }, 9 + "devDependencies": { 10 + "@hey-api/openapi-ts": "workspace:*", 11 + "typescript": "5.9.3" 12 + }, 13 + "engines": { 14 + "node": ">=20.19.0" 15 + } 16 + }
+66
packages/openapi-ts-tests/nestjs/v11/test/plugins.test.ts
··· 1 + import fs from 'node:fs'; 2 + import path from 'node:path'; 3 + import { fileURLToPath } from 'node:url'; 4 + 5 + import { createClient, type UserConfig } from '@hey-api/openapi-ts'; 6 + 7 + import { getFilePaths, getSpecsPath } from '../../../utils'; 8 + 9 + const __filename = fileURLToPath(import.meta.url); 10 + const __dirname = path.dirname(__filename); 11 + 12 + const versions = ['2.0.x', '3.0.x', '3.1.x']; 13 + 14 + for (const version of versions) { 15 + const outputDir = path.join(__dirname, '..', '.gen', 'snapshots', version); 16 + const snapshotsDir = path.join(__dirname, '..', '__snapshots__', version); 17 + 18 + describe(`OpenAPI ${version} nestjs`, () => { 19 + const createConfig = ( 20 + userConfig: Omit<UserConfig, 'input'> & 21 + Pick<Required<UserConfig>, 'plugins'> & 22 + Pick<Partial<UserConfig>, 'input'>, 23 + ) => 24 + ({ 25 + ...userConfig, 26 + input: path.join( 27 + getSpecsPath(), 28 + version, 29 + typeof userConfig.input === 'string' ? userConfig.input : 'full.yaml', 30 + ), 31 + logs: { 32 + level: 'silent', 33 + }, 34 + output: path.join( 35 + outputDir, 36 + typeof userConfig.output === 'string' ? userConfig.output : '', 37 + ), 38 + plugins: userConfig.plugins ?? ['@hey-api/client-fetch'], 39 + }) as const satisfies UserConfig; 40 + 41 + const scenarios = [ 42 + { 43 + config: createConfig({ 44 + output: 'default', 45 + plugins: ['nestjs'], 46 + }), 47 + description: 'generate NestJS types with NestJS plugin', 48 + }, 49 + ]; 50 + 51 + it.each(scenarios)('$description', async ({ config }) => { 52 + await createClient(config); 53 + 54 + const filePaths = getFilePaths(config.output); 55 + 56 + await Promise.all( 57 + filePaths.map(async (filePath) => { 58 + const fileContent = fs.readFileSync(filePath, 'utf-8'); 59 + await expect(fileContent).toMatchFileSnapshot( 60 + path.join(snapshotsDir, filePath.slice(outputDir.length + 1)), 61 + ); 62 + }), 63 + ); 64 + }); 65 + }); 66 + }
+6
packages/openapi-ts-tests/nestjs/v11/tsconfig.json
··· 1 + { 2 + "extends": "../../tsconfig.base.json", 3 + "include": ["test/**/*", "__snapshots__/**/*"], 4 + "exclude": [".gen/**/*"], 5 + "references": [{ "path": "../../../openapi-ts" }] 6 + }
+10
packages/openapi-ts-tests/nestjs/v11/turbo.json
··· 1 + { 2 + "$schema": "../../../../node_modules/turbo/schema.json", 3 + "extends": ["//"], 4 + "tasks": { 5 + "build": { 6 + "dependsOn": [], 7 + "outputs": ["dist/**"] 8 + } 9 + } 10 + }
+7
packages/openapi-ts-tests/nestjs/v11/vitest.setup.ts
··· 1 + import { fileURLToPath } from 'node:url'; 2 + 3 + import { beforeAll } from 'vitest'; 4 + 5 + beforeAll(() => { 6 + process.chdir(fileURLToPath(new URL('.', import.meta.url))); 7 + });
+1 -1
packages/openapi-ts/README.md
··· 343 343 - [`@tanstack/svelte-query`](https://heyapi.dev/openapi-ts/plugins/tanstack-query) 344 344 - [`@tanstack/vue-query`](https://heyapi.dev/openapi-ts/plugins/tanstack-query) 345 345 - [`fastify`](https://heyapi.dev/openapi-ts/plugins/fastify) 346 + - [`nestjs`](https://heyapi.dev/openapi-ts/plugins/nest) 346 347 - [`valibot`](https://heyapi.dev/openapi-ts/plugins/valibot) 347 348 - [`zod`](https://heyapi.dev/openapi-ts/plugins/zod) 348 349 ··· 362 363 - [Joi](https://heyapi.dev/openapi-ts/plugins/joi) 363 364 - [Koa](https://heyapi.dev/openapi-ts/plugins/koa) 364 365 - [MSW](https://heyapi.dev/openapi-ts/plugins/msw) 365 - - [Nest](https://heyapi.dev/openapi-ts/plugins/nest) 366 366 - [Nock](https://heyapi.dev/openapi-ts/plugins/nock) 367 367 - [Superstruct](https://heyapi.dev/openapi-ts/plugins/superstruct) 368 368 - [Supertest](https://heyapi.dev/openapi-ts/plugins/supertest)
+6
packages/openapi-ts/src/index.ts
··· 80 80 '@tanstack/vue-query': Plugins.TanStackVueQuery.Types['Types']; 81 81 arktype: Plugins.Arktype.Types['Types']; 82 82 fastify: Plugins.Fastify.Types['Types']; 83 + nestjs: Plugins.NestJs.Types['Types']; 83 84 swr: Plugins.Swr.Types['Types']; 84 85 valibot: Plugins.Valibot.Types['Types']; 85 86 zod: Plugins.Zod.Types['Types']; ··· 140 141 import type { TanStackVueQueryPlugin } from './plugins/@tanstack/vue-query'; 141 142 import type { ArktypePlugin } from './plugins/arktype'; 142 143 import type { FastifyPlugin } from './plugins/fastify'; 144 + import type { NestJsPlugin } from './plugins/nestjs'; 143 145 import type { SwrPlugin } from './plugins/swr'; 144 146 import type { ValibotPlugin, ValibotResolvers } from './plugins/valibot'; 145 147 import type { ZodPlugin, ZodResolvers } from './plugins/zod'; ··· 259 261 export namespace HeyApiTypeScript { 260 262 export type Resolvers = Required<HeyApiTypeScriptResolvers>['~resolvers']; 261 263 export type Types = HeyApiTypeScriptPlugin; 264 + } 265 + 266 + export namespace NestJs { 267 + export type Types = NestJsPlugin; 262 268 } 263 269 264 270 export namespace PiniaColada {
+2
packages/openapi-ts/src/plugins/config.ts
··· 22 22 import { defaultConfig as tanStackVueQuery } from '../plugins/@tanstack/vue-query'; 23 23 import { defaultConfig as arktype } from '../plugins/arktype'; 24 24 import { defaultConfig as fastify } from '../plugins/fastify'; 25 + import { defaultConfig as nestjs } from '../plugins/nestjs'; 25 26 import { defaultConfig as swr } from '../plugins/swr'; 26 27 import { defaultConfig as valibot } from '../plugins/valibot'; 27 28 import { defaultConfig as zod } from '../plugins/zod'; ··· 51 52 '@tanstack/vue-query': tanStackVueQuery, 52 53 arktype, 53 54 fastify, 55 + nestjs, 54 56 swr, 55 57 valibot, 56 58 zod,
+18
packages/openapi-ts/src/plugins/nestjs/config.ts
··· 1 + import { definePluginConfig } from '@hey-api/shared'; 2 + 3 + import { handler } from './plugin'; 4 + import type { NestJsPlugin } from './types'; 5 + 6 + export const defaultConfig: NestJsPlugin['Config'] = { 7 + config: { 8 + includeInEntry: false, 9 + }, 10 + dependencies: ['@hey-api/typescript'], 11 + handler, 12 + name: 'nestjs', 13 + }; 14 + 15 + /** 16 + * Type helper for `nestjs` plugin, returns {@link Plugin.Config} object 17 + */ 18 + export const defineConfig = definePluginConfig(defaultConfig);
+2
packages/openapi-ts/src/plugins/nestjs/index.ts
··· 1 + export { defaultConfig, defineConfig } from './config'; 2 + export type { NestJsPlugin } from './types';
+143
packages/openapi-ts/src/plugins/nestjs/plugin.ts
··· 1 + import type { IR } from '@hey-api/shared'; 2 + import { hasParameterGroupObjectRequired, operationResponsesMap, toCase } from '@hey-api/shared'; 3 + 4 + import { $ } from '../../ts-dsl'; 5 + import type { NestJsPlugin } from './types'; 6 + 7 + const operationToMethod = ({ 8 + operation, 9 + plugin, 10 + }: { 11 + operation: IR.OperationObject; 12 + plugin: NestJsPlugin['Instance']; 13 + }) => { 14 + const funcType = $.type.func(); 15 + 16 + const symbolDataType = plugin.querySymbol({ 17 + category: 'type', 18 + resource: 'operation', 19 + resourceId: operation.id, 20 + role: 'data', 21 + tool: 'typescript', 22 + }); 23 + 24 + if (symbolDataType) { 25 + // Collect params so we can sort required before optional. 26 + // Without this, TypeScript would reject signatures like 27 + // (query?: T, body: U) => ... where optional precedes required. 28 + const params: Array<{ 29 + isRequired: boolean; 30 + key: string; 31 + }> = []; 32 + 33 + if (operation.parameters?.path) { 34 + params.push({ 35 + isRequired: hasParameterGroupObjectRequired(operation.parameters.path), 36 + key: 'path', 37 + }); 38 + } 39 + 40 + if (operation.parameters?.query) { 41 + params.push({ 42 + isRequired: hasParameterGroupObjectRequired(operation.parameters.query), 43 + key: 'query', 44 + }); 45 + } 46 + 47 + if (operation.body) { 48 + params.push({ 49 + isRequired: operation.body.required ?? false, 50 + key: 'body', 51 + }); 52 + } 53 + 54 + if (operation.parameters?.header) { 55 + params.push({ 56 + isRequired: hasParameterGroupObjectRequired(operation.parameters.header), 57 + key: 'headers', 58 + }); 59 + } 60 + 61 + // Stable sort: required params first, optional params last 62 + params.sort((a, b) => (a.isRequired === b.isRequired ? 0 : a.isRequired ? -1 : 1)); 63 + 64 + for (const param of params) { 65 + funcType.param(param.key, (p) => 66 + p.required(param.isRequired).type($.type(symbolDataType).idx($.type.literal(param.key))), 67 + ); 68 + } 69 + } 70 + 71 + // Use the response type alias (union of success bodies), not the 72 + // status-code-indexed responses map. NestJS controllers return values 73 + // directly, not status-code mappings. 74 + const { responses } = operationResponsesMap(operation); 75 + 76 + const symbolResponseType = plugin.querySymbol({ 77 + category: 'type', 78 + resource: 'operation', 79 + resourceId: operation.id, 80 + role: 'response', 81 + tool: 'typescript', 82 + }); 83 + 84 + if (symbolResponseType && responses) { 85 + funcType.returns($.type('Promise', (t) => t.generic($.type(symbolResponseType)))); 86 + } else { 87 + funcType.returns($.type('Promise', (t) => t.generic($.type('void')))); 88 + } 89 + 90 + return { 91 + name: operation.id, 92 + type: funcType, 93 + }; 94 + }; 95 + 96 + const emitTypeAlias = ({ 97 + methods, 98 + plugin, 99 + typeName, 100 + }: { 101 + methods: Array<{ name: string; type: ReturnType<typeof $.type.func> }>; 102 + plugin: NestJsPlugin['Instance']; 103 + typeName: string; 104 + }) => { 105 + const symbol = plugin.symbol(typeName); 106 + const type = $.type.object(); 107 + for (const method of methods) { 108 + type.prop(method.name, (p) => p.type(method.type)); 109 + } 110 + plugin.node($.type.alias(symbol).export().type(type)); 111 + }; 112 + 113 + export const handler: NestJsPlugin['Handler'] = ({ plugin }) => { 114 + // Collect operations by tag, then emit per-tag types 115 + const operationsByTag = new Map< 116 + string, 117 + Array<{ name: string; type: ReturnType<typeof $.type.func> }> 118 + >(); 119 + 120 + plugin.forEach( 121 + 'operation', 122 + ({ operation, tags }) => { 123 + const tag = tags?.[0] ?? 'default'; 124 + if (!operationsByTag.has(tag)) { 125 + operationsByTag.set(tag, []); 126 + } 127 + const method = operationToMethod({ operation, plugin }); 128 + operationsByTag.get(tag)!.push(method); 129 + }, 130 + { 131 + order: 'declarations', 132 + }, 133 + ); 134 + 135 + for (const [tag, methods] of operationsByTag) { 136 + const pascalTag = toCase(tag, 'PascalCase'); 137 + emitTypeAlias({ 138 + methods, 139 + plugin, 140 + typeName: `${pascalTag}ControllerMethods`, 141 + }); 142 + } 143 + };
+5
packages/openapi-ts/src/plugins/nestjs/types.ts
··· 1 + import type { DefinePlugin, Plugin } from '@hey-api/shared'; 2 + 3 + export type UserConfig = Plugin.Name<'nestjs'> & Plugin.Hooks & Plugin.UserExports; 4 + 5 + export type NestJsPlugin = DefinePlugin<UserConfig, UserConfig>;
+862 -398
pnpm-lock.yaml
··· 81 81 version: 0.40.0 82 82 tsdown: 83 83 specifier: 0.21.3 84 - version: 0.21.3(@arethetypeswrong/core@0.18.2)(@typescript/native-preview@7.0.0-dev.20260312.1)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)) 84 + version: 0.21.3(@arethetypeswrong/core@0.18.2)(@typescript/native-preview@7.0.0-dev.20260312.1)(oxc-resolver@11.19.1)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)) 85 85 tsx: 86 86 specifier: 4.21.0 87 87 version: 4.21.0 ··· 230 230 devDependencies: 231 231 '@angular-devkit/build-angular': 232 232 specifier: 21.1.2 233 - version: 21.1.2(8e317fb962be684ea660a36b6a37c5df) 233 + version: 21.1.2(b9fcfc698b20164011953e0b05a5c087) 234 234 '@angular/cli': 235 235 specifier: 21.1.2 236 236 version: 21.1.2(@types/node@24.10.10)(chokidar@5.0.0)(hono@4.11.8) ··· 324 324 devDependencies: 325 325 '@angular-devkit/build-angular': 326 326 specifier: 21.1.2 327 - version: 21.1.2(fa2c50346f9355ac74dcf2ab0f67cd85) 327 + version: 21.1.2(e7024e150686e3bbe2cdedb5695d6284) 328 328 '@angular/cli': 329 329 specifier: 21.1.2 330 330 version: 21.1.2(@types/node@24.10.10)(chokidar@5.0.0)(hono@4.11.8) ··· 433 433 version: 8.4.41 434 434 tailwindcss: 435 435 specifier: 3.4.9 436 - version: 3.4.9(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 436 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 437 437 typescript: 438 438 specifier: 5.9.3 439 439 version: 5.9.3 ··· 525 525 version: 8.4.41 526 526 tailwindcss: 527 527 specifier: 3.4.9 528 - version: 3.4.9(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 528 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 529 529 typescript: 530 530 specifier: 5.9.3 531 531 version: 5.9.3 ··· 592 592 version: 8.4.41 593 593 tailwindcss: 594 594 specifier: 3.4.9 595 - version: 3.4.9(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 595 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 596 596 typescript: 597 597 specifier: 5.9.3 598 598 version: 5.9.3 ··· 600 600 specifier: 7.3.1 601 601 version: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 602 602 603 + examples/openapi-ts-nestjs: 604 + dependencies: 605 + '@nestjs/common': 606 + specifier: ^11.0.1 607 + version: 11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2) 608 + '@nestjs/core': 609 + specifier: ^11.0.1 610 + version: 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.16)(reflect-metadata@0.2.2)(rxjs@7.8.2) 611 + '@nestjs/platform-express': 612 + specifier: ^11.0.1 613 + version: 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.16) 614 + reflect-metadata: 615 + specifier: ^0.2.2 616 + version: 0.2.2 617 + rxjs: 618 + specifier: ^7.8.1 619 + version: 7.8.2 620 + devDependencies: 621 + '@hey-api/openapi-ts': 622 + specifier: workspace:* 623 + version: link:../../packages/openapi-ts 624 + '@nestjs/testing': 625 + specifier: ^11.0.1 626 + version: 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.16)(@nestjs/platform-express@11.1.16) 627 + '@swc-node/register': 628 + specifier: ^1.10.10 629 + version: 1.11.1(@swc/core@1.15.18)(@swc/types@0.1.25)(typescript@5.9.3) 630 + '@swc/core': 631 + specifier: ^1.11.29 632 + version: 1.15.18 633 + eslint: 634 + specifier: ^9.18.0 635 + version: 9.39.2(jiti@2.6.1) 636 + oxfmt: 637 + specifier: ^0.27.0 638 + version: 0.27.0 639 + typescript: 640 + specifier: ^5.9.3 641 + version: 5.9.3 642 + unplugin-swc: 643 + specifier: ^1.5.5 644 + version: 1.5.9(@swc/core@1.15.18)(rollup@4.56.0) 645 + vite: 646 + specifier: ^7.3.1 647 + version: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 648 + vitest: 649 + specifier: ^4.0.18 650 + version: 4.1.0(@types/node@25.2.1)(jsdom@28.0.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 651 + 603 652 examples/openapi-ts-next: 604 653 dependencies: 605 654 next: ··· 635 684 version: 8.4.41 636 685 tailwindcss: 637 686 specifier: 3.4.9 638 - version: 3.4.9(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 687 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 639 688 typescript: 640 689 specifier: 5.9.3 641 690 version: 5.9.3 ··· 724 773 version: 8.4.41 725 774 tailwindcss: 726 775 specifier: 3.4.9 727 - version: 3.4.9(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 776 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 728 777 typescript: 729 778 specifier: 5.9.3 730 779 version: 5.9.3 ··· 800 849 version: 8.4.41 801 850 tailwindcss: 802 851 specifier: 3.4.9 803 - version: 3.4.9(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 852 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 804 853 typescript: 805 854 specifier: 5.9.3 806 855 version: 5.9.3 ··· 879 928 version: 8.4.41 880 929 tailwindcss: 881 930 specifier: 3.4.9 882 - version: 3.4.9(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 931 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 883 932 typescript: 884 933 specifier: 5.9.3 885 934 version: 5.9.3 ··· 943 992 devDependencies: 944 993 '@angular-devkit/build-angular': 945 994 specifier: 21.1.2 946 - version: 21.1.2(7a0ea2bf4566d6c254ebfd7a3d4a6f07) 995 + version: 21.1.2(bfb22c0d38474de5255b56daa3b8edae) 947 996 '@angular/cli': 948 997 specifier: 21.1.2 949 998 version: 21.1.2(@types/node@25.2.1)(chokidar@5.0.0)(hono@4.11.8) ··· 1040 1089 version: 8.4.41 1041 1090 tailwindcss: 1042 1091 specifier: 3.4.9 1043 - version: 3.4.9(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 1092 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 1044 1093 typescript: 1045 1094 specifier: 5.9.3 1046 1095 version: 5.9.3 ··· 1080 1129 version: 9.17.0(jiti@2.6.1) 1081 1130 eslint-plugin-svelte: 1082 1131 specifier: 2.36.0 1083 - version: 2.36.0(eslint@9.17.0(jiti@2.6.1))(svelte@5.19.9)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 1132 + version: 2.36.0(eslint@9.17.0(jiti@2.6.1))(svelte@5.19.9)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 1084 1133 globals: 1085 1134 specifier: 15.14.0 1086 1135 version: 15.14.0 ··· 1177 1226 version: 8.4.41 1178 1227 tailwindcss: 1179 1228 specifier: 3.4.9 1180 - version: 3.4.9(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 1229 + version: 3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 1181 1230 typescript: 1182 1231 specifier: 5.9.3 1183 1232 version: 5.9.3 ··· 1260 1309 version: 1.8.0 1261 1310 nuxt: 1262 1311 specifier: '>=3.0.0' 1263 - version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)) 1312 + version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)) 1264 1313 vue: 1265 1314 specifier: '>=3.5.13' 1266 1315 version: 3.5.13(typescript@5.9.3) ··· 1392 1441 version: 1.14.3 1393 1442 nuxt: 1394 1443 specifier: 3.14.1592 1395 - version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.1(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue-tsc@3.2.4(typescript@5.9.3)) 1444 + version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.1(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)) 1396 1445 ofetch: 1397 1446 specifier: 1.5.1 1398 1447 version: 1.5.1 ··· 1416 1465 devDependencies: 1417 1466 '@angular-devkit/build-angular': 1418 1467 specifier: 21.1.2 1419 - version: 21.1.2(7a0ea2bf4566d6c254ebfd7a3d4a6f07) 1468 + version: 21.1.2(bfb22c0d38474de5255b56daa3b8edae) 1420 1469 '@angular/animations': 1421 1470 specifier: 21.1.2 1422 1471 version: 21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)) ··· 1525 1574 zod: 1526 1575 specifier: 4.3.6 1527 1576 version: 4.3.6 1577 + 1578 + packages/openapi-ts-tests/nestjs/v11: 1579 + devDependencies: 1580 + '@hey-api/openapi-ts': 1581 + specifier: workspace:* 1582 + version: link:../../../openapi-ts 1583 + typescript: 1584 + specifier: 5.9.3 1585 + version: 5.9.3 1528 1586 1529 1587 packages/openapi-ts-tests/sdks: 1530 1588 devDependencies: ··· 2668 2726 optional: true 2669 2727 commander: 2670 2728 optional: true 2729 + 2730 + '@borewit/text-codec@0.2.2': 2731 + resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} 2671 2732 2672 2733 '@braidai/lang@1.1.2': 2673 2734 resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} ··· 4535 4596 '@loaderkit/resolve@1.0.4': 4536 4597 resolution: {integrity: sha512-rJzYKVcV4dxJv+vW6jlvagF8zvGxHJ2+HTr1e2qOejfmGhAApgJHl8Aog4mMszxceTRiKTTbnpgmTO1bEZHV/A==} 4537 4598 4599 + '@lukeed/csprng@1.1.0': 4600 + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} 4601 + engines: {node: '>=8'} 4602 + 4538 4603 '@manypkg/find-root@1.1.0': 4539 4604 resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 4540 4605 ··· 4708 4773 '@neoconfetti/svelte@2.0.0': 4709 4774 resolution: {integrity: sha512-n/Uu7/XmHc8w0uBci0QWBjgbRzLhfWsH8yPJ5pMaseIvzSwabXvB30nb3JjzEYNBp9uGt4eCeY7LUmxAjnJV8A==} 4710 4775 4776 + '@nestjs/common@11.1.16': 4777 + resolution: {integrity: sha512-JSIeW+USuMJkkcNbiOdcPkVCeI3TSnXstIVEPpp3HiaKnPRuSbUUKm9TY9o/XpIcPHWUOQItAtC5BiAwFdVITQ==} 4778 + peerDependencies: 4779 + class-transformer: '>=0.4.1' 4780 + class-validator: '>=0.13.2' 4781 + reflect-metadata: ^0.1.12 || ^0.2.0 4782 + rxjs: ^7.1.0 4783 + peerDependenciesMeta: 4784 + class-transformer: 4785 + optional: true 4786 + class-validator: 4787 + optional: true 4788 + 4789 + '@nestjs/core@11.1.16': 4790 + resolution: {integrity: sha512-tXWXyCiqWthelJjrE0KLFjf0O98VEt+WPVx5CrqCf+059kIxJ8y1Vw7Cy7N4fwQafWNrmFL2AfN87DDMbVAY0w==} 4791 + engines: {node: '>= 20'} 4792 + peerDependencies: 4793 + '@nestjs/common': ^11.0.0 4794 + '@nestjs/microservices': ^11.0.0 4795 + '@nestjs/platform-express': ^11.0.0 4796 + '@nestjs/websockets': ^11.0.0 4797 + reflect-metadata: ^0.1.12 || ^0.2.0 4798 + rxjs: ^7.1.0 4799 + peerDependenciesMeta: 4800 + '@nestjs/microservices': 4801 + optional: true 4802 + '@nestjs/platform-express': 4803 + optional: true 4804 + '@nestjs/websockets': 4805 + optional: true 4806 + 4807 + '@nestjs/platform-express@11.1.16': 4808 + resolution: {integrity: sha512-IOegr5+ZfUiMKgk+garsSU4MOkPRhm46e6w8Bp1GcO4vCdl9Piz6FlWAzKVfa/U3Hn/DdzSVJOW3TWcQQFdBDw==} 4809 + peerDependencies: 4810 + '@nestjs/common': ^11.0.0 4811 + '@nestjs/core': ^11.0.0 4812 + 4813 + '@nestjs/testing@11.1.16': 4814 + resolution: {integrity: sha512-E7/aUCxzeMSJV80L5GWGIuiMyR/1ncS7uOIetAImfbS4ATE1/h2GBafk0qpk+vjFtPIbtoh9BWDGICzUEU5jDA==} 4815 + peerDependencies: 4816 + '@nestjs/common': ^11.0.0 4817 + '@nestjs/core': ^11.0.0 4818 + '@nestjs/microservices': ^11.0.0 4819 + '@nestjs/platform-express': ^11.0.0 4820 + peerDependenciesMeta: 4821 + '@nestjs/microservices': 4822 + optional: true 4823 + '@nestjs/platform-express': 4824 + optional: true 4825 + 4711 4826 '@netlify/binary-info@1.0.0': 4712 4827 resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==} 4713 4828 ··· 4934 5049 engines: {node: ^20.19.0 || >=22.12.0} 4935 5050 peerDependencies: 4936 5051 nuxt: ^3.21.0 5052 + 5053 + '@nuxt/opencollective@0.4.1': 5054 + resolution: {integrity: sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==} 5055 + engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} 5056 + hasBin: true 4937 5057 4938 5058 '@nuxt/schema@3.14.1592': 4939 5059 resolution: {integrity: sha512-A1d/08ueX8stTXNkvGqnr1eEXZgvKn+vj6s7jXhZNWApUSqMgItU4VK28vrrdpKbjIPwq2SwhnGOHUYvN9HwCQ==} ··· 5274 5394 '@oxc-project/types@0.115.0': 5275 5395 resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} 5276 5396 5397 + '@oxc-resolver/binding-android-arm-eabi@11.19.1': 5398 + resolution: {integrity: sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==} 5399 + cpu: [arm] 5400 + os: [android] 5401 + 5402 + '@oxc-resolver/binding-android-arm64@11.19.1': 5403 + resolution: {integrity: sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==} 5404 + cpu: [arm64] 5405 + os: [android] 5406 + 5407 + '@oxc-resolver/binding-darwin-arm64@11.19.1': 5408 + resolution: {integrity: sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==} 5409 + cpu: [arm64] 5410 + os: [darwin] 5411 + 5412 + '@oxc-resolver/binding-darwin-x64@11.19.1': 5413 + resolution: {integrity: sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==} 5414 + cpu: [x64] 5415 + os: [darwin] 5416 + 5417 + '@oxc-resolver/binding-freebsd-x64@11.19.1': 5418 + resolution: {integrity: sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==} 5419 + cpu: [x64] 5420 + os: [freebsd] 5421 + 5422 + '@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1': 5423 + resolution: {integrity: sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==} 5424 + cpu: [arm] 5425 + os: [linux] 5426 + 5427 + '@oxc-resolver/binding-linux-arm-musleabihf@11.19.1': 5428 + resolution: {integrity: sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==} 5429 + cpu: [arm] 5430 + os: [linux] 5431 + 5432 + '@oxc-resolver/binding-linux-arm64-gnu@11.19.1': 5433 + resolution: {integrity: sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==} 5434 + cpu: [arm64] 5435 + os: [linux] 5436 + libc: [glibc] 5437 + 5438 + '@oxc-resolver/binding-linux-arm64-musl@11.19.1': 5439 + resolution: {integrity: sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==} 5440 + cpu: [arm64] 5441 + os: [linux] 5442 + libc: [musl] 5443 + 5444 + '@oxc-resolver/binding-linux-ppc64-gnu@11.19.1': 5445 + resolution: {integrity: sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==} 5446 + cpu: [ppc64] 5447 + os: [linux] 5448 + libc: [glibc] 5449 + 5450 + '@oxc-resolver/binding-linux-riscv64-gnu@11.19.1': 5451 + resolution: {integrity: sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==} 5452 + cpu: [riscv64] 5453 + os: [linux] 5454 + libc: [glibc] 5455 + 5456 + '@oxc-resolver/binding-linux-riscv64-musl@11.19.1': 5457 + resolution: {integrity: sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==} 5458 + cpu: [riscv64] 5459 + os: [linux] 5460 + libc: [musl] 5461 + 5462 + '@oxc-resolver/binding-linux-s390x-gnu@11.19.1': 5463 + resolution: {integrity: sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==} 5464 + cpu: [s390x] 5465 + os: [linux] 5466 + libc: [glibc] 5467 + 5468 + '@oxc-resolver/binding-linux-x64-gnu@11.19.1': 5469 + resolution: {integrity: sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==} 5470 + cpu: [x64] 5471 + os: [linux] 5472 + libc: [glibc] 5473 + 5474 + '@oxc-resolver/binding-linux-x64-musl@11.19.1': 5475 + resolution: {integrity: sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==} 5476 + cpu: [x64] 5477 + os: [linux] 5478 + libc: [musl] 5479 + 5480 + '@oxc-resolver/binding-openharmony-arm64@11.19.1': 5481 + resolution: {integrity: sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==} 5482 + cpu: [arm64] 5483 + os: [openharmony] 5484 + 5485 + '@oxc-resolver/binding-wasm32-wasi@11.19.1': 5486 + resolution: {integrity: sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==} 5487 + engines: {node: '>=14.0.0'} 5488 + cpu: [wasm32] 5489 + 5490 + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': 5491 + resolution: {integrity: sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==} 5492 + cpu: [arm64] 5493 + os: [win32] 5494 + 5495 + '@oxc-resolver/binding-win32-ia32-msvc@11.19.1': 5496 + resolution: {integrity: sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==} 5497 + cpu: [ia32] 5498 + os: [win32] 5499 + 5500 + '@oxc-resolver/binding-win32-x64-msvc@11.19.1': 5501 + resolution: {integrity: sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==} 5502 + cpu: [x64] 5503 + os: [win32] 5504 + 5277 5505 '@oxc-transform/binding-android-arm-eabi@0.110.0': 5278 5506 resolution: {integrity: sha512-sE9dxvqqAax1YYJ3t7j+h5ZSI9jl6dYuDfngl6ieZUrIy5P89/8JKVgAzgp8o3wQSo7ndpJvYsi1K4ZqrmbP7w==} 5279 5507 engines: {node: ^20.19.0 || >=22.12.0} ··· 6693 6921 rollup: 6694 6922 optional: true 6695 6923 6924 + '@rollup/pluginutils@5.3.0': 6925 + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} 6926 + engines: {node: '>=14.0.0'} 6927 + peerDependencies: 6928 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 6929 + peerDependenciesMeta: 6930 + rollup: 6931 + optional: true 6932 + 6696 6933 '@rollup/rollup-android-arm-eabi@4.56.0': 6697 6934 resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} 6698 6935 cpu: [arm] ··· 6962 7199 svelte: ^5.0.0 6963 7200 vite: ^6.0.0 6964 7201 7202 + '@swc-node/core@1.14.1': 7203 + resolution: {integrity: sha512-jrt5GUaZUU6cmMS+WTJEvGvaB6j1YNKPHPzC2PUi2BjaFbtxURHj6641Az6xN7b665hNniAIdvjxWcRml5yCnw==} 7204 + engines: {node: '>= 10'} 7205 + peerDependencies: 7206 + '@swc/core': '>= 1.13.3' 7207 + '@swc/types': '>= 0.1' 7208 + 7209 + '@swc-node/register@1.11.1': 7210 + resolution: {integrity: sha512-VQ0hJ5jX31TVv/fhZx4xJRzd8pwn6VvzYd2tGOHHr2TfXGCBixZoqdPDXTiEoJLCTS2MmvBf6zyQZZ0M8aGQCQ==} 7211 + peerDependencies: 7212 + '@swc/core': '>= 1.4.13' 7213 + typescript: '>= 4.3' 7214 + 7215 + '@swc-node/sourcemap-support@0.6.1': 7216 + resolution: {integrity: sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==} 7217 + 7218 + '@swc/core-darwin-arm64@1.15.18': 7219 + resolution: {integrity: sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==} 7220 + engines: {node: '>=10'} 7221 + cpu: [arm64] 7222 + os: [darwin] 7223 + 7224 + '@swc/core-darwin-x64@1.15.18': 7225 + resolution: {integrity: sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==} 7226 + engines: {node: '>=10'} 7227 + cpu: [x64] 7228 + os: [darwin] 7229 + 7230 + '@swc/core-linux-arm-gnueabihf@1.15.18': 7231 + resolution: {integrity: sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==} 7232 + engines: {node: '>=10'} 7233 + cpu: [arm] 7234 + os: [linux] 7235 + 7236 + '@swc/core-linux-arm64-gnu@1.15.18': 7237 + resolution: {integrity: sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==} 7238 + engines: {node: '>=10'} 7239 + cpu: [arm64] 7240 + os: [linux] 7241 + libc: [glibc] 7242 + 7243 + '@swc/core-linux-arm64-musl@1.15.18': 7244 + resolution: {integrity: sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==} 7245 + engines: {node: '>=10'} 7246 + cpu: [arm64] 7247 + os: [linux] 7248 + libc: [musl] 7249 + 7250 + '@swc/core-linux-x64-gnu@1.15.18': 7251 + resolution: {integrity: sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==} 7252 + engines: {node: '>=10'} 7253 + cpu: [x64] 7254 + os: [linux] 7255 + libc: [glibc] 7256 + 7257 + '@swc/core-linux-x64-musl@1.15.18': 7258 + resolution: {integrity: sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==} 7259 + engines: {node: '>=10'} 7260 + cpu: [x64] 7261 + os: [linux] 7262 + libc: [musl] 7263 + 7264 + '@swc/core-win32-arm64-msvc@1.15.18': 7265 + resolution: {integrity: sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==} 7266 + engines: {node: '>=10'} 7267 + cpu: [arm64] 7268 + os: [win32] 7269 + 7270 + '@swc/core-win32-ia32-msvc@1.15.18': 7271 + resolution: {integrity: sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==} 7272 + engines: {node: '>=10'} 7273 + cpu: [ia32] 7274 + os: [win32] 7275 + 7276 + '@swc/core-win32-x64-msvc@1.15.18': 7277 + resolution: {integrity: sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==} 7278 + engines: {node: '>=10'} 7279 + cpu: [x64] 7280 + os: [win32] 7281 + 7282 + '@swc/core@1.15.18': 7283 + resolution: {integrity: sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==} 7284 + engines: {node: '>=10'} 7285 + peerDependencies: 7286 + '@swc/helpers': '>=0.5.17' 7287 + peerDependenciesMeta: 7288 + '@swc/helpers': 7289 + optional: true 7290 + 6965 7291 '@swc/counter@0.1.3': 6966 7292 resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 6967 7293 6968 7294 '@swc/helpers@0.5.15': 6969 7295 resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} 7296 + 7297 + '@swc/types@0.1.25': 7298 + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} 6970 7299 6971 7300 '@tanstack/angular-query-experimental@5.73.3': 6972 7301 resolution: {integrity: sha512-4Yvp4GGNszGM8O9nfLorVbIsl8dgcw9FqyyMxUfOFzcx9m55MeyFExWHuca+q+BQ67SKg9dZFsVWEjncMmUuhA==} ··· 7063 7392 peerDependenciesMeta: 7064 7393 '@vue/composition-api': 7065 7394 optional: true 7395 + 7396 + '@tokenizer/inflate@0.4.1': 7397 + resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} 7398 + engines: {node: '>=18'} 7399 + 7400 + '@tokenizer/token@0.3.0': 7401 + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} 7066 7402 7067 7403 '@tsconfig/node10@1.0.11': 7068 7404 resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} ··· 8242 8578 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 8243 8579 engines: {node: '>= 8'} 8244 8580 8581 + append-field@1.0.0: 8582 + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} 8583 + 8245 8584 archiver-utils@5.0.2: 8246 8585 resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} 8247 8586 engines: {node: '>= 14'} ··· 8836 9175 concat-map@0.0.1: 8837 9176 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 8838 9177 9178 + concat-stream@2.0.0: 9179 + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} 9180 + engines: {'0': node >= 6.0} 9181 + 8839 9182 confbox@0.1.8: 8840 9183 resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 8841 9184 ··· 8932 9275 8933 9276 cors@2.8.5: 8934 9277 resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 9278 + engines: {node: '>= 0.10'} 9279 + 9280 + cors@2.8.6: 9281 + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} 8935 9282 engines: {node: '>= 0.10'} 8936 9283 8937 9284 cosmiconfig@9.0.0: ··· 9993 10340 fast-querystring@1.1.2: 9994 10341 resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 9995 10342 10343 + fast-safe-stringify@2.1.1: 10344 + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 10345 + 9996 10346 fast-uri@3.1.0: 9997 10347 resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} 9998 10348 ··· 10047 10397 resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 10048 10398 engines: {node: '>=16.0.0'} 10049 10399 10400 + file-type@21.3.0: 10401 + resolution: {integrity: sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==} 10402 + engines: {node: '>=20'} 10403 + 10050 10404 file-uri-to-path@1.0.0: 10051 10405 resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 10052 10406 ··· 10952 11306 resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} 10953 11307 engines: {node: '>=8'} 10954 11308 11309 + iterare@1.2.1: 11310 + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} 11311 + engines: {node: '>=6'} 11312 + 10955 11313 iterator.prototype@1.1.5: 10956 11314 resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} 10957 11315 engines: {node: '>= 0.4'} ··· 11248 11606 resolution: {integrity: sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==} 11249 11607 hasBin: true 11250 11608 11609 + load-esm@1.0.3: 11610 + resolution: {integrity: sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==} 11611 + engines: {node: '>=13.2.0'} 11612 + 11613 + load-tsconfig@0.2.5: 11614 + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 11615 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 11616 + 11251 11617 loader-runner@4.3.1: 11252 11618 resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} 11253 11619 engines: {node: '>=6.11.5'} ··· 11758 12124 11759 12125 muggle-string@0.4.1: 11760 12126 resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} 12127 + 12128 + multer@2.1.1: 12129 + resolution: {integrity: sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==} 12130 + engines: {node: '>= 10.16.0'} 11761 12131 11762 12132 multicast-dns@7.2.5: 11763 12133 resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} ··· 12210 12580 resolution: {integrity: sha512-GijUR3K1Ln/QwMyYXRsBtOyzqGaCs9ce5pOug1UtrMg8dSiE7VuuRuIcyYD4nyJbasat3K0YljiKt/PSFPdSBA==} 12211 12581 engines: {node: ^20.19.0 || >=22.12.0} 12212 12582 12583 + oxc-resolver@11.19.1: 12584 + resolution: {integrity: sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==} 12585 + 12213 12586 oxc-transform@0.110.0: 12214 12587 resolution: {integrity: sha512-/fymQNzzUoKZweH0nC5yvbI2eR0yWYusT9TEKDYVgOgYrf9Qmdez9lUFyvxKR9ycx+PTHi/reIOzqf3wkShQsw==} 12215 12588 engines: {node: ^20.19.0 || >=22.12.0} ··· 12922 13295 12923 13296 qs@6.13.0: 12924 13297 resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 12925 - engines: {node: '>=0.6'} 12926 - 12927 - qs@6.14.0: 12928 - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 12929 13298 engines: {node: '>=0.6'} 12930 13299 12931 13300 qs@6.14.1: ··· 13834 14203 strip-literal@3.1.0: 13835 14204 resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} 13836 14205 14206 + strtok3@10.3.4: 14207 + resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} 14208 + engines: {node: '>=18'} 14209 + 13837 14210 structured-clone-es@1.0.0: 13838 14211 resolution: {integrity: sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==} 13839 14212 ··· 14087 14460 toidentifier@1.0.1: 14088 14461 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 14089 14462 engines: {node: '>=0.6'} 14463 + 14464 + token-types@6.1.2: 14465 + resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} 14466 + engines: {node: '>=14.16'} 14090 14467 14091 14468 tokenx@1.2.1: 14092 14469 resolution: {integrity: sha512-lVhFIhR2qh3uUyUA8Ype+HGzcokUJbHmRSN1TJKOe4Y26HkawQuLiGkUCkR5LD9dx+Rtp+njrwzPL8AHHYQSYA==} ··· 14310 14687 typed-assert@1.0.9: 14311 14688 resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} 14312 14689 14690 + typedarray@0.0.6: 14691 + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} 14692 + 14313 14693 typescript-eslint@8.29.1: 14314 14694 resolution: {integrity: sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==} 14315 14695 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ··· 14347 14727 ufo@1.6.3: 14348 14728 resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} 14349 14729 14730 + uid@2.0.2: 14731 + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} 14732 + engines: {node: '>=8'} 14733 + 14734 + uint8array-extras@1.5.0: 14735 + resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} 14736 + engines: {node: '>=18'} 14737 + 14350 14738 ultrahtml@1.6.0: 14351 14739 resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} 14352 14740 ··· 14489 14877 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 14490 14878 engines: {node: '>= 0.8'} 14491 14879 14880 + unplugin-swc@1.5.9: 14881 + resolution: {integrity: sha512-RKwK3yf0M+MN17xZfF14bdKqfx0zMXYdtOdxLiE6jHAoidupKq3jGdJYANyIM1X/VmABhh1WpdO+/f4+Ol89+g==} 14882 + peerDependencies: 14883 + '@swc/core': ^1.2.108 14884 + 14492 14885 unplugin-utils@0.2.5: 14493 14886 resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==} 14494 14887 engines: {node: '>=18.12.0'} ··· 15685 16078 transitivePeerDependencies: 15686 16079 - chokidar 15687 16080 15688 - '@angular-devkit/build-angular@21.1.2(7a0ea2bf4566d6c254ebfd7a3d4a6f07)': 16081 + '@angular-devkit/build-angular@21.1.2(b9fcfc698b20164011953e0b05a5c087)': 15689 16082 dependencies: 15690 16083 '@ampproject/remapping': 2.3.0 15691 16084 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) 15692 - '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1))(webpack@5.104.1(esbuild@0.27.2)) 16085 + '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)))(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15693 16086 '@angular-devkit/core': 21.1.2(chokidar@5.0.0) 15694 - '@angular/build': 21.1.2(4d47a0b995298c756c33eff86529b92d) 16087 + '@angular/build': 21.1.2(715bbcce77c47a418ef6cc48ef7ededc) 15695 16088 '@angular/compiler-cli': 21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3) 15696 16089 '@babel/core': 7.28.5 15697 16090 '@babel/generator': 7.28.5 ··· 15703 16096 '@babel/preset-env': 7.28.5(@babel/core@7.28.5) 15704 16097 '@babel/runtime': 7.28.4 15705 16098 '@discoveryjs/json-ext': 0.6.3 15706 - '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) 16099 + '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15707 16100 ansi-colors: 4.1.3 15708 16101 autoprefixer: 10.4.23(postcss@8.5.6) 15709 - babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)) 16102 + babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15710 16103 browserslist: 4.28.1 15711 - copy-webpack-plugin: 13.0.1(webpack@5.104.1(esbuild@0.27.2)) 15712 - css-loader: 7.1.2(webpack@5.104.1(esbuild@0.27.2)) 16104 + copy-webpack-plugin: 13.0.1(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16105 + css-loader: 7.1.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15713 16106 esbuild-wasm: 0.27.2 15714 16107 http-proxy-middleware: 3.0.5 15715 16108 istanbul-lib-instrument: 6.0.3 15716 16109 jsonc-parser: 3.3.1 15717 16110 karma-source-map-support: 1.4.0 15718 16111 less: 4.4.2 15719 - less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)) 15720 - license-webpack-plugin: 4.0.2(webpack@5.104.1(esbuild@0.27.2)) 16112 + less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16113 + license-webpack-plugin: 4.0.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15721 16114 loader-utils: 3.3.1 15722 - mini-css-extract-plugin: 2.9.4(webpack@5.104.1(esbuild@0.27.2)) 16115 + mini-css-extract-plugin: 2.9.4(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15723 16116 open: 11.0.0 15724 16117 ora: 9.0.0 15725 16118 picomatch: 4.0.3 15726 16119 piscina: 5.1.4 15727 16120 postcss: 8.5.6 15728 - postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) 16121 + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15729 16122 resolve-url-loader: 5.0.0 15730 16123 rxjs: 7.8.2 15731 16124 sass: 1.97.1 15732 - sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)) 16125 + sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15733 16126 semver: 7.7.3 15734 - source-map-loader: 5.0.0(webpack@5.104.1(esbuild@0.27.2)) 16127 + source-map-loader: 5.0.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15735 16128 source-map-support: 0.5.21 15736 16129 terser: 5.44.1 15737 16130 tinyglobby: 0.2.15 15738 16131 tree-kill: 1.2.2 15739 16132 tslib: 2.8.1 15740 16133 typescript: 5.9.3 15741 - webpack: 5.104.1(esbuild@0.27.2) 15742 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1) 15743 - webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1) 16134 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 16135 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16136 + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15744 16137 webpack-merge: 6.0.1 15745 - webpack-subresource-integrity: 5.1.0(webpack@5.104.1(esbuild@0.27.2)) 16138 + webpack-subresource-integrity: 5.1.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15746 16139 optionalDependencies: 15747 16140 '@angular/core': 21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0) 15748 16141 '@angular/platform-browser': 21.1.2(@angular/animations@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)) ··· 15750 16143 '@angular/ssr': 21.1.2(56aadac166d50e28eec4a225e30d08e3) 15751 16144 esbuild: 0.27.2 15752 16145 karma: 6.4.4 15753 - tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 16146 + tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 15754 16147 transitivePeerDependencies: 15755 16148 - '@angular/compiler' 15756 16149 - '@rspack/core' ··· 15774 16167 - webpack-cli 15775 16168 - yaml 15776 16169 15777 - '@angular-devkit/build-angular@21.1.2(8e317fb962be684ea660a36b6a37c5df)': 16170 + '@angular-devkit/build-angular@21.1.2(bfb22c0d38474de5255b56daa3b8edae)': 15778 16171 dependencies: 15779 16172 '@ampproject/remapping': 2.3.0 15780 16173 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) 15781 - '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1))(webpack@5.104.1(esbuild@0.27.2)) 16174 + '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)))(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15782 16175 '@angular-devkit/core': 21.1.2(chokidar@5.0.0) 15783 - '@angular/build': 21.1.2(6fef33aa04aa2d7c257e9bbae25c39f9) 16176 + '@angular/build': 21.1.2(4ae04ca60d5e69e646f2e6985d14766b) 15784 16177 '@angular/compiler-cli': 21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3) 15785 16178 '@babel/core': 7.28.5 15786 16179 '@babel/generator': 7.28.5 ··· 15792 16185 '@babel/preset-env': 7.28.5(@babel/core@7.28.5) 15793 16186 '@babel/runtime': 7.28.4 15794 16187 '@discoveryjs/json-ext': 0.6.3 15795 - '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) 16188 + '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15796 16189 ansi-colors: 4.1.3 15797 16190 autoprefixer: 10.4.23(postcss@8.5.6) 15798 - babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)) 16191 + babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15799 16192 browserslist: 4.28.1 15800 - copy-webpack-plugin: 13.0.1(webpack@5.104.1(esbuild@0.27.2)) 15801 - css-loader: 7.1.2(webpack@5.104.1(esbuild@0.27.2)) 16193 + copy-webpack-plugin: 13.0.1(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16194 + css-loader: 7.1.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15802 16195 esbuild-wasm: 0.27.2 15803 16196 http-proxy-middleware: 3.0.5 15804 16197 istanbul-lib-instrument: 6.0.3 15805 16198 jsonc-parser: 3.3.1 15806 16199 karma-source-map-support: 1.4.0 15807 16200 less: 4.4.2 15808 - less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)) 15809 - license-webpack-plugin: 4.0.2(webpack@5.104.1(esbuild@0.27.2)) 16201 + less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16202 + license-webpack-plugin: 4.0.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15810 16203 loader-utils: 3.3.1 15811 - mini-css-extract-plugin: 2.9.4(webpack@5.104.1(esbuild@0.27.2)) 16204 + mini-css-extract-plugin: 2.9.4(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15812 16205 open: 11.0.0 15813 16206 ora: 9.0.0 15814 16207 picomatch: 4.0.3 15815 16208 piscina: 5.1.4 15816 16209 postcss: 8.5.6 15817 - postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) 16210 + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15818 16211 resolve-url-loader: 5.0.0 15819 16212 rxjs: 7.8.2 15820 16213 sass: 1.97.1 15821 - sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)) 16214 + sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15822 16215 semver: 7.7.3 15823 - source-map-loader: 5.0.0(webpack@5.104.1(esbuild@0.27.2)) 16216 + source-map-loader: 5.0.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15824 16217 source-map-support: 0.5.21 15825 16218 terser: 5.44.1 15826 16219 tinyglobby: 0.2.15 15827 16220 tree-kill: 1.2.2 15828 16221 tslib: 2.8.1 15829 16222 typescript: 5.9.3 15830 - webpack: 5.104.1(esbuild@0.27.2) 15831 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1) 15832 - webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1) 16223 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 16224 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16225 + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15833 16226 webpack-merge: 6.0.1 15834 - webpack-subresource-integrity: 5.1.0(webpack@5.104.1(esbuild@0.27.2)) 16227 + webpack-subresource-integrity: 5.1.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15835 16228 optionalDependencies: 15836 16229 '@angular/core': 21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0) 15837 16230 '@angular/platform-browser': 21.1.2(@angular/animations@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)) ··· 15839 16232 '@angular/ssr': 21.1.2(56aadac166d50e28eec4a225e30d08e3) 15840 16233 esbuild: 0.27.2 15841 16234 karma: 6.4.4 15842 - tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 16235 + tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 15843 16236 transitivePeerDependencies: 15844 16237 - '@angular/compiler' 15845 16238 - '@rspack/core' ··· 15863 16256 - webpack-cli 15864 16257 - yaml 15865 16258 15866 - '@angular-devkit/build-angular@21.1.2(fa2c50346f9355ac74dcf2ab0f67cd85)': 16259 + '@angular-devkit/build-angular@21.1.2(e7024e150686e3bbe2cdedb5695d6284)': 15867 16260 dependencies: 15868 16261 '@ampproject/remapping': 2.3.0 15869 16262 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) 15870 - '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1))(webpack@5.104.1(esbuild@0.27.2)) 16263 + '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)))(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15871 16264 '@angular-devkit/core': 21.1.2(chokidar@5.0.0) 15872 - '@angular/build': 21.1.2(32dd29d90ad66c6a5dd8c7c92736313c) 16265 + '@angular/build': 21.1.2(b8a91db99523b9ce3edfd9b854e0f81b) 15873 16266 '@angular/compiler-cli': 21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3) 15874 16267 '@babel/core': 7.28.5 15875 16268 '@babel/generator': 7.28.5 ··· 15881 16274 '@babel/preset-env': 7.28.5(@babel/core@7.28.5) 15882 16275 '@babel/runtime': 7.28.4 15883 16276 '@discoveryjs/json-ext': 0.6.3 15884 - '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) 16277 + '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15885 16278 ansi-colors: 4.1.3 15886 16279 autoprefixer: 10.4.23(postcss@8.5.6) 15887 - babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)) 16280 + babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15888 16281 browserslist: 4.28.1 15889 - copy-webpack-plugin: 13.0.1(webpack@5.104.1(esbuild@0.27.2)) 15890 - css-loader: 7.1.2(webpack@5.104.1(esbuild@0.27.2)) 16282 + copy-webpack-plugin: 13.0.1(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16283 + css-loader: 7.1.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15891 16284 esbuild-wasm: 0.27.2 15892 16285 http-proxy-middleware: 3.0.5 15893 16286 istanbul-lib-instrument: 6.0.3 15894 16287 jsonc-parser: 3.3.1 15895 16288 karma-source-map-support: 1.4.0 15896 16289 less: 4.4.2 15897 - less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)) 15898 - license-webpack-plugin: 4.0.2(webpack@5.104.1(esbuild@0.27.2)) 16290 + less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16291 + license-webpack-plugin: 4.0.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15899 16292 loader-utils: 3.3.1 15900 - mini-css-extract-plugin: 2.9.4(webpack@5.104.1(esbuild@0.27.2)) 16293 + mini-css-extract-plugin: 2.9.4(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15901 16294 open: 11.0.0 15902 16295 ora: 9.0.0 15903 16296 picomatch: 4.0.3 15904 16297 piscina: 5.1.4 15905 16298 postcss: 8.5.6 15906 - postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) 16299 + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15907 16300 resolve-url-loader: 5.0.0 15908 16301 rxjs: 7.8.2 15909 16302 sass: 1.97.1 15910 - sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)) 16303 + sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15911 16304 semver: 7.7.3 15912 - source-map-loader: 5.0.0(webpack@5.104.1(esbuild@0.27.2)) 16305 + source-map-loader: 5.0.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15913 16306 source-map-support: 0.5.21 15914 16307 terser: 5.44.1 15915 16308 tinyglobby: 0.2.15 15916 16309 tree-kill: 1.2.2 15917 16310 tslib: 2.8.1 15918 16311 typescript: 5.9.3 15919 - webpack: 5.104.1(esbuild@0.27.2) 15920 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1) 15921 - webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1) 16312 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 16313 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 16314 + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15922 16315 webpack-merge: 6.0.1 15923 - webpack-subresource-integrity: 5.1.0(webpack@5.104.1(esbuild@0.27.2)) 16316 + webpack-subresource-integrity: 5.1.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15924 16317 optionalDependencies: 15925 16318 '@angular/core': 21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0) 15926 16319 '@angular/platform-browser': 21.1.2(@angular/animations@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0)) ··· 15928 16321 '@angular/ssr': 21.1.2(56aadac166d50e28eec4a225e30d08e3) 15929 16322 esbuild: 0.27.2 15930 16323 karma: 6.4.4 15931 - tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 16324 + tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 15932 16325 transitivePeerDependencies: 15933 16326 - '@angular/compiler' 15934 16327 - '@rspack/core' ··· 15952 16345 - webpack-cli 15953 16346 - yaml 15954 16347 15955 - '@angular-devkit/build-webpack@0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1))(webpack@5.104.1(esbuild@0.27.2))': 16348 + '@angular-devkit/build-webpack@0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)))(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2))': 15956 16349 dependencies: 15957 16350 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) 15958 16351 rxjs: 7.8.2 15959 - webpack: 5.104.1(esbuild@0.27.2) 15960 - webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1) 16352 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 16353 + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 15961 16354 transitivePeerDependencies: 15962 16355 - chokidar 15963 16356 ··· 15987 16380 '@angular/core': 21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0) 15988 16381 tslib: 2.8.1 15989 16382 15990 - '@angular/build@21.1.2(32dd29d90ad66c6a5dd8c7c92736313c)': 16383 + '@angular/build@21.1.2(4ae04ca60d5e69e646f2e6985d14766b)': 15991 16384 dependencies: 15992 16385 '@ampproject/remapping': 2.3.0 15993 16386 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) ··· 15996 16389 '@babel/core': 7.28.5 15997 16390 '@babel/helper-annotate-as-pure': 7.27.3 15998 16391 '@babel/helper-split-export-declaration': 7.24.7 15999 - '@inquirer/confirm': 5.1.21(@types/node@24.10.10) 16000 - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16392 + '@inquirer/confirm': 5.1.21(@types/node@25.2.1) 16393 + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16001 16394 beasties: 0.3.5 16002 16395 browserslist: 4.28.1 16003 16396 esbuild: 0.27.2 ··· 16018 16411 tslib: 2.8.1 16019 16412 typescript: 5.9.3 16020 16413 undici: 7.18.2 16021 - vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 16414 + vite: 7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 16022 16415 watchpack: 2.5.0 16023 16416 optionalDependencies: 16024 16417 '@angular/core': 21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0) ··· 16029 16422 less: 4.4.2 16030 16423 lmdb: 3.4.4 16031 16424 postcss: 8.5.6 16032 - tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 16033 - vitest: 4.1.0(@types/node@24.10.10)(jsdom@28.0.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16425 + tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 16426 + vitest: 4.1.0(@types/node@25.2.1)(jsdom@28.0.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16034 16427 transitivePeerDependencies: 16035 16428 - '@types/node' 16036 16429 - chokidar ··· 16044 16437 - tsx 16045 16438 - yaml 16046 16439 16047 - '@angular/build@21.1.2(4d47a0b995298c756c33eff86529b92d)': 16440 + '@angular/build@21.1.2(715bbcce77c47a418ef6cc48ef7ededc)': 16048 16441 dependencies: 16049 16442 '@ampproject/remapping': 2.3.0 16050 16443 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) ··· 16053 16446 '@babel/core': 7.28.5 16054 16447 '@babel/helper-annotate-as-pure': 7.27.3 16055 16448 '@babel/helper-split-export-declaration': 7.24.7 16056 - '@inquirer/confirm': 5.1.21(@types/node@25.2.1) 16057 - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16449 + '@inquirer/confirm': 5.1.21(@types/node@24.10.10) 16450 + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16058 16451 beasties: 0.3.5 16059 16452 browserslist: 4.28.1 16060 16453 esbuild: 0.27.2 ··· 16075 16468 tslib: 2.8.1 16076 16469 typescript: 5.9.3 16077 16470 undici: 7.18.2 16078 - vite: 7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 16471 + vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 16079 16472 watchpack: 2.5.0 16080 16473 optionalDependencies: 16081 16474 '@angular/core': 21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0) ··· 16086 16479 less: 4.4.2 16087 16480 lmdb: 3.4.4 16088 16481 postcss: 8.5.6 16089 - tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 16090 - vitest: 4.1.0(@types/node@25.2.1)(jsdom@28.0.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16482 + tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 16483 + vitest: 4.1.0(@types/node@24.10.10)(jsdom@28.0.0)(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16091 16484 transitivePeerDependencies: 16092 16485 - '@types/node' 16093 16486 - chokidar ··· 16101 16494 - tsx 16102 16495 - yaml 16103 16496 16104 - '@angular/build@21.1.2(6fef33aa04aa2d7c257e9bbae25c39f9)': 16497 + '@angular/build@21.1.2(b8a91db99523b9ce3edfd9b854e0f81b)': 16105 16498 dependencies: 16106 16499 '@ampproject/remapping': 2.3.0 16107 16500 '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) ··· 16143 16536 less: 4.4.2 16144 16537 lmdb: 3.4.4 16145 16538 postcss: 8.5.6 16146 - tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 16147 - vitest: 4.1.0(@types/node@24.10.10)(jsdom@28.0.0)(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16539 + tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 16540 + vitest: 4.1.0(@types/node@24.10.10)(jsdom@28.0.0)(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 16148 16541 transitivePeerDependencies: 16149 16542 - '@types/node' 16150 16543 - chokidar ··· 17350 17743 optionalDependencies: 17351 17744 cac: 6.7.14 17352 17745 citty: 0.1.6 17746 + 17747 + '@borewit/text-codec@0.2.2': {} 17353 17748 17354 17749 '@braidai/lang@1.1.2': {} 17355 17750 ··· 18913 19308 dependencies: 18914 19309 '@braidai/lang': 1.1.2 18915 19310 19311 + '@lukeed/csprng@1.1.0': {} 19312 + 18916 19313 '@manypkg/find-root@1.1.0': 18917 19314 dependencies: 18918 19315 '@babel/runtime': 7.28.4 ··· 19070 19467 19071 19468 '@neoconfetti/svelte@2.0.0': {} 19072 19469 19470 + '@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2)': 19471 + dependencies: 19472 + file-type: 21.3.0 19473 + iterare: 1.2.1 19474 + load-esm: 1.0.3 19475 + reflect-metadata: 0.2.2 19476 + rxjs: 7.8.2 19477 + tslib: 2.8.1 19478 + uid: 2.0.2 19479 + transitivePeerDependencies: 19480 + - supports-color 19481 + 19482 + '@nestjs/core@11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.16)(reflect-metadata@0.2.2)(rxjs@7.8.2)': 19483 + dependencies: 19484 + '@nestjs/common': 11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2) 19485 + '@nuxt/opencollective': 0.4.1 19486 + fast-safe-stringify: 2.1.1 19487 + iterare: 1.2.1 19488 + path-to-regexp: 8.3.0 19489 + reflect-metadata: 0.2.2 19490 + rxjs: 7.8.2 19491 + tslib: 2.8.1 19492 + uid: 2.0.2 19493 + optionalDependencies: 19494 + '@nestjs/platform-express': 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.16) 19495 + 19496 + '@nestjs/platform-express@11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.16)': 19497 + dependencies: 19498 + '@nestjs/common': 11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2) 19499 + '@nestjs/core': 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.16)(reflect-metadata@0.2.2)(rxjs@7.8.2) 19500 + cors: 2.8.6 19501 + express: 5.2.1 19502 + multer: 2.1.1 19503 + path-to-regexp: 8.3.0 19504 + tslib: 2.8.1 19505 + transitivePeerDependencies: 19506 + - supports-color 19507 + 19508 + '@nestjs/testing@11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.16)(@nestjs/platform-express@11.1.16)': 19509 + dependencies: 19510 + '@nestjs/common': 11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2) 19511 + '@nestjs/core': 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.16)(reflect-metadata@0.2.2)(rxjs@7.8.2) 19512 + tslib: 2.8.1 19513 + optionalDependencies: 19514 + '@nestjs/platform-express': 11.1.16(@nestjs/common@11.1.16(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.16) 19515 + 19073 19516 '@netlify/binary-info@1.0.0': {} 19074 19517 19075 19518 '@netlify/blobs@9.1.2': ··· 19188 19631 '@next/swc-win32-x64-msvc@15.2.4': 19189 19632 optional: true 19190 19633 19191 - '@ngtools/webpack@21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2))': 19634 + '@ngtools/webpack@21.1.2(@angular/compiler-cli@21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2))': 19192 19635 dependencies: 19193 19636 '@angular/compiler-cli': 21.1.2(@angular/compiler@21.1.2)(typescript@5.9.3) 19194 19637 typescript: 5.9.3 19195 - webpack: 5.104.1(esbuild@0.27.2) 19638 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 19196 19639 19197 19640 '@nodelib/fs.scandir@2.1.5': 19198 19641 dependencies: ··· 19304 19747 19305 19748 '@nuxt/devalue@2.0.2': {} 19306 19749 19307 - '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))': 19308 - dependencies: 19309 - '@nuxt/kit': 3.21.0(magicast@0.3.5) 19310 - '@nuxt/schema': 3.16.2 19311 - execa: 7.2.0 19312 - vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 19313 - transitivePeerDependencies: 19314 - - magicast 19315 - 19316 19750 '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': 19317 19751 dependencies: 19318 19752 '@nuxt/kit': 3.21.0(magicast@0.3.5) ··· 19409 19843 - utf-8-validate 19410 19844 - vue 19411 19845 19412 - '@nuxt/devtools@1.7.0(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3))': 19413 - dependencies: 19414 - '@antfu/utils': 0.7.10 19415 - '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) 19416 - '@nuxt/devtools-wizard': 1.7.0 19417 - '@nuxt/kit': 3.21.0(magicast@0.3.5) 19418 - '@vue/devtools-core': 7.6.8(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3)) 19419 - '@vue/devtools-kit': 7.6.8 19420 - birpc: 0.2.19 19421 - consola: 3.4.2 19422 - cronstrue: 2.59.0 19423 - destr: 2.0.5 19424 - error-stack-parser-es: 0.1.5 19425 - execa: 7.2.0 19426 - fast-npm-meta: 0.2.2 19427 - flatted: 3.3.3 19428 - get-port-please: 3.2.0 19429 - hookable: 5.5.3 19430 - image-meta: 0.2.1 19431 - is-installed-globally: 1.0.0 19432 - launch-editor: 2.11.1 19433 - local-pkg: 0.5.1 19434 - magicast: 0.3.5 19435 - nypm: 0.4.1 19436 - ohash: 1.1.6 19437 - pathe: 1.1.2 19438 - perfect-debounce: 1.0.0 19439 - pkg-types: 1.3.1 19440 - rc9: 2.1.2 19441 - scule: 1.3.0 19442 - semver: 7.7.3 19443 - simple-git: 3.28.0 19444 - sirv: 3.0.2 19445 - tinyglobby: 0.2.15 19446 - unimport: 3.14.6(rollup@4.56.0) 19447 - vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 19448 - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) 19449 - vite-plugin-vue-inspector: 5.3.2(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) 19450 - which: 3.0.1 19451 - ws: 8.18.3 19452 - transitivePeerDependencies: 19453 - - bufferutil 19454 - - rollup 19455 - - supports-color 19456 - - utf-8-validate 19457 - - vue 19458 - 19459 19846 '@nuxt/devtools@1.7.0(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))': 19460 19847 dependencies: 19461 19848 '@antfu/utils': 0.7.10 ··· 19781 20168 - typescript 19782 20169 - uploadthing 19783 20170 - xml2js 20171 + 20172 + '@nuxt/opencollective@0.4.1': 20173 + dependencies: 20174 + consola: 3.4.2 19784 20175 19785 20176 '@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@3.29.5)': 19786 20177 dependencies: ··· 20289 20680 20290 20681 '@oxc-project/types@0.115.0': {} 20291 20682 20683 + '@oxc-resolver/binding-android-arm-eabi@11.19.1': 20684 + optional: true 20685 + 20686 + '@oxc-resolver/binding-android-arm64@11.19.1': 20687 + optional: true 20688 + 20689 + '@oxc-resolver/binding-darwin-arm64@11.19.1': 20690 + optional: true 20691 + 20692 + '@oxc-resolver/binding-darwin-x64@11.19.1': 20693 + optional: true 20694 + 20695 + '@oxc-resolver/binding-freebsd-x64@11.19.1': 20696 + optional: true 20697 + 20698 + '@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1': 20699 + optional: true 20700 + 20701 + '@oxc-resolver/binding-linux-arm-musleabihf@11.19.1': 20702 + optional: true 20703 + 20704 + '@oxc-resolver/binding-linux-arm64-gnu@11.19.1': 20705 + optional: true 20706 + 20707 + '@oxc-resolver/binding-linux-arm64-musl@11.19.1': 20708 + optional: true 20709 + 20710 + '@oxc-resolver/binding-linux-ppc64-gnu@11.19.1': 20711 + optional: true 20712 + 20713 + '@oxc-resolver/binding-linux-riscv64-gnu@11.19.1': 20714 + optional: true 20715 + 20716 + '@oxc-resolver/binding-linux-riscv64-musl@11.19.1': 20717 + optional: true 20718 + 20719 + '@oxc-resolver/binding-linux-s390x-gnu@11.19.1': 20720 + optional: true 20721 + 20722 + '@oxc-resolver/binding-linux-x64-gnu@11.19.1': 20723 + optional: true 20724 + 20725 + '@oxc-resolver/binding-linux-x64-musl@11.19.1': 20726 + optional: true 20727 + 20728 + '@oxc-resolver/binding-openharmony-arm64@11.19.1': 20729 + optional: true 20730 + 20731 + '@oxc-resolver/binding-wasm32-wasi@11.19.1': 20732 + dependencies: 20733 + '@napi-rs/wasm-runtime': 1.1.1 20734 + optional: true 20735 + 20736 + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': 20737 + optional: true 20738 + 20739 + '@oxc-resolver/binding-win32-ia32-msvc@11.19.1': 20740 + optional: true 20741 + 20742 + '@oxc-resolver/binding-win32-x64-msvc@11.19.1': 20743 + optional: true 20744 + 20292 20745 '@oxc-transform/binding-android-arm-eabi@0.110.0': 20293 20746 optional: true 20294 20747 ··· 21493 21946 optionalDependencies: 21494 21947 rollup: 4.56.0 21495 21948 21949 + '@rollup/pluginutils@5.3.0(rollup@4.56.0)': 21950 + dependencies: 21951 + '@types/estree': 1.0.8 21952 + estree-walker: 2.0.2 21953 + picomatch: 4.0.3 21954 + optionalDependencies: 21955 + rollup: 4.56.0 21956 + 21496 21957 '@rollup/rollup-android-arm-eabi@4.56.0': 21497 21958 optional: true 21498 21959 ··· 21724 22185 transitivePeerDependencies: 21725 22186 - supports-color 21726 22187 22188 + '@swc-node/core@1.14.1(@swc/core@1.15.18)(@swc/types@0.1.25)': 22189 + dependencies: 22190 + '@swc/core': 1.15.18 22191 + '@swc/types': 0.1.25 22192 + 22193 + '@swc-node/register@1.11.1(@swc/core@1.15.18)(@swc/types@0.1.25)(typescript@5.9.3)': 22194 + dependencies: 22195 + '@swc-node/core': 1.14.1(@swc/core@1.15.18)(@swc/types@0.1.25) 22196 + '@swc-node/sourcemap-support': 0.6.1 22197 + '@swc/core': 1.15.18 22198 + colorette: 2.0.20 22199 + debug: 4.4.3 22200 + oxc-resolver: 11.19.1 22201 + pirates: 4.0.7 22202 + tslib: 2.8.1 22203 + typescript: 5.9.3 22204 + transitivePeerDependencies: 22205 + - '@swc/types' 22206 + - supports-color 22207 + 22208 + '@swc-node/sourcemap-support@0.6.1': 22209 + dependencies: 22210 + source-map-support: 0.5.21 22211 + tslib: 2.8.1 22212 + 22213 + '@swc/core-darwin-arm64@1.15.18': 22214 + optional: true 22215 + 22216 + '@swc/core-darwin-x64@1.15.18': 22217 + optional: true 22218 + 22219 + '@swc/core-linux-arm-gnueabihf@1.15.18': 22220 + optional: true 22221 + 22222 + '@swc/core-linux-arm64-gnu@1.15.18': 22223 + optional: true 22224 + 22225 + '@swc/core-linux-arm64-musl@1.15.18': 22226 + optional: true 22227 + 22228 + '@swc/core-linux-x64-gnu@1.15.18': 22229 + optional: true 22230 + 22231 + '@swc/core-linux-x64-musl@1.15.18': 22232 + optional: true 22233 + 22234 + '@swc/core-win32-arm64-msvc@1.15.18': 22235 + optional: true 22236 + 22237 + '@swc/core-win32-ia32-msvc@1.15.18': 22238 + optional: true 22239 + 22240 + '@swc/core-win32-x64-msvc@1.15.18': 22241 + optional: true 22242 + 22243 + '@swc/core@1.15.18': 22244 + dependencies: 22245 + '@swc/counter': 0.1.3 22246 + '@swc/types': 0.1.25 22247 + optionalDependencies: 22248 + '@swc/core-darwin-arm64': 1.15.18 22249 + '@swc/core-darwin-x64': 1.15.18 22250 + '@swc/core-linux-arm-gnueabihf': 1.15.18 22251 + '@swc/core-linux-arm64-gnu': 1.15.18 22252 + '@swc/core-linux-arm64-musl': 1.15.18 22253 + '@swc/core-linux-x64-gnu': 1.15.18 22254 + '@swc/core-linux-x64-musl': 1.15.18 22255 + '@swc/core-win32-arm64-msvc': 1.15.18 22256 + '@swc/core-win32-ia32-msvc': 1.15.18 22257 + '@swc/core-win32-x64-msvc': 1.15.18 22258 + 21727 22259 '@swc/counter@0.1.3': {} 21728 22260 21729 22261 '@swc/helpers@0.5.15': 21730 22262 dependencies: 21731 22263 tslib: 2.8.1 22264 + 22265 + '@swc/types@0.1.25': 22266 + dependencies: 22267 + '@swc/counter': 0.1.3 21732 22268 21733 22269 '@tanstack/angular-query-experimental@5.73.3(@angular/common@21.1.2(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.2(@angular/compiler@21.1.2)(rxjs@7.8.2)(zone.js@0.16.0))': 21734 22270 dependencies: ··· 21822 22358 '@vue/devtools-api': 6.6.4 21823 22359 vue: 3.5.25(typescript@5.9.3) 21824 22360 vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) 22361 + 22362 + '@tokenizer/inflate@0.4.1': 22363 + dependencies: 22364 + debug: 4.4.3 22365 + token-types: 6.1.2 22366 + transitivePeerDependencies: 22367 + - supports-color 22368 + 22369 + '@tokenizer/token@0.3.0': {} 21825 22370 21826 22371 '@tsconfig/node10@1.0.11': 21827 22372 optional: true ··· 22671 23216 magic-string: 0.30.21 22672 23217 optionalDependencies: 22673 23218 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 22674 - optional: true 22675 23219 22676 23220 '@vitest/pretty-format@4.0.18': 22677 23221 dependencies: ··· 22941 23485 dependencies: 22942 23486 '@vue/devtools-kit': 8.0.5 22943 23487 22944 - '@vue/devtools-core@7.6.8(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3))': 22945 - dependencies: 22946 - '@vue/devtools-kit': 7.7.7 22947 - '@vue/devtools-shared': 7.7.7 22948 - mitt: 3.0.1 22949 - nanoid: 5.1.5 22950 - pathe: 1.1.2 22951 - vite-hot-client: 0.2.4(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) 22952 - vue: 3.5.25(typescript@5.9.3) 22953 - transitivePeerDependencies: 22954 - - vite 22955 - 22956 23488 '@vue/devtools-core@7.6.8(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))': 22957 23489 dependencies: 22958 23490 '@vue/devtools-kit': 7.7.7 ··· 23451 23983 normalize-path: 3.0.0 23452 23984 picomatch: 2.3.1 23453 23985 23986 + append-field@1.0.0: {} 23987 + 23454 23988 archiver-utils@5.0.2: 23455 23989 dependencies: 23456 23990 glob: 10.4.5 ··· 23691 24225 23692 24226 b4a@1.6.7: {} 23693 24227 23694 - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)): 24228 + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 23695 24229 dependencies: 23696 24230 '@babel/core': 7.28.5 23697 24231 find-up: 5.0.0 23698 - webpack: 5.104.1(esbuild@0.27.2) 24232 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 23699 24233 23700 24234 babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): 23701 24235 dependencies: ··· 23793 24327 bytes: 3.1.2 23794 24328 content-type: 1.0.5 23795 24329 debug: 4.4.3 23796 - http-errors: 2.0.0 24330 + http-errors: 2.0.1 23797 24331 iconv-lite: 0.7.0 23798 24332 on-finished: 2.4.1 23799 24333 qs: 6.14.1 ··· 24183 24717 24184 24718 concat-map@0.0.1: {} 24185 24719 24720 + concat-stream@2.0.0: 24721 + dependencies: 24722 + buffer-from: 1.1.2 24723 + inherits: 2.0.4 24724 + readable-stream: 3.6.2 24725 + typedarray: 0.0.6 24726 + 24186 24727 confbox@0.1.8: {} 24187 24728 24188 24729 confbox@0.2.2: {} ··· 24250 24791 dependencies: 24251 24792 iconv-lite: 0.4.24 24252 24793 24253 - copy-webpack-plugin@13.0.1(webpack@5.104.1(esbuild@0.27.2)): 24794 + copy-webpack-plugin@13.0.1(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 24254 24795 dependencies: 24255 24796 glob-parent: 6.0.2 24256 24797 normalize-path: 3.0.0 24257 24798 schema-utils: 4.3.2 24258 24799 serialize-javascript: 6.0.2 24259 24800 tinyglobby: 0.2.15 24260 - webpack: 5.104.1(esbuild@0.27.2) 24801 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 24261 24802 24262 24803 core-js-compat@3.45.1: 24263 24804 dependencies: ··· 24266 24807 core-util-is@1.0.3: {} 24267 24808 24268 24809 cors@2.8.5: 24810 + dependencies: 24811 + object-assign: 4.1.1 24812 + vary: 1.1.2 24813 + 24814 + cors@2.8.6: 24269 24815 dependencies: 24270 24816 object-assign: 4.1.1 24271 24817 vary: 1.1.2 ··· 24311 24857 dependencies: 24312 24858 postcss: 8.5.6 24313 24859 24314 - css-loader@7.1.2(webpack@5.104.1(esbuild@0.27.2)): 24860 + css-loader@7.1.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 24315 24861 dependencies: 24316 24862 icss-utils: 5.1.0(postcss@8.4.41) 24317 24863 postcss: 8.4.41 ··· 24322 24868 postcss-value-parser: 4.2.0 24323 24869 semver: 7.7.3 24324 24870 optionalDependencies: 24325 - webpack: 5.104.1(esbuild@0.27.2) 24871 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 24326 24872 24327 24873 css-select@5.2.2: 24328 24874 dependencies: ··· 24711 25257 24712 25258 dotenv@17.2.3: {} 24713 25259 24714 - dts-resolver@2.1.3: {} 25260 + dts-resolver@2.1.3(oxc-resolver@11.19.1): 25261 + optionalDependencies: 25262 + oxc-resolver: 11.19.1 24715 25263 24716 25264 dunder-proto@1.0.1: 24717 25265 dependencies: ··· 25130 25678 eslint: 9.17.0(jiti@2.6.1) 25131 25679 eslint-import-resolver-node: 0.3.9 25132 25680 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.9.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)) 25133 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)) 25681 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.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.9.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)) 25134 25682 eslint-plugin-jsx-a11y: 6.10.2(eslint@9.17.0(jiti@2.6.1)) 25135 25683 eslint-plugin-react: 7.37.5(eslint@9.17.0(jiti@2.6.1)) 25136 25684 eslint-plugin-react-hooks: 5.2.0(eslint@9.17.0(jiti@2.6.1)) ··· 25160 25708 tinyglobby: 0.2.15 25161 25709 unrs-resolver: 1.11.1 25162 25710 optionalDependencies: 25163 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)) 25711 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.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.9.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)) 25164 25712 transitivePeerDependencies: 25165 25713 - supports-color 25166 25714 ··· 25175 25723 transitivePeerDependencies: 25176 25724 - supports-color 25177 25725 25178 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)): 25726 + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.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.9.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)): 25179 25727 dependencies: 25180 25728 '@rtsao/scc': 1.1.0 25181 25729 array-includes: 3.1.9 ··· 25269 25817 natural-compare: 1.4.0 25270 25818 requireindex: 1.2.0 25271 25819 25272 - eslint-plugin-svelte@2.36.0(eslint@9.17.0(jiti@2.6.1))(svelte@5.19.9)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): 25820 + eslint-plugin-svelte@2.36.0(eslint@9.17.0(jiti@2.6.1))(svelte@5.19.9)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)): 25273 25821 dependencies: 25274 25822 '@eslint-community/eslint-utils': 4.7.0(eslint@9.17.0(jiti@2.6.1)) 25275 25823 '@jridgewell/sourcemap-codec': 1.5.5 ··· 25279 25827 esutils: 2.0.3 25280 25828 known-css-properties: 0.30.0 25281 25829 postcss: 8.4.41 25282 - postcss-load-config: 3.1.4(postcss@8.4.41)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 25830 + postcss-load-config: 3.1.4(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 25283 25831 postcss-safe-parser: 6.0.0(postcss@8.4.41) 25284 25832 postcss-selector-parser: 6.1.2 25285 25833 semver: 7.7.2 ··· 25670 26218 etag: 1.8.1 25671 26219 finalhandler: 2.1.1 25672 26220 fresh: 2.0.0 25673 - http-errors: 2.0.0 26221 + http-errors: 2.0.1 25674 26222 merge-descriptors: 2.0.0 25675 26223 mime-types: 3.0.1 25676 26224 on-finished: 2.4.1 25677 26225 once: 1.4.0 25678 26226 parseurl: 1.3.3 25679 26227 proxy-addr: 2.0.7 25680 - qs: 6.14.0 26228 + qs: 6.14.1 25681 26229 range-parser: 1.2.1 25682 26230 router: 2.2.0 25683 26231 send: 1.2.0 25684 - serve-static: 2.2.0 26232 + serve-static: 2.2.1 25685 26233 statuses: 2.0.2 25686 26234 type-is: 2.0.1 25687 26235 vary: 1.1.2 ··· 25760 26308 dependencies: 25761 26309 fast-decode-uri-component: 1.0.1 25762 26310 26311 + fast-safe-stringify@2.1.1: {} 26312 + 25763 26313 fast-uri@3.1.0: {} 25764 26314 25765 26315 fastify-openapi-glue@4.8.0: ··· 25825 26375 file-entry-cache@8.0.0: 25826 26376 dependencies: 25827 26377 flat-cache: 4.0.1 26378 + 26379 + file-type@21.3.0: 26380 + dependencies: 26381 + '@tokenizer/inflate': 0.4.1 26382 + strtok3: 10.3.4 26383 + token-types: 6.1.2 26384 + uint8array-extras: 1.5.0 26385 + transitivePeerDependencies: 26386 + - supports-color 25828 26387 25829 26388 file-uri-to-path@1.0.0: {} 25830 26389 ··· 26803 27362 html-escaper: 2.0.2 26804 27363 istanbul-lib-report: 3.0.1 26805 27364 27365 + iterare@1.2.1: {} 27366 + 26806 27367 iterator.prototype@1.1.5: 26807 27368 dependencies: 26808 27369 define-data-property: 1.1.4 ··· 27058 27619 dependencies: 27059 27620 readable-stream: 2.3.8 27060 27621 27061 - less-loader@12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)): 27622 + less-loader@12.3.0(less@4.4.2)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 27062 27623 dependencies: 27063 27624 less: 4.4.2 27064 27625 optionalDependencies: 27065 - webpack: 5.104.1(esbuild@0.27.2) 27626 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 27066 27627 27067 27628 less@4.4.2: 27068 27629 dependencies: ··· 27083 27644 prelude-ls: 1.2.1 27084 27645 type-check: 0.4.0 27085 27646 27086 - license-webpack-plugin@4.0.2(webpack@5.104.1(esbuild@0.27.2)): 27647 + license-webpack-plugin@4.0.2(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 27087 27648 dependencies: 27088 27649 webpack-sources: 3.3.3 27089 27650 optionalDependencies: 27090 - webpack: 5.104.1(esbuild@0.27.2) 27651 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 27091 27652 27092 27653 light-my-request@6.6.0: 27093 27654 dependencies: ··· 27160 27721 '@lmdb/lmdb-win32-arm64': 3.4.4 27161 27722 '@lmdb/lmdb-win32-x64': 3.4.4 27162 27723 optional: true 27724 + 27725 + load-esm@1.0.3: {} 27726 + 27727 + load-tsconfig@0.2.5: {} 27163 27728 27164 27729 loader-runner@4.3.1: {} 27165 27730 ··· 27650 28215 27651 28216 mimic-function@5.0.1: {} 27652 28217 27653 - mini-css-extract-plugin@2.9.4(webpack@5.104.1(esbuild@0.27.2)): 28218 + mini-css-extract-plugin@2.9.4(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 27654 28219 dependencies: 27655 28220 schema-utils: 4.3.2 27656 28221 tapable: 2.2.3 27657 - webpack: 5.104.1(esbuild@0.27.2) 28222 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 27658 28223 27659 28224 minimalistic-assert@1.0.1: {} 27660 28225 ··· 27802 28367 27803 28368 muggle-string@0.4.1: {} 27804 28369 28370 + multer@2.1.1: 28371 + dependencies: 28372 + append-field: 1.0.0 28373 + busboy: 1.6.0 28374 + concat-stream: 2.0.0 28375 + type-is: 1.6.18 28376 + 27805 28377 multicast-dns@7.2.5: 27806 28378 dependencies: 27807 28379 dns-packet: 5.6.1 ··· 27850 28422 micro-api-client: 3.3.0 27851 28423 node-fetch: 3.3.2 27852 28424 p-wait-for: 5.0.2 27853 - qs: 6.14.0 28425 + qs: 6.14.1 27854 28426 27855 28427 next@15.2.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.97.1): 27856 28428 dependencies: ··· 28242 28814 28243 28815 nuxi@3.28.0: {} 28244 28816 28245 - nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.1(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue-tsc@3.2.4(typescript@5.9.3)): 28817 + nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)): 28246 28818 dependencies: 28247 28819 '@nuxt/devalue': 2.0.2 28248 - '@nuxt/devtools': 1.7.0(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3)) 28249 - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.56.0) 28250 - '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.56.0) 28820 + '@nuxt/devtools': 1.7.0(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) 28821 + '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 28822 + '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 28251 28823 '@nuxt/telemetry': 2.6.6(magicast@0.3.5) 28252 - '@nuxt/vite-builder': 3.14.1592(@types/node@25.2.1)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)) 28824 + '@nuxt/vite-builder': 3.14.1592(@types/node@25.2.1)(eslint@9.39.2(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)) 28253 28825 '@unhead/dom': 1.11.20 28254 28826 '@unhead/shared': 1.11.20 28255 28827 '@unhead/ssr': 1.11.20 ··· 28272 28844 h3: 1.15.4 28273 28845 hookable: 5.5.3 28274 28846 ignore: 6.0.2 28275 - impound: 0.2.2(rollup@4.56.0) 28847 + impound: 0.2.2(rollup@3.29.5) 28276 28848 jiti: 2.6.1 28277 28849 klona: 2.0.6 28278 28850 knitwork: 1.3.0 ··· 28299 28871 unctx: 2.4.1 28300 28872 unenv: 1.10.0 28301 28873 unhead: 1.11.20 28302 - unimport: 3.14.6(rollup@4.56.0) 28874 + unimport: 3.14.6(rollup@3.29.5) 28303 28875 unplugin: 1.16.1 28304 - unplugin-vue-router: 0.10.9(rollup@4.56.0)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) 28876 + unplugin-vue-router: 0.10.9(rollup@3.29.5)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) 28305 28877 unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.2)(ioredis@5.7.0) 28306 28878 untyped: 1.5.2 28307 28879 vue: 3.5.25(typescript@5.9.3) 28308 28880 vue-bundle-renderer: 2.1.2 28309 28881 vue-devtools-stub: 0.1.0 28310 - vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) 28882 + vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3)) 28311 28883 optionalDependencies: 28312 28884 '@parcel/watcher': 2.5.1 28313 28885 '@types/node': 25.2.1 ··· 28484 29056 - vue-tsc 28485 29057 - xml2js 28486 29058 28487 - nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)): 28488 - dependencies: 28489 - '@nuxt/devalue': 2.0.2 28490 - '@nuxt/devtools': 1.7.0(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) 28491 - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 28492 - '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 28493 - '@nuxt/telemetry': 2.6.6(magicast@0.3.5) 28494 - '@nuxt/vite-builder': 3.14.1592(@types/node@25.2.1)(eslint@9.39.2(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)) 28495 - '@unhead/dom': 1.11.20 28496 - '@unhead/shared': 1.11.20 28497 - '@unhead/ssr': 1.11.20 28498 - '@unhead/vue': 1.11.20(vue@3.5.25(typescript@5.9.3)) 28499 - '@vue/shared': 3.5.25 28500 - acorn: 8.14.0 28501 - c12: 2.0.1(magicast@0.3.5) 28502 - chokidar: 4.0.3 28503 - compatx: 0.1.8 28504 - consola: 3.4.2 28505 - cookie-es: 1.2.2 28506 - defu: 6.1.4 28507 - destr: 2.0.5 28508 - devalue: 5.3.2 28509 - errx: 0.1.0 28510 - esbuild: 0.24.2 28511 - escape-string-regexp: 5.0.0 28512 - estree-walker: 3.0.3 28513 - globby: 14.1.0 28514 - h3: 1.15.4 28515 - hookable: 5.5.3 28516 - ignore: 6.0.2 28517 - impound: 0.2.2(rollup@3.29.5) 28518 - jiti: 2.6.1 28519 - klona: 2.0.6 28520 - knitwork: 1.3.0 28521 - magic-string: 0.30.21 28522 - mlly: 1.8.0 28523 - nanotar: 0.1.1 28524 - nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-rc.9) 28525 - nuxi: 3.28.0 28526 - nypm: 0.3.12 28527 - ofetch: 1.5.1 28528 - ohash: 1.1.6 28529 - pathe: 1.1.2 28530 - perfect-debounce: 1.0.0 28531 - pkg-types: 1.3.1 28532 - radix3: 1.1.2 28533 - scule: 1.3.0 28534 - semver: 7.7.3 28535 - std-env: 3.10.0 28536 - strip-literal: 2.1.1 28537 - tinyglobby: 0.2.10 28538 - ufo: 1.6.1 28539 - ultrahtml: 1.6.0 28540 - uncrypto: 0.1.3 28541 - unctx: 2.4.1 28542 - unenv: 1.10.0 28543 - unhead: 1.11.20 28544 - unimport: 3.14.6(rollup@3.29.5) 28545 - unplugin: 1.16.1 28546 - unplugin-vue-router: 0.10.9(rollup@3.29.5)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) 28547 - unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.4)(ioredis@5.9.2) 28548 - untyped: 1.5.2 28549 - vue: 3.5.25(typescript@5.9.3) 28550 - vue-bundle-renderer: 2.1.2 28551 - vue-devtools-stub: 0.1.0 28552 - vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) 28553 - optionalDependencies: 28554 - '@parcel/watcher': 2.5.1 28555 - '@types/node': 25.2.1 28556 - transitivePeerDependencies: 28557 - - '@azure/app-configuration' 28558 - - '@azure/cosmos' 28559 - - '@azure/data-tables' 28560 - - '@azure/identity' 28561 - - '@azure/keyvault-secrets' 28562 - - '@azure/storage-blob' 28563 - - '@biomejs/biome' 28564 - - '@capacitor/preferences' 28565 - - '@deno/kv' 28566 - - '@electric-sql/pglite' 28567 - - '@libsql/client' 28568 - - '@netlify/blobs' 28569 - - '@planetscale/database' 28570 - - '@upstash/redis' 28571 - - '@vercel/blob' 28572 - - '@vercel/functions' 28573 - - '@vercel/kv' 28574 - - aws4fetch 28575 - - better-sqlite3 28576 - - bufferutil 28577 - - db0 28578 - - drizzle-orm 28579 - - encoding 28580 - - eslint 28581 - - idb-keyval 28582 - - ioredis 28583 - - less 28584 - - lightningcss 28585 - - magicast 28586 - - meow 28587 - - mysql2 28588 - - optionator 28589 - - rolldown 28590 - - rollup 28591 - - sass 28592 - - sass-embedded 28593 - - sqlite3 28594 - - stylelint 28595 - - stylus 28596 - - sugarss 28597 - - supports-color 28598 - - terser 28599 - - typescript 28600 - - uploadthing 28601 - - utf-8-validate 28602 - - vite 28603 - - vls 28604 - - vti 28605 - - vue-tsc 28606 - - xml2js 28607 - 28608 29059 nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)): 28609 29060 dependencies: 28610 29061 '@nuxt/devalue': 2.0.2 ··· 29097 29548 '@oxc-parser/binding-win32-ia32-msvc': 0.110.0 29098 29549 '@oxc-parser/binding-win32-x64-msvc': 0.110.0 29099 29550 29551 + oxc-resolver@11.19.1: 29552 + optionalDependencies: 29553 + '@oxc-resolver/binding-android-arm-eabi': 11.19.1 29554 + '@oxc-resolver/binding-android-arm64': 11.19.1 29555 + '@oxc-resolver/binding-darwin-arm64': 11.19.1 29556 + '@oxc-resolver/binding-darwin-x64': 11.19.1 29557 + '@oxc-resolver/binding-freebsd-x64': 11.19.1 29558 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.19.1 29559 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.19.1 29560 + '@oxc-resolver/binding-linux-arm64-gnu': 11.19.1 29561 + '@oxc-resolver/binding-linux-arm64-musl': 11.19.1 29562 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.19.1 29563 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.19.1 29564 + '@oxc-resolver/binding-linux-riscv64-musl': 11.19.1 29565 + '@oxc-resolver/binding-linux-s390x-gnu': 11.19.1 29566 + '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 29567 + '@oxc-resolver/binding-linux-x64-musl': 11.19.1 29568 + '@oxc-resolver/binding-openharmony-arm64': 11.19.1 29569 + '@oxc-resolver/binding-wasm32-wasi': 11.19.1 29570 + '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 29571 + '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 29572 + '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 29573 + 29100 29574 oxc-transform@0.110.0: 29101 29575 optionalDependencies: 29102 29576 '@oxc-transform/binding-android-arm-eabi': 0.110.0 ··· 29488 29962 camelcase-css: 2.0.1 29489 29963 postcss: 8.4.41 29490 29964 29491 - postcss-load-config@3.1.4(postcss@8.4.41)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): 29965 + postcss-load-config@3.1.4(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)): 29492 29966 dependencies: 29493 29967 lilconfig: 2.1.0 29494 29968 yaml: 1.10.2 29495 29969 optionalDependencies: 29496 29970 postcss: 8.4.41 29497 - ts-node: 10.9.2(@types/node@25.2.1)(typescript@5.9.3) 29971 + ts-node: 10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3) 29498 29972 29499 - postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)): 29973 + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)): 29500 29974 dependencies: 29501 29975 lilconfig: 3.1.3 29502 29976 yaml: 2.8.2 29503 29977 optionalDependencies: 29504 29978 postcss: 8.4.41 29505 - ts-node: 10.9.2(@types/node@24.10.10)(typescript@5.9.3) 29979 + ts-node: 10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3) 29506 29980 29507 - postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): 29981 + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)): 29508 29982 dependencies: 29509 29983 lilconfig: 3.1.3 29510 29984 yaml: 2.8.2 29511 29985 optionalDependencies: 29512 29986 postcss: 8.4.41 29513 - ts-node: 10.9.2(@types/node@25.2.1)(typescript@5.9.3) 29987 + ts-node: 10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3) 29514 29988 29515 - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)): 29989 + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 29516 29990 dependencies: 29517 29991 cosmiconfig: 9.0.0(typescript@5.9.3) 29518 29992 jiti: 2.6.1 29519 29993 postcss: 8.5.6 29520 29994 semver: 7.7.3 29521 29995 optionalDependencies: 29522 - webpack: 5.104.1(esbuild@0.27.2) 29996 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 29523 29997 transitivePeerDependencies: 29524 29998 - typescript 29525 29999 ··· 29832 30306 qjobs@1.2.0: {} 29833 30307 29834 30308 qs@6.13.0: 29835 - dependencies: 29836 - side-channel: 1.1.0 29837 - 29838 - qs@6.14.0: 29839 30309 dependencies: 29840 30310 side-channel: 1.1.0 29841 30311 ··· 30152 30622 dependencies: 30153 30623 glob: 7.2.3 30154 30624 30155 - rolldown-plugin-dts@0.22.5(@typescript/native-preview@7.0.0-dev.20260312.1)(rolldown@1.0.0-rc.9)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)): 30625 + rolldown-plugin-dts@0.22.5(@typescript/native-preview@7.0.0-dev.20260312.1)(oxc-resolver@11.19.1)(rolldown@1.0.0-rc.9)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)): 30156 30626 dependencies: 30157 30627 '@babel/generator': 8.0.0-rc.2 30158 30628 '@babel/helper-validator-identifier': 8.0.0-rc.2 ··· 30160 30630 '@babel/types': 8.0.0-rc.2 30161 30631 ast-kit: 3.0.0-beta.1 30162 30632 birpc: 4.0.0 30163 - dts-resolver: 2.1.3 30633 + dts-resolver: 2.1.3(oxc-resolver@11.19.1) 30164 30634 get-tsconfig: 4.13.6 30165 30635 obug: 2.1.1 30166 30636 rolldown: 1.0.0-rc.9 ··· 30359 30829 30360 30830 safer-buffer@2.1.2: {} 30361 30831 30362 - sass-loader@16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)): 30832 + sass-loader@16.0.6(sass@1.97.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 30363 30833 dependencies: 30364 30834 neo-async: 2.6.2 30365 30835 optionalDependencies: 30366 30836 sass: 1.97.1 30367 - webpack: 5.104.1(esbuild@0.27.2) 30837 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 30368 30838 30369 30839 sass@1.97.1: 30370 30840 dependencies: ··· 30448 30918 escape-html: 1.0.3 30449 30919 etag: 1.8.1 30450 30920 fresh: 2.0.0 30451 - http-errors: 2.0.0 30921 + http-errors: 2.0.1 30452 30922 mime-types: 3.0.1 30453 30923 ms: 2.1.3 30454 30924 on-finished: 2.4.1 ··· 30780 31250 30781 31251 source-map-js@1.2.1: {} 30782 31252 30783 - source-map-loader@5.0.0(webpack@5.104.1(esbuild@0.27.2)): 31253 + source-map-loader@5.0.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 30784 31254 dependencies: 30785 31255 iconv-lite: 0.6.3 30786 31256 source-map-js: 1.2.1 30787 - webpack: 5.104.1(esbuild@0.27.2) 31257 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 30788 31258 30789 31259 source-map-support@0.5.21: 30790 31260 dependencies: ··· 31011 31481 dependencies: 31012 31482 js-tokens: 9.0.1 31013 31483 31484 + strtok3@10.3.4: 31485 + dependencies: 31486 + '@tokenizer/token': 0.3.0 31487 + 31014 31488 structured-clone-es@1.0.0: {} 31015 31489 31016 31490 styled-jsx@5.1.6(react@19.0.0): ··· 31123 31597 31124 31598 tagged-tag@1.0.0: {} 31125 31599 31126 - tailwindcss@3.4.14(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)): 31600 + tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)): 31127 31601 dependencies: 31128 31602 '@alloc/quick-lru': 5.2.0 31129 31603 arg: 5.0.2 ··· 31142 31616 postcss: 8.4.41 31143 31617 postcss-import: 15.1.0(postcss@8.4.41) 31144 31618 postcss-js: 4.0.1(postcss@8.4.41) 31145 - postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 31619 + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 31146 31620 postcss-nested: 6.2.0(postcss@8.4.41) 31147 31621 postcss-selector-parser: 6.1.2 31148 31622 resolve: 1.22.11 ··· 31151 31625 - ts-node 31152 31626 optional: true 31153 31627 31154 - tailwindcss@3.4.14(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): 31628 + tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)): 31155 31629 dependencies: 31156 31630 '@alloc/quick-lru': 5.2.0 31157 31631 arg: 5.0.2 ··· 31170 31644 postcss: 8.4.41 31171 31645 postcss-import: 15.1.0(postcss@8.4.41) 31172 31646 postcss-js: 4.0.1(postcss@8.4.41) 31173 - postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 31647 + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 31174 31648 postcss-nested: 6.2.0(postcss@8.4.41) 31175 31649 postcss-selector-parser: 6.1.2 31176 31650 resolve: 1.22.11 ··· 31179 31653 - ts-node 31180 31654 optional: true 31181 31655 31182 - tailwindcss@3.4.9(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)): 31656 + tailwindcss@3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)): 31183 31657 dependencies: 31184 31658 '@alloc/quick-lru': 5.2.0 31185 31659 arg: 5.0.2 ··· 31198 31672 postcss: 8.4.41 31199 31673 postcss-import: 15.1.0(postcss@8.4.41) 31200 31674 postcss-js: 4.0.1(postcss@8.4.41) 31201 - postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)) 31675 + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3)) 31202 31676 postcss-nested: 6.2.0(postcss@8.4.41) 31203 31677 postcss-selector-parser: 6.1.2 31204 31678 resolve: 1.22.10 ··· 31206 31680 transitivePeerDependencies: 31207 31681 - ts-node 31208 31682 31209 - tailwindcss@3.4.9(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): 31683 + tailwindcss@3.4.9(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)): 31210 31684 dependencies: 31211 31685 '@alloc/quick-lru': 5.2.0 31212 31686 arg: 5.0.2 ··· 31225 31699 postcss: 8.4.41 31226 31700 postcss-import: 15.1.0(postcss@8.4.41) 31227 31701 postcss-js: 4.0.1(postcss@8.4.41) 31228 - postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) 31702 + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3)) 31229 31703 postcss-nested: 6.2.0(postcss@8.4.41) 31230 31704 postcss-selector-parser: 6.1.2 31231 31705 resolve: 1.22.10 ··· 31271 31745 31272 31746 term-size@2.2.1: {} 31273 31747 31274 - terser-webpack-plugin@5.3.16(esbuild@0.27.2)(webpack@5.104.1): 31748 + terser-webpack-plugin@5.3.16(@swc/core@1.15.18)(esbuild@0.27.2)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 31275 31749 dependencies: 31276 31750 '@jridgewell/trace-mapping': 0.3.31 31277 31751 jest-worker: 27.5.1 31278 31752 schema-utils: 4.3.3 31279 31753 serialize-javascript: 6.0.2 31280 31754 terser: 5.44.1 31281 - webpack: 5.104.1(esbuild@0.27.2) 31755 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 31282 31756 optionalDependencies: 31757 + '@swc/core': 1.15.18 31283 31758 esbuild: 0.27.2 31284 31759 31285 31760 terser@5.43.1: ··· 31365 31840 toad-cache@3.7.0: {} 31366 31841 31367 31842 toidentifier@1.0.1: {} 31843 + 31844 + token-types@6.1.2: 31845 + dependencies: 31846 + '@borewit/text-codec': 0.2.2 31847 + '@tokenizer/token': 0.3.0 31848 + ieee754: 1.2.1 31368 31849 31369 31850 tokenx@1.2.1: {} 31370 31851 ··· 31408 31889 31409 31890 ts-interface-checker@0.1.13: {} 31410 31891 31411 - ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3): 31892 + ts-node@10.9.2(@swc/core@1.15.18)(@types/node@24.10.10)(typescript@5.9.3): 31412 31893 dependencies: 31413 31894 '@cspotcode/source-map-support': 0.8.1 31414 31895 '@tsconfig/node10': 1.0.11 ··· 31425 31906 typescript: 5.9.3 31426 31907 v8-compile-cache-lib: 3.0.1 31427 31908 yn: 3.1.1 31909 + optionalDependencies: 31910 + '@swc/core': 1.15.18 31428 31911 optional: true 31429 31912 31430 - ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3): 31913 + ts-node@10.9.2(@swc/core@1.15.18)(@types/node@25.2.1)(typescript@5.9.3): 31431 31914 dependencies: 31432 31915 '@cspotcode/source-map-support': 0.8.1 31433 31916 '@tsconfig/node10': 1.0.11 ··· 31444 31927 typescript: 5.9.3 31445 31928 v8-compile-cache-lib: 3.0.1 31446 31929 yn: 3.1.1 31930 + optionalDependencies: 31931 + '@swc/core': 1.15.18 31447 31932 optional: true 31448 31933 31449 31934 tsconfck@3.1.6(typescript@5.9.3): ··· 31457 31942 minimist: 1.2.8 31458 31943 strip-bom: 3.0.0 31459 31944 31460 - tsdown@0.21.3(@arethetypeswrong/core@0.18.2)(@typescript/native-preview@7.0.0-dev.20260312.1)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)): 31945 + tsdown@0.21.3(@arethetypeswrong/core@0.18.2)(@typescript/native-preview@7.0.0-dev.20260312.1)(oxc-resolver@11.19.1)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)): 31461 31946 dependencies: 31462 31947 ansis: 4.2.0 31463 31948 cac: 7.0.0 ··· 31468 31953 obug: 2.1.1 31469 31954 picomatch: 4.0.3 31470 31955 rolldown: 1.0.0-rc.9 31471 - rolldown-plugin-dts: 0.22.5(@typescript/native-preview@7.0.0-dev.20260312.1)(rolldown@1.0.0-rc.9)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)) 31956 + rolldown-plugin-dts: 0.22.5(@typescript/native-preview@7.0.0-dev.20260312.1)(oxc-resolver@11.19.1)(rolldown@1.0.0-rc.9)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3)) 31472 31957 semver: 7.7.4 31473 31958 tinyexec: 1.0.4 31474 31959 tinyglobby: 0.2.15 ··· 31598 32083 31599 32084 typed-assert@1.0.9: {} 31600 32085 32086 + typedarray@0.0.6: {} 32087 + 31601 32088 typescript-eslint@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.3): 31602 32089 dependencies: 31603 32090 '@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.17.0(jiti@2.6.1))(typescript@5.9.3) ··· 31641 32128 ufo@1.6.1: {} 31642 32129 31643 32130 ufo@1.6.3: {} 32131 + 32132 + uid@2.0.2: 32133 + dependencies: 32134 + '@lukeed/csprng': 1.1.0 32135 + 32136 + uint8array-extras@1.5.0: {} 31644 32137 31645 32138 ultrahtml@1.6.0: {} 31646 32139 ··· 31889 32382 normalize-path: 2.1.1 31890 32383 31891 32384 unpipe@1.0.0: {} 32385 + 32386 + unplugin-swc@1.5.9(@swc/core@1.15.18)(rollup@4.56.0): 32387 + dependencies: 32388 + '@rollup/pluginutils': 5.3.0(rollup@4.56.0) 32389 + '@swc/core': 1.15.18 32390 + load-tsconfig: 0.2.5 32391 + unplugin: 2.3.11 32392 + transitivePeerDependencies: 32393 + - rollup 31892 32394 31893 32395 unplugin-utils@0.2.5: 31894 32396 dependencies: ··· 31922 32424 unplugin: 2.0.0-beta.1 31923 32425 yaml: 2.8.2 31924 32426 optionalDependencies: 31925 - vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) 32427 + vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3)) 31926 32428 transitivePeerDependencies: 31927 32429 - rollup 31928 32430 - vue ··· 32228 32730 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) 32229 32731 vite-hot-client: 2.1.0(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) 32230 32732 32231 - vite-hot-client@0.2.4(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)): 32232 - dependencies: 32233 - vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 32234 - 32235 32733 vite-hot-client@0.2.4(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 32236 32734 dependencies: 32237 32735 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) ··· 32363 32861 - rollup 32364 32862 - supports-color 32365 32863 32366 - vite-plugin-inspect@0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)): 32367 - dependencies: 32368 - '@antfu/utils': 0.7.10 32369 - '@rollup/pluginutils': 5.2.0(rollup@4.56.0) 32370 - debug: 4.4.3 32371 - error-stack-parser-es: 0.1.5 32372 - fs-extra: 11.3.1 32373 - open: 10.2.0 32374 - perfect-debounce: 1.0.0 32375 - picocolors: 1.1.1 32376 - sirv: 3.0.2 32377 - vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 32378 - optionalDependencies: 32379 - '@nuxt/kit': 3.21.0(magicast@0.3.5) 32380 - transitivePeerDependencies: 32381 - - rollup 32382 - - supports-color 32383 - 32384 32864 vite-plugin-inspect@0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 32385 32865 dependencies: 32386 32866 '@antfu/utils': 0.7.10 ··· 32445 32925 - '@nuxt/kit' 32446 32926 - supports-color 32447 32927 - vue 32448 - 32449 - vite-plugin-vue-inspector@5.3.2(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)): 32450 - dependencies: 32451 - '@babel/core': 7.28.3 32452 - '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) 32453 - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) 32454 - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) 32455 - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) 32456 - '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.3) 32457 - '@vue/compiler-dom': 3.5.25 32458 - kolorist: 1.8.0 32459 - magic-string: 0.30.21 32460 - vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 32461 - transitivePeerDependencies: 32462 - - supports-color 32463 32928 32464 32929 vite-plugin-vue-inspector@5.3.2(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): 32465 32930 dependencies: ··· 32836 33301 jsdom: 28.0.0 32837 33302 transitivePeerDependencies: 32838 33303 - msw 32839 - optional: true 32840 33304 32841 33305 void-elements@2.0.1: {} 32842 33306 ··· 33007 33471 33008 33472 webidl-conversions@8.0.1: {} 33009 33473 33010 - webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.104.1): 33474 + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 33011 33475 dependencies: 33012 33476 colorette: 2.0.20 33013 33477 memfs: 4.56.10(tslib@2.8.1) ··· 33016 33480 range-parser: 1.2.1 33017 33481 schema-utils: 4.3.2 33018 33482 optionalDependencies: 33019 - webpack: 5.104.1(esbuild@0.27.2) 33483 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 33020 33484 transitivePeerDependencies: 33021 33485 - tslib 33022 33486 33023 - webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1): 33487 + webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 33024 33488 dependencies: 33025 33489 '@types/bonjour': 3.5.13 33026 33490 '@types/connect-history-api-fallback': 1.5.4 ··· 33048 33512 serve-index: 1.9.1 33049 33513 sockjs: 0.3.24 33050 33514 spdy: 4.0.2 33051 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1) 33515 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 33052 33516 ws: 8.18.3 33053 33517 optionalDependencies: 33054 - webpack: 5.104.1(esbuild@0.27.2) 33518 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 33055 33519 transitivePeerDependencies: 33056 33520 - bufferutil 33057 33521 - debug ··· 33067 33531 33068 33532 webpack-sources@3.3.3: {} 33069 33533 33070 - webpack-subresource-integrity@5.1.0(webpack@5.104.1(esbuild@0.27.2)): 33534 + webpack-subresource-integrity@5.1.0(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)): 33071 33535 dependencies: 33072 33536 typed-assert: 1.0.9 33073 - webpack: 5.104.1(esbuild@0.27.2) 33537 + webpack: 5.104.1(@swc/core@1.15.18)(esbuild@0.27.2) 33074 33538 33075 33539 webpack-virtual-modules@0.6.2: {} 33076 33540 33077 - webpack@5.104.1(esbuild@0.27.2): 33541 + webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2): 33078 33542 dependencies: 33079 33543 '@types/eslint-scope': 3.7.7 33080 33544 '@types/estree': 1.0.8 ··· 33098 33562 neo-async: 2.6.2 33099 33563 schema-utils: 4.3.3 33100 33564 tapable: 2.3.0 33101 - terser-webpack-plugin: 5.3.16(esbuild@0.27.2)(webpack@5.104.1) 33565 + terser-webpack-plugin: 5.3.16(@swc/core@1.15.18)(esbuild@0.27.2)(webpack@5.104.1(@swc/core@1.15.18)(esbuild@0.27.2)) 33102 33566 watchpack: 2.4.4 33103 33567 webpack-sources: 3.3.3 33104 33568 transitivePeerDependencies:
+8
vitest.config.ts
··· 60 60 { 61 61 extends: true, 62 62 test: { 63 + name: '@test/openapi-ts-nestjs-v11', 64 + root: 'packages/openapi-ts-tests/nestjs/v11', 65 + setupFiles: ['./vitest.setup.ts'], 66 + }, 67 + }, 68 + { 69 + extends: true, 70 + test: { 63 71 name: '@test/openapi-ts-sdks', 64 72 root: 'packages/openapi-ts-tests/sdks', 65 73 setupFiles: ['./vitest.setup.ts'],