@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.
Files changed (77) hide show
  1. package/dist/config/bootstrapQueryRequest.d.ts +4 -4
  2. package/dist/config/bootstrapQueryRequest.js +15 -15
  3. package/dist/config/config.interface.d.ts +4 -4
  4. package/dist/config/index.d.ts +6 -6
  5. package/dist/config/useEnvironmentVariables.d.ts +2 -2
  6. package/dist/config/useEnvironmentVariables.js +8 -8
  7. package/dist/config/useQueryConfig.d.ts +2 -2
  8. package/dist/config/useQueryConfig.js +5 -5
  9. package/dist/config/useQueryHeaders.d.ts +2 -2
  10. package/dist/config/useQueryHeaders.js +9 -9
  11. package/dist/config/useReactNativeEnv.d.ts +5 -5
  12. package/dist/config/useReactNativeEnv.js +6 -6
  13. package/dist/helpers/index.d.ts +2 -2
  14. package/dist/helpers/scrollToTop.d.ts +1 -1
  15. package/dist/helpers/scrollToTop.js +5 -5
  16. package/dist/helpers/timeFuncs.d.ts +1 -1
  17. package/dist/helpers/timeFuncs.js +7 -7
  18. package/dist/hooks/index.d.ts +1 -1
  19. package/dist/hooks/useUploadProgress.d.ts +5 -5
  20. package/dist/hooks/useUploadProgress.js +8 -8
  21. package/dist/index.d.ts +8 -8
  22. package/dist/index.mjs +907 -830
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/model/index.d.ts +4 -4
  25. package/dist/model/model.interface.d.ts +11 -11
  26. package/dist/model/useKeyTrackerModel.d.ts +4 -4
  27. package/dist/model/useKeyTrackerModel.js +14 -14
  28. package/dist/model/useQueryModel.d.ts +2 -2
  29. package/dist/model/useQueryModel.js +115 -115
  30. package/dist/model/useRefetchQuery.d.ts +3 -3
  31. package/dist/model/useRefetchQuery.js +10 -10
  32. package/dist/queries/index.d.ts +6 -6
  33. package/dist/queries/queries.interface.d.ts +17 -17
  34. package/dist/queries/useDeleteRequest.d.ts +60 -60
  35. package/dist/queries/useDeleteRequest.js +86 -71
  36. package/dist/queries/useDeleteRequest.js.map +1 -1
  37. package/dist/queries/useGetInfiniteRequest.d.ts +108 -110
  38. package/dist/queries/useGetInfiniteRequest.js +117 -102
  39. package/dist/queries/useGetInfiniteRequest.js.map +1 -1
  40. package/dist/queries/useGetRequest.d.ts +73 -74
  41. package/dist/queries/useGetRequest.js +148 -133
  42. package/dist/queries/useGetRequest.js.map +1 -1
  43. package/dist/queries/usePatchRequest.d.ts +86 -86
  44. package/dist/queries/usePatchRequest.js +86 -70
  45. package/dist/queries/usePatchRequest.js.map +1 -1
  46. package/dist/queries/usePostRequest.d.ts +149 -157
  47. package/dist/queries/usePostRequest.js +94 -78
  48. package/dist/queries/usePostRequest.js.map +1 -1
  49. package/dist/queries/usePutRequest.d.ts +86 -86
  50. package/dist/request/axios-instance.d.ts +3 -3
  51. package/dist/request/axios-instance.js +6 -6
  52. package/dist/request/buildFormData.d.ts +1 -1
  53. package/dist/request/buildFormData.js +40 -40
  54. package/dist/request/index.d.ts +6 -6
  55. package/dist/request/make-request.d.ts +2 -2
  56. package/dist/request/make-request.js +80 -80
  57. package/dist/request/request.enum.d.ts +11 -11
  58. package/dist/request/request.enum.js +12 -12
  59. package/dist/request/request.interface.d.ts +48 -48
  60. package/dist/request/transformer.d.ts +7 -7
  61. package/dist/request/transformer.js +18 -18
  62. package/dist/stores/index.d.ts +2 -2
  63. package/dist/stores/useHeaderStore.d.ts +7 -7
  64. package/dist/stores/useHeaderStore.js +5 -5
  65. package/dist/stores/usePauseFutureRequests.d.ts +7 -7
  66. package/dist/stores/usePauseFutureRequests.js +13 -13
  67. package/dist/types/index.d.ts +34 -29
  68. package/package.json +2 -2
  69. package/src/queries/useDeleteRequest.ts +24 -5
  70. package/src/queries/useGetInfiniteRequest.ts +21 -2
  71. package/src/queries/useGetRequest.ts +26 -9
  72. package/src/queries/usePatchRequest.ts +21 -1
  73. package/src/queries/usePostRequest.ts +21 -1
  74. package/src/queries/usePutRequest.ts +21 -1
  75. package/src/request/make-request.ts +3 -3
  76. package/src/request/transformer.ts +1 -1
  77. package/src/types/index.ts +5 -1
