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

Merge pull request #1899 from hey-api/fix/client-fetch-to-next

fix: set next field to never and recommend next.js client

authored by

Lubos and committed by
GitHub
646f3fd7 53c88a6a

+280 -107
+5
.changeset/gentle-bobcats-sniff.md
··· 1 + --- 2 + '@hey-api/client-fetch': minor 3 + --- 4 + 5 + fix: set next field to never and recommend switching to the Next.js client
+15 -15
docs/openapi-ts/clients/next-js.md
··· 68 68 69 69 When we installed the client above, it created a [`client.gen.ts`](/openapi-ts/output#client) file. You will most likely want to configure the exported `client` instance. There are two ways to do that. 70 70 71 - ### `setConfig()` 72 - 73 - This is the simpler approach. You can call the `setConfig()` method at the beginning of your application or anytime you need to update the client configuration. You can pass any Fetch API configuration option to `setConfig()`, and even your own Fetch implementation. 74 - 75 - ```js 76 - import { client } from 'client/client.gen'; 77 - 78 - client.setConfig({ 79 - baseUrl: 'https://example.com', 80 - }); 81 - ``` 82 - 83 - The disadvantage of this approach is that your code may call the `client` instance before it's configured for the first time. Depending on your use case, you might need to use the second approach. 84 - 85 71 ### Runtime API 86 72 87 73 Since `client.gen.ts` is a generated file, we can't directly modify it. Instead, we can tell our configuration to use a custom file implementing the Runtime API. We do that by specifying the `runtimeConfigPath` option. ··· 114 100 115 101 ::: 116 102 117 - With this approach, `client.gen.ts` will call `createClientConfig()` before initializing the `client` instance. If needed, you can still use `setConfig()` to update the client configuration later. 103 + With this approach, `client.gen.ts` will call `createClientConfig()` before initializing the `client` instance. This is the recommended approach because it guarantees the client will be initialized in both server and client environment. If needed, you can still use `setConfig()` to update the client configuration later. 104 + 105 + ### `setConfig()` 106 + 107 + This is the simpler approach. You can call the `setConfig()` method at the beginning of your application or anytime you need to update the client configuration. You can pass any Fetch API configuration option to `setConfig()`, and even your own Fetch implementation. 108 + 109 + ```js 110 + import { client } from 'client/client.gen'; 111 + 112 + client.setConfig({ 113 + baseUrl: 'https://example.com', 114 + }); 115 + ``` 116 + 117 + The disadvantage of this approach is that your code may call the `client` instance before it's configured for the first time. Depending on your use case, this might be an acceptable trade-off. However, our Next.js users usually want to use the first approach. 118 118 119 119 ### `createClient()` 120 120
+5 -1
examples/openapi-ts-next/src/client/client.gen.ts
··· 24 24 ) => Config<Required<DefaultClientOptions> & T>; 25 25 26 26 export const client = createClient( 27 - createClientConfig(createConfig<ClientOptions>()), 27 + createClientConfig( 28 + createConfig<ClientOptions>({ 29 + baseUrl: 'https://petstore3.swagger.io/api/v3', 30 + }), 31 + ), 28 32 );
+39 -28
examples/openapi-ts-next/src/client/sdk.gen.ts
··· 37 37 UpdatePetData, 38 38 UpdatePetResponse, 39 39 UpdatePetWithFormData, 40 + UpdatePetWithFormResponse, 40 41 UpdateUserData, 41 42 UploadFileData, 42 43 UploadFileResponse, ··· 60 61 }; 61 62 62 63 /** 63 - * Add a new pet to the store 64 - * Add a new pet to the store 64 + * Add a new pet to the store. 65 + * Add a new pet to the store. 65 66 */ 66 67 export const addPet = <ThrowOnError extends boolean = false>( 67 68 options: Options<AddPetData, ThrowOnError>, ··· 84 85 ); 85 86 86 87 /** 87 - * Update an existing pet 88 - * Update an existing pet by Id 88 + * Update an existing pet. 89 + * Update an existing pet by Id. 89 90 */ 90 91 export const updatePet = <ThrowOnError extends boolean = false>( 91 92 options: Options<UpdatePetData, ThrowOnError>, ··· 110 111 }); 111 112 112 113 /** 113 - * Finds Pets by status 114 - * Multiple status values can be provided with comma separated strings 114 + * Finds Pets by status. 115 + * Multiple status values can be provided with comma separated strings. 115 116 */ 116 117 export const findPetsByStatus = <ThrowOnError extends boolean = false>( 117 118 options?: Options<FindPetsByStatusData, ThrowOnError>, ··· 132 133 }); 133 134 134 135 /** 135 - * Finds Pets by tags 136 + * Finds Pets by tags. 136 137 * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. 137 138 */ 138 139 export const findPetsByTags = <ThrowOnError extends boolean = false>( ··· 154 155 }); 155 156 156 157 /** 157 - * Deletes a pet 158 + * Deletes a pet. 159 + * Delete a pet. 158 160 */ 159 161 export const deletePet = <ThrowOnError extends boolean = false>( 160 162 options: Options<DeletePetData, ThrowOnError>, ··· 171 173 }); 172 174 173 175 /** 174 - * Find pet by ID 175 - * Returns a single pet 176 + * Find pet by ID. 177 + * Returns a single pet. 176 178 */ 177 179 export const getPetById = <ThrowOnError extends boolean = false>( 178 180 options: Options<GetPetByIdData, ThrowOnError>, ··· 197 199 }); 198 200 199 201 /** 200 - * Updates a pet in the store with form data 202 + * Updates a pet in the store with form data. 203 + * Updates a pet resource based on the form data. 201 204 */ 202 205 export const updatePetWithForm = <ThrowOnError extends boolean = false>( 203 206 options: Options<UpdatePetWithFormData, ThrowOnError>, 204 207 ) => 205 - (options.client ?? _heyApiClient).post<unknown, unknown, ThrowOnError>({ 208 + (options.client ?? _heyApiClient).post< 209 + UpdatePetWithFormResponse, 210 + unknown, 211 + ThrowOnError 212 + >({ 206 213 security: [ 207 214 { 208 215 scheme: 'bearer', ··· 214 221 }); 215 222 216 223 /** 217 - * uploads an image 224 + * Uploads an image. 225 + * Upload image of the pet. 218 226 */ 219 227 export const uploadFile = <ThrowOnError extends boolean = false>( 220 228 options: Options<UploadFileData, ThrowOnError>, ··· 239 247 }); 240 248 241 249 /** 242 - * Returns pet inventories by status 243 - * Returns a map of status codes to quantities 250 + * Returns pet inventories by status. 251 + * Returns a map of status codes to quantities. 244 252 */ 245 253 export const getInventory = <ThrowOnError extends boolean = false>( 246 254 options?: Options<GetInventoryData, ThrowOnError>, ··· 261 269 }); 262 270 263 271 /** 264 - * Place an order for a pet 265 - * Place a new order in the store 272 + * Place an order for a pet. 273 + * Place a new order in the store. 266 274 */ 267 275 export const placeOrder = <ThrowOnError extends boolean = false>( 268 276 options?: Options<PlaceOrderData, ThrowOnError>, ··· 281 289 }); 282 290 283 291 /** 284 - * Delete purchase order by ID 285 - * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors 292 + * Delete purchase order by identifier. 293 + * For valid response try integer IDs with value < 1000. Anything above 1000 or non-integers will generate API errors. 286 294 */ 287 295 export const deleteOrder = <ThrowOnError extends boolean = false>( 288 296 options: Options<DeleteOrderData, ThrowOnError>, ··· 293 301 }); 294 302 295 303 /** 296 - * Find purchase order by ID 304 + * Find purchase order by ID. 297 305 * For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions. 298 306 */ 299 307 export const getOrderById = <ThrowOnError extends boolean = false>( ··· 309 317 }); 310 318 311 319 /** 312 - * Create user 320 + * Create user. 313 321 * This can only be done by the logged in user. 314 322 */ 315 323 export const createUser = <ThrowOnError extends boolean = false>( ··· 329 337 }); 330 338 331 339 /** 332 - * Creates list of users with given input array 333 - * Creates list of users with given input array 340 + * Creates list of users with given input array. 341 + * Creates list of users with given input array. 334 342 */ 335 343 export const createUsersWithListInput = <ThrowOnError extends boolean = false>( 336 344 options?: Options<CreateUsersWithListInputData, ThrowOnError>, ··· 349 357 }); 350 358 351 359 /** 352 - * Logs user into the system 360 + * Logs user into the system. 361 + * Log into the system. 353 362 */ 354 363 export const loginUser = <ThrowOnError extends boolean = false>( 355 364 options?: Options<LoginUserData, ThrowOnError>, ··· 364 373 }); 365 374 366 375 /** 367 - * Logs out current logged in user session 376 + * Logs out current logged in user session. 377 + * Log user out of the system. 368 378 */ 369 379 export const logoutUser = <ThrowOnError extends boolean = false>( 370 380 options?: Options<LogoutUserData, ThrowOnError>, ··· 375 385 }); 376 386 377 387 /** 378 - * Delete user 388 + * Delete user resource. 379 389 * This can only be done by the logged in user. 380 390 */ 381 391 export const deleteUser = <ThrowOnError extends boolean = false>( ··· 387 397 }); 388 398 389 399 /** 390 - * Get user by user name 400 + * Get user by user name. 401 + * Get user detail based on username. 391 402 */ 392 403 export const getUserByName = <ThrowOnError extends boolean = false>( 393 404 options: Options<GetUserByNameData, ThrowOnError>, ··· 402 413 }); 403 414 404 415 /** 405 - * Update user 416 + * Update user resource. 406 417 * This can only be done by the logged in user. 407 418 */ 408 419 export const updateUser = <ThrowOnError extends boolean = false>(
+159 -27
examples/openapi-ts-next/src/client/types.gen.ts
··· 12 12 status?: 'placed' | 'approved' | 'delivered'; 13 13 }; 14 14 15 - export type Customer = { 16 - address?: Array<Address>; 17 - id?: number; 18 - username?: string; 19 - }; 20 - 21 - export type Address = { 22 - city?: string; 23 - state?: string; 24 - street?: string; 25 - zip?: string; 26 - }; 27 - 28 15 export type Category = { 29 16 id?: number; 30 17 name?: string; ··· 88 75 /** 89 76 * Invalid input 90 77 */ 91 - 405: unknown; 78 + 400: unknown; 79 + /** 80 + * Validation exception 81 + */ 82 + 422: unknown; 83 + /** 84 + * Unexpected error 85 + */ 86 + default: unknown; 92 87 }; 93 88 94 89 export type AddPetResponses = { ··· 122 117 /** 123 118 * Validation exception 124 119 */ 125 - 405: unknown; 120 + 422: unknown; 121 + /** 122 + * Unexpected error 123 + */ 124 + default: unknown; 126 125 }; 127 126 128 127 export type UpdatePetResponses = { ··· 151 150 * Invalid status value 152 151 */ 153 152 400: unknown; 153 + /** 154 + * Unexpected error 155 + */ 156 + default: unknown; 154 157 }; 155 158 156 159 export type FindPetsByStatusResponses = { ··· 180 183 * Invalid tag value 181 184 */ 182 185 400: unknown; 186 + /** 187 + * Unexpected error 188 + */ 189 + default: unknown; 183 190 }; 184 191 185 192 export type FindPetsByTagsResponses = { ··· 212 219 * Invalid pet value 213 220 */ 214 221 400: unknown; 222 + /** 223 + * Unexpected error 224 + */ 225 + default: unknown; 226 + }; 227 + 228 + export type DeletePetResponses = { 229 + /** 230 + * Pet deleted 231 + */ 232 + 200: unknown; 215 233 }; 216 234 217 235 export type GetPetByIdData = { ··· 235 253 * Pet not found 236 254 */ 237 255 404: unknown; 256 + /** 257 + * Unexpected error 258 + */ 259 + default: unknown; 238 260 }; 239 261 240 262 export type GetPetByIdResponses = { ··· 271 293 /** 272 294 * Invalid input 273 295 */ 274 - 405: unknown; 296 + 400: unknown; 297 + /** 298 + * Unexpected error 299 + */ 300 + default: unknown; 301 + }; 302 + 303 + export type UpdatePetWithFormResponses = { 304 + /** 305 + * successful operation 306 + */ 307 + 200: Pet; 275 308 }; 309 + 310 + export type UpdatePetWithFormResponse = 311 + UpdatePetWithFormResponses[keyof UpdatePetWithFormResponses]; 276 312 277 313 export type UploadFileData = { 278 314 body?: Blob | File; ··· 291 327 url: '/pet/{petId}/uploadImage'; 292 328 }; 293 329 330 + export type UploadFileErrors = { 331 + /** 332 + * No file uploaded 333 + */ 334 + 400: unknown; 335 + /** 336 + * Pet not found 337 + */ 338 + 404: unknown; 339 + /** 340 + * Unexpected error 341 + */ 342 + default: unknown; 343 + }; 344 + 294 345 export type UploadFileResponses = { 295 346 /** 296 347 * successful operation ··· 305 356 path?: never; 306 357 query?: never; 307 358 url: '/store/inventory'; 359 + }; 360 + 361 + export type GetInventoryErrors = { 362 + /** 363 + * Unexpected error 364 + */ 365 + default: unknown; 308 366 }; 309 367 310 368 export type GetInventoryResponses = { ··· 330 388 /** 331 389 * Invalid input 332 390 */ 333 - 405: unknown; 391 + 400: unknown; 392 + /** 393 + * Validation exception 394 + */ 395 + 422: unknown; 396 + /** 397 + * Unexpected error 398 + */ 399 + default: unknown; 334 400 }; 335 401 336 402 export type PlaceOrderResponses = { ··· 363 429 * Order not found 364 430 */ 365 431 404: unknown; 432 + /** 433 + * Unexpected error 434 + */ 435 + default: unknown; 436 + }; 437 + 438 + export type DeleteOrderResponses = { 439 + /** 440 + * order deleted 441 + */ 442 + 200: unknown; 366 443 }; 367 444 368 445 export type GetOrderByIdData = { ··· 386 463 * Order not found 387 464 */ 388 465 404: unknown; 466 + /** 467 + * Unexpected error 468 + */ 469 + default: unknown; 389 470 }; 390 471 391 472 export type GetOrderByIdResponses = { ··· 408 489 url: '/user'; 409 490 }; 410 491 492 + export type CreateUserErrors = { 493 + /** 494 + * Unexpected error 495 + */ 496 + default: unknown; 497 + }; 498 + 411 499 export type CreateUserResponses = { 412 500 /** 413 501 * successful operation 414 502 */ 415 - default: User; 503 + 200: User; 416 504 }; 417 505 418 506 export type CreateUserResponse = CreateUserResponses[keyof CreateUserResponses]; ··· 424 512 url: '/user/createWithList'; 425 513 }; 426 514 515 + export type CreateUsersWithListInputErrors = { 516 + /** 517 + * Unexpected error 518 + */ 519 + default: unknown; 520 + }; 521 + 427 522 export type CreateUsersWithListInputResponses = { 428 523 /** 429 524 * Successful operation 430 525 */ 431 526 200: User; 432 - /** 433 - * successful operation 434 - */ 435 - default: unknown; 436 527 }; 437 528 438 529 export type CreateUsersWithListInputResponse = ··· 459 550 * Invalid username/password supplied 460 551 */ 461 552 400: unknown; 553 + /** 554 + * Unexpected error 555 + */ 556 + default: unknown; 462 557 }; 463 558 464 559 export type LoginUserResponses = { ··· 477 572 url: '/user/logout'; 478 573 }; 479 574 575 + export type LogoutUserErrors = { 576 + /** 577 + * Unexpected error 578 + */ 579 + default: unknown; 580 + }; 581 + 480 582 export type LogoutUserResponses = { 481 583 /** 482 584 * successful operation 483 585 */ 484 - default: unknown; 586 + 200: unknown; 485 587 }; 486 588 487 589 export type DeleteUserData = { ··· 505 607 * User not found 506 608 */ 507 609 404: unknown; 610 + /** 611 + * Unexpected error 612 + */ 613 + default: unknown; 614 + }; 615 + 616 + export type DeleteUserResponses = { 617 + /** 618 + * User deleted 619 + */ 620 + 200: unknown; 508 621 }; 509 622 510 623 export type GetUserByNameData = { 511 624 body?: never; 512 625 path: { 513 626 /** 514 - * The name that needs to be fetched. Use user1 for testing. 627 + * The name that needs to be fetched. Use user1 for testing 515 628 */ 516 629 username: string; 517 630 }; ··· 528 641 * User not found 529 642 */ 530 643 404: unknown; 644 + /** 645 + * Unexpected error 646 + */ 647 + default: unknown; 531 648 }; 532 649 533 650 export type GetUserByNameResponses = { ··· 547 664 body?: User; 548 665 path: { 549 666 /** 550 - * name that needs to be updated 667 + * name that need to be deleted 551 668 */ 552 669 username: string; 553 670 }; ··· 555 672 url: '/user/{username}'; 556 673 }; 557 674 675 + export type UpdateUserErrors = { 676 + /** 677 + * bad request 678 + */ 679 + 400: unknown; 680 + /** 681 + * user not found 682 + */ 683 + 404: unknown; 684 + /** 685 + * Unexpected error 686 + */ 687 + default: unknown; 688 + }; 689 + 558 690 export type UpdateUserResponses = { 559 691 /** 560 692 * successful operation 561 693 */ 562 - default: unknown; 694 + 200: unknown; 563 695 }; 564 696 565 697 export type ClientOptions = { 566 - baseUrl: `${string}://${string}/v3` | (string & {}); 698 + baseUrl: 'https://petstore3.swagger.io/api/v3' | (string & {}); 567 699 };
+7
packages/client-fetch/src/types.ts
··· 21 21 */ 22 22 fetch?: (request: Request) => ReturnType<typeof fetch>; 23 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 + /** 24 31 * Return the response data parsed in a specified format. By default, `auto` 25 32 * will infer the appropriate method from the `Content-Type` response header. 26 33 * You can override this behavior with any of the {@link Body} methods.
+7
packages/openapi-ts-tests/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/bundle/client/index.d.cts
··· 139 139 */ 140 140 fetch?: (request: Request) => ReturnType<typeof fetch>; 141 141 /** 142 + * Please don't use the Fetch client for Next.js applications. The `next` 143 + * options won't have any effect. 144 + * 145 + * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead. 146 + */ 147 + next?: never; 148 + /** 142 149 * Return the response data parsed in a specified format. By default, `auto` 143 150 * will infer the appropriate method from the `Content-Type` response header. 144 151 * You can override this behavior with any of the {@link Body} methods.
+7
packages/openapi-ts-tests/test/__snapshots__/3.1.x/clients/@hey-api/client-fetch/bundle/client/index.d.ts
··· 139 139 */ 140 140 fetch?: (request: Request) => ReturnType<typeof fetch>; 141 141 /** 142 + * Please don't use the Fetch client for Next.js applications. The `next` 143 + * options won't have any effect. 144 + * 145 + * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead. 146 + */ 147 + next?: never; 148 + /** 142 149 * Return the response data parsed in a specified format. By default, `auto` 143 150 * will infer the appropriate method from the `Content-Type` response header. 144 151 * You can override this behavior with any of the {@link Body} methods.
+36 -36
pnpm-lock.yaml
··· 11943 11943 dependencies: 11944 11944 '@ampproject/remapping': 2.3.0 11945 11945 '@angular-devkit/architect': 0.1902.0(chokidar@4.0.3) 11946 - '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.24.2)))(webpack@5.98.0(esbuild@0.25.0)) 11946 + '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)))(webpack@5.98.0(esbuild@0.25.0)) 11947 11947 '@angular-devkit/core': 19.2.0(chokidar@4.0.3) 11948 11948 '@angular/build': 19.2.0(@angular/compiler-cli@19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.1)(zone.js@0.15.0)))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.4.2)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(tailwindcss@3.4.9(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.5.3)))(terser@5.39.0)(typescript@5.5.3)(yaml@2.7.0) 11949 11949 '@angular/compiler-cli': 19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3) ··· 11993 11993 tree-kill: 1.2.2 11994 11994 tslib: 2.8.1 11995 11995 typescript: 5.5.3 11996 - webpack: 5.98.0(esbuild@0.25.0) 11997 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.24.2)) 11998 - webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.24.2)) 11996 + webpack: 5.98.0(esbuild@0.24.2) 11997 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 11998 + webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0)) 11999 11999 webpack-merge: 6.0.1 12000 12000 webpack-subresource-integrity: 5.1.0(webpack@5.98.0(esbuild@0.25.0)) 12001 12001 optionalDependencies: ··· 12025 12025 - webpack-cli 12026 12026 - yaml 12027 12027 12028 - '@angular-devkit/build-webpack@0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.24.2)))(webpack@5.98.0(esbuild@0.25.0))': 12028 + '@angular-devkit/build-webpack@0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)))(webpack@5.98.0(esbuild@0.25.0))': 12029 12029 dependencies: 12030 12030 '@angular-devkit/architect': 0.1902.0(chokidar@4.0.3) 12031 12031 rxjs: 7.8.1 12032 - webpack: 5.98.0(esbuild@0.25.0) 12033 - webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.24.2)) 12032 + webpack: 5.98.0(esbuild@0.24.2) 12033 + webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0)) 12034 12034 transitivePeerDependencies: 12035 12035 - chokidar 12036 12036 ··· 14146 14146 dependencies: 14147 14147 '@angular/compiler-cli': 19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.5.3) 14148 14148 typescript: 5.5.3 14149 - webpack: 5.98.0(esbuild@0.25.0) 14149 + webpack: 5.98.0(esbuild@0.24.2) 14150 14150 14151 14151 '@nodelib/fs.scandir@2.1.5': 14152 14152 dependencies: ··· 17408 17408 '@babel/core': 7.26.9 17409 17409 find-cache-dir: 4.0.0 17410 17410 schema-utils: 4.3.0 17411 - webpack: 5.98.0(esbuild@0.25.0) 17411 + webpack: 5.98.0(esbuild@0.24.2) 17412 17412 17413 17413 babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.9): 17414 17414 dependencies: ··· 17957 17957 normalize-path: 3.0.0 17958 17958 schema-utils: 4.3.0 17959 17959 serialize-javascript: 6.0.2 17960 - webpack: 5.98.0(esbuild@0.25.0) 17960 + webpack: 5.98.0(esbuild@0.24.2) 17961 17961 17962 17962 core-js-compat@3.41.0: 17963 17963 dependencies: ··· 18029 18029 postcss-value-parser: 4.2.0 18030 18030 semver: 7.7.1 18031 18031 optionalDependencies: 18032 - webpack: 5.98.0(esbuild@0.25.0) 18032 + webpack: 5.98.0(esbuild@0.24.2) 18033 18033 18034 18034 css-select@5.1.0: 18035 18035 dependencies: ··· 18673 18673 '@typescript-eslint/parser': 7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3) 18674 18674 eslint: 9.17.0(jiti@2.4.2) 18675 18675 eslint-import-resolver-node: 0.3.9 18676 - eslint-import-resolver-typescript: 3.8.5(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)) 18677 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-typescript@3.8.5)(eslint@9.17.0(jiti@2.4.2)) 18676 + eslint-import-resolver-typescript: 3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)) 18677 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)) 18678 18678 eslint-plugin-jsx-a11y: 6.10.2(eslint@9.17.0(jiti@2.4.2)) 18679 18679 eslint-plugin-react: 7.37.4(eslint@9.17.0(jiti@2.4.2)) 18680 18680 eslint-plugin-react-hooks: 5.2.0(eslint@9.17.0(jiti@2.4.2)) ··· 18697 18697 transitivePeerDependencies: 18698 18698 - supports-color 18699 18699 18700 - eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)): 18700 + eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)): 18701 18701 dependencies: 18702 18702 '@nolyfill/is-core-module': 1.0.39 18703 18703 debug: 4.4.0(supports-color@9.4.0) ··· 18708 18708 stable-hash: 0.0.4 18709 18709 tinyglobby: 0.2.12 18710 18710 optionalDependencies: 18711 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-typescript@3.8.5)(eslint@9.17.0(jiti@2.4.2)) 18711 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)) 18712 18712 transitivePeerDependencies: 18713 18713 - supports-color 18714 18714 18715 - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.5)(eslint@9.17.0(jiti@2.4.2)): 18715 + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)): 18716 18716 dependencies: 18717 18717 debug: 3.2.7 18718 18718 optionalDependencies: 18719 18719 '@typescript-eslint/parser': 7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3) 18720 18720 eslint: 9.17.0(jiti@2.4.2) 18721 18721 eslint-import-resolver-node: 0.3.9 18722 - eslint-import-resolver-typescript: 3.8.5(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.2)) 18722 + eslint-import-resolver-typescript: 3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)) 18723 18723 transitivePeerDependencies: 18724 18724 - supports-color 18725 18725 18726 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-typescript@3.8.5)(eslint@9.17.0(jiti@2.4.2)): 18726 + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)): 18727 18727 dependencies: 18728 18728 '@rtsao/scc': 1.1.0 18729 18729 array-includes: 3.1.8 ··· 18734 18734 doctrine: 2.1.0 18735 18735 eslint: 9.17.0(jiti@2.4.2) 18736 18736 eslint-import-resolver-node: 0.3.9 18737 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.5)(eslint@9.17.0(jiti@2.4.2)) 18737 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.5(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.15.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.5.3))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2)) 18738 18738 hasown: 2.0.2 18739 18739 is-core-module: 2.16.1 18740 18740 is-glob: 4.0.3 ··· 20364 20364 dependencies: 20365 20365 less: 4.2.2 20366 20366 optionalDependencies: 20367 - webpack: 5.98.0(esbuild@0.25.0) 20367 + webpack: 5.98.0(esbuild@0.24.2) 20368 20368 20369 20369 less@4.2.2: 20370 20370 dependencies: ··· 20389 20389 dependencies: 20390 20390 webpack-sources: 3.2.3 20391 20391 optionalDependencies: 20392 - webpack: 5.98.0(esbuild@0.25.0) 20392 + webpack: 5.98.0(esbuild@0.24.2) 20393 20393 20394 20394 light-my-request@6.6.0: 20395 20395 dependencies: ··· 20719 20719 dependencies: 20720 20720 schema-utils: 4.3.0 20721 20721 tapable: 2.2.1 20722 - webpack: 5.98.0(esbuild@0.25.0) 20722 + webpack: 5.98.0(esbuild@0.24.2) 20723 20723 20724 20724 minimalistic-assert@1.0.1: {} 20725 20725 ··· 22156 22156 postcss: 8.5.2 22157 22157 semver: 7.7.1 22158 22158 optionalDependencies: 22159 - webpack: 5.98.0(esbuild@0.25.0) 22159 + webpack: 5.98.0(esbuild@0.24.2) 22160 22160 transitivePeerDependencies: 22161 22161 - typescript 22162 22162 ··· 22899 22899 neo-async: 2.6.2 22900 22900 optionalDependencies: 22901 22901 sass: 1.85.0 22902 - webpack: 5.98.0(esbuild@0.25.0) 22902 + webpack: 5.98.0(esbuild@0.24.2) 22903 22903 22904 22904 sass@1.85.0: 22905 22905 dependencies: ··· 23239 23239 dependencies: 23240 23240 iconv-lite: 0.6.3 23241 23241 source-map-js: 1.2.1 23242 - webpack: 5.98.0(esbuild@0.25.0) 23242 + webpack: 5.98.0(esbuild@0.24.2) 23243 23243 23244 23244 source-map-support@0.5.21: 23245 23245 dependencies: ··· 23620 23620 23621 23621 term-size@2.2.1: {} 23622 23622 23623 - terser-webpack-plugin@5.3.14(esbuild@0.25.0)(webpack@5.98.0(esbuild@0.24.2)): 23623 + terser-webpack-plugin@5.3.14(esbuild@0.24.2)(webpack@5.98.0(esbuild@0.25.0)): 23624 23624 dependencies: 23625 23625 '@jridgewell/trace-mapping': 0.3.25 23626 23626 jest-worker: 27.5.1 23627 23627 schema-utils: 4.3.0 23628 23628 serialize-javascript: 6.0.2 23629 23629 terser: 5.39.0 23630 - webpack: 5.98.0(esbuild@0.25.0) 23630 + webpack: 5.98.0(esbuild@0.24.2) 23631 23631 optionalDependencies: 23632 - esbuild: 0.25.0 23632 + esbuild: 0.24.2 23633 23633 23634 23634 terser@5.39.0: 23635 23635 dependencies: ··· 24782 24782 24783 24783 webidl-conversions@7.0.0: {} 24784 24784 24785 - webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.24.2)): 24785 + webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.25.0)): 24786 24786 dependencies: 24787 24787 colorette: 2.0.20 24788 24788 memfs: 4.17.0 ··· 24791 24791 range-parser: 1.2.1 24792 24792 schema-utils: 4.3.0 24793 24793 optionalDependencies: 24794 - webpack: 5.98.0(esbuild@0.25.0) 24794 + webpack: 5.98.0(esbuild@0.24.2) 24795 24795 24796 - webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.24.2)): 24796 + webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)): 24797 24797 dependencies: 24798 24798 '@types/bonjour': 3.5.13 24799 24799 '@types/connect-history-api-fallback': 1.5.4 ··· 24820 24820 serve-index: 1.9.1 24821 24821 sockjs: 0.3.24 24822 24822 spdy: 4.0.2 24823 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.24.2)) 24823 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 24824 24824 ws: 8.18.1 24825 24825 optionalDependencies: 24826 - webpack: 5.98.0(esbuild@0.25.0) 24826 + webpack: 5.98.0(esbuild@0.24.2) 24827 24827 transitivePeerDependencies: 24828 24828 - bufferutil 24829 24829 - debug ··· 24841 24841 webpack-subresource-integrity@5.1.0(webpack@5.98.0(esbuild@0.25.0)): 24842 24842 dependencies: 24843 24843 typed-assert: 1.0.9 24844 - webpack: 5.98.0(esbuild@0.25.0) 24844 + webpack: 5.98.0(esbuild@0.24.2) 24845 24845 24846 24846 webpack-virtual-modules@0.6.2: {} 24847 24847 24848 - webpack@5.98.0(esbuild@0.25.0): 24848 + webpack@5.98.0(esbuild@0.24.2): 24849 24849 dependencies: 24850 24850 '@types/eslint-scope': 3.7.7 24851 24851 '@types/estree': 1.0.6 ··· 24867 24867 neo-async: 2.6.2 24868 24868 schema-utils: 4.3.0 24869 24869 tapable: 2.2.1 24870 - terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(webpack@5.98.0(esbuild@0.24.2)) 24870 + terser-webpack-plugin: 5.3.14(esbuild@0.24.2)(webpack@5.98.0(esbuild@0.25.0)) 24871 24871 watchpack: 2.4.2 24872 24872 webpack-sources: 3.2.3 24873 24873 transitivePeerDependencies: