@ventlio/tanstack-query 0.2.27 → 0.2.29

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.
@@ -10,6 +10,8 @@ const useQueryHeaders = () => {
10
10
  queryFn: () => {
11
11
  return queryClient.getQueryData(['config']);
12
12
  },
13
+ staleTime: Infinity,
14
+ cacheTime: Infinity,
13
15
  });
14
16
  };
15
17
  const setQueryHeaders = (newHeaders) => {
@@ -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.mjs CHANGED
@@ -25,6 +25,8 @@ const useQueryHeaders = () => {
25
25
  queryFn: () => {
26
26
  return queryClient.getQueryData(['config']);
27
27
  },
28
+ staleTime: Infinity,
29
+ cacheTime: Infinity,
28
30
  });
29
31
  };
30
32
  const setQueryHeaders = (newHeaders) => {
@@ -95,8 +97,7 @@ const buildFormData = (body) => {
95
97
  bodyKeys.forEach((key) => {
96
98
  formData.append(key, body[key]);
97
99
  });
98
- body = formData;
99
- return body;
100
+ return formData;
100
101
  };
101
102
 
102
103
  var HttpMethod;
@@ -138,6 +139,7 @@ async function makeRequest({ body, method = HttpMethod.GET, path, isFormData, he
138
139
  // configure body
139
140
  body = isFormData ? buildFormData(body) : body;
140
141
  // configure request header
142
+ console.log({ isFormData, body });
141
143
  if (!isFormData) {
142
144
  headers['Content-Type'] = ContentType.APPLICATION_JSON;
143
145
  }
@@ -184,7 +186,6 @@ const useDeleteRequest = () => {
184
186
  // get request headers
185
187
  const headers = (await getHeadersAsync())
186
188
  .headers;
187
- console.log({ headers });
188
189
  const postResponse = await makeRequest({
189
190
  path: requestPath,
190
191
  headers,
@@ -232,7 +233,6 @@ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
232
233
  const sendRequest = async (res, rej) => {
233
234
  // get request headers
234
235
  const headers = (await getHeadersAsync()).headers;
235
- console.log({ headers });
236
236
  const postResponse = await makeRequest({
237
237
  path: requestPath,
238
238
  headers,
@@ -332,7 +332,6 @@ const usePatchRequest = ({ path }) => {
332
332
  // get request headers
333
333
  const headers = (await getHeadersAsync())
334
334
  .headers;
335
- console.log({ headers });
336
335
  makeRequest({
337
336
  path: path,
338
337
  body: postData,
@@ -372,7 +371,6 @@ const usePostRequest = ({ path, isFormData = false, }) => {
372
371
  // get request headers
373
372
  const headers = (await getHeadersAsync())
374
373
  .headers;
375
- console.log({ headers });
376
374
  makeRequest({
377
375
  path: path,
378
376
  body: postData,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -18,7 +18,6 @@ const useDeleteRequest = () => {
18
18
  // get request headers
19
19
  const headers = (await getHeadersAsync())
20
20
  .headers;
21
- console.log({ headers });
22
21
  const postResponse = await makeRequest.makeRequest({
23
22
  path: requestPath,
24
23
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"useDeleteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useDeleteRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -20,7 +20,6 @@ const useGetRequest = ({ path, load = false, queryOptions, keyTracker, }) => {
20
20
  const sendRequest = async (res, rej) => {
21
21
  // get request headers
22
22
  const headers = (await getHeadersAsync()).headers;
23
- console.log({ headers });
24
23
  const postResponse = await makeRequest.makeRequest({
25
24
  path: requestPath,
26
25
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"useGetRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useGetRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -17,7 +17,6 @@ const usePatchRequest = ({ path }) => {
17
17
  // get request headers
18
18
  const headers = (await getHeadersAsync())
19
19
  .headers;
20
- console.log({ headers });
21
20
  makeRequest.makeRequest({
22
21
  path: path,
23
22
  body: postData,
@@ -1 +1 @@
1
- {"version":3,"file":"usePatchRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"usePatchRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -16,7 +16,6 @@ const usePostRequest = ({ path, isFormData = false, }) => {
16
16
  // get request headers
17
17
  const headers = (await getHeadersAsync())
18
18
  .headers;
19
- console.log({ headers });
20
19
  makeRequest.makeRequest({
21
20
  path: path,
22
21
  body: postData,
@@ -1 +1 @@
1
- {"version":3,"file":"usePostRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"usePostRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- export declare const buildFormData: (body: Record<string, any>) => Record<string, any>;
1
+ export declare const buildFormData: (body: Record<string, any>) => FormData;
@@ -6,8 +6,7 @@ const buildFormData = (body) => {
6
6
  bodyKeys.forEach((key) => {
7
7
  formData.append(key, body[key]);
8
8
  });
9
- body = formData;
10
- return body;
9
+ return formData;
11
10
  };
12
11
 
13
12
  exports.buildFormData = buildFormData;
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormData.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"buildFormData.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -9,6 +9,7 @@ async function makeRequest({ body, method = request_enum.HttpMethod.GET, path, i
9
9
  // configure body
10
10
  body = isFormData ? buildFormData.buildFormData(body) : body;
11
11
  // configure request header
12
+ console.log({ isFormData, body });
12
13
  if (!isFormData) {
13
14
  headers['Content-Type'] = request_enum.ContentType.APPLICATION_JSON;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"make-request.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"make-request.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.27",
3
+ "version": "0.2.29",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "contributors": [
@@ -22,7 +22,8 @@
22
22
  },
23
23
  "scripts": {
24
24
  "build": "rimraf dist && rollup --config rollup.config.ts --configPlugin rollup-plugin-typescript2",
25
- "build:watch": "yarn build -w"
25
+ "build:watch": "yarn build -w",
26
+ "test": "jest"
26
27
  },
27
28
  "peerDependencies": {
28
29
  "@tanstack/react-query": "^4.26.1",
@@ -47,13 +48,16 @@
47
48
  "@rollup/plugin-node-resolve": "^15.0.1",
48
49
  "@rollup/plugin-typescript": "^11.0.0",
49
50
  "@tanstack/react-query": "^4.26.1",
51
+ "@testing-library/react-hooks": "^8.0.1",
50
52
  "@types/axios": "^0.14.0",
53
+ "@types/jest": "^29.5.1",
51
54
  "@types/node": "*",
52
55
  "@types/react": "^18.2.0",
53
56
  "@types/react-dom": "^18.2.0",
54
57
  "@typescript-eslint/eslint-plugin": "^5.54.1",
55
58
  "@typescript-eslint/parser": "^5.54.1",
56
59
  "axios": "^1.3.4",
60
+ "axios-mock-adapter": "^1.21.4",
57
61
  "eslint": "^8.36.0",
58
62
  "eslint-config-google": "^0.14.0",
59
63
  "eslint-config-prettier": "^8.7.0",
@@ -62,12 +66,15 @@
62
66
  "eslint-plugin-prettier": "^4.2.1",
63
67
  "eslint-plugin-react": "^7.32.2",
64
68
  "eslint-plugin-react-hooks": "^4.6.0",
69
+ "jest": "^29.5.0",
70
+ "jest-environment-jsdom": "^29.5.0",
65
71
  "prettier": "^2.8.4",
66
72
  "react": "^18.2.0",
67
73
  "react-dom": "^18.2.0",
68
74
  "rimraf": "^4.4.0",
69
75
  "rollup": "^3.19.1",
70
76
  "rollup-plugin-typescript2": "^0.34.1",
77
+ "ts-jest": "^29.1.0",
71
78
  "ts-node": "^10.9.1",
72
79
  "tslib": "^2.5.0",
73
80
  "typescript": "^4.9.5"
@@ -0,0 +1,85 @@
1
+ import { renderHook } from '@testing-library/react-hooks';
2
+ import axios from 'axios';
3
+ import MockAdapter from 'axios-mock-adapter';
4
+ import { usePostRequest } from '../../queries';
5
+
6
+ const mockAxios = new MockAdapter(axios);
7
+
8
+ describe('usePostRequest', () => {
9
+ const path = '/test';
10
+ const postData = { name: 'John Doe' };
11
+ const response = { id: 123, name: 'John Doe' };
12
+
13
+ beforeEach(() => {
14
+ mockAxios.reset();
15
+ });
16
+
17
+ it('should return post function and mutation object', () => {
18
+ const { result } = renderHook(() =>
19
+ usePostRequest<{ id: number; name: string }>({ path })
20
+ );
21
+
22
+ expect(result.current.post).toBeInstanceOf(Function);
23
+ expect(result.current.isLoading).toBe(false);
24
+ expect(result.current.isSuccess).toBe(false);
25
+ expect(result.current.isError).toBe(false);
26
+ });
27
+
28
+ it('should make post request and return response data', async () => {
29
+ mockAxios.onPost(path).reply(200, response);
30
+
31
+ const { result, waitForNextUpdate } = renderHook(() =>
32
+ usePostRequest<{ id: number; name: string }>({ path })
33
+ );
34
+
35
+ const responsePromise = result.current.post(postData);
36
+
37
+ expect(result.current.isLoading).toBe(true);
38
+
39
+ await waitForNextUpdate();
40
+
41
+ expect(result.current.isLoading).toBe(false);
42
+ expect(result.current.isSuccess).toBe(true);
43
+ expect(result.current.data).toEqual(response);
44
+ expect(await responsePromise).toEqual(response);
45
+ });
46
+
47
+ it('should make post request and return error', async () => {
48
+ const errorMessage = 'Request failed with status code 500';
49
+ mockAxios.onPost(path).reply(500, { message: errorMessage });
50
+
51
+ const { result, waitForNextUpdate } = renderHook(() =>
52
+ usePostRequest<{ id: number; name: string }>({ path })
53
+ );
54
+
55
+ const responsePromise = result.current.post(postData);
56
+
57
+ expect(result.current.isLoading).toBe(true);
58
+
59
+ await waitForNextUpdate();
60
+
61
+ expect(result.current.isLoading).toBe(false);
62
+ expect(result.current.isError).toBe(true);
63
+ expect(result.current.error?.message).toBe(errorMessage);
64
+
65
+ await expect(responsePromise).rejects.toEqual({
66
+ message: errorMessage,
67
+ });
68
+ });
69
+
70
+ it('should make post request with FormData', async () => {
71
+ const formData = new FormData();
72
+ formData.append('name', 'John Doe');
73
+ mockAxios.onPost(path).reply(200, response);
74
+
75
+ const { result } = renderHook(() =>
76
+ usePostRequest<{ id: number; name: string }>({ path, isFormData: true })
77
+ );
78
+
79
+ const responsePromise = result.current.post(formData);
80
+
81
+ expect(result.current.isLoading).toBe(true);
82
+
83
+ await expect(responsePromise).resolves.toEqual(response);
84
+ });
85
+ });
@@ -10,6 +10,8 @@ export const useQueryHeaders = (): IUseQueryHeaders => {
10
10
  queryFn: () => {
11
11
  return queryClient.getQueryData(['config']);
12
12
  },
13
+ staleTime: Infinity,
14
+ cacheTime: Infinity,
13
15
  });
14
16
  };
15
17
 
@@ -23,8 +23,6 @@ export const useDeleteRequest = <TResponse>() => {
23
23
  const headers: RawAxiosRequestHeaders = (await getHeadersAsync())
24
24
  .headers;
25
25
 
26
- console.log({ headers });
27
-
28
26
  const postResponse = await makeRequest<TResponse>({
29
27
  path: requestPath,
30
28
  headers,
@@ -42,8 +42,6 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
42
42
  // get request headers
43
43
  const headers: RawAxiosRequestHeaders = (await getHeadersAsync()).headers;
44
44
 
45
- console.log({ headers });
46
-
47
45
  const postResponse = await makeRequest<TResponse>({
48
46
  path: requestPath,
49
47
  headers,
@@ -24,8 +24,6 @@ export const usePatchRequest = <TResponse>({ path }: { path: string }) => {
24
24
  const headers: RawAxiosRequestHeaders = (await getHeadersAsync())
25
25
  .headers;
26
26
 
27
- console.log({ headers });
28
-
29
27
  makeRequest<TResponse>({
30
28
  path: path,
31
29
  body: postData,
@@ -26,8 +26,6 @@ export const usePostRequest = <TResponse>({
26
26
  const headers: RawAxiosRequestHeaders = (await getHeadersAsync())
27
27
  .headers;
28
28
 
29
- console.log({ headers });
30
-
31
29
  makeRequest<TResponse>({
32
30
  path: path,
33
31
  body: postData,
@@ -7,7 +7,5 @@ export const buildFormData = (body: Record<string, any>) => {
7
7
  formData.append(key, body[key]);
8
8
  });
9
9
 
10
- body = formData;
11
-
12
- return body;
10
+ return formData;
13
11
  };
@@ -19,6 +19,8 @@ export async function makeRequest<TResponse>({
19
19
 
20
20
  // configure request header
21
21
 
22
+ console.log({ isFormData, body });
23
+
22
24
  if (!isFormData) {
23
25
  headers['Content-Type'] = ContentType.APPLICATION_JSON;
24
26
  }