@alova/adapter-axios
Version:
axios adapter for alova.js
122 lines (119 loc) • 3.99 kB
JavaScript
/**
* @alova/adapter-axios 2.0.20 (https://alova.js.org)
* Document https://alova.js.org
* Copyright 2026 Scott Hu. All Rights Reserved
* Licensed under MIT (git://github.com/alovajs/alova/blob/main/LICENSE)
*/
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
//#region \0rolldown/runtime.js
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
key = keys[i];
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: ((k) => from[k]).bind(null, key),
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
//#endregion
let _alova_shared = require("@alova/shared");
let axios = require("axios");
axios = __toESM(axios, 1);
//#region src/mockResponse.ts
const mockResponseHandler = ({ status, statusText, body }, _, currentMethod) => {
const responseHeaders = {};
const { config } = currentMethod;
const axiosConfig = {
baseURL: currentMethod.baseURL,
url: currentMethod.url,
data: currentMethod.data,
...config,
headers: new axios.AxiosHeaders(config.headers)
};
const axiosResponse = {
data: body,
status,
statusText,
headers: responseHeaders,
config: axiosConfig
};
if (status >= 400) throw new axios.AxiosError(statusText, "ERR_BAD_REQUEST", axiosConfig, _alova_shared.undefinedValue, axiosResponse);
return {
response: axiosResponse,
headers: responseHeaders
};
};
const mockErrorHandler = (error, currentMethod) => {
const { config } = currentMethod;
return new axios.AxiosError(error.message, "ERR_NETWORK", {
baseURL: currentMethod.baseURL,
url: currentMethod.url,
data: currentMethod.data,
...config,
headers: new axios.AxiosHeaders(config.headers)
});
};
var mockResponse_default = {
onMockResponse: mockResponseHandler,
onMockError: mockErrorHandler
};
//#endregion
//#region src/requestAdapter.ts
/**
* axios request adapter
*/
function requestAdapter(options = {}) {
const adaptedAxiosInstance = options.axios || axios.default;
const adapter = (_, method) => {
let downloadHandler = _alova_shared.noop;
let uploadHandler = _alova_shared.noop;
const { config } = method;
const controller = new AbortController();
const { baseURL, timeout } = adaptedAxiosInstance.defaults;
const responsePromise = adaptedAxiosInstance({
url: method.url,
method: method.type,
baseURL: baseURL || method.baseURL,
timeout: timeout || method.config.timeout,
data: method.data,
signal: controller.signal,
onUploadProgress: process.env.NODE_ENV !== "test" ? (event) => {
uploadHandler(event.loaded, event.total || 1);
} : _alova_shared.undefinedValue,
onDownloadProgress: (event) => {
downloadHandler(event.loaded, event.total || 1);
},
...config
});
return {
response: () => responsePromise,
headers: () => responsePromise.then((res) => res?.headers || (0, _alova_shared.newInstance)(axios.AxiosHeaders)),
abort: () => {
controller.abort();
},
onDownload: (handler) => {
downloadHandler = handler;
},
onUpload: (handler) => {
uploadHandler = handler;
}
};
};
return adapter;
}
//#endregion
exports.axiosMockResponse = mockResponse_default;
exports.axiosRequestAdapter = requestAdapter;
module.exports.default = module.exports;
Object.defineProperty(module.exports, '__esModule', { value: true });