@@ -9,77 +9,92 @@ import 'axios';
9
9
  import { makeRequest } from '../request/make-request.js';
10
10
  import { HttpMethod } from '../request/request.enum.js';
11
11
 
12
- const useDeleteRequest = (deleteOptions) => {
13
- const { baseUrl, headers } = deleteOptions ?? {};
14
- const [requestPath, setRequestPath] = useState('');
15
- const [options, setOptions] = useState();
16
- const { options: queryConfigOptions } = useQueryConfig();
17
- const [requestPayload, setRequestPayload] = useState();
18
- const isFutureQueriesPaused = usePauseFutureRequests((state) => state.isFutureQueriesPaused);
19
- const { API_URL, TIMEOUT } = useEnvironmentVariables();
20
- const globalHeaders = useHeaderStore((state) => state.headers);
21
- const sendRequest = async (res, rej, queryKey) => {
22
- const [url] = queryKey;
23
- const requestUrl = (url ?? requestPath);
24
- const requestOptions = {
25
- path: requestUrl,
26
- headers: { ...globalHeaders, ...headers },
27
- baseURL: baseUrl ?? API_URL,
28
- method: HttpMethod.DELETE,
29
- timeout: TIMEOUT,
30
- };
31
- let shouldContinue = true;
32
- if (queryConfigOptions?.queryMiddleware) {
33
- shouldContinue = await queryConfigOptions.queryMiddleware({ queryKey, ...requestOptions });
34
- }
35
- if (shouldContinue) {
36
- const postResponse = await makeRequest(requestOptions);
37
- if (postResponse.status) {
38
- res(postResponse);
39
- }
40
- else {
41
- rej(postResponse);
42
- }
43
- }
44
- else {
45
- rej(null);
46
- }
47
- };
48
- const query = useQuery({
49
- queryKey: [requestPath, {}],
50
- queryFn: ({ queryKey }) => new Promise((res, rej) => sendRequest(res, rej, queryKey)),
51
- enabled: false,
52
- ...options,
53
- });
54
- const updatedPathAsync = async (link) => {
55
- return setRequestPath(link);
56
- };
57
- const setOptionsAsync = async (fetchOptions) => {
58
- return setOptions(fetchOptions);
59
- };
60
- const destroy = async (link, internalDeleteOptions) => {
61
- if (!isFutureQueriesPaused) {
62
- // set enabled to be true for every delete
63
- internalDeleteOptions = internalDeleteOptions
64
- ? { ...internalDeleteOptions, queryKey: [link, {}], enabled: true }
65
- : { queryKey: [link, {}], enabled: true };
66
- await setOptionsAsync(internalDeleteOptions);
67
- await updatedPathAsync(link);
68
- return query.data;
69
- }
70
- else {
71
- setRequestPayload({ link, internalDeleteOptions });
72
- return undefined;
73
- }
74
- };
75
- useEffect(() => {
76
- if (!isFutureQueriesPaused && requestPayload) {
77
- destroy(requestPayload.link, requestPayload.internalDeleteOptions);
78
- setRequestPayload(undefined);
79
- }
80
- // eslint-disable-next-line react-hooks/exhaustive-deps
81
- }, [isFutureQueriesPaused]);
82
- return { destroy, ...query, isLoading: query.isLoading || isFutureQueriesPaused };
12
+ const useDeleteRequest = (deleteOptions) => {
13
+ const { baseUrl, headers } = deleteOptions ?? {};
14
+ const [requestPath, setRequestPath] = useState('');
15
+ const [options, setOptions] = useState();
16
+ const { options: queryConfigOptions } = useQueryConfig();
17
+ const [requestPayload, setRequestPayload] = useState();
18
+ const isFutureQueriesPaused = usePauseFutureRequests((state) => state.isFutureQueriesPaused);
19
+ const { API_URL, TIMEOUT } = useEnvironmentVariables();
20
+ const globalHeaders = useHeaderStore((state) => state.headers);
21
+ const sendRequest = async (res, rej, queryKey) => {
22
+ const [url] = queryKey;
23
+ const requestUrl = (url ?? requestPath);
24
+ const requestOptions = {
25
+ path: requestUrl,
26
+ headers: { ...globalHeaders, ...headers },
27
+ baseURL: baseUrl ?? API_URL,
28
+ method: HttpMethod.DELETE,
29
+ timeout: TIMEOUT,
30
+ };
31
+ let shouldContinue = true;
32
+ if (queryConfigOptions?.queryMiddleware) {
33
+ shouldContinue = await queryConfigOptions.queryMiddleware({ queryKey, ...requestOptions });
34
+ }
35
+ if (shouldContinue) {
36
+ let deleteResponse;
37
+ if (queryConfigOptions?.middleware) {
38
+ // perform global middleware
39
+ const middlewareResponse = await queryConfigOptions.middleware(async () => await makeRequest(requestOptions), {
40
+ path: requestUrl,
41
+ baseUrl: baseUrl ?? API_URL,
42
+ });
43
+ if (!middlewareResponse) {
44
+ rej();
45
+ return;
46
+ }
47
+ deleteResponse = middlewareResponse;
48
+ }
49
+ else {
50
+ deleteResponse = await makeRequest(requestOptions);
51
+ }
52
+ if (deleteResponse.status) {
53
+ res(deleteResponse);
54
+ }
55
+ else {
56
+ rej(deleteResponse);
57
+ }
58
+ }
59
+ else {
60
+ rej(null);
61
+ }
62
+ };
63
+ const query = useQuery({
64
+ queryKey: [requestPath, {}],
65
+ queryFn: ({ queryKey }) => new Promise((res, rej) => sendRequest(res, rej, queryKey)),
66
+ enabled: false,
67
+ ...options,
68
+ });
69
+ const updatedPathAsync = async (link) => {
70
+ return setRequestPath(link);
71
+ };
72
+ const setOptionsAsync = async (fetchOptions) => {
73
+ return setOptions(fetchOptions);
74
+ };
75
+ const destroy = async (link, internalDeleteOptions) => {
76
+ if (!isFutureQueriesPaused) {
77
+ // set enabled to be true for every delete
78
+ internalDeleteOptions = internalDeleteOptions
79
+ ? { ...internalDeleteOptions, queryKey: [link, {}], enabled: true }
80
+ : { queryKey: [link, {}], enabled: true };
81
+ await setOptionsAsync(internalDeleteOptions);
82
+ await updatedPathAsync(link);
83
+ return query.data;
84
+ }
85
+ else {
86
+ setRequestPayload({ link, internalDeleteOptions });
87
+ return undefined;
88
+ }
89
+ };
90
+ useEffect(() => {
91
+ if (!isFutureQueriesPaused && requestPayload) {
92
+ destroy(requestPayload.link, requestPayload.internalDeleteOptions);
93
+ setRequestPayload(undefined);
94
+ }
95
+ // eslint-disable-next-line react-hooks/exhaustive-deps
96
+ }, [isFutureQueriesPaused]);
97
+ return { destroy, ...query, isLoading: query.isLoading || isFutureQueriesPaused };
83
98
  };
84
99
 
85
100
  export { useDeleteRequest };
@@ -1 +1 @@
1
- {"version":3,"file":"useDeleteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useDeleteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,110 +1,108 @@
1
- import type { InfiniteData, QueryKey, UseQueryOptions } from '@tanstack/react-query';
2
- import type { IRequestError, IRequestSuccess } from '../request';
3
- import type { DefaultRequestOptions, TanstackInfiniteQueryOption } from './queries.interface';
4
- interface Pagination {
5
- previous_page: number;
6
- current_page: number;
7
- next_page: number;
8
- size: number;
9
- page_count: number;
10
- total: number;
11
- }
12
- export declare const useGetInfiniteRequest: <TResponse extends Record<string, any>>({ path, load, queryOptions, keyTracker, baseUrl, headers, }: {
13
- path: string;
14
- load?: boolean | undefined;
15
- queryOptions?: Partial<import("@tanstack/react-query/build/legacy/types").UseInfiniteQueryOptions<IRequestSuccess<(TResponse & {
16
- pagination: Pagination;
17
- }) | undefined>, IRequestError, IRequestSuccess<(TResponse & {
18
- pagination: Pagination;
19
- }) | undefined>, any[], QueryKey, unknown>> | undefined;
20
- keyTracker?: string | undefined;
21
- } & DefaultRequestOptions) => {
22
- isLoading: boolean;
23
- data: InfiniteData<IRequestSuccess<TResponse & {
24
- pagination: Pagination;
25
- }>, unknown>;
26
- error: any;
27
- isError: true;
28
- isPending: false;
29
- isLoadingError: false;
30
- isRefetchError: true;
31
- isFetchNextPageError: false;
32
- isFetchPreviousPageError: false;
33
- isSuccess: false;
34
- status: "error";
35
- fetchNextPage: (options?: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ah | undefined) => Promise<import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").aA<InfiniteData<IRequestSuccess<TResponse & {
36
- pagination: Pagination;
37
- }>, unknown>, any>>;
38
- fetchPreviousPage: (options?: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ai | undefined) => Promise<import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").aA<InfiniteData<IRequestSuccess<TResponse & {
39
- pagination: Pagination;
40
- }>, unknown>, any>>;
41
- hasNextPage: boolean;
42
- hasPreviousPage: boolean;
43
- isFetchingNextPage: boolean;
44
- isFetchingPreviousPage: boolean;
45
- dataUpdatedAt: number;
46
- errorUpdatedAt: number;
47
- failureCount: number;
48
- failureReason: any;
49
- errorUpdateCount: number;
50
- isFetched: boolean;
51
- isFetchedAfterMount: boolean;
52
- isFetching: boolean;
53
- isInitialLoading: boolean;
54
- isPaused: boolean;
55
- isPlaceholderData: boolean;
56
- isRefetching: boolean;
57
- isStale: boolean;
58
- refetch: (options?: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ac | undefined) => Promise<import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").as<InfiniteData<IRequestSuccess<TResponse & {
59
- pagination: Pagination;
60
- }>, unknown>, any>>;
61
- fetchStatus: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ak;
62
- get: (link: string, fetchOptions?: UseQueryOptions<IRequestSuccess<TResponse | undefined>, IRequestError, IRequestSuccess<TResponse | undefined>, any[]> | undefined) => Promise<InfiniteData<IRequestSuccess<TResponse & {
63
- pagination: Pagination;
64
- }>, unknown> | undefined>;
65
- } | {
66
- isLoading: boolean;
67
- data: InfiniteData<IRequestSuccess<TResponse & {
68
- pagination: Pagination;
69
- }>, unknown>;
70
- error: null;
71
- isError: false;
72
- isPending: false;
73
- isLoadingError: false;
74
- isRefetchError: false;
75
- isFetchNextPageError: false;
76
- isFetchPreviousPageError: false;
77
- isSuccess: true;
78
- status: "success";
79
- fetchNextPage: (options?: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ah | undefined) => Promise<import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").aA<InfiniteData<IRequestSuccess<TResponse & {
80
- pagination: Pagination;
81
- }>, unknown>, any>>;
82
- fetchPreviousPage: (options?: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ai | undefined) => Promise<import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").aA<InfiniteData<IRequestSuccess<TResponse & {
83
- pagination: Pagination;
84
- }>, unknown>, any>>;
85
- hasNextPage: boolean;
86
- hasPreviousPage: boolean;
87
- isFetchingNextPage: boolean;
88
- isFetchingPreviousPage: boolean;
89
- dataUpdatedAt: number;
90
- errorUpdatedAt: number;
91
- failureCount: number;
92
- failureReason: any;
93
- errorUpdateCount: number;
94
- isFetched: boolean;
95
- isFetchedAfterMount: boolean;
96
- isFetching: boolean;
97
- isInitialLoading: boolean;
98
- isPaused: boolean;
99
- isPlaceholderData: boolean;
100
- isRefetching: boolean;
101
- isStale: boolean;
102
- refetch: (options?: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ac | undefined) => Promise<import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").as<InfiniteData<IRequestSuccess<TResponse & {
103
- pagination: Pagination;
104
- }>, unknown>, any>>;
105
- fetchStatus: import("@tanstack/query-core/build/legacy/hydration-BZ2M_xzi").ak;
106
- get: (link: string, fetchOptions?: UseQueryOptions<IRequestSuccess<TResponse | undefined>, IRequestError, IRequestSuccess<TResponse | undefined>, any[]> | undefined) => Promise<InfiniteData<IRequestSuccess<TResponse & {
107
- pagination: Pagination;
108
- }>, unknown> | undefined>;
109
- };
110
- export {};
1
+ import type { InfiniteData, UseQueryOptions } from '@tanstack/react-query';
2
+ import type { IRequestError, IRequestSuccess } from '../request';
3
+ import type { DefaultRequestOptions, TanstackInfiniteQueryOption } from './queries.interface';
4
+ interface Pagination {
5
+ previous_page: number;
6
+ current_page: number;
7
+ next_page: number;
8
+ size: number;
9
+ page_count: number;
10
+ total: number;
11
+ }
12
+ export declare const useGetInfiniteRequest: <TResponse extends Record<string, any>>({ path, load, queryOptions, keyTracker, baseUrl, headers, }: {
13
+ path: string;
14
+ load?: boolean;
15
+ queryOptions?: TanstackInfiniteQueryOption<TResponse & {
16
+ pagination: Pagination;
17
+ }>;
18
+ keyTracker?: string;
19
+ } & DefaultRequestOptions) => {
20
+ isLoading: boolean;
21
+ data: InfiniteData<IRequestSuccess<TResponse & {
22
+ pagination: Pagination;
23
+ }>, unknown>;
24
+ error: any;
25
+ isError: true;
26
+ isPending: false;
27
+ isLoadingError: false;
28
+ isRefetchError: true;
29
+ isFetchNextPageError: false;
30
+ isFetchPreviousPageError: false;
31
+ isSuccess: false;
32
+ status: "error";
33
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<InfiniteData<IRequestSuccess<TResponse & {
34
+ pagination: Pagination;
35
+ }>, unknown>, any>>;
36
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<InfiniteData<IRequestSuccess<TResponse & {
37
+ pagination: Pagination;
38
+ }>, unknown>, any>>;
39
+ hasNextPage: boolean;
40
+ hasPreviousPage: boolean;
41
+ isFetchingNextPage: boolean;
42
+ isFetchingPreviousPage: boolean;
43
+ dataUpdatedAt: number;
44
+ errorUpdatedAt: number;
45
+ failureCount: number;
46
+ failureReason: any;
47
+ errorUpdateCount: number;
48
+ isFetched: boolean;
49
+ isFetchedAfterMount: boolean;
50
+ isFetching: boolean;
51
+ isInitialLoading: boolean;
52
+ isPaused: boolean;
53
+ isPlaceholderData: boolean;
54
+ isRefetching: boolean;
55
+ isStale: boolean;
56
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<InfiniteData<IRequestSuccess<TResponse & {
57
+ pagination: Pagination;
58
+ }>, unknown>, any>>;
59
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
60
+ get: (link: string, fetchOptions?: UseQueryOptions<IRequestSuccess<TResponse | undefined>, IRequestError, IRequestSuccess<TResponse | undefined>, Array<any>>) => Promise<InfiniteData<IRequestSuccess<TResponse & {
61
+ pagination: Pagination;
62
+ }>> | undefined>;
63
+ } | {
64
+ isLoading: boolean;
65
+ data: InfiniteData<IRequestSuccess<TResponse & {
66
+ pagination: Pagination;
67
+ }>, unknown>;
68
+ error: null;
69
+ isError: false;
70
+ isPending: false;
71
+ isLoadingError: false;
72
+ isRefetchError: false;
73
+ isFetchNextPageError: false;
74
+ isFetchPreviousPageError: false;
75
+ isSuccess: true;
76
+ status: "success";
77
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<InfiniteData<IRequestSuccess<TResponse & {
78
+ pagination: Pagination;
79
+ }>, unknown>, any>>;
80
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<InfiniteData<IRequestSuccess<TResponse & {
81
+ pagination: Pagination;
82
+ }>, unknown>, any>>;
83
+ hasNextPage: boolean;
84
+ hasPreviousPage: boolean;
85
+ isFetchingNextPage: boolean;
86
+ isFetchingPreviousPage: boolean;
87
+ dataUpdatedAt: number;
88
+ errorUpdatedAt: number;
89
+ failureCount: number;
90
+ failureReason: any;
91
+ errorUpdateCount: number;
92
+ isFetched: boolean;
93
+ isFetchedAfterMount: boolean;
94
+ isFetching: boolean;
95
+ isInitialLoading: boolean;
96
+ isPaused: boolean;
97
+ isPlaceholderData: boolean;
98
+ isRefetching: boolean;
99
+ isStale: boolean;
100
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<InfiniteData<IRequestSuccess<TResponse & {
101
+ pagination: Pagination;
102
+ }>, unknown>, any>>;
103
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
104
+ get: (link: string, fetchOptions?: UseQueryOptions<IRequestSuccess<TResponse | undefined>, IRequestError, IRequestSuccess<TResponse | undefined>, Array<any>>) => Promise<InfiniteData<IRequestSuccess<TResponse & {
105
+ pagination: Pagination;
106
+ }>> | undefined>;
107
+ };
108
+ export {};
@@ -9,108 +9,123 @@ import 'axios';
9
9
  import { makeRequest } from '../request/make-request.js';
