{"version":3,"file":"index.mjs","sources":["../../lib/endpoint.ts","../../lib/api.ts","../../lib/hooks.ts"],"sourcesContent":["let endpoints: Record<string, string> = {\r\n  custom: '',\r\n};\r\n\r\nconst setEndpoints = (data: Record<string, string>) => {\r\n  endpoints = { ...endpoints, ...data };\r\n};\r\n\r\ntype Endpoint = Record<string, string>;\r\nexport { endpoints, type Endpoint, setEndpoints };\r\n","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\r\n\r\ntype ApiMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\r\ntype ApiConverter<TProps, TConverter> = (props: TProps) => TConverter;\r\n\r\n// Crea un'istanza di Axios\r\nconst apiClient = axios.create();\r\nconst url = '';\r\n\r\n// Aggiungi un interceptor di richiesta\r\napiClient.interceptors.request.use(\r\n  async (config) => {\r\n    config.baseURL = url;\r\n    return config;\r\n  },\r\n  async (error) => {\r\n    return await Promise.reject(error);\r\n  },\r\n);\r\n\r\napiClient.interceptors.response.use(\r\n  (response) => {\r\n    return response;\r\n  },\r\n  (error) => {\r\n    if (error.response) {\r\n      throw new Error(\r\n        error.response.data?.message ||\r\n          error.response.data?.error ||\r\n          `Error ${error.response.status}`,\r\n      );\r\n    } else if (error.request) {\r\n      throw new Error(\r\n        'No response from server - request timeout or network issue',\r\n      );\r\n    } else {\r\n      throw new Error('Request configuration error');\r\n    }\r\n  },\r\n);\r\n\r\nconst apiRequest = async <TProps, TResponse, TConverter = TProps>(\r\n  url: string,\r\n  method: ApiMethod,\r\n  body?: TProps,\r\n  headers?: AxiosRequestConfig['headers'],\r\n  converter?: ApiConverter<TProps, TConverter>,\r\n): Promise<TResponse> => {\r\n  try {\r\n    const data = converter && body ? converter(body) : body;\r\n    const response: AxiosResponse<TResponse & { error?: string }> =\r\n      await apiClient({\r\n        url,\r\n        method,\r\n        data,\r\n        headers,\r\n      });\r\n\r\n    if (response.status >= 200 && response.status < 300) {\r\n      return response.data;\r\n    }\r\n\r\n    throw new Error(response.data?.error ?? 'Error');\r\n  } catch (error) {\r\n    console.error('API Request Error:', error);\r\n    if (error instanceof Error) {\r\n      throw error;\r\n    }\r\n    throw new Error('Unknown error occurred');\r\n  }\r\n};\r\n\r\nconst fetchRequest = async <TProps, TResponse, TConverter = TProps>(\r\n  url: string,\r\n  headers?: AxiosRequestConfig['headers'],\r\n): Promise<TResponse> => {\r\n  return apiRequest<TProps, TResponse, TConverter>(url, 'GET', undefined, headers);\r\n};\r\n\r\nexport { fetchRequest, apiRequest };\r\nexport type { ApiMethod, ApiConverter };\r\n","import {\r\n  useMutation,\r\n  useQueries,\r\n  useQuery,\r\n  UseQueryResult,\r\n  queryClient,\r\n} from \"@gaddario98/react-providers\";\r\nimport { endpoints } from \"./endpoint\";\r\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\r\nimport { apiRequest, fetchRequest } from \"./api\";\r\nimport {\r\n  QueryProps,\r\n  MultipleQueryResponse,\r\n  QueriesArray,\r\n  QueriesProps,\r\n  AllMutation,\r\n  MutationItem,\r\n  QueryItem,\r\n  ContextValue,\r\n  QueryConfigArray,\r\n} from \"./types\";\r\nimport { useNotification } from \"@gaddario98/react-notifications\";\r\nimport { useAuthValue } from \"@gaddario98/react-auth\";\r\n\r\nlet validateApi = () => {\r\n  return true;\r\n};\r\n\r\nexport const setValidateApi = (validate: () => boolean) => {\r\n  validateApi = validate;\r\n};\r\n\r\nexport const useQueryApi = <TGetProps, TGetResponse>(\r\n  props: Omit<QueryProps<string, TGetResponse>, \"keyToMap\">\r\n) => {\r\n  const {\r\n    enabled,\r\n    endpoint,\r\n    queryKey,\r\n    customQueryFn,\r\n    headers,\r\n    disableAuthControl,\r\n    onDataChanged,\r\n  } = props;\r\n  const auth = useAuthValue();\r\n  const base = useMemo(() => endpoints[endpoint[0]], [endpoint]);\r\n\r\n  const queryResult = useQuery<TGetResponse>({\r\n    queryKey,\r\n    queryFn: async () => {\r\n      const res = await (customQueryFn?.() ??\r\n        fetchRequest<TGetProps, TGetResponse>(\r\n          `${base ? base + \"/\" : \"\"}${endpoint?.[1] ?? \"\"}`,\r\n          {\r\n            Authorization: auth?.token ? `Bearer ${auth?.token ?? \"\"}` : \"\",\r\n            ...headers,\r\n          }\r\n        ));\r\n      onDataChanged?.(res);\r\n      return res;\r\n    },\r\n    enabled:\r\n      !!enabled && (disableAuthControl || (!!auth?.isLogged && validateApi())),\r\n    retry: 1,\r\n    retryDelay: 1000,\r\n  });\r\n\r\n  return queryResult;\r\n};\r\n\r\nexport const useMultipleQuery = <Q extends QueriesArray>(\r\n  settings: QueryProps<Q[number][\"key\"], Q[number][\"response\"]>[] = []\r\n) => {\r\n  const auth = useAuthValue();\r\n\r\n  const results = useQueries({\r\n    queries: settings.map(\r\n      ({\r\n        enabled,\r\n        endpoint: endpointArr,\r\n        queryKey,\r\n        customQueryFn,\r\n        headers,\r\n        disableAuthControl,\r\n        onDataChanged,\r\n      }) => {\r\n        const [key, path] = endpointArr;\r\n        const baseUrl = endpoints[key];\r\n        const fullEndpoint = [baseUrl, path].filter(Boolean).join(\"/\");\r\n        return {\r\n          queryKey,\r\n          queryFn: async () => {\r\n            const res = await (customQueryFn?.() ??\r\n              fetchRequest<Q[number][\"props\"], Q[number][\"response\"]>(\r\n                fullEndpoint,\r\n                {\r\n                  Authorization: auth?.token ? `Bearer ${auth.token}` : \"\",\r\n                  ...headers,\r\n                }\r\n              ));\r\n            onDataChanged?.(res);\r\n            return res;\r\n          },\r\n          enabled:\r\n            !!enabled &&\r\n            (disableAuthControl || (!!auth?.isLogged && validateApi())),\r\n          retry: 1,\r\n          retryDelay: 1000,\r\n        } as Parameters<typeof useQuery>[0];\r\n      }\r\n    ),\r\n    combine: useCallback(\r\n      (results: UseQueryResult<Q[number][\"response\"], Error>[]) =>\r\n        results.reduce<MultipleQueryResponse<Q>>((prev, result, index) => {\r\n          return {\r\n            ...prev,\r\n            [settings[index].keyToMap]: {\r\n              data: result.data as Q[number][\"response\"],\r\n              isLoadingMapped:\r\n                !settings[index]?.disableLoading && result.isLoading,\r\n              isLoading: result.isLoading,\r\n              isFetching: result.isFetching,\r\n              isPending: result.isPending,\r\n            },\r\n          };\r\n        }, {} as MultipleQueryResponse<Q>),\r\n      [settings]\r\n    ),\r\n  });\r\n  /*\r\n  const prevOnDataChangedMappedRef = useRef<\r\n    Array<{\r\n      keyToMap: Q[number][\"key\"];\r\n      onDataChanged: ((data: Q[number][\"response\"]) => void) | undefined;\r\n    }>\r\n  >([]);\r\n\r\n  const onDataChangedMapped = useMemo(() => {\r\n    const data = settings.map(({ keyToMap, onDataChanged }) => {\r\n      return {\r\n        keyToMap,\r\n        onDataChanged,\r\n      };\r\n    });\r\n    if (\r\n      JSON.stringify(prevOnDataChangedMappedRef.current) !==\r\n      JSON.stringify(data)\r\n    ) {\r\n      prevOnDataChangedMappedRef.current = data;\r\n    }\r\n      prevOnDataChangedMappedRef.current = data;\r\n    return prevOnDataChangedMappedRef.current;\r\n  }, [settings]);\r\n\r\n  onDataChangedMapped.forEach((data) => {\r\n    const { onDataChanged, keyToMap } = data;\r\n    const result = useMemo(() => results[keyToMap], [results, keyToMap]);\r\n\r\n    useEffect(() => {\r\n      if (\r\n        onDataChanged &&\r\n        result.data !== undefined &&\r\n        !result.isLoading &&\r\n        !result.isFetching &&\r\n        !result.isPending\r\n      ) {\r\n        onDataChanged(result.data);\r\n      }\r\n    }, [\r\n      result.data,\r\n      onDataChanged,\r\n      result.isLoading,\r\n      result.isFetching,\r\n      result.isPending,\r\n    ]);\r\n  });*/\r\n\r\n  return results;\r\n};\r\n\r\nexport const useMutateApi = <TProps, TResponse, TConverter = null>({\r\n  endpoint,\r\n  queryKeyToInvalidate,\r\n  converter,\r\n  customRequest,\r\n  headers,\r\n  isTest,\r\n  mutateOptions,\r\n  method,\r\n  notification,\r\n}: QueriesProps<TProps, TResponse, TConverter>) => {\r\n  const { showNotification } = useNotification();\r\n  const auth = useAuthValue();\r\n\r\n  return useMutation<TResponse, Error, TProps>({\r\n    mutationFn: async (data) => {\r\n      if (isTest) {\r\n        return \"test\" as TResponse;\r\n      }\r\n      if (auth?.isLogged && !validateApi())\r\n        throw new Error(\"Utente non autenticato\");\r\n      return (customRequest ?? apiRequest<TProps, TResponse, TConverter>)(\r\n        `${endpoints[endpoint[0]]}/${endpoint?.[1] ?? \"\"}`,\r\n        method,\r\n        data,\r\n        {\r\n          Authorization: auth?.token ? `Bearer ${auth?.token ?? \"\"}` : \"\",\r\n          ...headers,\r\n        },\r\n        converter\r\n      );\r\n    },\r\n    ...(mutateOptions || {}),\r\n    onSuccess: (data: TResponse, variables: TProps, context: unknown) => {\r\n      mutateOptions?.onSuccess?.(data, variables, context);\r\n      queryKeyToInvalidate?.forEach((queryKey) => {\r\n        queryClient.invalidateQueries({ queryKey: [queryKey], exact: false });\r\n      });\r\n      const notificationProps =\r\n        typeof notification?.success === \"function\"\r\n          ? notification.success(data)\r\n          : notification?.success;\r\n      if (notificationProps?.message) {\r\n        showNotification({\r\n          message: notificationProps.message,\r\n          type: notificationProps?.type ?? \"success\",\r\n          ...notificationProps,\r\n        });\r\n      }\r\n    },\r\n    onError(error: Error, variables: TProps, context: unknown) {\r\n      mutateOptions?.onError?.(error, variables, context);\r\n      if (error?.message) {\r\n        const notificationProps =\r\n          typeof notification?.error === \"function\"\r\n            ? notification.error(error?.message ?? \"Error\")\r\n            : notification?.error;\r\n        showNotification({\r\n          message:\r\n            notificationProps?.message ??\r\n            error?.message ??\r\n            \"An unexpected error occurred\",\r\n          type: notificationProps?.type ?? \"error\",\r\n          ...notificationProps,\r\n        });\r\n      }\r\n    },\r\n  });\r\n};\r\n\r\nexport const useApi = <Q extends QueriesArray>(\r\n  configs: QueryConfigArray<Q>\r\n): ContextValue<Q> => {\r\n  // Filter and prepare query configurations\r\n  const queryItems = useMemo(\r\n    () => configs?.filter((q): q is QueryItem<Q> => q.type === \"query\"),\r\n    [configs]\r\n  );\r\n\r\n  const queryConfigs = useMemo(() => {\r\n    return queryItems\r\n      .map((item) =>\r\n        item.queryConfig ? { ...item.queryConfig, keyToMap: item.key } : null\r\n      )\r\n      .filter(Boolean) as QueryProps<Q[number][\"key\"], Q[number][\"response\"]>[];\r\n  }, [queryItems]);\r\n\r\n  // Execute all queries with a single hook\r\n  const queriesResult = useMultipleQuery<Q>(queryConfigs);\r\n\r\n  // Filter mutation configs\r\n  const mutationItems = useMemo(\r\n    () =>\r\n      configs?.filter(\r\n        (q): q is MutationItem<Q> => q.type === \"mutation\" && !!q.mutationConfig\r\n      ),\r\n    [configs]\r\n  );\r\n\r\n  // Define a default config for empty slots\r\n  const defaultMutationConfig = {\r\n    endpoint: [\"default\"],\r\n    method: \"POST\" as const,\r\n  };\r\n\r\n  // Create mutation hooks - each must be declared separately to follow React's rules of hooks\r\n  const mutation1 = useMutateApi(\r\n    mutationItems[0]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation2 = useMutateApi(\r\n    mutationItems[1]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation3 = useMutateApi(\r\n    mutationItems[2]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation4 = useMutateApi(\r\n    mutationItems[3]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation5 = useMutateApi(\r\n    mutationItems[4]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation6 = useMutateApi(\r\n    mutationItems[5]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation7 = useMutateApi(\r\n    mutationItems[6]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation8 = useMutateApi(\r\n    mutationItems[7]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation9 = useMutateApi(\r\n    mutationItems[8]?.mutationConfig || defaultMutationConfig\r\n  );\r\n  const mutation10 = useMutateApi(\r\n    mutationItems[9]?.mutationConfig || defaultMutationConfig\r\n  );\r\n\r\n  // Store all mutation instances in an array for mapping\r\n  const mutationInstances = useMemo(\r\n    () => [\r\n      mutation1,\r\n      mutation2,\r\n      mutation3,\r\n      mutation4,\r\n      mutation5,\r\n      mutation6,\r\n      mutation7,\r\n      mutation8,\r\n      mutation9,\r\n      mutation10,\r\n    ],\r\n    [\r\n      mutation1,\r\n      mutation10,\r\n      mutation2,\r\n      mutation3,\r\n      mutation4,\r\n      mutation5,\r\n      mutation6,\r\n      mutation7,\r\n      mutation8,\r\n      mutation9,\r\n    ]\r\n  );\r\n\r\n  // Map mutations to their keys\r\n  const allMutation = useMemo(() => {\r\n    const result = {} as AllMutation<Q>;\r\n\r\n    mutationItems.forEach((item, index) => {\r\n      if (index < mutationInstances.length) {\r\n        result[item.key as keyof AllMutation<Q>] = mutationInstances[index];\r\n      } else {\r\n        console.warn(\r\n          `Maximum number of mutations (${mutationInstances.length}) exceeded. Mutation \"${item.key}\" was not created.`\r\n        );\r\n      }\r\n    });\r\n\r\n    return result;\r\n  }, [mutationItems, mutationInstances]);\r\n\r\n  // Return both queries and mutations\r\n  return { allMutation, allQuery: queriesResult };\r\n};\r\n"],"names":[],"mappings":"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"}