@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.
Files changed (34) hide show
  1. package/dist/index.mjs +41 -50
  2. package/dist/index.mjs.map +1 -1
  3. package/dist/model/useKeyTrackerModel.d.ts +1 -1
  4. package/dist/model/useQueryModel.d.ts +1 -1
  5. package/dist/model/useQueryModel.js +6 -6
  6. package/dist/model/useRefetchQuery.d.ts +1 -1
  7. package/dist/model/useRefetchQuery.js +1 -1
  8. package/dist/queries/useDeleteRequest.d.ts +66 -6
  9. package/dist/queries/useDeleteRequest.js +3 -7
  10. package/dist/queries/useDeleteRequest.js.map +1 -1
  11. package/dist/queries/useGetInfiniteRequest.d.ts +109 -25
  12. package/dist/queries/useGetInfiniteRequest.js +2 -3
  13. package/dist/queries/useGetInfiniteRequest.js.map +1 -1
  14. package/dist/queries/useGetRequest.d.ts +74 -6
  15. package/dist/queries/useGetRequest.js +2 -3
  16. package/dist/queries/useGetRequest.js.map +1 -1
  17. package/dist/queries/usePatchRequest.d.ts +13 -21
  18. package/dist/queries/usePatchRequest.js +4 -7
  19. package/dist/queries/usePatchRequest.js.map +1 -1
  20. package/dist/queries/usePostRequest.d.ts +25 -30
  21. package/dist/queries/usePostRequest.js +2 -3
  22. package/dist/queries/usePostRequest.js.map +1 -1
  23. package/dist/request/make-request.js +21 -20
  24. package/dist/request/make-request.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/model/useKeyTrackerModel.ts +2 -2
  27. package/src/model/useQueryModel.ts +7 -7
  28. package/src/model/useRefetchQuery.ts +1 -1
  29. package/src/queries/useDeleteRequest.ts +7 -7
  30. package/src/queries/useGetInfiniteRequest.ts +19 -14
  31. package/src/queries/useGetRequest.ts +9 -6
  32. package/src/queries/usePatchRequest.ts +5 -5
  33. package/src/queries/usePostRequest.ts +2 -4
  34. 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
- queryKey: [requestPath, {}],
115
- queryFn: ({ pageParam = requestPath, queryKey }) =>
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 as string)
117
+ sendRequest(res, rej, queryKey, pageParam)
118
118
  ),
119
- enabled: load && !isFutureQueriesPaused,
120
- getNextPageParam: (lastPage) => constructPaginationLink('next_page', lastPage),
121
- getPreviousPageParam: (lastPage) => constructPaginationLink('previous_page', lastPage),
122
- ...options,
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
- | IRequestSuccess<
141
- TResponse & {
142
- pagination: Pagination;
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
- queryKey: [requestPath, {}],
83
- queryFn: ({ queryKey }) =>
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
- enabled: load && !isFutureQueriesPaused,
86
- ...options,
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
- mutationFn: (dataData: any) =>
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.isPending || isFutureMutationsPaused };
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.isPending || isFutureMutationsPaused };
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
- 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);
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
- // send request
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;