1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | Object.defineProperty(exports, "__esModule", {
|
5 | value: true
|
6 | });
|
7 | exports["default"] = exports.apmMock = exports.WorkerJob = void 0;
|
8 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
9 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
10 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
11 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
12 | var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
13 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
14 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
15 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
16 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
17 | var _env = require("@lskjs/env");
|
18 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
19 | var _module = _interopRequireDefault(require("@lskjs/module"));
|
20 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
21 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
22 | function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
23 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
24 |
|
25 |
|
26 | var apmMock = {
|
27 | startTransaction: function startTransaction() {
|
28 | return {
|
29 | end: function end() {
|
30 | return null;
|
31 | },
|
32 | startSpan: function startSpan() {
|
33 | return {
|
34 | end: function end() {
|
35 | return null;
|
36 | }
|
37 | };
|
38 | },
|
39 | addLabels: function addLabels() {
|
40 | return null;
|
41 | },
|
42 | setLabel: function setLabel() {
|
43 | return null;
|
44 | }
|
45 | };
|
46 | },
|
47 | captureError: function captureError() {
|
48 | return (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee() {
|
49 | return _regenerator["default"].wrap(function _callee$(_context) {
|
50 | while (1) switch (_context.prev = _context.next) {
|
51 | case 0:
|
52 | return _context.abrupt("return", null);
|
53 | case 1:
|
54 | case "end":
|
55 | return _context.stop();
|
56 | }
|
57 | }, _callee);
|
58 | }))();
|
59 | },
|
60 | setCustomContext: function setCustomContext() {
|
61 | return null;
|
62 | },
|
63 | setLabel: function setLabel() {
|
64 | return null;
|
65 | },
|
66 | addLabels: function addLabels() {
|
67 | return null;
|
68 | }
|
69 | };
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 | exports.apmMock = apmMock;
|
84 | var WorkerJob = function (_Module) {
|
85 | (0, _inherits2["default"])(WorkerJob, _Module);
|
86 | var _super = _createSuper(WorkerJob);
|
87 | function WorkerJob() {
|
88 | var _this;
|
89 | (0, _classCallCheck2["default"])(this, WorkerJob);
|
90 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
91 | args[_key] = arguments[_key];
|
92 | }
|
93 | _this = _super.call.apply(_super, [this].concat(args));
|
94 | _this.__worker = true;
|
95 | _this.redeliveredCount = _env.isDev ? null : 10;
|
96 | return _this;
|
97 | }
|
98 | (0, _createClass2["default"])(WorkerJob, [{
|
99 | key: "_run",
|
100 | value: function () {
|
101 | var _run2 = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee2() {
|
102 | return _regenerator["default"].wrap(function _callee2$(_context2) {
|
103 | while (1) switch (_context2.prev = _context2.next) {
|
104 | case 0:
|
105 | if (this.__lifecycle.runStart) {
|
106 | _context2.next = 2;
|
107 | break;
|
108 | }
|
109 | throw new _err["default"]('MODULE_INVALID_LIVECYCLE_RUN', 'use module.__run() instead module.run()', {
|
110 | data: {
|
111 | name: this.name
|
112 | }
|
113 | });
|
114 | case 2:
|
115 | _context2.next = 4;
|
116 | return this.run();
|
117 | case 4:
|
118 | case "end":
|
119 | return _context2.stop();
|
120 | }
|
121 | }, _callee2, this);
|
122 | }));
|
123 | function _run() {
|
124 | return _run2.apply(this, arguments);
|
125 | }
|
126 | return _run;
|
127 | }()
|
128 | }, {
|
129 | key: "init",
|
130 | value: function () {
|
131 | var _init = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee3() {
|
132 | var apm;
|
133 | return _regenerator["default"].wrap(function _callee3$(_context3) {
|
134 | while (1) switch (_context3.prev = _context3.next) {
|
135 | case 0:
|
136 | _context3.next = 2;
|
137 | return (0, _get2["default"])((0, _getPrototypeOf2["default"])(WorkerJob.prototype), "init", this).call(this);
|
138 | case 2:
|
139 | if (this.worker) this.stats = this.worker.stats;
|
140 | this.startedAt = new Date();
|
141 | if (!this.app.hasModule('apm')) {
|
142 | _context3.next = 8;
|
143 | break;
|
144 | }
|
145 | _context3.next = 7;
|
146 | return this.app.module('apm', {
|
147 | "throw": false
|
148 | });
|
149 | case 7:
|
150 | apm = _context3.sent;
|
151 | case 8:
|
152 | if (!apm) apm = apmMock;
|
153 | this.tx = apm.startTransaction(this.name, 'job');
|
154 | case 10:
|
155 | case "end":
|
156 | return _context3.stop();
|
157 | }
|
158 | }, _callee3, this);
|
159 | }));
|
160 | function init() {
|
161 | return _init.apply(this, arguments);
|
162 | }
|
163 | return init;
|
164 | }()
|
165 | }, {
|
166 | key: "getQueueMeta",
|
167 | value: function getQueueMeta() {
|
168 | return {
|
169 | __meta: _objectSpread({
|
170 | __name: this.name,
|
171 | __date: Date.now()
|
172 | }, this.params)
|
173 | };
|
174 | }
|
175 | }, {
|
176 | key: "isTooMuchRedelivered",
|
177 | value: function isTooMuchRedelivered() {
|
178 | if (!this.msg) return false;
|
179 | if (!this.redeliveredCount) return false;
|
180 | return this.msg.fields.redelivered && this.msg.fields.deliveryTag > this.redeliveredCount;
|
181 | }
|
182 | }, {
|
183 | key: "success",
|
184 | value: function success(res) {
|
185 | return this.result(res);
|
186 | }
|
187 | }, {
|
188 | key: "error",
|
189 | value: function error(res) {
|
190 | return this.result(res);
|
191 | }
|
192 | }, {
|
193 | key: "result",
|
194 | value: function result(res) {
|
195 | this.data = res;
|
196 | return res;
|
197 | }
|
198 | }, {
|
199 | key: "onSuccess",
|
200 | value: function () {
|
201 | var _onSuccess = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee4() {
|
202 | return _regenerator["default"].wrap(function _callee4$(_context4) {
|
203 | while (1) switch (_context4.prev = _context4.next) {
|
204 | case 0:
|
205 | this.finishedAt = new Date();
|
206 | if (this.stats) this.stats.trigger({
|
207 | event: 'success',
|
208 | startedAt: this.startedAt
|
209 | });
|
210 | if (!this.tx) {
|
211 | _context4.next = 6;
|
212 | break;
|
213 | }
|
214 | this.tx.result = 'success';
|
215 | _context4.next = 6;
|
216 | return this.tx.end();
|
217 | case 6:
|
218 | case "end":
|
219 | return _context4.stop();
|
220 | }
|
221 | }, _callee4, this);
|
222 | }));
|
223 | function onSuccess() {
|
224 | return _onSuccess.apply(this, arguments);
|
225 | }
|
226 | return onSuccess;
|
227 | }()
|
228 | }, {
|
229 | key: "onAckError",
|
230 | value: function () {
|
231 | var _onAckError = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee5(err) {
|
232 | return _regenerator["default"].wrap(function _callee5$(_context5) {
|
233 | while (1) switch (_context5.prev = _context5.next) {
|
234 | case 0:
|
235 | this.err = err;
|
236 | this.finishedAt = new Date();
|
237 | if (this.stats) this.stats.trigger({
|
238 | event: 'skip',
|
239 | startedAt: this.startedAt
|
240 | });
|
241 | if (!this.tx) {
|
242 | _context5.next = 7;
|
243 | break;
|
244 | }
|
245 | this.tx.result = 'skip';
|
246 | _context5.next = 7;
|
247 | return this.tx.end();
|
248 | case 7:
|
249 | case "end":
|
250 | return _context5.stop();
|
251 | }
|
252 | }, _callee5, this);
|
253 | }));
|
254 | function onAckError(_x) {
|
255 | return _onAckError.apply(this, arguments);
|
256 | }
|
257 | return onAckError;
|
258 | }()
|
259 | }, {
|
260 | key: "onError",
|
261 | value: function () {
|
262 | var _onError = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee6(err) {
|
263 | return _regenerator["default"].wrap(function _callee6$(_context6) {
|
264 | while (1) switch (_context6.prev = _context6.next) {
|
265 | case 0:
|
266 | this.err = err;
|
267 | this.finishedAt = new Date();
|
268 | if (this.stats) this.stats.trigger({
|
269 | event: 'error',
|
270 | startedAt: this.startedAt
|
271 | });
|
272 | if (!this.tx) {
|
273 | _context6.next = 7;
|
274 | break;
|
275 | }
|
276 |
|
277 | this.tx.result = 'error';
|
278 | _context6.next = 7;
|
279 | return this.tx.end();
|
280 | case 7:
|
281 | case "end":
|
282 | return _context6.stop();
|
283 | }
|
284 | }, _callee6, this);
|
285 | }));
|
286 | function onError(_x2) {
|
287 | return _onError.apply(this, arguments);
|
288 | }
|
289 | return onError;
|
290 | }()
|
291 | }, {
|
292 | key: "setStatus",
|
293 | value: function setStatus(status) {
|
294 | this.status = status;
|
295 | return status;
|
296 | }
|
297 |
|
298 | |
299 |
|
300 |
|
301 | }, {
|
302 | key: "ackSuccess",
|
303 | value: function () {
|
304 | var _ackSuccess = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee7() {
|
305 | return _regenerator["default"].wrap(function _callee7$(_context7) {
|
306 | while (1) switch (_context7.prev = _context7.next) {
|
307 | case 0:
|
308 | if (!this.status) {
|
309 | _context7.next = 3;
|
310 | break;
|
311 | }
|
312 | this.log.warn('ackSuccess ignore because has status');
|
313 | return _context7.abrupt("return", this.status);
|
314 | case 3:
|
315 | _context7.next = 5;
|
316 | return this.onSuccess();
|
317 | case 5:
|
318 | if (this.debug) this.log.trace('[ack]');
|
319 | if (!this.msg) {
|
320 | _context7.next = 9;
|
321 | break;
|
322 | }
|
323 | _context7.next = 9;
|
324 | return this.client.ack(this.msg);
|
325 | case 9:
|
326 | return _context7.abrupt("return", this.setStatus({
|
327 | status: 'success',
|
328 | action: 'ack'
|
329 | }));
|
330 | case 10:
|
331 | case "end":
|
332 | return _context7.stop();
|
333 | }
|
334 | }, _callee7, this);
|
335 | }));
|
336 | function ackSuccess() {
|
337 | return _ackSuccess.apply(this, arguments);
|
338 | }
|
339 | return ackSuccess;
|
340 | }()
|
341 | |
342 |
|
343 |
|
344 | }, {
|
345 | key: "nackError",
|
346 | value: function () {
|
347 | var _nackError = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee8(err) {
|
348 | return _regenerator["default"].wrap(function _callee8$(_context8) {
|
349 | while (1) switch (_context8.prev = _context8.next) {
|
350 | case 0:
|
351 | if (!this.status) {
|
352 | _context8.next = 3;
|
353 | break;
|
354 | }
|
355 | this.log.warn('nackError ignore because has status');
|
356 | return _context8.abrupt("return", this.status);
|
357 | case 3:
|
358 | _context8.next = 5;
|
359 | return this.onError(err);
|
360 | case 5:
|
361 |
|
362 | if (this.debug) this.log.error("[nack] ".concat(_err["default"].getCode(err)));
|
363 |
|
364 | if (!this.msg) {
|
365 | _context8.next = 9;
|
366 | break;
|
367 | }
|
368 | _context8.next = 9;
|
369 | return this.client.nack(this.msg, {
|
370 | requeue: true
|
371 | });
|
372 | case 9:
|
373 | return _context8.abrupt("return", this.setStatus({
|
374 | status: 'error',
|
375 | action: 'nack'
|
376 | }));
|
377 | case 10:
|
378 | case "end":
|
379 | return _context8.stop();
|
380 | }
|
381 | }, _callee8, this);
|
382 | }));
|
383 | function nackError(_x3) {
|
384 | return _nackError.apply(this, arguments);
|
385 | }
|
386 | return nackError;
|
387 | }()
|
388 | |
389 |
|
390 |
|
391 | }, {
|
392 | key: "ackError",
|
393 | value: function () {
|
394 | var _ackError = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee9(err) {
|
395 | return _regenerator["default"].wrap(function _callee9$(_context9) {
|
396 | while (1) switch (_context9.prev = _context9.next) {
|
397 | case 0:
|
398 | if (!this.status) {
|
399 | _context9.next = 3;
|
400 | break;
|
401 | }
|
402 | this.log.warn('ackError ignore because has status');
|
403 | return _context9.abrupt("return", this.status);
|
404 | case 3:
|
405 | _context9.next = 5;
|
406 | return this.onAckError(err);
|
407 | case 5:
|
408 | if (this.debug) this.log.trace("[ackError] ".concat(_err["default"].getCode(err)));
|
409 | if (!this.msg) {
|
410 | _context9.next = 9;
|
411 | break;
|
412 | }
|
413 | _context9.next = 9;
|
414 | return this.client.nack(this.msg, {
|
415 | requeue: false
|
416 | });
|
417 | case 9:
|
418 | return _context9.abrupt("return", this.setStatus({
|
419 | status: 'error',
|
420 | action: 'nack',
|
421 | requeue: false
|
422 | }));
|
423 | case 10:
|
424 | case "end":
|
425 | return _context9.stop();
|
426 | }
|
427 | }, _callee9, this);
|
428 | }));
|
429 | function ackError(_x4) {
|
430 | return _ackError.apply(this, arguments);
|
431 | }
|
432 | return ackError;
|
433 | }()
|
434 | |
435 |
|
436 |
|
437 |
|
438 |
|
439 | }, {
|
440 | key: "nackSuccess",
|
441 | value: function () {
|
442 | var _nackSuccess = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee10() {
|
443 | return _regenerator["default"].wrap(function _callee10$(_context10) {
|
444 | while (1) switch (_context10.prev = _context10.next) {
|
445 | case 0:
|
446 | throw new _err["default"]('ХЗ КОМУ ЭТА ХРЕНЬ НУЖНА, ПИНГАНИТЕ МЕНЯ');
|
447 | case 1:
|
448 | case "end":
|
449 | return _context10.stop();
|
450 | }
|
451 | }, _callee10);
|
452 | }));
|
453 | function nackSuccess() {
|
454 | return _nackSuccess.apply(this, arguments);
|
455 | }
|
456 | return nackSuccess;
|
457 | }()
|
458 | }]);
|
459 | return WorkerJob;
|
460 | }(_module["default"]);
|
461 | exports.WorkerJob = WorkerJob;
|
462 | WorkerJob.__worker = true;
|
463 | var _default = WorkerJob;
|
464 | exports["default"] = _default;
|
465 |
|
\ | No newline at end of file |