import { createApp } from "vue";
import App from "./App.vue";
import ElementPlus from "element-plus";
import zhCn from "element-plus/es/locale/lang/zh-cn";
import "@/styles/index.scss";
import router from "./router";
import register from "@/components";
import { defaults, ApiParam } from "@midwayjs/hooks/request";
import axios from "axios";

const app = createApp(App);
app.use(ElementPlus, { size: "mini", locale: zhCn });
app.use(router);
register(app);
app.mount("#app");

// 前端自定义 SDK

// 添加响应拦截器
axios.interceptors.response.use(
  (response) => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  },
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    if (error.response) {
      return Promise.reject(error.response.data);
    }
    return Promise.reject(error);
  }
);
// 使用 Axios 作为 HTTP 请求的客户端
defaults.request = async (param: ApiParam) => {
  const resp = await axios(param);
  return resp.data;
};
