UNPKG

7.21 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = exports.createFeedback = void 0;
9
10var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
12var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
14var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
16var _err = _interopRequireDefault(require("@lskjs/err"));
17
18var _omitNull = _interopRequireDefault(require("@lskjs/utils/omitNull"));
19
20var _getProxyLabels = require("./getProxyLabels");
21
22function 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; }
23
24function _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) { (0, _defineProperty2["default"])(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; }
25
26// import { getErrCode } from './isNetworkError';
27var getTimeout = function getTimeout(time) {
28 return time ? "".concat(time, "ms") : '???ms';
29};
30
31var isLowerEqual = function isLowerEqual() {
32 var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
33 var str2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
34 return str && str.toLowerCase() === str2;
35};
36
37var logKeys = function logKeys() {
38 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
39 args[_key] = arguments[_key];
40 }
41
42 return args.map(function (_ref) {
43 var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
44 p1 = _ref2[0],
45 p2 = _ref2[1];
46
47 return p2 ? "[".concat(p1, "] ").concat(p2).trim() : null;
48 }).filter(Boolean);
49};
50
51var createFeedback = function createFeedback() {
52 var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
53
54 var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
55 log = _ref3.log,
56 stats = _ref3.stats,
57 tx = _ref3.tx,
58 apm = _ref3.apm,
59 labels = _ref3.labels;
60
61 // console.log('[createFeedback]', { log: !!log, stats: !!stats, apm: !!apm });
62 var _props$options = props.options,
63 options = _props$options === void 0 ? {} : _props$options,
64 proxy = props.proxy,
65 tries = props.tries,
66 maxTries = props.maxTries,
67 _props$startedAt = props.startedAt,
68 startedAt = _props$startedAt === void 0 ? Date.now() : _props$startedAt,
69 _props$logPrefix = props.logPrefix,
70 logPrefix = _props$logPrefix === void 0 ? [] : _props$logPrefix;
71 var driver = options.driver,
72 timeout = options.timeout,
73 method = options.method,
74 url = options.url;
75 var prefix = [].concat((0, _toConsumableArray2["default"])(logPrefix), [['R', tries > 1 ? "".concat(tries, "/").concat(maxTries) : null], ['method', !isLowerEqual(method, 'get') ? method : null], ['url', url]]);
76 var trace = [['driver', driver !== 'axios' ? driver : null], ['timeout', timeout]];
77 var postfix = [['proxy', [proxy ? proxy.provider : null, proxy ? proxy.getUri() : 'localhost'].filter(Boolean).join(' ')]];
78 if (!tx && apm) tx = apm.startTransaction('request');
79 var customContext = {
80 tries: tries,
81 maxTries: maxTries,
82 method: method,
83 url: url
84 };
85
86 if (tx) {
87 tx.setCustomContext(customContext);
88 var proxyLabels = (0, _getProxyLabels.getProxyLabels)(proxy);
89 tx.addLabels(_objectSpread(_objectSpread({}, labels || {}), proxyLabels));
90 }
91
92 if (log) log.trace.apply(log, (0, _toConsumableArray2["default"])(logKeys.apply(void 0, (0, _toConsumableArray2["default"])(prefix).concat(trace, postfix))));
93 return {
94 success: function success() {
95 var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
96 size = _ref4.size;
97
98 try {
99 var time = Date.now() - startedAt;
100 if (proxy && proxy.feedback) proxy.feedback({
101 status: 'success',
102 time: time,
103 size: size
104 });
105 if (log) log.info.apply(log, ['[success]'].concat((0, _toConsumableArray2["default"])(logKeys.apply(void 0, (0, _toConsumableArray2["default"])(prefix).concat([['time', getTimeout(time)]], postfix)))));
106 if (stats) stats.trigger({
107 event: 'success',
108 startedAt: startedAt
109 });
110
111 if (tx) {
112 tx.addLabels((0, _omitNull["default"])({
113 time: time,
114 size: size
115 }));
116 tx.result = 'success';
117 tx.end();
118 }
119 } catch (err) {
120 // eslint-disable-next-line no-console
121 console.log('[createFeedback] success.err ', err);
122 }
123 },
124 error: function error(initErr) {
125 var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
126 fatal = _ref5.fatal,
127 size = _ref5.size;
128
129 try {
130 var time = Date.now() - startedAt;
131
132 var errCode = _err["default"].getCode(initErr);
133
134 var subcode = initErr === null || initErr === void 0 ? void 0 : initErr.subcode;
135
136 var message = _err["default"].getMessage(initErr);
137
138 if (proxy && proxy.feedback) {
139 proxy.feedback({
140 status: 'error',
141 err: errCode,
142 time: time,
143 fatal: fatal,
144 size: size
145 });
146 }
147
148 if (log) log.error.apply(log, (0, _toConsumableArray2["default"])(logKeys.apply(void 0, (0, _toConsumableArray2["default"])(prefix).concat([['err', errCode], ['time', getTimeout(time)]], postfix))));
149 if (stats) stats.trigger({
150 event: 'error',
151 startedAt: startedAt
152 });
153 if (apm) apm.captureError({
154 code: errCode,
155 subcode: subcode,
156 message: message,
157 data: initErr.data
158 }); // TODO: подумать про await§
159
160 if (tx) {
161 tx.setCustomContext(_objectSpread(_objectSpread({}, customContext), {}, {
162 errCode: errCode,
163 errSubcode: subcode,
164 errMessage: message
165 }));
166 tx.addLabels((0, _omitNull["default"])({
167 time: time,
168 size: size
169 }));
170 tx.result = errCode;
171 tx.end();
172 }
173 } catch (err3) {
174 // eslint-disable-next-line no-console
175 console.log('[createFeedback] error.err ', err3);
176 }
177 }
178 };
179};
180
181exports.createFeedback = createFeedback;
182var _default = createFeedback;
183exports["default"] = _default;
184//# sourceMappingURL=createFeedback.js.map
\No newline at end of file