@ventlio/tanstack-query 0.5.3 → 0.5.5
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/config/bootstrapQueryRequest.d.ts +4 -4
- package/dist/config/bootstrapQueryRequest.js +15 -15
- package/dist/config/config.interface.d.ts +4 -4
- package/dist/config/index.d.ts +6 -6
- package/dist/config/useEnvironmentVariables.d.ts +2 -2
- package/dist/config/useEnvironmentVariables.js +8 -8
- package/dist/config/useQueryConfig.d.ts +2 -2
- package/dist/config/useQueryConfig.js +5 -5
- package/dist/config/useQueryHeaders.d.ts +2 -2
- package/dist/config/useQueryHeaders.js +9 -9
- package/dist/config/useReactNativeEnv.d.ts +5 -5
- package/dist/config/useReactNativeEnv.js +6 -6
- package/dist/helpers/index.d.ts +2 -2
- package/dist/helpers/scrollToTop.d.ts +1 -1
- package/dist/helpers/scrollToTop.js +5 -5
- package/dist/helpers/timeFuncs.d.ts +1 -1
- package/dist/helpers/timeFuncs.js +7 -7
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/useUploadProgress.d.ts +5 -5
- package/dist/hooks/useUploadProgress.js +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.mjs +907 -830
- package/dist/index.mjs.map +1 -1
- package/dist/model/index.d.ts +4 -4
- package/dist/model/model.interface.d.ts +11 -11
- package/dist/model/useKeyTrackerModel.d.ts +4 -4
- package/dist/model/useKeyTrackerModel.js +14 -14
- package/dist/model/useQueryModel.d.ts +2 -2
- package/dist/model/useQueryModel.js +115 -115
- package/dist/model/useRefetchQuery.d.ts +3 -3
- package/dist/model/useRefetchQuery.js +10 -10
- package/dist/queries/index.d.ts +6 -6
- package/dist/queries/queries.interface.d.ts +17 -17
- package/dist/queries/useDeleteRequest.d.ts +60 -60
- package/dist/queries/useDeleteRequest.js +86 -71
- package/dist/queries/useDeleteRequest.js.map +1 -1
- package/dist/queries/useGetInfiniteRequest.d.ts +108 -110
- package/dist/queries/useGetInfiniteRequest.js +117 -102
- package/dist/queries/useGetInfiniteRequest.js.map +1 -1
- package/dist/queries/useGetRequest.d.ts +73 -74
- package/dist/queries/useGetRequest.js +148 -133
- package/dist/queries/useGetRequest.js.map +1 -1
- package/dist/queries/usePatchRequest.d.ts +86 -86
- package/dist/queries/usePatchRequest.js +86 -70
- package/dist/queries/usePatchRequest.js.map +1 -1
- package/dist/queries/usePostRequest.d.ts +149 -157
- package/dist/queries/usePostRequest.js +94 -78
- package/dist/queries/usePostRequest.js.map +1 -1
- package/dist/queries/usePutRequest.d.ts +86 -86
- package/dist/request/axios-instance.d.ts +3 -3
- package/dist/request/axios-instance.js +6 -6
- package/dist/request/buildFormData.d.ts +1 -1
- package/dist/request/buildFormData.js +40 -40
- package/dist/request/index.d.ts +6 -6
- package/dist/request/make-request.d.ts +2 -2
- package/dist/request/make-request.js +80 -80
- package/dist/request/request.enum.d.ts +11 -11
- package/dist/request/request.enum.js +12 -12
- package/dist/request/request.interface.d.ts +48 -48
- package/dist/request/transformer.d.ts +7 -7
- package/dist/request/transformer.js +18 -18
- package/dist/stores/index.d.ts +2 -2
- package/dist/stores/useHeaderStore.d.ts +7 -7
- package/dist/stores/useHeaderStore.js +5 -5
- package/dist/stores/usePauseFutureRequests.d.ts +7 -7
- package/dist/stores/usePauseFutureRequests.js +13 -13
- package/dist/types/index.d.ts +34 -29
- package/package.json +2 -2
- package/src/queries/useDeleteRequest.ts +24 -5
- package/src/queries/useGetInfiniteRequest.ts +21 -2
- package/src/queries/useGetRequest.ts +26 -9
- package/src/queries/usePatchRequest.ts +21 -1
- package/src/queries/usePostRequest.ts +21 -1
- package/src/queries/usePutRequest.ts +21 -1
- package/src/request/make-request.ts +3 -3
- package/src/request/transformer.ts +1 -1
- package/src/types/index.ts +5 -1
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
1
|
+
import { QueryKey, useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query';
|
|
3
2
|
import { startTransition, useEffect, useMemo, useState } from 'react';
|
|
4
3
|
import { useEnvironmentVariables, useQueryConfig } from '../config';
|
|
5
4
|
|
|
6
|
-
import
|
|
7
|
-
import { makeRequest } from '../request';
|
|
5
|
+
import { IRequestError, IRequestSuccess, makeRequest } from '../request';
|
|
8
6
|
import { useHeaderStore, usePauseFutureRequests } from '../stores';
|
|
9
|
-
import
|
|
7
|
+
import { DefaultRequestOptions, IPagination, TanstackQueryOption } from './queries.interface';
|
|
10
8
|
|
|
11
9
|
export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
12
10
|
path,
|
|
@@ -63,7 +61,26 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
63
61
|
}
|
|
64
62
|
|
|
65
63
|
if (shouldContinue) {
|
|
66
|
-
|
|
64
|
+
let getResponse: IRequestError | IRequestSuccess<TResponse>;
|
|
65
|
+
if (queryConfigOptions?.middleware) {
|
|
66
|
+
// perform global middleware
|
|
67
|
+
const middlewareResponse = await queryConfigOptions.middleware(
|
|
68
|
+
async () => await makeRequest<TResponse>(requestOptions),
|
|
69
|
+
{
|
|
70
|
+
path,
|
|
71
|
+
baseUrl: baseUrl ?? API_URL,
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
if (!middlewareResponse) {
|
|
76
|
+
rej();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getResponse = middlewareResponse;
|
|
81
|
+
} else {
|
|
82
|
+
getResponse = await makeRequest<TResponse>(requestOptions);
|
|
83
|
+
}
|
|
67
84
|
|
|
68
85
|
if (getResponse.status) {
|
|
69
86
|
res(getResponse as IRequestSuccess<TResponse>);
|
|
@@ -104,7 +121,7 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
104
121
|
}, [keyTracker, requestPath, queryClient, queryOptions?.staleTime]);
|
|
105
122
|
|
|
106
123
|
const nextPage = () => {
|
|
107
|
-
if (query.data
|
|
124
|
+
if (query.data.data.pagination) {
|
|
108
125
|
const pagination: IPagination = query.data.data.pagination;
|
|
109
126
|
if (pagination.next_page !== pagination.current_page && pagination.next_page > pagination.current_page) {
|
|
110
127
|
setRequestPath(constructPaginationLink(requestPath, pagination.next_page));
|
|
@@ -113,7 +130,7 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
113
130
|
};
|
|
114
131
|
|
|
115
132
|
const prevPage = () => {
|
|
116
|
-
if (query.data
|
|
133
|
+
if (query.data.data.pagination) {
|
|
117
134
|
const pagination: IPagination = query.data.data.pagination;
|
|
118
135
|
if (pagination.previous_page !== pagination.current_page && pagination.previous_page < pagination.current_page) {
|
|
119
136
|
setRequestPath(constructPaginationLink(requestPath, pagination.previous_page));
|
|
@@ -184,7 +201,7 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
184
201
|
|
|
185
202
|
return {
|
|
186
203
|
...query,
|
|
187
|
-
isLoading: query.isLoading || isFutureQueriesPaused,
|
|
204
|
+
isLoading: (query.isLoading as boolean) || isFutureQueriesPaused,
|
|
188
205
|
setRequestPath,
|
|
189
206
|
nextPage,
|
|
190
207
|
prevPage,
|
|
@@ -43,7 +43,27 @@ export const usePatchRequest = <TResponse>({ path, baseUrl, headers }: { path: s
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (shouldContinue) {
|
|
46
|
-
|
|
46
|
+
let patchResponse: IRequestError | IRequestSuccess<TResponse>;
|
|
47
|
+
if (config.options?.middleware) {
|
|
48
|
+
// perform global middleware
|
|
49
|
+
const middlewareResponse = await config.options.middleware(
|
|
50
|
+
async () => await makeRequest<TResponse>(requestOptions),
|
|
51
|
+
{
|
|
52
|
+
path,
|
|
53
|
+
baseUrl: baseUrl ?? API_URL,
|
|
54
|
+
body: data,
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
if (!middlewareResponse) {
|
|
59
|
+
rej();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
patchResponse = middlewareResponse;
|
|
64
|
+
} else {
|
|
65
|
+
patchResponse = await makeRequest<TResponse>(requestOptions);
|
|
66
|
+
}
|
|
47
67
|
if (patchResponse.status) {
|
|
48
68
|
// scroll to top after success
|
|
49
69
|
if (config.options?.context !== 'app') {
|
|
@@ -69,7 +69,27 @@ export const usePostRequest = <TResponse>({
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
if (shouldContinue) {
|
|
72
|
-
|
|
72
|
+
let postResponse: IRequestError | IRequestSuccess<TResponse>;
|
|
73
|
+
if (config.options?.middleware) {
|
|
74
|
+
// perform global middleware
|
|
75
|
+
const middlewareResponse = await config.options.middleware(
|
|
76
|
+
async () => await makeRequest<TResponse>(requestOptions),
|
|
77
|
+
{
|
|
78
|
+
path,
|
|
79
|
+
baseUrl: baseUrl ?? API_URL,
|
|
80
|
+
body: data,
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
if (!middlewareResponse) {
|
|
85
|
+
rej();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
postResponse = middlewareResponse;
|
|
90
|
+
} else {
|
|
91
|
+
postResponse = await makeRequest<TResponse>(requestOptions);
|
|
92
|
+
}
|
|
73
93
|
|
|
74
94
|
if (postResponse.status) {
|
|
75
95
|
// scroll to top after success
|
|
@@ -43,7 +43,27 @@ export const usePutRequest = <TResponse>({ path, baseUrl, headers }: { path: str
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (shouldContinue) {
|
|
46
|
-
|
|
46
|
+
let putResponse: IRequestError | IRequestSuccess<TResponse>;
|
|
47
|
+
if (config.options?.middleware) {
|
|
48
|
+
// perform global middleware
|
|
49
|
+
const middlewareResponse = await config.options.middleware(
|
|
50
|
+
async () => await makeRequest<TResponse>(requestOptions),
|
|
51
|
+
{
|
|
52
|
+
path,
|
|
53
|
+
baseUrl: baseUrl ?? API_URL,
|
|
54
|
+
body: data,
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
if (!middlewareResponse) {
|
|
59
|
+
rej();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
putResponse = middlewareResponse;
|
|
64
|
+
} else {
|
|
65
|
+
putResponse = await makeRequest<TResponse>(requestOptions);
|
|
66
|
+
}
|
|
47
67
|
if (putResponse.status) {
|
|
48
68
|
// scroll to top after success
|
|
49
69
|
if (config.options?.context !== 'app') {
|
|
@@ -3,7 +3,7 @@ import axios from 'axios';
|
|
|
3
3
|
import { axiosInstance } from './axios-instance';
|
|
4
4
|
|
|
5
5
|
import { ContentType, HttpMethod } from './request.enum';
|
|
6
|
-
import type { IMakeRequest } from './request.interface';
|
|
6
|
+
import type { IMakeRequest, IRequestError, IRequestSuccess } from './request.interface';
|
|
7
7
|
import { errorTransformer, successTransformer } from './transformer';
|
|
8
8
|
|
|
9
9
|
export async function makeRequest<TResponse>({
|
|
@@ -16,7 +16,7 @@ export async function makeRequest<TResponse>({
|
|
|
16
16
|
timeout,
|
|
17
17
|
appFileConfig,
|
|
18
18
|
onUploadProgress,
|
|
19
|
-
}: IMakeRequest) {
|
|
19
|
+
}: IMakeRequest): Promise<IRequestSuccess<TResponse> | IRequestError> {
|
|
20
20
|
// check if file is included in mobile app environment and extract all file input to avoid
|
|
21
21
|
// it being formatted to object using axios formData builder
|
|
22
22
|
const isApp = appFileConfig?.isApp;
|
|
@@ -37,7 +37,7 @@ export async function makeRequest<TResponse>({
|
|
|
37
37
|
onUploadProgress,
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
if (Object.keys(body).length > 0) {
|
|
40
|
+
if (Object.keys(body).length > 0 || (isFormData && !isApp && [...body.keys()].length > 0)) {
|
|
41
41
|
axiosRequestConfig.data = body;
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -4,9 +4,9 @@ import type { IRequestError, IRequestSuccess, IServerRequestError, IServerReques
|
|
|
4
4
|
export const errorTransformer = (data: IServerRequestError & { statusCode: number }): IRequestError => {
|
|
5
5
|
return {
|
|
6
6
|
timeStamp: new Date(),
|
|
7
|
-
status: false,
|
|
8
7
|
data: data.data,
|
|
9
8
|
...data,
|
|
9
|
+
status: false,
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
12
|
|
package/src/types/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { QueryKey } from '@tanstack/react-query';
|
|
2
2
|
import type { RawAxiosRequestHeaders } from 'axios';
|
|
3
|
-
import type { IMakeRequest } from '../request';
|
|
3
|
+
import type { IMakeRequest, IRequestError, IRequestSuccess } from '../request';
|
|
4
4
|
|
|
5
5
|
export interface BootstrapConfig {
|
|
6
6
|
environments?: {
|
|
@@ -11,6 +11,10 @@ export interface BootstrapConfig {
|
|
|
11
11
|
modelConfig?: BootstrapModelConfig;
|
|
12
12
|
mutationMiddleware?: (mutateRequestConfig?: IMakeRequest & { mutationKey: QueryKey }) => Promise<boolean>;
|
|
13
13
|
queryMiddleware?: (queryRequestConfig?: IMakeRequest & { queryKey: QueryKey }) => Promise<boolean>;
|
|
14
|
+
middleware?: <T = any>(
|
|
15
|
+
next: () => Promise<IRequestSuccess<T> | IRequestError>,
|
|
16
|
+
configs?: { baseUrl: string; path: string; body?: Record<string, any> }
|
|
17
|
+
) => Promise<false | IRequestSuccess<T>>;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
export interface BootstrapModelConfig {
|