@ventlio/tanstack-query 0.2.24 → 0.2.26

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 (37) hide show
  1. package/dist/config/index.d.ts +1 -0
  2. package/dist/config/useQueryHeaders.d.ts +2 -0
  3. package/dist/config/useQueryHeaders.js +25 -0
  4. package/dist/{contexts → config}/useQueryHeaders.js.map +1 -1
  5. package/dist/index.d.ts +0 -1
  6. package/dist/index.js +1 -4
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +86 -72
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/model/useKeyTrackerModel.js +3 -3
  11. package/dist/queries/useDeleteRequest.js +8 -6
  12. package/dist/queries/useDeleteRequest.js.map +1 -1
  13. package/dist/queries/useGetRequest.js +13 -12
  14. package/dist/queries/useGetRequest.js.map +1 -1
  15. package/dist/queries/usePatchRequest.js +30 -26
  16. package/dist/queries/usePatchRequest.js.map +1 -1
  17. package/dist/queries/usePostRequest.js +33 -29
  18. package/dist/queries/usePostRequest.js.map +1 -1
  19. package/dist/types/index.d.ts +1 -1
  20. package/package.json +1 -1
  21. package/src/config/index.ts +1 -0
  22. package/src/config/useQueryHeaders.ts +24 -0
  23. package/src/index.ts +0 -1
  24. package/src/queries/useDeleteRequest.ts +7 -3
  25. package/src/queries/useGetRequest.ts +7 -3
  26. package/src/queries/usePatchRequest.ts +31 -24
  27. package/src/queries/usePostRequest.ts +35 -28
  28. package/src/types/index.ts +1 -1
  29. package/dist/contexts/QueryClientRequestProvider.d.ts +0 -12
  30. package/dist/contexts/QueryClientRequestProvider.js +0 -24
  31. package/dist/contexts/QueryClientRequestProvider.js.map +0 -1
  32. package/dist/contexts/index.d.ts +0 -2
  33. package/dist/contexts/useQueryHeaders.d.ts +0 -2
  34. package/dist/contexts/useQueryHeaders.js +0 -11
  35. package/src/contexts/QueryClientRequestProvider.tsx +0 -48
  36. package/src/contexts/index.ts +0 -2
  37. package/src/contexts/useQueryHeaders.ts +0 -7
@@ -1,3 +1,4 @@
1
1
  export * from './config.interface';
2
2
  export * from './useEnvironmentVariables';
3
3
  export * from './useQueryConfig';
4
+ export * from './useQueryHeaders';
@@ -0,0 +1,2 @@
1
+ import type { IUseQueryHeaders } from '../types';
2
+ export declare const useQueryHeaders: () => IUseQueryHeaders;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var reactQuery = require('@tanstack/react-query');
4
+
5
+ const useQueryHeaders = () => {
6
+ const queryClient = reactQuery.useQueryClient();
7
+ const getHeadersAsync = async () => {
8
+ return queryClient.ensureQueryData({
9
+ queryKey: ['config'],
10
+ queryFn: () => {
11
+ return queryClient.getQueryData(['config']);
12
+ },
13
+ });
14
+ };
15
+ const setQueryHeaders = (newHeaders) => {
16
+ queryClient.setQueryData(['config'], (config) => {
17
+ const newConfig = { ...config, headers: newHeaders };
18
+ return newConfig;
19
+ });
20
+ };
21
+ return { setQueryHeaders, getHeadersAsync };
22
+ };
23
+
24
+ exports.useQueryHeaders = useQueryHeaders;
25
+ //# sourceMappingURL=useQueryHeaders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryHeaders.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"useQueryHeaders.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './config';
2
- export * from './contexts';
3
2
  export * from './helpers';
4
3
  export * from './model';
5
4
  export * from './queries';
package/dist/index.js CHANGED
@@ -2,8 +2,7 @@
2
2
 
3
3
  var useEnvironmentVariables = require('./config/useEnvironmentVariables.js');
4
4
  var useQueryConfig = require('./config/useQueryConfig.js');
5
- var QueryClientRequestProvider = require('./contexts/QueryClientRequestProvider.js');
6
- var useQueryHeaders = require('./contexts/useQueryHeaders.js');
5
+ var useQueryHeaders = require('./config/useQueryHeaders.js');
7
6
  var scrollToTop = require('./helpers/scrollToTop.js');
8
7
  var useKeyTrackerModel = require('./model/useKeyTrackerModel.js');
9
8
  var useQueryModel = require('./model/useQueryModel.js');
@@ -22,8 +21,6 @@ var transformer = require('./request/transformer.js');
22
21
 
23
22
  exports.useEnvironmentVariables = useEnvironmentVariables.useEnvironmentVariables;
24
23
  exports.useQueryConfig = useQueryConfig.useQueryConfig;
25
- exports.QueryClientRequestProvider = QueryClientRequestProvider.QueryClientRequestProvider;
26
- exports.RequestHeaderProvider = QueryClientRequestProvider.RequestHeaderProvider;
27
24
  exports.useQueryHeaders = useQueryHeaders.useQueryHeaders;
