Skip to content

Commit ce29020

Browse files
authored
Merge pull request #3483 from lukaspodmelle/fix/pinia-colada-query-error-type
fix: pass error type generic to defineQueryOptions in @pinia/colada plugin
2 parents 3be5ff2 + 8e5a578 commit ce29020

9 files changed

Lines changed: 148 additions & 103 deletions

File tree

.changeset/dry-waves-play.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hey-api/openapi-ts": patch
3+
---
4+
5+
**plugin(@pinia/colada)**: fix: pass error type generic to `defineQueryOptions`

examples/openapi-ts-pinia-colada/src/client/@pinia/colada.gen.ts

Lines changed: 73 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,19 @@ import type {
3737
DeletePetData,
3838
DeleteUserData,
3939
FindPetsByStatusData,
40+
FindPetsByStatusResponse,
4041
FindPetsByTagsData,
42+
FindPetsByTagsResponse,
4143
GetInventoryData,
44+
GetInventoryResponse,
4245
GetOrderByIdData,
46+
GetOrderByIdResponse,
4347
GetPetByIdData,
48+
GetPetByIdResponse,
4449
GetUserByNameData,
50+
GetUserByNameResponse,
4551
LoginUserData,
52+
LoginUserResponse,
4653
LogoutUserData,
4754
PlaceOrderData,
4855
PlaceOrderResponse,
@@ -136,26 +143,32 @@ const createQueryKey = <TOptions extends Options>(
136143
*
137144
* Multiple status values can be provided with comma separated strings.
138145
*/
139-
export const findPetsByStatusQuery = defineQueryOptions(
140-
(options: Options<FindPetsByStatusData>) => ({
141-
key: createQueryKey('findPetsByStatus', options),
142-
query: async (context) => {
143-
const { data } = await findPetsByStatus({
144-
...options,
145-
...context,
146-
throwOnError: true,
147-
});
148-
return data;
149-
},
150-
}),
151-
);
146+
export const findPetsByStatusQuery = defineQueryOptions<
147+
Options<FindPetsByStatusData>,
148+
FindPetsByStatusResponse,
149+
Error
150+
>((options: Options<FindPetsByStatusData>) => ({
151+
key: createQueryKey('findPetsByStatus', options),
152+
query: async (context) => {
153+
const { data } = await findPetsByStatus({
154+
...options,
155+
...context,
156+
throwOnError: true,
157+
});
158+
return data;
159+
},
160+
}));
152161

153162
/**
154163
* Finds Pets by tags.
155164
*
156165
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
157166
*/
158-
export const findPetsByTagsQuery = defineQueryOptions((options: Options<FindPetsByTagsData>) => ({
167+
export const findPetsByTagsQuery = defineQueryOptions<
168+
Options<FindPetsByTagsData>,
169+
FindPetsByTagsResponse,
170+
Error
171+
>((options: Options<FindPetsByTagsData>) => ({
159172
key: createQueryKey('findPetsByTags', options),
160173
query: async (context) => {
161174
const { data } = await findPetsByTags({
@@ -190,7 +203,11 @@ export const deletePetMutation = (
190203
*
191204
* Returns a single pet.
192205
*/
193-
export const getPetByIdQuery = defineQueryOptions((options: Options<GetPetByIdData>) => ({
206+
export const getPetByIdQuery = defineQueryOptions<
207+
Options<GetPetByIdData>,
208+
GetPetByIdResponse,
209+
Error
210+
>((options: Options<GetPetByIdData>) => ({
194211
key: createQueryKey('getPetById', options),
195212
query: async (context) => {
196213
const { data } = await getPetById({
@@ -243,7 +260,11 @@ export const uploadFileMutation = (
243260
*
244261
* Returns a map of status codes to quantities.
245262
*/
246-
export const getInventoryQuery = defineQueryOptions((options?: Options<GetInventoryData>) => ({
263+
export const getInventoryQuery = defineQueryOptions<
264+
Options<GetInventoryData>,
265+
GetInventoryResponse,
266+
Error
267+
>((options?: Options<GetInventoryData>) => ({
247268
key: createQueryKey('getInventory', options),
248269
query: async (context) => {
249270
const { data } = await getInventory({
@@ -296,7 +317,11 @@ export const deleteOrderMutation = (
296317
*
297318
* For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions.
298319
*/
299-
export const getOrderByIdQuery = defineQueryOptions((options: Options<GetOrderByIdData>) => ({
320+
export const getOrderByIdQuery = defineQueryOptions<
321+
Options<GetOrderByIdData>,
322+
GetOrderByIdResponse,
323+
Error
324+
>((options: Options<GetOrderByIdData>) => ({
300325
key: createQueryKey('getOrderById', options),
301326
query: async (context) => {
302327
const { data } = await getOrderById({
@@ -353,34 +378,38 @@ export const createUsersWithListInputMutation = (
353378
*
354379
* Log into the system.
355380
*/
356-
export const loginUserQuery = defineQueryOptions((options?: Options<LoginUserData>) => ({
357-
key: createQueryKey('loginUser', options),
358-
query: async (context) => {
359-
const { data } = await loginUser({
360-
...options,
361-
...context,
362-
throwOnError: true,
363-
});
364-
return data;
365-
},
366-
}));
381+
export const loginUserQuery = defineQueryOptions<Options<LoginUserData>, LoginUserResponse, Error>(
382+
(options?: Options<LoginUserData>) => ({
383+
key: createQueryKey('loginUser', options),
384+
query: async (context) => {
385+
const { data } = await loginUser({
386+
...options,
387+
...context,
388+
throwOnError: true,
389+
});
390+
return data;
391+
},
392+
}),
393+
);
367394

368395
/**
369396
* Logs out current logged in user session.
370397
*
371398
* Log user out of the system.
372399
*/
373-
export const logoutUserQuery = defineQueryOptions((options?: Options<LogoutUserData>) => ({
374-
key: createQueryKey('logoutUser', options),
375-
query: async (context) => {
376-
const { data } = await logoutUser({
377-
...options,
378-
...context,
379-
throwOnError: true,
380-
});
381-
return data;
382-
},
383-
}));
400+
export const logoutUserQuery = defineQueryOptions<Options<LogoutUserData>, unknown, Error>(
401+
(options?: Options<LogoutUserData>) => ({
402+
key: createQueryKey('logoutUser', options),
403+
query: async (context) => {
404+
const { data } = await logoutUser({
405+
...options,
406+
...context,
407+
throwOnError: true,
408+
});
409+
return data;
410+
},
411+
}),
412+
);
384413

385414
/**
386415
* Delete user resource.
@@ -405,7 +434,11 @@ export const deleteUserMutation = (
405434
*
406435
* Get user detail based on username.
407436
*/
408-
export const getUserByNameQuery = defineQueryOptions((options: Options<GetUserByNameData>) => ({
437+
export const getUserByNameQuery = defineQueryOptions<
438+
Options<GetUserByNameData>,
439+
GetUserByNameResponse,
440+
Error
441+
>((options: Options<GetUserByNameData>) => ({
409442
key: createQueryKey('getUserByName', options),
410443
query: async (context) => {
411444
const { data } = await getUserByName({

packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/asClass/@pinia/colada.gen.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { type _JSONValue, defineQueryOptions, type UseMutationOptions } from '@p
55
import { serializeQueryKeyValue } from '../client';
66
import { client } from '../client.gen';
77
import { BarBazService, BarService, FooBazService, FooService, type Options } from '../sdk.gen';
8-
import type { FooBarPostData, FooBarPostResponse, FooBarPutData, FooBarPutResponse, FooPostData, FooPostResponse, FooPutData, FooPutResponse, GetFooBarData, GetFooData } from '../types.gen';
8+
import type { FooBarPostData, FooBarPostResponse, FooBarPutData, FooBarPutResponse, FooPostData, FooPostResponse, FooPutData, FooPutResponse, GetFooBarData, GetFooBarResponse, GetFooData, GetFooResponse } from '../types.gen';
99

1010
export type QueryKey<TOptions extends Options> = [
1111
Pick<TOptions, 'path'> & {
@@ -44,7 +44,7 @@ const createQueryKey = <TOptions extends Options>(id: string, options?: TOptions
4444

4545
export const getFooQueryKey = (options?: Options<GetFooData>) => createQueryKey('getFoo', options);
4646

47-
export const getFooQuery = defineQueryOptions((options?: Options<GetFooData>) => ({
47+
export const getFooQuery = defineQueryOptions<Options<GetFooData>, GetFooResponse, Error>((options?: Options<GetFooData>) => ({
4848
key: getFooQueryKey(options),
4949
query: async (context) => {
5050
const { data } = await FooBazService.getFoo({
@@ -80,7 +80,7 @@ export const fooPutMutation = (options?: Partial<Options<FooPutData>>): UseMutat
8080

8181
export const getFooBarQueryKey = (options?: Options<GetFooBarData>) => createQueryKey('getFooBar', options);
8282

83-
export const getFooBarQuery = defineQueryOptions((options?: Options<GetFooBarData>) => ({
83+
export const getFooBarQuery = defineQueryOptions<Options<GetFooBarData>, GetFooBarResponse, Error>((options?: Options<GetFooBarData>) => ({
8484
key: getFooBarQueryKey(options),
8585
query: async (context) => {
8686
const { data } = await BarBazService.getFooBar({

packages/openapi-ts-tests/main/test/__snapshots__/2.0.x/plugins/@pinia/colada/fetch/@pinia/colada.gen.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { type _JSONValue, defineQueryOptions, type UseMutationOptions } from '@p
55
import { serializeQueryKeyValue } from '../client';
66
import { client } from '../client.gen';
77
import { callToTestOrderOfParams, callWithDefaultOptionalParameters, callWithDefaultParameters, callWithDescriptions, callWithDuplicateResponses, callWithNoContentResponse, callWithParameters, callWithResponse, callWithResponseAndNoContentResponse, callWithResponses, callWithResultFromHeader, callWithWeirdParameterNames, collectionFormat, complexTypes, deleteCallWithoutParametersAndResponse, dummyA, dummyB, duplicateName, duplicateName2, duplicateName3, duplicateName4, fooWow, getCallWithoutParametersAndResponse, nonAsciiæøåÆøÅöôêÊ字符串, type Options, patchApiVbyApiVersionNoTag, patchCallWithoutParametersAndResponse, postApiVbyApiVersionBody, postCallWithoutParametersAndResponse, putCallWithoutParametersAndResponse, serviceWithEmptyTag, testErrorCode, types } from '../sdk.gen';
8-
import type { CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesResponse, CallWithNoContentResponseData, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseData, CallWithResponsesData, CallWithResponsesError, CallWithResponsesResponse, CallWithResultFromHeaderData, CallWithWeirdParameterNamesData, CollectionFormatData, ComplexTypesData, DeleteCallWithoutParametersAndResponseData, DummyAData, DummyBData, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, FooWowData, GetCallWithoutParametersAndResponseData, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, PatchApiVbyApiVersionNoTagData, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyResponse, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ServiceWithEmptyTagData, TestErrorCodeData, TypesData } from '../types.gen';
8+
import type { CallToTestOrderOfParamsData, CallWithDefaultOptionalParametersData, CallWithDefaultParametersData, CallWithDescriptionsData, CallWithDuplicateResponsesData, CallWithDuplicateResponsesError, CallWithDuplicateResponsesResponse, CallWithNoContentResponseData, CallWithParametersData, CallWithResponseAndNoContentResponseData, CallWithResponseAndNoContentResponseResponse, CallWithResponseData, CallWithResponseResponse, CallWithResponsesData, CallWithResponsesError, CallWithResponsesResponse, CallWithResultFromHeaderData, CallWithWeirdParameterNamesData, CollectionFormatData, ComplexTypesData, ComplexTypesResponse, DeleteCallWithoutParametersAndResponseData, DummyAData, DummyBData, DuplicateName2Data, DuplicateName3Data, DuplicateName4Data, DuplicateNameData, FooWowData, GetCallWithoutParametersAndResponseData, NonAsciiæøåÆøÅöôêÊ字符串Data, NonAsciiæøåÆøÅöôêÊ字符串Response, PatchApiVbyApiVersionNoTagData, PatchCallWithoutParametersAndResponseData, PostApiVbyApiVersionBodyData, PostApiVbyApiVersionBodyError, PostApiVbyApiVersionBodyResponse, PostCallWithoutParametersAndResponseData, PutCallWithoutParametersAndResponseData, ServiceWithEmptyTagData, TestErrorCodeData, TypesData, TypesResponse } from '../types.gen';
99

1010
export type QueryKey<TOptions extends Options> = [
1111
Pick<TOptions, 'path'> & {
@@ -44,7 +44,7 @@ const createQueryKey = <TOptions extends Options>(id: string, options?: TOptions
4444

4545
export const serviceWithEmptyTagQueryKey = (options?: Options<ServiceWithEmptyTagData>) => createQueryKey('serviceWithEmptyTag', options);
4646

47-
export const serviceWithEmptyTagQuery = defineQueryOptions((options?: Options<ServiceWithEmptyTagData>) => ({
47+
export const serviceWithEmptyTagQuery = defineQueryOptions<Options<ServiceWithEmptyTagData>, unknown, Error>((options?: Options<ServiceWithEmptyTagData>) => ({
4848
key: serviceWithEmptyTagQueryKey(options),
4949
query: async (context) => {
5050
const { data } = await serviceWithEmptyTag({
@@ -91,7 +91,7 @@ export const deleteCallWithoutParametersAndResponseMutation = (options?: Partial
9191

9292
export const getCallWithoutParametersAndResponseQueryKey = (options?: Options<GetCallWithoutParametersAndResponseData>) => createQueryKey('getCallWithoutParametersAndResponse', options);
9393

94-
export const getCallWithoutParametersAndResponseQuery = defineQueryOptions((options?: Options<GetCallWithoutParametersAndResponseData>) => ({
94+
export const getCallWithoutParametersAndResponseQuery = defineQueryOptions<Options<GetCallWithoutParametersAndResponseData>, unknown, Error>((options?: Options<GetCallWithoutParametersAndResponseData>) => ({
9595
key: getCallWithoutParametersAndResponseQueryKey(options),
9696
query: async (context) => {
9797
const { data } = await getCallWithoutParametersAndResponse({
@@ -171,7 +171,7 @@ export const callWithWeirdParameterNamesMutation = (options?: Partial<Options<Ca
171171

172172
export const callWithDefaultParametersQueryKey = (options: Options<CallWithDefaultParametersData>) => createQueryKey('callWithDefaultParameters', options);
173173

174-
export const callWithDefaultParametersQuery = defineQueryOptions((options: Options<CallWithDefaultParametersData>) => ({
174+
export const callWithDefaultParametersQuery = defineQueryOptions<Options<CallWithDefaultParametersData>, unknown, Error>((options: Options<CallWithDefaultParametersData>) => ({
175175
key: callWithDefaultParametersQueryKey(options),
176176
query: async (context) => {
177177
const { data } = await callWithDefaultParameters({
@@ -218,7 +218,7 @@ export const duplicateNameMutation = (options?: Partial<Options<DuplicateNameDat
218218

219219
export const duplicateName2QueryKey = (options?: Options<DuplicateName2Data>) => createQueryKey('duplicateName2', options);
220220

221-
export const duplicateName2Query = defineQueryOptions((options?: Options<DuplicateName2Data>) => ({
221+
export const duplicateName2Query = defineQueryOptions<Options<DuplicateName2Data>, unknown, Error>((options?: Options<DuplicateName2Data>) => ({
222222
key: duplicateName2QueryKey(options),
223223
query: async (context) => {
224224
const { data } = await duplicateName2({
@@ -254,7 +254,7 @@ export const duplicateName4Mutation = (options?: Partial<Options<DuplicateName4D
254254

255255
export const callWithNoContentResponseQueryKey = (options?: Options<CallWithNoContentResponseData>) => createQueryKey('callWithNoContentResponse', options);
256256

257-
export const callWithNoContentResponseQuery = defineQueryOptions((options?: Options<CallWithNoContentResponseData>) => ({
257+
export const callWithNoContentResponseQuery = defineQueryOptions<Options<CallWithNoContentResponseData>, unknown, Error>((options?: Options<CallWithNoContentResponseData>) => ({
258258
key: callWithNoContentResponseQueryKey(options),
259259
query: async (context) => {
260260
const { data } = await callWithNoContentResponse({
@@ -268,7 +268,7 @@ export const callWithNoContentResponseQuery = defineQueryOptions((options?: Opti
268268

269269
export const callWithResponseAndNoContentResponseQueryKey = (options?: Options<CallWithResponseAndNoContentResponseData>) => createQueryKey('callWithResponseAndNoContentResponse', options);
270270

271-
export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((options?: Options<CallWithResponseAndNoContentResponseData>) => ({
271+
export const callWithResponseAndNoContentResponseQuery = defineQueryOptions<Options<CallWithResponseAndNoContentResponseData>, CallWithResponseAndNoContentResponseResponse, Error>((options?: Options<CallWithResponseAndNoContentResponseData>) => ({
272272
key: callWithResponseAndNoContentResponseQueryKey(options),
273273
query: async (context) => {
274274
const { data } = await callWithResponseAndNoContentResponse({
@@ -282,7 +282,7 @@ export const callWithResponseAndNoContentResponseQuery = defineQueryOptions((opt
282282

283283
export const dummyAQueryKey = (options?: Options<DummyAData>) => createQueryKey('dummyA', options);
284284

285-
export const dummyAQuery = defineQueryOptions((options?: Options<DummyAData>) => ({
285+
export const dummyAQuery = defineQueryOptions<Options<DummyAData>, unknown, Error>((options?: Options<DummyAData>) => ({
286286
key: dummyAQueryKey(options),
287287
query: async (context) => {
288288
const { data } = await dummyA({
@@ -296,7 +296,7 @@ export const dummyAQuery = defineQueryOptions((options?: Options<DummyAData>) =>
296296

297297
export const dummyBQueryKey = (options?: Options<DummyBData>) => createQueryKey('dummyB', options);
298298

299-
export const dummyBQuery = defineQueryOptions((options?: Options<DummyBData>) => ({
299+
export const dummyBQuery = defineQueryOptions<Options<DummyBData>, unknown, Error>((options?: Options<DummyBData>) => ({
300300
key: dummyBQueryKey(options),
301301
query: async (context) => {
302302
const { data } = await dummyB({
@@ -310,7 +310,7 @@ export const dummyBQuery = defineQueryOptions((options?: Options<DummyBData>) =>
310310

311311
export const callWithResponseQueryKey = (options?: Options<CallWithResponseData>) => createQueryKey('callWithResponse', options);
312312

313-
export const callWithResponseQuery = defineQueryOptions((options?: Options<CallWithResponseData>) => ({
313+
export const callWithResponseQuery = defineQueryOptions<Options<CallWithResponseData>, CallWithResponseResponse, Error>((options?: Options<CallWithResponseData>) => ({
314314
key: callWithResponseQueryKey(options),
315315
query: async (context) => {
316316
const { data } = await callWithResponse({
@@ -346,7 +346,7 @@ export const callWithResponsesMutation = (options?: Partial<Options<CallWithResp
346346

347347
export const collectionFormatQueryKey = (options: Options<CollectionFormatData>) => createQueryKey('collectionFormat', options);
348348

349-
export const collectionFormatQuery = defineQueryOptions((options: Options<CollectionFormatData>) => ({
349+
export const collectionFormatQuery = defineQueryOptions<Options<CollectionFormatData>, unknown, Error>((options: Options<CollectionFormatData>) => ({
350350
key: collectionFormatQueryKey(options),
351351
query: async (context) => {
352352
const { data } = await collectionFormat({
@@ -360,7 +360,7 @@ export const collectionFormatQuery = defineQueryOptions((options: Options<Collec
360360

361361
export const typesQueryKey = (options: Options<TypesData>) => createQueryKey('types', options);
362362

363-
export const typesQuery = defineQueryOptions((options: Options<TypesData>) => ({
363+
export const typesQuery = defineQueryOptions<Options<TypesData>, TypesResponse, Error>((options: Options<TypesData>) => ({
364364
key: typesQueryKey(options),
365365
query: async (context) => {
366366
const { data } = await types({
@@ -374,7 +374,7 @@ export const typesQuery = defineQueryOptions((options: Options<TypesData>) => ({
374374

375375
export const complexTypesQueryKey = (options: Options<ComplexTypesData>) => createQueryKey('complexTypes', options);
376376

377-
export const complexTypesQuery = defineQueryOptions((options: Options<ComplexTypesData>) => ({
377+
export const complexTypesQuery = defineQueryOptions<Options<ComplexTypesData>, ComplexTypesResponse, Error>((options: Options<ComplexTypesData>) => ({
378378
key: complexTypesQueryKey(options),
379379
query: async (context) => {
380380
const { data } = await complexTypes({

0 commit comments

Comments
 (0)