query-harbor 0.0.4 → 0.0.6

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.
@@ -0,0 +1,24 @@
1
+ import { AxiosRequestHeaders, AxiosResponse } from 'axios';
2
+ interface ActionHandlerParams {
3
+ action: "GET" | "POST" | "PUT" | "DELETE";
4
+ url: string;
5
+ data?: any;
6
+ headers?: AxiosRequestHeaders;
7
+ }
8
+ export interface ApiSuccessResponse {
9
+ status: true;
10
+ data: any;
11
+ message?: string;
12
+ statusCode: number;
13
+ }
14
+ interface ApiErrorResponse {
15
+ status: false;
16
+ error: string;
17
+ message: string;
18
+ statusCode?: number;
19
+ type?: string;
20
+ }
21
+ type ApiResponse = ApiSuccessResponse | ApiErrorResponse;
22
+ export declare const ActionHandler: ({ action, url, data, headers }: ActionHandlerParams) => Promise<AxiosResponse>;
23
+ export declare const APIHandler: ({ action, url, data, headers }: ActionHandlerParams) => Promise<ApiResponse>;
24
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ *
3
+ * @example
4
+ * // Usage example:
5
+ * const { cookie, setCookie, removeCookie } = useCookie({ cookieName: "accessToken" });
6
+ *
7
+ * // Get cookie value
8
+ * const token = cookie.accessToken;
9
+ *
10
+ * // Set new cookie
11
+ * setCookie("accessToken", "new-token-value", { path: "/", maxAge: 3600 });
12
+ *
13
+ * // Remove cookie
14
+ * removeCookie("accessToken", { path: "/" });
15
+ */
16
+ export declare const useCookie: ({ cookieName }: {
17
+ cookieName: string;
18
+ }) => {
19
+ cookie: {
20
+ [x: string]: any;
21
+ };
22
+ setCookie: (name: string, value: import('universal-cookie').Cookie, options?: import('universal-cookie').CookieSetOptions) => void;
23
+ removeCookie: (name: string, options?: import('universal-cookie').CookieSetOptions) => void;
24
+ };
@@ -0,0 +1,28 @@
1
+ interface UseGlobalInfiniteQueryParams<T> {
2
+ url: string;
3
+ queryKey: string[];
4
+ methodType: "GET" | "POST" | "PUT" | "DELETE";
5
+ data?: T;
6
+ enabled?: boolean;
7
+ staleTime?: number;
8
+ }
9
+ interface QueryResult<T> {
10
+ data: T[];
11
+ nextPage?: number;
12
+ hasMore: boolean;
13
+ totalCount: number;
14
+ }
15
+ /**
16
+ * Custom hook for handling infinite scrolling queries with React Query.
17
+ */
18
+ export declare const useGlobalInfiniteQuery: <T>({ url, queryKey, methodType, data, enabled, staleTime, }: UseGlobalInfiniteQueryParams<T>) => {
19
+ refetchQuery: () => void;
20
+ queryData: any[];
21
+ isLoading: boolean;
22
+ isError: boolean;
23
+ error: Error;
24
+ fetchNextPage: (options?: import('@tanstack/react-query').FetchNextPageOptions) => Promise<import('@tanstack/react-query').InfiniteQueryObserverResult<import('@tanstack/react-query').InfiniteData<QueryResult<T>, unknown>, Error>>;
25
+ hasNextPage: boolean;
26
+ totalCount: number;
27
+ };
28
+ export {};
@@ -0,0 +1,32 @@
1
+ interface UseGlobalMutationParams<T> {
2
+ url: string;
3
+ queriesToInvalidate?: string[];
4
+ methodType: "POST" | "PUT" | "DELETE";
5
+ data?: T;
6
+ isFormData?: boolean;
7
+ closePopup?: (state: boolean) => void;
8
+ excludedIndexKeys?: string[];
9
+ }
10
+ interface MutationFunctionParams<T> {
11
+ isPriorityDataAvailable?: boolean;
12
+ priorityData?: T;
13
+ }
14
+ /**
15
+ * Custom hook for handling global mutations with React Query.
16
+ * @param {string} url - The endpoint URL for the mutation.
17
+ * @param {Array<string>} queriesToInvalidate - Array of query keys to invalidate after successful mutation.
18
+ * @param {string} methodType - The HTTP method type (POST, PUT, DELETE).
19
+ * @param {Object} [data] - The default data to be sent with the mutation.
20
+ * @param {boolean} [isFormData] - Whether the data should be processed as FormData.
21
+ * @param {Function} [closePopup] - Optional callback to close a popup after successful mutation.
22
+ * @param {Array<string>} [excludedIndexKeys] - Keys for which array indices should not be included in FormData.
23
+ * @returns {Object} An object containing mutation-related functions and state.
24
+ */
25
+ export declare const useGlobalMutation: <T extends Record<string, any>>({ url, queriesToInvalidate, methodType, data, isFormData, closePopup, excludedIndexKeys, }: UseGlobalMutationParams<T>) => {
26
+ runMutation: (params?: MutationFunctionParams<T>) => void;
27
+ mutationLoading: boolean;
28
+ mutationData: any;
29
+ mutationError: string;
30
+ isMutationSucceeded: boolean;
31
+ };
32
+ export {};
@@ -0,0 +1,58 @@
1
+ import { QueryKey } from '@tanstack/react-query';
2
+ interface UseGlobalQueryParams {
3
+ url: string;
4
+ queryKey: QueryKey;
5
+ methodType: "GET" | "POST" | "PUT" | "DELETE";
6
+ data?: any;
7
+ enabled?: boolean;
8
+ staleTime?: number;
9
+ refetchOnWindowFocus?: boolean;
10
+ }
11
+ interface UseGlobalQueryReturn {
12
+ refetchQuery: () => void;
13
+ queryData: any;
14
+ isLoading: boolean;
15
+ isError: boolean;
16
+ error: unknown;
17
+ }
18
+ /**
19
+ * Custom hook for handling global queries with React Query.
20
+ * @param {string} url - The endpoint URL for the query.
21
+ * @param {QueryKey} queryKey - The unique key for identifying and caching the query.
22
+ * @param {"GET" | "POST" | "PUT" | "DELETE"} methodType - The HTTP method type.
23
+ * @param {any} [data] - The data to be sent with the request (for POST, PUT methods).
24
+ * @param {boolean} [enabled=true] - Whether the query is enabled or disabled.
25
+ * @param {boolean} [refetchOnWindowFocus] - Refetch on window focus if the data is stale (default: false).
26
+ * @param {number} [staleTime] - Duration in milliseconds until the data is considered stale (default: 5 minutes).
27
+ *
28
+ *
29
+ * Return type for the `useGlobalQuery` hook.
30
+ * @return {Function} refetchQuery - Function to invalidate and refetch the query.
31
+ * @return {any} queryData - The data returned from the query.
32
+ * @return {boolean} isLoading - Whether the query is currently loading.
33
+ * @return {boolean} isError - Whether the query encountered an error.
34
+ * @return {unknown} error - The error object if the query failed.
35
+
36
+ *
37
+ * @example
38
+ * // Example usage:
39
+ * const { queryData, isLoading, isError, error, refetchQuery } = useGlobalQuery({
40
+ * url: "/api/data",
41
+ * queryKey: ["data"],
42
+ * methodType: "GET",
43
+ * });
44
+ *
45
+ * if (isLoading) return <div>Loading...</div>;
46
+ * if (isError) return <div>Error: {error.message}</div>;
47
+ *
48
+ * return (
49
+ * <div>
50
+ * <h1>Data:</h1>
51
+ * <pre>{queryData.map((data) => <p>{data}</p>)}</pre>
52
+ * <button onClick={refetchQuery}>Refresh Data</button>
53
+ * </div>
54
+ * );
55
+ *
56
+ */
57
+ export declare const useGlobalQuery: ({ url, queryKey, methodType, data, enabled, staleTime, refetchOnWindowFocus }: UseGlobalQueryParams) => UseGlobalQueryReturn;
58
+ export {};
@@ -0,0 +1,4 @@
1
+ export { useGlobalQuery } from './hooks/useGlobalQuery';
2
+ export { useGlobalMutation } from './hooks/useGlobalMutation';
3
+ export { useGlobalInfiniteQuery } from './hooks/useGlobalInfiniteQuery';
4
+ export { useCookie } from './hooks/useCookie';
@@ -1,274 +1,228 @@
1
- import { useQueryClient as M, useQuery as L, useMutation as S, useInfiniteQuery as O } from "@tanstack/react-query";
1
+ import { useQueryClient as N, useQuery as b, useMutation as v, useInfiniteQuery as L } from "@tanstack/react-query";
2
2
  import { useCookies as j } from "react-cookie";
