vormiaqueryjs
Version:
Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application
1 lines • 4.18 kB
Source Map (JSON)
{"version":3,"file":"useVrmQuery.mjs","sources":["../../../src/hooks/useVrmQuery.js"],"sourcesContent":["import { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { getGlobalVormiaClient } from \"../client/createVormiaClient\";\n\n/**\n * Hook for making API queries with Vormia\n * @param {Object} options - Query options\n * @param {string} options.endpoint - API endpoint\n * @param {string} [options.method='GET'] - HTTP method\n * @param {Object} [options.params] - Query parameters\n * @param {Object} [options.data] - Request body\n * @param {Object} [options.headers] - Custom headers\n * @param {Function} [options.transform] - Transform function for response data\n * @param {boolean} [options.enabled=true] - Whether the query should execute\n * @returns {Object} Query result\n */\nexport const useVrmQuery = (options) => {\n const client = getGlobalVormiaClient();\n\n const {\n endpoint,\n method = \"GET\",\n params,\n data,\n headers,\n transform,\n enabled = true,\n ...queryOptions\n } = options;\n\n const queryKey = [endpoint, method, params, data];\n\n const queryFn = async () => {\n try {\n const config = {\n method,\n url: endpoint,\n params: method === \"GET\" ? params : undefined,\n data: method !== \"GET\" ? data : undefined,\n headers,\n };\n\n const response = await client.request(config);\n\n if (transform && typeof transform === \"function\") {\n return {\n ...response,\n data: transform(response.data),\n };\n }\n\n return response;\n } catch (error) {\n // Re-throw with VormiaError for consistent error handling\n throw error instanceof Error\n ? error\n : new Error(\"An unknown error occurred\");\n }\n };\n\n return useQuery({\n queryKey,\n queryFn,\n enabled,\n ...queryOptions,\n });\n};\n\n/**\n * Hook for manually invalidating queries\n * @returns {Function} Function to invalidate queries\n */\nexport const useInvalidateVrmQuery = () => {\n const queryClient = useQueryClient();\n\n return (endpoint, params) => {\n return queryClient.invalidateQueries({\n queryKey: [endpoint, params],\n });\n };\n};\n\n/**\n * Hook for prefetching queries\n * @returns {Function} Function to prefetch queries\n */\nexport const usePrefetchVrmQuery = () => {\n const queryClient = useQueryClient();\n const client = getGlobalVormiaClient();\n\n return async (options) => {\n const {\n endpoint,\n method = \"GET\",\n params,\n data,\n headers,\n transform,\n ...queryOptions\n } = options;\n\n const queryKey = [endpoint, method, params, data];\n\n await queryClient.prefetchQuery({\n queryKey,\n queryFn: async () => {\n try {\n const config = {\n method,\n url: endpoint,\n params: method === \"GET\" ? params : undefined,\n data: method !== \"GET\" ? data : undefined,\n headers,\n };\n\n const response = await client.request(config);\n\n if (transform && typeof transform === \"function\") {\n return transform(response.data);\n }\n\n return response.data;\n } catch (error) {\n throw error instanceof Error ? error : new Error(\"Prefetch failed\");\n }\n },\n ...queryOptions,\n });\n };\n};\n"],"names":[],"mappings":";;AAeY,MAAC,cAAc,CAAC,YAAY;AACtC,QAAM,SAAS,sBAAqB;AAEpC,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,GAAG;AAAA,EACP,IAAM;AAEJ,QAAM,WAAW,CAAC,UAAU,QAAQ,QAAQ,IAAI;AAEhD,QAAM,UAAU,YAAY;AAC1B,QAAI;AACF,YAAM,SAAS;AAAA,QACb;AAAA,QACA,KAAK;AAAA,QACL,QAAQ,WAAW,QAAQ,SAAS;AAAA,QACpC,MAAM,WAAW,QAAQ,OAAO;AAAA,QAChC;AAAA,MACR;AAEM,YAAM,WAAW,MAAM,OAAO,QAAQ,MAAM;AAE5C,UAAI,aAAa,OAAO,cAAc,YAAY;AAChD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,MAAM,UAAU,SAAS,IAAI;AAAA,QACvC;AAAA,MACA;AAEM,aAAO;AAAA,IACb,SAAa,OAAO;AAEd,YAAM,iBAAiB,QACnB,QACA,IAAI,MAAM,2BAA2B;AAAA,IAC/C;AAAA,EACA;AAEE,SAAO,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,CAAG;AACH;"}