@ventlio/tanstack-query 0.4.0 → 0.4.2
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/dist/index.mjs +41 -50
- package/dist/index.mjs.map +1 -1
- package/dist/model/useKeyTrackerModel.d.ts +1 -1
- package/dist/model/useQueryModel.d.ts +1 -1
- package/dist/model/useQueryModel.js +6 -6
- package/dist/model/useRefetchQuery.d.ts +1 -1
- package/dist/model/useRefetchQuery.js +1 -1
- package/dist/queries/useDeleteRequest.d.ts +66 -6
- package/dist/queries/useDeleteRequest.js +3 -7
- package/dist/queries/useDeleteRequest.js.map +1 -1
- package/dist/queries/useGetInfiniteRequest.d.ts +109 -25
- package/dist/queries/useGetInfiniteRequest.js +2 -3
- package/dist/queries/useGetInfiniteRequest.js.map +1 -1
- package/dist/queries/useGetRequest.d.ts +74 -6
- package/dist/queries/useGetRequest.js +2 -3
- package/dist/queries/useGetRequest.js.map +1 -1
- package/dist/queries/usePatchRequest.d.ts +13 -21
- package/dist/queries/usePatchRequest.js +4 -7
- package/dist/queries/usePatchRequest.js.map +1 -1
- package/dist/queries/usePostRequest.d.ts +25 -30
- package/dist/queries/usePostRequest.js +2 -3
- package/dist/queries/usePostRequest.js.map +1 -1
- package/dist/request/make-request.js +21 -20
- package/dist/request/make-request.js.map +1 -1
- package/package.json +2 -2
- package/src/model/useKeyTrackerModel.ts +2 -2
- package/src/model/useQueryModel.ts +7 -7
- package/src/model/useRefetchQuery.ts +1 -1
- package/src/queries/useDeleteRequest.ts +7 -7
- package/src/queries/useGetInfiniteRequest.ts +19 -14
- package/src/queries/useGetRequest.ts +9 -6
- package/src/queries/usePatchRequest.ts +5 -5
- package/src/queries/usePostRequest.ts +2 -4
- package/src/request/make-request.ts +22 -18
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { QueryKey, UseQueryOptions } from '@tanstack/react-query';
|
|
1
|
+
import type { InfiniteData, QueryKey, UseQueryOptions } from '@tanstack/react-query';
|
|
2
2
|
import { useInfiniteQuery, useQueryClient } from '@tanstack/react-query';
|
|
3
3
|
import { startTransition, useEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { useEnvironmentVariables, useQueryConfig } from '../config';
|
|
@@ -110,17 +110,19 @@ export const useGetInfiniteRequest = <TResponse extends Record<string, any>>({
|
|
|
110
110
|
return pathname + '?' + queryParams.toString();
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
-
const query = useInfiniteQuery<any, any, IRequestSuccess<TResponse & { pagination: Pagination }>>(
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
const query = useInfiniteQuery<any, any, IRequestSuccess<TResponse & { pagination: Pagination }>>(
|
|
114
|
+
[requestPath, {}],
|
|
115
|
+
({ pageParam = requestPath, queryKey }) =>
|
|
116
116
|
new Promise<IRequestSuccess<TResponse & { pagination: Pagination }> | IRequestError>((res, rej) =>
|
|
117
|
-
sendRequest(res, rej, queryKey, pageParam
|
|
117
|
+
sendRequest(res, rej, queryKey, pageParam)
|
|
118
118
|
),
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
{
|
|
120
|
+
enabled: load && !isFutureQueriesPaused,
|
|
121
|
+
getNextPageParam: (lastPage) => constructPaginationLink('next_page', lastPage),
|
|
122
|
+
getPreviousPageParam: (lastPage) => constructPaginationLink('previous_page', lastPage),
|
|
123
|
+
...options,
|
|
124
|
+
}
|
|
125
|
+
);
|
|
124
126
|
|
|
125
127
|
const setOptionsAsync = async (fetchOptions: any) => {
|
|
126
128
|
startTransition(() => {
|
|
@@ -137,10 +139,12 @@ export const useGetInfiniteRequest = <TResponse extends Record<string, any>>({
|
|
|
137
139
|
Array<any>
|
|
138
140
|
>
|
|
139
141
|
): Promise<
|
|
140
|
-
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
| InfiniteData<
|
|
143
|
+
IRequestSuccess<
|
|
144
|
+
TResponse & {
|
|
145
|
+
pagination: Pagination;
|
|
146
|
+
}
|
|
147
|
+
>
|
|
144
148
|
>
|
|
145
149
|
| undefined
|
|
146
150
|
> => {
|
|
@@ -173,6 +177,7 @@ export const useGetInfiniteRequest = <TResponse extends Record<string, any>>({
|
|
|
173
177
|
if (keyTracker) {
|
|
174
178
|
// set expiration time for the tracker
|
|
175
179
|
queryClient.setQueryDefaults([keyTracker], {
|
|
180
|
+
cacheTime: Infinity,
|
|
176
181
|
staleTime: Infinity,
|
|
177
182
|
});
|
|
178
183
|
|
|
@@ -78,13 +78,15 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
80
|
|
|
81
|
-
const query = useQuery<any, any, IRequestSuccess<TResponse>>(
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
const query = useQuery<any, any, IRequestSuccess<TResponse>>(
|
|
82
|
+
[requestPath, {}],
|
|
83
|
+
({ queryKey }) =>
|
|
84
84
|
new Promise<IRequestSuccess<TResponse> | IRequestError>((res, rej) => sendRequest(res, rej, queryKey)),
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
{
|
|
86
|
+
enabled: load && !isFutureQueriesPaused,
|
|
87
|
+
...options,
|
|
88
|
+
}
|
|
89
|
+
);
|
|
88
90
|
|
|
89
91
|
useEffect(() => {
|
|
90
92
|
if (path) {
|
|
@@ -96,6 +98,7 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
96
98
|
if (keyTracker) {
|
|
97
99
|
// set expiration time for the tracker
|
|
98
100
|
queryClient.setQueryDefaults([keyTracker], {
|
|
101
|
+
cacheTime: Infinity,
|
|
99
102
|
staleTime: Infinity,
|
|
100
103
|
});
|
|
101
104
|
|
|
@@ -63,13 +63,13 @@ export const usePatchRequest = <TResponse>({ path, baseUrl, headers }: { path: s
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
// register post mutation
|
|
66
|
-
const mutation = useMutation<IRequestSuccess<TResponse>, IRequestError>(
|
|
67
|
-
|
|
66
|
+
const mutation = useMutation<IRequestSuccess<TResponse>, IRequestError>(
|
|
67
|
+
(dataData: any) =>
|
|
68
68
|
new Promise<IRequestSuccess<TResponse>>((res, rej) => {
|
|
69
69
|
return sendRequest(res, rej, dataData);
|
|
70
70
|
}),
|
|
71
|
-
mutationKey: [path, { type: 'mutation' }]
|
|
72
|
-
|
|
71
|
+
{ mutationKey: [path, { type: 'mutation' }] }
|
|
72
|
+
);
|
|
73
73
|
|
|
74
74
|
const patch = async (
|
|
75
75
|
data: any,
|
|
@@ -91,5 +91,5 @@ export const usePatchRequest = <TResponse>({ path, baseUrl, headers }: { path: s
|
|
|
91
91
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
92
92
|
}, [isFutureMutationsPaused]);
|
|
93
93
|
|
|
94
|
-
return { patch, uploadProgressPercent, ...mutation, isLoading: mutation.
|
|
94
|
+
return { patch, uploadProgressPercent, ...mutation, isLoading: mutation.isLoading || isFutureMutationsPaused };
|
|
95
95
|
};
|
|
@@ -95,9 +95,7 @@ export const usePostRequest = <TResponse>({
|
|
|
95
95
|
IRequestSuccess<TResponse>,
|
|
96
96
|
IRequestError,
|
|
97
97
|
{ data: any; requestConfig?: Partial<Omit<IMakeRequest, 'body'>> }
|
|
98
|
-
>({
|
|
99
|
-
mutationFn: async (postData) =>
|
|
100
|
-
new Promise<IRequestSuccess<TResponse>>((res, rej) => sendRequest(res, rej, postData)),
|
|
98
|
+
>(async (postData) => new Promise<IRequestSuccess<TResponse>>((res, rej) => sendRequest(res, rej, postData)), {
|
|
101
99
|
mutationKey: [path, { type: 'mutation' }],
|
|
102
100
|
});
|
|
103
101
|
|
|
@@ -131,5 +129,5 @@ export const usePostRequest = <TResponse>({
|
|
|
131
129
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
132
130
|
}, [isFutureMutationsPaused]);
|
|
133
131
|
|
|
134
|
-
return { post, uploadProgressPercent, ...mutation, isLoading: mutation.
|
|
132
|
+
return { post, uploadProgressPercent, ...mutation, isLoading: mutation.isLoading || isFutureMutationsPaused };
|
|
135
133
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AxiosRequestConfig } from 'axios';
|
|
1
2
|
import axios from 'axios';
|
|
2
3
|
import { axiosInstance } from './axios-instance';
|
|
3
4
|
|
|
@@ -27,35 +28,38 @@ export async function makeRequest<TResponse>({
|
|
|
27
28
|
// configure request header1
|
|
28
29
|
if (!isFormData) {
|
|
29
30
|
headers['Content-Type'] = ContentType.APPLICATION_JSON;
|
|
30
|
-
} else {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
body.append(fileKey, innerFile);
|
|
39
|
-
}
|
|
40
|
-
} else {
|
|
41
|
-
body.append(fileKey, currentFile);
|
|
31
|
+
} else if (isApp) {
|
|
32
|
+
headers['Content-Type'] = ContentType.MULTIPART_FORM_DATA;
|
|
33
|
+
// add the app files
|
|
34
|
+
for (const fileKey in appFiles) {
|
|
35
|
+
const currentFile = appFiles[fileKey];
|
|
36
|
+
if (Array.isArray(currentFile)) {
|
|
37
|
+
for (const innerFile of currentFile) {
|
|
38
|
+
body.append(fileKey, innerFile);
|
|
42
39
|
}
|
|
40
|
+
} else {
|
|
41
|
+
body.append(fileKey, currentFile);
|
|
43
42
|
}
|
|
44
|
-
} else {
|
|
45
|
-
delete headers['Content-Type'];
|
|
46
43
|
}
|
|
44
|
+
} else {
|
|
45
|
+
delete headers['Content-Type'];
|
|
47
46
|
}
|
|
48
47
|
|
|
49
48
|
try {
|
|
50
49
|
const axiosRequest = axiosInstance({ baseURL, headers, timeout });
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
const resp = await axiosRequest({
|
|
51
|
+
const axiosRequestConfig: AxiosRequestConfig<Record<string, any>> = {
|
|
54
52
|
url: path,
|
|
55
53
|
method,
|
|
56
|
-
data: body,
|
|
57
54
|
onUploadProgress,
|
|
58
|
-
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
if (Object.keys(body).length > 0) {
|
|
58
|
+
axiosRequestConfig.data = body;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// send request
|
|
62
|
+
const resp = await axiosRequest(axiosRequestConfig);
|
|
59
63
|
|
|
60
64
|
// get response json
|
|
61
65
|
const jsonResp: any = await resp.data;
|