@openapi-qraft/react 1.11.0-beta.3 → 1.11.0-beta.4
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 +6 -0
- package/dist/cjs/QraftContext.cjs +9 -0
- package/dist/cjs/QraftContext.cjs.map +1 -0
- package/dist/cjs/Unstable_QraftSecureRequestFn.cjs +193 -0
- package/dist/cjs/Unstable_QraftSecureRequestFn.cjs.map +1 -0
- package/dist/cjs/callbacks/cancelQueries.cjs +10 -0
- package/dist/cjs/callbacks/cancelQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/fetchInfiniteQuery.cjs +10 -0
- package/dist/cjs/callbacks/fetchInfiniteQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/fetchQuery.cjs +10 -0
- package/dist/cjs/callbacks/fetchQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/getInfiniteQueryData.cjs +10 -0
- package/dist/cjs/callbacks/getInfiniteQueryData.cjs.map +1 -0
- package/dist/cjs/callbacks/getInfiniteQueryKey.cjs +10 -0
- package/dist/cjs/callbacks/getInfiniteQueryKey.cjs.map +1 -0
- package/dist/cjs/callbacks/getInfiniteQueryState.cjs +10 -0
- package/dist/cjs/callbacks/getInfiniteQueryState.cjs.map +1 -0
- package/dist/cjs/callbacks/getMutationKey.cjs +10 -0
- package/dist/cjs/callbacks/getMutationKey.cjs.map +1 -0
- package/dist/cjs/callbacks/getQueriesData.cjs +10 -0
- package/dist/cjs/callbacks/getQueriesData.cjs.map +1 -0
- package/dist/cjs/callbacks/getQueryData.cjs +10 -0
- package/dist/cjs/callbacks/getQueryData.cjs.map +1 -0
- package/dist/cjs/callbacks/getQueryKey.cjs +10 -0
- package/dist/cjs/callbacks/getQueryKey.cjs.map +1 -0
- package/dist/cjs/callbacks/getQueryState.cjs +10 -0
- package/dist/cjs/callbacks/getQueryState.cjs.map +1 -0
- package/dist/cjs/callbacks/index.cjs +76 -0
- package/dist/cjs/callbacks/index.cjs.map +1 -0
- package/dist/cjs/callbacks/invalidateQueries.cjs +10 -0
- package/dist/cjs/callbacks/invalidateQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/isFetching.cjs +10 -0
- package/dist/cjs/callbacks/isFetching.cjs.map +1 -0
- package/dist/cjs/callbacks/isMutating.cjs +10 -0
- package/dist/cjs/callbacks/isMutating.cjs.map +1 -0
- package/dist/cjs/callbacks/mutationFn.cjs +12 -0
- package/dist/cjs/callbacks/mutationFn.cjs.map +1 -0
- package/dist/cjs/callbacks/operationInvokeFn.cjs +22 -0
- package/dist/cjs/callbacks/operationInvokeFn.cjs.map +1 -0
- package/dist/cjs/callbacks/prefetchInfiniteQuery.cjs +10 -0
- package/dist/cjs/callbacks/prefetchInfiniteQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/prefetchQuery.cjs +10 -0
- package/dist/cjs/callbacks/prefetchQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/queryFn.cjs +13 -0
- package/dist/cjs/callbacks/queryFn.cjs.map +1 -0
- package/dist/cjs/callbacks/refetchQueries.cjs +10 -0
- package/dist/cjs/callbacks/refetchQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/removeQueries.cjs +10 -0
- package/dist/cjs/callbacks/removeQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/resetQueries.cjs +10 -0
- package/dist/cjs/callbacks/resetQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/setInfiniteQueryData.cjs +10 -0
- package/dist/cjs/callbacks/setInfiniteQueryData.cjs.map +1 -0
- package/dist/cjs/callbacks/setQueriesData.cjs +10 -0
- package/dist/cjs/callbacks/setQueriesData.cjs.map +1 -0
- package/dist/cjs/callbacks/setQueryData.cjs +10 -0
- package/dist/cjs/callbacks/setQueryData.cjs.map +1 -0
- package/dist/cjs/callbacks/useInfiniteQuery.cjs +13 -0
- package/dist/cjs/callbacks/useInfiniteQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/useIsFetching.cjs +14 -0
- package/dist/cjs/callbacks/useIsFetching.cjs.map +1 -0
- package/dist/cjs/callbacks/useIsMutating.cjs +14 -0
- package/dist/cjs/callbacks/useIsMutating.cjs.map +1 -0
- package/dist/cjs/callbacks/useMutation.cjs +37 -0
- package/dist/cjs/callbacks/useMutation.cjs.map +1 -0
- package/dist/cjs/callbacks/useMutationState.cjs +17 -0
- package/dist/cjs/callbacks/useMutationState.cjs.map +1 -0
- package/dist/cjs/callbacks/useQueries.cjs +41 -0
- package/dist/cjs/callbacks/useQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/useQuery.cjs +13 -0
- package/dist/cjs/callbacks/useQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/useSuspenseInfiniteQuery.cjs +13 -0
- package/dist/cjs/callbacks/useSuspenseInfiniteQuery.cjs.map +1 -0
- package/dist/cjs/callbacks/useSuspenseQueries.cjs +41 -0
- package/dist/cjs/callbacks/useSuspenseQueries.cjs.map +1 -0
- package/dist/cjs/callbacks/useSuspenseQuery.cjs +13 -0
- package/dist/cjs/callbacks/useSuspenseQuery.cjs.map +1 -0
- package/dist/cjs/index.cjs +22 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs +47 -0
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs.map +1 -0
- package/dist/cjs/lib/callQueryClientMethodWithMutationFilters.cjs +19 -0
- package/dist/cjs/lib/callQueryClientMethodWithMutationFilters.cjs.map +1 -0
- package/dist/cjs/lib/callQueryClientMethodWithQueryFilters.cjs +19 -0
- package/dist/cjs/lib/callQueryClientMethodWithQueryFilters.cjs.map +1 -0
- package/dist/cjs/lib/callQueryClientMethodWithQueryKey.cjs +20 -0
- package/dist/cjs/lib/callQueryClientMethodWithQueryKey.cjs.map +1 -0
- package/dist/cjs/lib/composeBaseQueryKey.cjs +14 -0
- package/dist/cjs/lib/composeBaseQueryKey.cjs.map +1 -0
- package/dist/cjs/lib/composeInfiniteQueryKey.cjs +10 -0
- package/dist/cjs/lib/composeInfiniteQueryKey.cjs.map +1 -0
- package/dist/cjs/lib/composeMutationFilters.cjs +36 -0
- package/dist/cjs/lib/composeMutationFilters.cjs.map +1 -0
- package/dist/cjs/lib/composeMutationKey.cjs +29 -0
- package/dist/cjs/lib/composeMutationKey.cjs.map +1 -0
- package/dist/cjs/lib/composeQueryFilters.cjs +38 -0
- package/dist/cjs/lib/composeQueryFilters.cjs.map +1 -0
- package/dist/cjs/lib/composeQueryKey.cjs +10 -0
- package/dist/cjs/lib/composeQueryKey.cjs.map +1 -0
- package/dist/cjs/lib/createRecursiveProxy.cjs +35 -0
- package/dist/cjs/lib/createRecursiveProxy.cjs.map +1 -0
- package/dist/cjs/lib/jwt-decode/index.cjs +62 -0
- package/dist/cjs/lib/jwt-decode/index.cjs.map +1 -0
- package/dist/cjs/lib/requestFn.cjs +181 -0
- package/dist/cjs/lib/requestFn.cjs.map +1 -0
- package/dist/cjs/lib/shelfMerge.cjs +30 -0
- package/dist/cjs/lib/shelfMerge.cjs.map +1 -0
- package/dist/cjs/lib/useComposeUseQueryOptions.cjs +40 -0
- package/dist/cjs/lib/useComposeUseQueryOptions.cjs.map +1 -0
- package/dist/cjs/lib/useQueryClient.cjs +18 -0
- package/dist/cjs/lib/useQueryClient.cjs.map +1 -0
- package/dist/cjs/qraftAPIClient.cjs +48 -0
- package/dist/cjs/qraftAPIClient.cjs.map +1 -0
- package/dist/esm/QraftContext.js +7 -7
- package/dist/esm/QraftContext.js.map +1 -1
- package/dist/esm/Unstable_QraftSecureRequestFn.js +174 -176
- package/dist/esm/Unstable_QraftSecureRequestFn.js.map +1 -1
- package/dist/esm/callbacks/cancelQueries.js +6 -10
- package/dist/esm/callbacks/cancelQueries.js.map +1 -1
- package/dist/esm/callbacks/fetchInfiniteQuery.js +7 -12
- package/dist/esm/callbacks/fetchInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/fetchQuery.js +7 -12
- package/dist/esm/callbacks/fetchQuery.js.map +1 -1
- package/dist/esm/callbacks/getInfiniteQueryData.js +6 -11
- package/dist/esm/callbacks/getInfiniteQueryData.js.map +1 -1
- package/dist/esm/callbacks/getInfiniteQueryKey.js +7 -7
- package/dist/esm/callbacks/getInfiniteQueryKey.js.map +1 -1
- package/dist/esm/callbacks/getInfiniteQueryState.js +6 -11
- package/dist/esm/callbacks/getInfiniteQueryState.js.map +1 -1
- package/dist/esm/callbacks/getMutationKey.js +7 -7
- package/dist/esm/callbacks/getMutationKey.js.map +1 -1
- package/dist/esm/callbacks/getQueriesData.js +6 -10
- package/dist/esm/callbacks/getQueriesData.js.map +1 -1
- package/dist/esm/callbacks/getQueryData.js +6 -11
- package/dist/esm/callbacks/getQueryData.js.map +1 -1
- package/dist/esm/callbacks/getQueryKey.js +7 -7
- package/dist/esm/callbacks/getQueryKey.js.map +1 -1
- package/dist/esm/callbacks/getQueryState.js +6 -11
- package/dist/esm/callbacks/getQueryState.js.map +1 -1
- package/dist/esm/callbacks/index.js +36 -73
- package/dist/esm/callbacks/index.js.map +1 -1
- package/dist/esm/callbacks/invalidateQueries.js +6 -10
- package/dist/esm/callbacks/invalidateQueries.js.map +1 -1
- package/dist/esm/callbacks/isFetching.js +6 -10
- package/dist/esm/callbacks/isFetching.js.map +1 -1
- package/dist/esm/callbacks/isMutating.js +6 -10
- package/dist/esm/callbacks/isMutating.js.map +1 -1
- package/dist/esm/callbacks/mutationFn.js +9 -10
- package/dist/esm/callbacks/mutationFn.js.map +1 -1
- package/dist/esm/callbacks/operationInvokeFn.js +19 -16
- package/dist/esm/callbacks/operationInvokeFn.js.map +1 -1
- package/dist/esm/callbacks/prefetchInfiniteQuery.js +7 -12
- package/dist/esm/callbacks/prefetchInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/prefetchQuery.js +7 -12
- package/dist/esm/callbacks/prefetchQuery.js.map +1 -1
- package/dist/esm/callbacks/queryFn.js +10 -14
- package/dist/esm/callbacks/queryFn.js.map +1 -1
- package/dist/esm/callbacks/refetchQueries.js +6 -10
- package/dist/esm/callbacks/refetchQueries.js.map +1 -1
- package/dist/esm/callbacks/removeQueries.js +6 -10
- package/dist/esm/callbacks/removeQueries.js.map +1 -1
- package/dist/esm/callbacks/resetQueries.js +6 -10
- package/dist/esm/callbacks/resetQueries.js.map +1 -1
- package/dist/esm/callbacks/setInfiniteQueryData.js +6 -11
- package/dist/esm/callbacks/setInfiniteQueryData.js.map +1 -1
- package/dist/esm/callbacks/setQueriesData.js +6 -10
- package/dist/esm/callbacks/setQueriesData.js.map +1 -1
- package/dist/esm/callbacks/setQueryData.js +6 -11
- package/dist/esm/callbacks/setQueryData.js.map +1 -1
- package/dist/esm/callbacks/useInfiniteQuery.js +10 -13
- package/dist/esm/callbacks/useInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/useIsFetching.js +11 -14
- package/dist/esm/callbacks/useIsFetching.js.map +1 -1
- package/dist/esm/callbacks/useIsMutating.js +11 -16
- package/dist/esm/callbacks/useIsMutating.js.map +1 -1
- package/dist/esm/callbacks/useMutation.js +34 -43
- package/dist/esm/callbacks/useMutation.js.map +1 -1
- package/dist/esm/callbacks/useMutationState.js +14 -19
- package/dist/esm/callbacks/useMutationState.js.map +1 -1
- package/dist/esm/callbacks/useQueries.js +38 -46
- package/dist/esm/callbacks/useQueries.js.map +1 -1
- package/dist/esm/callbacks/useQuery.js +10 -13
- package/dist/esm/callbacks/useQuery.js.map +1 -1
- package/dist/esm/callbacks/useSuspenseInfiniteQuery.js +10 -13
- package/dist/esm/callbacks/useSuspenseInfiniteQuery.js.map +1 -1
- package/dist/esm/callbacks/useSuspenseQueries.js +38 -46
- package/dist/esm/callbacks/useSuspenseQueries.js.map +1 -1
- package/dist/esm/callbacks/useSuspenseQuery.js +10 -13
- package/dist/esm/callbacks/useSuspenseQuery.js.map +1 -1
- package/dist/esm/index.js +7 -29
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/callQueryClientFetchMethod.js +41 -41
- package/dist/esm/lib/callQueryClientFetchMethod.js.map +1 -1
- package/dist/esm/lib/callQueryClientMethodWithMutationFilters.js +16 -17
- package/dist/esm/lib/callQueryClientMethodWithMutationFilters.js.map +1 -1
- package/dist/esm/lib/callQueryClientMethodWithQueryFilters.js +16 -17
- package/dist/esm/lib/callQueryClientMethodWithQueryFilters.js.map +1 -1
- package/dist/esm/lib/callQueryClientMethodWithQueryKey.js +17 -16
- package/dist/esm/lib/callQueryClientMethodWithQueryKey.js.map +1 -1
- package/dist/esm/lib/composeBaseQueryKey.js +10 -8
- package/dist/esm/lib/composeBaseQueryKey.js.map +1 -1
- package/dist/esm/lib/composeInfiniteQueryKey.js +6 -6
- package/dist/esm/lib/composeInfiniteQueryKey.js.map +1 -1
- package/dist/esm/lib/composeMutationFilters.js +31 -28
- package/dist/esm/lib/composeMutationFilters.js.map +1 -1
- package/dist/esm/lib/composeMutationKey.js +22 -23
- package/dist/esm/lib/composeMutationKey.js.map +1 -1
- package/dist/esm/lib/composeQueryFilters.js +33 -30
- package/dist/esm/lib/composeQueryFilters.js.map +1 -1
- package/dist/esm/lib/composeQueryKey.js +6 -6
- package/dist/esm/lib/composeQueryKey.js.map +1 -1
- package/dist/esm/lib/createRecursiveProxy.js +30 -22
- package/dist/esm/lib/createRecursiveProxy.js.map +1 -1
- package/dist/esm/lib/jwt-decode/index.js +49 -56
- package/dist/esm/lib/jwt-decode/index.js.map +1 -1
- package/dist/esm/lib/requestFn.js +156 -155
- package/dist/esm/lib/requestFn.js.map +1 -1
- package/dist/esm/lib/shelfMerge.js +27 -28
- package/dist/esm/lib/shelfMerge.js.map +1 -1
- package/dist/esm/lib/useComposeUseQueryOptions.js +37 -31
- package/dist/esm/lib/useComposeUseQueryOptions.js.map +1 -1
- package/dist/esm/lib/useQueryClient.js +15 -15
- package/dist/esm/lib/useQueryClient.js.map +1 -1
- package/dist/esm/qraftAPIClient.js +40 -47
- package/dist/esm/qraftAPIClient.js.map +1 -1
- package/package.json +9 -15
- package/dist/cjs/QraftContext.js +0 -31
- package/dist/cjs/QraftContext.js.map +0 -1
- package/dist/cjs/ServiceOperation.js +0 -17
- package/dist/cjs/ServiceOperation.js.map +0 -1
- package/dist/cjs/Unstable_QraftSecureRequestFn.js +0 -214
- package/dist/cjs/Unstable_QraftSecureRequestFn.js.map +0 -1
- package/dist/cjs/callbacks/cancelQueries.js +0 -36
- package/dist/cjs/callbacks/cancelQueries.js.map +0 -1
- package/dist/cjs/callbacks/fetchInfiniteQuery.js +0 -37
- package/dist/cjs/callbacks/fetchInfiniteQuery.js.map +0 -1
- package/dist/cjs/callbacks/fetchQuery.js +0 -37
- package/dist/cjs/callbacks/fetchQuery.js.map +0 -1
- package/dist/cjs/callbacks/getInfiniteQueryData.js +0 -37
- package/dist/cjs/callbacks/getInfiniteQueryData.js.map +0 -1
- package/dist/cjs/callbacks/getInfiniteQueryKey.js +0 -32
- package/dist/cjs/callbacks/getInfiniteQueryKey.js.map +0 -1
- package/dist/cjs/callbacks/getInfiniteQueryState.js +0 -37
- package/dist/cjs/callbacks/getInfiniteQueryState.js.map +0 -1
- package/dist/cjs/callbacks/getMutationKey.js +0 -32
- package/dist/cjs/callbacks/getMutationKey.js.map +0 -1
- package/dist/cjs/callbacks/getQueriesData.js +0 -36
- package/dist/cjs/callbacks/getQueriesData.js.map +0 -1
- package/dist/cjs/callbacks/getQueryData.js +0 -37
- package/dist/cjs/callbacks/getQueryData.js.map +0 -1
- package/dist/cjs/callbacks/getQueryKey.js +0 -32
- package/dist/cjs/callbacks/getQueryKey.js.map +0 -1
- package/dist/cjs/callbacks/getQueryState.js +0 -37
- package/dist/cjs/callbacks/getQueryState.js.map +0 -1
- package/dist/cjs/callbacks/index.js +0 -131
- package/dist/cjs/callbacks/index.js.map +0 -1
- package/dist/cjs/callbacks/invalidateQueries.js +0 -36
- package/dist/cjs/callbacks/invalidateQueries.js.map +0 -1
- package/dist/cjs/callbacks/isFetching.js +0 -36
- package/dist/cjs/callbacks/isFetching.js.map +0 -1
- package/dist/cjs/callbacks/isMutating.js +0 -36
- package/dist/cjs/callbacks/isMutating.js.map +0 -1
- package/dist/cjs/callbacks/mutationFn.js +0 -35
- package/dist/cjs/callbacks/mutationFn.js.map +0 -1
- package/dist/cjs/callbacks/operationInvokeFn.js +0 -41
- package/dist/cjs/callbacks/operationInvokeFn.js.map +0 -1
- package/dist/cjs/callbacks/prefetchInfiniteQuery.js +0 -37
- package/dist/cjs/callbacks/prefetchInfiniteQuery.js.map +0 -1
- package/dist/cjs/callbacks/prefetchQuery.js +0 -37
- package/dist/cjs/callbacks/prefetchQuery.js.map +0 -1
- package/dist/cjs/callbacks/queryFn.js +0 -39
- package/dist/cjs/callbacks/queryFn.js.map +0 -1
- package/dist/cjs/callbacks/refetchQueries.js +0 -36
- package/dist/cjs/callbacks/refetchQueries.js.map +0 -1
- package/dist/cjs/callbacks/removeQueries.js +0 -36
- package/dist/cjs/callbacks/removeQueries.js.map +0 -1
- package/dist/cjs/callbacks/resetQueries.js +0 -36
- package/dist/cjs/callbacks/resetQueries.js.map +0 -1
- package/dist/cjs/callbacks/setInfiniteQueryData.js +0 -37
- package/dist/cjs/callbacks/setInfiniteQueryData.js.map +0 -1
- package/dist/cjs/callbacks/setQueriesData.js +0 -36
- package/dist/cjs/callbacks/setQueriesData.js.map +0 -1
- package/dist/cjs/callbacks/setQueryData.js +0 -37
- package/dist/cjs/callbacks/setQueryData.js.map +0 -1
- package/dist/cjs/callbacks/useInfiniteQuery.js +0 -36
- package/dist/cjs/callbacks/useInfiniteQuery.js.map +0 -1
- package/dist/cjs/callbacks/useIsFetching.js +0 -39
- package/dist/cjs/callbacks/useIsFetching.js.map +0 -1
- package/dist/cjs/callbacks/useIsMutating.js +0 -39
- package/dist/cjs/callbacks/useIsMutating.js.map +0 -1
- package/dist/cjs/callbacks/useMutation.js +0 -66
- package/dist/cjs/callbacks/useMutation.js.map +0 -1
- package/dist/cjs/callbacks/useMutationState.js +0 -42
- package/dist/cjs/callbacks/useMutationState.js.map +0 -1
- package/dist/cjs/callbacks/useQueries.js +0 -69
- package/dist/cjs/callbacks/useQueries.js.map +0 -1
- package/dist/cjs/callbacks/useQuery.js +0 -36
- package/dist/cjs/callbacks/useQuery.js.map +0 -1
- package/dist/cjs/callbacks/useSuspenseInfiniteQuery.js +0 -36
- package/dist/cjs/callbacks/useSuspenseInfiniteQuery.js.map +0 -1
- package/dist/cjs/callbacks/useSuspenseQueries.js +0 -69
- package/dist/cjs/callbacks/useSuspenseQueries.js.map +0 -1
- package/dist/cjs/callbacks/useSuspenseQuery.js +0 -36
- package/dist/cjs/callbacks/useSuspenseQuery.js.map +0 -1
- package/dist/cjs/index.js +0 -63
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/lib/PartialParameters.type.js +0 -17
- package/dist/cjs/lib/PartialParameters.type.js.map +0 -1
- package/dist/cjs/lib/callQueryClientFetchMethod.js +0 -69
- package/dist/cjs/lib/callQueryClientFetchMethod.js.map +0 -1
- package/dist/cjs/lib/callQueryClientMethodWithMutationFilters.js +0 -42
- package/dist/cjs/lib/callQueryClientMethodWithMutationFilters.js.map +0 -1
- package/dist/cjs/lib/callQueryClientMethodWithQueryFilters.js +0 -42
- package/dist/cjs/lib/callQueryClientMethodWithQueryFilters.js.map +0 -1
- package/dist/cjs/lib/callQueryClientMethodWithQueryKey.js +0 -41
- package/dist/cjs/lib/callQueryClientMethodWithQueryKey.js.map +0 -1
- package/dist/cjs/lib/composeBaseQueryKey.js +0 -34
- package/dist/cjs/lib/composeBaseQueryKey.js.map +0 -1
- package/dist/cjs/lib/composeInfiniteQueryKey.js +0 -32
- package/dist/cjs/lib/composeInfiniteQueryKey.js.map +0 -1
- package/dist/cjs/lib/composeMutationFilters.js +0 -55
- package/dist/cjs/lib/composeMutationFilters.js.map +0 -1
- package/dist/cjs/lib/composeMutationKey.js +0 -52
- package/dist/cjs/lib/composeMutationKey.js.map +0 -1
- package/dist/cjs/lib/composeQueryFilters.js +0 -57
- package/dist/cjs/lib/composeQueryFilters.js.map +0 -1
- package/dist/cjs/lib/composeQueryKey.js +0 -32
- package/dist/cjs/lib/composeQueryKey.js.map +0 -1
- package/dist/cjs/lib/createRecursiveProxy.js +0 -49
- package/dist/cjs/lib/createRecursiveProxy.js.map +0 -1
- package/dist/cjs/lib/jwt-decode/index.js +0 -91
- package/dist/cjs/lib/jwt-decode/index.js.map +0 -1
- package/dist/cjs/lib/requestFn.js +0 -202
- package/dist/cjs/lib/requestFn.js.map +0 -1
- package/dist/cjs/lib/shelfMerge.js +0 -53
- package/dist/cjs/lib/shelfMerge.js.map +0 -1
- package/dist/cjs/lib/useComposeUseQueryOptions.js +0 -56
- package/dist/cjs/lib/useComposeUseQueryOptions.js.map +0 -1
- package/dist/cjs/lib/useQueryClient.js +0 -38
- package/dist/cjs/lib/useQueryClient.js.map +0 -1
- package/dist/cjs/qraftAPIClient.js +0 -77
- package/dist/cjs/qraftAPIClient.js.map +0 -1
- package/dist/cjs/service-operation/OperationInfiniteData.js +0 -17
- package/dist/cjs/service-operation/OperationInfiniteData.js.map +0 -1
- package/dist/cjs/service-operation/QueryFilters.js +0 -17
- package/dist/cjs/service-operation/QueryFilters.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperation.js +0 -17
- package/dist/cjs/service-operation/ServiceOperation.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationCancelQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationCancelQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationFetchInfiniteQuery.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationFetchInfiniteQuery.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationFetchQuery.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationFetchQuery.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationGetInfiniteQueryData.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationGetInfiniteQueryData.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationGetQueriesData.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationGetQueriesData.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationGetQueryData.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationGetQueryData.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationGetQueryState.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationGetQueryState.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationInvalidateQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationInvalidateQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationIsFetchingQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationIsFetchingQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationIsMutatingQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationIsMutatingQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationKey.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationKey.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationMutationFn.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationMutationFn.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationQueryFn.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationQueryFn.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationRefetchQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationRefetchQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationRemoveQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationRemoveQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationResetQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationResetQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationSetInfiniteQueryData.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationSetInfiniteQueryData.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationSetQueriesData.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationSetQueriesData.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationSetQueryData.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationSetQueryData.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseInfiniteQuery.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseInfiniteQuery.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseIsFetchingQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseIsFetchingQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseIsMutating.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseIsMutating.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseMutation.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseMutation.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseMutationState.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseMutationState.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseQuery.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseQuery.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseSuspenseInfiniteQuery.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseSuspenseInfiniteQuery.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseSuspenseQueries.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseSuspenseQueries.js.map +0 -1
- package/dist/cjs/service-operation/ServiceOperationUseSuspenseQueryQuery.js +0 -17
- package/dist/cjs/service-operation/ServiceOperationUseSuspenseQueryQuery.js.map +0 -1
- package/dist/cjs/service-operation/index.js +0 -17
- package/dist/cjs/service-operation/index.js.map +0 -1
- package/dist/esm/ServiceOperation.js +0 -1
- package/dist/esm/ServiceOperation.js.map +0 -1
- package/dist/esm/lib/PartialParameters.type.js +0 -1
- package/dist/esm/lib/PartialParameters.type.js.map +0 -1
- package/dist/esm/service-operation/OperationInfiniteData.js +0 -1
- package/dist/esm/service-operation/OperationInfiniteData.js.map +0 -1
- package/dist/esm/service-operation/QueryFilters.js +0 -1
- package/dist/esm/service-operation/QueryFilters.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperation.js +0 -1
- package/dist/esm/service-operation/ServiceOperation.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationCancelQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationCancelQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationFetchInfiniteQuery.js +0 -1
- package/dist/esm/service-operation/ServiceOperationFetchInfiniteQuery.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationFetchQuery.js +0 -1
- package/dist/esm/service-operation/ServiceOperationFetchQuery.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationGetInfiniteQueryData.js +0 -1
- package/dist/esm/service-operation/ServiceOperationGetInfiniteQueryData.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationGetQueriesData.js +0 -1
- package/dist/esm/service-operation/ServiceOperationGetQueriesData.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationGetQueryData.js +0 -1
- package/dist/esm/service-operation/ServiceOperationGetQueryData.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationGetQueryState.js +0 -1
- package/dist/esm/service-operation/ServiceOperationGetQueryState.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationInvalidateQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationInvalidateQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationIsFetchingQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationIsFetchingQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationIsMutatingQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationIsMutatingQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationKey.js +0 -1
- package/dist/esm/service-operation/ServiceOperationKey.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationMutationFn.js +0 -1
- package/dist/esm/service-operation/ServiceOperationMutationFn.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationQueryFn.js +0 -1
- package/dist/esm/service-operation/ServiceOperationQueryFn.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationRefetchQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationRefetchQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationRemoveQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationRemoveQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationResetQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationResetQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationSetInfiniteQueryData.js +0 -1
- package/dist/esm/service-operation/ServiceOperationSetInfiniteQueryData.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationSetQueriesData.js +0 -1
- package/dist/esm/service-operation/ServiceOperationSetQueriesData.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationSetQueryData.js +0 -1
- package/dist/esm/service-operation/ServiceOperationSetQueryData.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseInfiniteQuery.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseInfiniteQuery.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseIsFetchingQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseIsFetchingQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseIsMutating.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseIsMutating.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseMutation.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseMutation.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseMutationState.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseMutationState.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseQuery.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseQuery.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseSuspenseInfiniteQuery.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseSuspenseInfiniteQuery.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseSuspenseQueries.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseSuspenseQueries.js.map +0 -1
- package/dist/esm/service-operation/ServiceOperationUseSuspenseQueryQuery.js +0 -1
- package/dist/esm/service-operation/ServiceOperationUseSuspenseQueryQuery.js.map +0 -1
- package/dist/esm/service-operation/index.js +0 -1
- package/dist/esm/service-operation/index.js.map +0 -1
|
@@ -1,190 +1,188 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
}),
|
|
26
|
-
[inQueryClient]
|
|
27
|
-
);
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
queryClient.mount();
|
|
30
|
-
return () => {
|
|
31
|
-
return void queryClient.unmount();
|
|
32
|
-
};
|
|
33
|
-
}, [queryClient]);
|
|
34
|
-
const secureRequestFn = useSecuritySchemeAuth({
|
|
35
|
-
securitySchemes,
|
|
36
|
-
requestFn,
|
|
37
|
-
queryClient
|
|
38
|
-
});
|
|
39
|
-
return createElement(Fragment, {
|
|
40
|
-
children: children(secureRequestFn)
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
const useSecuritySchemeAuth = ({
|
|
44
|
-
securitySchemes,
|
|
45
|
-
requestFn,
|
|
46
|
-
queryClient
|
|
47
|
-
}) => {
|
|
48
|
-
useQueries(
|
|
49
|
-
{
|
|
50
|
-
queries: Object.entries(securitySchemes).map(([securitySchemeName]) => {
|
|
51
|
-
const queryKey = [securitySchemeName];
|
|
52
|
-
return {
|
|
53
|
-
enabled: Boolean(queryClient.getQueryData(queryKey)),
|
|
54
|
-
queryKey,
|
|
55
|
-
queryFn: ({
|
|
56
|
-
signal
|
|
57
|
-
}) => {
|
|
58
|
-
const securitySchemeHandler = securitySchemes[securitySchemeName];
|
|
59
|
-
return securitySchemeHandler({ signal, isRefreshing: true });
|
|
60
|
-
}
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMemo, useEffect, createElement, Fragment } from 'react';
|
|
3
|
+
import { QueryClient, useQueries } from '@tanstack/react-query';
|
|
4
|
+
import { jwtDecode } from './lib/jwt-decode/index.js';
|
|
5
|
+
|
|
6
|
+
function QraftSecureRequestFn({ children, requestFn, securitySchemes, queryClient: inQueryClient }) {
|
|
7
|
+
const queryClient = useMemo(()=>inQueryClient ?? new QueryClient({
|
|
8
|
+
defaultOptions: {
|
|
9
|
+
queries: {
|
|
10
|
+
staleTime: 300_000,
|
|
11
|
+
gcTime: 300_000,
|
|
12
|
+
refetchOnWindowFocus: false,
|
|
13
|
+
refetchOnMount: false,
|
|
14
|
+
refetchOnReconnect: false
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}), [
|
|
18
|
+
inQueryClient
|
|
19
|
+
]);
|
|
20
|
+
useEffect(()=>{
|
|
21
|
+
queryClient.mount();
|
|
22
|
+
return ()=>{
|
|
23
|
+
return void queryClient.unmount();
|
|
61
24
|
};
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
queryClient
|
|
65
|
-
);
|
|
66
|
-
return useMemo(
|
|
67
|
-
() => createSecureRequestFn(securitySchemes, requestFn, queryClient),
|
|
68
|
-
[securitySchemes, requestFn, queryClient]
|
|
69
|
-
);
|
|
70
|
-
};
|
|
71
|
-
function createSecureRequestFn(securitySchemes, requestFn, queryClient) {
|
|
72
|
-
return async function secureRequestFn(schema, requestInfo, options) {
|
|
73
|
-
const availableSecuritySchemes = Object.keys(securitySchemes);
|
|
74
|
-
const securitySchemeName = schema.security?.find(
|
|
75
|
-
(security) => availableSecuritySchemes.includes(security)
|
|
76
|
-
);
|
|
77
|
-
if (!securitySchemeName) {
|
|
78
|
-
return requestFn(schema, requestInfo, options);
|
|
79
|
-
}
|
|
80
|
-
const securitySchemeHandler = securitySchemes[securitySchemeName];
|
|
81
|
-
return requestFn(
|
|
82
|
-
schema,
|
|
83
|
-
await createSecureRequestInfo(
|
|
84
|
-
securitySchemeHandler,
|
|
85
|
-
[securitySchemeName],
|
|
86
|
-
requestInfo,
|
|
25
|
+
}, [
|
|
87
26
|
queryClient
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
27
|
+
]);
|
|
28
|
+
const secureRequestFn = useSecuritySchemeAuth({
|
|
29
|
+
securitySchemes,
|
|
30
|
+
requestFn,
|
|
31
|
+
queryClient
|
|
32
|
+
});
|
|
33
|
+
return createElement(Fragment, {
|
|
34
|
+
children: children(secureRequestFn)
|
|
35
|
+
});
|
|
92
36
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
37
|
+
const useSecuritySchemeAuth = ({ securitySchemes, requestFn, queryClient })=>{
|
|
38
|
+
useQueries({
|
|
39
|
+
queries: Object.entries(securitySchemes).map(([securitySchemeName])=>{
|
|
40
|
+
const queryKey = [
|
|
41
|
+
securitySchemeName
|
|
42
|
+
];
|
|
43
|
+
return {
|
|
44
|
+
enabled: Boolean(queryClient.getQueryData(queryKey)),
|
|
45
|
+
queryKey: queryKey,
|
|
46
|
+
queryFn: ({ signal })=>{
|
|
47
|
+
const securitySchemeHandler = securitySchemes[securitySchemeName];
|
|
48
|
+
return securitySchemeHandler({
|
|
49
|
+
signal,
|
|
50
|
+
isRefreshing: true
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
})
|
|
55
|
+
}, queryClient);
|
|
56
|
+
return useMemo(()=>createSecureRequestFn(securitySchemes, requestFn, queryClient), [
|
|
57
|
+
securitySchemes,
|
|
58
|
+
requestFn,
|
|
59
|
+
queryClient
|
|
60
|
+
]);
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Create a secure `requestFn` that manages security schemes.
|
|
64
|
+
* It will automatically fetch and refresh tokens when needed
|
|
65
|
+
* using QueryClient and the provided security schemes.
|
|
66
|
+
*
|
|
67
|
+
* @param securitySchemes OpenAPI security schemes.
|
|
68
|
+
* @param requestFn Qraft `requestFn`
|
|
69
|
+
* @param queryClient QueryClient instance.
|
|
70
|
+
*/ function createSecureRequestFn(securitySchemes, requestFn, queryClient) {
|
|
71
|
+
return async function secureRequestFn(schema, requestInfo, options) {
|
|
72
|
+
const availableSecuritySchemes = Object.keys(securitySchemes);
|
|
73
|
+
const securitySchemeName = schema.security?.find((security)=>availableSecuritySchemes.includes(security));
|
|
74
|
+
if (!securitySchemeName) {
|
|
75
|
+
return requestFn(schema, requestInfo, options);
|
|
76
|
+
}
|
|
77
|
+
const securitySchemeHandler = securitySchemes[securitySchemeName];
|
|
78
|
+
return requestFn(schema, await createSecureRequestInfo(securitySchemeHandler, [
|
|
79
|
+
securitySchemeName
|
|
80
|
+
], requestInfo, queryClient), options);
|
|
81
|
+
};
|
|
99
82
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
isRefreshing: Boolean(prevSecurityResult)
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
if (!shallowEqualObjects(securityResult, prevSecurityResult)) {
|
|
110
|
-
const securityRefreshInterval = getSecurityRefreshInterval(securityResult);
|
|
111
|
-
if (securityRefreshInterval !== void 0 && securityRefreshInterval > 0) {
|
|
112
|
-
queryClient.removeQueries({ queryKey, exact: true });
|
|
113
|
-
setSecurityQueryDefaults(queryClient, queryKey, securityRefreshInterval);
|
|
114
|
-
queryClient.setQueryData(queryKey, securityResult);
|
|
83
|
+
/**
|
|
84
|
+
* Calculate the interval at which a token should be refreshed.
|
|
85
|
+
*/ function getJwtTokenRefreshInterval(token) {
|
|
86
|
+
const parsedToken = jwtDecode(token);
|
|
87
|
+
if (!parsedToken.iat || !parsedToken.exp) {
|
|
88
|
+
throw new Error("JWT token must contain both 'iat' and 'exp' fields.");
|
|
115
89
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
90
|
+
return (parsedToken.exp - parsedToken.iat) * 1000;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Refresh the token if it is about to expire
|
|
94
|
+
* @returns The string to be used as the `Authorization` header or the object to be used in the request.
|
|
95
|
+
*/ async function createSecureRequestInfo(handler, queryKey, requestInfo, queryClient) {
|
|
96
|
+
const prevSecurityResult = queryClient.getQueryData(queryKey);
|
|
97
|
+
const securityResult = await queryClient.fetchQuery({
|
|
98
|
+
queryKey,
|
|
99
|
+
queryFn: ({ signal })=>handler({
|
|
100
|
+
signal,
|
|
101
|
+
isRefreshing: Boolean(prevSecurityResult)
|
|
102
|
+
})
|
|
103
|
+
});
|
|
104
|
+
if (!shallowEqualObjects(securityResult, prevSecurityResult)) {
|
|
105
|
+
const securityRefreshInterval = getSecurityRefreshInterval(securityResult);
|
|
106
|
+
if (securityRefreshInterval !== undefined && securityRefreshInterval > 0) {
|
|
107
|
+
// remove the already fetched query, before setting new defaults
|
|
108
|
+
queryClient.removeQueries({
|
|
109
|
+
queryKey,
|
|
110
|
+
exact: true
|
|
111
|
+
});
|
|
112
|
+
// set query new defaults (staleTime and gcTime)
|
|
113
|
+
setSecurityQueryDefaults(queryClient, queryKey, securityRefreshInterval);
|
|
114
|
+
// Set query data with the new token, since the old one was removed.
|
|
115
|
+
// New query data will follow the new defaults staleTime and gcTime.
|
|
116
|
+
queryClient.setQueryData(queryKey, securityResult);
|
|
117
|
+
}
|
|
127
118
|
}
|
|
128
|
-
|
|
119
|
+
const securityParameters = createSecureRequestParameters(securityResult);
|
|
120
|
+
if (!securityParameters) return requestInfo;
|
|
121
|
+
return {
|
|
122
|
+
...requestInfo,
|
|
123
|
+
parameters: {
|
|
124
|
+
...requestInfo.parameters,
|
|
125
|
+
[securityParameters.in]: {
|
|
126
|
+
[securityParameters.name]: securityParameters.value,
|
|
127
|
+
...requestInfo.parameters?.[securityParameters.in]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
129
131
|
}
|
|
130
132
|
function setSecurityQueryDefaults(queryClient, queryKey, refreshInterval) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
133
|
+
// set staleTime and gcTime based on token lifetime
|
|
134
|
+
queryClient.setQueryDefaults(queryKey, {
|
|
135
|
+
// stale the token 90% before it expires
|
|
136
|
+
staleTime: isFinite(refreshInterval) ? refreshInterval * 0.9 : refreshInterval,
|
|
137
|
+
// garbage collect the token after it expires
|
|
138
|
+
gcTime: isFinite(refreshInterval) ? refreshInterval : refreshInterval,
|
|
139
|
+
// refetch the token 80% before it expires
|
|
140
|
+
refetchInterval: isFinite(refreshInterval) ? refreshInterval * 0.8 : refreshInterval,
|
|
141
|
+
// always refetch the token, even in the background
|
|
142
|
+
refetchIntervalInBackground: true
|
|
143
|
+
});
|
|
141
144
|
}
|
|
142
145
|
function createSecureRequestParameters(securityResult) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
'Security scheme must be a string, an object with a token property, an object with a credentials property, or an object with an in property that is not equal to "cookie".'
|
|
162
|
-
);
|
|
146
|
+
if (typeof securityResult === 'string' || 'token' in securityResult) {
|
|
147
|
+
return {
|
|
148
|
+
in: 'header',
|
|
149
|
+
name: 'Authorization',
|
|
150
|
+
value: `Bearer ${typeof securityResult === 'string' ? securityResult : securityResult.token}`
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
if ('credentials' in securityResult) {
|
|
154
|
+
return {
|
|
155
|
+
in: 'header',
|
|
156
|
+
name: 'Authorization',
|
|
157
|
+
value: `Basic ${securityResult.credentials}`
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if ('in' in securityResult && securityResult.in !== 'cookie') {
|
|
161
|
+
return securityResult;
|
|
162
|
+
}
|
|
163
|
+
throw new Error('Security scheme must be a string, an object with a token property, an object with a credentials property, or an object with an in property that is not equal to "cookie".');
|
|
163
164
|
}
|
|
164
165
|
function getSecurityRefreshInterval(securityResult) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
166
|
+
if (typeof securityResult === 'string') {
|
|
167
|
+
return getJwtTokenRefreshInterval(securityResult);
|
|
168
|
+
}
|
|
169
|
+
if ('refreshInterval' in securityResult) {
|
|
170
|
+
return securityResult.refreshInterval;
|
|
171
|
+
}
|
|
171
172
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
return
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
173
|
+
/**
|
|
174
|
+
* @internal
|
|
175
|
+
*/ function shallowEqualObjects(newObj, prevObj) {
|
|
176
|
+
if (typeof newObj !== typeof prevObj) return false;
|
|
177
|
+
if (typeof newObj === 'string') return newObj === prevObj;
|
|
178
|
+
if (typeof newObj !== 'object' || newObj === null || typeof prevObj !== 'object' || prevObj === null || prevObj === undefined) return false;
|
|
179
|
+
if (Object.keys(newObj).length !== Object.keys(prevObj).length) return false;
|
|
180
|
+
for(const key in newObj){
|
|
181
|
+
if (!Object.prototype.hasOwnProperty.call(newObj, key)) return false;
|
|
182
|
+
if (newObj[key] !== prevObj[key]) return false;
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
183
185
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
shallowEqualObjects,
|
|
188
|
-
useSecuritySchemeAuth
|
|
189
|
-
};
|
|
190
|
-
//# sourceMappingURL=Unstable_QraftSecureRequestFn.js.map
|
|
186
|
+
|
|
187
|
+
export { QraftSecureRequestFn, createSecureRequestFn, shallowEqualObjects, useSecuritySchemeAuth };
|
|
188
|
+
//# sourceMappingURL=Unstable_QraftSecureRequestFn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Unstable_QraftSecureRequestFn.ts"],"sourcesContent":["'use client';\n\nimport { createElement, Fragment, ReactNode, useEffect, useMemo } from 'react';\n\nimport {\n QueryClient,\n type QueryFunctionContext,\n type QueryKey,\n useQueries,\n} from '@tanstack/react-query';\n\nimport { jwtDecode } from './lib/jwt-decode/index.js';\nimport type {\n OperationSchema,\n RequestFnInfo,\n RequestFnOptions,\n} from './lib/requestFn.js';\n\ninterface QraftSecureRequestFnBaseProps {\n requestFn<T>(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ): Promise<T>;\n securitySchemes: SecuritySchemeHandlers<string>;\n}\n\ntype RequestFn = QraftSecureRequestFnBaseProps['requestFn'];\n\nexport interface QraftSecureRequestFnProps\n extends QraftSecureRequestFnBaseProps {\n children(\n secureRequestFn: QraftSecureRequestFnBaseProps['requestFn']\n ): ReactNode;\n queryClient?: QueryClient;\n}\n\nexport function QraftSecureRequestFn({\n children,\n requestFn,\n securitySchemes,\n queryClient: inQueryClient,\n}: QraftSecureRequestFnProps) {\n const queryClient = useMemo(\n () =>\n inQueryClient ??\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 300_000,\n gcTime: 300_000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n },\n },\n }),\n [inQueryClient]\n );\n\n useEffect(() => {\n queryClient.mount();\n return () => {\n return void queryClient.unmount();\n };\n }, [queryClient]);\n\n const secureRequestFn = useSecuritySchemeAuth({\n securitySchemes,\n requestFn,\n queryClient,\n });\n\n return createElement(Fragment, {\n children: children(secureRequestFn),\n });\n}\n\nexport const useSecuritySchemeAuth = ({\n securitySchemes,\n requestFn,\n queryClient,\n}: QraftSecureRequestFnBaseProps & {\n queryClient: QueryClient;\n}): RequestFn => {\n useQueries(\n {\n queries: Object.entries(securitySchemes).map(([securitySchemeName]) => {\n const queryKey: QueryKey = [securitySchemeName];\n return {\n enabled: Boolean(queryClient.getQueryData(queryKey)),\n queryKey: queryKey as never,\n queryFn: ({\n signal,\n }: QueryFunctionContext<[keyof typeof securitySchemes]>) => {\n const securitySchemeHandler = securitySchemes[securitySchemeName];\n return securitySchemeHandler({ signal, isRefreshing: true });\n },\n };\n }),\n },\n queryClient\n );\n\n return useMemo(\n () => createSecureRequestFn(securitySchemes, requestFn, queryClient),\n [securitySchemes, requestFn, queryClient]\n );\n};\n\n/**\n * Create a secure `requestFn` that manages security schemes.\n * It will automatically fetch and refresh tokens when needed\n * using QueryClient and the provided security schemes.\n *\n * @param securitySchemes OpenAPI security schemes.\n * @param requestFn Qraft `requestFn`\n * @param queryClient QueryClient instance.\n */\nexport function createSecureRequestFn(\n securitySchemes: SecuritySchemeHandlers<string>,\n requestFn: RequestFn,\n queryClient: QueryClient\n): RequestFn {\n return async function secureRequestFn(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ) {\n const availableSecuritySchemes = Object.keys(securitySchemes) as Array<\n keyof typeof securitySchemes\n >;\n const securitySchemeName = schema.security?.find(\n (security): security is keyof typeof securitySchemes =>\n availableSecuritySchemes.includes(security)\n );\n\n if (!securitySchemeName) {\n return requestFn(schema, requestInfo, options);\n }\n\n const securitySchemeHandler = securitySchemes[securitySchemeName];\n\n return requestFn(\n schema,\n await createSecureRequestInfo(\n securitySchemeHandler,\n [securitySchemeName],\n requestInfo,\n queryClient\n ),\n options\n );\n };\n}\n\n/**\n * Calculate the interval at which a token should be refreshed.\n */\nfunction getJwtTokenRefreshInterval(token: string) {\n const parsedToken = jwtDecode(token);\n if (!parsedToken.iat || !parsedToken.exp) {\n throw new Error(\"JWT token must contain both 'iat' and 'exp' fields.\");\n }\n\n return (parsedToken.exp - parsedToken.iat) * 1000;\n}\n\n/**\n * Refresh the token if it is about to expire\n * @returns The string to be used as the `Authorization` header or the object to be used in the request.\n */\nasync function createSecureRequestInfo(\n handler: SecuritySchemeHandler,\n queryKey: QueryKey,\n requestInfo: RequestFnInfo,\n queryClient: QueryClient\n): Promise<RequestFnInfo> {\n const prevSecurityResult = queryClient.getQueryData<SecurityScheme>(queryKey);\n\n const securityResult = await queryClient.fetchQuery({\n queryKey,\n queryFn: ({ signal }) =>\n handler({\n signal,\n isRefreshing: Boolean(prevSecurityResult),\n }),\n });\n\n if (!shallowEqualObjects(securityResult, prevSecurityResult)) {\n const securityRefreshInterval = getSecurityRefreshInterval(securityResult);\n\n if (securityRefreshInterval !== undefined && securityRefreshInterval > 0) {\n // remove the already fetched query, before setting new defaults\n queryClient.removeQueries({ queryKey, exact: true });\n\n // set query new defaults (staleTime and gcTime)\n setSecurityQueryDefaults(queryClient, queryKey, securityRefreshInterval);\n\n // Set query data with the new token, since the old one was removed.\n // New query data will follow the new defaults staleTime and gcTime.\n queryClient.setQueryData(queryKey, securityResult);\n }\n }\n\n const securityParameters = createSecureRequestParameters(securityResult);\n\n if (!securityParameters) return requestInfo;\n\n return {\n ...requestInfo,\n parameters: {\n ...requestInfo.parameters,\n [securityParameters.in]: {\n [securityParameters.name]: securityParameters.value,\n ...requestInfo.parameters?.[securityParameters.in],\n },\n },\n };\n}\n\nfunction setSecurityQueryDefaults(\n queryClient: QueryClient,\n queryKey: QueryKey,\n refreshInterval: number\n) {\n // set staleTime and gcTime based on token lifetime\n queryClient.setQueryDefaults(queryKey, {\n // stale the token 90% before it expires\n staleTime: isFinite(refreshInterval)\n ? refreshInterval * 0.9\n : refreshInterval,\n // garbage collect the token after it expires\n gcTime: isFinite(refreshInterval) ? refreshInterval : refreshInterval,\n // refetch the token 80% before it expires\n refetchInterval: isFinite(refreshInterval)\n ? refreshInterval * 0.8\n : refreshInterval,\n // always refetch the token, even in the background\n refetchIntervalInBackground: true,\n });\n}\n\nfunction createSecureRequestParameters(securityResult: SecurityScheme) {\n if (typeof securityResult === 'string' || 'token' in securityResult) {\n return {\n in: 'header',\n name: 'Authorization',\n value: `Bearer ${typeof securityResult === 'string' ? securityResult : securityResult.token}`,\n } as const;\n }\n\n if ('credentials' in securityResult) {\n return {\n in: 'header',\n name: 'Authorization',\n value: `Basic ${securityResult.credentials}`,\n } as const;\n }\n\n if ('in' in securityResult && securityResult.in !== 'cookie') {\n return securityResult;\n }\n\n throw new Error(\n 'Security scheme must be a string, an object with a token property, an object with a credentials property, or an object with an in property that is not equal to \"cookie\".'\n );\n}\n\nfunction getSecurityRefreshInterval(securityResult: SecurityScheme) {\n if (typeof securityResult === 'string') {\n return getJwtTokenRefreshInterval(securityResult);\n }\n\n if ('refreshInterval' in securityResult) {\n return securityResult.refreshInterval;\n }\n}\n\n/**\n * @internal\n */\nexport function shallowEqualObjects(\n newObj: Record<string, any> | string,\n prevObj: Record<string, any> | string | undefined\n) {\n if (typeof newObj !== typeof prevObj) return false;\n if (typeof newObj === 'string') return newObj === prevObj;\n if (\n typeof newObj !== 'object' ||\n newObj === null ||\n typeof prevObj !== 'object' ||\n prevObj === null ||\n prevObj === undefined\n )\n return false;\n if (Object.keys(newObj).length !== Object.keys(prevObj).length) return false;\n\n for (const key in newObj) {\n if (!Object.prototype.hasOwnProperty.call(newObj, key)) return false;\n if (newObj[key] !== prevObj[key]) return false;\n }\n return true;\n}\n\ntype SecurityScheme =\n | SecuritySchemeBearer\n | SecuritySchemeBasic\n | SecuritySchemeAPIKey\n | SecuritySchemeCookie;\n\nexport type SecuritySchemeBearer =\n | string /** JWT Bearer token. **/\n | {\n /** Refresh interval in milliseconds. */\n refreshInterval: number;\n /** Token to be used for authentication. */\n token: string;\n };\n\nexport interface SecuritySchemeBasic {\n /** Credentials to be used for authentication. */\n credentials: string;\n\n /** Refresh interval in milliseconds. */\n refreshInterval: number;\n}\n\nexport type SecuritySchemeAPIKey = {\n /** Where the secret should be placed. */\n in: 'header' | 'query';\n /** Name of the secret key. */\n name: string;\n /** Secret to be used for authentication. */\n value: string;\n /** Refresh interval in milliseconds. */\n refreshInterval?: number;\n};\n\nexport type SecuritySchemeCookie = {\n /** Where the secret should be placed. */\n in: 'cookie';\n /** Refresh interval in milliseconds. */\n refreshInterval?: number;\n};\n\n/**\n * Type definition for a handler function that manages security schemes.\n * This function is invoked when a token needs to be fetched or refreshed.\n *\n * @param props - The properties for the handler function.\n * @param props.isRefreshing - A boolean indicating the state of the token.\n * It's `false` on the initial \"fetch token\" request, and `true` if the token is stale or updating using `refreshInterval`.\n * @param props.signal - An AbortSignal that can be used to abort the request.\n *\n * @returns A SecurityScheme, which contains the necessary data for authentication.\n */\ntype SecuritySchemeHandler = (props: {\n isRefreshing: boolean;\n signal: AbortSignal;\n}) => SecurityScheme | Promise<SecurityScheme>;\n\nexport type SecuritySchemeHandlers<SecuritySchemeName extends string> = {\n [key in SecuritySchemeName]: SecuritySchemeHandler;\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"file":"Unstable_QraftSecureRequestFn.js","sources":["../../src/Unstable_QraftSecureRequestFn.ts"],"sourcesContent":["'use client';\n\nimport { createElement, Fragment, ReactNode, useEffect, useMemo } from 'react';\n\nimport {\n QueryClient,\n type QueryFunctionContext,\n type QueryKey,\n useQueries,\n} from '@tanstack/react-query';\n\nimport { jwtDecode } from './lib/jwt-decode/index.js';\nimport type {\n OperationSchema,\n RequestFnInfo,\n RequestFnOptions,\n} from './lib/requestFn.js';\n\ninterface QraftSecureRequestFnBaseProps {\n requestFn<T>(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ): Promise<T>;\n securitySchemes: SecuritySchemeHandlers<string>;\n}\n\ntype RequestFn = QraftSecureRequestFnBaseProps['requestFn'];\n\nexport interface QraftSecureRequestFnProps\n extends QraftSecureRequestFnBaseProps {\n children(\n secureRequestFn: QraftSecureRequestFnBaseProps['requestFn']\n ): ReactNode;\n queryClient?: QueryClient;\n}\n\nexport function QraftSecureRequestFn({\n children,\n requestFn,\n securitySchemes,\n queryClient: inQueryClient,\n}: QraftSecureRequestFnProps) {\n const queryClient = useMemo(\n () =>\n inQueryClient ??\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 300_000,\n gcTime: 300_000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n },\n },\n }),\n [inQueryClient]\n );\n\n useEffect(() => {\n queryClient.mount();\n return () => {\n return void queryClient.unmount();\n };\n }, [queryClient]);\n\n const secureRequestFn = useSecuritySchemeAuth({\n securitySchemes,\n requestFn,\n queryClient,\n });\n\n return createElement(Fragment, {\n children: children(secureRequestFn),\n });\n}\n\nexport const useSecuritySchemeAuth = ({\n securitySchemes,\n requestFn,\n queryClient,\n}: QraftSecureRequestFnBaseProps & {\n queryClient: QueryClient;\n}): RequestFn => {\n useQueries(\n {\n queries: Object.entries(securitySchemes).map(([securitySchemeName]) => {\n const queryKey: QueryKey = [securitySchemeName];\n return {\n enabled: Boolean(queryClient.getQueryData(queryKey)),\n queryKey: queryKey as never,\n queryFn: ({\n signal,\n }: QueryFunctionContext<[keyof typeof securitySchemes]>) => {\n const securitySchemeHandler = securitySchemes[securitySchemeName];\n return securitySchemeHandler({ signal, isRefreshing: true });\n },\n };\n }),\n },\n queryClient\n );\n\n return useMemo(\n () => createSecureRequestFn(securitySchemes, requestFn, queryClient),\n [securitySchemes, requestFn, queryClient]\n );\n};\n\n/**\n * Create a secure `requestFn` that manages security schemes.\n * It will automatically fetch and refresh tokens when needed\n * using QueryClient and the provided security schemes.\n *\n * @param securitySchemes OpenAPI security schemes.\n * @param requestFn Qraft `requestFn`\n * @param queryClient QueryClient instance.\n */\nexport function createSecureRequestFn(\n securitySchemes: SecuritySchemeHandlers<string>,\n requestFn: RequestFn,\n queryClient: QueryClient\n): RequestFn {\n return async function secureRequestFn(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ) {\n const availableSecuritySchemes = Object.keys(securitySchemes) as Array<\n keyof typeof securitySchemes\n >;\n const securitySchemeName = schema.security?.find(\n (security): security is keyof typeof securitySchemes =>\n availableSecuritySchemes.includes(security)\n );\n\n if (!securitySchemeName) {\n return requestFn(schema, requestInfo, options);\n }\n\n const securitySchemeHandler = securitySchemes[securitySchemeName];\n\n return requestFn(\n schema,\n await createSecureRequestInfo(\n securitySchemeHandler,\n [securitySchemeName],\n requestInfo,\n queryClient\n ),\n options\n );\n };\n}\n\n/**\n * Calculate the interval at which a token should be refreshed.\n */\nfunction getJwtTokenRefreshInterval(token: string) {\n const parsedToken = jwtDecode(token);\n if (!parsedToken.iat || !parsedToken.exp) {\n throw new Error(\"JWT token must contain both 'iat' and 'exp' fields.\");\n }\n\n return (parsedToken.exp - parsedToken.iat) * 1000;\n}\n\n/**\n * Refresh the token if it is about to expire\n * @returns The string to be used as the `Authorization` header or the object to be used in the request.\n */\nasync function createSecureRequestInfo(\n handler: SecuritySchemeHandler,\n queryKey: QueryKey,\n requestInfo: RequestFnInfo,\n queryClient: QueryClient\n): Promise<RequestFnInfo> {\n const prevSecurityResult = queryClient.getQueryData<SecurityScheme>(queryKey);\n\n const securityResult = await queryClient.fetchQuery({\n queryKey,\n queryFn: ({ signal }) =>\n handler({\n signal,\n isRefreshing: Boolean(prevSecurityResult),\n }),\n });\n\n if (!shallowEqualObjects(securityResult, prevSecurityResult)) {\n const securityRefreshInterval = getSecurityRefreshInterval(securityResult);\n\n if (securityRefreshInterval !== undefined && securityRefreshInterval > 0) {\n // remove the already fetched query, before setting new defaults\n queryClient.removeQueries({ queryKey, exact: true });\n\n // set query new defaults (staleTime and gcTime)\n setSecurityQueryDefaults(queryClient, queryKey, securityRefreshInterval);\n\n // Set query data with the new token, since the old one was removed.\n // New query data will follow the new defaults staleTime and gcTime.\n queryClient.setQueryData(queryKey, securityResult);\n }\n }\n\n const securityParameters = createSecureRequestParameters(securityResult);\n\n if (!securityParameters) return requestInfo;\n\n return {\n ...requestInfo,\n parameters: {\n ...requestInfo.parameters,\n [securityParameters.in]: {\n [securityParameters.name]: securityParameters.value,\n ...requestInfo.parameters?.[securityParameters.in],\n },\n },\n };\n}\n\nfunction setSecurityQueryDefaults(\n queryClient: QueryClient,\n queryKey: QueryKey,\n refreshInterval: number\n) {\n // set staleTime and gcTime based on token lifetime\n queryClient.setQueryDefaults(queryKey, {\n // stale the token 90% before it expires\n staleTime: isFinite(refreshInterval)\n ? refreshInterval * 0.9\n : refreshInterval,\n // garbage collect the token after it expires\n gcTime: isFinite(refreshInterval) ? refreshInterval : refreshInterval,\n // refetch the token 80% before it expires\n refetchInterval: isFinite(refreshInterval)\n ? refreshInterval * 0.8\n : refreshInterval,\n // always refetch the token, even in the background\n refetchIntervalInBackground: true,\n });\n}\n\nfunction createSecureRequestParameters(securityResult: SecurityScheme) {\n if (typeof securityResult === 'string' || 'token' in securityResult) {\n return {\n in: 'header',\n name: 'Authorization',\n value: `Bearer ${typeof securityResult === 'string' ? securityResult : securityResult.token}`,\n } as const;\n }\n\n if ('credentials' in securityResult) {\n return {\n in: 'header',\n name: 'Authorization',\n value: `Basic ${securityResult.credentials}`,\n } as const;\n }\n\n if ('in' in securityResult && securityResult.in !== 'cookie') {\n return securityResult;\n }\n\n throw new Error(\n 'Security scheme must be a string, an object with a token property, an object with a credentials property, or an object with an in property that is not equal to \"cookie\".'\n );\n}\n\nfunction getSecurityRefreshInterval(securityResult: SecurityScheme) {\n if (typeof securityResult === 'string') {\n return getJwtTokenRefreshInterval(securityResult);\n }\n\n if ('refreshInterval' in securityResult) {\n return securityResult.refreshInterval;\n }\n}\n\n/**\n * @internal\n */\nexport function shallowEqualObjects(\n newObj: Record<string, any> | string,\n prevObj: Record<string, any> | string | undefined\n) {\n if (typeof newObj !== typeof prevObj) return false;\n if (typeof newObj === 'string') return newObj === prevObj;\n if (\n typeof newObj !== 'object' ||\n newObj === null ||\n typeof prevObj !== 'object' ||\n prevObj === null ||\n prevObj === undefined\n )\n return false;\n if (Object.keys(newObj).length !== Object.keys(prevObj).length) return false;\n\n for (const key in newObj) {\n if (!Object.prototype.hasOwnProperty.call(newObj, key)) return false;\n if (newObj[key] !== prevObj[key]) return false;\n }\n return true;\n}\n\ntype SecurityScheme =\n | SecuritySchemeBearer\n | SecuritySchemeBasic\n | SecuritySchemeAPIKey\n | SecuritySchemeCookie;\n\nexport type SecuritySchemeBearer =\n | string /** JWT Bearer token. **/\n | {\n /** Refresh interval in milliseconds. */\n refreshInterval: number;\n /** Token to be used for authentication. */\n token: string;\n };\n\nexport interface SecuritySchemeBasic {\n /** Credentials to be used for authentication. */\n credentials: string;\n\n /** Refresh interval in milliseconds. */\n refreshInterval: number;\n}\n\nexport type SecuritySchemeAPIKey = {\n /** Where the secret should be placed. */\n in: 'header' | 'query';\n /** Name of the secret key. */\n name: string;\n /** Secret to be used for authentication. */\n value: string;\n /** Refresh interval in milliseconds. */\n refreshInterval?: number;\n};\n\nexport type SecuritySchemeCookie = {\n /** Where the secret should be placed. */\n in: 'cookie';\n /** Refresh interval in milliseconds. */\n refreshInterval?: number;\n};\n\n/**\n * Type definition for a handler function that manages security schemes.\n * This function is invoked when a token needs to be fetched or refreshed.\n *\n * @param props - The properties for the handler function.\n * @param props.isRefreshing - A boolean indicating the state of the token.\n * It's `false` on the initial \"fetch token\" request, and `true` if the token is stale or updating using `refreshInterval`.\n * @param props.signal - An AbortSignal that can be used to abort the request.\n *\n * @returns A SecurityScheme, which contains the necessary data for authentication.\n */\ntype SecuritySchemeHandler = (props: {\n isRefreshing: boolean;\n signal: AbortSignal;\n}) => SecurityScheme | Promise<SecurityScheme>;\n\nexport type SecuritySchemeHandlers<SecuritySchemeName extends string> = {\n [key in SecuritySchemeName]: SecuritySchemeHandler;\n};\n"],"names":["QraftSecureRequestFn","children","requestFn","securitySchemes","queryClient","inQueryClient","useMemo","QueryClient","defaultOptions","queries","staleTime","gcTime","refetchOnWindowFocus","refetchOnMount","refetchOnReconnect","useEffect","mount","unmount","secureRequestFn","useSecuritySchemeAuth","createElement","Fragment","useQueries","Object","entries","map","securitySchemeName","queryKey","enabled","Boolean","getQueryData","queryFn","signal","securitySchemeHandler","isRefreshing","createSecureRequestFn","schema","requestInfo","options","availableSecuritySchemes","keys","security","find","includes","createSecureRequestInfo","getJwtTokenRefreshInterval","token","parsedToken","jwtDecode","iat","exp","Error","handler","prevSecurityResult","securityResult","fetchQuery","shallowEqualObjects","securityRefreshInterval","getSecurityRefreshInterval","undefined","removeQueries","exact","setSecurityQueryDefaults","setQueryData","securityParameters","createSecureRequestParameters","parameters","in","name","value","refreshInterval","setQueryDefaults","isFinite","refetchInterval","refetchIntervalInBackground","credentials","newObj","prevObj","length","key","prototype","hasOwnProperty","call"],"mappings":"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"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { callQueryClientMethodWithQueryFilters } from
|
|
1
|
+
import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';
|
|
2
|
+
|
|
2
3
|
function cancelQueries(qraftOptions, schema, args) {
|
|
3
|
-
|
|
4
|
-
"cancelQueries",
|
|
5
|
-
schema,
|
|
6
|
-
args
|
|
7
|
-
);
|
|
4
|
+
return callQueryClientMethodWithQueryFilters('cancelQueries', schema, args);
|
|
8
5
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=cancelQueries.js.map
|
|
6
|
+
|
|
7
|
+
export { cancelQueries };
|
|
8
|
+
//# sourceMappingURL=cancelQueries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/callbacks/cancelQueries.ts"],"sourcesContent":["import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';\nimport type { OperationSchema } from '../lib/requestFn.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport type { ServiceOperationCancelQueriesCallback } from '../service-operation/ServiceOperationCancelQueries.js';\n\nexport function cancelQueries<TData>(\n qraftOptions: QraftClientOptions | undefined,\n schema: OperationSchema,\n args: Parameters<\n ServiceOperationCancelQueriesCallback<\n OperationSchema,\n unknown,\n TData\n >['cancelQueries']\n >\n): Promise<void> {\n return callQueryClientMethodWithQueryFilters(\n 'cancelQueries',\n schema,\n args as never\n ) as never;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cancelQueries.js","sources":["../../../src/callbacks/cancelQueries.ts"],"sourcesContent":["import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';\nimport type { OperationSchema } from '../lib/requestFn.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport type { ServiceOperationCancelQueriesCallback } from '../service-operation/ServiceOperationCancelQueries.js';\n\nexport function cancelQueries<TData>(\n qraftOptions: QraftClientOptions | undefined,\n schema: OperationSchema,\n args: Parameters<\n ServiceOperationCancelQueriesCallback<\n OperationSchema,\n unknown,\n TData\n >['cancelQueries']\n >\n): Promise<void> {\n return callQueryClientMethodWithQueryFilters(\n 'cancelQueries',\n schema,\n args as never\n ) as never;\n}\n"],"names":["cancelQueries","qraftOptions","schema","args","callQueryClientMethodWithQueryFilters"],"mappings":";;AAKO,SAASA,aACdC,CAAAA,YAA4C,EAC5CC,MAAuB,EACvBC,IAMC,EAAA;IAED,OAAOC,qCAAAA,CACL,iBACAF,MACAC,EAAAA,IAAAA,CAAAA,CAAAA;AAEJ;;;;"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { callQueryClientMethodWithQueryKey } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
schema,
|
|
6
|
-
true,
|
|
7
|
-
args
|
|
8
|
-
);
|
|
1
|
+
import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientFetchMethod.js';
|
|
2
|
+
|
|
3
|
+
const fetchInfiniteQuery = (_, schema, args)=>{
|
|
4
|
+
return callQueryClientMethodWithQueryKey('fetchInfiniteQuery', schema, true, args);
|
|
9
5
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=fetchInfiniteQuery.js.map
|
|
6
|
+
|
|
7
|
+
export { fetchInfiniteQuery };
|
|
8
|
+
//# sourceMappingURL=fetchInfiniteQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/callbacks/fetchInfiniteQuery.ts"],"sourcesContent":["import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientFetchMethod.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';\n\nexport const fetchInfiniteQuery: <\n TSchema extends { url: string; method: 'get' | 'head' | 'options' },\n TData,\n TParams,\n>(\n _: QraftClientOptions | undefined,\n schema: TSchema,\n args: Parameters<\n ServiceOperationQuery<TSchema, TData, TParams>['fetchInfiniteQuery']\n >\n) => Promise<TData> = (_, schema, args) => {\n return callQueryClientMethodWithQueryKey(\n 'fetchInfiniteQuery',\n schema,\n true,\n args as never\n ) as never;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchInfiniteQuery.js","sources":["../../../src/callbacks/fetchInfiniteQuery.ts"],"sourcesContent":["import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientFetchMethod.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';\n\nexport const fetchInfiniteQuery: <\n TSchema extends { url: string; method: 'get' | 'head' | 'options' },\n TData,\n TParams,\n>(\n _: QraftClientOptions | undefined,\n schema: TSchema,\n args: Parameters<\n ServiceOperationQuery<TSchema, TData, TParams>['fetchInfiniteQuery']\n >\n) => Promise<TData> = (_, schema, args) => {\n return callQueryClientMethodWithQueryKey(\n 'fetchInfiniteQuery',\n schema,\n true,\n args as never\n ) as never;\n};\n"],"names":["fetchInfiniteQuery","_","schema","args","callQueryClientMethodWithQueryKey"],"mappings":";;AAIaA,MAAAA,kBAAAA,GAUS,CAACC,CAAAA,EAAGC,MAAQC,EAAAA,IAAAA,GAAAA;IAChC,OAAOC,iCAAAA,CACL,oBACAF,EAAAA,MAAAA,EACA,IACAC,EAAAA,IAAAA,CAAAA,CAAAA;AAEJ;;;;"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { callQueryClientMethodWithQueryKey } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
schema,
|
|
6
|
-
false,
|
|
7
|
-
args
|
|
8
|
-
);
|
|
1
|
+
import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientFetchMethod.js';
|
|
2
|
+
|
|
3
|
+
const fetchQuery = (_, schema, args)=>{
|
|
4
|
+
return callQueryClientMethodWithQueryKey('fetchQuery', schema, false, args);
|
|
9
5
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=fetchQuery.js.map
|
|
6
|
+
|
|
7
|
+
export { fetchQuery };
|
|
8
|
+
//# sourceMappingURL=fetchQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/callbacks/fetchQuery.ts"],"sourcesContent":["import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientFetchMethod.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';\n\nexport const fetchQuery: <\n TSchema extends { url: string; method: 'get' | 'head' | 'options' },\n TData,\n TParams,\n>(\n _: QraftClientOptions | undefined,\n schema: TSchema,\n args: Parameters<ServiceOperationQuery<TSchema, TData, TParams>['fetchQuery']>\n) => Promise<TData> = (_, schema, args) => {\n return callQueryClientMethodWithQueryKey(\n 'fetchQuery',\n schema,\n false,\n args as never\n ) as never;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchQuery.js","sources":["../../../src/callbacks/fetchQuery.ts"],"sourcesContent":["import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientFetchMethod.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';\n\nexport const fetchQuery: <\n TSchema extends { url: string; method: 'get' | 'head' | 'options' },\n TData,\n TParams,\n>(\n _: QraftClientOptions | undefined,\n schema: TSchema,\n args: Parameters<ServiceOperationQuery<TSchema, TData, TParams>['fetchQuery']>\n) => Promise<TData> = (_, schema, args) => {\n return callQueryClientMethodWithQueryKey(\n 'fetchQuery',\n schema,\n false,\n args as never\n ) as never;\n};\n"],"names":["fetchQuery","_","schema","args","callQueryClientMethodWithQueryKey"],"mappings":";;AAIaA,MAAAA,UAAAA,GAQS,CAACC,CAAAA,EAAGC,MAAQC,EAAAA,IAAAA,GAAAA;IAChC,OAAOC,iCAAAA,CACL,YACAF,EAAAA,MAAAA,EACA,KACAC,EAAAA,IAAAA,CAAAA,CAAAA;AAEJ;;;;"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { callQueryClientMethodWithQueryKey } from
|
|
1
|
+
import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientMethodWithQueryKey.js';
|
|
2
|
+
|
|
2
3
|
function getInfiniteQueryData(_, schema, args) {
|
|
3
|
-
|
|
4
|
-
"getQueryData",
|
|
5
|
-
schema,
|
|
6
|
-
true,
|
|
7
|
-
args
|
|
8
|
-
);
|
|
4
|
+
return callQueryClientMethodWithQueryKey('getQueryData', schema, true, args);
|
|
9
5
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=getInfiniteQueryData.js.map
|
|
6
|
+
|
|
7
|
+
export { getInfiniteQueryData };
|
|
8
|
+
//# sourceMappingURL=getInfiniteQueryData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/callbacks/getInfiniteQueryData.ts"],"sourcesContent":["import type { InfiniteData } from '@tanstack/query-core';\n\nimport { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientMethodWithQueryKey.js';\nimport type { OperationSchema } from '../lib/requestFn.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport type { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';\n\nexport function getInfiniteQueryData<TData>(\n _: QraftClientOptions | undefined,\n schema: OperationSchema,\n args: Parameters<\n ServiceOperationQuery<\n OperationSchema,\n unknown,\n TData\n >['getInfiniteQueryData']\n >\n): InfiniteData<TData> | undefined {\n return callQueryClientMethodWithQueryKey(\n 'getQueryData',\n schema,\n true,\n args as never\n ) as never;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getInfiniteQueryData.js","sources":["../../../src/callbacks/getInfiniteQueryData.ts"],"sourcesContent":["import type { InfiniteData } from '@tanstack/query-core';\n\nimport { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientMethodWithQueryKey.js';\nimport type { OperationSchema } from '../lib/requestFn.js';\nimport type { QraftClientOptions } from '../qraftAPIClient.js';\nimport type { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';\n\nexport function getInfiniteQueryData<TData>(\n _: QraftClientOptions | undefined,\n schema: OperationSchema,\n args: Parameters<\n ServiceOperationQuery<\n OperationSchema,\n unknown,\n TData\n >['getInfiniteQueryData']\n >\n): InfiniteData<TData> | undefined {\n return callQueryClientMethodWithQueryKey(\n 'getQueryData',\n schema,\n true,\n args as never\n ) as never;\n}\n"],"names":["getInfiniteQueryData","_","schema","args","callQueryClientMethodWithQueryKey"],"mappings":";;AAOO,SAASA,oBACdC,CAAAA,CAAiC,EACjCC,MAAuB,EACvBC,IAMC,EAAA;IAED,OAAOC,iCAAAA,CACL,cACAF,EAAAA,MAAAA,EACA,IACAC,EAAAA,IAAAA,CAAAA,CAAAA;AAEJ;;;;"}
|