@korautils/forms
Version:

1 lines • 7.77 kB
Source Map (JSON)
{"version":3,"sources":["../src/modules/core/constants/regex.ts","../src/modules/config/axios.ts","../src/modules/builder/hooks/useApiRequest.ts"],"names":["EMAIL_REGEX","URL_REGEX","AxiosConfig","useApiRequest","loading","setLoading","useState","responses","setResponse","error","setError","type","setType","HOST_URL","axiosInstance","axios","initializateStates","getUrl","url","formattedUrl","fetchData","useCallback","config","response","callCallbacks","getProp","cfg","fetchMultipleData","configs","promises","useApiRequest_default"],"mappings":"mGAAO,IAAMA,EACX,kcAEWC,CAAAA,CAAAA,CACX,+ECJK,IAAMC,EAAN,KAAkB,CACvB,OAAO,UACT,CAAA,CCOMC,IAAAA,CAAAA,CAAgB,IAAM,CAC1B,GAAM,CAACC,CAASC,CAAAA,CAAU,EAAIC,QAAkB,CAAA,CAAA,CAAK,CAC/C,CAAA,CAACC,EAAWC,CAAW,CAAA,CAAIF,SAAgB,EAAE,EAC7C,CAACG,CAAAA,CAAOC,GAAQ,CAAA,CAAIJ,SAA4B,IAAI,CAAA,CACpD,CAACK,CAAMC,CAAAA,CAAO,EAAIN,QAAe,CAAA,QAAQ,CACzCO,CAAAA,CAAAA,CAAWX,EAAY,UAEvBY,CAAAA,CAAAA,CAAgBC,EAAM,MAAO,CAAA,CACjC,QAAS,CACP,cAAA,CAAgB,kBAElB,CACF,CAAC,CAEKC,CAAAA,CAAAA,CAAsBL,GAAe,CACzCN,CAAAA,CAAW,EAAI,CACfO,CAAAA,CAAAA,CAAQD,CAAI,CACZD,CAAAA,GAAAA,CAAS,IAAI,CACbF,CAAAA,CAAAA,CAAY,EAAE,EAChB,EAEMS,CAAUC,CAAAA,CAAAA,EAAwB,CACtC,GAAIjB,EAAU,IAAKiB,CAAAA,CAAG,EACpB,OAAOA,CAAAA,CAGT,IAAMC,CAAeD,CAAAA,CAAAA,CAAI,UAAW,CAAA,GAAG,EAAIA,CAAI,CAAA,SAAA,CAAU,CAAC,CAAIA,CAAAA,CAAAA,CAC9D,OAAO,CAAGL,EAAAA,CAAQ,CAAIM,CAAAA,EAAAA,CAAY,EACpC,CAEMC,CAAAA,CAAAA,CAAYC,YAAY,MAAOC,CAAAA,EAA6B,CAChEN,CAAmB,CAAA,QAAQ,EAE3B,GAAI,CACF,IAAMO,CAAW,CAAA,MAAMT,EAAc,CACnC,GAAA,CAAKG,EAAOK,CAAO,CAAA,GAAG,CACtB,CAAA,MAAA,CAAQA,EAAO,MACf,CAAA,OAAA,CAASA,EAAO,OAChB,CAAA,MAAA,CAAQA,EAAO,MACf,CAAA,IAAA,CAAMA,CAAO,CAAA,IAAA,CACb,QAASA,CAAO,CAAA,OAAA,CAChB,aAAcA,CAAO,CAAA,YAAA,CACrB,KAAMA,CAAO,CAAA,IACf,CAAC,CAAA,CAED,OAAAE,CAAc,CAAA,CAAE,SAAAD,CAAU,CAAA,MAAA,CAAQ,CAACD,CAAM,CAAE,CAAC,CACrCC,CAAAA,CACT,OAASd,CAAO,CAAA,CACd,eAAQ,GAAIA,CAAAA,CAAK,EACjBe,CAAc,CAAA,CAAE,KAAAf,CAAAA,CAAAA,CAAO,OAAQ,CAACa,CAAM,CAAE,CAAC,CAAA,CAClCG,EAAQhB,CAAO,CAAA,UAAU,CAClC,CAAA,OAAE,CACAJ,CAAW,CAAA,CAAA,CAAK,EAClB,CACF,CAAA,CAAG,EAAE,CAAA,CAECmB,CAAgB,CAAA,CAAC,CACrB,KAAAf,CAAAA,CAAAA,CACA,SAAAc,CACA,CAAA,MAAA,CAAAD,CACF,CAIM,GAAA,CACJ,IAAWI,IAAAA,CAAAA,IAAOJ,EACZb,CAAS,EAAA,OAAOiB,EAAI,OAAY,EAAA,UAAA,EAClCA,EAAI,OAAQjB,CAAAA,CAAK,CAGf,CAAA,CAACA,GAAS,OAAOiB,CAAAA,CAAI,WAAc,UACrCA,EAAAA,CAAAA,CAAI,UAAUH,CAAQ,CAAA,CAItBA,CACFf,EAAAA,CAAAA,CAAYG,IAAS,QAAW,CAAA,CAACY,CAAQ,CAAIA,CAAAA,CAAQ,EAGnDd,CACFC,GAAAA,GAAAA,CAASD,CAAmB,CAAA,CAC5BD,EAAY,CAAEC,CAAAA,CAAqB,QAAQ,CAAC,CAAA,EAEhD,EAEMkB,CAAoBN,CAAAA,WAAAA,CAAY,MAAOO,CAAgC,EAAA,CAC3EZ,EAAmB,UAAU,CAAA,CAE7B,GAAI,CACF,IAAMa,EAAWD,CAAQ,CAAA,GAAA,CAAKN,CAC5BR,EAAAA,CAAAA,CAAc,CACZ,GAAKQ,CAAAA,CAAAA,CAAO,IACZ,MAAQA,CAAAA,CAAAA,CAAO,OACf,OAASA,CAAAA,CAAAA,CAAO,OAChB,CAAA,MAAA,CAAQA,EAAO,MACf,CAAA,IAAA,CAAMA,EAAO,IACb,CAAA,OAAA,CAASA,EAAO,OAChB,CAAA,YAAA,CAAcA,CAAO,CAAA,YAAA,CACrB,KAAMA,CAAO,CAAA,IACf,CAAC,CACH,CAAA,CAEMf,EAAY,MAAM,OAAA,CAAQ,IAAIsB,CAAQ,CAAA,CAC5C,OAAAL,CAAc,CAAA,CAAE,SAAUjB,CAAW,CAAA,MAAA,CAAQqB,CAAQ,CAAC,CAAA,CAC/CrB,CACT,CAAA,MAASE,EAAO,CACde,CAAAA,CAAc,CAAE,KAAAf,CAAAA,CAAAA,CAAO,OAAQmB,CAAQ,CAAC,EAC1C,CAAA,OAAE,CACAvB,CAAW,CAAA,CAAA,CAAK,EAClB,CACF,CAAA,CAAG,EAAE,CAAA,CAEL,OAAO,CACL,UAAAe,CACA,CAAA,iBAAA,CAAAO,EACA,OAAAvB,CAAAA,CAAAA,CACA,SAAUO,CAAS,GAAA,QAAA,CAAWJ,EAAU,CAAC,CAAA,CAAIA,EAC7C,KAAAE,CAAAA,CAAAA,CACA,OAAAQ,CACF,CACF,EAEOa,CAAQ3B,CAAAA","file":"chunk-MIZO24FD.mjs","sourcesContent":["export const EMAIL_REGEX =\n /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/\n\nexport const URL_REGEX =\n /^(https?:\\/\\/)((\\[[0-9a-fA-F:.]+\\])|([a-zA-Z0-9.-]+))(:\\d{1,5})?(\\/[^\\s]*)?$/\n\nexport const ALPHABETIC_PATTERN =\n /^[A-Za-zÁÉÍÓÚáéíóúÑñ]+(?: [A-Za-zÁÉÍÓÚáéíóúÑñ]+)* ?$/\n\nexport const NUMBER_PATTERN = /^\\d*$/\n","export class AxiosConfig {\n static API_SERVER: string\n}\n","import { URL_REGEX } from '@/modules/core/constants/regex'\nimport { getProp } from '@/modules/core/utils'\nimport axios, { AxiosError } from 'axios'\nimport { useState, useCallback } from 'react'\nimport { ApiRequestConfig } from '@/modules/builder/interfaces/general'\nimport { AxiosConfig } from '@/modules/config/axios'\n\ntype TYPE = 'single' | 'multiple'\n\nconst useApiRequest = () => {\n const [loading, setLoading] = useState<boolean>(false)\n const [responses, setResponse] = useState<any[]>([])\n const [error, setError] = useState<AxiosError | null>(null)\n const [type, setType] = useState<TYPE>('single')\n const HOST_URL = AxiosConfig.API_SERVER\n\n const axiosInstance = axios.create({\n headers: {\n 'Content-Type': 'application/json',\n // Authorization: formatBearerToken(authToken || ''),\n },\n })\n\n const initializateStates = (type: TYPE) => {\n setLoading(true)\n setType(type)\n setError(null)\n setResponse([])\n }\n\n const getUrl = (url: string): string => {\n if (URL_REGEX.test(url)) {\n return url\n }\n\n const formattedUrl = url.startsWith('/') ? url.substring(1) : url\n return `${HOST_URL}/${formattedUrl}`\n }\n\n const fetchData = useCallback(async (config: ApiRequestConfig) => {\n initializateStates('single')\n\n try {\n const response = await axiosInstance({\n url: getUrl(config.url),\n method: config.method,\n headers: config.headers,\n params: config.params,\n data: config.data,\n timeout: config.timeout,\n responseType: config.responseType,\n auth: config.auth,\n })\n\n callCallbacks({ response, config: [config] })\n return response\n } catch (error) {\n console.log(error)\n callCallbacks({ error, config: [config] })\n return getProp(error, 'response')\n } finally {\n setLoading(false)\n }\n }, [])\n\n const callCallbacks = ({\n error,\n response,\n config,\n }: {\n error?: any\n response?: any\n config: ApiRequestConfig[]\n }) => {\n for (const cfg of config) {\n if (error && typeof cfg.onError === 'function') {\n cfg.onError(error)\n }\n\n if (!error && typeof cfg.onSuccess === 'function') {\n cfg.onSuccess(response)\n }\n }\n\n if (response) {\n setResponse(type === 'single' ? [response] : response)\n }\n\n if (error) {\n setError(error as AxiosError)\n setResponse([(error as AxiosError).response])\n }\n }\n\n const fetchMultipleData = useCallback(async (configs: ApiRequestConfig[]) => {\n initializateStates('multiple')\n\n try {\n const promises = configs.map((config) =>\n axiosInstance({\n url: config.url,\n method: config.method,\n headers: config.headers,\n params: config.params,\n data: config.data,\n timeout: config.timeout,\n responseType: config.responseType,\n auth: config.auth,\n })\n )\n\n const responses = await Promise.all(promises)\n callCallbacks({ response: responses, config: configs })\n return responses\n } catch (error) {\n callCallbacks({ error, config: configs })\n } finally {\n setLoading(false)\n }\n }, [])\n\n return {\n fetchData,\n fetchMultipleData,\n loading,\n response: type === 'single' ? responses[0] : responses,\n error,\n getUrl,\n }\n}\n\nexport default useApiRequest\n"]}