{"version":3,"file":"__federation_expose_Utils-QvhjQ6gI.js","sources":["../../src/utils/queries/index.ts"],"sourcesContent":["import {\n QueryClient,\n QueryCache,\n MutationCache,\n UseMutationOptions,\n DefaultError\n} from '@tanstack/react-query'\nimport { defaultLogger } from '../logger'\nimport { HttpStatusCode, isAxiosError } from 'axios'\nimport { ApiError } from '@services/api'\n\nconst RETRY_COUNT = 3\nconst JWT_REFRESH_URL = 'v2/auth/jwt/refresh'\n\nexport function createQueryClient(): QueryClient {\n const queryCache = new QueryCache({\n onError(error) {\n defaultLogger.error('Network error', { error })\n }\n })\n\n const mutationCache = new MutationCache({\n onError(error) {\n defaultLogger.error('Network error', { error })\n }\n })\n\n return new QueryClient({\n queryCache,\n mutationCache,\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n retry: getShouldRetry\n }\n }\n })\n}\n\nfunction getShouldRetry(count: number, error: unknown) {\n if (count >= RETRY_COUNT) return false\n\n const axiosError =\n error instanceof ApiError && isAxiosError(error.source)\n ? error.source\n : null\n\n if (axiosError) {\n const status = axiosError.response?.status\n const url = axiosError.config?.url\n\n switch (status) {\n case HttpStatusCode.Unauthorized:\n // retry everything except token refresh\n return url != JWT_REFRESH_URL\n\n case HttpStatusCode.Forbidden:\n return false\n\n default:\n return true\n }\n }\n\n return false\n}\n\nexport const queryClient = createQueryClient()\n\n/**\n * Helper type to make it easier to pass callbacks to mutation hooks by\n * 1. Reordering generic arguments via putting TVariable and TData types first as they're used more often\n * this is also more natural to have args type first and then return value similary how we define function type.\n * 2. Allowing only necessary overrides, in this case callbacks (this can and should be extended as needed).\n */\nexport type MutationOptions<\n TVariables = void,\n TData = unknown,\n TContext = unknown,\n TError = DefaultError\n> = Pick<\n UseMutationOptions,\n 'onSuccess' | 'onError' | 'onSettled' | 'onMutate'\n>\n"],"names":["QueryClient","QueryCache","MutationCache","importShared","RETRY_COUNT","JWT_REFRESH_URL","createQueryClient","queryCache","error","defaultLogger","mutationCache","getShouldRetry","count","axiosError","ApiError","isAxiosError","status","url","HttpStatusCode","queryClient"],"mappings":"oSAAA,KAAA,CAAA,YAAAA,EAAA,WAAAC,EAAA,cAAAC,CAAA,EAAA,MAAAC,EAAA,uBAAA,EAWMC,EAAc,EACdC,EAAkB,sBAEjB,SAASC,GAAiC,CACzC,MAAAC,EAAa,IAAIN,EAAW,CAChC,QAAQO,EAAO,CACbC,EAAc,MAAM,gBAAiB,CAAE,MAAAD,CAAA,CAAO,CAAA,CAChD,CACD,EAEKE,EAAgB,IAAIR,EAAc,CACtC,QAAQM,EAAO,CACbC,EAAc,MAAM,gBAAiB,CAAE,MAAAD,CAAA,CAAO,CAAA,CAChD,CACD,EAED,OAAO,IAAIR,EAAY,CACrB,WAAAO,EACA,cAAAG,EACA,eAAgB,CACd,QAAS,CACP,qBAAsB,GACtB,MAAOC,CAAA,CACT,CACF,CACD,CACH,CAEA,SAASA,EAAeC,EAAeJ,EAAgB,CACjD,GAAAI,GAASR,EAAoB,MAAA,GAE3B,MAAAS,EACJL,aAAiBM,GAAYC,EAAaP,EAAM,MAAM,EAClDA,EAAM,OACN,KAEN,GAAIK,EAAY,CACR,MAAAG,EAASH,EAAW,UAAU,OAC9BI,EAAMJ,EAAW,QAAQ,IAE/B,OAAQG,EAAQ,CACd,KAAKE,EAAe,aAElB,OAAOD,GAAOZ,EAEhB,KAAKa,EAAe,UACX,MAAA,GAET,QACS,MAAA,EAAA,CACX,CAGK,MAAA,EACT,CAEO,MAAMC,EAAcb,EAAkB"}