From e97284115549e24f3184392db92f31dfbcd2db5b Mon Sep 17 00:00:00 2001 From: croatialu Date: Tue, 14 Jan 2025 07:01:26 +0000 Subject: [PATCH] feat: add some test --- .../Queries.ts | 810 ++++++++++++++++ .../api.ts | 611 ++++++++++++ .../Queries.ts | 811 ++++++++++++++++ .../api.ts | 685 ++++++++++++++ .../api-react-default-fetch/Queries.ts | 811 ++++++++++++++++ __generated__/api-react-default-fetch/api.ts | 685 ++++++++++++++ __generated__/api-react-default/Queries.ts | 2 +- .../Pet.ts | 189 ++++ .../Queries.ts | 820 ++++++++++++++++ .../Store.ts | 79 ++ .../User.ts | 147 +++ .../data-contracts.ts | 71 ++ .../http-client.ts | 146 +++ .../Pet.ts | 189 ++++ .../Queries.ts | 821 ++++++++++++++++ .../Store.ts | 79 ++ .../User.ts | 147 +++ .../data-contracts.ts | 71 ++ .../http-client.ts | 220 +++++ __generated__/api-react-modular-fetch/Pet.ts | 189 ++++ .../api-react-modular-fetch/Queries.ts | 821 ++++++++++++++++ .../api-react-modular-fetch/Store.ts | 79 ++ __generated__/api-react-modular-fetch/User.ts | 147 +++ .../api-react-modular-fetch/data-contracts.ts | 71 ++ .../api-react-modular-fetch/http-client.ts | 220 +++++ __generated__/api-react-modular/Queries.ts | 5 +- .../Queries.ts | 881 +++++++++++++++++ .../api.ts | 611 ++++++++++++ .../Queries.ts | 882 +++++++++++++++++ .../api.ts | 685 ++++++++++++++ .../api-vue-default-fetch/Queries.ts | 884 +++++++++++++++++ __generated__/api-vue-default-fetch/api.ts | 685 ++++++++++++++ __generated__/api-vue-default/Queries.ts | 4 +- .../Pet.ts | 189 ++++ .../Queries.ts | 892 +++++++++++++++++ .../Store.ts | 79 ++ .../User.ts | 147 +++ .../data-contracts.ts | 71 ++ .../http-client.ts | 146 +++ .../Pet.ts | 189 ++++ .../Queries.ts | 893 +++++++++++++++++ .../Store.ts | 79 ++ .../User.ts | 147 +++ .../data-contracts.ts | 71 ++ .../http-client.ts | 220 +++++ __generated__/api-vue-modular-fetch/Pet.ts | 189 ++++ .../api-vue-modular-fetch/Queries.ts | 895 ++++++++++++++++++ __generated__/api-vue-modular-fetch/Store.ts | 79 ++ __generated__/api-vue-modular-fetch/User.ts | 147 +++ .../api-vue-modular-fetch/data-contracts.ts | 71 ++ .../api-vue-modular-fetch/http-client.ts | 220 +++++ __generated__/api-vue-modular/Queries.ts | 6 +- package.json | 2 +- src/index.ts | 18 +- src/utils.ts | 228 +++++ templates/default/react-query.ejs | 10 +- templates/default/vue-query.ejs | 5 +- templates/modular/react-query.ejs | 7 +- templates/modular/vue-query.ejs | 6 +- tsconfig.generated.json | 15 + 60 files changed, 18558 insertions(+), 21 deletions(-) create mode 100644 __generated__/api-react-default-axios-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-react-default-axios-unwrap-response-data/api.ts create mode 100644 __generated__/api-react-default-fetch-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-react-default-fetch-unwrap-response-data/api.ts create mode 100644 __generated__/api-react-default-fetch/Queries.ts create mode 100644 __generated__/api-react-default-fetch/api.ts create mode 100644 __generated__/api-react-modular-axios-unwrap-response-data/Pet.ts create mode 100644 __generated__/api-react-modular-axios-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-react-modular-axios-unwrap-response-data/Store.ts create mode 100644 __generated__/api-react-modular-axios-unwrap-response-data/User.ts create mode 100644 __generated__/api-react-modular-axios-unwrap-response-data/data-contracts.ts create mode 100644 __generated__/api-react-modular-axios-unwrap-response-data/http-client.ts create mode 100644 __generated__/api-react-modular-fetch-unwrap-response-data/Pet.ts create mode 100644 __generated__/api-react-modular-fetch-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-react-modular-fetch-unwrap-response-data/Store.ts create mode 100644 __generated__/api-react-modular-fetch-unwrap-response-data/User.ts create mode 100644 __generated__/api-react-modular-fetch-unwrap-response-data/data-contracts.ts create mode 100644 __generated__/api-react-modular-fetch-unwrap-response-data/http-client.ts create mode 100644 __generated__/api-react-modular-fetch/Pet.ts create mode 100644 __generated__/api-react-modular-fetch/Queries.ts create mode 100644 __generated__/api-react-modular-fetch/Store.ts create mode 100644 __generated__/api-react-modular-fetch/User.ts create mode 100644 __generated__/api-react-modular-fetch/data-contracts.ts create mode 100644 __generated__/api-react-modular-fetch/http-client.ts create mode 100644 __generated__/api-vue-default-axios-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-vue-default-axios-unwrap-response-data/api.ts create mode 100644 __generated__/api-vue-default-fetch-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-vue-default-fetch-unwrap-response-data/api.ts create mode 100644 __generated__/api-vue-default-fetch/Queries.ts create mode 100644 __generated__/api-vue-default-fetch/api.ts create mode 100644 __generated__/api-vue-modular-axios-unwrap-response-data/Pet.ts create mode 100644 __generated__/api-vue-modular-axios-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-vue-modular-axios-unwrap-response-data/Store.ts create mode 100644 __generated__/api-vue-modular-axios-unwrap-response-data/User.ts create mode 100644 __generated__/api-vue-modular-axios-unwrap-response-data/data-contracts.ts create mode 100644 __generated__/api-vue-modular-axios-unwrap-response-data/http-client.ts create mode 100644 __generated__/api-vue-modular-fetch-unwrap-response-data/Pet.ts create mode 100644 __generated__/api-vue-modular-fetch-unwrap-response-data/Queries.ts create mode 100644 __generated__/api-vue-modular-fetch-unwrap-response-data/Store.ts create mode 100644 __generated__/api-vue-modular-fetch-unwrap-response-data/User.ts create mode 100644 __generated__/api-vue-modular-fetch-unwrap-response-data/data-contracts.ts create mode 100644 __generated__/api-vue-modular-fetch-unwrap-response-data/http-client.ts create mode 100644 __generated__/api-vue-modular-fetch/Pet.ts create mode 100644 __generated__/api-vue-modular-fetch/Queries.ts create mode 100644 __generated__/api-vue-modular-fetch/Store.ts create mode 100644 __generated__/api-vue-modular-fetch/User.ts create mode 100644 __generated__/api-vue-modular-fetch/data-contracts.ts create mode 100644 __generated__/api-vue-modular-fetch/http-client.ts create mode 100644 tsconfig.generated.json diff --git a/__generated__/api-react-default-axios-unwrap-response-data/Queries.ts b/__generated__/api-react-default-axios-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..910364d --- /dev/null +++ b/__generated__/api-react-default-axios-unwrap-response-data/Queries.ts @@ -0,0 +1,810 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { + MutationOptions, + QueryKey, + useMutation, + useQuery, + useQueryClient, + UseQueryOptions, +} from "@tanstack/react-query"; +import { Api, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./api"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = Omit, "queryKey" | "queryFn">; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Api) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.uploadFile(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.addPet(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.updatePet(body, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByStatus(query, requestParams); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByTags(query, requestParams); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.getPetById(petId, requestParams); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: number; requestParams?: RequestParams }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.updatePetWithForm(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.pet.deletePet(petId, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + number, + { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + RequestParams, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + { + /** Tags to filter by */ + tags: string[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "get", "/pet/${petId}", number, RequestParams], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + number, + { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + RequestParams, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "delete", "/pet/${petId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Api) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.store.placeOrder(body, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.store.getOrderById(orderId, requestParams); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { orderId: number; requestParams?: RequestParams }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.store.deleteOrder(orderId, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.store.getInventory(requestParams); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "post", "/store/order", TypeOrder, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", number, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "delete", "/store/order/${orderId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", RequestParams], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: Api) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithArrayInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithListInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: string; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.user.getUserByName(username, requestParams); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { username: string; requestParams?: RequestParams }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.user.updateUser(username, body, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.user.deleteUser(username, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.user.loginUser(query, requestParams); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.user.logoutUser(requestParams); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUser(body, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithArray", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithList", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/${username}", string, RequestParams], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "put", "/user/${username}", string, TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "delete", "/user/${username}", string, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + RequestParams, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (api: Api) => { + return { + pet: createPetApiQuery(api), + store: createStoreApiQuery(api), + user: createUserApiQuery(api), + }; +}; diff --git a/__generated__/api-react-default-axios-unwrap-response-data/api.ts b/__generated__/api-react-default-axios-unwrap-response-data/api.ts new file mode 100644 index 0000000..24c66bf --- /dev/null +++ b/__generated__/api-react-default-axios-unwrap-response-data/api.ts @@ -0,0 +1,611 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} + +import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults, ResponseType } from "axios"; +import axios from "axios"; + +export type QueryParamsType = Record; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseType; + /** request body */ + body?: unknown; +} + +export type RequestParams = Omit; + +export interface ApiConfig extends Omit { + securityWorker?: ( + securityData: SecurityDataType | null, + ) => Promise | AxiosRequestConfig | void; + secure?: boolean; + format?: ResponseType; +} + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public instance: AxiosInstance; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private secure?: boolean; + private format?: ResponseType; + + constructor({ securityWorker, secure, format, ...axiosConfig }: ApiConfig = {}) { + this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || "https://petstore.swagger.io/v2" }); + this.secure = secure; + this.format = format; + this.securityWorker = securityWorker; + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method); + + return { + ...this.instance.defaults, + ...params1, + ...(params2 || {}), + headers: { + ...((method && this.instance.defaults.headers[method.toLowerCase() as keyof HeadersDefaults]) || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === "object" && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; + } + } + + protected createFormData(input: Record): FormData { + if (input instanceof FormData) { + return input; + } + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + const propertyContent: any[] = property instanceof Array ? property : [property]; + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem)); + } + + return formData; + }, new FormData()); + } + + public request = async ({ + secure, + path, + type, + query, + format, + body, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const responseFormat = format || this.format || undefined; + + if (type === ContentType.FormData && body && body !== null && typeof body === "object") { + body = this.createFormData(body as Record); + } + + if (type === ContentType.Text && body && body !== null && typeof body !== "string") { + body = JSON.stringify(body); + } + + return this.instance + .request({ + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type ? { "Content-Type": type } : {}), + }, + params: query, + responseType: responseFormat, + data: body, + url: path, + }) + .then((response) => response.data); + }; +} + +/** + * @title Swagger Petstore + * @version 1.0.6 + * @license Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) + * @termsOfService http://swagger.io/terms/ + * @baseUrl https://petstore.swagger.io/v2 + * @externalDocs http://swagger.io + * @contact + * + * This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + */ +export class Api extends HttpClient { + pet = { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile: ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus: ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags: ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm: ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }), + }; + store = { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder: (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }), + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory: (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + user = { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser: (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser: ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser: (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser: (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + }; +} diff --git a/__generated__/api-react-default-fetch-unwrap-response-data/Queries.ts b/__generated__/api-react-default-fetch-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..bd432ae --- /dev/null +++ b/__generated__/api-react-default-fetch-unwrap-response-data/Queries.ts @@ -0,0 +1,811 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { + MutationOptions, + QueryKey, + useMutation, + useQuery, + useQueryClient, + UseQueryOptions, +} from "@tanstack/react-query"; + +import { Api, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./api"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = Omit, "queryKey" | "queryFn">; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Api) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.uploadFile(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.addPet(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.updatePet(body, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByStatus(query, requestParams); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByTags(query, requestParams); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.getPetById(petId, requestParams); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: number; requestParams?: RequestParams }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.updatePetWithForm(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.pet.deletePet(petId, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + number, + { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + RequestParams, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + { + /** Tags to filter by */ + tags: string[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "get", "/pet/${petId}", number, RequestParams], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + number, + { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + RequestParams, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "delete", "/pet/${petId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Api) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.store.placeOrder(body, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.store.getOrderById(orderId, requestParams); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { orderId: number; requestParams?: RequestParams }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.store.deleteOrder(orderId, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.store.getInventory(requestParams); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "post", "/store/order", TypeOrder, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", number, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "delete", "/store/order/${orderId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", RequestParams], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: Api) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithArrayInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithListInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: string; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.user.getUserByName(username, requestParams); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { username: string; requestParams?: RequestParams }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.user.updateUser(username, body, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.user.deleteUser(username, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.user.loginUser(query, requestParams); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.user.logoutUser(requestParams); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUser(body, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithArray", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithList", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/${username}", string, RequestParams], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "put", "/user/${username}", string, TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "delete", "/user/${username}", string, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + RequestParams, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (api: Api) => { + return { + pet: createPetApiQuery(api), + store: createStoreApiQuery(api), + user: createUserApiQuery(api), + }; +}; diff --git a/__generated__/api-react-default-fetch-unwrap-response-data/api.ts b/__generated__/api-react-default-fetch-unwrap-response-data/api.ts new file mode 100644 index 0000000..242c076 --- /dev/null +++ b/__generated__/api-react-default-fetch-unwrap-response-data/api.ts @@ -0,0 +1,685 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data.data; + }); + }; +} + +/** + * @title Swagger Petstore + * @version 1.0.6 + * @license Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) + * @termsOfService http://swagger.io/terms/ + * @baseUrl https://petstore.swagger.io/v2 + * @externalDocs http://swagger.io + * @contact + * + * This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + */ +export class Api extends HttpClient { + pet = { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile: ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus: ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags: ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm: ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }), + }; + store = { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder: (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }), + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory: (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + user = { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser: (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser: ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser: (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser: (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + }; +} diff --git a/__generated__/api-react-default-fetch/Queries.ts b/__generated__/api-react-default-fetch/Queries.ts new file mode 100644 index 0000000..d27cc36 --- /dev/null +++ b/__generated__/api-react-default-fetch/Queries.ts @@ -0,0 +1,811 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { + MutationOptions, + QueryKey, + useMutation, + useQuery, + useQueryClient, + UseQueryOptions, +} from "@tanstack/react-query"; + +import { Api, HttpResponse, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./api"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = Omit, E>, "queryKey" | "queryFn">; +// @ts-ignore +type CustomMutationOptions = Omit, E, V>, "mutationFn">; + +export const createPetApiQuery = (api: Api) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.uploadFile(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.addPet(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.updatePet(body, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByStatus(query, requestParams); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByTags(query, requestParams); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.getPetById(petId, requestParams); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: number; requestParams?: RequestParams }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.updatePetWithForm(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.pet.deletePet(petId, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + number, + { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", TypePet, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", TypePet, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + { + /** Tags to filter by */ + tags: string[]; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "get", "/pet/${petId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + number, + { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "delete", "/pet/${petId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Api) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.store.placeOrder(body, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.store.getOrderById(orderId, requestParams); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { orderId: number; requestParams?: RequestParams }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.store.deleteOrder(orderId, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.store.getInventory(requestParams); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "post", "/store/order", TypeOrder, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "delete", "/store/order/${orderId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", RequestParams], + updater: (data: HttpResponse, any>) => HttpResponse, any>, + ): Promise, any>>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: Api) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithArrayInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithListInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: string; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.user.getUserByName(username, requestParams); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { username: string; requestParams?: RequestParams }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.user.updateUser(username, body, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.user.deleteUser(username, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.user.loginUser(query, requestParams); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.user.logoutUser(requestParams); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUser(body, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithArray", TypeUser[], RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithList", TypeUser[], RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/${username}", string, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "put", "/user/${username}", string, TypeUser, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "delete", "/user/${username}", string, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", TypeUser, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (api: Api) => { + return { + pet: createPetApiQuery(api), + store: createStoreApiQuery(api), + user: createUserApiQuery(api), + }; +}; diff --git a/__generated__/api-react-default-fetch/api.ts b/__generated__/api-react-default-fetch/api.ts new file mode 100644 index 0000000..30b6dc1 --- /dev/null +++ b/__generated__/api-react-default-fetch/api.ts @@ -0,0 +1,685 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} + +/** + * @title Swagger Petstore + * @version 1.0.6 + * @license Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) + * @termsOfService http://swagger.io/terms/ + * @baseUrl https://petstore.swagger.io/v2 + * @externalDocs http://swagger.io + * @contact + * + * This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + */ +export class Api extends HttpClient { + pet = { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile: ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus: ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags: ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm: ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }), + }; + store = { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder: (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }), + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory: (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + user = { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser: (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser: ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser: (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser: (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + }; +} diff --git a/__generated__/api-react-default/Queries.ts b/__generated__/api-react-default/Queries.ts index 02090cf..08e5057 100644 --- a/__generated__/api-react-default/Queries.ts +++ b/__generated__/api-react-default/Queries.ts @@ -26,7 +26,7 @@ import { Api, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } fro This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. */ // @ts-ignore -type CustomQueryOptions = Omit>, "queryKey" | "queryFn">; +type CustomQueryOptions = Omit, E>, "queryKey" | "queryFn">; // @ts-ignore type CustomMutationOptions = Omit, E, V>, "mutationFn">; diff --git a/__generated__/api-react-modular-axios-unwrap-response-data/Pet.ts b/__generated__/api-react-modular-axios-unwrap-response-data/Pet.ts new file mode 100644 index 0000000..dda3c0b --- /dev/null +++ b/__generated__/api-react-modular-axios-unwrap-response-data/Pet.ts @@ -0,0 +1,189 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeApiResponse, TypePet } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Pet extends HttpClient { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile = ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus = ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags = ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm = ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }); + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }); +} diff --git a/__generated__/api-react-modular-axios-unwrap-response-data/Queries.ts b/__generated__/api-react-modular-axios-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..09f0687 --- /dev/null +++ b/__generated__/api-react-modular-axios-unwrap-response-data/Queries.ts @@ -0,0 +1,820 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { + MutationOptions, + QueryKey, + useMutation, + useQuery, + useQueryClient, + UseQueryOptions, +} from "@tanstack/react-query"; +import { RequestParams } from "./http-client"; + +import { Pet } from "./Pet"; + +import { Store } from "./Store"; + +import { User } from "./User"; + +import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = Omit, "queryKey" | "queryFn">; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Pet) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.uploadFile(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.addPet(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.updatePet(body, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByStatus(query, requestParams); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByTags(query, requestParams); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.getPetById(petId, requestParams); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: number; requestParams?: RequestParams }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.updatePetWithForm(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.deletePet(petId, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + number, + { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + RequestParams, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + { + /** Tags to filter by */ + tags: string[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "get", "/pet/${petId}", number, RequestParams], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + number, + { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + RequestParams, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "delete", "/pet/${petId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Store) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.placeOrder(body, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.getOrderById(orderId, requestParams); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { orderId: number; requestParams?: RequestParams }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.deleteOrder(orderId, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.getInventory(requestParams); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "post", "/store/order", TypeOrder, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", number, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "delete", "/store/order/${orderId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", RequestParams], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: User) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithArrayInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithListInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: string; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.getUserByName(username, requestParams); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { username: string; requestParams?: RequestParams }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.updateUser(username, body, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.deleteUser(username, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.loginUser(query, requestParams); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.logoutUser(requestParams); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUser(body, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithArray", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithList", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/${username}", string, RequestParams], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "put", "/user/${username}", string, TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "delete", "/user/${username}", string, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + RequestParams, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (modules: { pet: Pet; store: Store; user: User }) => { + const { pet, store, user } = modules; + + return { + pet: createPetApiQuery(pet), + store: createStoreApiQuery(store), + user: createUserApiQuery(user), + }; +}; diff --git a/__generated__/api-react-modular-axios-unwrap-response-data/Store.ts b/__generated__/api-react-modular-axios-unwrap-response-data/Store.ts new file mode 100644 index 0000000..8ddceb1 --- /dev/null +++ b/__generated__/api-react-modular-axios-unwrap-response-data/Store.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeOrder } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Store extends HttpClient { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder = (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }); + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory = (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }); +} diff --git a/__generated__/api-react-modular-axios-unwrap-response-data/User.ts b/__generated__/api-react-modular-axios-unwrap-response-data/User.ts new file mode 100644 index 0000000..819ff17 --- /dev/null +++ b/__generated__/api-react-modular-axios-unwrap-response-data/User.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeUser } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class User extends HttpClient { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser = (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser = ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }); + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser = (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser = (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); +} diff --git a/__generated__/api-react-modular-axios-unwrap-response-data/data-contracts.ts b/__generated__/api-react-modular-axios-unwrap-response-data/data-contracts.ts new file mode 100644 index 0000000..9fe9b41 --- /dev/null +++ b/__generated__/api-react-modular-axios-unwrap-response-data/data-contracts.ts @@ -0,0 +1,71 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} diff --git a/__generated__/api-react-modular-axios-unwrap-response-data/http-client.ts b/__generated__/api-react-modular-axios-unwrap-response-data/http-client.ts new file mode 100644 index 0000000..71b3af8 --- /dev/null +++ b/__generated__/api-react-modular-axios-unwrap-response-data/http-client.ts @@ -0,0 +1,146 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults, ResponseType } from "axios"; +import axios from "axios"; + +export type QueryParamsType = Record; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseType; + /** request body */ + body?: unknown; +} + +export type RequestParams = Omit; + +export interface ApiConfig extends Omit { + securityWorker?: ( + securityData: SecurityDataType | null, + ) => Promise | AxiosRequestConfig | void; + secure?: boolean; + format?: ResponseType; +} + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public instance: AxiosInstance; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private secure?: boolean; + private format?: ResponseType; + + constructor({ securityWorker, secure, format, ...axiosConfig }: ApiConfig = {}) { + this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || "https://petstore.swagger.io/v2" }); + this.secure = secure; + this.format = format; + this.securityWorker = securityWorker; + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method); + + return { + ...this.instance.defaults, + ...params1, + ...(params2 || {}), + headers: { + ...((method && this.instance.defaults.headers[method.toLowerCase() as keyof HeadersDefaults]) || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === "object" && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; + } + } + + protected createFormData(input: Record): FormData { + if (input instanceof FormData) { + return input; + } + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + const propertyContent: any[] = property instanceof Array ? property : [property]; + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem)); + } + + return formData; + }, new FormData()); + } + + public request = async ({ + secure, + path, + type, + query, + format, + body, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const responseFormat = format || this.format || undefined; + + if (type === ContentType.FormData && body && body !== null && typeof body === "object") { + body = this.createFormData(body as Record); + } + + if (type === ContentType.Text && body && body !== null && typeof body !== "string") { + body = JSON.stringify(body); + } + + return this.instance + .request({ + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type ? { "Content-Type": type } : {}), + }, + params: query, + responseType: responseFormat, + data: body, + url: path, + }) + .then((response) => response.data); + }; +} diff --git a/__generated__/api-react-modular-fetch-unwrap-response-data/Pet.ts b/__generated__/api-react-modular-fetch-unwrap-response-data/Pet.ts new file mode 100644 index 0000000..dda3c0b --- /dev/null +++ b/__generated__/api-react-modular-fetch-unwrap-response-data/Pet.ts @@ -0,0 +1,189 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeApiResponse, TypePet } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Pet extends HttpClient { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile = ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus = ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags = ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm = ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }); + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }); +} diff --git a/__generated__/api-react-modular-fetch-unwrap-response-data/Queries.ts b/__generated__/api-react-modular-fetch-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..5677bbf --- /dev/null +++ b/__generated__/api-react-modular-fetch-unwrap-response-data/Queries.ts @@ -0,0 +1,821 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { + MutationOptions, + QueryKey, + useMutation, + useQuery, + useQueryClient, + UseQueryOptions, +} from "@tanstack/react-query"; + +import { RequestParams } from "./http-client"; + +import { Pet } from "./Pet"; + +import { Store } from "./Store"; + +import { User } from "./User"; + +import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = Omit, "queryKey" | "queryFn">; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Pet) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.uploadFile(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.addPet(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.updatePet(body, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByStatus(query, requestParams); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByTags(query, requestParams); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.getPetById(petId, requestParams); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: number; requestParams?: RequestParams }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.updatePetWithForm(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.deletePet(petId, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + number, + { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + RequestParams, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", TypePet, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + { + /** Tags to filter by */ + tags: string[]; + }, + RequestParams, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "get", "/pet/${petId}", number, RequestParams], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + number, + { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + RequestParams, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "delete", "/pet/${petId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Store) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.placeOrder(body, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.getOrderById(orderId, requestParams); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { orderId: number; requestParams?: RequestParams }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.deleteOrder(orderId, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.getInventory(requestParams); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "post", "/store/order", TypeOrder, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", number, RequestParams], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "delete", "/store/order/${orderId}", number, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", RequestParams], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: User) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithArrayInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithListInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: string; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.getUserByName(username, requestParams); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { username: string; requestParams?: RequestParams }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.updateUser(username, body, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.deleteUser(username, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.loginUser(query, requestParams); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.logoutUser(requestParams); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUser(body, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithArray", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithList", TypeUser[], RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/${username}", string, RequestParams], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "put", "/user/${username}", string, TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "delete", "/user/${username}", string, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + RequestParams, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", TypeUser, RequestParams], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (modules: { pet: Pet; store: Store; user: User }) => { + const { pet, store, user } = modules; + + return { + pet: createPetApiQuery(pet), + store: createStoreApiQuery(store), + user: createUserApiQuery(user), + }; +}; diff --git a/__generated__/api-react-modular-fetch-unwrap-response-data/Store.ts b/__generated__/api-react-modular-fetch-unwrap-response-data/Store.ts new file mode 100644 index 0000000..8ddceb1 --- /dev/null +++ b/__generated__/api-react-modular-fetch-unwrap-response-data/Store.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeOrder } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Store extends HttpClient { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder = (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }); + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory = (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }); +} diff --git a/__generated__/api-react-modular-fetch-unwrap-response-data/User.ts b/__generated__/api-react-modular-fetch-unwrap-response-data/User.ts new file mode 100644 index 0000000..819ff17 --- /dev/null +++ b/__generated__/api-react-modular-fetch-unwrap-response-data/User.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeUser } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class User extends HttpClient { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser = (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser = ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }); + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser = (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser = (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); +} diff --git a/__generated__/api-react-modular-fetch-unwrap-response-data/data-contracts.ts b/__generated__/api-react-modular-fetch-unwrap-response-data/data-contracts.ts new file mode 100644 index 0000000..9fe9b41 --- /dev/null +++ b/__generated__/api-react-modular-fetch-unwrap-response-data/data-contracts.ts @@ -0,0 +1,71 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} diff --git a/__generated__/api-react-modular-fetch-unwrap-response-data/http-client.ts b/__generated__/api-react-modular-fetch-unwrap-response-data/http-client.ts new file mode 100644 index 0000000..94b6bc3 --- /dev/null +++ b/__generated__/api-react-modular-fetch-unwrap-response-data/http-client.ts @@ -0,0 +1,220 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data.data; + }); + }; +} diff --git a/__generated__/api-react-modular-fetch/Pet.ts b/__generated__/api-react-modular-fetch/Pet.ts new file mode 100644 index 0000000..dda3c0b --- /dev/null +++ b/__generated__/api-react-modular-fetch/Pet.ts @@ -0,0 +1,189 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeApiResponse, TypePet } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Pet extends HttpClient { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile = ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus = ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags = ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm = ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }); + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }); +} diff --git a/__generated__/api-react-modular-fetch/Queries.ts b/__generated__/api-react-modular-fetch/Queries.ts new file mode 100644 index 0000000..06ea47c --- /dev/null +++ b/__generated__/api-react-modular-fetch/Queries.ts @@ -0,0 +1,821 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { + MutationOptions, + QueryKey, + useMutation, + useQuery, + useQueryClient, + UseQueryOptions, +} from "@tanstack/react-query"; + +import { HttpResponse, RequestParams } from "./http-client"; + +import { Pet } from "./Pet"; + +import { Store } from "./Store"; + +import { User } from "./User"; + +import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = Omit, E>, "queryKey" | "queryFn">; +// @ts-ignore +type CustomMutationOptions = Omit, E, V>, "mutationFn">; + +export const createPetApiQuery = (api: Pet) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.uploadFile(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.addPet(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.updatePet(body, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByStatus(query, requestParams); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByTags(query, requestParams); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: { + /** Tags to filter by */ + tags: string[]; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.getPetById(petId, requestParams); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: number; requestParams?: RequestParams }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.updatePetWithForm(petId, data, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.deletePet(petId, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + number, + { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", TypePet, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", TypePet, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + { + /** Tags to filter by */ + tags: string[]; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "get", "/pet/${petId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + number, + { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "delete", "/pet/${petId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Store) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.placeOrder(body, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: number; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.getOrderById(orderId, requestParams); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { orderId: number; requestParams?: RequestParams }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.deleteOrder(orderId, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.getInventory(requestParams); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "post", "/store/order", TypeOrder, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "delete", "/store/order/${orderId}", number, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", RequestParams], + updater: (data: HttpResponse, any>) => HttpResponse, any>, + ): Promise, any>>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: User) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithArrayInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithListInput(body, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: string; requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.getUserByName(username, requestParams); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { username: string; requestParams?: RequestParams }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.updateUser(username, body, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.deleteUser(username, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.loginUser(query, requestParams); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + requestParams?: RequestParams; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: RequestParams }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.logoutUser(requestParams); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: RequestParams }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUser(body, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithArray", TypeUser[], RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user/createWithList", TypeUser[], RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/${username}", string, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "put", "/user/${username}", string, TypeUser, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "delete", "/user/${username}", string, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + RequestParams, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", TypeUser, RequestParams], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (modules: { pet: Pet; store: Store; user: User }) => { + const { pet, store, user } = modules; + + return { + pet: createPetApiQuery(pet), + store: createStoreApiQuery(store), + user: createUserApiQuery(user), + }; +}; diff --git a/__generated__/api-react-modular-fetch/Store.ts b/__generated__/api-react-modular-fetch/Store.ts new file mode 100644 index 0000000..8ddceb1 --- /dev/null +++ b/__generated__/api-react-modular-fetch/Store.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeOrder } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Store extends HttpClient { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder = (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }); + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory = (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }); +} diff --git a/__generated__/api-react-modular-fetch/User.ts b/__generated__/api-react-modular-fetch/User.ts new file mode 100644 index 0000000..819ff17 --- /dev/null +++ b/__generated__/api-react-modular-fetch/User.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeUser } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class User extends HttpClient { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser = (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser = ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }); + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser = (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser = (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); +} diff --git a/__generated__/api-react-modular-fetch/data-contracts.ts b/__generated__/api-react-modular-fetch/data-contracts.ts new file mode 100644 index 0000000..9fe9b41 --- /dev/null +++ b/__generated__/api-react-modular-fetch/data-contracts.ts @@ -0,0 +1,71 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} diff --git a/__generated__/api-react-modular-fetch/http-client.ts b/__generated__/api-react-modular-fetch/http-client.ts new file mode 100644 index 0000000..3183881 --- /dev/null +++ b/__generated__/api-react-modular-fetch/http-client.ts @@ -0,0 +1,220 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} diff --git a/__generated__/api-react-modular/Queries.ts b/__generated__/api-react-modular/Queries.ts index a5649b2..2707495 100644 --- a/__generated__/api-react-modular/Queries.ts +++ b/__generated__/api-react-modular/Queries.ts @@ -33,8 +33,9 @@ import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts" 1.0.6 This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. */ - -type CustomQueryOptions = Omit>, "queryKey" | "queryFn">; +// @ts-ignore +type CustomQueryOptions = Omit, E>, "queryKey" | "queryFn">; +// @ts-ignore type CustomMutationOptions = Omit, E, V>, "mutationFn">; export const createPetApiQuery = (api: Pet) => { diff --git a/__generated__/api-vue-default-axios-unwrap-response-data/Queries.ts b/__generated__/api-vue-default-axios-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..3cbd37d --- /dev/null +++ b/__generated__/api-vue-default-axios-unwrap-response-data/Queries.ts @@ -0,0 +1,881 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { MutationOptions, QueryKey, useMutation, useQuery, useQueryClient, UseQueryOptions } from "@tanstack/vue-query"; +import { MaybeRef, toValue, UnwrapRef } from "vue"; +import { Api, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./api"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = MaybeRef>, "queryKey" | "queryFn">>; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Api) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.uploadFile(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.addPet(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.updatePet(body!, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByStatus(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByTags(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.getPetById(toValue(petId)!, toValue(requestParams)); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: MaybeRef; requestParams?: MaybeRef }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.updatePetWithForm(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.pet.deletePet(petId!, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + MaybeRef, + MaybeRef<{ + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }>, + MaybeRef, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + MaybeRef, + MaybeRef<{ + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }>, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "delete", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Api) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.store.placeOrder(body!, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.store.getOrderById(toValue(orderId)!, toValue(requestParams)); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { + orderId: MaybeRef; + requestParams?: MaybeRef; + }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.store.deleteOrder(orderId!, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.store.getInventory(toValue(requestParams)); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "post", + "/store/order", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "get", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "delete", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", MaybeRef], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: Api) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithArrayInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithListInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.user.getUserByName(toValue(username)!, toValue(requestParams)); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { + username: MaybeRef; + requestParams?: MaybeRef; + }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.user.updateUser(username!, body!, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.user.deleteUser(username!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.user.loginUser(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.user.logoutUser(toValue(requestParams)); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUser(body!, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithArray", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithList", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "put", + "/user/${username}", + MaybeRef, + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "delete", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>, + MaybeRef, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (api: Api) => { + return { + pet: createPetApiQuery(api), + store: createStoreApiQuery(api), + user: createUserApiQuery(api), + }; +}; diff --git a/__generated__/api-vue-default-axios-unwrap-response-data/api.ts b/__generated__/api-vue-default-axios-unwrap-response-data/api.ts new file mode 100644 index 0000000..24c66bf --- /dev/null +++ b/__generated__/api-vue-default-axios-unwrap-response-data/api.ts @@ -0,0 +1,611 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} + +import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults, ResponseType } from "axios"; +import axios from "axios"; + +export type QueryParamsType = Record; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseType; + /** request body */ + body?: unknown; +} + +export type RequestParams = Omit; + +export interface ApiConfig extends Omit { + securityWorker?: ( + securityData: SecurityDataType | null, + ) => Promise | AxiosRequestConfig | void; + secure?: boolean; + format?: ResponseType; +} + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public instance: AxiosInstance; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private secure?: boolean; + private format?: ResponseType; + + constructor({ securityWorker, secure, format, ...axiosConfig }: ApiConfig = {}) { + this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || "https://petstore.swagger.io/v2" }); + this.secure = secure; + this.format = format; + this.securityWorker = securityWorker; + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method); + + return { + ...this.instance.defaults, + ...params1, + ...(params2 || {}), + headers: { + ...((method && this.instance.defaults.headers[method.toLowerCase() as keyof HeadersDefaults]) || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === "object" && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; + } + } + + protected createFormData(input: Record): FormData { + if (input instanceof FormData) { + return input; + } + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + const propertyContent: any[] = property instanceof Array ? property : [property]; + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem)); + } + + return formData; + }, new FormData()); + } + + public request = async ({ + secure, + path, + type, + query, + format, + body, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const responseFormat = format || this.format || undefined; + + if (type === ContentType.FormData && body && body !== null && typeof body === "object") { + body = this.createFormData(body as Record); + } + + if (type === ContentType.Text && body && body !== null && typeof body !== "string") { + body = JSON.stringify(body); + } + + return this.instance + .request({ + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type ? { "Content-Type": type } : {}), + }, + params: query, + responseType: responseFormat, + data: body, + url: path, + }) + .then((response) => response.data); + }; +} + +/** + * @title Swagger Petstore + * @version 1.0.6 + * @license Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) + * @termsOfService http://swagger.io/terms/ + * @baseUrl https://petstore.swagger.io/v2 + * @externalDocs http://swagger.io + * @contact + * + * This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + */ +export class Api extends HttpClient { + pet = { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile: ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus: ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags: ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm: ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }), + }; + store = { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder: (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }), + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory: (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + user = { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser: (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser: ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser: (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser: (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + }; +} diff --git a/__generated__/api-vue-default-fetch-unwrap-response-data/Queries.ts b/__generated__/api-vue-default-fetch-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..c427d69 --- /dev/null +++ b/__generated__/api-vue-default-fetch-unwrap-response-data/Queries.ts @@ -0,0 +1,882 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { MutationOptions, QueryKey, useMutation, useQuery, useQueryClient, UseQueryOptions } from "@tanstack/vue-query"; +import { MaybeRef, toValue, UnwrapRef } from "vue"; + +import { Api, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./api"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = MaybeRef>, "queryKey" | "queryFn">>; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Api) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.uploadFile(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.addPet(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.updatePet(body!, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByStatus(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByTags(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.getPetById(toValue(petId)!, toValue(requestParams)); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: MaybeRef; requestParams?: MaybeRef }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.updatePetWithForm(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.pet.deletePet(petId!, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + MaybeRef, + MaybeRef<{ + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }>, + MaybeRef, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + MaybeRef, + MaybeRef<{ + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }>, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "delete", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Api) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.store.placeOrder(body!, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.store.getOrderById(toValue(orderId)!, toValue(requestParams)); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { + orderId: MaybeRef; + requestParams?: MaybeRef; + }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.store.deleteOrder(orderId!, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.store.getInventory(toValue(requestParams)); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "post", + "/store/order", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "get", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "delete", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", MaybeRef], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: Api) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithArrayInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithListInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.user.getUserByName(toValue(username)!, toValue(requestParams)); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { + username: MaybeRef; + requestParams?: MaybeRef; + }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.user.updateUser(username!, body!, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.user.deleteUser(username!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.user.loginUser(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.user.logoutUser(toValue(requestParams)); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUser(body!, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithArray", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithList", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "put", + "/user/${username}", + MaybeRef, + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "delete", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>, + MaybeRef, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (api: Api) => { + return { + pet: createPetApiQuery(api), + store: createStoreApiQuery(api), + user: createUserApiQuery(api), + }; +}; diff --git a/__generated__/api-vue-default-fetch-unwrap-response-data/api.ts b/__generated__/api-vue-default-fetch-unwrap-response-data/api.ts new file mode 100644 index 0000000..242c076 --- /dev/null +++ b/__generated__/api-vue-default-fetch-unwrap-response-data/api.ts @@ -0,0 +1,685 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data.data; + }); + }; +} + +/** + * @title Swagger Petstore + * @version 1.0.6 + * @license Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) + * @termsOfService http://swagger.io/terms/ + * @baseUrl https://petstore.swagger.io/v2 + * @externalDocs http://swagger.io + * @contact + * + * This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + */ +export class Api extends HttpClient { + pet = { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile: ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus: ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags: ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm: ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }), + }; + store = { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder: (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }), + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory: (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + user = { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser: (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser: ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser: (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser: (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + }; +} diff --git a/__generated__/api-vue-default-fetch/Queries.ts b/__generated__/api-vue-default-fetch/Queries.ts new file mode 100644 index 0000000..219423d --- /dev/null +++ b/__generated__/api-vue-default-fetch/Queries.ts @@ -0,0 +1,884 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { MutationOptions, QueryKey, useMutation, useQuery, useQueryClient, UseQueryOptions } from "@tanstack/vue-query"; +import { MaybeRef, toValue, UnwrapRef } from "vue"; + +import { Api, HttpResponse, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./api"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ +// @ts-ignore +type CustomQueryOptions = MaybeRef< + Omit, E>>, "queryKey" | "queryFn"> +>; +// @ts-ignore +type CustomMutationOptions = Omit, E, V>, "mutationFn">; + +export const createPetApiQuery = (api: Api) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.uploadFile(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.addPet(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.pet.updatePet(body!, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByStatus(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.findPetsByTags(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.pet.getPetById(toValue(petId)!, toValue(requestParams)); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: MaybeRef; requestParams?: MaybeRef }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.pet.updatePetWithForm(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.pet.deletePet(petId!, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + MaybeRef, + MaybeRef<{ + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", MaybeRef, MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", MaybeRef, MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + MaybeRef, + MaybeRef<{ + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "delete", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Api) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.store.placeOrder(body!, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.store.getOrderById(toValue(orderId)!, toValue(requestParams)); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { + orderId: MaybeRef; + requestParams?: MaybeRef; + }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.store.deleteOrder(orderId!, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.store.getInventory(toValue(requestParams)); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "post", + "/store/order", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "get", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "delete", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", MaybeRef], + updater: (data: HttpResponse, any>) => HttpResponse, any>, + ): Promise, any>>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: Api) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithArrayInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUsersWithListInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.user.getUserByName(toValue(username)!, toValue(requestParams)); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { + username: MaybeRef; + requestParams?: MaybeRef; + }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.user.updateUser(username!, body!, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.user.deleteUser(username!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.user.loginUser(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.user.logoutUser(toValue(requestParams)); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.user.createUser(body!, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithArray", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithList", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "put", + "/user/${username}", + MaybeRef, + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "delete", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", MaybeRef, MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (api: Api) => { + return { + pet: createPetApiQuery(api), + store: createStoreApiQuery(api), + user: createUserApiQuery(api), + }; +}; diff --git a/__generated__/api-vue-default-fetch/api.ts b/__generated__/api-vue-default-fetch/api.ts new file mode 100644 index 0000000..30b6dc1 --- /dev/null +++ b/__generated__/api-vue-default-fetch/api.ts @@ -0,0 +1,685 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} + +/** + * @title Swagger Petstore + * @version 1.0.6 + * @license Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) + * @termsOfService http://swagger.io/terms/ + * @baseUrl https://petstore.swagger.io/v2 + * @externalDocs http://swagger.io + * @contact + * + * This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + */ +export class Api extends HttpClient { + pet = { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile: ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet: (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus: ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags: ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm: ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet: (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }), + }; + store = { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder: (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder: (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }), + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory: (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + user = { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput: (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser: (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser: (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser: ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser: (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }), + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser: (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }), + }; +} diff --git a/__generated__/api-vue-default/Queries.ts b/__generated__/api-vue-default/Queries.ts index d898e9f..1a87883 100644 --- a/__generated__/api-vue-default/Queries.ts +++ b/__generated__/api-vue-default/Queries.ts @@ -20,7 +20,9 @@ import { Api, RequestParams, TypeApiResponse, TypeOrder, TypePet, TypeUser } fro This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. */ // @ts-ignore -type CustomQueryOptions = MaybeRef>>, "queryKey" | "queryFn">>; +type CustomQueryOptions = MaybeRef< + Omit, E>>, "queryKey" | "queryFn"> +>; // @ts-ignore type CustomMutationOptions = Omit, E, V>, "mutationFn">; diff --git a/__generated__/api-vue-modular-axios-unwrap-response-data/Pet.ts b/__generated__/api-vue-modular-axios-unwrap-response-data/Pet.ts new file mode 100644 index 0000000..dda3c0b --- /dev/null +++ b/__generated__/api-vue-modular-axios-unwrap-response-data/Pet.ts @@ -0,0 +1,189 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeApiResponse, TypePet } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Pet extends HttpClient { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile = ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus = ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags = ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm = ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }); + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }); +} diff --git a/__generated__/api-vue-modular-axios-unwrap-response-data/Queries.ts b/__generated__/api-vue-modular-axios-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..560e1e3 --- /dev/null +++ b/__generated__/api-vue-modular-axios-unwrap-response-data/Queries.ts @@ -0,0 +1,892 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { MutationOptions, QueryKey, useMutation, useQuery, useQueryClient, UseQueryOptions } from "@tanstack/vue-query"; +import { MaybeRef, toValue, UnwrapRef } from "vue"; +import { RequestParams } from "./http-client"; + +import { Pet } from "./Pet"; + +import { Store } from "./Store"; + +import { User } from "./User"; + +import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ + +// @ts-ignore +type CustomQueryOptions = MaybeRef>, "queryKey" | "queryFn">>; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Pet) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.uploadFile(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.addPet(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.updatePet(body!, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByStatus(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByTags(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.getPetById(toValue(petId)!, toValue(requestParams)); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: MaybeRef; requestParams?: MaybeRef }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.updatePetWithForm(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.deletePet(petId!, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + MaybeRef, + MaybeRef<{ + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }>, + MaybeRef, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + MaybeRef, + MaybeRef<{ + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }>, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "delete", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Store) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.placeOrder(body!, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.getOrderById(toValue(orderId)!, toValue(requestParams)); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { + orderId: MaybeRef; + requestParams?: MaybeRef; + }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.deleteOrder(orderId!, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.getInventory(toValue(requestParams)); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "post", + "/store/order", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "get", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "delete", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", MaybeRef], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: User) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithArrayInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithListInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.getUserByName(toValue(username)!, toValue(requestParams)); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { + username: MaybeRef; + requestParams?: MaybeRef; + }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.updateUser(username!, body!, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.deleteUser(username!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.loginUser(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.logoutUser(toValue(requestParams)); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUser(body!, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithArray", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithList", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "put", + "/user/${username}", + MaybeRef, + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "delete", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>, + MaybeRef, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (modules: { pet: Pet; store: Store; user: User }) => { + const { pet, store, user } = modules; + + return { + pet: createPetApiQuery(pet), + store: createStoreApiQuery(store), + user: createUserApiQuery(user), + }; +}; diff --git a/__generated__/api-vue-modular-axios-unwrap-response-data/Store.ts b/__generated__/api-vue-modular-axios-unwrap-response-data/Store.ts new file mode 100644 index 0000000..8ddceb1 --- /dev/null +++ b/__generated__/api-vue-modular-axios-unwrap-response-data/Store.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeOrder } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Store extends HttpClient { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder = (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }); + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory = (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }); +} diff --git a/__generated__/api-vue-modular-axios-unwrap-response-data/User.ts b/__generated__/api-vue-modular-axios-unwrap-response-data/User.ts new file mode 100644 index 0000000..819ff17 --- /dev/null +++ b/__generated__/api-vue-modular-axios-unwrap-response-data/User.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeUser } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class User extends HttpClient { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser = (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser = ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }); + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser = (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser = (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); +} diff --git a/__generated__/api-vue-modular-axios-unwrap-response-data/data-contracts.ts b/__generated__/api-vue-modular-axios-unwrap-response-data/data-contracts.ts new file mode 100644 index 0000000..9fe9b41 --- /dev/null +++ b/__generated__/api-vue-modular-axios-unwrap-response-data/data-contracts.ts @@ -0,0 +1,71 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} diff --git a/__generated__/api-vue-modular-axios-unwrap-response-data/http-client.ts b/__generated__/api-vue-modular-axios-unwrap-response-data/http-client.ts new file mode 100644 index 0000000..71b3af8 --- /dev/null +++ b/__generated__/api-vue-modular-axios-unwrap-response-data/http-client.ts @@ -0,0 +1,146 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults, ResponseType } from "axios"; +import axios from "axios"; + +export type QueryParamsType = Record; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseType; + /** request body */ + body?: unknown; +} + +export type RequestParams = Omit; + +export interface ApiConfig extends Omit { + securityWorker?: ( + securityData: SecurityDataType | null, + ) => Promise | AxiosRequestConfig | void; + secure?: boolean; + format?: ResponseType; +} + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public instance: AxiosInstance; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private secure?: boolean; + private format?: ResponseType; + + constructor({ securityWorker, secure, format, ...axiosConfig }: ApiConfig = {}) { + this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || "https://petstore.swagger.io/v2" }); + this.secure = secure; + this.format = format; + this.securityWorker = securityWorker; + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method); + + return { + ...this.instance.defaults, + ...params1, + ...(params2 || {}), + headers: { + ...((method && this.instance.defaults.headers[method.toLowerCase() as keyof HeadersDefaults]) || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === "object" && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; + } + } + + protected createFormData(input: Record): FormData { + if (input instanceof FormData) { + return input; + } + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + const propertyContent: any[] = property instanceof Array ? property : [property]; + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem)); + } + + return formData; + }, new FormData()); + } + + public request = async ({ + secure, + path, + type, + query, + format, + body, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const responseFormat = format || this.format || undefined; + + if (type === ContentType.FormData && body && body !== null && typeof body === "object") { + body = this.createFormData(body as Record); + } + + if (type === ContentType.Text && body && body !== null && typeof body !== "string") { + body = JSON.stringify(body); + } + + return this.instance + .request({ + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type ? { "Content-Type": type } : {}), + }, + params: query, + responseType: responseFormat, + data: body, + url: path, + }) + .then((response) => response.data); + }; +} diff --git a/__generated__/api-vue-modular-fetch-unwrap-response-data/Pet.ts b/__generated__/api-vue-modular-fetch-unwrap-response-data/Pet.ts new file mode 100644 index 0000000..dda3c0b --- /dev/null +++ b/__generated__/api-vue-modular-fetch-unwrap-response-data/Pet.ts @@ -0,0 +1,189 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeApiResponse, TypePet } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Pet extends HttpClient { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile = ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus = ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags = ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm = ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }); + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }); +} diff --git a/__generated__/api-vue-modular-fetch-unwrap-response-data/Queries.ts b/__generated__/api-vue-modular-fetch-unwrap-response-data/Queries.ts new file mode 100644 index 0000000..1326f89 --- /dev/null +++ b/__generated__/api-vue-modular-fetch-unwrap-response-data/Queries.ts @@ -0,0 +1,893 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { MutationOptions, QueryKey, useMutation, useQuery, useQueryClient, UseQueryOptions } from "@tanstack/vue-query"; +import { MaybeRef, toValue, UnwrapRef } from "vue"; + +import { RequestParams } from "./http-client"; + +import { Pet } from "./Pet"; + +import { Store } from "./Store"; + +import { User } from "./User"; + +import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ + +// @ts-ignore +type CustomQueryOptions = MaybeRef>, "queryKey" | "queryFn">>; +// @ts-ignore +type CustomMutationOptions = Omit, "mutationFn">; + +export const createPetApiQuery = (api: Pet) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.uploadFile(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.addPet(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.updatePet(body!, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByStatus(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByTags(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.getPetById(toValue(petId)!, toValue(requestParams)); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: MaybeRef; requestParams?: MaybeRef }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.updatePetWithForm(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.deletePet(petId!, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + MaybeRef, + MaybeRef<{ + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }>, + MaybeRef, + ], + updater: (data: TypeApiResponse) => TypeApiResponse, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>, + MaybeRef, + ], + updater: (data: TypePet[]) => TypePet[], + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypePet) => TypePet, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + MaybeRef, + MaybeRef<{ + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }>, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "delete", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Store) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.placeOrder(body!, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.getOrderById(toValue(orderId)!, toValue(requestParams)); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { + orderId: MaybeRef; + requestParams?: MaybeRef; + }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.deleteOrder(orderId!, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.getInventory(toValue(requestParams)); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "post", + "/store/order", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "get", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeOrder) => TypeOrder, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "delete", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", MaybeRef], + updater: (data: Record) => Record, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: User) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithArrayInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithListInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.getUserByName(toValue(username)!, toValue(requestParams)); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { + username: MaybeRef; + requestParams?: MaybeRef; + }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.updateUser(username!, body!, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.deleteUser(username!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.loginUser(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.logoutUser(toValue(requestParams)); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUser(body!, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithArray", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithList", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: TypeUser) => TypeUser, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "put", + "/user/${username}", + MaybeRef, + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "delete", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>, + MaybeRef, + ], + updater: (data: string) => string, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", MaybeRef, MaybeRef], + updater: (data: any) => any, + ): Promise; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (modules: { pet: Pet; store: Store; user: User }) => { + const { pet, store, user } = modules; + + return { + pet: createPetApiQuery(pet), + store: createStoreApiQuery(store), + user: createUserApiQuery(user), + }; +}; diff --git a/__generated__/api-vue-modular-fetch-unwrap-response-data/Store.ts b/__generated__/api-vue-modular-fetch-unwrap-response-data/Store.ts new file mode 100644 index 0000000..8ddceb1 --- /dev/null +++ b/__generated__/api-vue-modular-fetch-unwrap-response-data/Store.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeOrder } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Store extends HttpClient { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder = (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }); + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory = (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }); +} diff --git a/__generated__/api-vue-modular-fetch-unwrap-response-data/User.ts b/__generated__/api-vue-modular-fetch-unwrap-response-data/User.ts new file mode 100644 index 0000000..819ff17 --- /dev/null +++ b/__generated__/api-vue-modular-fetch-unwrap-response-data/User.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeUser } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class User extends HttpClient { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser = (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser = ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }); + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser = (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser = (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); +} diff --git a/__generated__/api-vue-modular-fetch-unwrap-response-data/data-contracts.ts b/__generated__/api-vue-modular-fetch-unwrap-response-data/data-contracts.ts new file mode 100644 index 0000000..9fe9b41 --- /dev/null +++ b/__generated__/api-vue-modular-fetch-unwrap-response-data/data-contracts.ts @@ -0,0 +1,71 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} diff --git a/__generated__/api-vue-modular-fetch-unwrap-response-data/http-client.ts b/__generated__/api-vue-modular-fetch-unwrap-response-data/http-client.ts new file mode 100644 index 0000000..94b6bc3 --- /dev/null +++ b/__generated__/api-vue-modular-fetch-unwrap-response-data/http-client.ts @@ -0,0 +1,220 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data.data; + }); + }; +} diff --git a/__generated__/api-vue-modular-fetch/Pet.ts b/__generated__/api-vue-modular-fetch/Pet.ts new file mode 100644 index 0000000..dda3c0b --- /dev/null +++ b/__generated__/api-vue-modular-fetch/Pet.ts @@ -0,0 +1,189 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeApiResponse, TypePet } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Pet extends HttpClient { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + uploadFile = ( + petId: number, + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}/uploadImage`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + addPet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "POST", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + updatePet = (body: TypePet, params: RequestParams = {}) => + this.request({ + path: `/pet`, + method: "PUT", + body: body, + secure: true, + type: ContentType.Json, + ...params, + }); + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + findPetsByStatus = ( + query: { + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByStatus`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + findPetsByTags = ( + query: { + /** Tags to filter by */ + tags: string[]; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/findByTags`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }); + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + getPetById = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "GET", + secure: true, + format: "json", + ...params, + }); + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + updatePetWithForm = ( + petId: number, + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/pet/${petId}`, + method: "POST", + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }); + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + deletePet = (petId: number, params: RequestParams = {}) => + this.request({ + path: `/pet/${petId}`, + method: "DELETE", + secure: true, + ...params, + }); +} diff --git a/__generated__/api-vue-modular-fetch/Queries.ts b/__generated__/api-vue-modular-fetch/Queries.ts new file mode 100644 index 0000000..c02fc7b --- /dev/null +++ b/__generated__/api-vue-modular-fetch/Queries.ts @@ -0,0 +1,895 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { MutationOptions, QueryKey, useMutation, useQuery, useQueryClient, UseQueryOptions } from "@tanstack/vue-query"; +import { MaybeRef, toValue, UnwrapRef } from "vue"; + +import { HttpResponse, RequestParams } from "./http-client"; + +import { Pet } from "./Pet"; + +import { Store } from "./Store"; + +import { User } from "./User"; + +import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts"; + +/** + Swagger Petstore + 1.0.6 + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +*/ + +// @ts-ignore +type CustomQueryOptions = MaybeRef< + Omit, E>>, "queryKey" | "queryFn"> +>; +// @ts-ignore +type CustomMutationOptions = Omit, E, V>, "mutationFn">; + +export const createPetApiQuery = (api: Pet) => { + /** + * No description + * + * @tags pet + * @name UploadFile + * @summary uploads an image + * @request POST:/pet/{petId}/uploadImage + * @secure + */ + function useUploadFileMutation( + mutationOptions: CustomMutationOptions< + TypeApiResponse, + any, + { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.uploadFile(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name AddPet + * @summary Add a new pet to the store + * @request POST:/pet + * @secure + */ + function useAddPetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.addPet(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name UpdatePet + * @summary Update an existing pet + * @request PUT:/pet + * @secure + */ + function useUpdatePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypePet; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.updatePet(body!, requestParams); + }, + }); + } + + /** + * @description Multiple status values can be provided with comma separated strings + * + * @tags pet + * @name FindPetsByStatus + * @summary Finds Pets by status + * @request GET:/pet/findByStatus + * @secure + */ + function useFindPetsByStatus( + apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByStatusQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByStatus(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByStatusQueryKey(apiParams: { + query: MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByStatus", query, requestParams] as const; + } + + /** + * @description Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @tags pet + * @name FindPetsByTags + * @summary Finds Pets by tags + * @request GET:/pet/findByTags + * @deprecated + * @secure + */ + function useFindPetsByTags( + apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createFindPetsByTagsQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.findPetsByTags(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createFindPetsByTagsQueryKey(apiParams: { + query: MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/findByTags", query, requestParams] as const; + } + + /** + * @description Returns a single pet + * + * @tags pet + * @name GetPetById + * @summary Find pet by ID + * @request GET:/pet/{petId} + * @secure + */ + function useGetPetById( + apiParams: { petId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { petId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetPetByIdQueryKey({ petId, requestParams }) as QueryKey, + queryFn: () => { + return api.getPetById(toValue(petId)!, toValue(requestParams)); + }, + }); + } + function createGetPetByIdQueryKey(apiParams: { petId: MaybeRef; requestParams?: MaybeRef }) { + const { petId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "pet", "get", "/pet/${petId}", petId, requestParams] as const; + } + + /** + * No description + * + * @tags pet + * @name UpdatePetWithForm + * @summary Updates a pet in the store with form data + * @request POST:/pet/{petId} + * @secure + */ + function useUpdatePetWithFormMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { + petId: number; + data: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + requestParams?: RequestParams; + }) => { + const { petId, data, requestParams = {} } = apiParams; + + return api.updatePetWithForm(petId!, data!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags pet + * @name DeletePet + * @summary Deletes a pet + * @request DELETE:/pet/{petId} + * @secure + */ + function useDeletePetMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { petId: number; requestParams?: RequestParams }) => { + const { petId, requestParams = {} } = apiParams; + + return api.deletePet(petId!, requestParams); + }, + }); + } + + return { + useQueryUpdate: usePetApiQueryUpdate, + useUploadFileMutation, + useAddPetMutation, + useUpdatePetMutation, + useFindPetsByStatus, + createFindPetsByStatusQueryKey, + useFindPetsByTags, + createFindPetsByTagsQueryKey, + useGetPetById, + createGetPetByIdQueryKey, + useUpdatePetWithFormMutation, + useDeletePetMutation, + }; +}; + +export function usePetApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}/uploadImage", + MaybeRef, + MaybeRef<{ + /** Additional data to pass to server */ + additionalMetadata?: string; + /** file to upload */ + file?: File; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "post", "/pet", MaybeRef, MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "pet", "put", "/pet", MaybeRef, MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByStatus", + MaybeRef<{ + /** Status values that need to be considered for filter */ + status: ("available" | "pending" | "sold")[]; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/findByTags", + MaybeRef<{ + /** Tags to filter by */ + tags: string[]; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "get", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "post", + "/pet/${petId}", + MaybeRef, + MaybeRef<{ + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "pet", + "delete", + "/pet/${petId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createStoreApiQuery = (api: Store) => { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + function usePlaceOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeOrder; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.placeOrder(body!, requestParams); + }, + }); + } + + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + function useGetOrderById( + apiParams: { orderId: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { orderId, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetOrderByIdQueryKey({ orderId, requestParams }) as QueryKey, + queryFn: () => { + return api.getOrderById(toValue(orderId)!, toValue(requestParams)); + }, + }); + } + function createGetOrderByIdQueryKey(apiParams: { + orderId: MaybeRef; + requestParams?: MaybeRef; + }) { + const { orderId, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/order/${orderId}", orderId, requestParams] as const; + } + + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + function useDeleteOrderMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { orderId: number; requestParams?: RequestParams }) => { + const { orderId, requestParams = {} } = apiParams; + + return api.deleteOrder(orderId!, requestParams); + }, + }); + } + + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + function useGetInventory( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions, any> = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetInventoryQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.getInventory(toValue(requestParams)); + }, + }); + } + function createGetInventoryQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "store", "get", "/store/inventory", requestParams] as const; + } + + return { + useQueryUpdate: useStoreApiQueryUpdate, + usePlaceOrderMutation, + useGetOrderById, + createGetOrderByIdQueryKey, + useDeleteOrderMutation, + useGetInventory, + createGetInventoryQueryKey, + }; +}; + +export function useStoreApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "post", + "/store/order", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "get", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "store", + "delete", + "/store/order/${orderId}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "store", "get", "/store/inventory", MaybeRef], + updater: (data: HttpResponse, any>) => HttpResponse, any>, + ): Promise, any>>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createUserApiQuery = (api: User) => { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + function useCreateUsersWithArrayInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithArrayInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + function useCreateUsersWithListInputMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser[]; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUsersWithListInput(body!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + function useGetUserByName( + apiParams: { username: MaybeRef; requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { username, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createGetUserByNameQueryKey({ username, requestParams }) as QueryKey, + queryFn: () => { + return api.getUserByName(toValue(username)!, toValue(requestParams)); + }, + }); + } + function createGetUserByNameQueryKey(apiParams: { + username: MaybeRef; + requestParams?: MaybeRef; + }) { + const { username, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/${username}", username, requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + function useUpdateUserMutation( + mutationOptions: CustomMutationOptions< + any, + void, + { username: string; body: TypeUser; requestParams?: RequestParams } + > = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; body: TypeUser; requestParams?: RequestParams }) => { + const { username, body, requestParams = {} } = apiParams; + + return api.updateUser(username!, body!, requestParams); + }, + }); + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + function useDeleteUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { username: string; requestParams?: RequestParams }) => { + const { username, requestParams = {} } = apiParams; + + return api.deleteUser(username!, requestParams); + }, + }); + } + + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + function useLoginUser( + apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }, + queryOptions: CustomQueryOptions = {}, + ) { + const { query, requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLoginUserQueryKey({ query, requestParams }) as QueryKey, + queryFn: () => { + return api.loginUser(toValue(query)!, toValue(requestParams)); + }, + }); + } + function createLoginUserQueryKey(apiParams: { + query: MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>; + requestParams?: MaybeRef; + }) { + const { query, requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/login", query, requestParams] as const; + } + + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + function useLogoutUser( + apiParams: { requestParams?: MaybeRef }, + queryOptions: CustomQueryOptions = {}, + ) { + const { requestParams = {} } = apiParams; + return useQuery({ + ...queryOptions, + queryKey: createLogoutUserQueryKey({ requestParams }) as QueryKey, + queryFn: () => { + return api.logoutUser(toValue(requestParams)); + }, + }); + } + function createLogoutUserQueryKey(apiParams: { requestParams?: MaybeRef }) { + const { requestParams = {} } = apiParams; + return ["swagger-typescript-api", "user", "get", "/user/logout", requestParams] as const; + } + + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + function useCreateUserMutation( + mutationOptions: CustomMutationOptions = {}, + ) { + return useMutation({ + ...mutationOptions, + mutationFn: (apiParams: { body: TypeUser; requestParams?: RequestParams }) => { + const { body, requestParams = {} } = apiParams; + + return api.createUser(body!, requestParams); + }, + }); + } + + return { + useQueryUpdate: useUserApiQueryUpdate, + useCreateUsersWithArrayInputMutation, + useCreateUsersWithListInputMutation, + useGetUserByName, + createGetUserByNameQueryKey, + useUpdateUserMutation, + useDeleteUserMutation, + useLoginUser, + createLoginUserQueryKey, + useLogoutUser, + createLogoutUserQueryKey, + useCreateUserMutation, + }; +}; + +export function useUserApiQueryUpdate() { + const queryClient = useQueryClient(); + + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithArray", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "post", + "/user/createWithList", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "put", + "/user/${username}", + MaybeRef, + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "delete", + "/user/${username}", + MaybeRef, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly [ + "swagger-typescript-api", + "user", + "get", + "/user/login", + MaybeRef<{ + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }>, + MaybeRef, + ], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "get", "/user/logout", MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData( + queryKey: readonly ["swagger-typescript-api", "user", "post", "/user", MaybeRef, MaybeRef], + updater: (data: HttpResponse) => HttpResponse, + ): Promise>; + function setQueryData(queryKey: any, updater: any) { + return queryClient.setQueryData(queryKey, updater); + } + + return setQueryData; +} + +export const createApiQuery = (modules: { pet: Pet; store: Store; user: User }) => { + const { pet, store, user } = modules; + + return { + pet: createPetApiQuery(pet), + store: createStoreApiQuery(store), + user: createUserApiQuery(user), + }; +}; diff --git a/__generated__/api-vue-modular-fetch/Store.ts b/__generated__/api-vue-modular-fetch/Store.ts new file mode 100644 index 0000000..8ddceb1 --- /dev/null +++ b/__generated__/api-vue-modular-fetch/Store.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeOrder } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Store extends HttpClient { + /** + * No description + * + * @tags store + * @name PlaceOrder + * @summary Place an order for a pet + * @request POST:/store/order + */ + placeOrder = (body: TypeOrder, params: RequestParams = {}) => + this.request({ + path: `/store/order`, + method: "POST", + body: body, + type: ContentType.Json, + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * + * @tags store + * @name GetOrderById + * @summary Find purchase order by ID + * @request GET:/store/order/{orderId} + */ + getOrderById = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * + * @tags store + * @name DeleteOrder + * @summary Delete purchase order by ID + * @request DELETE:/store/order/{orderId} + */ + deleteOrder = (orderId: number, params: RequestParams = {}) => + this.request({ + path: `/store/order/${orderId}`, + method: "DELETE", + ...params, + }); + /** + * @description Returns a map of status codes to quantities + * + * @tags store + * @name GetInventory + * @summary Returns pet inventories by status + * @request GET:/store/inventory + * @secure + */ + getInventory = (params: RequestParams = {}) => + this.request, any>({ + path: `/store/inventory`, + method: "GET", + secure: true, + format: "json", + ...params, + }); +} diff --git a/__generated__/api-vue-modular-fetch/User.ts b/__generated__/api-vue-modular-fetch/User.ts new file mode 100644 index 0000000..819ff17 --- /dev/null +++ b/__generated__/api-vue-modular-fetch/User.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TypeUser } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class User extends HttpClient { + /** + * No description + * + * @tags user + * @name CreateUsersWithArrayInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithArray + */ + createUsersWithArrayInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithArray`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name CreateUsersWithListInput + * @summary Creates list of users with given input array + * @request POST:/user/createWithList + */ + createUsersWithListInput = (body: TypeUser[], params: RequestParams = {}) => + this.request({ + path: `/user/createWithList`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user + * @name GetUserByName + * @summary Get user by user name + * @request GET:/user/{username} + */ + getUserByName = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "GET", + format: "json", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name UpdateUser + * @summary Updated user + * @request PUT:/user/{username} + */ + updateUser = (username: string, body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "PUT", + body: body, + type: ContentType.Json, + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name DeleteUser + * @summary Delete user + * @request DELETE:/user/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request({ + path: `/user/${username}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags user + * @name LoginUser + * @summary Logs user into the system + * @request GET:/user/login + */ + loginUser = ( + query: { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/user/login`, + method: "GET", + query: query, + format: "json", + ...params, + }); + /** + * No description + * + * @tags user + * @name LogoutUser + * @summary Logs out current logged in user session + * @request GET:/user/logout + */ + logoutUser = (params: RequestParams = {}) => + this.request({ + path: `/user/logout`, + method: "GET", + ...params, + }); + /** + * @description This can only be done by the logged in user. + * + * @tags user + * @name CreateUser + * @summary Create user + * @request POST:/user + */ + createUser = (body: TypeUser, params: RequestParams = {}) => + this.request({ + path: `/user`, + method: "POST", + body: body, + type: ContentType.Json, + ...params, + }); +} diff --git a/__generated__/api-vue-modular-fetch/data-contracts.ts b/__generated__/api-vue-modular-fetch/data-contracts.ts new file mode 100644 index 0000000..9fe9b41 --- /dev/null +++ b/__generated__/api-vue-modular-fetch/data-contracts.ts @@ -0,0 +1,71 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface TypeApiResponse { + /** @format int32 */ + code?: number; + type?: string; + message?: string; +} + +export interface TypeCategory { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypePet { + /** @format int64 */ + id?: number; + category?: TypeCategory; + /** @example "doggie" */ + name: string; + photoUrls: string[]; + tags?: TypeTag[]; + /** pet status in the store */ + status?: "available" | "pending" | "sold"; +} + +export interface TypeTag { + /** @format int64 */ + id?: number; + name?: string; +} + +export interface TypeOrder { + /** @format int64 */ + id?: number; + /** @format int64 */ + petId?: number; + /** @format int32 */ + quantity?: number; + /** @format date-time */ + shipDate?: string; + /** Order Status */ + status?: "placed" | "approved" | "delivered"; + complete?: boolean; +} + +export interface TypeUser { + /** @format int64 */ + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** + * User Status + * @format int32 + */ + userStatus?: number; +} diff --git a/__generated__/api-vue-modular-fetch/http-client.ts b/__generated__/api-vue-modular-fetch/http-client.ts new file mode 100644 index 0000000..3183881 --- /dev/null +++ b/__generated__/api-vue-modular-fetch/http-client.ts @@ -0,0 +1,220 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: (securityData: SecurityDataType | null) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "https://petstore.swagger.io/v2"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input), + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + }, + signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response.clone() as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} diff --git a/__generated__/api-vue-modular/Queries.ts b/__generated__/api-vue-modular/Queries.ts index 444cc44..ffc0f71 100644 --- a/__generated__/api-vue-modular/Queries.ts +++ b/__generated__/api-vue-modular/Queries.ts @@ -28,7 +28,11 @@ import { TypeApiResponse, TypeOrder, TypePet, TypeUser } from "./data-contracts" This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. */ -type CustomQueryOptions = MaybeRef>>, "queryKey" | "queryFn">>; +// @ts-ignore +type CustomQueryOptions = MaybeRef< + Omit, E>>, "queryKey" | "queryFn"> +>; +// @ts-ignore type CustomMutationOptions = Omit, E, V>, "mutationFn">; export const createPetApiQuery = (api: Pet) => { diff --git a/package.json b/package.json index f2ead7f..f9d513b 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "postrelease": "npx cnpm sync @croatialu/query-templates", "compile": "esno src/index.ts", "test": "vitest", - "typecheck": "tsc --noEmit", + "typecheck": "tsc --noEmit --project tsconfig.generated.json", "up": "taze major -I", "prepare": "simple-git-hooks" }, diff --git a/src/index.ts b/src/index.ts index e31d5ce..9d400f1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,21 @@ -import { genReactQueryDefault, genReactQueryModular, genVueQueryDefault, genVueQueryModular } from './utils' +import { genReactQueryDefault, genReactQueryDefaultAxiosUnwrapResponseData, genReactQueryDefaultFetch, genReactQueryDefaultFetchUnwrapResponseData, genReactQueryModular, genReactQueryModularAxiosUnwrapResponseData, genReactQueryModularFetch, genReactQueryModularFetchUnwrapResponseData, genVueQueryDefault, genVueQueryDefaultAxiosUnwrapResponseData, genVueQueryDefaultFetch, genVueQueryDefaultFetchUnwrapResponseData, genVueQueryModular, genVueQueryModularAxiosUnwrapResponseData, genVueQueryModularFetch, genVueQueryModularFetchUnwrapResponseData } from './utils' genReactQueryDefault() -genVueQueryDefault() +genReactQueryDefaultFetch() +genReactQueryDefaultFetchUnwrapResponseData() +genReactQueryDefaultAxiosUnwrapResponseData() genReactQueryModular() +genReactQueryModularFetch() +genReactQueryModularFetchUnwrapResponseData() +genReactQueryModularAxiosUnwrapResponseData() + +genVueQueryDefault() +genVueQueryDefaultFetch() +genVueQueryDefaultFetchUnwrapResponseData() +genVueQueryDefaultAxiosUnwrapResponseData() + genVueQueryModular() +genVueQueryModularFetch() +genVueQueryModularFetchUnwrapResponseData() +genVueQueryModularAxiosUnwrapResponseData() diff --git a/src/utils.ts b/src/utils.ts index 07f7da7..e2a77bb 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -21,6 +21,63 @@ export function genVueQueryDefault() { }) } +export function genVueQueryDefaultFetch() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-vue-default-fetch'), + name: 'api', + modular: false, + unwrapResponseData: false, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/default'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/default/vue-query.ejs'), + }, + ], + }) +} + +export function genVueQueryDefaultFetchUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-vue-default-fetch-unwrap-response-data'), + name: 'api', + modular: false, + unwrapResponseData: true, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/default'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/default/vue-query.ejs'), + }, + ], + }) +} + +export function genVueQueryDefaultAxiosUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-vue-default-axios-unwrap-response-data'), + name: 'api', + modular: false, + unwrapResponseData: true, + httpClientType: 'axios', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/default'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/default/vue-query.ejs'), + }, + ], + }) +} + export function genVueQueryModular() { return generateApi({ input: resolve(process.cwd(), 'swagger.json'), @@ -40,6 +97,63 @@ export function genVueQueryModular() { }) } +export function genVueQueryModularFetch() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-vue-modular-fetch'), + name: 'api', + modular: true, + unwrapResponseData: false, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/modular'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/modular/vue-query.ejs'), + }, + ], + }) +} + +export function genVueQueryModularFetchUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-vue-modular-fetch-unwrap-response-data'), + name: 'api', + modular: true, + unwrapResponseData: true, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/modular'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/modular/vue-query.ejs'), + }, + ], + }) +} + +export function genVueQueryModularAxiosUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-vue-modular-axios-unwrap-response-data'), + name: 'api', + modular: true, + unwrapResponseData: true, + httpClientType: 'axios', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/modular'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/modular/vue-query.ejs'), + }, + ], + }) +} + export function genReactQueryDefault() { return generateApi({ input: resolve(process.cwd(), 'swagger.json'), @@ -59,6 +173,63 @@ export function genReactQueryDefault() { }) } +export function genReactQueryDefaultFetch() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-react-default-fetch'), + name: 'api', + modular: false, + unwrapResponseData: false, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/default'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/default/react-query.ejs'), + }, + ], + }) +} + +export function genReactQueryDefaultFetchUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-react-default-fetch-unwrap-response-data'), + name: 'api', + modular: false, + unwrapResponseData: true, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/default'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/default/react-query.ejs'), + }, + ], + }) +} + +export function genReactQueryDefaultAxiosUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-react-default-axios-unwrap-response-data'), + name: 'api', + modular: false, + unwrapResponseData: true, + httpClientType: 'axios', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/default'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/default/react-query.ejs'), + }, + ], + }) +} + export function genReactQueryModular() { return generateApi({ input: resolve(process.cwd(), 'swagger.json'), @@ -77,3 +248,60 @@ export function genReactQueryModular() { ], }) } + +export function genReactQueryModularFetch() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-react-modular-fetch'), + name: 'api', + modular: true, + unwrapResponseData: false, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/modular'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/modular/react-query.ejs'), + }, + ], + }) +} + +export function genReactQueryModularFetchUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-react-modular-fetch-unwrap-response-data'), + name: 'api', + modular: true, + unwrapResponseData: true, + httpClientType: 'fetch', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/modular'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/modular/react-query.ejs'), + }, + ], + }) +} + +export function genReactQueryModularAxiosUnwrapResponseData() { + return generateApi({ + input: resolve(process.cwd(), 'swagger.json'), + output: resolve(process.cwd(), '__generated__/api-react-modular-axios-unwrap-response-data'), + name: 'api', + modular: true, + unwrapResponseData: true, + httpClientType: 'axios', + typePrefix: 'Type', + templates: resolve(process.cwd(), 'templates/modular'), + extraTemplates: [ + { + name: 'Queries', + path: resolve(process.cwd(), 'templates/modular/react-query.ejs'), + }, + ], + }) +} diff --git a/templates/default/react-query.ejs b/templates/default/react-query.ejs index b389317..23acea8 100644 --- a/templates/default/react-query.ejs +++ b/templates/default/react-query.ejs @@ -13,13 +13,13 @@ const QUERY_TYPE = 'react' const createResponseGeneric = (response, error) => { if(config.unwrapResponseData) { - return `${response}, ${error}` + return `${response}` } return `${isAxiosHttpClient ? 'AxiosResponse' : 'HttpResponse'}<${response}, ${error}>` } -const createResponseType = (route) => { +const createResponseTypeUnit = (route) => { const { response } = route @@ -131,7 +131,7 @@ import { */ // @ts-ignore -type CustomQueryOptions = Omit >, 'queryKey' | 'queryFn'> +type CustomQueryOptions = Omit, E>, 'queryKey' | 'queryFn'> // @ts-ignore type CustomMutationOptions = Omit, E, V>, 'mutationFn'> @@ -189,7 +189,7 @@ type CustomMutationOptions = Omit` const queryKeyValueTmplStr = createQueryKeyTmplStr(moduleName, request, baseArgs.map(v => v.name)) - const responseType = createResponseType(route) + const responseType = createResponseTypeUnit(route) %> /** @@ -249,7 +249,7 @@ type CustomMutationOptions = Omit v.type)) %> diff --git a/templates/default/vue-query.ejs b/templates/default/vue-query.ejs index d51ece9..1f02ec1 100644 --- a/templates/default/vue-query.ejs +++ b/templates/default/vue-query.ejs @@ -14,14 +14,13 @@ const isAxiosHttpClient = config.httpClientType === config.constants.HTTP_CLIENT const createResponseGeneric = (response, error) => { if(config.unwrapResponseData) { - return `${response}, ${error}` + return response } return `${isAxiosHttpClient ? 'AxiosResponse' : 'HttpResponse'}<${response}, ${error}>` } const createResponseType = (route) => { - const { response } = route return createResponseGeneric(response.type, response.errorType) @@ -140,7 +139,7 @@ import { */ // @ts-ignore -type CustomQueryOptions = MaybeRef >>, 'queryKey' | 'queryFn'>> +type CustomQueryOptions = MaybeRef, E >>, 'queryKey' | 'queryFn'>> // @ts-ignore type CustomMutationOptions = Omit, E, V >, 'mutationFn'> diff --git a/templates/modular/react-query.ejs b/templates/modular/react-query.ejs index 12f5498..a7f113c 100644 --- a/templates/modular/react-query.ejs +++ b/templates/modular/react-query.ejs @@ -13,7 +13,7 @@ const QUERY_TYPE = 'react' const createResponseGeneric = (response, error) => { if(config.unwrapResponseData) { - return `${response}` + return response } return `${isAxiosHttpClient ? 'AxiosResponse' : 'HttpResponse'}<${response}, ${error}>` @@ -133,8 +133,9 @@ import { HttpClient, RequestParams, ContentType, HttpResponse } from "./<%~ conf <%= it.apiConfig.info.description %> */ - -type CustomQueryOptions = Omit >, 'queryKey' | 'queryFn'> +// @ts-ignore +type CustomQueryOptions = Omit, E>, 'queryKey' | 'queryFn'> +// @ts-ignore type CustomMutationOptions = Omit, E, V>, 'mutationFn'> <% for (const combined of combinedArr) { %> diff --git a/templates/modular/vue-query.ejs b/templates/modular/vue-query.ejs index 07d1389..ba6a15a 100644 --- a/templates/modular/vue-query.ejs +++ b/templates/modular/vue-query.ejs @@ -14,7 +14,7 @@ const isAxiosHttpClient = config.httpClientType === config.constants.HTTP_CLIENT const createResponseGeneric = (response, error) => { if(config.unwrapResponseData) { - return `${response}` + return response } return `${isAxiosHttpClient ? 'AxiosResponse' : 'HttpResponse'}<${response}, ${error}>` @@ -144,7 +144,9 @@ import { HttpClient, RequestParams, ContentType, HttpResponse } from "./<%~ conf */ -type CustomQueryOptions = MaybeRef >>, 'queryKey' | 'queryFn'>> +// @ts-ignore +type CustomQueryOptions = MaybeRef, E >>, 'queryKey' | 'queryFn'>> +// @ts-ignore type CustomMutationOptions = Omit, E, V >, 'mutationFn'> <% for (const combined of combinedArr) { %> diff --git a/tsconfig.generated.json b/tsconfig.generated.json new file mode 100644 index 0000000..e3fee03 --- /dev/null +++ b/tsconfig.generated.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["ESNext", "DOM"], + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "esModuleInterop": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true + }, + "include": ["__generated__"] +}