@openapi-qraft/react 2.0.0-next.1 → 2.0.0-next.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -1
- package/dist/cjs/callbacks/cancelQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/fetchInfiniteQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/fetchQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/getInfiniteQueryData.cjs.map +1 -1
- package/dist/cjs/callbacks/getInfiniteQueryKey.cjs.map +1 -1
- package/dist/cjs/callbacks/getInfiniteQueryState.cjs.map +1 -1
- package/dist/cjs/callbacks/getMutationKey.cjs.map +1 -1
- package/dist/cjs/callbacks/getQueriesData.cjs.map +1 -1
- package/dist/cjs/callbacks/getQueryData.cjs.map +1 -1
- package/dist/cjs/callbacks/getQueryKey.cjs.map +1 -1
- package/dist/cjs/callbacks/getQueryState.cjs.map +1 -1
- package/dist/cjs/callbacks/invalidateQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/isFetching.cjs.map +1 -1
- package/dist/cjs/callbacks/isMutating.cjs.map +1 -1
- package/dist/cjs/callbacks/operationInvokeFn.cjs.map +1 -1
- package/dist/cjs/callbacks/prefetchInfiniteQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/prefetchQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/refetchQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/removeQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/resetQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/setInfiniteQueryData.cjs.map +1 -1
- package/dist/cjs/callbacks/setQueriesData.cjs.map +1 -1
- package/dist/cjs/callbacks/setQueryData.cjs.map +1 -1
- package/dist/cjs/callbacks/useInfiniteQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/useIsFetching.cjs.map +1 -1
- package/dist/cjs/callbacks/useIsMutating.cjs.map +1 -1
- package/dist/cjs/callbacks/useMutation.cjs.map +1 -1
- package/dist/cjs/callbacks/useMutationState.cjs.map +1 -1
- package/dist/cjs/callbacks/useQueries.cjs +1 -0
- package/dist/cjs/callbacks/useQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/useQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/useSuspenseInfiniteQuery.cjs.map +1 -1
- package/dist/cjs/callbacks/useSuspenseQueries.cjs +1 -0
- package/dist/cjs/callbacks/useSuspenseQueries.cjs.map +1 -1
- package/dist/cjs/callbacks/useSuspenseQuery.cjs.map +1 -1
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs +2 -3
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs.map +1 -1
- package/dist/cjs/lib/composeBaseQueryKey.cjs.map +1 -1
- package/dist/cjs/lib/composeInfiniteQueryKey.cjs.map +1 -1
- package/dist/cjs/lib/composeMutationKey.cjs.map +1 -1
- package/dist/cjs/lib/composeQueryKey.cjs.map +1 -1
- package/dist/cjs/lib/requestFn.cjs +67 -64
- package/dist/cjs/lib/requestFn.cjs.map +1 -1
- package/dist/cjs/lib/responseUtils.cjs +44 -0
- package/dist/cjs/lib/responseUtils.cjs.map +1 -0
- package/dist/cjs/lib/useComposeUseQueryOptions.cjs +1 -2
- package/dist/cjs/lib/useComposeUseQueryOptions.cjs.map +1 -1
- package/dist/cjs/qraftAPIClient.cjs +1 -1
- package/dist/cjs/qraftAPIClient.cjs.map +1 -1
- package/dist/cjs/qraftPredefinedParametersRequestFn.cjs +39 -0
- package/dist/cjs/qraftPredefinedParametersRequestFn.cjs.map +1 -0
- package/dist/cjs/unstable__responseUtils.cjs +9 -0
- package/dist/cjs/unstable__responseUtils.cjs.map +1 -0
- package/dist/esm/callbacks/cancelQueries.js.map +1 -1
- package/dist/esm/callbacks/fetchInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/fetchQuery.js.map +1 -1
- package/dist/esm/callbacks/getInfiniteQueryData.js.map +1 -1
- package/dist/esm/callbacks/getInfiniteQueryKey.js.map +1 -1
- package/dist/esm/callbacks/getInfiniteQueryState.js.map +1 -1
- package/dist/esm/callbacks/getMutationKey.js.map +1 -1
- package/dist/esm/callbacks/getQueriesData.js.map +1 -1
- package/dist/esm/callbacks/getQueryData.js.map +1 -1
- package/dist/esm/callbacks/getQueryKey.js.map +1 -1
- package/dist/esm/callbacks/getQueryState.js.map +1 -1
- package/dist/esm/callbacks/invalidateQueries.js.map +1 -1
- package/dist/esm/callbacks/isFetching.js.map +1 -1
- package/dist/esm/callbacks/isMutating.js.map +1 -1
- package/dist/esm/callbacks/operationInvokeFn.js.map +1 -1
- package/dist/esm/callbacks/prefetchInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/prefetchQuery.js.map +1 -1
- package/dist/esm/callbacks/refetchQueries.js.map +1 -1
- package/dist/esm/callbacks/removeQueries.js.map +1 -1
- package/dist/esm/callbacks/resetQueries.js.map +1 -1
- package/dist/esm/callbacks/setInfiniteQueryData.js.map +1 -1
- package/dist/esm/callbacks/setQueriesData.js.map +1 -1
- package/dist/esm/callbacks/setQueryData.js.map +1 -1
- package/dist/esm/callbacks/useInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/useIsFetching.js.map +1 -1
- package/dist/esm/callbacks/useIsMutating.js.map +1 -1
- package/dist/esm/callbacks/useMutation.js.map +1 -1
- package/dist/esm/callbacks/useMutationState.js.map +1 -1
- package/dist/esm/callbacks/useQueries.js +1 -0
- package/dist/esm/callbacks/useQueries.js.map +1 -1
- package/dist/esm/callbacks/useQuery.js.map +1 -1
- package/dist/esm/callbacks/useSuspenseInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/useSuspenseQueries.js +1 -0
- package/dist/esm/callbacks/useSuspenseQueries.js.map +1 -1
- package/dist/esm/callbacks/useSuspenseQuery.js.map +1 -1
- package/dist/esm/lib/callQueryClientFetchMethod.js +2 -3
- package/dist/esm/lib/callQueryClientFetchMethod.js.map +1 -1
- package/dist/esm/lib/composeBaseQueryKey.js.map +1 -1
- package/dist/esm/lib/composeInfiniteQueryKey.js.map +1 -1
- package/dist/esm/lib/composeMutationKey.js.map +1 -1
- package/dist/esm/lib/composeQueryKey.js.map +1 -1
- package/dist/esm/lib/requestFn.js +66 -63
- package/dist/esm/lib/requestFn.js.map +1 -1
- package/dist/esm/lib/responseUtils.js +41 -0
- package/dist/esm/lib/responseUtils.js.map +1 -0
- package/dist/esm/lib/useComposeUseQueryOptions.js +1 -2
- package/dist/esm/lib/useComposeUseQueryOptions.js.map +1 -1
- package/dist/esm/qraftAPIClient.js +1 -1
- package/dist/esm/qraftAPIClient.js.map +1 -1
- package/dist/esm/qraftPredefinedParametersRequestFn.js +37 -0
- package/dist/esm/qraftPredefinedParametersRequestFn.js.map +1 -0
- package/dist/esm/unstable__responseUtils.js +2 -0
- package/dist/esm/unstable__responseUtils.js.map +1 -0
- package/dist/types/callbacks/cancelQueries.d.ts +3 -3
- package/dist/types/callbacks/cancelQueries.d.ts.map +1 -1
- package/dist/types/callbacks/fetchInfiniteQuery.d.ts +3 -2
- package/dist/types/callbacks/fetchInfiniteQuery.d.ts.map +1 -1
- package/dist/types/callbacks/fetchQuery.d.ts +3 -2
- package/dist/types/callbacks/fetchQuery.d.ts.map +1 -1
- package/dist/types/callbacks/getInfiniteQueryData.d.ts +2 -3
- package/dist/types/callbacks/getInfiniteQueryData.d.ts.map +1 -1
- package/dist/types/callbacks/getInfiniteQueryKey.d.ts +4 -4
- package/dist/types/callbacks/getInfiniteQueryKey.d.ts.map +1 -1
- package/dist/types/callbacks/getInfiniteQueryState.d.ts +3 -3
- package/dist/types/callbacks/getInfiniteQueryState.d.ts.map +1 -1
- package/dist/types/callbacks/getMutationKey.d.ts +3 -3
- package/dist/types/callbacks/getMutationKey.d.ts.map +1 -1
- package/dist/types/callbacks/getQueriesData.d.ts +3 -3
- package/dist/types/callbacks/getQueriesData.d.ts.map +1 -1
- package/dist/types/callbacks/getQueryData.d.ts +2 -3
- package/dist/types/callbacks/getQueryData.d.ts.map +1 -1
- package/dist/types/callbacks/getQueryKey.d.ts +3 -3
- package/dist/types/callbacks/getQueryKey.d.ts.map +1 -1
- package/dist/types/callbacks/getQueryState.d.ts +3 -3
- package/dist/types/callbacks/getQueryState.d.ts.map +1 -1
- package/dist/types/callbacks/invalidateQueries.d.ts +3 -3
- package/dist/types/callbacks/invalidateQueries.d.ts.map +1 -1
- package/dist/types/callbacks/isFetching.d.ts +3 -3
- package/dist/types/callbacks/isFetching.d.ts.map +1 -1
- package/dist/types/callbacks/isMutating.d.ts +3 -3
- package/dist/types/callbacks/isMutating.d.ts.map +1 -1
- package/dist/types/callbacks/operationInvokeFn.d.ts +1 -3
- package/dist/types/callbacks/operationInvokeFn.d.ts.map +1 -1
- package/dist/types/callbacks/prefetchInfiniteQuery.d.ts +3 -2
- package/dist/types/callbacks/prefetchInfiniteQuery.d.ts.map +1 -1
- package/dist/types/callbacks/prefetchQuery.d.ts +3 -2
- package/dist/types/callbacks/prefetchQuery.d.ts.map +1 -1
- package/dist/types/callbacks/refetchQueries.d.ts +3 -3
- package/dist/types/callbacks/refetchQueries.d.ts.map +1 -1
- package/dist/types/callbacks/removeQueries.d.ts +3 -3
- package/dist/types/callbacks/removeQueries.d.ts.map +1 -1
- package/dist/types/callbacks/resetQueries.d.ts +3 -3
- package/dist/types/callbacks/resetQueries.d.ts.map +1 -1
- package/dist/types/callbacks/setInfiniteQueryData.d.ts +1 -2
- package/dist/types/callbacks/setInfiniteQueryData.d.ts.map +1 -1
- package/dist/types/callbacks/setQueriesData.d.ts +3 -3
- package/dist/types/callbacks/setQueriesData.d.ts.map +1 -1
- package/dist/types/callbacks/setQueryData.d.ts +1 -2
- package/dist/types/callbacks/setQueryData.d.ts.map +1 -1
- package/dist/types/callbacks/useInfiniteQuery.d.ts +2 -3
- package/dist/types/callbacks/useInfiniteQuery.d.ts.map +1 -1
- package/dist/types/callbacks/useIsFetching.d.ts +2 -3
- package/dist/types/callbacks/useIsFetching.d.ts.map +1 -1
- package/dist/types/callbacks/useIsMutating.d.ts +2 -3
- package/dist/types/callbacks/useIsMutating.d.ts.map +1 -1
- package/dist/types/callbacks/useMutation.d.ts +2 -3
- package/dist/types/callbacks/useMutation.d.ts.map +1 -1
- package/dist/types/callbacks/useMutationState.d.ts +2 -3
- package/dist/types/callbacks/useMutationState.d.ts.map +1 -1
- package/dist/types/callbacks/useQueries.d.ts +3 -3
- package/dist/types/callbacks/useQueries.d.ts.map +1 -1
- package/dist/types/callbacks/useQuery.d.ts +2 -3
- package/dist/types/callbacks/useQuery.d.ts.map +1 -1
- package/dist/types/callbacks/useSuspenseInfiniteQuery.d.ts +2 -3
- package/dist/types/callbacks/useSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/types/callbacks/useSuspenseQueries.d.ts +3 -3
- package/dist/types/callbacks/useSuspenseQueries.d.ts.map +1 -1
- package/dist/types/callbacks/useSuspenseQuery.d.ts +2 -3
- package/dist/types/callbacks/useSuspenseQuery.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/callQueryClientFetchMethod.d.ts.map +1 -1
- package/dist/types/lib/composeBaseQueryKey.d.ts +1 -1
- package/dist/types/lib/composeBaseQueryKey.d.ts.map +1 -1
- package/dist/types/lib/composeInfiniteQueryKey.d.ts +1 -1
- package/dist/types/lib/composeInfiniteQueryKey.d.ts.map +1 -1
- package/dist/types/lib/composeMutationKey.d.ts +1 -1
- package/dist/types/lib/composeMutationKey.d.ts.map +1 -1
- package/dist/types/lib/composeQueryKey.d.ts +1 -1
- package/dist/types/lib/composeQueryKey.d.ts.map +1 -1
- package/dist/types/lib/requestFn.d.ts +21 -75
- package/dist/types/lib/requestFn.d.ts.map +1 -1
- package/dist/types/lib/responseUtils.d.ts +13 -0
- package/dist/types/lib/responseUtils.d.ts.map +1 -0
- package/dist/types/lib/useComposeUseQueryOptions.d.ts.map +1 -1
- package/dist/types/migrate-to-v2-codemod.d.ts +3 -0
- package/dist/types/migrate-to-v2-codemod.d.ts.map +1 -0
- package/dist/types/qraftAPIClient.d.ts +10 -6
- package/dist/types/qraftAPIClient.d.ts.map +1 -1
- package/dist/types/qraftPredefinedParametersRequestFn.d.ts +1 -1
- package/dist/types/qraftPredefinedParametersRequestFn.d.ts.map +1 -1
- package/dist/types/unstable__responseUtils.d.ts +2 -0
- package/dist/types/unstable__responseUtils.d.ts.map +1 -0
- package/package.json +28 -16
- package/src/callbacks/cancelQueries.ts +7 -3
- package/src/callbacks/fetchInfiniteQuery.ts +4 -2
- package/src/callbacks/fetchQuery.ts +8 -2
- package/src/callbacks/getInfiniteQueryData.ts +5 -3
- package/src/callbacks/getInfiniteQueryKey.ts +9 -5
- package/src/callbacks/getInfiniteQueryState.ts +8 -4
- package/src/callbacks/getMutationKey.ts +8 -4
- package/src/callbacks/getQueriesData.ts +11 -3
- package/src/callbacks/getQueryData.ts +9 -3
- package/src/callbacks/getQueryKey.ts +11 -3
- package/src/callbacks/getQueryState.ts +11 -3
- package/src/callbacks/invalidateQueries.ts +7 -3
- package/src/callbacks/isFetching.ts +7 -3
- package/src/callbacks/isMutating.ts +8 -3
- package/src/callbacks/operationInvokeFn.ts +6 -3
- package/src/callbacks/prefetchInfiniteQuery.ts +4 -2
- package/src/callbacks/prefetchQuery.ts +8 -2
- package/src/callbacks/refetchQueries.ts +7 -3
- package/src/callbacks/removeQueries.ts +7 -3
- package/src/callbacks/resetQueries.ts +7 -3
- package/src/callbacks/setInfiniteQueryData.ts +4 -2
- package/src/callbacks/setQueriesData.ts +7 -3
- package/src/callbacks/setQueryData.ts +4 -2
- package/src/callbacks/useInfiniteQuery.ts +10 -3
- package/src/callbacks/useIsFetching.ts +5 -3
- package/src/callbacks/useIsMutating.ts +7 -4
- package/src/callbacks/useMutation.ts +8 -5
- package/src/callbacks/useMutationState.ts +7 -4
- package/src/callbacks/useQueries.ts +12 -3
- package/src/callbacks/useQuery.ts +10 -3
- package/src/callbacks/useSuspenseInfiniteQuery.ts +7 -4
- package/src/callbacks/useSuspenseQueries.ts +9 -4
- package/src/callbacks/useSuspenseQuery.ts +10 -3
- package/src/index.ts +9 -10
- package/src/lib/callQueryClientFetchMethod.ts +13 -11
- package/src/lib/composeBaseQueryKey.ts +1 -1
- package/src/lib/composeInfiniteQueryKey.ts +1 -1
- package/src/lib/composeMutationKey.ts +1 -1
- package/src/lib/composeQueryKey.ts +1 -1
- package/src/lib/requestFn.ts +112 -222
- package/src/lib/responseUtils.ts +77 -0
- package/src/lib/useComposeUseQueryOptions.ts +1 -2
- package/src/migrate-to-v2-codemod.ts +118 -0
- package/src/qraftAPIClient.ts +74 -11
- package/src/qraftPredefinedParametersRequestFn.ts +17 -8
- package/src/unstable__responseUtils.ts +1 -0
- package/dist/types/lib/AreAllOptional.d.ts +0 -4
- package/dist/types/lib/AreAllOptional.d.ts.map +0 -1
- package/dist/types/lib/PartialParameters.type.d.ts +0 -13
- package/dist/types/lib/PartialParameters.type.d.ts.map +0 -1
- package/dist/types/service-operation/OperationInfiniteData.d.ts +0 -4
- package/dist/types/service-operation/OperationInfiniteData.d.ts.map +0 -1
- package/dist/types/service-operation/QueryFilters.d.ts +0 -123
- package/dist/types/service-operation/QueryFilters.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperation.d.ts +0 -53
- package/dist/types/service-operation/ServiceOperation.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationCancelQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationCancelQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationFetchInfiniteQuery.d.ts +0 -61
- package/dist/types/service-operation/ServiceOperationFetchInfiniteQuery.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationFetchQuery.d.ts +0 -58
- package/dist/types/service-operation/ServiceOperationFetchQuery.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationGetInfiniteQueryData.d.ts +0 -10
- package/dist/types/service-operation/ServiceOperationGetInfiniteQueryData.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationGetQueriesData.d.ts +0 -17
- package/dist/types/service-operation/ServiceOperationGetQueriesData.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationGetQueryData.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationGetQueryData.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationGetQueryState.d.ts +0 -11
- package/dist/types/service-operation/ServiceOperationGetQueryState.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationInvalidateQueries.d.ts +0 -15
- package/dist/types/service-operation/ServiceOperationInvalidateQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationIsFetchingQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationIsFetchingQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationIsMutatingQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationIsMutatingQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationKey.d.ts +0 -16
- package/dist/types/service-operation/ServiceOperationKey.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationMutationFn.d.ts +0 -30
- package/dist/types/service-operation/ServiceOperationMutationFn.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationQueryFn.d.ts +0 -37
- package/dist/types/service-operation/ServiceOperationQueryFn.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationRefetchQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationRefetchQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationRemoveQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationRemoveQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationResetQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationResetQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationSetInfiniteQueryData.d.ts +0 -10
- package/dist/types/service-operation/ServiceOperationSetInfiniteQueryData.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationSetQueriesData.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationSetQueriesData.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationSetQueryData.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationSetQueryData.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseInfiniteQuery.d.ts +0 -15
- package/dist/types/service-operation/ServiceOperationUseInfiniteQuery.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseIsFetchingQueries.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationUseIsFetchingQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseIsMutating.d.ts +0 -9
- package/dist/types/service-operation/ServiceOperationUseIsMutating.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseMutation.d.ts +0 -28
- package/dist/types/service-operation/ServiceOperationUseMutation.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseMutationState.d.ts +0 -46
- package/dist/types/service-operation/ServiceOperationUseMutationState.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseQueries.d.ts +0 -26
- package/dist/types/service-operation/ServiceOperationUseQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseQuery.d.ts +0 -13
- package/dist/types/service-operation/ServiceOperationUseQuery.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseSuspenseInfiniteQuery.d.ts +0 -12
- package/dist/types/service-operation/ServiceOperationUseSuspenseInfiniteQuery.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseSuspenseQueries.d.ts +0 -25
- package/dist/types/service-operation/ServiceOperationUseSuspenseQueries.d.ts.map +0 -1
- package/dist/types/service-operation/ServiceOperationUseSuspenseQuery.d.ts +0 -10
- package/dist/types/service-operation/ServiceOperationUseSuspenseQuery.d.ts.map +0 -1
- package/dist/types/service-operation/index.d.ts +0 -2
- package/dist/types/service-operation/index.d.ts.map +0 -1
- package/src/lib/AreAllOptional.ts +0 -8
- package/src/lib/PartialParameters.type.ts +0 -12
- package/src/service-operation/OperationInfiniteData.ts +0 -7
- package/src/service-operation/QueryFilters.ts +0 -226
- package/src/service-operation/ServiceOperation.ts +0 -85
- package/src/service-operation/ServiceOperationCancelQueries.ts +0 -19
- package/src/service-operation/ServiceOperationFetchInfiniteQuery.ts +0 -156
- package/src/service-operation/ServiceOperationFetchQuery.ts +0 -111
- package/src/service-operation/ServiceOperationGetInfiniteQueryData.ts +0 -15
- package/src/service-operation/ServiceOperationGetQueriesData.ts +0 -35
- package/src/service-operation/ServiceOperationGetQueryData.ts +0 -14
- package/src/service-operation/ServiceOperationGetQueryState.ts +0 -21
- package/src/service-operation/ServiceOperationInvalidateQueries.ts +0 -37
- package/src/service-operation/ServiceOperationIsFetchingQueries.ts +0 -18
- package/src/service-operation/ServiceOperationIsMutatingQueries.ts +0 -26
- package/src/service-operation/ServiceOperationKey.ts +0 -20
- package/src/service-operation/ServiceOperationMutationFn.ts +0 -49
- package/src/service-operation/ServiceOperationQueryFn.ts +0 -71
- package/src/service-operation/ServiceOperationRefetchQueries.ts +0 -19
- package/src/service-operation/ServiceOperationRemoveQueries.ts +0 -18
- package/src/service-operation/ServiceOperationResetQueries.ts +0 -19
- package/src/service-operation/ServiceOperationSetInfiniteQueryData.ts +0 -18
- package/src/service-operation/ServiceOperationSetQueriesData.ts +0 -25
- package/src/service-operation/ServiceOperationSetQueryData.ts +0 -14
- package/src/service-operation/ServiceOperationUseInfiniteQuery.ts +0 -77
- package/src/service-operation/ServiceOperationUseIsFetchingQueries.ts +0 -18
- package/src/service-operation/ServiceOperationUseIsMutating.ts +0 -26
- package/src/service-operation/ServiceOperationUseMutation.ts +0 -74
- package/src/service-operation/ServiceOperationUseMutationState.ts +0 -107
- package/src/service-operation/ServiceOperationUseQueries.ts +0 -57
- package/src/service-operation/ServiceOperationUseQuery.ts +0 -50
- package/src/service-operation/ServiceOperationUseSuspenseInfiniteQuery.ts +0 -43
- package/src/service-operation/ServiceOperationUseSuspenseQueries.ts +0 -55
- package/src/service-operation/ServiceOperationUseSuspenseQuery.ts +0 -26
- package/src/service-operation/index.ts +0 -4
package/src/lib/requestFn.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
HeadersOptions,
|
|
3
|
+
OperationSchema,
|
|
4
|
+
RequestFnInfo,
|
|
5
|
+
RequestFnOptions,
|
|
6
|
+
RequestFnResponse,
|
|
7
|
+
} from '@openapi-qraft/tanstack-query-react-types';
|
|
8
|
+
import { processResponse, resolveResponse } from './responseUtils.js';
|
|
9
|
+
|
|
1
10
|
/**
|
|
2
11
|
* This function is used to make a request to a specified endpoint.
|
|
3
12
|
*
|
|
@@ -25,7 +34,7 @@ export async function requestFn<TData, TError>(
|
|
|
25
34
|
|
|
26
35
|
/**
|
|
27
36
|
* This function is used to make a request to a specified endpoint.
|
|
28
|
-
* It's
|
|
37
|
+
* It's necessary to create a custom `requestFn` with a custom `urlSerializer`
|
|
29
38
|
* and `bodySerializer`, with the tree-shaking of the default `requestFn`
|
|
30
39
|
* and its serializers.
|
|
31
40
|
*
|
|
@@ -46,24 +55,18 @@ export async function baseRequestFn<TData, TError>(
|
|
|
46
55
|
): Promise<RequestFnResponse<TData, TError>> {
|
|
47
56
|
const { parameters, headers, body, ...requestInfoRest } = requestInfo;
|
|
48
57
|
|
|
49
|
-
const
|
|
58
|
+
const requestPayload = options.bodySerializer(requestSchema, body);
|
|
50
59
|
|
|
51
60
|
const baseFetch = options.fetch ?? fetch;
|
|
52
61
|
|
|
53
62
|
return baseFetch(options.urlSerializer(requestSchema, requestInfo), {
|
|
54
63
|
method: requestSchema.method.toUpperCase(),
|
|
55
|
-
body:
|
|
64
|
+
body: requestPayload?.body,
|
|
56
65
|
headers: mergeHeaders(
|
|
57
|
-
{
|
|
58
|
-
|
|
59
|
-
'Content-Type': requestSchema.mediaType ?? getBodyContentType(body),
|
|
60
|
-
},
|
|
66
|
+
{ Accept: 'application/json' },
|
|
67
|
+
requestPayload?.headers,
|
|
61
68
|
headers,
|
|
62
|
-
parameters?.header
|
|
63
|
-
requestBody instanceof FormData
|
|
64
|
-
? // remove `Content-Type` if the serialized body is FormData; the browser will correctly set Content-Type & boundary expression
|
|
65
|
-
{ 'Content-Type': null }
|
|
66
|
-
: undefined
|
|
69
|
+
parameters?.header
|
|
67
70
|
),
|
|
68
71
|
...requestInfoRest,
|
|
69
72
|
})
|
|
@@ -88,7 +91,7 @@ export async function baseRequestFn<TData, TError>(
|
|
|
88
91
|
*/
|
|
89
92
|
export function urlSerializer(
|
|
90
93
|
schema: OperationSchema,
|
|
91
|
-
info:
|
|
94
|
+
info: Pick<RequestFnInfo, 'baseUrl' | 'parameters'>
|
|
92
95
|
): string {
|
|
93
96
|
const path = schema.url.replace(
|
|
94
97
|
/{(.*?)}/g,
|
|
@@ -173,47 +176,101 @@ export function mergeHeaders(...allHeaders: (HeadersOptions | undefined)[]) {
|
|
|
173
176
|
|
|
174
177
|
export function bodySerializer(
|
|
175
178
|
schema: OperationSchema,
|
|
176
|
-
|
|
179
|
+
body: RequestFnInfo['body']
|
|
177
180
|
) {
|
|
178
|
-
if (info.body === undefined) return;
|
|
179
|
-
|
|
180
181
|
if (
|
|
181
182
|
schema.method === 'get' ||
|
|
182
183
|
schema.method === 'head' ||
|
|
183
184
|
schema.method === 'options'
|
|
184
185
|
)
|
|
185
|
-
return;
|
|
186
|
+
return undefined;
|
|
187
|
+
|
|
188
|
+
if (body === undefined || body === null) return undefined;
|
|
189
|
+
|
|
190
|
+
if (typeof body === 'string') {
|
|
191
|
+
return {
|
|
192
|
+
body,
|
|
193
|
+
headers: {
|
|
194
|
+
'Content-Type':
|
|
195
|
+
// prefer text/* media type
|
|
196
|
+
schema.mediaType?.find((mediaType) => mediaType.includes('text/')) ??
|
|
197
|
+
// prefer JSON media type, assume that body is serialized as JSON
|
|
198
|
+
schema.mediaType?.find((mediaType) => mediaType.includes('/json')) ??
|
|
199
|
+
'text/plain',
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
}
|
|
186
203
|
|
|
187
|
-
if (
|
|
188
|
-
return
|
|
204
|
+
if (body instanceof FormData) {
|
|
205
|
+
return {
|
|
206
|
+
body,
|
|
207
|
+
headers: {
|
|
208
|
+
// remove `Content-Type` if the serialized body is FormData;
|
|
209
|
+
// the browser will correctly set Content-Type & boundary expression
|
|
210
|
+
'Content-Type': null,
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
189
214
|
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
215
|
+
if (body instanceof Blob) {
|
|
216
|
+
return {
|
|
217
|
+
body,
|
|
218
|
+
headers: {
|
|
219
|
+
'Content-Type':
|
|
220
|
+
body.type ||
|
|
221
|
+
schema.mediaType?.find(
|
|
222
|
+
(mediaType) =>
|
|
223
|
+
!(
|
|
224
|
+
mediaType.includes('text/') &&
|
|
225
|
+
mediaType.includes('/form-data') &&
|
|
226
|
+
mediaType.includes('/json')
|
|
227
|
+
)
|
|
228
|
+
) ||
|
|
229
|
+
'application/octet-stream',
|
|
230
|
+
},
|
|
231
|
+
};
|
|
197
232
|
}
|
|
198
233
|
|
|
199
|
-
|
|
234
|
+
let jsonMediaType: string | null = null;
|
|
235
|
+
let formDataMediaType: string | null = null;
|
|
236
|
+
|
|
237
|
+
if (schema.mediaType) {
|
|
238
|
+
for (let i = 0; i < schema.mediaType.length; i++) {
|
|
239
|
+
const mediaType = schema.mediaType[i];
|
|
240
|
+
if (mediaType.includes('/json')) jsonMediaType = mediaType;
|
|
241
|
+
else if (mediaType.includes('/form-data')) formDataMediaType = mediaType;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (formDataMediaType) {
|
|
246
|
+
if (
|
|
247
|
+
!jsonMediaType ||
|
|
248
|
+
// Prefer FormData serialization if one of the fields is a Blob
|
|
249
|
+
Object.values(body).some((value) => value instanceof Blob)
|
|
250
|
+
) {
|
|
251
|
+
return {
|
|
252
|
+
body: getRequestBodyFormData(body),
|
|
253
|
+
headers: {
|
|
254
|
+
// remove `Content-Type` if the serialized body is FormData;
|
|
255
|
+
// the browser will correctly set Content-Type & boundary expression
|
|
256
|
+
'Content-Type': null,
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return {
|
|
263
|
+
body: JSON.stringify(body),
|
|
264
|
+
headers: {
|
|
265
|
+
'Content-Type': jsonMediaType ?? 'application/json',
|
|
266
|
+
},
|
|
267
|
+
};
|
|
200
268
|
}
|
|
201
269
|
|
|
202
|
-
function getRequestBodyFormData(
|
|
203
|
-
body
|
|
204
|
-
|
|
270
|
+
function getRequestBodyFormData(
|
|
271
|
+
body: NonNullable<RequestFnInfo['body']>
|
|
272
|
+
): FormData {
|
|
205
273
|
if (body instanceof FormData) return body;
|
|
206
|
-
if (body === null) return;
|
|
207
|
-
|
|
208
|
-
if (body instanceof Blob) throw new Error('Blob not supported in form-data');
|
|
209
|
-
if (body instanceof ArrayBuffer)
|
|
210
|
-
throw new Error('ArrayBuffer not supported in form-data');
|
|
211
|
-
if (body instanceof URLSearchParams)
|
|
212
|
-
throw new Error('URLSearchParams not supported in form-data');
|
|
213
|
-
if (body instanceof ReadableStream)
|
|
214
|
-
throw new Error('ReadableStream not supported in form-data');
|
|
215
|
-
if (typeof body === 'string')
|
|
216
|
-
throw new Error('String not supported in form-data');
|
|
217
274
|
if (typeof body !== 'object')
|
|
218
275
|
throw new Error(`Unsupported body type ${typeof body} in form-data.`);
|
|
219
276
|
|
|
@@ -240,187 +297,20 @@ function getRequestBodyFormData({
|
|
|
240
297
|
return formData;
|
|
241
298
|
}
|
|
242
299
|
|
|
243
|
-
function getBodyContentType(body: RequestFnPayload['body']) {
|
|
244
|
-
if (!body) return;
|
|
245
|
-
if (body instanceof Blob) return body.type || 'application/octet-stream';
|
|
246
|
-
if (typeof body === 'string') return 'text/plain';
|
|
247
|
-
if (!(body instanceof FormData)) return 'application/json';
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
async function processResponse<TData, TError>(
|
|
251
|
-
response: Response
|
|
252
|
-
): Promise<RequestFnResponse<TData, TError>> {
|
|
253
|
-
if (response.status === 204 || response.headers.get('Content-Length') === '0')
|
|
254
|
-
return (
|
|
255
|
-
response.ok ? { data: {}, response } : { error: {}, response }
|
|
256
|
-
) as RequestFnResponse<TData, TError>;
|
|
257
|
-
|
|
258
|
-
if (isJsonResponse(response)) {
|
|
259
|
-
// clone response before parsing every time to allow multiple reads
|
|
260
|
-
const jsonResponse = response.clone().json();
|
|
261
|
-
return resolveResponse(
|
|
262
|
-
response,
|
|
263
|
-
response.ok ? jsonResponse : Promise.reject(await jsonResponse)
|
|
264
|
-
);
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
const jsonResponse = new Promise<TData>((resolve, reject) =>
|
|
268
|
-
// attempt to parse JSON for successful responses, otherwise fail
|
|
269
|
-
response.clone().text().then(JSON.parse).then(resolve, reject)
|
|
270
|
-
);
|
|
271
|
-
|
|
272
|
-
return resolveResponse(
|
|
273
|
-
response,
|
|
274
|
-
response.ok ? jsonResponse : Promise.reject(await jsonResponse)
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
function isJsonResponse(response: Response) {
|
|
279
|
-
const contentType = response.headers.get('Content-Type')?.toLowerCase();
|
|
280
|
-
return contentType?.includes('/json') || contentType?.includes('+json');
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
function resolveResponse<TData, TError>(
|
|
284
|
-
error: Error
|
|
285
|
-
): Promise<RequestFnResponse<TData, TError>>;
|
|
286
|
-
function resolveResponse<TData, TError>(
|
|
287
|
-
responseToReturn: Response,
|
|
288
|
-
responsePromise: Promise<TData>
|
|
289
|
-
): Promise<RequestFnResponse<TData, TError>>;
|
|
290
|
-
function resolveResponse<TData, TError>(
|
|
291
|
-
responseToReturn: Response | Error,
|
|
292
|
-
responsePromise?: Promise<TData>
|
|
293
|
-
): Promise<RequestFnResponse<TData, TError>> {
|
|
294
|
-
if (!responsePromise)
|
|
295
|
-
return Promise.reject({
|
|
296
|
-
error: responseToReturn,
|
|
297
|
-
response: undefined,
|
|
298
|
-
data: undefined,
|
|
299
|
-
});
|
|
300
|
-
|
|
301
|
-
return responsePromise
|
|
302
|
-
.then(
|
|
303
|
-
(data) =>
|
|
304
|
-
({ data, response: responseToReturn }) as RequestFnResponse<
|
|
305
|
-
TData,
|
|
306
|
-
TError
|
|
307
|
-
>
|
|
308
|
-
)
|
|
309
|
-
.catch(
|
|
310
|
-
(error) =>
|
|
311
|
-
({ error, response: responseToReturn }) as RequestFnResponse<
|
|
312
|
-
TData,
|
|
313
|
-
TError
|
|
314
|
-
>
|
|
315
|
-
);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// To have definitely typed headers without a conversion to stings
|
|
319
|
-
export type HeadersOptions =
|
|
320
|
-
| HeadersInit
|
|
321
|
-
| Record<string, string | number | boolean | null | undefined>;
|
|
322
|
-
|
|
323
|
-
export interface OperationSchema {
|
|
324
|
-
/**
|
|
325
|
-
* Operation path
|
|
326
|
-
* @example /user/{id}
|
|
327
|
-
*/
|
|
328
|
-
readonly url: string; //todo::rename to `path`
|
|
329
|
-
|
|
330
|
-
/**
|
|
331
|
-
* Operation method
|
|
332
|
-
*/
|
|
333
|
-
readonly method:
|
|
334
|
-
| 'get'
|
|
335
|
-
| 'put'
|
|
336
|
-
| 'post'
|
|
337
|
-
| 'patch'
|
|
338
|
-
| 'delete'
|
|
339
|
-
| 'options'
|
|
340
|
-
| 'head'
|
|
341
|
-
| 'trace';
|
|
342
|
-
|
|
343
|
-
/**
|
|
344
|
-
* Media type of the request body
|
|
345
|
-
* @example application/json
|
|
346
|
-
*/
|
|
347
|
-
readonly mediaType?: string;
|
|
348
|
-
|
|
349
|
-
readonly security?: string[];
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
export interface RequestFnPayload {
|
|
353
|
-
/**
|
|
354
|
-
* Base URL to use for the request
|
|
355
|
-
* @example 'https://api.example.com'
|
|
356
|
-
*/
|
|
357
|
-
baseUrl?: string;
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* OpenAPI parameters
|
|
361
|
-
* @example
|
|
362
|
-
* ```ts
|
|
363
|
-
* { path: {id: 1}, query: {search: 'hello'} }
|
|
364
|
-
* ```
|
|
365
|
-
*/
|
|
366
|
-
readonly parameters?: {
|
|
367
|
-
readonly path?: Record<string, any>;
|
|
368
|
-
readonly header?: Record<string, any>;
|
|
369
|
-
readonly query?: Record<string, any>;
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* Request body
|
|
374
|
-
* @example { name: 'John' }
|
|
375
|
-
*/
|
|
376
|
-
readonly body?: BodyInit | Record<string, unknown> | null;
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* Tanstack Query Meta
|
|
380
|
-
*/
|
|
381
|
-
meta?: Record<string, unknown>;
|
|
382
|
-
|
|
383
|
-
/** An AbortSignal to set request's signal. */
|
|
384
|
-
signal?: AbortSignal | null;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
export interface RequestFnInfo
|
|
388
|
-
extends RequestFnPayload,
|
|
389
|
-
Omit<RequestInit, 'headers' | 'method' | 'body' | 'signal'> {
|
|
390
|
-
/**
|
|
391
|
-
* Request headers
|
|
392
|
-
* @example { 'X-Auth': '123' }
|
|
393
|
-
*/
|
|
394
|
-
readonly headers?: HeadersOptions;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
export interface RequestFnOptions {
|
|
398
|
-
urlSerializer?: typeof urlSerializer;
|
|
399
|
-
bodySerializer?: typeof bodySerializer;
|
|
400
|
-
fetch?: typeof fetch;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
export type RequestFn<TData, TError> = typeof requestFn<TData, TError>;
|
|
404
|
-
|
|
405
|
-
export type RequestFnResponse<TData, TError> =
|
|
406
|
-
| {
|
|
407
|
-
data?: TData;
|
|
408
|
-
response: Response;
|
|
409
|
-
error?: never;
|
|
410
|
-
}
|
|
411
|
-
| {
|
|
412
|
-
// server error
|
|
413
|
-
error?: TError | Error;
|
|
414
|
-
response: Response;
|
|
415
|
-
data?: never;
|
|
416
|
-
}
|
|
417
|
-
| {
|
|
418
|
-
// network error
|
|
419
|
-
error?: Error;
|
|
420
|
-
data?: never;
|
|
421
|
-
response?: never;
|
|
422
|
-
};
|
|
423
|
-
|
|
424
300
|
type WithRequired<T, K extends keyof T> = T & {
|
|
425
301
|
[_ in K]: {};
|
|
426
302
|
};
|
|
303
|
+
|
|
304
|
+
export type {
|
|
305
|
+
RequestFn,
|
|
306
|
+
RequestFnResponse,
|
|
307
|
+
HeadersOptions,
|
|
308
|
+
RequestFnOptions,
|
|
309
|
+
RequestFnInfo,
|
|
310
|
+
OperationSchema,
|
|
311
|
+
} from '@openapi-qraft/tanstack-query-react-types';
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* @deprecated use `RequestFnInfo` instead
|
|
315
|
+
*/
|
|
316
|
+
export type RequestFnPayload = RequestFnInfo;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { RequestFnResponse } from '@openapi-qraft/tanstack-query-react-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Processes the response from the server.
|
|
5
|
+
* @beta
|
|
6
|
+
*/
|
|
7
|
+
export async function processResponse<TData, TError>(
|
|
8
|
+
response: Response
|
|
9
|
+
): Promise<RequestFnResponse<TData, TError>> {
|
|
10
|
+
if (response.status === 204 || response.headers.get('Content-Length') === '0')
|
|
11
|
+
return (
|
|
12
|
+
response.ok ? { data: {}, response } : { error: {}, response }
|
|
13
|
+
) as RequestFnResponse<TData, TError>;
|
|
14
|
+
|
|
15
|
+
if (isJsonResponse(response)) {
|
|
16
|
+
// clone response before parsing every time to allow multiple reads
|
|
17
|
+
const jsonResponse = response.clone().json();
|
|
18
|
+
return resolveResponse(
|
|
19
|
+
response,
|
|
20
|
+
response.ok ? jsonResponse : Promise.reject(await jsonResponse)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const jsonResponse = new Promise<TData>((resolve, reject) =>
|
|
25
|
+
// attempt to parse JSON for successful responses, otherwise fail
|
|
26
|
+
response.clone().text().then(JSON.parse).then(resolve, reject)
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
return resolveResponse(
|
|
30
|
+
response,
|
|
31
|
+
response.ok ? jsonResponse : Promise.reject(await jsonResponse)
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Resolves the response from the server.
|
|
37
|
+
* @beta
|
|
38
|
+
*/
|
|
39
|
+
export function resolveResponse<TData, TError>(
|
|
40
|
+
error: Error
|
|
41
|
+
): Promise<RequestFnResponse<TData, TError>>;
|
|
42
|
+
export function resolveResponse<TData, TError>(
|
|
43
|
+
responseToReturn: Response,
|
|
44
|
+
responsePromise: Promise<TData>
|
|
45
|
+
): Promise<RequestFnResponse<TData, TError>>;
|
|
46
|
+
export function resolveResponse<TData, TError>(
|
|
47
|
+
responseToReturn: Response | Error,
|
|
48
|
+
responsePromise?: Promise<TData>
|
|
49
|
+
): Promise<RequestFnResponse<TData, TError>> {
|
|
50
|
+
if (!responsePromise)
|
|
51
|
+
return Promise.reject({
|
|
52
|
+
error: responseToReturn,
|
|
53
|
+
response: undefined,
|
|
54
|
+
data: undefined,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return responsePromise
|
|
58
|
+
.then(
|
|
59
|
+
(data) =>
|
|
60
|
+
({ data, response: responseToReturn }) as RequestFnResponse<
|
|
61
|
+
TData,
|
|
62
|
+
TError
|
|
63
|
+
>
|
|
64
|
+
)
|
|
65
|
+
.catch(
|
|
66
|
+
(error) =>
|
|
67
|
+
({ error, response: responseToReturn }) as RequestFnResponse<
|
|
68
|
+
TData,
|
|
69
|
+
TError
|
|
70
|
+
>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function isJsonResponse(response: Response) {
|
|
75
|
+
const contentType = response.headers.get('Content-Type')?.toLowerCase();
|
|
76
|
+
return contentType?.includes('/json') || contentType?.includes('+json');
|
|
77
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import type { ServiceOperationQueryKey } from '@openapi-qraft/tanstack-query-react-types';
|
|
3
4
|
import type { QueryClient } from '@tanstack/query-core';
|
|
4
5
|
import type { UseQueryOptions } from '@tanstack/react-query';
|
|
5
6
|
import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
|
|
6
|
-
import type { ServiceOperationQueryKey } from '../service-operation/ServiceOperationKey.js';
|
|
7
7
|
import type { OperationSchema } from './requestFn.js';
|
|
8
8
|
import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
|
|
9
9
|
import { composeQueryKey } from './composeQueryKey.js';
|
|
@@ -24,7 +24,6 @@ export function useComposeUseQueryOptions(
|
|
|
24
24
|
|
|
25
25
|
const queryFn =
|
|
26
26
|
options?.queryFn ??
|
|
27
|
-
// @ts-expect-error - Too complex to type
|
|
28
27
|
function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
29
28
|
return qraftOptions
|
|
30
29
|
.requestFn(schema, {
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import {
|
|
2
|
+
API,
|
|
3
|
+
ASTPath,
|
|
4
|
+
CallExpression,
|
|
5
|
+
FileInfo,
|
|
6
|
+
MemberExpression,
|
|
7
|
+
Options,
|
|
8
|
+
} from 'jscodeshift';
|
|
9
|
+
|
|
10
|
+
export default function transformer(
|
|
11
|
+
file: FileInfo,
|
|
12
|
+
api: API,
|
|
13
|
+
options: Options
|
|
14
|
+
) {
|
|
15
|
+
const j = api.jscodeshift;
|
|
16
|
+
const root = j(file.source);
|
|
17
|
+
|
|
18
|
+
const methodNames = [
|
|
19
|
+
'fetchQuery',
|
|
20
|
+
'fetchInfiniteQuery',
|
|
21
|
+
'prefetchQuery',
|
|
22
|
+
'prefetchInfiniteQuery',
|
|
23
|
+
'getQueryData',
|
|
24
|
+
'getQueriesData',
|
|
25
|
+
'setQueryData',
|
|
26
|
+
'getQueryState',
|
|
27
|
+
'setQueriesData',
|
|
28
|
+
'invalidateQueries',
|
|
29
|
+
'refetchQueries',
|
|
30
|
+
'cancelQueries',
|
|
31
|
+
'removeQueries',
|
|
32
|
+
'resetQueries',
|
|
33
|
+
'isFetching',
|
|
34
|
+
'isMutating',
|
|
35
|
+
'setInfiniteQueryData',
|
|
36
|
+
'getInfiniteQueryData',
|
|
37
|
+
'getInfiniteQueryState',
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const hooksWithTwoArgs = [
|
|
41
|
+
'useSuspenseQueries',
|
|
42
|
+
'useIsFetching',
|
|
43
|
+
'useMutationState',
|
|
44
|
+
'useIsMutating',
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const hooksWithThreeArgs = [
|
|
48
|
+
'useQuery',
|
|
49
|
+
'useMutation',
|
|
50
|
+
'useInfiniteQuery',
|
|
51
|
+
'useQueries',
|
|
52
|
+
'useSuspenseQuery',
|
|
53
|
+
'useSuspenseInfiniteQuery',
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const apiClientVariableNames = getAPIClientVariableNames(options);
|
|
57
|
+
|
|
58
|
+
return root
|
|
59
|
+
.find(j.CallExpression)
|
|
60
|
+
.forEach((path: ASTPath<CallExpression>) => {
|
|
61
|
+
const callee = path.node.callee;
|
|
62
|
+
if (callee.type === 'MemberExpression') {
|
|
63
|
+
const apiClientCallMethodName = getAPIClientCallMethodName(
|
|
64
|
+
callee,
|
|
65
|
+
apiClientVariableNames
|
|
66
|
+
);
|
|
67
|
+
if (apiClientCallMethodName) {
|
|
68
|
+
if (methodNames.includes(apiClientCallMethodName)) {
|
|
69
|
+
// Remove the last argument `queryClient`
|
|
70
|
+
path.node.arguments = path.node.arguments.slice(0, -1);
|
|
71
|
+
} else if (
|
|
72
|
+
hooksWithTwoArgs.includes(apiClientCallMethodName) &&
|
|
73
|
+
path.node.arguments.length === 2
|
|
74
|
+
) {
|
|
75
|
+
// Remove the second argument for specific hooks if there are exactly two arguments
|
|
76
|
+
path.node.arguments = path.node.arguments.slice(0, 1);
|
|
77
|
+
} else if (
|
|
78
|
+
hooksWithThreeArgs.includes(apiClientCallMethodName) &&
|
|
79
|
+
path.node.arguments.length === 3
|
|
80
|
+
) {
|
|
81
|
+
// Remove the third argument for specific hooks if there are exactly three arguments
|
|
82
|
+
path.node.arguments = path.node.arguments.slice(0, 2);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
.toSource();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function getAPIClientCallMethodName(
|
|
91
|
+
node: MemberExpression,
|
|
92
|
+
apiClientNames: string[]
|
|
93
|
+
): string | undefined {
|
|
94
|
+
if (
|
|
95
|
+
node.object.type === 'MemberExpression' &&
|
|
96
|
+
node.object.object.type === 'MemberExpression' &&
|
|
97
|
+
node.object.object.object.type === 'Identifier' &&
|
|
98
|
+
node.object.object.property.type === 'Identifier' &&
|
|
99
|
+
node.object.property.type === 'Identifier' &&
|
|
100
|
+
node.property.type === 'Identifier'
|
|
101
|
+
) {
|
|
102
|
+
const apiClientVariableName = node.object.object.object.name;
|
|
103
|
+
|
|
104
|
+
if (apiClientNames.includes(apiClientVariableName))
|
|
105
|
+
return node.property.name;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getAPIClientVariableNames(options: Options) {
|
|
110
|
+
const apiClientVariableNameOption = options['api-client-variable-name'];
|
|
111
|
+
|
|
112
|
+
if (!apiClientVariableNameOption) return ['api', 'qraft'];
|
|
113
|
+
|
|
114
|
+
return String(apiClientVariableNameOption)
|
|
115
|
+
.split(',')
|
|
116
|
+
.map((name) => name.trim())
|
|
117
|
+
.filter(Boolean);
|
|
118
|
+
}
|