t-comm
Version:
专业、稳定、纯粹的工具库
89 lines (82 loc) • 4.23 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
var _createClass = require('@babel/runtime/helpers/createClass');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
// const DEFAULT_TRUNCATE_SIZE = 1000;
// function safeStringify(obj: unknown, truncateSize: number): string {
// let s: string;
// try {
// s = JSON.stringify(obj);
// } catch {
// s = String(obj);
// }
// if (s === undefined) s = '';
// if (truncateSize > 0 && s.length > truncateSize) {
// s = `${s.slice(0, truncateSize)}...(truncated, total ${s.length})`;
// }
// return s;
// }
var AegisReportInterceptor = /*#__PURE__*/function () {
function AegisReportInterceptor(options) {
_classCallCheck__default["default"](this, AegisReportInterceptor);
this.options = options;
}
return _createClass__default["default"](AegisReportInterceptor, [{
key: "interceptor",
value: function interceptor(param) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
var report = this.options.report;
if (typeof report !== 'function') {
return [false, param];
}
// const truncateSize = this.options.truncateSize ?? DEFAULT_TRUNCATE_SIZE;
var startTime = (_a = param.request) === null || _a === void 0 ? void 0 : _a.__aegisStartTime;
var duration = typeof startTime === 'number' ? Date.now() - startTime : 0;
// 响应 header:getHeader 是单 key 取,本拦截器全量导出要靠 IRawResponse 内部
// 持有的 header 引用。但 IRawResponse 没暴露 header,只能从 getHeader 一个个试
// —— 业务可以自己实现更全的 header 抓取
var headerObj = {};
// 常见 header(与 doRequest 里 makeCaseInsensitiveGetter 构造的 key 对齐)
var commonHeaders = ['content-type', 'content-length', 'set-cookie', 'logininfo', 'server', 'date', 'x-request-id', 'x-trace-id', 'x-tip-ret'];
for (var _i = 0, _commonHeaders = commonHeaders; _i < _commonHeaders.length; _i++) {
var k = _commonHeaders[_i];
try {
var v = (_c = (_b = param.response) === null || _b === void 0 ? void 0 : _b.getHeader) === null || _c === void 0 ? void 0 : _c.call(_b, k);
if (v !== undefined && v !== null) {
headerObj[k] = String(v);
}
} catch (_q) {
// 单个 header 读取失败不影响其它
}
}
var r = (_e = (_d = param.response) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.r;
var retNum = typeof r === 'number' ? r : r != null ? Number(r) : null;
var msg = (_g = (_f = param.response) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.msg;
var info = {
url: ((_h = param.request) === null || _h === void 0 ? void 0 : _h.url) || '',
method: (((_j = param.request) === null || _j === void 0 ? void 0 : _j.method) || 'POST').toString().toUpperCase(),
status: (_l = (_k = param.response) === null || _k === void 0 ? void 0 : _k.status) !== null && _l !== void 0 ? _l : 0,
ret: Number.isFinite(retNum) ? retNum : null,
requestBody: (_m = param.request) === null || _m === void 0 ? void 0 : _m.reqData,
responseData: (_o = param.response) === null || _o === void 0 ? void 0 : _o.data,
responseHeader: headerObj,
duration: duration,
ok: !!((_p = param.response) === null || _p === void 0 ? void 0 : _p.ok),
isAbort: false,
msg: msg ? String(msg) : undefined
};
try {
report(info);
} catch (e) {
// 上报回调内部异常吃掉,绝不影响主响应链
// eslint-disable-next-line no-console
console.warn('[pmd-api-cocos/network] aegisReport threw:', e);
}
return [false, param];
}
}]);
}();
exports.AegisReportInterceptor = AegisReportInterceptor;