UNPKG

@openapi-qraft/react

Version:

OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.

33 lines (28 loc) 1.22 kB
import type { QueryClient } from '@tanstack/react-query'; import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js'; import type { OperationSchema } from './requestFn.js'; import { composeMutationFilters } from './composeMutationFilters.js'; /** * Calls a query client method with mutation filters and options, * and automatically composes the `MutationKey` based on the schema and parameters. */ export function callQueryClientMethodWithMutationFilters< QFMethod extends QueryFilterMethods, >( qraftOptions: CreateAPIQueryClientOptions, queryFilterMethod: QFMethod, schema: OperationSchema, args: [...Parameters<(typeof QueryClient.prototype)[QFMethod]>, QueryClient] ): ReturnType<(typeof QueryClient.prototype)[QFMethod]> { const filters = args[0]; const queryClient = qraftOptions.queryClient; // @ts-expect-error - Too complex to type return queryClient[queryFilterMethod]( composeMutationFilters(schema, filters as never), // @ts-expect-error - Argument types are too complex ...args.slice(1, args.length) ); } type QueryFiltersMethod<QFMethod extends keyof typeof QueryClient.prototype> = QFMethod; type QueryFilterMethods = QueryFiltersMethod<'isMutating'>;