UNPKG

vormiaqueryjs

Version:

Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application

140 lines (139 loc) 3.59 kB
import { useQuery, useMutation } from "@tanstack/react-query"; import { getGlobalVormiaClient } from "../client/createVormiaClient.mjs"; const useVormiaQueryAuth = (options) => { const client = getGlobalVormiaClient(); const { endpoint, method = "GET", params, data, headers = {}, transform, encryptData = false, storeToken = true, ...queryOptions } = options; const queryKey = [endpoint, method, params, data]; const queryFn = async () => { var _a; try { const config = { method, url: endpoint, params: method === "GET" ? params : void 0, data: method !== "GET" ? data : void 0, headers: { "Content-Type": "application/json", ...headers }, encryptData }; const response = await client.request(config); if (storeToken && ((_a = response.data) == null ? void 0 : _a.token)) { client.setAuthToken(response.data.token); } if (transform && typeof transform === "function") { return { ...response, data: transform(response.data) }; } return response; } catch (error) { if (error.status === 401) { client.removeAuthToken(); } throw error instanceof Error ? error : new Error("Authentication query failed"); } }; return useQuery({ queryKey, queryFn, retry: (failureCount, error) => { if (error.status === 401) return false; return failureCount < 3; }, ...queryOptions }); }; const useVormiaQueryAuthMutation = (options) => { const client = getGlobalVormiaClient(); const { endpoint, method = "POST", headers = {}, transform, encryptData = false, storeToken = true, onLoginSuccess, onSuccess, onError, ...mutationOptions } = options; const mutation = useMutation({ mutationFn: async (variables) => { var _a; try { const config = { method, url: endpoint, data: variables, headers: { "Content-Type": "application/json", ...headers }, encryptData }; const response = await client.request(config); if (storeToken && ((_a = response.data) == null ? void 0 : _a.token)) { client.setAuthToken(response.data.token); } if (transform && typeof transform === "function") { return { ...response, data: transform(response.data) }; } return response; } catch (error) { if (error.status === 401) { client.removeAuthToken(); } throw error instanceof Error ? error : new Error("Authentication failed"); } }, onSuccess: (data, variables, context) => { var _a; if (onSuccess) { onSuccess(data, variables, context); } if (onLoginSuccess && ((_a = data.data) == null ? void 0 : _a.token)) { onLoginSuccess(data); } }, onError: (error, variables, context) => { if (onError) { onError(error, variables, context); } }, ...mutationOptions }); const login = async (credentials) => { return mutation.mutateAsync(credentials); }; const logout = () => { client.removeAuthToken(); }; const isAuthenticated = !!client.getAuthToken(); return { ...mutation, login, logout, isAuthenticated }; }; export { useVormiaQueryAuth, useVormiaQueryAuthMutation }; //# sourceMappingURL=useVrmAuth.mjs.map