10
10
  import '../request/request.enum.js';
11
11
 
12
- const useGetInfiniteRequest = ({ path, load = false, queryOptions, keyTracker, baseUrl, headers, }) => {
13
- const { API_URL, TIMEOUT } = useEnvironmentVariables();
14
- const globalHeaders = useHeaderStore((state) => state.headers);
15
- const [requestPath, setRequestPath] = useState(path);
16
- const [options, setOptions] = useState(queryOptions);
17
- const { options: queryConfigOptions } = useQueryConfig();
18
- const [requestPayload, setRequestPayload] = useState();
19
- const isFutureQueriesPaused = usePauseFutureRequests((state) => state.isFutureQueriesPaused);
20
- let queryClient = useQueryClient();
21
- // eslint-disable-next-line react-hooks/exhaustive-deps
22
- queryClient = useMemo(() => queryClient, []);
23
- const sendRequest = async (res, rej, queryKey, pageParam) => {
24
- if (load) {
25
- // get request headers
26
- const requestOptions = {
27
- path: pageParam ?? requestPath,
28
- headers: { ...globalHeaders, ...headers },
29
- baseURL: baseUrl ?? API_URL,
30
- timeout: TIMEOUT,
31
- };
32
- let shouldContinue = true;
33
- if (queryConfigOptions?.queryMiddleware) {
34
- shouldContinue = await queryConfigOptions.queryMiddleware({ queryKey, ...requestOptions });
35
- }
36
- if (shouldContinue) {
37
- const getResponse = await makeRequest(requestOptions);
38
- if (getResponse.status) {
39
- res(getResponse);
40
- }
41
- else {
42
- rej(getResponse);
43
- }
44
- }
45
- else {
46
- rej(null);
47
- }
48
- }
49
- else {
50
- res(null);
51
- }
52
- };
53
- /**
54
- *
55
- * This pagination implementation is currently tied to our use case
56
- */
57
- const constructPaginationLink = (direction, lastPage) => {
58
- const [pathname, queryString] = requestPath.split('?');
59
- const queryParams = new URLSearchParams(queryString);
60
- const lastPageItem = lastPage.data.pagination[direction];
61
- queryParams.set('page', String(lastPageItem));
62
- return pathname + '?' + queryParams.toString();
63
- };
64
- const query = useInfiniteQuery({
65
- queryKey: [requestPath, {}],
66
- queryFn: ({ pageParam = requestPath, queryKey }) => new Promise((res, rej) => sendRequest(res, rej, queryKey, pageParam)),
67
- enabled: load && !isFutureQueriesPaused,
68
- getNextPageParam: (lastPage) => constructPaginationLink('next_page', lastPage),
69
- getPreviousPageParam: (lastPage) => constructPaginationLink('previous_page', lastPage),
70
- ...options,
71
- });
72
- const setOptionsAsync = async (fetchOptions) => {
73
- startTransition(() => {
74
- setOptions(fetchOptions);
75
- });
76
- };
77
- const get = async (link, fetchOptions) => {
78
- if (!isFutureQueriesPaused) {
79
- await setOptionsAsync(fetchOptions);
80
- await updatedPathAsync(link);
81
- return query.data;
82
- }
83
- else {
84
- setRequestPayload({ link, fetchOptions });
85
- return undefined;
86
- }
87
- };
88
- useEffect(() => {
89
- if (!isFutureQueriesPaused && requestPayload) {
90
- get(requestPayload.link, requestPayload.fetchOptions);
91
- setRequestPayload(undefined);
92
- }
93
- // eslint-disable-next-line react-hooks/exhaustive-deps
94
- }, [isFutureQueriesPaused]);
95
- const updatedPathAsync = async (link) => {
96
- startTransition(() => {
97
- setRequestPath(link);
98
- });
99
- };
100
- useEffect(() => {
101
- if (keyTracker) {
102
- // set expiration time for the tracker
103
- queryClient.setQueryDefaults([keyTracker], {
104
- staleTime: Infinity,
105
- });
106
- queryClient.setQueryData([keyTracker], [requestPath, {}]);
107
- }
108
- }, [keyTracker, requestPath, queryClient, queryOptions?.staleTime]);
109
- return {
110
- get,
111
- ...query,
112
- isLoading: query.isLoading || isFutureQueriesPaused,
113
- };
12
+ const useGetInfiniteRequest = ({ path, load = false, queryOptions, keyTracker, baseUrl, headers, }) => {
13
+ const { API_URL, TIMEOUT } = useEnvironmentVariables();
14
+ const globalHeaders = useHeaderStore((state) => state.headers);
15
+ const [requestPath, setRequestPath] = useState(path);
16
+ const [options, setOptions] = useState(queryOptions);
17
+ const { options: queryConfigOptions } = useQueryConfig();
18
+ const [requestPayload, setRequestPayload] = useState();
19
+ const isFutureQueriesPaused = usePauseFutureRequests((state) => state.isFutureQueriesPaused);
20
+ let queryClient = useQueryClient();
21
+ // eslint-disable-next-line react-hooks/exhaustive-deps
22
+ queryClient = useMemo(() => queryClient, []);
23
+ const sendRequest = async (res, rej, queryKey, pageParam) => {
24
+ if (load) {
25
+ // get request headers
26
+ const requestOptions = {
27
+ path: pageParam ?? requestPath,
28
+ headers: { ...globalHeaders, ...headers },
29
+ baseURL: baseUrl ?? API_URL,
30
+ timeout: TIMEOUT,
31
+ };
32
+ let shouldContinue = true;
33
+ if (queryConfigOptions?.queryMiddleware) {
34
+ shouldContinue = await queryConfigOptions.queryMiddleware({ queryKey, ...requestOptions });
35
+ }
36
+ if (shouldContinue) {
37
+ let getResponse;
38
+ if (queryConfigOptions?.middleware) {
39
+ // perform global middleware
40
+ const middlewareResponse = await queryConfigOptions.middleware(async () => await makeRequest(requestOptions), {
41
+ path,
42
+ baseUrl: baseUrl ?? API_URL,
43
+ });
44
+ if (!middlewareResponse) {
45
+ rej();
46
+ return;
47
+ }
48
+ getResponse = middlewareResponse;
49
+ }
50
+ else {
51
+ getResponse = await makeRequest(requestOptions);
52
+ }
53
+ if (getResponse.status) {
54
+ res(getResponse);
55
+ }
56
+ else {
57
+ rej(getResponse);
58
+ }
59
+ }
60
+ else {
61
+ rej(null);
62
+ }
63
+ }
64
+ else {
65
+ res(null);
66
+ }
67
+ };
68
+ /**
69
+ *
70
+ * This pagination implementation is currently tied to our use case
71
+ */
72
+ const constructPaginationLink = (direction, lastPage) => {
73
+ const [pathname, queryString] = requestPath.split('?');
74
+ const queryParams = new URLSearchParams(queryString);
75
+ const lastPageItem = lastPage.data.pagination[direction];
76
+ queryParams.set('page', String(lastPageItem));
77
+ return pathname + '?' + queryParams.toString();
78
+ };
79
+ const query = useInfiniteQuery({
80
+ queryKey: [requestPath, {}],
81
+ queryFn: ({ pageParam = requestPath, queryKey }) => new Promise((res, rej) => sendRequest(res, rej, queryKey, pageParam)),
82
+ enabled: load && !isFutureQueriesPaused,
83
+ getNextPageParam: (lastPage) => constructPaginationLink('next_page', lastPage),
84
+ getPreviousPageParam: (lastPage) => constructPaginationLink('previous_page', lastPage),
85
+ ...options,
86
+ });
87
+ const setOptionsAsync = async (fetchOptions) => {
88
+ startTransition(() => {
89
+ setOptions(fetchOptions);
90
+ });
91
+ };
92
+ const get = async (link, fetchOptions) => {
93
+ if (!isFutureQueriesPaused) {
94
+ await setOptionsAsync(fetchOptions);
95
+ await updatedPathAsync(link);
96
+ return query.data;
97
+ }
98
+ else {
99
+ setRequestPayload({ link, fetchOptions });
100
+ return undefined;
101
+ }
102
+ };
103
+ useEffect(() => {
104
+ if (!isFutureQueriesPaused && requestPayload) {
105
+ get(requestPayload.link, requestPayload.fetchOptions);
106
+ setRequestPayload(undefined);
107
+ }
108
+ // eslint-disable-next-line react-hooks/exhaustive-deps
109
+ }, [isFutureQueriesPaused]);
110
+ const updatedPathAsync = async (link) => {
111
+ startTransition(() => {
112
+ setRequestPath(link);
113
+ });
114
+ };
115
+ useEffect(() => {
116
+ if (keyTracker) {
117
+ // set expiration time for the tracker
118
+ queryClient.setQueryDefaults([keyTracker], {
119
+ staleTime: Infinity,
120
+ });
121
+ queryClient.setQueryData([keyTracker], [requestPath, {}]);
122
+ }
123
+ }, [keyTracker, requestPath, queryClient, queryOptions?.staleTime]);
124
+ return {
125
+ get,
126
+ ...query,
127
+ isLoading: query.isLoading || isFutureQueriesPaused,
128
+ };
114
129
  };
115
130
 
116
131
  export { useGetInfiniteRequest };
@@ -1 +1 @@
1
- {"version":3,"file":"useGetInfiniteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useGetInfiniteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}