// resources/js/lib/axios.js
import axios from 'axios'

// Buat instance axios
const axiosInstance = axios.create({
  baseURL: '/api',
  withCredentials: true, // penting untuk Sanctum
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'Accept': 'application/json',
  },
})

// Global error handling
axiosInstance.interceptors.response.use(
  (response) => response,
  (error) => {
    return Promise.reject(error)
  }
)

// Wrapper API service
const API = {
  get: async (uri: string, params = {}) => {
    return await axiosInstance.get(uri, { params })
  },

  post: async (uri: string, data: any, options = {}) => {
    return await axiosInstance.post(uri, data, options)
  },

  put: async (uri: string, data: any, options = {}) => {
    return await axiosInstance.put(uri, data, options)
  },

  patch: async (uri: string, data: any, options = {}) => {
    return await axiosInstance.patch(uri, data, options)
  },

  delete: async (uri: string, data = {}, options = {}) => {
    return await axiosInstance.delete(uri, {
      data,
      ...options,
    })
  },
}

export default API
