UNPKG

sunmao-sdk

Version:

榫卯-开箱即用赋能-sdk

488 lines (399 loc) 20.1 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.handleAppParams = exports.getDicDetails = exports.urlGetParams = exports.postNew = exports.getNew = void 0; require("antd/es/message/style"); var _message2 = _interopRequireDefault(require("antd/es/message")); var _lodash = _interopRequireWildcard(require("lodash")); var _ = require(".."); var _qs = _interopRequireDefault(require("qs")); var commonUtils = _interopRequireWildcard(require("../utils/commonUtils")); var _api = require("./api"); var _excluded = ["ok", "status", "statusText"]; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 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 _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); }); }; } var codeMessage = { 200: "请求成功,但数据异常!", 201: "新建或修改数据成功。", 202: "一个请求已经进入后台排队(异步任务)。", 204: "删除数据成功。", 400: "发出的请求有错误,服务器没有进行新建或修改数据的操作。", 401: "用户没有权限(令牌、用户名、密码错误)。", 403: "用户得到授权,但是访问是被禁止的。", 404: "发出的请求针对的是不存在的记录,服务器没有进行操作。", 406: "请求的格式不可得。", 410: "请求的资源被永久删除,且不会再得到的。", 422: "当创建一个对象时,发生一个验证错误。", 500: "服务器发生错误,请检查服务器。", 502: "网关错误。", 503: "服务不可用,服务器暂时过载或维护。", 504: "网关超时。" }; var getMsgInfo = function getMsgInfo(obj) { if (!obj) return ""; for (var key in obj) { if (key.includes("Msg") || key.includes("msg") || key.includes("Message") || key.includes("message")) { return obj[key]; } } return; }; var getDataInfo = function getDataInfo(obj) { if (!obj) return true; return obj.data || obj.model || obj.result || obj.module; }; /** * 异常处理程序 */ var errorHandler = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(error, resType, okPath) { var json, ret, root, ok, status, statusText, other, statusMsg, data, res, dataType, _args = arguments; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: json = _args.length > 3 && _args[3] !== undefined ? _args[3] : true; if (!(!json && okPath && _lodash.default.get(error, okPath))) { _context.next = 8; break; } ret = {}; // 最外层数据 兼容处理 root = okPath.split(".")[0]; ret[root] = _lodash.default.get(error, root); ret.data = ret[root]; // 精确数据 ret.exactData = _lodash.default.get(error, okPath); return _context.abrupt("return", _objectSpread(_objectSpread({}, error), ret)); case 8: ok = error.ok, status = error.status, statusText = error.statusText, other = _objectWithoutProperties(error, _excluded); statusMsg = statusText || getMsgInfo(other); data = getDataInfo(other); // 符合平台返回 res 数据结构 status & ok if (!(status === 200 && ok || _lodash.default.get(error, _.CP.getCPInfo().postOk))) { _context.next = 24; break; } if (!json) { _context.next = 17; break; } _context.next = 15; return error.json(); case 15: res = _context.sent; return _context.abrupt("return", errorHandler(res, resType, okPath, false)); case 17: if (!resType) { _context.next = 22; break; } dataType = Object.prototype.toString.call(data); if (!(resType !== dataType)) { _context.next = 22; break; } console.error("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7ED3\u6784\u4E3A".concat(dataType, ",\u4E0E\u76EE\u6807").concat(resType, "\u4E0D\u5339\u914D\uFF01")); return _context.abrupt("return", { sdkErrorMsg: "\u670D\u52A1\u7AEF\u8FD4\u56DE\u7ED3\u6784\u4E3A".concat(dataType, ",\u4E0E\u76EE\u6807").concat(resType, "\u4E0D\u5339\u914D\uFF01") }); case 22: statusMsg && (0, _lodash.isString)(statusMsg) && _message2.default.info(statusMsg); return _context.abrupt("return", _objectSpread(_objectSpread({}, other), {}, { data: data })); case 24: return _context.abrupt("return", { sdkErrorMsg: statusMsg || codeMessage[status] || "数据异常!" }); case 25: case "end": return _context.stop(); } } }, _callee); })); return function errorHandler(_x, _x2, _x3) { return _ref.apply(this, arguments); }; }(); /** * @param {接口信息} url * @param {传参信息} params * @param {请求头信息} props * @param {接受结构} resType 用于业务逻辑,返回数据结构不匹配则为业务异常链路;传值推荐:'[object Object]'、'[object Array]' */ var postNew = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(url) { var params, okPath, props, resType, loading, res, _args2 = arguments; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: params = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {}; okPath = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : undefined; props = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : {}; resType = _args2.length > 4 && _args2[4] !== undefined ? _args2[4] : false; loading = _args2.length > 5 ? _args2[5] : undefined; params = getCommonParams(params); _context2.next = 8; return request(url, _objectSpread({ method: "POST", mode: "cors", body: JSON.stringify(params), headers: { "content-type": "application/json;charset=utf-8" } }, props), resType, okPath, loading); case 8: res = _context2.sent; return _context2.abrupt("return", res); case 10: case "end": return _context2.stop(); } } }, _callee2); })); return function postNew(_x4) { return _ref2.apply(this, arguments); }; }(); exports.postNew = postNew; var getCommonParams = function getCommonParams() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // // 网关转发处理 // if (commonUtils.isObj(params.params)) { // if (!(params.params.projectId && params.params.appId)) { // // 配置至cookie或许更合 // !params.params.projectId && // (params.params.projectId = CP?.info?.projectId); // !params.params.appId && (params.params.appId = CP?.info?.appId); // params.params.deleteSunmaoParams = true; // } // params.params.user = CP?.info?.user; // 配置至cookie或许更合 // params.params.env = CP?.info?.env; // } else { // if (!(params.projectId && params.appId)) { // // 配置至cookie或许更合 // !params.projectId && (params.projectId = CP?.info?.projectId); // !params.appId && (params.appId = CP?.info?.appId); // params.deleteSunmaoParams = true; // } // params.user = CP?.info?.user; // 配置至cookie或许更合适 // params.env = CP?.info?.env; // } // 网关转发处理 if (commonUtils.isObj(params.params)) { if (!params.params.sunmao_Params) { params.params.sunmao_Params = _.CP.getSunmaoParams(); } } else { if (!params.sunmao_Params) { params.sunmao_Params = _.CP.getSunmaoParams(); } } return params; }; var urlGetParams = function urlGetParams(url) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; params = getCommonParams(params); url += (url.indexOf("?") > -1 ? "&" : "?") + Object.keys(params).map(function (key) { var _params$key; var value = (_params$key = params[key]) === null || _params$key === void 0 ? void 0 : _params$key.toString(); if (!value) { return "".concat(key); } else if (key === "sunmao_Params") { return Object.keys(params.sunmao_Params).map(function (key) { var _params$sunmao_Params; var value = (_params$sunmao_Params = params.sunmao_Params[key]) === null || _params$sunmao_Params === void 0 ? void 0 : _params$sunmao_Params.toString(); if (!value) { return "sunmao_Params_".concat(key); } else { return "sunmao_Params_".concat(key, "=").concat(encodeURIComponent(value)); } }).join("&"); } else { return "".concat(key, "=").concat(encodeURIComponent(value)); } }).join("&"); return url; }; /** * @param {接口信息} url * @param {传参信息} params * @param {请求头信息} props * @param {接受结构} resType 用于业务逻辑,返回数据结构不匹配则为业务异常链路 * @param {string} okPath 自定义返回成功路径 */ exports.urlGetParams = urlGetParams; var getNew = /*#__PURE__*/function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(url) { var params, okPath, props, resType, res, _args3 = arguments; return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: params = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}; okPath = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : undefined; props = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {}; resType = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : false; url = urlGetParams(url, params); _context3.next = 7; return request(url, _objectSpread({ method: "GET", mode: "cors" }, props), resType, okPath); case 7: res = _context3.sent; return _context3.abrupt("return", res); case 9: case "end": return _context3.stop(); } } }, _callee3); })); return function getNew(_x5) { return _ref3.apply(this, arguments); }; }(); exports.getNew = getNew; var request = /*#__PURE__*/function () { var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(url, data, resType, okPath, loading) { return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: return _context5.abrupt("return", new Promise( /*#__PURE__*/function () { var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(resolve, reject) { var req; return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (!_.CP.getSunmaoParams().appId) { console.error("未配置应用的appId,通过CP.init进行配置!"); reject("未配置应用的appId,通过CP.init进行配置!"); } req = false; _context4.prev = 2; commonUtils.log("-----request-----:", data, url); _context4.next = 6; return fetch(url, data); case 6: req = _context4.sent; commonUtils.log("--response--first--:", req, url); _context4.next = 10; return errorHandler(req, resType, okPath); case 10: req = _context4.sent; commonUtils.log("--response--handler--:", req, url); try { if (loading) loading.destroy(); } catch (_unused) {} if (!req.sdkErrorMsg) { _context4.next = 17; break; } throw new Error(req.sdkErrorMsg); case 17: // 兼容处理 resolve(!okPath || "data" === okPath ? _objectSpread({ data: req.data }, req.data) : req); case 18: _context4.next = 25; break; case 20: _context4.prev = 20; _context4.t0 = _context4["catch"](2); try { if (loading) loading.destroy(); } catch (_unused2) {} if ((0, _api.isSkipLog)(url)) { _.CP.error("".concat((_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.message) || (_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.msg) || "请求失败!")); } else { commonUtils.log(url, "".concat((_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.message) || (_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.msg) || "请求失败!")); } reject(); case 25: case "end": return _context4.stop(); } } }, _callee4, null, [[2, 20]]); })); return function (_x11, _x12) { return _ref5.apply(this, arguments); }; }())); case 1: case "end": return _context5.stop(); } } }, _callee5); })); return function request(_x6, _x7, _x8, _x9, _x10) { return _ref4.apply(this, arguments); }; }(); // 获取字典信息 var getDicDetails = function getDicDetails(url) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var okPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; var props = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var resType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; return postNew(_api.redirectUrl, { url: urlGetParams(url, params), method: "GET", type: "http" }, okPath, props, resType); }; /** * 应用级 统一处理请求入参函数 * @param {入参} params * @param {入参过滤函数} filter */ exports.getDicDetails = getDicDetails; var handleAppParams = function handleAppParams(params, filter) { // 先分隔“,” 入参, // 再去除空 入参 var _params = commonUtils.filterParams(commonUtils.splitParams(_objectSpread(_objectSpread({}, _.CP.getCPInfo().extParams), params))); try { // 自定义过滤函数 return filter ? filter(_params) : _params; } catch (_unused3) { return _params; } }; exports.handleAppParams = handleAppParams;