vormiaqueryjs
Version:
Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application
1 lines • 4.97 kB
Source Map (JSON)
{"version":3,"file":"useVrmMutation.mjs","sources":["../../../src/hooks/useVrmMutation.js"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { getGlobalVormiaClient } from '../client/createVormiaClient';\n\n/**\n * Hook for making API mutations with Vormia\n * @param {Object} options - Mutation options\n * @param {string} options.endpoint - API endpoint\n * @param {string} [options.method='POST'] - HTTP method\n * @param {Object} [options.headers] - Custom headers\n * @param {Function} [options.transform] - Transform function for response data\n * @param {boolean} [options.encryptData=false] - Whether to encrypt the request data\n * @param {Function} [options.onSuccess] - Success callback\n * @param {Function} [options.onError] - Error callback\n * @returns {Object} Mutation result and utilities\n */\nexport const useVrmMutation = (options) => {\n const queryClient = useQueryClient();\n const client = getGlobalVormiaClient();\n\n const {\n endpoint,\n method = 'POST',\n headers,\n transform,\n encryptData = false,\n onSuccess,\n onError,\n ...mutationOptions\n } = options;\n\n const mutation = useMutation({\n mutationFn: async (variables) => {\n try {\n const config = {\n method,\n url: endpoint,\n data: variables,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n encryptData,\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 throw error instanceof Error ? error : new Error('Mutation failed');\n }\n },\n onSuccess: (data, variables, context) => {\n if (onSuccess) {\n onSuccess(data, variables, context);\n }\n // Invalidate related queries\n queryClient.invalidateQueries({ queryKey: [endpoint] });\n },\n onError: (error, variables, context) => {\n if (onError) {\n onError(error, variables, context);\n }\n },\n ...mutationOptions,\n });\n\n // Add invalidateQueries utility\n const invalidateQueries = (queryKeys = [endpoint]) => {\n return queryClient.invalidateQueries({\n queryKey: queryKeys,\n });\n };\n\n return {\n ...mutation,\n invalidateQueries,\n };\n};\n\n// Specialized hooks for common operations\n\n/**\n * Hook for create operations\n * @param {string} endpoint - API endpoint\n * @param {Object} options - Mutation options\n * @returns {Object} Mutation result\n */\nexport const useVrmCreate = (endpoint, options = {}) => {\n return useVrmMutation({\n endpoint,\n method: 'POST',\n ...options,\n });\n};\n\n/**\n * Hook for update operations (PUT)\n * @param {string} endpoint - API endpoint\n * @param {Object} options - Mutation options\n * @returns {Object} Mutation result\n */\nexport const useVrmUpdate = (endpoint, options = {}) => {\n return useVrmMutation({\n endpoint,\n method: 'PUT',\n ...options,\n });\n};\n\n/**\n * Hook for partial update operations (PATCH)\n * @param {string} endpoint - API endpoint\n * @param {Object} options - Mutation options\n * @returns {Object} Mutation result\n */\nexport const useVrmPatch = (endpoint, options = {}) => {\n return useVrmMutation({\n endpoint,\n method: 'PATCH',\n ...options,\n });\n};\n\n/**\n * Hook for delete operations\n * @param {string} endpoint - API endpoint\n * @param {Object} options - Mutation options\n * @returns {Object} Mutation result\n */\nexport const useVrmDelete = (endpoint, options = {}) => {\n return useVrmMutation({\n endpoint,\n method: 'DELETE',\n ...options,\n });\n};\n"],"names":[],"mappings":";;AAeY,MAAC,iBAAiB,CAAC,YAAY;AACzC,QAAM,cAAc,eAAc;AAClC,QAAM,SAAS,sBAAqB;AAEpC,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,IAAM;AAEJ,QAAM,WAAW,YAAY;AAAA,IAC3B,YAAY,OAAO,cAAc;AAC/B,UAAI;AACF,cAAM,SAAS;AAAA,UACb;AAAA,UACA,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,GAAG;AAAA,UACf;AAAA,UACU;AAAA,QACV;AAEQ,cAAM,WAAW,MAAM,OAAO,QAAQ,MAAM;AAE5C,YAAI,aAAa,OAAO,cAAc,YAAY;AAChD,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,MAAM,UAAU,SAAS,IAAI;AAAA,UACzC;AAAA,QACA;AAEQ,eAAO;AAAA,MACf,SAAe,OAAO;AACd,cAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,iBAAiB;AAAA,MAC1E;AAAA,IACA;AAAA,IACI,WAAW,CAAC,MAAM,WAAW,YAAY;AACvC,UAAI,WAAW;AACb,kBAAU,MAAM,WAAW,OAAO;AAAA,MAC1C;AAEM,kBAAY,kBAAkB,EAAE,UAAU,CAAC,QAAQ,EAAC,CAAE;AAAA,IAC5D;AAAA,IACI,SAAS,CAAC,OAAO,WAAW,YAAY;AACtC,UAAI,SAAS;AACX,gBAAQ,OAAO,WAAW,OAAO;AAAA,MACzC;AAAA,IACA;AAAA,IACI,GAAG;AAAA,EACP,CAAG;AAGD,QAAM,oBAAoB,CAAC,YAAY,CAAC,QAAQ,MAAM;AACpD,WAAO,YAAY,kBAAkB;AAAA,MACnC,UAAU;AAAA,IAChB,CAAK;AAAA,EACL;AAEE,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACJ;AACA;"}