@ventlio/tanstack-query 0.2.8 → 0.2.9

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/index.js CHANGED
@@ -5,7 +5,9 @@ var useQueryConfig = require('./config/useQueryConfig.js');
5
5
  var useQueryHeaders = require('./config/useQueryHeaders.js');
6
6
  var useQueryTimeout = require('./config/useQueryTimeout.js');
7
7
  var scrollToTop = require('./helpers/scrollToTop.js');
8
+ var useKeyTrackerModel = require('./model/useKeyTrackerModel.js');
8
9
  var useQueryModel = require('./model/useQueryModel.js');
10
+ var useRefetchQuery = require('./model/useRefetchQuery.js');
9
11
  var useDeleteRequest = require('./queries/useDeleteRequest.js');
10
12
  var useGetRequest = require('./queries/useGetRequest.js');
11
13
  var usePatchRequest = require('./queries/usePatchRequest.js');
@@ -23,7 +25,9 @@ exports.useQueryConfig = useQueryConfig.useQueryConfig;
23
25
  exports.useQueryHeaders = useQueryHeaders.useQueryHeaders;
24
26
  exports.useQueryTimeout = useQueryTimeout.useQueryTimeout;
25
27
  exports.scrollToTop = scrollToTop.scrollToTop;
28
+ exports.useKeyTrackerModel = useKeyTrackerModel.useKeyTrackerModel;
26
29
  exports.useQueryModel = useQueryModel.useQueryModel;
30
+ exports.useRefetchQuery = useRefetchQuery.useRefetchQuery;
27
31
  exports.useDeleteRequest = useDeleteRequest.useDeleteRequest;
28
32
  exports.useGetRequest = useGetRequest.useGetRequest;
29
33
  exports.usePatchRequest = usePatchRequest.usePatchRequest;
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
1
  import { useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
2
- import { useState, useEffect, startTransition } from 'react';
2
+ import { useState, useMemo, useEffect, startTransition } from 'react';
3
3
  import axios from 'axios';
4
4
 
5
5
  const useQueryConfig = () => {
@@ -53,11 +53,44 @@ const scrollToTop = () => {
53
53
  });
54
54
  };
55
55
 
56
+ const useKeyTrackerModel = (keyTracker) => {
57
+ const queryClient = useQueryClient();
58
+ const [data, setData] = useState();
59
+ const [queryKey, setQueryKey] = useState();
60
+ const getQueryKey = (innerKeyTracker) => {
61
+ const key = queryClient.getQueryData([
62
+ innerKeyTracker ?? keyTracker,
63
+ ]);
64
+ setQueryKey(key);
65
+ return key;
66
+ };
67
+ const refetchQuery = (innerKeyTracker) => {
68
+ const key = getQueryKey(innerKeyTracker ?? keyTracker);
69
+ const queryData = queryClient.getQueryData(key);
70
+ setData(queryData);
71
+ return queryData;
72
+ };
73
+ return { refetchQuery, getQueryKey, queryKey, data };
74
+ };
75
+
56
76
  const useQueryModel = (queryKey, filters) => {
57
77
  const queryClient = useQueryClient();
58
78
  return queryClient.getQueryData(queryKey, filters);
59
79
  };
60
80
 
