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

feat(nuxt): add nuxt module + autogen types

+383 -1815
+1 -1
examples/openapi-ts-nuxt/app.vue
··· 1 1 <script setup lang="ts"> 2 - import { client } from './client/client.gen'; 2 + import { client } from '#hey-api/client.gen'; 3 3 4 4 // configure internal service client 5 5 client.setConfig({
-25
examples/openapi-ts-nuxt/client/client.gen.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - 3 - import { 4 - type ClientOptions as DefaultClientOptions, 5 - type Config, 6 - createClient, 7 - createConfig, 8 - } from '@hey-api/client-nuxt'; 9 - 10 - import type { ClientOptions } from './types.gen'; 11 - 12 - /** 13 - * The `createClientConfig()` function will be called on client initialization 14 - * and the returned object will become the client's initial configuration. 15 - * 16 - * You may want to initialize your client this way instead of calling 17 - * `setConfig()`. This is useful for example if you're using Next.js 18 - * to ensure your client always has the correct values. 19 - */ 20 - export type CreateClientConfig<T extends DefaultClientOptions = ClientOptions> = 21 - ( 22 - override?: Config<DefaultClientOptions & T>, 23 - ) => Config<Required<DefaultClientOptions> & T>; 24 - 25 - export const client = createClient(createConfig<ClientOptions>());
-3
examples/openapi-ts-nuxt/client/index.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - export * from './sdk.gen'; 3 - export * from './types.gen';
-244
examples/openapi-ts-nuxt/client/schemas.gen.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - 3 - export const OrderSchema = { 4 - properties: { 5 - complete: { 6 - type: 'boolean', 7 - }, 8 - id: { 9 - example: 10, 10 - format: 'int64', 11 - type: 'integer', 12 - }, 13 - petId: { 14 - example: 198772, 15 - format: 'int64', 16 - type: 'integer', 17 - }, 18 - quantity: { 19 - example: 7, 20 - format: 'int32', 21 - type: 'integer', 22 - }, 23 - shipDate: { 24 - format: 'date-time', 25 - type: 'string', 26 - }, 27 - status: { 28 - description: 'Order Status', 29 - enum: ['placed', 'approved', 'delivered'], 30 - example: 'approved', 31 - type: 'string', 32 - }, 33 - }, 34 - type: 'object', 35 - 'x-swagger-router-model': 'io.swagger.petstore.model.Order', 36 - xml: { 37 - name: 'order', 38 - }, 39 - } as const; 40 - 41 - export const CustomerSchema = { 42 - properties: { 43 - address: { 44 - items: { 45 - $ref: '#/components/schemas/Address', 46 - }, 47 - type: 'array', 48 - xml: { 49 - name: 'addresses', 50 - wrapped: true, 51 - }, 52 - }, 53 - id: { 54 - example: 100000, 55 - format: 'int64', 56 - type: 'integer', 57 - }, 58 - username: { 59 - example: 'fehguy', 60 - type: 'string', 61 - }, 62 - }, 63 - type: 'object', 64 - xml: { 65 - name: 'customer', 66 - }, 67 - } as const; 68 - 69 - export const AddressSchema = { 70 - properties: { 71 - city: { 72 - example: 'Palo Alto', 73 - type: 'string', 74 - }, 75 - state: { 76 - example: 'CA', 77 - type: 'string', 78 - }, 79 - street: { 80 - example: '437 Lytton', 81 - type: 'string', 82 - }, 83 - zip: { 84 - example: 94301, 85 - type: 'string', 86 - }, 87 - }, 88 - type: 'object', 89 - xml: { 90 - name: 'address', 91 - }, 92 - } as const; 93 - 94 - export const CategorySchema = { 95 - properties: { 96 - id: { 97 - example: 1, 98 - format: 'int64', 99 - type: 'integer', 100 - }, 101 - name: { 102 - example: 'Dogs', 103 - type: 'string', 104 - }, 105 - }, 106 - type: 'object', 107 - 'x-swagger-router-model': 'io.swagger.petstore.model.Category', 108 - xml: { 109 - name: 'category', 110 - }, 111 - } as const; 112 - 113 - export const UserSchema = { 114 - properties: { 115 - email: { 116 - example: 'john@email.com', 117 - type: 'string', 118 - }, 119 - firstName: { 120 - example: 'John', 121 - type: 'string', 122 - }, 123 - id: { 124 - example: 10, 125 - format: 'int64', 126 - type: 'integer', 127 - }, 128 - lastName: { 129 - example: 'James', 130 - type: 'string', 131 - }, 132 - password: { 133 - example: 12345, 134 - type: 'string', 135 - }, 136 - phone: { 137 - example: 12345, 138 - type: 'string', 139 - }, 140 - userStatus: { 141 - description: 'User Status', 142 - example: 1, 143 - format: 'int32', 144 - type: 'integer', 145 - }, 146 - username: { 147 - example: 'theUser', 148 - type: 'string', 149 - }, 150 - }, 151 - type: 'object', 152 - 'x-swagger-router-model': 'io.swagger.petstore.model.User', 153 - xml: { 154 - name: 'user', 155 - }, 156 - } as const; 157 - 158 - export const TagSchema = { 159 - properties: { 160 - id: { 161 - format: 'int64', 162 - type: 'integer', 163 - }, 164 - name: { 165 - type: 'string', 166 - }, 167 - }, 168 - type: 'object', 169 - 'x-swagger-router-model': 'io.swagger.petstore.model.Tag', 170 - xml: { 171 - name: 'tag', 172 - }, 173 - } as const; 174 - 175 - export const PetSchema = { 176 - properties: { 177 - category: { 178 - $ref: '#/components/schemas/Category', 179 - }, 180 - id: { 181 - example: 10, 182 - format: 'int64', 183 - type: 'integer', 184 - }, 185 - name: { 186 - example: 'doggie', 187 - type: 'string', 188 - }, 189 - photoUrls: { 190 - items: { 191 - type: 'string', 192 - xml: { 193 - name: 'photoUrl', 194 - }, 195 - }, 196 - type: 'array', 197 - xml: { 198 - wrapped: true, 199 - }, 200 - }, 201 - status: { 202 - description: 'pet status in the store', 203 - enum: ['available', 'pending', 'sold'], 204 - type: 'string', 205 - }, 206 - tags: { 207 - items: { 208 - $ref: '#/components/schemas/Tag', 209 - xml: { 210 - name: 'tag', 211 - }, 212 - }, 213 - type: 'array', 214 - xml: { 215 - wrapped: true, 216 - }, 217 - }, 218 - }, 219 - required: ['name', 'photoUrls'], 220 - type: 'object', 221 - 'x-swagger-router-model': 'io.swagger.petstore.model.Pet', 222 - xml: { 223 - name: 'pet', 224 - }, 225 - } as const; 226 - 227 - export const ApiResponseSchema = { 228 - properties: { 229 - code: { 230 - format: 'int32', 231 - type: 'integer', 232 - }, 233 - message: { 234 - type: 'string', 235 - }, 236 - type: { 237 - type: 'string', 238 - }, 239 - }, 240 - type: 'object', 241 - xml: { 242 - name: '##default', 243 - }, 244 - } as const;
-611
examples/openapi-ts-nuxt/client/sdk.gen.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - 3 - import type { 4 - Client, 5 - Composable, 6 - Options as ClientOptions, 7 - TDataShape, 8 - } from '@hey-api/client-nuxt'; 9 - 10 - import { client as _heyApiClient } from './client.gen'; 11 - import { 12 - addPetResponseTransformer, 13 - createUserResponseTransformer, 14 - findPetsByStatusResponseTransformer, 15 - findPetsByTagsResponseTransformer, 16 - getOrderByIdResponseTransformer, 17 - getPetByIdResponseTransformer, 18 - getUserByNameResponseTransformer, 19 - placeOrderResponseTransformer, 20 - updatePetResponseTransformer, 21 - } from './transformers.gen'; 22 - import type { 23 - AddPetData, 24 - AddPetResponse, 25 - CreateUserData, 26 - CreateUserResponse, 27 - CreateUsersWithListInputData, 28 - CreateUsersWithListInputResponse, 29 - DeleteOrderData, 30 - DeletePetData, 31 - DeleteUserData, 32 - FindPetsByStatusData, 33 - FindPetsByStatusResponse, 34 - FindPetsByTagsData, 35 - FindPetsByTagsResponse, 36 - GetInventoryData, 37 - GetInventoryResponse, 38 - GetOrderByIdData, 39 - GetOrderByIdResponse, 40 - GetPetByIdData, 41 - GetPetByIdResponse, 42 - GetUserByNameData, 43 - GetUserByNameResponse, 44 - LoginUserData, 45 - LoginUserResponse, 46 - LogoutUserData, 47 - PlaceOrderData, 48 - PlaceOrderResponse, 49 - UpdatePetData, 50 - UpdatePetResponse, 51 - UpdatePetWithFormData, 52 - UpdateUserData, 53 - UploadFileData, 54 - UploadFileResponse, 55 - } from './types.gen'; 56 - import { 57 - zAddPetResponse, 58 - zCreateUserResponse, 59 - zCreateUsersWithListInputResponse, 60 - zFindPetsByStatusResponse, 61 - zFindPetsByTagsResponse, 62 - zGetInventoryResponse, 63 - zGetOrderByIdResponse, 64 - zGetPetByIdResponse, 65 - zGetUserByNameResponse, 66 - zLoginUserResponse, 67 - zPlaceOrderResponse, 68 - zUpdatePetResponse, 69 - zUploadFileResponse, 70 - } from './zod.gen'; 71 - 72 - export type Options< 73 - TComposable extends Composable, 74 - TData extends TDataShape = TDataShape, 75 - ResT = unknown, 76 - DefaultT = undefined, 77 - > = ClientOptions<TComposable, TData, ResT, DefaultT> & { 78 - /** 79 - * You can provide a client instance returned by `createClient()` instead of 80 - * individual options. This might be also useful if you want to implement a 81 - * custom client. 82 - */ 83 - client?: Client; 84 - /** 85 - * You can pass arbitrary values through the `meta` object. This can be 86 - * used to access values that aren't defined as part of the SDK function. 87 - */ 88 - meta?: Record<string, unknown>; 89 - }; 90 - 91 - /** 92 - * Add a new pet to the store 93 - * Add a new pet to the store 94 - */ 95 - export const addPet = < 96 - TComposable extends Composable, 97 - DefaultT extends AddPetResponse = AddPetResponse, 98 - >( 99 - options: Options<TComposable, AddPetData, AddPetResponse, DefaultT>, 100 - ) => 101 - (options.client ?? _heyApiClient).post< 102 - TComposable, 103 - AddPetResponse | DefaultT, 104 - unknown, 105 - DefaultT 106 - >({ 107 - responseTransformer: addPetResponseTransformer, 108 - responseValidator: async (data) => await zAddPetResponse.parseAsync(data), 109 - security: [ 110 - { 111 - scheme: 'bearer', 112 - type: 'http', 113 - }, 114 - ], 115 - url: '/pet', 116 - ...options, 117 - headers: { 118 - 'Content-Type': 'application/json', 119 - ...options?.headers, 120 - }, 121 - }); 122 - 123 - /** 124 - * Update an existing pet 125 - * Update an existing pet by Id 126 - */ 127 - export const updatePet = < 128 - TComposable extends Composable, 129 - DefaultT extends UpdatePetResponse = UpdatePetResponse, 130 - >( 131 - options: Options<TComposable, UpdatePetData, UpdatePetResponse, DefaultT>, 132 - ) => 133 - (options.client ?? _heyApiClient).put< 134 - TComposable, 135 - UpdatePetResponse | DefaultT, 136 - unknown, 137 - DefaultT 138 - >({ 139 - responseTransformer: updatePetResponseTransformer, 140 - responseValidator: async (data) => 141 - await zUpdatePetResponse.parseAsync(data), 142 - security: [ 143 - { 144 - scheme: 'bearer', 145 - type: 'http', 146 - }, 147 - ], 148 - url: '/pet', 149 - ...options, 150 - headers: { 151 - 'Content-Type': 'application/json', 152 - ...options?.headers, 153 - }, 154 - }); 155 - 156 - /** 157 - * Finds Pets by status 158 - * Multiple status values can be provided with comma separated strings 159 - */ 160 - export const findPetsByStatus = < 161 - TComposable extends Composable, 162 - DefaultT extends FindPetsByStatusResponse = FindPetsByStatusResponse, 163 - >( 164 - options: Options< 165 - TComposable, 166 - FindPetsByStatusData, 167 - FindPetsByStatusResponse, 168 - DefaultT 169 - >, 170 - ) => 171 - (options.client ?? _heyApiClient).get< 172 - TComposable, 173 - FindPetsByStatusResponse | DefaultT, 174 - unknown, 175 - DefaultT 176 - >({ 177 - responseTransformer: findPetsByStatusResponseTransformer, 178 - responseValidator: async (data) => 179 - await zFindPetsByStatusResponse.parseAsync(data), 180 - security: [ 181 - { 182 - scheme: 'bearer', 183 - type: 'http', 184 - }, 185 - ], 186 - url: '/pet/findByStatus', 187 - ...options, 188 - }); 189 - 190 - /** 191 - * Finds Pets by tags 192 - * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. 193 - */ 194 - export const findPetsByTags = < 195 - TComposable extends Composable, 196 - DefaultT extends FindPetsByTagsResponse = FindPetsByTagsResponse, 197 - >( 198 - options: Options< 199 - TComposable, 200 - FindPetsByTagsData, 201 - FindPetsByTagsResponse, 202 - DefaultT 203 - >, 204 - ) => 205 - (options.client ?? _heyApiClient).get< 206 - TComposable, 207 - FindPetsByTagsResponse | DefaultT, 208 - unknown, 209 - DefaultT 210 - >({ 211 - responseTransformer: findPetsByTagsResponseTransformer, 212 - responseValidator: async (data) => 213 - await zFindPetsByTagsResponse.parseAsync(data), 214 - security: [ 215 - { 216 - scheme: 'bearer', 217 - type: 'http', 218 - }, 219 - ], 220 - url: '/pet/findByTags', 221 - ...options, 222 - }); 223 - 224 - /** 225 - * Deletes a pet 226 - */ 227 - export const deletePet = <TComposable extends Composable, DefaultT = undefined>( 228 - options: Options<TComposable, DeletePetData, unknown, DefaultT>, 229 - ) => 230 - (options.client ?? _heyApiClient).delete< 231 - TComposable, 232 - unknown | DefaultT, 233 - unknown, 234 - DefaultT 235 - >({ 236 - security: [ 237 - { 238 - scheme: 'bearer', 239 - type: 'http', 240 - }, 241 - ], 242 - url: '/pet/{petId}', 243 - ...options, 244 - }); 245 - 246 - /** 247 - * Find pet by ID 248 - * Returns a single pet 249 - */ 250 - export const getPetById = < 251 - TComposable extends Composable, 252 - DefaultT extends GetPetByIdResponse = GetPetByIdResponse, 253 - >( 254 - options: Options<TComposable, GetPetByIdData, GetPetByIdResponse, DefaultT>, 255 - ) => 256 - (options.client ?? _heyApiClient).get< 257 - TComposable, 258 - GetPetByIdResponse | DefaultT, 259 - unknown, 260 - DefaultT 261 - >({ 262 - responseTransformer: getPetByIdResponseTransformer, 263 - responseValidator: async (data) => 264 - await zGetPetByIdResponse.parseAsync(data), 265 - security: [ 266 - { 267 - name: 'api_key', 268 - type: 'apiKey', 269 - }, 270 - { 271 - scheme: 'bearer', 272 - type: 'http', 273 - }, 274 - ], 275 - url: '/pet/{petId}', 276 - ...options, 277 - }); 278 - 279 - /** 280 - * Updates a pet in the store with form data 281 - */ 282 - export const updatePetWithForm = < 283 - TComposable extends Composable, 284 - DefaultT = undefined, 285 - >( 286 - options: Options<TComposable, UpdatePetWithFormData, unknown, DefaultT>, 287 - ) => 288 - (options.client ?? _heyApiClient).post< 289 - TComposable, 290 - unknown | DefaultT, 291 - unknown, 292 - DefaultT 293 - >({ 294 - security: [ 295 - { 296 - scheme: 'bearer', 297 - type: 'http', 298 - }, 299 - ], 300 - url: '/pet/{petId}', 301 - ...options, 302 - }); 303 - 304 - /** 305 - * uploads an image 306 - */ 307 - export const uploadFile = < 308 - TComposable extends Composable, 309 - DefaultT extends UploadFileResponse = UploadFileResponse, 310 - >( 311 - options: Options<TComposable, UploadFileData, UploadFileResponse, DefaultT>, 312 - ) => 313 - (options.client ?? _heyApiClient).post< 314 - TComposable, 315 - UploadFileResponse | DefaultT, 316 - unknown, 317 - DefaultT 318 - >({ 319 - responseValidator: async (data) => 320 - await zUploadFileResponse.parseAsync(data), 321 - security: [ 322 - { 323 - scheme: 'bearer', 324 - type: 'http', 325 - }, 326 - ], 327 - url: '/pet/{petId}/uploadImage', 328 - ...options, 329 - headers: { 330 - 'Content-Type': 'application/octet-stream', 331 - ...options?.headers, 332 - }, 333 - }); 334 - 335 - /** 336 - * Returns pet inventories by status 337 - * Returns a map of status codes to quantities 338 - */ 339 - export const getInventory = < 340 - TComposable extends Composable, 341 - DefaultT extends GetInventoryResponse = GetInventoryResponse, 342 - >( 343 - options: Options< 344 - TComposable, 345 - GetInventoryData, 346 - GetInventoryResponse, 347 - DefaultT 348 - >, 349 - ) => 350 - (options.client ?? _heyApiClient).get< 351 - TComposable, 352 - GetInventoryResponse | DefaultT, 353 - unknown, 354 - DefaultT 355 - >({ 356 - responseValidator: async (data) => 357 - await zGetInventoryResponse.parseAsync(data), 358 - security: [ 359 - { 360 - name: 'api_key', 361 - type: 'apiKey', 362 - }, 363 - ], 364 - url: '/store/inventory', 365 - ...options, 366 - }); 367 - 368 - /** 369 - * Place an order for a pet 370 - * Place a new order in the store 371 - */ 372 - export const placeOrder = < 373 - TComposable extends Composable, 374 - DefaultT extends PlaceOrderResponse = PlaceOrderResponse, 375 - >( 376 - options: Options<TComposable, PlaceOrderData, PlaceOrderResponse, DefaultT>, 377 - ) => 378 - (options.client ?? _heyApiClient).post< 379 - TComposable, 380 - PlaceOrderResponse | DefaultT, 381 - unknown, 382 - DefaultT 383 - >({ 384 - responseTransformer: placeOrderResponseTransformer, 385 - responseValidator: async (data) => 386 - await zPlaceOrderResponse.parseAsync(data), 387 - url: '/store/order', 388 - ...options, 389 - headers: { 390 - 'Content-Type': 'application/json', 391 - ...options?.headers, 392 - }, 393 - }); 394 - 395 - /** 396 - * Delete purchase order by ID 397 - * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors 398 - */ 399 - export const deleteOrder = < 400 - TComposable extends Composable, 401 - DefaultT = undefined, 402 - >( 403 - options: Options<TComposable, DeleteOrderData, unknown, DefaultT>, 404 - ) => 405 - (options.client ?? _heyApiClient).delete< 406 - TComposable, 407 - unknown | DefaultT, 408 - unknown, 409 - DefaultT 410 - >({ 411 - url: '/store/order/{orderId}', 412 - ...options, 413 - }); 414 - 415 - /** 416 - * Find purchase order by ID 417 - * For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions. 418 - */ 419 - export const getOrderById = < 420 - TComposable extends Composable, 421 - DefaultT extends GetOrderByIdResponse = GetOrderByIdResponse, 422 - >( 423 - options: Options< 424 - TComposable, 425 - GetOrderByIdData, 426 - GetOrderByIdResponse, 427 - DefaultT 428 - >, 429 - ) => 430 - (options.client ?? _heyApiClient).get< 431 - TComposable, 432 - GetOrderByIdResponse | DefaultT, 433 - unknown, 434 - DefaultT 435 - >({ 436 - responseTransformer: getOrderByIdResponseTransformer, 437 - responseValidator: async (data) => 438 - await zGetOrderByIdResponse.parseAsync(data), 439 - url: '/store/order/{orderId}', 440 - ...options, 441 - }); 442 - 443 - /** 444 - * Create user 445 - * This can only be done by the logged in user. 446 - */ 447 - export const createUser = < 448 - TComposable extends Composable, 449 - DefaultT extends CreateUserResponse = CreateUserResponse, 450 - >( 451 - options: Options<TComposable, CreateUserData, CreateUserResponse, DefaultT>, 452 - ) => 453 - (options.client ?? _heyApiClient).post< 454 - TComposable, 455 - CreateUserResponse | DefaultT, 456 - unknown, 457 - DefaultT 458 - >({ 459 - responseTransformer: createUserResponseTransformer, 460 - responseValidator: async (data) => 461 - await zCreateUserResponse.parseAsync(data), 462 - url: '/user', 463 - ...options, 464 - headers: { 465 - 'Content-Type': 'application/json', 466 - ...options?.headers, 467 - }, 468 - }); 469 - 470 - /** 471 - * Creates list of users with given input array 472 - * Creates list of users with given input array 473 - */ 474 - export const createUsersWithListInput = < 475 - TComposable extends Composable, 476 - DefaultT extends 477 - CreateUsersWithListInputResponse = CreateUsersWithListInputResponse, 478 - >( 479 - options: Options< 480 - TComposable, 481 - CreateUsersWithListInputData, 482 - CreateUsersWithListInputResponse, 483 - DefaultT 484 - >, 485 - ) => 486 - (options.client ?? _heyApiClient).post< 487 - TComposable, 488 - CreateUsersWithListInputResponse | DefaultT, 489 - unknown, 490 - DefaultT 491 - >({ 492 - responseValidator: async (data) => 493 - await zCreateUsersWithListInputResponse.parseAsync(data), 494 - url: '/user/createWithList', 495 - ...options, 496 - headers: { 497 - 'Content-Type': 'application/json', 498 - ...options?.headers, 499 - }, 500 - }); 501 - 502 - /** 503 - * Logs user into the system 504 - */ 505 - export const loginUser = < 506 - TComposable extends Composable, 507 - DefaultT extends LoginUserResponse = LoginUserResponse, 508 - >( 509 - options: Options<TComposable, LoginUserData, LoginUserResponse, DefaultT>, 510 - ) => 511 - (options.client ?? _heyApiClient).get< 512 - TComposable, 513 - LoginUserResponse | DefaultT, 514 - unknown, 515 - DefaultT 516 - >({ 517 - responseValidator: async (data) => 518 - await zLoginUserResponse.parseAsync(data), 519 - url: '/user/login', 520 - ...options, 521 - }); 522 - 523 - /** 524 - * Logs out current logged in user session 525 - */ 526 - export const logoutUser = < 527 - TComposable extends Composable, 528 - DefaultT = undefined, 529 - >( 530 - options: Options<TComposable, LogoutUserData, unknown, DefaultT>, 531 - ) => 532 - (options.client ?? _heyApiClient).get< 533 - TComposable, 534 - unknown | DefaultT, 535 - unknown, 536 - DefaultT 537 - >({ 538 - url: '/user/logout', 539 - ...options, 540 - }); 541 - 542 - /** 543 - * Delete user 544 - * This can only be done by the logged in user. 545 - */ 546 - export const deleteUser = < 547 - TComposable extends Composable, 548 - DefaultT = undefined, 549 - >( 550 - options: Options<TComposable, DeleteUserData, unknown, DefaultT>, 551 - ) => 552 - (options.client ?? _heyApiClient).delete< 553 - TComposable, 554 - unknown | DefaultT, 555 - unknown, 556 - DefaultT 557 - >({ 558 - url: '/user/{username}', 559 - ...options, 560 - }); 561 - 562 - /** 563 - * Get user by user name 564 - */ 565 - export const getUserByName = < 566 - TComposable extends Composable, 567 - DefaultT extends GetUserByNameResponse = GetUserByNameResponse, 568 - >( 569 - options: Options< 570 - TComposable, 571 - GetUserByNameData, 572 - GetUserByNameResponse, 573 - DefaultT 574 - >, 575 - ) => 576 - (options.client ?? _heyApiClient).get< 577 - TComposable, 578 - GetUserByNameResponse | DefaultT, 579 - unknown, 580 - DefaultT 581 - >({ 582 - responseTransformer: getUserByNameResponseTransformer, 583 - responseValidator: async (data) => 584 - await zGetUserByNameResponse.parseAsync(data), 585 - url: '/user/{username}', 586 - ...options, 587 - }); 588 - 589 - /** 590 - * Update user 591 - * This can only be done by the logged in user. 592 - */ 593 - export const updateUser = < 594 - TComposable extends Composable, 595 - DefaultT = undefined, 596 - >( 597 - options: Options<TComposable, UpdateUserData, unknown, DefaultT>, 598 - ) => 599 - (options.client ?? _heyApiClient).put< 600 - TComposable, 601 - unknown | DefaultT, 602 - unknown, 603 - DefaultT 604 - >({ 605 - url: '/user/{username}', 606 - ...options, 607 - headers: { 608 - 'Content-Type': 'application/json', 609 - ...options?.headers, 610 - }, 611 - });
-125
examples/openapi-ts-nuxt/client/transformers.gen.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - 3 - import type { 4 - AddPetResponse, 5 - CreateUserResponse, 6 - FindPetsByStatusResponse, 7 - FindPetsByTagsResponse, 8 - GetOrderByIdResponse, 9 - GetPetByIdResponse, 10 - GetUserByNameResponse, 11 - PlaceOrderResponse, 12 - UpdatePetResponse, 13 - } from './types.gen'; 14 - 15 - const categorySchemaResponseTransformer = (data: any) => { 16 - if (data.id) { 17 - data.id = BigInt(data.id.toString()); 18 - } 19 - return data; 20 - }; 21 - 22 - const tagSchemaResponseTransformer = (data: any) => { 23 - if (data.id) { 24 - data.id = BigInt(data.id.toString()); 25 - } 26 - return data; 27 - }; 28 - 29 - const petSchemaResponseTransformer = (data: any) => { 30 - if (data.id) { 31 - data.id = BigInt(data.id.toString()); 32 - } 33 - if (data.category) { 34 - data.category = categorySchemaResponseTransformer(data.category); 35 - } 36 - if (data.tags) { 37 - data.tags = data.tags.map((item: any) => 38 - tagSchemaResponseTransformer(item), 39 - ); 40 - } 41 - return data; 42 - }; 43 - 44 - export const addPetResponseTransformer = async ( 45 - data: any, 46 - ): Promise<AddPetResponse> => { 47 - data = petSchemaResponseTransformer(data); 48 - return data; 49 - }; 50 - 51 - export const updatePetResponseTransformer = async ( 52 - data: any, 53 - ): Promise<UpdatePetResponse> => { 54 - data = petSchemaResponseTransformer(data); 55 - return data; 56 - }; 57 - 58 - export const findPetsByStatusResponseTransformer = async ( 59 - data: any, 60 - ): Promise<FindPetsByStatusResponse> => { 61 - data = data.map((item: any) => petSchemaResponseTransformer(item)); 62 - return data; 63 - }; 64 - 65 - export const findPetsByTagsResponseTransformer = async ( 66 - data: any, 67 - ): Promise<FindPetsByTagsResponse> => { 68 - data = data.map((item: any) => petSchemaResponseTransformer(item)); 69 - return data; 70 - }; 71 - 72 - export const getPetByIdResponseTransformer = async ( 73 - data: any, 74 - ): Promise<GetPetByIdResponse> => { 75 - data = petSchemaResponseTransformer(data); 76 - return data; 77 - }; 78 - 79 - const orderSchemaResponseTransformer = (data: any) => { 80 - if (data.id) { 81 - data.id = BigInt(data.id.toString()); 82 - } 83 - if (data.petId) { 84 - data.petId = BigInt(data.petId.toString()); 85 - } 86 - if (data.shipDate) { 87 - data.shipDate = new Date(data.shipDate); 88 - } 89 - return data; 90 - }; 91 - 92 - export const placeOrderResponseTransformer = async ( 93 - data: any, 94 - ): Promise<PlaceOrderResponse> => { 95 - data = orderSchemaResponseTransformer(data); 96 - return data; 97 - }; 98 - 99 - export const getOrderByIdResponseTransformer = async ( 100 - data: any, 101 - ): Promise<GetOrderByIdResponse> => { 102 - data = orderSchemaResponseTransformer(data); 103 - return data; 104 - }; 105 - 106 - const userSchemaResponseTransformer = (data: any) => { 107 - if (data.id) { 108 - data.id = BigInt(data.id.toString()); 109 - } 110 - return data; 111 - }; 112 - 113 - export const createUserResponseTransformer = async ( 114 - data: any, 115 - ): Promise<CreateUserResponse> => { 116 - data = userSchemaResponseTransformer(data); 117 - return data; 118 - }; 119 - 120 - export const getUserByNameResponseTransformer = async ( 121 - data: any, 122 - ): Promise<GetUserByNameResponse> => { 123 - data = userSchemaResponseTransformer(data); 124 - return data; 125 - };
-567
examples/openapi-ts-nuxt/client/types.gen.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - 3 - export type Order = { 4 - complete?: boolean; 5 - id?: bigint; 6 - petId?: bigint; 7 - quantity?: number; 8 - shipDate?: Date; 9 - /** 10 - * Order Status 11 - */ 12 - status?: 'placed' | 'approved' | 'delivered'; 13 - }; 14 - 15 - export type Customer = { 16 - address?: Array<Address>; 17 - id?: bigint; 18 - username?: string; 19 - }; 20 - 21 - export type Address = { 22 - city?: string; 23 - state?: string; 24 - street?: string; 25 - zip?: string; 26 - }; 27 - 28 - export type Category = { 29 - id?: bigint; 30 - name?: string; 31 - }; 32 - 33 - export type User = { 34 - email?: string; 35 - firstName?: string; 36 - id?: bigint; 37 - lastName?: string; 38 - password?: string; 39 - phone?: string; 40 - /** 41 - * User Status 42 - */ 43 - userStatus?: number; 44 - username?: string; 45 - }; 46 - 47 - export type Tag = { 48 - id?: bigint; 49 - name?: string; 50 - }; 51 - 52 - export type Pet = { 53 - category?: Category; 54 - id?: bigint; 55 - name: string; 56 - photoUrls: Array<string>; 57 - /** 58 - * pet status in the store 59 - */ 60 - status?: 'available' | 'pending' | 'sold'; 61 - tags?: Array<Tag>; 62 - }; 63 - 64 - export type ApiResponse = { 65 - code?: number; 66 - message?: string; 67 - type?: string; 68 - }; 69 - 70 - export type Pet2 = Pet; 71 - 72 - /** 73 - * List of user object 74 - */ 75 - export type UserArray = Array<User>; 76 - 77 - export type AddPetData = { 78 - /** 79 - * Create a new pet in the store 80 - */ 81 - body: Pet; 82 - path?: never; 83 - query?: never; 84 - url: '/pet'; 85 - }; 86 - 87 - export type AddPetErrors = { 88 - /** 89 - * Invalid input 90 - */ 91 - 405: unknown; 92 - }; 93 - 94 - export type AddPetResponses = { 95 - /** 96 - * Successful operation 97 - */ 98 - 200: Pet; 99 - }; 100 - 101 - export type AddPetResponse = AddPetResponses[keyof AddPetResponses]; 102 - 103 - export type UpdatePetData = { 104 - /** 105 - * Update an existent pet in the store 106 - */ 107 - body: Pet; 108 - path?: never; 109 - query?: never; 110 - url: '/pet'; 111 - }; 112 - 113 - export type UpdatePetErrors = { 114 - /** 115 - * Invalid ID supplied 116 - */ 117 - 400: unknown; 118 - /** 119 - * Pet not found 120 - */ 121 - 404: unknown; 122 - /** 123 - * Validation exception 124 - */ 125 - 405: unknown; 126 - }; 127 - 128 - export type UpdatePetResponses = { 129 - /** 130 - * Successful operation 131 - */ 132 - 200: Pet; 133 - }; 134 - 135 - export type UpdatePetResponse = UpdatePetResponses[keyof UpdatePetResponses]; 136 - 137 - export type FindPetsByStatusData = { 138 - body?: never; 139 - path?: never; 140 - query?: { 141 - /** 142 - * Status values that need to be considered for filter 143 - */ 144 - status?: 'available' | 'pending' | 'sold'; 145 - }; 146 - url: '/pet/findByStatus'; 147 - }; 148 - 149 - export type FindPetsByStatusErrors = { 150 - /** 151 - * Invalid status value 152 - */ 153 - 400: unknown; 154 - }; 155 - 156 - export type FindPetsByStatusResponses = { 157 - /** 158 - * successful operation 159 - */ 160 - 200: Array<Pet>; 161 - }; 162 - 163 - export type FindPetsByStatusResponse = 164 - FindPetsByStatusResponses[keyof FindPetsByStatusResponses]; 165 - 166 - export type FindPetsByTagsData = { 167 - body?: never; 168 - path?: never; 169 - query?: { 170 - /** 171 - * Tags to filter by 172 - */ 173 - tags?: Array<string>; 174 - }; 175 - url: '/pet/findByTags'; 176 - }; 177 - 178 - export type FindPetsByTagsErrors = { 179 - /** 180 - * Invalid tag value 181 - */ 182 - 400: unknown; 183 - }; 184 - 185 - export type FindPetsByTagsResponses = { 186 - /** 187 - * successful operation 188 - */ 189 - 200: Array<Pet>; 190 - }; 191 - 192 - export type FindPetsByTagsResponse = 193 - FindPetsByTagsResponses[keyof FindPetsByTagsResponses]; 194 - 195 - export type DeletePetData = { 196 - body?: never; 197 - headers?: { 198 - api_key?: string; 199 - }; 200 - path: { 201 - /** 202 - * Pet id to delete 203 - */ 204 - petId: bigint; 205 - }; 206 - query?: never; 207 - url: '/pet/{petId}'; 208 - }; 209 - 210 - export type DeletePetErrors = { 211 - /** 212 - * Invalid pet value 213 - */ 214 - 400: unknown; 215 - }; 216 - 217 - export type GetPetByIdData = { 218 - body?: never; 219 - path: { 220 - /** 221 - * ID of pet to return 222 - */ 223 - petId: bigint; 224 - }; 225 - query?: never; 226 - url: '/pet/{petId}'; 227 - }; 228 - 229 - export type GetPetByIdErrors = { 230 - /** 231 - * Invalid ID supplied 232 - */ 233 - 400: unknown; 234 - /** 235 - * Pet not found 236 - */ 237 - 404: unknown; 238 - }; 239 - 240 - export type GetPetByIdResponses = { 241 - /** 242 - * successful operation 243 - */ 244 - 200: Pet; 245 - }; 246 - 247 - export type GetPetByIdResponse = GetPetByIdResponses[keyof GetPetByIdResponses]; 248 - 249 - export type UpdatePetWithFormData = { 250 - body?: never; 251 - path: { 252 - /** 253 - * ID of pet that needs to be updated 254 - */ 255 - petId: bigint; 256 - }; 257 - query?: { 258 - /** 259 - * Name of pet that needs to be updated 260 - */ 261 - name?: string; 262 - /** 263 - * Status of pet that needs to be updated 264 - */ 265 - status?: string; 266 - }; 267 - url: '/pet/{petId}'; 268 - }; 269 - 270 - export type UpdatePetWithFormErrors = { 271 - /** 272 - * Invalid input 273 - */ 274 - 405: unknown; 275 - }; 276 - 277 - export type UploadFileData = { 278 - body?: Blob | File; 279 - path: { 280 - /** 281 - * ID of pet to update 282 - */ 283 - petId: bigint; 284 - }; 285 - query?: { 286 - /** 287 - * Additional Metadata 288 - */ 289 - additionalMetadata?: string; 290 - }; 291 - url: '/pet/{petId}/uploadImage'; 292 - }; 293 - 294 - export type UploadFileResponses = { 295 - /** 296 - * successful operation 297 - */ 298 - 200: ApiResponse; 299 - }; 300 - 301 - export type UploadFileResponse = UploadFileResponses[keyof UploadFileResponses]; 302 - 303 - export type GetInventoryData = { 304 - body?: never; 305 - path?: never; 306 - query?: never; 307 - url: '/store/inventory'; 308 - }; 309 - 310 - export type GetInventoryResponses = { 311 - /** 312 - * successful operation 313 - */ 314 - 200: { 315 - [key: string]: number; 316 - }; 317 - }; 318 - 319 - export type GetInventoryResponse = 320 - GetInventoryResponses[keyof GetInventoryResponses]; 321 - 322 - export type PlaceOrderData = { 323 - body?: Order; 324 - path?: never; 325 - query?: never; 326 - url: '/store/order'; 327 - }; 328 - 329 - export type PlaceOrderErrors = { 330 - /** 331 - * Invalid input 332 - */ 333 - 405: unknown; 334 - }; 335 - 336 - export type PlaceOrderResponses = { 337 - /** 338 - * successful operation 339 - */ 340 - 200: Order; 341 - }; 342 - 343 - export type PlaceOrderResponse = PlaceOrderResponses[keyof PlaceOrderResponses]; 344 - 345 - export type DeleteOrderData = { 346 - body?: never; 347 - path: { 348 - /** 349 - * ID of the order that needs to be deleted 350 - */ 351 - orderId: bigint; 352 - }; 353 - query?: never; 354 - url: '/store/order/{orderId}'; 355 - }; 356 - 357 - export type DeleteOrderErrors = { 358 - /** 359 - * Invalid ID supplied 360 - */ 361 - 400: unknown; 362 - /** 363 - * Order not found 364 - */ 365 - 404: unknown; 366 - }; 367 - 368 - export type GetOrderByIdData = { 369 - body?: never; 370 - path: { 371 - /** 372 - * ID of order that needs to be fetched 373 - */ 374 - orderId: bigint; 375 - }; 376 - query?: never; 377 - url: '/store/order/{orderId}'; 378 - }; 379 - 380 - export type GetOrderByIdErrors = { 381 - /** 382 - * Invalid ID supplied 383 - */ 384 - 400: unknown; 385 - /** 386 - * Order not found 387 - */ 388 - 404: unknown; 389 - }; 390 - 391 - export type GetOrderByIdResponses = { 392 - /** 393 - * successful operation 394 - */ 395 - 200: Order; 396 - }; 397 - 398 - export type GetOrderByIdResponse = 399 - GetOrderByIdResponses[keyof GetOrderByIdResponses]; 400 - 401 - export type CreateUserData = { 402 - /** 403 - * Created user object 404 - */ 405 - body?: User; 406 - path?: never; 407 - query?: never; 408 - url: '/user'; 409 - }; 410 - 411 - export type CreateUserResponses = { 412 - /** 413 - * successful operation 414 - */ 415 - default: User; 416 - }; 417 - 418 - export type CreateUserResponse = CreateUserResponses[keyof CreateUserResponses]; 419 - 420 - export type CreateUsersWithListInputData = { 421 - body?: Array<User>; 422 - path?: never; 423 - query?: never; 424 - url: '/user/createWithList'; 425 - }; 426 - 427 - export type CreateUsersWithListInputResponses = { 428 - /** 429 - * Successful operation 430 - */ 431 - 200: User; 432 - /** 433 - * successful operation 434 - */ 435 - default: unknown; 436 - }; 437 - 438 - export type CreateUsersWithListInputResponse = 439 - CreateUsersWithListInputResponses[keyof CreateUsersWithListInputResponses]; 440 - 441 - export type LoginUserData = { 442 - body?: never; 443 - path?: never; 444 - query?: { 445 - /** 446 - * The password for login in clear text 447 - */ 448 - password?: string; 449 - /** 450 - * The user name for login 451 - */ 452 - username?: string; 453 - }; 454 - url: '/user/login'; 455 - }; 456 - 457 - export type LoginUserErrors = { 458 - /** 459 - * Invalid username/password supplied 460 - */ 461 - 400: unknown; 462 - }; 463 - 464 - export type LoginUserResponses = { 465 - /** 466 - * successful operation 467 - */ 468 - 200: Blob | File; 469 - }; 470 - 471 - export type LoginUserResponse = LoginUserResponses[keyof LoginUserResponses]; 472 - 473 - export type LogoutUserData = { 474 - body?: never; 475 - path?: never; 476 - query?: never; 477 - url: '/user/logout'; 478 - }; 479 - 480 - export type LogoutUserResponses = { 481 - /** 482 - * successful operation 483 - */ 484 - default: unknown; 485 - }; 486 - 487 - export type DeleteUserData = { 488 - body?: never; 489 - path: { 490 - /** 491 - * The name that needs to be deleted 492 - */ 493 - username: string; 494 - }; 495 - query?: never; 496 - url: '/user/{username}'; 497 - }; 498 - 499 - export type DeleteUserErrors = { 500 - /** 501 - * Invalid username supplied 502 - */ 503 - 400: unknown; 504 - /** 505 - * User not found 506 - */ 507 - 404: unknown; 508 - }; 509 - 510 - export type GetUserByNameData = { 511 - body?: never; 512 - path: { 513 - /** 514 - * The name that needs to be fetched. Use user1 for testing. 515 - */ 516 - username: string; 517 - }; 518 - query?: never; 519 - url: '/user/{username}'; 520 - }; 521 - 522 - export type GetUserByNameErrors = { 523 - /** 524 - * Invalid username supplied 525 - */ 526 - 400: unknown; 527 - /** 528 - * User not found 529 - */ 530 - 404: unknown; 531 - }; 532 - 533 - export type GetUserByNameResponses = { 534 - /** 535 - * successful operation 536 - */ 537 - 200: User; 538 - }; 539 - 540 - export type GetUserByNameResponse = 541 - GetUserByNameResponses[keyof GetUserByNameResponses]; 542 - 543 - export type UpdateUserData = { 544 - /** 545 - * Update an existent user in the store 546 - */ 547 - body?: User; 548 - path: { 549 - /** 550 - * name that needs to be updated 551 - */ 552 - username: string; 553 - }; 554 - query?: never; 555 - url: '/user/{username}'; 556 - }; 557 - 558 - export type UpdateUserResponses = { 559 - /** 560 - * successful operation 561 - */ 562 - default: unknown; 563 - }; 564 - 565 - export type ClientOptions = { 566 - baseURL: `${string}://${string}/v3` | (string & {}); 567 - };
-96
examples/openapi-ts-nuxt/client/zod.gen.ts
··· 1 - // This file is auto-generated by @hey-api/openapi-ts 2 - 3 - import { z } from 'zod'; 4 - 5 - export const zOrder = z.object({ 6 - complete: z.boolean().optional(), 7 - id: z.coerce.bigint().optional(), 8 - petId: z.coerce.bigint().optional(), 9 - quantity: z.number().int().optional(), 10 - shipDate: z.string().datetime().optional(), 11 - status: z.enum(['placed', 'approved', 'delivered']).optional(), 12 - }); 13 - 14 - export const zCustomer = z.object({ 15 - address: z 16 - .array( 17 - z.object({ 18 - city: z.string().optional(), 19 - state: z.string().optional(), 20 - street: z.string().optional(), 21 - zip: z.string().optional(), 22 - }), 23 - ) 24 - .optional(), 25 - id: z.coerce.bigint().optional(), 26 - username: z.string().optional(), 27 - }); 28 - 29 - export const zAddress = z.object({ 30 - city: z.string().optional(), 31 - state: z.string().optional(), 32 - street: z.string().optional(), 33 - zip: z.string().optional(), 34 - }); 35 - 36 - export const zCategory = z.object({ 37 - id: z.coerce.bigint().optional(), 38 - name: z.string().optional(), 39 - }); 40 - 41 - export const zUser = z.object({ 42 - email: z.string().optional(), 43 - firstName: z.string().optional(), 44 - id: z.coerce.bigint().optional(), 45 - lastName: z.string().optional(), 46 - password: z.string().optional(), 47 - phone: z.string().optional(), 48 - userStatus: z.number().int().optional(), 49 - username: z.string().optional(), 50 - }); 51 - 52 - export const zTag = z.object({ 53 - id: z.coerce.bigint().optional(), 54 - name: z.string().optional(), 55 - }); 56 - 57 - export const zPet = z.object({ 58 - category: zCategory.optional(), 59 - id: z.coerce.bigint().optional(), 60 - name: z.string(), 61 - photoUrls: z.array(z.string()), 62 - status: z.enum(['available', 'pending', 'sold']).optional(), 63 - tags: z.array(zTag).optional(), 64 - }); 65 - 66 - export const zApiResponse = z.object({ 67 - code: z.number().int().optional(), 68 - message: z.string().optional(), 69 - type: z.string().optional(), 70 - }); 71 - 72 - export const zAddPetResponse = zPet; 73 - 74 - export const zUpdatePetResponse = zPet; 75 - 76 - export const zFindPetsByStatusResponse = z.array(zPet); 77 - 78 - export const zFindPetsByTagsResponse = z.array(zPet); 79 - 80 - export const zGetPetByIdResponse = zPet; 81 - 82 - export const zUploadFileResponse = zApiResponse; 83 - 84 - export const zGetInventoryResponse = z.object({}); 85 - 86 - export const zPlaceOrderResponse = zOrder; 87 - 88 - export const zGetOrderByIdResponse = zOrder; 89 - 90 - export const zCreateUserResponse = zUser; 91 - 92 - export const zCreateUsersWithListInputResponse = z.union([zUser, z.unknown()]); 93 - 94 - export const zLoginUserResponse = z.string(); 95 - 96 - export const zGetUserByNameResponse = zUser;
+5 -7
examples/openapi-ts-nuxt/components/home.vue
··· 1 1 <script setup lang="ts"> 2 - import { 3 - addPet, 4 - findPetsByStatus, 5 - getPetById, 6 - type FindPetsByStatusData, 7 - } from '~/client'; 8 - 9 2 const name = ref('foo'); 10 3 const petId = ref(BigInt(8)); 11 4 const status = ··· 36 29 * This will NOT forward anything. 37 30 * Result: { cookies: {} } 38 31 */ 32 + // const { data } = await useAsyncData(() => getPetById()) 33 + async function submitHandler() {} 39 34 const asyncData = await getPetById({ 35 + // fetchAdapter: (url, options) => fetch(url, options), 36 + // fetchAdapter: (url, options) => $fetch(url, options), 37 + // fetchAdapter: (url, options) => axiosInstance[(options.method || 'get').toLowerCase()](url, options), 40 38 asyncDataOptions: { 41 39 default: () => ({ 42 40 name: 'Default Pet',
+19 -5
examples/openapi-ts-nuxt/nuxt.config.ts
··· 7 7 future: { 8 8 compatibilityVersion: 4, 9 9 }, 10 - imports: { 11 - transform: { 12 - // Build was throwing an error. 13 - // see https://github.com/nuxt/nuxt/issues/18823#issuecomment-1419704343 14 - exclude: [/\bclient-nuxt\b/], 10 + heyapi: { 11 + config: { 12 + input: 13 + 'https://raw.githubusercontent.com/swagger-api/swagger-petstore/master/src/main/resources/openapi.yaml', 14 + plugins: [ 15 + '@hey-api/schemas', 16 + { 17 + name: '@hey-api/sdk', 18 + transformer: true, 19 + validator: true, 20 + }, 21 + { 22 + enums: 'javascript', 23 + name: '@hey-api/typescript', 24 + }, 25 + '@hey-api/transformers', 26 + 'zod', 27 + ], 15 28 }, 16 29 }, 30 + modules: ['@hey-api/client-nuxt'], 17 31 });
-26
examples/openapi-ts-nuxt/openapi-ts.config.ts
··· 1 - import { defineConfig } from '@hey-api/openapi-ts'; 2 - 3 - export default defineConfig({ 4 - input: 5 - 'https://raw.githubusercontent.com/swagger-api/swagger-petstore/master/src/main/resources/openapi.yaml', 6 - output: { 7 - format: 'prettier', 8 - lint: 'eslint', 9 - path: './client', 10 - }, 11 - plugins: [ 12 - '@hey-api/client-nuxt', 13 - '@hey-api/schemas', 14 - { 15 - name: '@hey-api/sdk', 16 - transformer: true, 17 - validator: true, 18 - }, 19 - { 20 - enums: 'javascript', 21 - name: '@hey-api/typescript', 22 - }, 23 - '@hey-api/transformers', 24 - 'zod', 25 - ], 26 - });
-1
examples/openapi-ts-nuxt/package.json
··· 7 7 "build": "nuxt build", 8 8 "dev": "nuxt dev", 9 9 "generate": "nuxt generate", 10 - "openapi-ts": "openapi-ts", 11 10 "postinstall": "nuxt prepare", 12 11 "preview": "nuxt preview", 13 12 "typecheck": "tsc --noEmit"
+26 -14
packages/client-nuxt/package.json
··· 31 31 "vue" 32 32 ], 33 33 "type": "module", 34 - "main": "./dist/index.cjs", 35 - "module": "./dist/index.js", 36 - "types": "./dist/index.d.ts", 34 + "main": "./dist/index.js", 37 35 "exports": { 38 - ".": { 39 - "import": { 40 - "types": "./dist/index.d.ts", 41 - "default": "./dist/index.js" 42 - }, 43 - "require": { 44 - "types": "./dist/index.d.cts", 45 - "default": "./dist/index.cjs" 46 - } 47 - }, 36 + ".": "./dist/index.js", 37 + "./runtime": "./dist/index.js", 38 + "./module": "./dist/module.js", 48 39 "./package.json": "./package.json" 49 40 }, 41 + "typesVersions": { 42 + "*": { 43 + ".": [ 44 + "./dist/index.d.ts" 45 + ], 46 + "runtime": [ 47 + "./dist/index.d.ts" 48 + ], 49 + "module": [ 50 + "./dist/module.d.ts" 51 + ] 52 + } 53 + }, 50 54 "sideEffects": false, 51 55 "files": [ 52 56 "dist", ··· 55 59 ], 56 60 "scripts": { 57 61 "build": "tsup && rollup -c && pnpm check-exports", 58 - "check-exports": "attw --pack .", 62 + "check-exports": "attw --ignore-rules cjs-resolves-to-esm --pack .", 59 63 "dev": "tsup --watch", 60 64 "prepublishOnly": "pnpm build", 61 65 "test:coverage": "vitest run --coverage", ··· 70 74 }, 71 75 "devDependencies": { 72 76 "@hey-api/client-core": "workspace:*", 77 + "@nuxt/schema": "3.15.4", 73 78 "@nuxt/test-utils": "3.14.0", 74 79 "vite": "6.0.9" 80 + }, 81 + "dependencies": { 82 + "@hey-api/openapi-ts": "workspace:*", 83 + "@nuxt/kit": "3.15.4", 84 + "defu": "6.1.4", 85 + "jiti": "2.4.2", 86 + "mlly": "1.7.4" 75 87 } 76 88 }
+1 -1
packages/client-nuxt/rollup.config.mjs
··· 3 3 import { defineConfig } from 'rollup'; 4 4 import dts from 'rollup-plugin-dts'; 5 5 6 - const files = ['index.d.ts', 'index.d.cts']; 6 + const files = ['index.d.ts', 'module.d.ts']; 7 7 8 8 export default files.map((file) => 9 9 defineConfig({
+96
packages/client-nuxt/src/module.ts
··· 1 + import { readFileSync } from 'node:fs'; 2 + import { join, resolve } from 'node:path'; 3 + 4 + import type { UserConfig } from '@hey-api/openapi-ts'; 5 + import { createClient } from '@hey-api/openapi-ts'; 6 + import { addImportsSources, defineNuxtModule, useNuxt } from '@nuxt/kit'; 7 + import type {} from '@nuxt/schema'; 8 + import { defu } from 'defu'; 9 + import { createJiti } from 'jiti'; 10 + import { findExports, findTypeExports } from 'mlly'; 11 + import { findPath } from 'nuxt/kit'; 12 + 13 + interface ModuleOptions { 14 + autoImport?: boolean; 15 + config: Omit<UserConfig, 'output'> & Partial<Pick<UserConfig, 'output'>>; 16 + } 17 + 18 + export default defineNuxtModule<ModuleOptions>({ 19 + defaults: { 20 + autoImport: true, 21 + }, 22 + meta: { 23 + configKey: 'heyapi', 24 + name: '@hey-api/client-nuxt', 25 + }, 26 + async setup(options) { 27 + const nuxt = useNuxt(); 28 + 29 + nuxt.options.build.transpile.push('@hey-api/client-nuxt/runtime'); 30 + 31 + const jiti = createJiti(nuxt.options.rootDir); 32 + const _config = await jiti.import<UserConfig>('./openapi-ts.config.ts', { 33 + default: true, 34 + try: true, 35 + }); 36 + const config = defu(options.config, _config, { 37 + logs: { 38 + level: 'silent', 39 + }, 40 + output: { 41 + path: join(nuxt.options.buildDir, 'openapi-client'), 42 + }, 43 + plugins: ['@hey-api/client-nuxt'], 44 + } satisfies Partial<UserConfig>); 45 + 46 + const folder = resolve( 47 + nuxt.options.rootDir, 48 + typeof config.output === 'string' ? config.output : config.output.path, 49 + ); 50 + 51 + nuxt.options.alias['#hey-api'] = folder; 52 + 53 + async function writeClient() { 54 + await createClient(config as UserConfig); 55 + } 56 + 57 + nuxt.hooks.hookOnce('app:templates', writeClient); 58 + 59 + if (options.autoImport) { 60 + await writeClient(); 61 + const typeImports = new Set<string>(); 62 + const imports = new Set<string>(); 63 + const files = findExports( 64 + readFileSync(join(folder, 'index.ts'), 'utf-8'), 65 + ); 66 + for (const file of files) { 67 + if (!file.specifier || !/^\.{1,2}\//.test(file.specifier)) { 68 + continue; 69 + } 70 + const path = await findPath(resolve(folder, file.specifier)); 71 + if (!path) { 72 + continue; 73 + } 74 + const blob = readFileSync(path, 'utf-8'); 75 + for (const { names } of findTypeExports(blob)) { 76 + for (const name of names) { 77 + typeImports.add(name); 78 + } 79 + } 80 + for (const { names } of findExports(blob)) { 81 + for (const name of names) { 82 + imports.add(name); 83 + } 84 + } 85 + } 86 + 87 + addImportsSources({ 88 + from: '#hey-api', 89 + imports: [ 90 + ...[...typeImports].map((name) => ({ name, type: true })), 91 + ...imports, 92 + ], 93 + }); 94 + } 95 + }, 96 + });
+2 -2
packages/client-nuxt/tsup.config.ts
··· 3 3 export default defineConfig((options) => ({ 4 4 clean: true, 5 5 dts: true, 6 - entry: ['src/index.ts'], 7 - format: ['cjs', 'esm'], 6 + entry: ['src/index.ts', 'src/module.ts'], 7 + format: ['esm'], 8 8 minify: !options.watch, 9 9 shims: false, 10 10 sourcemap: true,
-1
packages/openapi-ts/package.json
··· 102 102 "@hey-api/client-axios": "workspace:*", 103 103 "@hey-api/client-fetch": "workspace:*", 104 104 "@hey-api/client-next": "workspace:*", 105 - "@hey-api/client-nuxt": "workspace:*", 106 105 "@tanstack/angular-query-experimental": "5.62.13", 107 106 "@tanstack/react-query": "5.62.15", 108 107 "@tanstack/solid-query": "5.51.21",
+4
packages/openapi-ts/src/generate/client.ts
··· 27 27 }); 28 28 } 29 29 30 + if (client.name === '@hey-api/client-nuxt') { 31 + return '@hey-api/client-nuxt/runtime'; 32 + } 33 + 30 34 return client.name; 31 35 }; 32 36
+229 -86
pnpm-lock.yaml
··· 312 312 version: link:../../packages/client-nuxt 313 313 nuxt: 314 314 specifier: 3.14.1592 315 - version: 3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.6.1-rc)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 315 + version: 3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 316 316 vue: 317 317 specifier: 3.5.13 318 - version: 3.5.13(typescript@5.6.1-rc) 318 + version: 3.5.13(typescript@5.5.3) 319 319 vue-router: 320 320 specifier: 4.5.0 321 - version: 4.5.0(vue@3.5.13(typescript@5.6.1-rc)) 321 + version: 4.5.0(vue@3.5.13(typescript@5.5.3)) 322 322 zod: 323 323 specifier: 3.23.8 324 324 version: 3.23.8 ··· 741 741 742 742 packages/client-nuxt: 743 743 dependencies: 744 + '@hey-api/openapi-ts': 745 + specifier: workspace:* 746 + version: link:../openapi-ts 747 + '@nuxt/kit': 748 + specifier: 3.15.4 749 + version: 3.15.4(magicast@0.3.5)(rollup@4.31.0) 750 + defu: 751 + specifier: 6.1.4 752 + version: 6.1.4 753 + jiti: 754 + specifier: 2.4.2 755 + version: 2.4.2 756 + mlly: 757 + specifier: 1.7.4 758 + version: 1.7.4 744 759 nuxt: 745 760 specifier: '>= 3.0.0 < 4' 746 761 version: 3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.6.1-rc)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) ··· 751 766 '@hey-api/client-core': 752 767 specifier: workspace:* 753 768 version: link:../client-core 769 + '@nuxt/schema': 770 + specifier: 3.15.4 771 + version: 3.15.4 754 772 '@nuxt/test-utils': 755 773 specifier: 3.14.0 756 774 version: 3.14.0(@vue/test-utils@2.4.6)(h3@1.14.0)(jsdom@23.0.0)(magicast@0.3.5)(nitropack@2.10.4(encoding@0.1.13)(typescript@5.6.1-rc))(rollup@4.31.0)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vitest@1.6.0(@types/node@22.10.5)(jsdom@23.0.0)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.6.1-rc)))(vue@3.5.13(typescript@5.6.1-rc)) ··· 775 793 devDependencies: 776 794 '@angular-devkit/build-angular': 777 795 specifier: 19.0.6 778 - version: 19.0.6(@angular/compiler-cli@19.0.5(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3))(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(@types/node@22.10.5)(chokidar@4.0.3)(karma@6.4.4)(tailwindcss@3.4.9(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.5.3)))(typescript@5.5.3)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 796 + version: 19.0.6(@angular/compiler-cli@19.0.5(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3))(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(@types/node@22.10.5)(chokidar@4.0.3)(karma@6.4.4)(tailwindcss@3.4.9(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.5.3)))(typescript@5.5.3)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 779 797 '@angular/animations': 780 798 specifier: 19.0.5 781 799 version: 19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)) ··· 862 880 version: 3.3.2 863 881 nuxt: 864 882 specifier: 3.14.1592 865 - version: 3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 883 + version: 3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 866 884 prettier: 867 885 specifier: 3.4.2 868 886 version: 3.4.2 ··· 10574 10592 terser: 10575 10593 optional: true 10576 10594 10577 - vite@6.0.11: 10578 - resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} 10579 - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 10580 - hasBin: true 10581 - peerDependencies: 10582 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 10583 - jiti: '>=1.21.0' 10584 - less: '*' 10585 - lightningcss: ^1.21.0 10586 - sass: '*' 10587 - sass-embedded: '*' 10588 - stylus: '*' 10589 - sugarss: '*' 10590 - terser: ^5.16.0 10591 - tsx: ^4.8.1 10592 - yaml: ^2.4.2 10593 - peerDependenciesMeta: 10594 - '@types/node': 10595 - optional: true 10596 - jiti: 10597 - optional: true 10598 - less: 10599 - optional: true 10600 - lightningcss: 10601 - optional: true 10602 - sass: 10603 - optional: true 10604 - sass-embedded: 10605 - optional: true 10606 - stylus: 10607 - optional: true 10608 - sugarss: 10609 - optional: true 10610 - terser: 10611 - optional: true 10612 - tsx: 10613 - optional: true 10614 - yaml: 10615 - optional: true 10616 - 10617 10595 vite@6.0.9: 10618 10596 resolution: {integrity: sha512-MSgUxHcaXLtnBPktkbUSoQUANApKYuxZ6DrbVENlIorbhL2dZydTLaZ01tjUoE3szeFzlFk9ANOKk0xurh4MKA==} 10619 10597 engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} ··· 11287 11265 - vite 11288 11266 - webpack-cli 11289 11267 11290 - '@angular-devkit/build-angular@19.0.6(@angular/compiler-cli@19.0.5(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3))(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(@types/node@22.10.5)(chokidar@4.0.3)(karma@6.4.4)(tailwindcss@3.4.9(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.5.3)))(typescript@5.5.3)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))': 11268 + '@angular-devkit/build-angular@19.0.6(@angular/compiler-cli@19.0.5(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3))(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(@types/node@22.10.5)(chokidar@4.0.3)(karma@6.4.4)(tailwindcss@3.4.9(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.5.3)))(typescript@5.5.3)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))': 11291 11269 dependencies: 11292 11270 '@ampproject/remapping': 2.3.0 11293 11271 '@angular-devkit/architect': 0.1900.6(chokidar@4.0.3) ··· 11306 11284 '@babel/runtime': 7.26.0 11307 11285 '@discoveryjs/json-ext': 0.6.3 11308 11286 '@ngtools/webpack': 19.0.6(@angular/compiler-cli@19.0.5(@angular/compiler@19.0.5(@angular/core@19.0.5(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3))(typescript@5.5.3)(webpack@5.96.1(esbuild@0.24.0)) 11309 - '@vitejs/plugin-basic-ssl': 1.1.0(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 11287 + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 11310 11288 ansi-colors: 4.1.3 11311 11289 autoprefixer: 10.4.20(postcss@8.4.49) 11312 11290 babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1(esbuild@0.24.0)) ··· 13409 13387 13410 13388 '@nuxt/devalue@2.0.2': {} 13411 13389 13412 - '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))': 13390 + '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))': 13413 13391 dependencies: 13414 13392 '@nuxt/kit': 3.15.4(magicast@0.3.5)(rollup@4.31.0) 13415 13393 '@nuxt/schema': 3.15.4 13416 13394 execa: 7.2.0 13417 - vite: 6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 13395 + vite: 5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0) 13418 13396 transitivePeerDependencies: 13419 13397 - magicast 13420 13398 - rollup ··· 13444 13422 rc9: 2.1.2 13445 13423 semver: 7.7.0 13446 13424 13447 - '@nuxt/devtools@1.7.0(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3))': 13425 + '@nuxt/devtools@1.7.0(rollup@4.31.0)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))(vue@3.5.13(typescript@5.5.3))': 13448 13426 dependencies: 13449 13427 '@antfu/utils': 0.7.10 13450 - '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 13428 + '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 13451 13429 '@nuxt/devtools-wizard': 1.7.0 13452 13430 '@nuxt/kit': 3.15.4(magicast@0.3.5)(rollup@4.31.0) 13453 - '@vue/devtools-core': 7.6.8(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3)) 13431 + '@vue/devtools-core': 7.6.8(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))(vue@3.5.13(typescript@5.5.3)) 13454 13432 '@vue/devtools-kit': 7.6.8 13455 13433 birpc: 0.2.19 13456 13434 consola: 3.4.0 ··· 13479 13457 sirv: 3.0.0 13480 13458 tinyglobby: 0.2.10 13481 13459 unimport: 3.14.6(rollup@4.31.0) 13482 - vite: 6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 13483 - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 13484 - vite-plugin-vue-inspector: 5.3.1(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 13460 + vite: 5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0) 13461 + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 13462 + vite-plugin-vue-inspector: 5.3.1(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 13463 + which: 3.0.1 13464 + ws: 8.18.0 13465 + transitivePeerDependencies: 13466 + - bufferutil 13467 + - rollup 13468 + - supports-color 13469 + - utf-8-validate 13470 + - vue 13471 + 13472 + '@nuxt/devtools@1.7.0(rollup@4.31.0)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3))': 13473 + dependencies: 13474 + '@antfu/utils': 0.7.10 13475 + '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 13476 + '@nuxt/devtools-wizard': 1.7.0 13477 + '@nuxt/kit': 3.15.4(magicast@0.3.5)(rollup@4.31.0) 13478 + '@vue/devtools-core': 7.6.8(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3)) 13479 + '@vue/devtools-kit': 7.6.8 13480 + birpc: 0.2.19 13481 + consola: 3.4.0 13482 + cronstrue: 2.53.0 13483 + destr: 2.0.3 13484 + error-stack-parser-es: 0.1.5 13485 + execa: 7.2.0 13486 + fast-npm-meta: 0.2.2 13487 + flatted: 3.3.2 13488 + get-port-please: 3.1.2 13489 + hookable: 5.5.3 13490 + image-meta: 0.2.1 13491 + is-installed-globally: 1.0.0 13492 + launch-editor: 2.9.1 13493 + local-pkg: 0.5.1 13494 + magicast: 0.3.5 13495 + nypm: 0.4.1 13496 + ohash: 1.1.4 13497 + pathe: 1.1.2 13498 + perfect-debounce: 1.0.0 13499 + pkg-types: 1.3.1 13500 + rc9: 2.1.2 13501 + scule: 1.3.0 13502 + semver: 7.7.0 13503 + simple-git: 3.27.0 13504 + sirv: 3.0.0 13505 + tinyglobby: 0.2.10 13506 + unimport: 3.14.6(rollup@4.31.0) 13507 + vite: 6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 13508 + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 13509 + vite-plugin-vue-inspector: 5.3.1(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 13485 13510 which: 3.0.1 13486 13511 ws: 8.18.0 13487 13512 transitivePeerDependencies: ··· 15460 15485 dependencies: 15461 15486 vite: 5.4.11(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.36.0) 15462 15487 15463 - '@vitejs/plugin-basic-ssl@1.1.0(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))': 15488 + '@vitejs/plugin-basic-ssl@1.1.0(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))': 15464 15489 dependencies: 15465 - vite: 6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 15490 + vite: 5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0) 15466 15491 15467 15492 '@vitejs/plugin-react@4.3.1(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))': 15468 15493 dependencies: ··· 15673 15698 dependencies: 15674 15699 '@vue/devtools-kit': 7.7.1 15675 15700 15676 - '@vue/devtools-core@7.6.8(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3))': 15701 + '@vue/devtools-core@7.6.8(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))(vue@3.5.13(typescript@5.5.3))': 15677 15702 dependencies: 15678 15703 '@vue/devtools-kit': 7.7.1 15679 15704 '@vue/devtools-shared': 7.7.1 15680 15705 mitt: 3.0.1 15681 15706 nanoid: 5.0.9 15682 15707 pathe: 1.1.2 15683 - vite-hot-client: 0.2.4(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 15708 + vite-hot-client: 0.2.4(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)) 15709 + vue: 3.5.13(typescript@5.5.3) 15710 + transitivePeerDependencies: 15711 + - vite 15712 + 15713 + '@vue/devtools-core@7.6.8(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3))': 15714 + dependencies: 15715 + '@vue/devtools-kit': 7.7.1 15716 + '@vue/devtools-shared': 7.7.1 15717 + mitt: 3.0.1 15718 + nanoid: 5.0.9 15719 + pathe: 1.1.2 15720 + vite-hot-client: 0.2.4(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)) 15684 15721 vue: 3.5.13(typescript@5.5.3) 15685 15722 transitivePeerDependencies: 15686 15723 - vite ··· 16838 16875 postcss-modules-scope: 3.2.1(postcss@8.4.41) 16839 16876 postcss-modules-values: 4.0.0(postcss@8.4.41) 16840 16877 postcss-value-parser: 4.2.0 16841 - semver: 7.6.3 16878 + semver: 7.7.0 16842 16879 optionalDependencies: 16843 16880 webpack: 5.96.1(esbuild@0.24.2) 16844 16881 ··· 18790 18827 '@babel/parser': 7.26.7 18791 18828 '@istanbuljs/schema': 0.1.3 18792 18829 istanbul-lib-coverage: 3.2.2 18793 - semver: 7.6.3 18830 + semver: 7.7.0 18794 18831 transitivePeerDependencies: 18795 18832 - supports-color 18796 18833 ··· 19862 19899 dependencies: 19863 19900 hosted-git-info: 8.0.2 19864 19901 proc-log: 5.0.0 19865 - semver: 7.6.3 19902 + semver: 7.7.0 19866 19903 validate-npm-package-name: 6.0.0 19867 19904 19868 19905 npm-packlist@9.0.0: ··· 19874 19911 npm-install-checks: 7.1.1 19875 19912 npm-normalize-package-bin: 4.0.0 19876 19913 npm-package-arg: 12.0.0 19877 - semver: 7.6.3 19914 + semver: 7.7.0 19878 19915 19879 19916 npm-registry-fetch@18.0.2: 19880 19917 dependencies: ··· 19918 19955 19919 19956 nuxi@3.21.1: {} 19920 19957 19921 - nuxt@3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)): 19958 + nuxt@3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)): 19959 + dependencies: 19960 + '@nuxt/devalue': 2.0.2 19961 + '@nuxt/devtools': 1.7.0(rollup@4.31.0)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0))(vue@3.5.13(typescript@5.5.3)) 19962 + '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.31.0) 19963 + '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.31.0) 19964 + '@nuxt/telemetry': 2.6.4(magicast@0.3.5)(rollup@4.31.0) 19965 + '@nuxt/vite-builder': 3.14.1592(@types/node@22.10.5)(eslint@9.17.0(jiti@2.4.2))(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vue@3.5.13(typescript@5.5.3)) 19966 + '@unhead/dom': 1.11.18 19967 + '@unhead/shared': 1.11.18 19968 + '@unhead/ssr': 1.11.18 19969 + '@unhead/vue': 1.11.18(vue@3.5.13(typescript@5.5.3)) 19970 + '@vue/shared': 3.5.13 19971 + acorn: 8.14.0 19972 + c12: 2.0.1(magicast@0.3.5) 19973 + chokidar: 4.0.3 19974 + compatx: 0.1.8 19975 + consola: 3.4.0 19976 + cookie-es: 1.2.2 19977 + defu: 6.1.4 19978 + destr: 2.0.3 19979 + devalue: 5.1.1 19980 + errx: 0.1.0 19981 + esbuild: 0.24.2 19982 + escape-string-regexp: 5.0.0 19983 + estree-walker: 3.0.3 19984 + globby: 14.0.2 19985 + h3: 1.14.0 19986 + hookable: 5.5.3 19987 + ignore: 6.0.2 19988 + impound: 0.2.0(rollup@4.31.0) 19989 + jiti: 2.4.2 19990 + klona: 2.0.6 19991 + knitwork: 1.2.0 19992 + magic-string: 0.30.17 19993 + mlly: 1.7.4 19994 + nanotar: 0.1.1 19995 + nitropack: 2.10.4(encoding@0.1.13)(typescript@5.5.3) 19996 + nuxi: 3.21.1 19997 + nypm: 0.3.12 19998 + ofetch: 1.4.1 19999 + ohash: 1.1.4 20000 + pathe: 1.1.2 20001 + perfect-debounce: 1.0.0 20002 + pkg-types: 1.3.1 20003 + radix3: 1.1.2 20004 + scule: 1.3.0 20005 + semver: 7.7.0 20006 + std-env: 3.8.0 20007 + strip-literal: 2.1.1 20008 + tinyglobby: 0.2.10 20009 + ufo: 1.5.4 20010 + ultrahtml: 1.5.3 20011 + uncrypto: 0.1.3 20012 + unctx: 2.4.1 20013 + unenv: 1.10.0 20014 + unhead: 1.11.18 20015 + unimport: 3.14.6(rollup@4.31.0) 20016 + unplugin: 1.16.1 20017 + unplugin-vue-router: 0.10.9(rollup@4.31.0)(vue-router@4.5.0(vue@3.5.13(typescript@5.5.3)))(vue@3.5.13(typescript@5.5.3)) 20018 + unstorage: 1.14.4(db0@0.2.3)(ioredis@5.4.2) 20019 + untyped: 1.5.2 20020 + vue: 3.5.13(typescript@5.5.3) 20021 + vue-bundle-renderer: 2.1.1 20022 + vue-devtools-stub: 0.1.0 20023 + vue-router: 4.5.0(vue@3.5.13(typescript@5.5.3)) 20024 + optionalDependencies: 20025 + '@parcel/watcher': 2.5.1 20026 + '@types/node': 22.10.5 20027 + transitivePeerDependencies: 20028 + - '@azure/app-configuration' 20029 + - '@azure/cosmos' 20030 + - '@azure/data-tables' 20031 + - '@azure/identity' 20032 + - '@azure/keyvault-secrets' 20033 + - '@azure/storage-blob' 20034 + - '@biomejs/biome' 20035 + - '@capacitor/preferences' 20036 + - '@deno/kv' 20037 + - '@electric-sql/pglite' 20038 + - '@libsql/client' 20039 + - '@netlify/blobs' 20040 + - '@planetscale/database' 20041 + - '@upstash/redis' 20042 + - '@vercel/blob' 20043 + - '@vercel/kv' 20044 + - aws4fetch 20045 + - better-sqlite3 20046 + - bufferutil 20047 + - db0 20048 + - drizzle-orm 20049 + - encoding 20050 + - eslint 20051 + - idb-keyval 20052 + - ioredis 20053 + - less 20054 + - lightningcss 20055 + - magicast 20056 + - meow 20057 + - mysql2 20058 + - optionator 20059 + - rolldown 20060 + - rollup 20061 + - sass 20062 + - sass-embedded 20063 + - sqlite3 20064 + - stylelint 20065 + - stylus 20066 + - sugarss 20067 + - supports-color 20068 + - terser 20069 + - typescript 20070 + - uploadthing 20071 + - utf-8-validate 20072 + - vite 20073 + - vls 20074 + - vti 20075 + - vue-tsc 20076 + - xml2js 20077 + 20078 + nuxt@3.14.1592(@parcel/watcher@2.5.1)(@types/node@22.10.5)(db0@0.2.3)(encoding@0.1.13)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.2)(less@4.2.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(sass@1.80.7)(terser@5.37.0)(typescript@5.5.3)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)): 19922 20079 dependencies: 19923 20080 '@nuxt/devalue': 2.0.2 19924 - '@nuxt/devtools': 1.7.0(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3)) 20081 + '@nuxt/devtools': 1.7.0(rollup@4.31.0)(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.5.3)) 19925 20082 '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.31.0) 19926 20083 '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.31.0) 19927 20084 '@nuxt/telemetry': 2.6.4(magicast@0.3.5)(rollup@4.31.0) ··· 20670 20827 cosmiconfig: 9.0.0(typescript@5.5.3) 20671 20828 jiti: 1.21.7 20672 20829 postcss: 8.4.49 20673 - semver: 7.6.3 20830 + semver: 7.7.0 20674 20831 optionalDependencies: 20675 20832 webpack: 5.96.1(esbuild@0.24.2) 20676 20833 transitivePeerDependencies: ··· 22686 22843 '@types/unist': 3.0.3 22687 22844 vfile-message: 4.0.2 22688 22845 22689 - vite-hot-client@0.2.4(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)): 22846 + vite-hot-client@0.2.4(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)): 22690 22847 dependencies: 22691 - vite: 6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 22848 + vite: 5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0) 22692 22849 22693 22850 vite-hot-client@0.2.4(vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)): 22694 22851 dependencies: ··· 22774 22931 optionator: 0.9.4 22775 22932 typescript: 5.6.1-rc 22776 22933 22777 - vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)): 22934 + vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.4(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)): 22778 22935 dependencies: 22779 22936 '@antfu/utils': 0.7.10 22780 22937 '@rollup/pluginutils': 5.1.4(rollup@4.31.0) ··· 22785 22942 perfect-debounce: 1.0.0 22786 22943 picocolors: 1.1.1 22787 22944 sirv: 3.0.0 22788 - vite: 6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 22945 + vite: 5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0) 22789 22946 optionalDependencies: 22790 22947 '@nuxt/kit': 3.15.4(magicast@0.3.5)(rollup@4.31.0) 22791 22948 transitivePeerDependencies: ··· 22826 22983 - supports-color 22827 22984 - vue 22828 22985 22829 - vite-plugin-vue-inspector@5.3.1(vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0)): 22986 + vite-plugin-vue-inspector@5.3.1(vite@5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)): 22830 22987 dependencies: 22831 22988 '@babel/core': 7.26.7 22832 22989 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.7) ··· 22837 22994 '@vue/compiler-dom': 3.5.13 22838 22995 kolorist: 1.8.0 22839 22996 magic-string: 0.30.17 22840 - vite: 6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0) 22997 + vite: 5.4.14(@types/node@22.10.5)(less@4.2.0)(sass@1.80.7)(terser@5.37.0) 22841 22998 transitivePeerDependencies: 22842 22999 - supports-color 22843 23000 ··· 22879 23036 less: 4.2.0 22880 23037 sass: 1.80.7 22881 23038 terser: 5.37.0 22882 - 22883 - vite@6.0.11(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0): 22884 - dependencies: 22885 - esbuild: 0.24.2 22886 - postcss: 8.5.1 22887 - rollup: 4.31.0 22888 - optionalDependencies: 22889 - '@types/node': 22.10.5 22890 - fsevents: 2.3.3 22891 - jiti: 2.4.2 22892 - less: 4.2.0 22893 - sass: 1.80.7 22894 - terser: 5.37.0 22895 - yaml: 2.7.0 22896 23039 22897 23040 vite@6.0.9(@types/node@22.10.5)(jiti@2.4.2)(less@4.2.0)(sass@1.80.7)(terser@5.37.0)(yaml@2.7.0): 22898 23041 dependencies: