@ventlio/tanstack-query 0.5.4 → 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 +2 -2
  76. package/src/request/transformer.ts +1 -1
  77. package/src/types/index.ts +5 -1
@@ -1,12 +1,10 @@
1
- import type { QueryKey, UseQueryOptions } from '@tanstack/react-query';
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 type { IRequestError, IRequestSuccess } from '../request';
7
- import { makeRequest } from '../request';
5
+ import { IRequestError, IRequestSuccess, makeRequest } from '../request';
8
6
  import { useHeaderStore, usePauseFutureRequests } from '../stores';
9
- import type { DefaultRequestOptions, IPagination, TanstackQueryOption } from './queries.interface';
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
- const getResponse = await makeRequest<TResponse>(requestOptions);
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?.data.pagination) {
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?.data.pagination) {
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
- const patchResponse = await makeRequest<TResponse>(requestOptions);
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
- const postResponse = await makeRequest<TResponse>(requestOptions);
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
- const putResponse = await makeRequest<TResponse>(requestOptions);
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;
@@ -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
 
@@ -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 {