28
25
  exports.scrollToTop = scrollToTop.scrollToTop;
29
26
  exports.useKeyTrackerModel = useKeyTrackerModel.useKeyTrackerModel;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { useQueryClient, QueryClientProvider, useQuery, useMutation } from '@tanstack/react-query';
2
- import React, { createContext, useState, useCallback, useMemo, useContext, useEffect, startTransition } from 'react';
1
+ import { useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
2
+ import { useState, useMemo, useEffect, startTransition } from 'react';
3
3
  import axios from 'axios';
4
4
 
5
5
  const useEnvironmentVariables = () => {
@@ -17,24 +17,23 @@ const useQueryConfig = () => {
17
17
  return { headers };
18
18
  };
19
19
 
20
- const RequestHeaderProvider = createContext({
21
- headers: {},
22
- setHeaders: (_newHeaders) => {
23
- //
24
- },
25
- });
26
- const QueryClientRequestProvider = ({ client, children, }) => {
27
- const [headers, updateHeaders] = useState({});
28
- const setHeaders = useCallback((newHeaders) => {
29
- updateHeaders(newHeaders);
30
- }, []);
31
- const requestContextValue = useMemo(() => ({ headers, setHeaders }), [headers, setHeaders]);
32
- return (React.createElement(QueryClientProvider, { client: client },
33
- React.createElement(RequestHeaderProvider.Provider, { value: requestContextValue }, children)));
34
- };
35
-
36
20
  const useQueryHeaders = () => {
37
- return useContext(RequestHeaderProvider);
21
+ const queryClient = useQueryClient();
22
+ const getHeadersAsync = async () => {
23
+ return queryClient.ensureQueryData({
24
+ queryKey: ['config'],
25
+ queryFn: () => {
26
+ return queryClient.getQueryData(['config']);
27
+ },
28
+ });
29
+ };
30
+ const setQueryHeaders = (newHeaders) => {
31
+ queryClient.setQueryData(['config'], (config) => {
32
+ const newConfig = { ...config, headers: newHeaders };
33
+ return newConfig;
34
+ });
35
+ };
36
+ return { setQueryHeaders, getHeadersAsync };
38
37
  };
39
38
 
40
39
  const scrollToTop = () => {
@@ -179,9 +178,12 @@ const useDeleteRequest = () => {
179
178
  const [requestPath, updateDeletePath] = useState('');
180
179
  const [options, setOptions] = useState();
181
180
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
182
- const { headers } = useQueryHeaders();
181
+ const { getHeadersAsync } = useQueryHeaders();
183
182
  const query = useQuery([requestPath, {}], () => new Promise((res, rej) => {
184
183
  setTimeout(async () => {
184
+ // get request headers
185
+ const headers = (await getHeadersAsync())
186
+ .headers;
185
187
  const postResponse = await makeRequest({
186
188
  path: requestPath,
187
189
  headers,
@@ -222,11 +224,13 @@ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
222
224
  const [options, setOptions] = useState(queryOptions);
223
225
  const [page, setPage] = useState(1);
224
226
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
225
- const { headers } = useQueryHeaders();
227
+ const { getHeadersAsync } = useQueryHeaders();
226
228
  let queryClient = useQueryClient();
227
229
  // eslint-disable-next-line react-hooks/exhaustive-deps
228
230
  queryClient = useMemo(() => queryClient, []);
229
231
  const sendRequest = async (res, rej) => {
232
+ // get request headers
233
+ const headers = (await getHeadersAsync()).headers;
230
234
  const postResponse = await makeRequest({
231
235
  path: requestPath,
232
236
  headers,
@@ -319,31 +323,36 @@ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
319
323
 
320
324
  const usePatchRequest = ({ path }) => {
321
325
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
322
- const { headers } = useQueryHeaders();
326
+ const { getHeadersAsync } = useQueryHeaders();
323
327
  // register post mutation
324
328
  const mutation = useMutation((postData) => new Promise((res, rej) => {
325
- makeRequest({
326
- path: path,
327
- body: postData,
328
- method: HttpMethod.PATCH,
329
- headers,
330
- baseURL: API_URL,
331
- timeout: TIMEOUT,
332
- }).then((postResponse) => {
333
- if (postResponse.status) {
334
- // scroll to top after success
335
- scrollToTop();
336
- res(postResponse);
337
- }
338
- else {
339
- // scroll to top after error
340
- window.scrollTo({
341
- top: 0,
342
- behavior: 'smooth',
343
- });
344
- rej(postResponse);
345
- }
346
- });
329
+ return (async () => {
330
+ // get request headers
331
+ const headers = (await getHeadersAsync())
332
+ .headers;
333
+ makeRequest({
334
+ path: path,
335
+ body: postData,
336
+ method: HttpMethod.PATCH,
337
+ headers,
338
+ baseURL: API_URL,
339
+ timeout: TIMEOUT,
340
+ }).then((postResponse) => {
341
+ if (postResponse.status) {
342
+ // scroll to top after success
343
+ scrollToTop();
344
+ res(postResponse);
345
+ }
346
+ else {
347
+ // scroll to top after error
348
+ window.scrollTo({
349
+ top: 0,
350
+ behavior: 'smooth',
351
+ });
352
+ rej(postResponse);
353
+ }
354
+ });
355
+ })();
347
356
  }));
348
357
  const patch = async (postData, options) => {
349
358
  return mutation.mutateAsync(postData, options);
@@ -353,35 +362,40 @@ const usePatchRequest = ({ path }) => {
353
362
 
354
363
  const usePostRequest = ({ path, isFormData = false, }) => {
355
364
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
356
- const { headers } = useQueryHeaders();
365
+ const { getHeadersAsync } = useQueryHeaders();
357
366
  // register post mutation
358
367
  const mutation = useMutation(async (postData) => new Promise((res, rej) => {
359
- makeRequest({
360
- path: path,
361
- body: postData,
362
- method: HttpMethod.POST,
363
- isFormData,
364
- headers,
365
- baseURL: API_URL,
366
- timeout: TIMEOUT,
367
- }).then((postResponse) => {
368
- if (postResponse.status) {
369
- // scroll to top after success
370
- window.scrollTo({
371
- top: 0,
372
- behavior: 'smooth',
373
- });
374
- res(postResponse);
375
- }
376
- else {
377
- // scroll to top after error
378
- window.scrollTo({
379
- top: 0,
380
- behavior: 'smooth',
381
- });
382
- rej(postResponse);
383
- }
384
- });
368
+ return (async () => {
369
+ // get request headers
370
+ const headers = (await getHeadersAsync())
371
+ .headers;
372
+ makeRequest({
373
+ path: path,
374
+ body: postData,
375
+ method: HttpMethod.POST,
376
+ isFormData,
377
+ headers,
378
+ baseURL: API_URL,
379
+ timeout: TIMEOUT,
380
+ }).then((postResponse) => {
381
+ if (postResponse.status) {
382
+ // scroll to top after success
383
+ window.scrollTo({
384
+ top: 0,
385
+ behavior: 'smooth',
386
+ });
387
+ res(postResponse);
388
+ }
389
+ else {
390
+ // scroll to top after error
391
+ window.scrollTo({
392
+ top: 0,
393
+ behavior: 'smooth',
394
+ });
395
+ rej(postResponse);
396
+ }
397
+ });
398
+ })();
385
399
  }));
386
400
  const post = async (postData, options) => {
387
401
  return mutation.mutateAsync(postData, options);
@@ -389,5 +403,5 @@ const usePostRequest = ({ path, isFormData = false, }) => {
389
403
  return { post, ...mutation };
390
404
  };
391
405
 
392
- export { ContentType, HttpMethod, QueryClientRequestProvider, RequestHeaderProvider, axiosInstance, buildFormData, errorTransformer, makeRequest, scrollToTop, successTransformer, useDeleteRequest, useEnvironmentVariables, useGetRequest, useKeyTrackerModel, usePatchRequest, usePostRequest, useQueryConfig, useQueryHeaders, useQueryModel, useRefetchQuery };
406
+ export { ContentType, HttpMethod, axiosInstance, buildFormData, errorTransformer, makeRequest, scrollToTop, successTransformer, useDeleteRequest, useEnvironmentVariables, useGetRequest, useKeyTrackerModel, usePatchRequest, usePostRequest, useQueryConfig, useQueryHeaders, useQueryModel, useRefetchQuery };
393
407
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var reactQuery = require('@tanstack/react-query');
4
- var React = require('react');
4
+ var react = require('react');
5
5
 
6
6
  const useKeyTrackerModel = (keyTracker) => {
7
7
  const queryClient = reactQuery.useQueryClient();
8
- const [data, setData] = React.useState();
9
- const [queryKey, setQueryKey] = React.useState();
8
+ const [data, setData] = react.useState();
9
+ const [queryKey, setQueryKey] = react.useState();
10
10
  const getQueryKey = (innerKeyTracker) => {
11
11
  const key = queryClient.getQueryData([
12
12
  innerKeyTracker ?? keyTracker,
@@ -1,21 +1,23 @@
1
1
  'use strict';
2
2
 
3
3
  var reactQuery = require('@tanstack/react-query');
4
- var React = require('react');
4
+ var react = require('react');
5
5
  var useEnvironmentVariables = require('../config/useEnvironmentVariables.js');
6
- require('../contexts/QueryClientRequestProvider.js');
7
- var useQueryHeaders = require('../contexts/useQueryHeaders.js');
6
+ var useQueryHeaders = require('../config/useQueryHeaders.js');
8
7
  require('axios');
9
8
  var makeRequest = require('../request/make-request.js');
10
9
  var request_enum = require('../request/request.enum.js');
11
10
 
12
11
  const useDeleteRequest = () => {
13
- const [requestPath, updateDeletePath] = React.useState('');
14
- const [options, setOptions] = React.useState();
12
+ const [requestPath, updateDeletePath] = react.useState('');
13
+ const [options, setOptions] = react.useState();
15
14
  const { API_URL, TIMEOUT } = useEnvironmentVariables.useEnvironmentVariables();
16
- const { headers } = useQueryHeaders.useQueryHeaders();
15
+ const { getHeadersAsync } = useQueryHeaders.useQueryHeaders();
17
16
  const query = reactQuery.useQuery([requestPath, {}], () => new Promise((res, rej) => {
18
17
  setTimeout(async () => {
18
+ // get request headers
19
+ const headers = (await getHeadersAsync())
20
+ .headers;
19
21
  const postResponse = await makeRequest.makeRequest({
20
22
  path: requestPath,
21
23
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"useDeleteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useDeleteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,24 +1,25 @@
1
1
  'use strict';
2
2
 
3
3
  var reactQuery = require('@tanstack/react-query');
4
- var React = require('react');
4
+ var react = require('react');
5
5
  var useEnvironmentVariables = require('../config/useEnvironmentVariables.js');
6
- require('../contexts/QueryClientRequestProvider.js');
7
- var useQueryHeaders = require('../contexts/useQueryHeaders.js');
6
+ var useQueryHeaders = require('../config/useQueryHeaders.js');
8
7
  require('axios');
9
8
  var makeRequest = require('../request/make-request.js');
10
9
  require('../request/request.enum.js');
11
10
 
12
11
  const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
13
- const [requestPath, updatePath] = React.useState(path);
14
- const [options, setOptions] = React.useState(queryOptions);
15
- const [page, setPage] = React.useState(1);
12
+ const [requestPath, updatePath] = react.useState(path);
13
+ const [options, setOptions] = react.useState(queryOptions);
14
+ const [page, setPage] = react.useState(1);
16
15
  const { API_URL, TIMEOUT } = useEnvironmentVariables.useEnvironmentVariables();
17
- const { headers } = useQueryHeaders.useQueryHeaders();
16
+ const { getHeadersAsync } = useQueryHeaders.useQueryHeaders();
18
17
  let queryClient = reactQuery.useQueryClient();
19
18
  // eslint-disable-next-line react-hooks/exhaustive-deps
20
- queryClient = React.useMemo(() => queryClient, []);
19
+ queryClient = react.useMemo(() => queryClient, []);
21
20
  const sendRequest = async (res, rej) => {
21
+ // get request headers
22
+ const headers = (await getHeadersAsync()).headers;
22
23
  const postResponse = await makeRequest.makeRequest({
23
24
  path: requestPath,
24
25
  headers,
@@ -38,12 +39,12 @@ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
38
39
  enabled: load,
39
40
  ...options,
40
41
  });
41
- React.useEffect(() => {
42
+ react.useEffect(() => {
42
43
  if (path) {
43
44
  updatePath(path);
44
45
  }
45
46
  }, [path]);
46
- React.useEffect(() => {
47
+ react.useEffect(() => {
47
48
  if (keyTracker) {
48
49
  queryClient.setQueryData([keyTracker], [requestPath, {}]);
49
50
  }
@@ -83,12 +84,12 @@ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
83
84
  updatePath(constructPaginationLink(requestPath, pageNumber));
84
85
  };
85
86
  const updatedPathAsync = async (link) => {
86
- React.startTransition(() => {
87
+ react.startTransition(() => {
87
88
  updatePath(link);
88
89
  });
89
90
  };
90
91
  const setOptionsAsync = async (fetchOptions) => {
91
- React.startTransition(() => {
92
+ react.startTransition(() => {
92
93
  setOptions(fetchOptions);
93
94
  });
94
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useGetRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useGetRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,41 +1,45 @@
1
1
  'use strict';
2
2
 
3
3
  var reactQuery = require('@tanstack/react-query');
4
+ var useEnvironmentVariables = require('../config/useEnvironmentVariables.js');
5
+ var useQueryHeaders = require('../config/useQueryHeaders.js');
4
6
  var scrollToTop = require('../helpers/scrollToTop.js');
5
7
  require('axios');
6
8
  var makeRequest = require('../request/make-request.js');
7
9
  var request_enum = require('../request/request.enum.js');
8
- var useEnvironmentVariables = require('../config/useEnvironmentVariables.js');
9
- require('../contexts/QueryClientRequestProvider.js');
10
- var useQueryHeaders = require('../contexts/useQueryHeaders.js');
11
10
 
12
11
  const usePatchRequest = ({ path }) => {
13
12
  const { API_URL, TIMEOUT } = useEnvironmentVariables.useEnvironmentVariables();
14
- const { headers } = useQueryHeaders.useQueryHeaders();
13
+ const { getHeadersAsync } = useQueryHeaders.useQueryHeaders();
15
14
  // register post mutation
16
15
  const mutation = reactQuery.useMutation((postData) => new Promise((res, rej) => {
17
- makeRequest.makeRequest({
18
- path: path,
19
- body: postData,
20
- method: request_enum.HttpMethod.PATCH,
21
- headers,
22
- baseURL: API_URL,
23
- timeout: TIMEOUT,
24
- }).then((postResponse) => {
25
- if (postResponse.status) {
26
- // scroll to top after success
27
- scrollToTop.scrollToTop();
28
- res(postResponse);
29
- }
30
- else {
31
- // scroll to top after error
32
- window.scrollTo({
33
- top: 0,
34
- behavior: 'smooth',
35
- });
36
- rej(postResponse);
37
- }
38
- });
16
+ return (async () => {
17
+ // get request headers
18
+ const headers = (await getHeadersAsync())
19
+ .headers;
20
+ makeRequest.makeRequest({
21
+ path: path,
22
+ body: postData,
23
+ method: request_enum.HttpMethod.PATCH,
24
+ headers,
25
+ baseURL: API_URL,
26
+ timeout: TIMEOUT,
27
+ }).then((postResponse) => {
28
+ if (postResponse.status) {
29
+ // scroll to top after success
30
+ scrollToTop.scrollToTop();
31
+ res(postResponse);
32
+ }
33
+ else {
34
+ // scroll to top after error
35
+ window.scrollTo({
36
+ top: 0,
37
+ behavior: 'smooth',
38
+ });
39
+ rej(postResponse);
40
+ }
41
+ });
42
+ })();
39
43
  }));
40
44
  const patch = async (postData, options) => {
41
45
  return mutation.mutateAsync(postData, options);
@@ -1 +1 @@
1
- {"version":3,"file":"usePatchRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"usePatchRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,43 +2,47 @@
2
2
 
3
3
  var reactQuery = require('@tanstack/react-query');
4
4
  var useEnvironmentVariables = require('../config/useEnvironmentVariables.js');
5
- require('../contexts/QueryClientRequestProvider.js');
6
- var useQueryHeaders = require('../contexts/useQueryHeaders.js');
5
+ var useQueryHeaders = require('../config/useQueryHeaders.js');
7
6
  require('axios');
8
7
  var makeRequest = require('../request/make-request.js');
9
8
  var request_enum = require('../request/request.enum.js');
10
9
 
11
10
  const usePostRequest = ({ path, isFormData = false, }) => {
12
11
  const { API_URL, TIMEOUT } = useEnvironmentVariables.useEnvironmentVariables();
13
- const { headers } = useQueryHeaders.useQueryHeaders();
12
+ const { getHeadersAsync } = useQueryHeaders.useQueryHeaders();
14
13
  // register post mutation
15
14
  const mutation = reactQuery.useMutation(async (postData) => new Promise((res, rej) => {
16
- makeRequest.makeRequest({
17
- path: path,
18
- body: postData,
19
- method: request_enum.HttpMethod.POST,
20
- isFormData,
21
- headers,
22
- baseURL: API_URL,
23
- timeout: TIMEOUT,
24
- }).then((postResponse) => {
25
- if (postResponse.status) {
26
- // scroll to top after success
27
- window.scrollTo({
28
- top: 0,
29
- behavior: 'smooth',
30
- });
31
- res(postResponse);
32
- }
33
- else {
34
- // scroll to top after error
35
- window.scrollTo({
36
- top: 0,
37
- behavior: 'smooth',
38
- });
39
- rej(postResponse);
40
- }
41
- });
15
+ return (async () => {
16
+ // get request headers
17
+ const headers = (await getHeadersAsync())
18
+ .headers;
19
+ makeRequest.makeRequest({
20
+ path: path,
21
+ body: postData,
22
+ method: request_enum.HttpMethod.POST,
23
+ isFormData,
24
+ headers,
25
+ baseURL: API_URL,
26
+ timeout: TIMEOUT,
27
+ }).then((postResponse) => {
28
+ if (postResponse.status) {
29
+ // scroll to top after success
30
+ window.scrollTo({
31
+ top: 0,
32
+ behavior: 'smooth',
33
+ });
34
+ res(postResponse);
35
+ }
36
+ else {
37
+ // scroll to top after error
38
+ window.scrollTo({
39
+ top: 0,
40
+ behavior: 'smooth',
41
+ });
42
+ rej(postResponse);
43
+ }
44
+ });
45
+ })();
42
46
  }));
43
47
  const post = async (postData, options) => {
44
48
  return mutation.mutateAsync(postData, options);
@@ -1 +1 @@
1
- {"version":3,"file":"usePostRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"usePostRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,6 +3,6 @@ export interface TanstackQueryConfig {
3
3
  headers: RawAxiosRequestHeaders;
4
4
  }
5
5
  export interface IUseQueryHeaders {
6
- headers: TanstackQueryConfig['headers'];
6
+ getHeadersAsync: () => Promise<TanstackQueryConfig>;
7
7
  setQueryHeaders: (header: TanstackQueryConfig['headers']) => void;
8
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ventlio/tanstack-query",
3
- "version": "0.2.24",
3
+ "version": "0.2.26",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "contributors": [
@@ -1,3 +1,4 @@
1
1
  export * from './config.interface';
2
2
  export * from './useEnvironmentVariables';
3
3
  export * from './useQueryConfig';
4
+ export * from './useQueryHeaders';
@@ -0,0 +1,24 @@
1
+ import { useQueryClient } from '@tanstack/react-query';
2
+ import type { IUseQueryHeaders, TanstackQueryConfig } from '../types';
3
+
4
+ export const useQueryHeaders = (): IUseQueryHeaders => {
5
+ const queryClient = useQueryClient();
6
+
7
+ const getHeadersAsync = async (): Promise<TanstackQueryConfig> => {
8
+ return queryClient.ensureQueryData({
9
+ queryKey: ['config'],
10
+ queryFn: () => {
11
+ return queryClient.getQueryData(['config']);
12
+ },
13
+ });
14
+ };
15
+
16
+ const setQueryHeaders = (newHeaders: TanstackQueryConfig['headers']) => {
17
+ queryClient.setQueryData<TanstackQueryConfig>(['config'], (config): any => {
18
+ const newConfig = { ...config, headers: newHeaders };
19
+ return newConfig;
20
+ });
21
+ };
22
+
23
+ return { setQueryHeaders, getHeadersAsync };
24
+ };
package/src/index.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './config';
2
- export * from './contexts';
3
2
  export * from './helpers';
4
3
  export * from './model';
5
4
  export * from './queries';
@@ -1,8 +1,8 @@
1
1
  import type { UseQueryOptions } from '@tanstack/react-query';
2
2
  import { useQuery } from '@tanstack/react-query';
3
+ import type { RawAxiosRequestHeaders } from 'axios';
3
4
  import { useState } from 'react';
4
- import { useEnvironmentVariables } from '../config';
5
- import { useQueryHeaders } from '../contexts';
5
+ import { useEnvironmentVariables, useQueryHeaders } from '../config';
6
6
  import type { IRequestError, IRequestSuccess } from '../request';
7
7
  import { HttpMethod, makeRequest } from '../request';
8
8
 
@@ -12,13 +12,17 @@ export const useDeleteRequest = <TResponse>() => {
12
12
 
13
13
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
14
14
 
15
- const { headers } = useQueryHeaders();
15
+ const { getHeadersAsync } = useQueryHeaders();
16
16
 
17
17
  const query = useQuery<any, any, IRequestSuccess<TResponse>>(
18
18
  [requestPath, {}],
19
19
  () =>
20
20
  new Promise<IRequestSuccess<TResponse> | IRequestError>((res, rej) => {
21
21
  setTimeout(async () => {
22
+ // get request headers
23
+ const headers: RawAxiosRequestHeaders = (await getHeadersAsync())
24
+ .headers;
25
+
22
26
  const postResponse = await makeRequest<TResponse>({
23
27
  path: requestPath,
24
28
  headers,
@@ -1,8 +1,9 @@
1
1
  import type { UseQueryOptions } from '@tanstack/react-query';
2
2
  import { useQuery, useQueryClient } from '@tanstack/react-query';
3
+ import type { RawAxiosRequestHeaders } from 'axios';
3
4
  import { startTransition, useEffect, useMemo, useState } from 'react';
4
- import { useEnvironmentVariables } from '../config';
5
- import { useQueryHeaders } from '../contexts';
5
+ import { useEnvironmentVariables, useQueryHeaders } from '../config';
6
+
6
7
  import type { IRequestError, IRequestSuccess } from '../request';
7
8
  import { makeRequest } from '../request';
8
9
  import type { IPagination, TanstackQueryOption } from './queries.interface';
@@ -23,7 +24,7 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
23
24
  const [page, setPage] = useState<number>(1);
24
25
 
25
26
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
26
- const { headers } = useQueryHeaders();
27
+ const { getHeadersAsync } = useQueryHeaders();
27
28
 
28
29
  let queryClient = useQueryClient();
29
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -38,6 +39,9 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
38
39
  ) => void,
39
40
  rej: (reason?: any) => void
40
41
  ) => {
42
+ // get request headers
43
+ const headers: RawAxiosRequestHeaders = (await getHeadersAsync()).headers;
44
+
41
45
  const postResponse = await makeRequest<TResponse>({
42
46
  path: requestPath,
43
47
  headers,
@@ -1,10 +1,10 @@
1
1
  import type { MutateOptions } from '@tanstack/react-query';
2
2
  import { useMutation } from '@tanstack/react-query';
3
+ import { useEnvironmentVariables, useQueryHeaders } from '../config';
3
4
  import { scrollToTop } from '../helpers';
4
5
  import { HttpMethod, makeRequest } from '../request';
5
6
 
6
- import { useEnvironmentVariables } from '../config';
7
- import { useQueryHeaders } from '../contexts';
7
+ import type { RawAxiosRequestHeaders } from 'axios';
8
8
  import type {
9
9
  IRequestError,
10
10
  IRequestSuccess,
@@ -12,33 +12,40 @@ import type {
12
12
 
13
13
  export const usePatchRequest = <TResponse>({ path }: { path: string }) => {
14
14
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
15
- const { headers } = useQueryHeaders();
15
+
16
+ const { getHeadersAsync } = useQueryHeaders();
16
17
 
17
18
  // register post mutation
18
19
  const mutation = useMutation<IRequestSuccess<TResponse>, IRequestError>(
19
20
  (postData: any) =>
20
21
  new Promise<IRequestSuccess<TResponse>>((res, rej) => {
21
- makeRequest<TResponse>({
22
- path: path,
23
- body: postData,
24
- method: HttpMethod.PATCH,
25
- headers,
26
- baseURL: API_URL,
27
- timeout: TIMEOUT,
28
- }).then((postResponse) => {
29
- if (postResponse.status) {
30
- // scroll to top after success
31
- scrollToTop();
32
- res(postResponse as IRequestSuccess<TResponse>);
33
- } else {
34
- // scroll to top after error
35
- window.scrollTo({
36
- top: 0,
37
- behavior: 'smooth',
38
- });
39
- rej(postResponse);
40
- }
41
- });
22
+ return (async () => {
23
+ // get request headers
24
+ const headers: RawAxiosRequestHeaders = (await getHeadersAsync())
25
+ .headers;
26
+
27
+ makeRequest<TResponse>({
28
+ path: path,
29
+ body: postData,
30
+ method: HttpMethod.PATCH,
31
+ headers,
32
+ baseURL: API_URL,
33
+ timeout: TIMEOUT,
34
+ }).then((postResponse) => {
35
+ if (postResponse.status) {
36
+ // scroll to top after success
37
+ scrollToTop();
38
+ res(postResponse as IRequestSuccess<TResponse>);
39
+ } else {
40
+ // scroll to top after error
41
+ window.scrollTo({
42
+ top: 0,
43
+ behavior: 'smooth',
44
+ });
45
+ rej(postResponse);
46
+ }
47
+ });
48
+ })();
42
49
  })
43
50
  );
44
51
 
@@ -1,7 +1,8 @@
1
1
  import type { MutateOptions } from '@tanstack/react-query';
2
2
  import { useMutation } from '@tanstack/react-query';
3
- import { useEnvironmentVariables } from '../config';
4
- import { useQueryHeaders } from '../contexts';
3
+ import { useEnvironmentVariables, useQueryHeaders } from '../config';
4
+
5
+ import type { RawAxiosRequestHeaders } from 'axios';
5
6
  import type { IRequestError, IRequestSuccess } from '../request';
6
7
  import { HttpMethod, makeRequest } from '../request';
7
8
 
@@ -14,37 +15,43 @@ export const usePostRequest = <TResponse>({
14
15
  }) => {
15
16
  const { API_URL, TIMEOUT } = useEnvironmentVariables();
16
17
 
17
- const { headers } = useQueryHeaders();
18
+ const { getHeadersAsync } = useQueryHeaders();
18
19
 
19
20
  // register post mutation
20
21
  const mutation = useMutation<IRequestSuccess<TResponse>, IRequestError>(
21
22
  async (postData: any) =>
22
23
  new Promise<IRequestSuccess<TResponse>>((res, rej) => {
23
- makeRequest<TResponse>({
24
- path: path,
25
- body: postData,
26
- method: HttpMethod.POST,
27
- isFormData,
28
- headers,
29
- baseURL: API_URL,
30
- timeout: TIMEOUT,
31
- }).then((postResponse) => {
32
- if (postResponse.status) {
33
- // scroll to top after success
34
- window.scrollTo({
35
- top: 0,
36
- behavior: 'smooth',
37
- });
38
- res(postResponse as IRequestSuccess<TResponse>);
39
- } else {
40
- // scroll to top after error
41
- window.scrollTo({
42
- top: 0,
43
- behavior: 'smooth',
44
- });
45
- rej(postResponse);
46
- }
47
- });
24
+ return (async () => {
25
+ // get request headers
26
+ const headers: RawAxiosRequestHeaders = (await getHeadersAsync())
27
+ .headers;
28
+
29
+ makeRequest<TResponse>({
30
+ path: path,
31
+ body: postData,
32
+ method: HttpMethod.POST,
33
+ isFormData,
34
+ headers,
35
+ baseURL: API_URL,
36
+ timeout: TIMEOUT,
37
+ }).then((postResponse) => {
38
+ if (postResponse.status) {
39
+ // scroll to top after success
40
+ window.scrollTo({
41
+ top: 0,
42
+ behavior: 'smooth',
43
+ });
44
+ res(postResponse as IRequestSuccess<TResponse>);
45
+ } else {
46
+ // scroll to top after error
47
+ window.scrollTo({
48
+ top: 0,
49
+ behavior: 'smooth',
50
+ });
51
+ rej(postResponse);
52
+ }
53
+ });
54
+ })();
48
55
  })
49
56
  );
50
57
  const post = async (
@@ -5,6 +5,6 @@ export interface TanstackQueryConfig {
5
5
  }
6
6
 
7
7
  export interface IUseQueryHeaders {
8
- headers: TanstackQueryConfig['headers'];
8
+ getHeadersAsync: () => Promise<TanstackQueryConfig>;
9
9
  setQueryHeaders: (header: TanstackQueryConfig['headers']) => void;
10
10
  }
@@ -1,12 +0,0 @@
1
- import type { QueryClient } from '@tanstack/react-query';
2
- import type { RawAxiosRequestHeaders } from 'axios';
3
- import React from 'react';
4
- export interface IRequestHeaderProvider {
5
- headers: RawAxiosRequestHeaders;
6
- setHeaders: (newHeaders: RawAxiosRequestHeaders) => void;
7
- }
8
- export declare const RequestHeaderProvider: React.Context<IRequestHeaderProvider>;
9
- export declare const QueryClientRequestProvider: ({ client, children, }: {
10
- client: QueryClient;
11
- children: React.ReactNode;
12
- }) => JSX.Element;
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- var reactQuery = require('@tanstack/react-query');
4
- var React = require('react');
5
-
6
- const RequestHeaderProvider = React.createContext({
7
- headers: {},
8
- setHeaders: (_newHeaders) => {
9
- //
10
- },
11
- });
12
- const QueryClientRequestProvider = ({ client, children, }) => {
13
- const [headers, updateHeaders] = React.useState({});
14
- const setHeaders = React.useCallback((newHeaders) => {
15
- updateHeaders(newHeaders);
16
- }, []);
17
- const requestContextValue = React.useMemo(() => ({ headers, setHeaders }), [headers, setHeaders]);
18
- return (React.createElement(reactQuery.QueryClientProvider, { client: client },
19
- React.createElement(RequestHeaderProvider.Provider, { value: requestContextValue }, children)));
20
- };
21
-
22
- exports.QueryClientRequestProvider = QueryClientRequestProvider;
23
- exports.RequestHeaderProvider = RequestHeaderProvider;
24
- //# sourceMappingURL=QueryClientRequestProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryClientRequestProvider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +0,0 @@
1
- export * from './QueryClientRequestProvider';
2
- export * from './useQueryHeaders';
@@ -1,2 +0,0 @@
1
- import type { IRequestHeaderProvider } from './QueryClientRequestProvider';
2
- export declare const useQueryHeaders: () => IRequestHeaderProvider;
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var QueryClientRequestProvider = require('./QueryClientRequestProvider.js');
5
-
6
- const useQueryHeaders = () => {
7
- return React.useContext(QueryClientRequestProvider.RequestHeaderProvider);
8
- };
9
-
10
- exports.useQueryHeaders = useQueryHeaders;
11
- //# sourceMappingURL=useQueryHeaders.js.map
@@ -1,48 +0,0 @@
1
- import type { QueryClient } from '@tanstack/react-query';
2
- import { QueryClientProvider } from '@tanstack/react-query';
3
- import type { RawAxiosRequestHeaders } from 'axios';
4
- import React, { createContext, useCallback, useMemo, useState } from 'react';
5
-
6
- export interface IRequestHeaderProvider {
7
- headers: RawAxiosRequestHeaders;
8
- setHeaders: (newHeaders: RawAxiosRequestHeaders) => void;
9
- }
10
-
11
- export const RequestHeaderProvider = createContext<IRequestHeaderProvider>({
12
- headers: {},
13
- setHeaders: (_newHeaders: IRequestHeaderProvider['headers']) => {
14
- //
15
- },
16
- });
17
-
18
- export const QueryClientRequestProvider = ({
19
- client,
20
- children,
21
- }: {
22
- client: QueryClient;
23
- children: React.ReactNode;
24
- }) => {
25
- const [headers, updateHeaders] = useState<IRequestHeaderProvider['headers']>(
26
- {}
27
- );
28
-
29
- const setHeaders = useCallback(
30
- (newHeaders: IRequestHeaderProvider['headers']) => {
31
- updateHeaders(newHeaders);
32
- },
33
- []
34
- );
35
-
36
- const requestContextValue = useMemo(
37
- () => ({ headers, setHeaders }),
38
- [headers, setHeaders]
39
- );
40
-
41
- return (
42
- <QueryClientProvider client={client}>
43
- <RequestHeaderProvider.Provider value={requestContextValue}>
44
- {children}
45
- </RequestHeaderProvider.Provider>
46
- </QueryClientProvider>
47
- );
48
- };
@@ -1,2 +0,0 @@
1
- export * from './QueryClientRequestProvider';
2
- export * from './useQueryHeaders';
@@ -1,7 +0,0 @@
1
- import { useContext } from 'react';
2
- import type { IRequestHeaderProvider } from './QueryClientRequestProvider';
3
- import { RequestHeaderProvider } from './QueryClientRequestProvider';
4
-
5
- export const useQueryHeaders = (): IRequestHeaderProvider => {
6
- return useContext(RequestHeaderProvider);
7
- };