axios-apicloud-adapter
Advanced tools
Comparing version 0.1.1 to 0.1.2
@@ -14,3 +14,3 @@ "use strict"; | ||
var _http = _interopRequireDefault(require("axios/lib/adapters/http")); | ||
var _xhr = _interopRequireDefault(require("axios/lib/adapters/xhr")); | ||
@@ -35,2 +35,6 @@ var _buildURL = _interopRequireDefault(require("axios/lib/helpers/buildURL")); | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | ||
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | ||
@@ -40,61 +44,187 @@ | ||
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | ||
function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") { if (Symbol.asyncIterator) { method = iterable[Symbol.asyncIterator]; if (method != null) return method.call(iterable); } if (Symbol.iterator) { method = iterable[Symbol.iterator]; if (method != null) return method.call(iterable); } } throw new TypeError("Object is not async iterable"); } | ||
var transformConfig = function transformConfig(config) { | ||
var fullPath = (0, _buildFullPath["default"])(config.baseURL, config.url); | ||
var url = (0, _buildURL["default"])(fullPath, config.params, config.paramsSerializer); | ||
var params = { | ||
url: url, | ||
method: config.method, | ||
data: {}, | ||
encode: config.encode, | ||
tag: config.cancelToken, | ||
cache: config.cache, | ||
timeout: config.timeout, | ||
dataType: config.responseType, | ||
charset: config.responseEncoding, | ||
headers: config.headers, | ||
report: config.report, | ||
certificate: config.certificate, | ||
safeMode: config.safeMode, | ||
proxy: config.proxy, | ||
returnAll: true | ||
}; | ||
var writeFile = function writeFile(_ref) { | ||
var path = _ref.path, | ||
data = _ref.data; | ||
return new Promise(function (resolve, reject) { | ||
window.api.writeFile({ | ||
path: path, | ||
data: data | ||
}, function (ret, err) { | ||
if (ret.status) { | ||
resolve(path); | ||
} else { | ||
reject(err); | ||
} | ||
}); | ||
}); | ||
}; | ||
if (_utils["default"].isFormData(config.data)) { | ||
params.data.values = {}; | ||
params.data.files = {}; | ||
var file2Base64 = function file2Base64(file) { | ||
return new Promise(function (resolve) { | ||
var reader = new FileReader(); | ||
reader.readAsDataURL(file); | ||
var _iterator = _createForOfIteratorHelper(config.data), | ||
_step; | ||
reader.onload = function () { | ||
resolve(reader.result); | ||
}; | ||
}); | ||
}; | ||
try { | ||
for (_iterator.s(); !(_step = _iterator.n()).done;) { | ||
var data = _step.value; | ||
var transformConfig = /*#__PURE__*/function () { | ||
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(config) { | ||
var fullPath, url, params, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, data, _data, key, value, base64Data, path; | ||
var _data = _slicedToArray(data, 2), | ||
key = _data[0], | ||
value = _data[1]; | ||
return regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
fullPath = (0, _buildFullPath["default"])(config.baseURL, config.url); | ||
url = (0, _buildURL["default"])(fullPath, config.params, config.paramsSerializer); | ||
params = { | ||
url: url, | ||
method: config.method, | ||
data: {}, | ||
encode: config.encode, | ||
tag: config.cancelToken, | ||
cache: config.cache, | ||
timeout: config.timeout, | ||
dataType: config.responseType || 'text', | ||
charset: config.responseEncoding, | ||
headers: config.headers, | ||
report: config.report, | ||
certificate: config.certificate, | ||
safeMode: config.safeMode, | ||
proxy: config.proxy, | ||
returnAll: true | ||
}; | ||
if (_utils["default"].isFile(value)) { | ||
params.data.files[key] = value; | ||
} else { | ||
params.data.values[key] = value; | ||
if (!_utils["default"].isFormData(config.data)) { | ||
_context.next = 52; | ||
break; | ||
} | ||
params.data.values = {}; | ||
params.data.files = {}; | ||
_iteratorNormalCompletion = true; | ||
_didIteratorError = false; | ||
_context.prev = 8; | ||
_iterator = _asyncIterator(config.data); | ||
case 10: | ||
_context.next = 12; | ||
return _iterator.next(); | ||
case 12: | ||
_step = _context.sent; | ||
_iteratorNormalCompletion = _step.done; | ||
_context.next = 16; | ||
return _step.value; | ||
case 16: | ||
_value = _context.sent; | ||
if (_iteratorNormalCompletion) { | ||
_context.next = 34; | ||
break; | ||
} | ||
data = _value; | ||
_data = _slicedToArray(data, 2), key = _data[0], value = _data[1]; | ||
if (!_utils["default"].isFile(value)) { | ||
_context.next = 30; | ||
break; | ||
} | ||
_context.next = 23; | ||
return file2Base64(value); | ||
case 23: | ||
base64Data = _context.sent; | ||
_context.next = 26; | ||
return writeFile({ | ||
path: "cache://".concat(value.name), | ||
data: base64Data | ||
}); | ||
case 26: | ||
path = _context.sent; | ||
params.data.files[key] = path; | ||
_context.next = 31; | ||
break; | ||
case 30: | ||
params.data.values[key] = value; | ||
case 31: | ||
_iteratorNormalCompletion = true; | ||
_context.next = 10; | ||
break; | ||
case 34: | ||
_context.next = 40; | ||
break; | ||
case 36: | ||
_context.prev = 36; | ||
_context.t0 = _context["catch"](8); | ||
_didIteratorError = true; | ||
_iteratorError = _context.t0; | ||
case 40: | ||
_context.prev = 40; | ||
_context.prev = 41; | ||
if (!(!_iteratorNormalCompletion && _iterator["return"] != null)) { | ||
_context.next = 45; | ||
break; | ||
} | ||
_context.next = 45; | ||
return _iterator["return"](); | ||
case 45: | ||
_context.prev = 45; | ||
if (!_didIteratorError) { | ||
_context.next = 48; | ||
break; | ||
} | ||
throw _iteratorError; | ||
case 48: | ||
return _context.finish(45); | ||
case 49: | ||
return _context.finish(40); | ||
case 50: | ||
_context.next = 53; | ||
break; | ||
case 52: | ||
params.data.body = config.data; | ||
case 53: | ||
return _context.abrupt("return", params); | ||
case 54: | ||
case "end": | ||
return _context.stop(); | ||
} | ||
} | ||
} catch (err) { | ||
_iterator.e(err); | ||
} finally { | ||
_iterator.f(); | ||
} | ||
} else { | ||
params.data.body = config.data; | ||
} | ||
}, _callee, null, [[8, 36, 40, 50], [41,, 45, 49]]); | ||
})); | ||
return params; | ||
}; | ||
return function transformConfig(_x) { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
}(); | ||
@@ -143,26 +273,52 @@ var transformResponse = function transformResponse(rst, config) { | ||
return (0, _axios["default"])(_objectSpread(_objectSpread({}, config), {}, { | ||
adapter: _http["default"] | ||
adapter: _xhr["default"] | ||
})); | ||
} | ||
return new Promise(function (resolve, reject) { | ||
var ajaxParams = transformConfig(config); | ||
window.api.ajax(ajaxParams, function (ret, err) { | ||
if (err) transformError(err, reject, config); | ||
var response = transformResponse(ret, config); | ||
(0, _settle["default"])(resolve, reject, response); | ||
}); | ||
return new Promise( /*#__PURE__*/function () { | ||
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(resolve, reject) { | ||
var ajaxParams; | ||
return regeneratorRuntime.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
_context2.next = 2; | ||
return transformConfig(config); | ||
if (config.cancelToken) { | ||
// Handle cancellation | ||
config.cancelToken.promise.then(function (cancel) { | ||
window.api.cancelAjax({ | ||
tag: config.cancelToken | ||
}); | ||
reject(cancel); | ||
}); | ||
} | ||
}); | ||
case 2: | ||
ajaxParams = _context2.sent; | ||
window.api.ajax(ajaxParams, function (ret, err) { | ||
if (err) { | ||
transformError(err, reject, config); | ||
return; | ||
} | ||
var response = transformResponse(ret, config); | ||
(0, _settle["default"])(resolve, reject, response); | ||
}); | ||
if (config.cancelToken) { | ||
// Handle cancellation | ||
config.cancelToken.promise.then(function (cancel) { | ||
window.api.cancelAjax({ | ||
tag: config.cancelToken | ||
}); | ||
reject(cancel); | ||
}); | ||
} | ||
case 5: | ||
case "end": | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
return function (_x2, _x3) { | ||
return _ref3.apply(this, arguments); | ||
}; | ||
}()); | ||
}; | ||
exports["default"] = _default; |
{ | ||
"name": "axios-apicloud-adapter", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "axios 的 apicloud 适配器,以便于在 app 中使用原生网络请求库", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -22,2 +22,3 @@ # axios-apicloud-adapter | ||
* 通过 `window.api` 检测运行环境,自动切换适配器 | ||
* 文件上传通过 Base64 编码文件后实现,需后端配合做相关处理 | ||
@@ -24,0 +25,0 @@ ## 参考 |
import axios from 'axios' | ||
import utils from 'axios/lib/utils' | ||
import settle from 'axios/lib/core/settle' | ||
import httpAdapter from 'axios/lib/adapters/http' | ||
import xhrAdapter from 'axios/lib/adapters/xhr' | ||
import buildURL from 'axios/lib/helpers/buildURL' | ||
@@ -9,3 +9,25 @@ import buildFullPath from 'axios/lib/core/buildFullPath' | ||
const transformConfig = (config) => { | ||
const writeFile = ({ path, data }) => { | ||
return new Promise((resolve, reject) => { | ||
window.api.writeFile({ path, data }, (ret, err) => { | ||
if (ret.status) { | ||
resolve(path) | ||
} else { | ||
reject(err) | ||
} | ||
}) | ||
}) | ||
} | ||
const file2Base64 = (file) => { | ||
return new Promise((resolve) => { | ||
const reader = new FileReader() | ||
reader.readAsDataURL(file) | ||
reader.onload = () => { | ||
resolve(reader.result) | ||
} | ||
}) | ||
} | ||
const transformConfig = async (config) => { | ||
const fullPath = buildFullPath(config.baseURL, config.url) | ||
@@ -22,3 +44,3 @@ const url = buildURL(fullPath, config.params, config.paramsSerializer) | ||
timeout: config.timeout, | ||
dataType: config.responseType, | ||
dataType: config.responseType || 'text', | ||
charset: config.responseEncoding, | ||
@@ -36,6 +58,8 @@ headers: config.headers, | ||
params.data.files = {} | ||
for (const data of config.data) { | ||
for await (const data of config.data) { | ||
const [key, value] = data | ||
if (utils.isFile(value)) { | ||
params.data.files[key] = value | ||
const base64Data = await file2Base64(value) | ||
const path = await writeFile({ path: `cache://${value.name}`, data: base64Data }) | ||
params.data.files[key] = path | ||
} else { | ||
@@ -92,8 +116,11 @@ params.data.values[key] = value | ||
if (!window.api) { | ||
return axios({ ...config, adapter: httpAdapter }) | ||
return axios({ ...config, adapter: xhrAdapter }) | ||
} | ||
return new Promise((resolve, reject) => { | ||
const ajaxParams = transformConfig(config) | ||
return new Promise(async (resolve, reject) => { | ||
const ajaxParams = await transformConfig(config) | ||
window.api.ajax(ajaxParams, (ret, err) => { | ||
if (err) transformError(err, reject, config) | ||
if (err) { | ||
transformError(err, reject, config) | ||
return | ||
} | ||
const response = transformResponse(ret, config) | ||
@@ -100,0 +127,0 @@ settle(resolve, reject, response) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
17232
381
27
0