81
+ const useRefetchQuery = async (queryKey) => {
82
+ const queryClient = useQueryClient();
83
+ const refetchQuery = async (innerQueryKey) => {
84
+ await queryClient.refetchQueries({
85
+ queryKey,
86
+ exact: true,
87
+ type: 'active',
88
+ }, { throwOnError: true, cancelRefetch: true });
89
+ return queryClient.getQueriesData(innerQueryKey ?? queryKey);
90
+ };
91
+ return { refetchQuery };
92
+ };
93
+
61
94
  const axiosInstance = ({ baseURL, timeout, headers, }) => {
62
95
  return axios.create({
63
96
  baseURL,
@@ -189,11 +222,14 @@ const useDeleteRequest = () => {
189
222
  return { destroy, ...query };
190
223
  };
191
224
 
192
- const useGetRequest = ({ path, load = false, queryOptions, }) => {
225
+ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
193
226
  const [requestPath, updatePath] = useState(path);
194
227
  const [options, setOptions] = useState(queryOptions);
195
228
  const [page, setPage] = useState(1);
196
229
  const { headers, baseURL, timeout } = useQueryConfig();
230
+ let queryClient = useQueryClient();
231
+ // eslint-disable-next-line react-hooks/exhaustive-deps
232
+ queryClient = useMemo(() => queryClient, []);
197
233
  const sendRequest = async (res, rej) => {
198
234
  const postResponse = await makeRequest({
199
235
  path: requestPath,
@@ -219,6 +255,11 @@ const useGetRequest = ({ path, load = false, queryOptions, }) => {
219
255
  updatePath(path);
220
256
  }
221
257
  }, [path]);
258
+ useEffect(() => {
259
+ if (keyTracker) {
260
+ queryClient.setQueryData([keyTracker], [requestPath, {}]);
261
+ }
262
+ }, [keyTracker, requestPath, queryClient]);
222
263
  const nextPage = () => {
223
264
  if (query.data?.data.pagination) {
224
265
  const pagination = query.data.data.pagination;
@@ -350,5 +391,5 @@ const usePostRequest = ({ path, isFormData = false, }) => {
350
391
  return { post, ...mutation };
351
392
  };
352
393
 
353
- export { ContentType, HttpMethod, axiosInstance, buildFormData, errorTransformer, makeRequest, scrollToTop, successTransformer, useDeleteRequest, useGetRequest, usePatchRequest, usePostRequest, useQueryBaseURL, useQueryConfig, useQueryHeaders, useQueryModel, useQueryTimeout };
394
+ export { ContentType, HttpMethod, axiosInstance, buildFormData, errorTransformer, makeRequest, scrollToTop, successTransformer, useDeleteRequest, useGetRequest, useKeyTrackerModel, usePatchRequest, usePostRequest, useQueryBaseURL, useQueryConfig, useQueryHeaders, useQueryModel, useQueryTimeout, useRefetchQuery };
354
395
  //# 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 +1,3 @@
1
+ export * from './useKeyTrackerModel';
1
2
  export * from './useQueryModel';
3
+ export * from './useRefetchQuery';
@@ -0,0 +1,6 @@
1
+ export declare const useKeyTrackerModel: <T>(keyTracker: string) => {
2
+ refetchQuery: (innerKeyTracker?: string) => T | undefined;
3
+ getQueryKey: (innerKeyTracker?: string) => any[] | undefined;
4
+ queryKey: any[] | undefined;
5
+ data: T | undefined;
6
+ };
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var reactQuery = require('@tanstack/react-query');
4
+ var react = require('react');
5
+
6
+ const useKeyTrackerModel = (keyTracker) => {
7
+ const queryClient = reactQuery.useQueryClient();
8
+ const [data, setData] = react.useState();
9
+ const [queryKey, setQueryKey] = react.useState();
10
+ const getQueryKey = (innerKeyTracker) => {
11
+ const key = queryClient.getQueryData([
12
+ innerKeyTracker ?? keyTracker,
13
+ ]);
14
+ setQueryKey(key);
15
+ return key;
16
+ };
17
+ const refetchQuery = (innerKeyTracker) => {
18
+ const key = getQueryKey(innerKeyTracker ?? keyTracker);
19
+ const queryData = queryClient.getQueryData(key);
20
+ setData(queryData);
21
+ return queryData;
22
+ };
23
+ return { refetchQuery, getQueryKey, queryKey, data };
24
+ };
25
+
26
+ exports.useKeyTrackerModel = useKeyTrackerModel;
27
+ //# sourceMappingURL=useKeyTrackerModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyTrackerModel.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export declare const useRefetchQuery: (queryKey: any[]) => Promise<{
2
+ refetchQuery: <T>(innerQueryKey?: any[]) => Promise<[import("@tanstack/react-query").QueryKey, T | undefined][]>;
3
+ }>;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var reactQuery = require('@tanstack/react-query');
4
+
5
+ const useRefetchQuery = async (queryKey) => {
6
+ const queryClient = reactQuery.useQueryClient();
7
+ const refetchQuery = async (innerQueryKey) => {
8
+ await queryClient.refetchQueries({
9
+ queryKey,
10
+ exact: true,
11
+ type: 'active',
12
+ }, { throwOnError: true, cancelRefetch: true });
13
+ return queryClient.getQueriesData(innerQueryKey ?? queryKey);
14
+ };
15
+ return { refetchQuery };
16
+ };
17
+
18
+ exports.useRefetchQuery = useRefetchQuery;
19
+ //# sourceMappingURL=useRefetchQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefetchQuery.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -2,10 +2,11 @@
2
2
  import type { UseQueryOptions } from '@tanstack/react-query';
3
3
  import type { IRequestError, IRequestSuccess } from '../request';
4
4
  import type { TanstackQueryOption } from './queries.interface';
5
- export declare const useGetRequest: <TResponse extends Record<string, any>>({ path, load, queryOptions, }: {
5
+ export declare const useGetRequest: <TResponse extends Record<string, any>>({ path, load, queryOptions, keyTracker, }: {
6
6
  path: string;
7
7
  load?: boolean | undefined;
8
8
  queryOptions?: TanstackQueryOption<TResponse> | undefined;
9
+ keyTracker?: string | undefined;
9
10
  }) => {
10
11
  updatePath: import("react").Dispatch<import("react").SetStateAction<string>>;
11
12
  nextPage: () => void;
@@ -7,11 +7,14 @@ require('axios');
7
7
  var makeRequest = require('../request/make-request.js');
8
8
  require('../request/request.enum.js');
9
9
 
10
- const useGetRequest = ({ path, load = false, queryOptions, }) => {
10
+ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
11
11
  const [requestPath, updatePath] = react.useState(path);
12
12
  const [options, setOptions] = react.useState(queryOptions);
13
13
  const [page, setPage] = react.useState(1);
14
14
  const { headers, baseURL, timeout } = useQueryConfig.useQueryConfig();
15
+ let queryClient = reactQuery.useQueryClient();
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ queryClient = react.useMemo(() => queryClient, []);
15
18
  const sendRequest = async (res, rej) => {
16
19
  const postResponse = await makeRequest.makeRequest({
17
20
  path: requestPath,
@@ -37,6 +40,11 @@ const useGetRequest = ({ path, load = false, queryOptions, }) => {
37
40
  updatePath(path);
38
41
  }
39
42
  }, [path]);
43
+ react.useEffect(() => {
44
+ if (keyTracker) {
45
+ queryClient.setQueryData([keyTracker], [requestPath, {}]);
46
+ }
47
+ }, [keyTracker, requestPath, queryClient]);
40
48
  const nextPage = () => {
41
49
  if (query.data?.data.pagination) {
42
50
  const pagination = query.data.data.pagination;
@@ -1 +1 @@
1
- {"version":3,"file":"useGetRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useGetRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ventlio/tanstack-query",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "contributors": [