3
3
  import F from "axios";
4
- const b = ({ cookieName: u }) => {
5
- const [n, o, c] = j([u]);
6
- return { cookie: n, setCookie: o, removeCookie: c };
7
- }, U = ({
8
- url: u,
9
- queryKey: n,
10
- methodType: o,
11
- data: c,
12
- enabled: y = !0,
13
- cacheTime: h = 5 * 60 * 1e3,
14
- staleTime: E = 5 * 60 * 1e3
15
- }) => {
16
- const m = M(), { cookie: e } = b({ cookieName: "accessToken" });
17
- let t = {};
18
- e != null && e.accessToken && (t = { Authorization: `Bearer ${e == null ? void 0 : e.accessToken}` });
19
- const s = L({
20
- queryKey: n,
21
- queryFn: async () => {
22
- try {
23
- const i = await APIHandler({
24
- action: o,
25
- url: u,
26
- data: c,
27
- headers: t
28
- });
29
- return i != null && i.data ? i.data : { totalCount: 0, data: [] };
30
- } catch (i) {
31
- throw console.error("Query Error:", i), i;
32
- }
33
- },
34
- enabled: y,
35
- cacheTime: h,
36
- staleTime: E,
37
- refetchOnWindowFocus: !1
38
- });
39
- return {
40
- refetchQuery: () => {
41
- m.invalidateQueries({ queryKey: n });
42
- },
43
- queryData: s.data,
44
- isLoading: s.isLoading,
45
- isError: s.isError,
46
- error: s.error
47
- };
48
- }, G = async ({ action: u, url: n, data: o, headers: c }) => {
49
- switch (u) {
4
+ const M = ({ cookieName: i }) => {
5
+ const [s, o, n] = j([i]);
6
+ return { cookie: s, setCookie: o, removeCookie: n };
7
+ }, q = async ({ action: i, url: s, data: o, headers: n }) => {
8
+ switch (i) {
50
9
  case "GET":
51
- return await F.get(n, {
52
- headers: c
53
- });
10
+ return await F.get(s, { headers: n });
54
11
  case "POST":
55
- return await F.post(n, o, {
56
- headers: c
57
- });
12
+ return await F.post(s, o, { headers: n });
58
13
  case "PUT":
59
- return await F.put(n, o, {
60
- headers: c
61
- });
14
+ return await F.put(s, o, { headers: n });
62
15
  case "DELETE":
63
- return await F.delete(n, { data: o, headers: c });
16
+ return await F.delete(s, { data: o, headers: n });
64
17
  default:
65
- throw new Error(`Invalid action: ${u}`);
18
+ throw new Error(`Invalid action: ${i}`);
66
19
  }
67
- }, $ = async ({ action: u, url: n, data: o, headers: c }) => {
68
- var y, h, E, m, e;
20
+ }, I = async ({ action: i, url: s, data: o, headers: n }) => {
21
+ var y, m, P, d, r, e, a;
69
22
  try {
70
- const t = await G({ action: u, url: n, data: o, headers: c });
71
- return t.status >= 200 && t.status <= 299 ? {
23
+ const c = await q({ action: i, url: s, data: o, headers: n });
24
+ return c.status >= 200 && c.status <= 299 ? {
72
25
  status: !0,
73
- data: t.data,
74
- message: t.data.message,
75
- statusCode: t.status
26
+ data: c.data,
27
+ message: c.data.message,
28
+ statusCode: c.status
76
29
  } : {
77
30
  status: !1,
78
31
  error: "API Failed",
79
32
  message: "API Failed",
80
- statusCode: t.status
33
+ statusCode: c.status
81
34
  };
82
- } catch (t) {
83
- return F.isAxiosError(t) ? t.message === "Network Error" ? {
84
- status: !1,
85
- error: "Network Error",
86
- message: "Network Error"
87
- } : {
88
- status: !1,
89
- type: (h = (y = t.response) == null ? void 0 : y.data) == null ? void 0 : h.type,
90
- message: (E = t.response) == null ? void 0 : E.data.message,
91
- error: (m = t.response) == null ? void 0 : m.data.error,
92
- statusCode: (e = t.response) == null ? void 0 : e.status
93
- } : {
35
+ } catch (c) {
36
+ if (F.isAxiosError(c)) {
37
+ const t = c;
38
+ return t.message === "Network Error" ? {
39
+ status: !1,
40
+ error: "Network Error",
41
+ message: "Network Error"
42
+ } : {
43
+ status: !1,
44
+ type: (m = (y = t.response) == null ? void 0 : y.data) == null ? void 0 : m.type,
45
+ message: ((d = (P = t.response) == null ? void 0 : P.data) == null ? void 0 : d.message) || "API Failed",
46
+ error: ((e = (r = t.response) == null ? void 0 : r.data) == null ? void 0 : e.error) || "API Failed",
47
+ statusCode: (a = t.response) == null ? void 0 : a.status
48
+ };
49
+ }
50
+ return {
94
51
  status: !1,
95
52
  error: "API Failed",
96
53
  message: "API Failed"
97
54
  };
98
55
  }
99
- }, W = ({
100
- url: u,
101
- queriesToInvalidate: n,
56
+ }, B = ({
57
+ url: i,
58
+ queryKey: s,
102
59
  methodType: o,
103
- data: c,
60
+ data: n,
61
+ enabled: y = !0,
62
+ staleTime: m = 5 * 60 * 1e3,
63
+ refetchOnWindowFocus: P = !1
64
+ }) => {
65
+ const d = N(), { cookie: r } = M({ cookieName: "accessToken" });
66
+ let e = {};
67
+ r != null && r.accessToken && (e = { Authorization: `Bearer ${r.accessToken}` });
68
+ const a = b({
69
+ queryKey: s,
70
+ queryFn: async () => {
71
+ try {
72
+ const t = await I({
73
+ action: o,
74
+ url: i,
75
+ data: n,
76
+ headers: e
77
+ });
78
+ return t != null && t.data ? t.data : { totalCount: 0, data: [] };
79
+ } catch (t) {
80
+ throw console.error("Query Error:", t), t;
81
+ }
82
+ },
83
+ enabled: y,
84
+ staleTime: m,
85
+ refetchOnWindowFocus: P
86
+ });
87
+ return {
88
+ refetchQuery: () => {
89
+ d.invalidateQueries({ queryKey: s });
90
+ },
91
+ queryData: a.data,
92
+ isLoading: a.isLoading,
93
+ isError: a.isError,
94
+ error: a.error
95
+ };
96
+ }, H = ({
97
+ url: i,
98
+ queriesToInvalidate: s,
99
+ methodType: o,
100
+ data: n,
104
101
  isFormData: y,
105
- closePopup: h,
106
- excludedIndexKeys: E
102
+ closePopup: m,
103
+ excludedIndexKeys: P
107
104
  }) => {
108
- var i;
109
- const m = M(), { cookie: e } = b({ cookieName: "accessToken" });
110
- let t = {};
111
- e != null && e.accessToken && (t = { Authorization: `Bearer ${e == null ? void 0 : e.accessToken}` });
112
- const s = S({
113
- /**
114
- * Mutation function that processes and sends data to the API.
115
- * @async
116
- * @param {Object} params - Mutation parameters.
117
- * @param {boolean} [params.isPriorityDataAvailable] - Whether to use priority data.
118
- * @param {*} [params.priorityData] - Priority data to override default data.
119
- * @returns {Promise<*>} The response data from the API.
120
- * @throws {Error} If the API request fails.
121
- */
122
- mutationFn: async ({ isPriorityDataAvailable: l, priorityData: P }) => {
123
- const p = l ? P : c;
105
+ var t;
106
+ const d = N(), { cookie: r } = M({ cookieName: "accessToken" });
107
+ let e = {};
108
+ r != null && r.accessToken && (e = { Authorization: `Bearer ${r == null ? void 0 : r.accessToken}` });
109
+ const a = v({
110
+ mutationFn: async ({ isPriorityDataAvailable: w, priorityData: k }) => {
111
+ const C = w ? k : n;
124
112
  if (y) {
125
- let C = new FormData();
126
- const T = (r, a, g = "", A = {}) => {
127
- if (a == null) return;
128
- const { excludedIndexKeys: v = [] } = A;
129
- Array.isArray(a) ? a.forEach((f, Q) => {
130
- const N = v.includes(g) ? g : g ? `${g}[${Q}]` : `${Q}`;
131
- f instanceof File ? r == null || r.append(N, f) : typeof f == "object" && f !== null ? T(r, f, N, A) : r == null || r.append(N, f);
132
- }) : typeof a == "object" && a !== null ? a instanceof File ? r.append(g, a) : Object.keys(a).forEach((f) => {
133
- const Q = a[f], q = g ? `${g}[${f}]` : f;
134
- T(
135
- r,
136
- Q,
137
- q,
138
- A
139
- );
140
- }) : a !== "" && a !== void 0 && a !== null && (r == null || r.append(g, a));
141
- }, x = {
142
- excludedIndexKeys: E
113
+ const x = new FormData(), p = (u, l, g = "", A = {}) => {
114
+ if (l == null) return;
115
+ const { excludedIndexKeys: S = [] } = A;
116
+ Array.isArray(l) ? l.forEach((h, $) => {
117
+ const T = S.includes(g) ? g : g ? `${g}[${$}]` : `${$}`;
118
+ h instanceof File ? u.append(T, h) : typeof h == "object" && h !== null ? p(u, h, T, A) : u.append(T, String(h));
119
+ }) : typeof l == "object" && l !== null ? l instanceof File ? u.append(g, l) : Object.keys(l).forEach((h) => {
120
+ p(u, l[h], g ? `${g}[${h}]` : h, A);
121
+ }) : u.append(g, String(l));
143
122
  };
144
- Object.keys(p).forEach((r) => {
145
- T(C, p[r], r, x);
123
+ Object.keys(C || {}).forEach((u) => {
124
+ p(x, C == null ? void 0 : C[u], u, { excludedIndexKeys: P });
146
125
  });
147
- const {
148
- status: w,
149
- message: d,
150
- data: k
151
- } = await $({
126
+ const { status: f, message: E, data: Q } = await I({
152
127
  action: o,
153
- url: u,
154
- data: C,
155
- headers: t
128
+ url: i,
129
+ data: x,
130
+ headers: e
156
131
  });
157
- if (w)
158
- return k;
159
- throw new Error(d || "Something went wrong!");
132
+ if (f)
133
+ return Q;
134
+ throw new Error(E || "Something went wrong!");
160
135
  } else {
161
- const {
162
- status: C,
163
- message: T,
164
- data: x
165
- } = await $({
136
+ const { status: x, message: p, data: f } = await I({
166
137
  action: o,
167
- url: u,
168
- data: p,
169
- headers: t
138
+ url: i,
139
+ data: C,
140
+ headers: e
170
141
  });
171
- if (C)
172
- return x;
173
- throw new Error(T || "Something went wrong!");
142
+ if (x)
143
+ return f;
144
+ throw new Error(p || "Something went wrong!");
174
145
  }
175
146
  },
176
- /**
177
- * Callback executed on successful mutation.
178
- * Invalidates specified queries and closes popup if provided.
179
- */
180
147
  onSuccess: () => {
181
- m.invalidateQueries({ queryKey: n }), h && h(!1);
148
+ d.invalidateQueries({ queryKey: s }), m && m(!1);
182
149
  },
183
- /**
184
- * Callback executed on mutation error.
185
- * @param {Error} error - The error object from the failed mutation.
186
- * @returns {string} The error message.
187
- */
188
- onError: (l) => (console.log("mutationError", l == null ? void 0 : l.message), l == null ? void 0 : l.message)
150
+ onError: (w) => (console.error("mutationError", w.message), w.message)
189
151
  });
190
152
  return {
191
- runMutation: ({ isPriorityDataAvailable: l, priorityData: P } = {}) => {
153
+ runMutation: (w) => {
192
154
  try {
193
- s.mutate({ isPriorityDataAvailable: l, priorityData: P });
194
- } catch (p) {
195
- console.log("Mutation Error: ", p);
155
+ a.mutate(w || {});
156
+ } catch (k) {
157
+ console.error("Mutation Error: ", k);
196
158
  }
197
159
  },
198
- mutationLoading: s.isPending,
199
- mutationData: s.data,
200
- mutationError: (i = s.error) == null ? void 0 : i.message,
201
- isMutationSucceeded: s.isSuccess
160
+ mutationLoading: a.isPending,
161
+ mutationData: a.data,
162
+ mutationError: (t = a.error) == null ? void 0 : t.message,
163
+ isMutationSucceeded: a.isSuccess
202
164
  };
203
- }, J = ({
204
- url: u,
205
- queryKey: n,
165
+ }, W = ({
166
+ url: i,
167
+ queryKey: s,
206
168
  methodType: o,
207
- data: c,
169
+ data: n,
208
170
  enabled: y = !0,
209
- cacheTime: h = 5 * 60 * 1e3,
210
- staleTime: E = 5 * 60 * 1e3
171
+ staleTime: m = 5 * 60 * 1e3
211
172
  }) => {
212
- var P, p, C, T, x;
213
- const m = M(), { cookie: e } = b({ cookieName: "accessToken" });
214
- let t = {};
215
- e != null && e.accessToken && (t = { Authorization: `Bearer ${e == null ? void 0 : e.accessToken}` });
216
- const s = O({
217
- queryKey: n,
218
- queryFn: async ({ pageParam: w }) => {
173
+ var w, k, C, x, p;
174
+ const P = N(), { cookie: d } = M({ cookieName: "accessToken" });
175
+ let r = {};
176
+ d != null && d.accessToken && (r = { Authorization: `Bearer ${d.accessToken}` });
177
+ const e = L({
178
+ queryKey: s,
179
+ queryFn: async ({ pageParam: f = 1 }) => {
219
180
  try {
220
- const d = await $({
181
+ const E = await I({
221
182
  action: o,
222
- url: u,
183
+ url: i,
223
184
  data: {
224
- ...c,
225
- page: w
185
+ ...n,
186
+ page: f
226
187
  },
227
- headers: t
188
+ headers: r
228
189
  });
229
- if (d != null && d.data) {
230
- const { data: k, page: r, totalPages: a, totalCount: g } = d == null ? void 0 : d.data, A = r < a;
190
+ if (E != null && E.data) {
191
+ const { data: Q, page: u, totalPages: l, totalCount: g } = E.data, A = u < l;
231
192
  return {
232
- data: k,
233
- nextPage: A ? r + 1 : void 0,
193
+ data: Q,
194
+ nextPage: A ? u + 1 : void 0,
234
195
  hasMore: A,
235
196
  totalCount: g
236
197
  };
237
198
  } else
238
- return { totalCount: 0, data: [] };
239
- } catch (d) {
240
- throw console.error("Query Error:", d), d;
199
+ return { totalCount: 0, data: [], hasMore: !1 };
200
+ } catch (E) {
201
+ throw console.error("Query Error:", E), E;
241
202
  }
242
203
  },
243
- /**
244
- * Function to determine the next page parameter for pagination.
245
- * @param {Object} lastPage - The data from the last fetched page.
246
- * @param {boolean} lastPage.hasMore - Whether more pages exist.
247
- * @param {number} [lastPage.nextPage] - The next page number.
248
- * @returns {number|undefined} The next page parameter or undefined if no more pages.
249
- */
250
- getNextPageParam: (w) => w.hasMore ? w.nextPage : void 0,
204
+ initialPageParam: 1,
205
+ getNextPageParam: (f) => f.hasMore ? f.nextPage : void 0,
251
206
  enabled: y,
252
- cacheTime: h,
253
- staleTime: E,
207
+ staleTime: m,
254
208
  refetchOnWindowFocus: !1
255
- }), I = () => {
256
- m.invalidateQueries({ queryKey: n });
257
- }, i = ((p = (P = s == null ? void 0 : s.data) == null ? void 0 : P.pages) == null ? void 0 : p.flatMap((w) => w.data)) || [], l = ((x = (T = (C = s == null ? void 0 : s.data) == null ? void 0 : C.pages) == null ? void 0 : T[0]) == null ? void 0 : x.totalCount) ?? 0;
209
+ }), a = () => {
210
+ P.invalidateQueries({ queryKey: s });
211
+ }, c = ((k = (w = e == null ? void 0 : e.data) == null ? void 0 : w.pages) == null ? void 0 : k.flatMap((f) => f.data)) || [], t = ((p = (x = (C = e == null ? void 0 : e.data) == null ? void 0 : C.pages) == null ? void 0 : x[0]) == null ? void 0 : p.totalCount) ?? 0;
258
212
  return {
259
- refetchQuery: I,
260
- queryData: i,
261
- isLoading: s.isLoading,
262
- isError: s.isError,
263
- error: s.error,
264
- fetchNextPage: s.fetchNextPage,
265
- hasNextPage: s.hasNextPage,
266
- totalCount: l
213
+ refetchQuery: a,
214
+ queryData: c,
215
+ isLoading: e.isLoading,
216
+ isError: e.isError,
217
+ error: e.error,
218
+ fetchNextPage: e.fetchNextPage,
219
+ hasNextPage: e.hasNextPage,
220
+ totalCount: t
267
221
  };
268
222
  };
269
223
  export {
270
- b as useCookie,
271
- J as useGlobalInfiniteQuery,
272
- W as useGlobalMutation,
273
- U as useGlobalQuery
224
+ M as useCookie,
225
+ W as useGlobalInfiniteQuery,
226
+ H as useGlobalMutation,
227
+ B as useGlobalQuery
274
228
  };
@@ -1 +1 @@
1
- (function(c,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("@tanstack/react-query"),require("react-cookie"),require("axios")):typeof define=="function"&&define.amd?define(["exports","@tanstack/react-query","react-cookie","axios"],g):(c=typeof globalThis<"u"?globalThis:c||self,g(c.QueryHarbor={},c.ReactQuery,c.ReactCookie,c.axios))})(this,function(c,g,v,I){"use strict";const b=({cookieName:i})=>{const[r,a,u]=v.useCookies([i]);return{cookie:r,setCookie:a,removeCookie:u}},G=({url:i,queryKey:r,methodType:a,data:u,enabled:T=!0,cacheTime:w=3e5,staleTime:C=3e5})=>{const p=g.useQueryClient(),{cookie:e}=b({cookieName:"accessToken"});let t={};e!=null&&e.accessToken&&(t={Authorization:`Bearer ${e==null?void 0:e.accessToken}`});const s=g.useQuery({queryKey:r,queryFn:async()=>{try{const l=await APIHandler({action:a,url:i,data:u,headers:t});return l!=null&&l.data?l.data:{totalCount:0,data:[]}}catch(l){throw console.error("Query Error:",l),l}},enabled:T,cacheTime:w,staleTime:C,refetchOnWindowFocus:!1});return{refetchQuery:()=>{p.invalidateQueries({queryKey:r})},queryData:s.data,isLoading:s.isLoading,isError:s.isError,error:s.error}},j=async({action:i,url:r,data:a,headers:u})=>{switch(i){case"GET":return await I.get(r,{headers:u});case"POST":return await I.post(r,a,{headers:u});case"PUT":return await I.put(r,a,{headers:u});case"DELETE":return await I.delete(r,{data:a,headers:u});default:throw new Error(`Invalid action: ${i}`)}},x=async({action:i,url:r,data:a,headers:u})=>{var T,w,C,p,e;try{const t=await j({action:i,url:r,data:a,headers:u});return t.status>=200&&t.status<=299?{status:!0,data:t.data,message:t.data.message,statusCode:t.status}:{status:!1,error:"API Failed",message:"API Failed",statusCode:t.status}}catch(t){return I.isAxiosError(t)?t.message==="Network Error"?{status:!1,error:"Network Error",message:"Network Error"}:{status:!1,type:(w=(T=t.response)==null?void 0:T.data)==null?void 0:w.type,message:(C=t.response)==null?void 0:C.data.message,error:(p=t.response)==null?void 0:p.data.error,statusCode:(e=t.response)==null?void 0:e.status}:{status:!1,error:"API Failed",message:"API Failed"}}},L=({url:i,queriesToInvalidate:r,methodType:a,data:u,isFormData:T,closePopup:w,excludedIndexKeys:C})=>{var l;const p=g.useQueryClient(),{cookie:e}=b({cookieName:"accessToken"});let t={};e!=null&&e.accessToken&&(t={Authorization:`Bearer ${e==null?void 0:e.accessToken}`});const s=g.useMutation({mutationFn:async({isPriorityDataAvailable:d,priorityData:Q})=>{const k=d?Q:u;if(T){let m=new FormData;const P=(n,o,h="",F={})=>{if(o==null)return;const{excludedIndexKeys:H=[]}=F;Array.isArray(o)?o.forEach((y,q)=>{const $=H.includes(h)?h:h?`${h}[${q}]`:`${q}`;y instanceof File?n==null||n.append($,y):typeof y=="object"&&y!==null?P(n,y,$,F):n==null||n.append($,y)}):typeof o=="object"&&o!==null?o instanceof File?n.append(h,o):Object.keys(o).forEach(y=>{const q=o[y],S=h?`${h}[${y}]`:y;P(n,q,S,F)}):o!==""&&o!==void 0&&o!==null&&(n==null||n.append(h,o))},A={excludedIndexKeys:C};Object.keys(k).forEach(n=>{P(m,k[n],n,A)});const{status:E,message:f,data:N}=await x({action:a,url:i,data:m,headers:t});if(E)return N;throw new Error(f||"Something went wrong!")}else{const{status:m,message:P,data:A}=await x({action:a,url:i,data:k,headers:t});if(m)return A;throw new Error(P||"Something went wrong!")}},onSuccess:()=>{p.invalidateQueries({queryKey:r}),w&&w(!1)},onError:d=>(console.log("mutationError",d==null?void 0:d.message),d==null?void 0:d.message)});return{runMutation:({isPriorityDataAvailable:d,priorityData:Q}={})=>{try{s.mutate({isPriorityDataAvailable:d,priorityData:Q})}catch(k){console.log("Mutation Error: ",k)}},mutationLoading:s.isPending,mutationData:s.data,mutationError:(l=s.error)==null?void 0:l.message,isMutationSucceeded:s.isSuccess}},O=({url:i,queryKey:r,methodType:a,data:u,enabled:T=!0,cacheTime:w=3e5,staleTime:C=3e5})=>{var Q,k,m,P,A;const p=g.useQueryClient(),{cookie:e}=b({cookieName:"accessToken"});let t={};e!=null&&e.accessToken&&(t={Authorization:`Bearer ${e==null?void 0:e.accessToken}`});const s=g.useInfiniteQuery({queryKey:r,queryFn:async({pageParam:E})=>{try{const f=await x({action:a,url:i,data:{...u,page:E},headers:t});if(f!=null&&f.data){const{data:N,page:n,totalPages:o,totalCount:h}=f==null?void 0:f.data,F=n<o;return{data:N,nextPage:F?n+1:void 0,hasMore:F,totalCount:h}}else return{totalCount:0,data:[]}}catch(f){throw console.error("Query Error:",f),f}},getNextPageParam:E=>E.hasMore?E.nextPage:void 0,enabled:T,cacheTime:w,staleTime:C,refetchOnWindowFocus:!1}),M=()=>{p.invalidateQueries({queryKey:r})},l=((k=(Q=s==null?void 0:s.data)==null?void 0:Q.pages)==null?void 0:k.flatMap(E=>E.data))||[],d=((A=(P=(m=s==null?void 0:s.data)==null?void 0:m.pages)==null?void 0:P[0])==null?void 0:A.totalCount)??0;return{refetchQuery:M,queryData:l,isLoading:s.isLoading,isError:s.isError,error:s.error,fetchNextPage:s.fetchNextPage,hasNextPage:s.hasNextPage,totalCount:d}};c.useCookie=b,c.useGlobalInfiniteQuery=O,c.useGlobalMutation=L,c.useGlobalQuery=G,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
1
+ (function(c,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("@tanstack/react-query"),require("react-cookie"),require("axios")):typeof define=="function"&&define.amd?define(["exports","@tanstack/react-query","react-cookie","axios"],g):(c=typeof globalThis<"u"?globalThis:c||self,g(c.QueryHarbor={},c.ReactQuery,c.ReactCookie,c.axios))})(this,function(c,g,q,Q){"use strict";const x=({cookieName:i})=>{const[s,o,n]=q.useCookies([i]);return{cookie:s,setCookie:o,removeCookie:n}},$=async({action:i,url:s,data:o,headers:n})=>{switch(i){case"GET":return await Q.get(s,{headers:n});case"POST":return await Q.post(s,o,{headers:n});case"PUT":return await Q.put(s,o,{headers:n});case"DELETE":return await Q.delete(s,{data:o,headers:n});default:throw new Error(`Invalid action: ${i}`)}},M=async({action:i,url:s,data:o,headers:n})=>{var k,E,P,f,r,e,a;try{const u=await $({action:i,url:s,data:o,headers:n});return u.status>=200&&u.status<=299?{status:!0,data:u.data,message:u.data.message,statusCode:u.status}:{status:!1,error:"API Failed",message:"API Failed",statusCode:u.status}}catch(u){if(Q.isAxiosError(u)){const t=u;return t.message==="Network Error"?{status:!1,error:"Network Error",message:"Network Error"}:{status:!1,type:(E=(k=t.response)==null?void 0:k.data)==null?void 0:E.type,message:((f=(P=t.response)==null?void 0:P.data)==null?void 0:f.message)||"API Failed",error:((e=(r=t.response)==null?void 0:r.data)==null?void 0:e.error)||"API Failed",statusCode:(a=t.response)==null?void 0:a.status}}return{status:!1,error:"API Failed",message:"API Failed"}}},v=({url:i,queryKey:s,methodType:o,data:n,enabled:k=!0,staleTime:E=3e5,refetchOnWindowFocus:P=!1})=>{const f=g.useQueryClient(),{cookie:r}=x({cookieName:"accessToken"});let e={};r!=null&&r.accessToken&&(e={Authorization:`Bearer ${r.accessToken}`});const a=g.useQuery({queryKey:s,queryFn:async()=>{try{const t=await M({action:o,url:i,data:n,headers:e});return t!=null&&t.data?t.data:{totalCount:0,data:[]}}catch(t){throw console.error("Query Error:",t),t}},enabled:k,staleTime:E,refetchOnWindowFocus:P});return{refetchQuery:()=>{f.invalidateQueries({queryKey:s})},queryData:a.data,isLoading:a.isLoading,isError:a.isError,error:a.error}},G=({url:i,queriesToInvalidate:s,methodType:o,data:n,isFormData:k,closePopup:E,excludedIndexKeys:P})=>{var t;const f=g.useQueryClient(),{cookie:r}=x({cookieName:"accessToken"});let e={};r!=null&&r.accessToken&&(e={Authorization:`Bearer ${r==null?void 0:r.accessToken}`});const a=g.useMutation({mutationFn:async({isPriorityDataAvailable:m,priorityData:A})=>{const p=m?A:n;if(k){const T=new FormData,I=(l,d,y="",F={})=>{if(d==null)return;const{excludedIndexKeys:L=[]}=F;Array.isArray(d)?d.forEach((w,S)=>{const N=L.includes(y)?y:y?`${y}[${S}]`:`${S}`;w instanceof File?l.append(N,w):typeof w=="object"&&w!==null?I(l,w,N,F):l.append(N,String(w))}):typeof d=="object"&&d!==null?d instanceof File?l.append(y,d):Object.keys(d).forEach(w=>{I(l,d[w],y?`${y}[${w}]`:w,F)}):l.append(y,String(d))};Object.keys(p||{}).forEach(l=>{I(T,p==null?void 0:p[l],l,{excludedIndexKeys:P})});const{status:h,message:C,data:b}=await M({action:o,url:i,data:T,headers:e});if(h)return b;throw new Error(C||"Something went wrong!")}else{const{status:T,message:I,data:h}=await M({action:o,url:i,data:p,headers:e});if(T)return h;throw new Error(I||"Something went wrong!")}},onSuccess:()=>{f.invalidateQueries({queryKey:s}),E&&E(!1)},onError:m=>(console.error("mutationError",m.message),m.message)});return{runMutation:m=>{try{a.mutate(m||{})}catch(A){console.error("Mutation Error: ",A)}},mutationLoading:a.isPending,mutationData:a.data,mutationError:(t=a.error)==null?void 0:t.message,isMutationSucceeded:a.isSuccess}},j=({url:i,queryKey:s,methodType:o,data:n,enabled:k=!0,staleTime:E=3e5})=>{var m,A,p,T,I;const P=g.useQueryClient(),{cookie:f}=x({cookieName:"accessToken"});let r={};f!=null&&f.accessToken&&(r={Authorization:`Bearer ${f.accessToken}`});const e=g.useInfiniteQuery({queryKey:s,queryFn:async({pageParam:h=1})=>{try{const C=await M({action:o,url:i,data:{...n,page:h},headers:r});if(C!=null&&C.data){const{data:b,page:l,totalPages:d,totalCount:y}=C.data,F=l<d;return{data:b,nextPage:F?l+1:void 0,hasMore:F,totalCount:y}}else return{totalCount:0,data:[],hasMore:!1}}catch(C){throw console.error("Query Error:",C),C}},initialPageParam:1,getNextPageParam:h=>h.hasMore?h.nextPage:void 0,enabled:k,staleTime:E,refetchOnWindowFocus:!1}),a=()=>{P.invalidateQueries({queryKey:s})},u=((A=(m=e==null?void 0:e.data)==null?void 0:m.pages)==null?void 0:A.flatMap(h=>h.data))||[],t=((I=(T=(p=e==null?void 0:e.data)==null?void 0:p.pages)==null?void 0:T[0])==null?void 0:I.totalCount)??0;return{refetchQuery:a,queryData:u,isLoading:e.isLoading,isError:e.isError,error:e.error,fetchNextPage:e.fetchNextPage,hasNextPage:e.hasNextPage,totalCount:t}};c.useCookie=x,c.useGlobalInfiniteQuery=j,c.useGlobalMutation=G,c.useGlobalQuery=v,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});